diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index cc27e5a1257..a475a7f711f 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -11,14 +11,18 @@ var/antigen = 0 // 16 bits describing the antigens, when one bit is set, a cure with that bit can dock here var/max_stage = 4 +/datum/disease2/disease/New() + uniqueID = rand(0,10000) + ..() + /datum/disease2/disease/proc/makerandom(var/greater=0) for(var/i=1 ; i <= max_stage ; i++ ) var/datum/disease2/effectholder/holder = new /datum/disease2/effectholder holder.stage = i if(greater) - holder.getrandomeffect_greater() + holder.getrandomeffect(2) else - holder.getrandomeffect_lesser() + holder.getrandomeffect() effects += holder uniqueID = rand(0,10000) infectionchance = rand(1,10) @@ -76,6 +80,7 @@ disease.spreadtype = spreadtype disease.stageprob = stageprob disease.antigen = antigen + disease.uniqueID = uniqueID for(var/datum/disease2/effectholder/holder in effects) var/datum/disease2/effectholder/newholder = new /datum/disease2/effectholder newholder.effect = new holder.effect.type diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index 4b8c103426d..3aa5a361c69 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -13,19 +13,12 @@ if(happensonce == 1) happensonce = -1 -/datum/disease2/effectholder/proc/getrandomeffect_greater() +/datum/disease2/effectholder/proc/getrandomeffect(var/badness = 1) var/list/datum/disease2/effect/list = list() - for(var/e in (typesof(/datum/disease2/effect/greater) - /datum/disease2/effect/greater)) - var/datum/disease2/effect/f = new e - if(f.stage == src.stage) - list += f - effect = pick(list) - chance = rand(1,6) - -/datum/disease2/effectholder/proc/getrandomeffect_lesser() - var/list/datum/disease2/effect/list = list() - for(var/e in (typesof(/datum/disease2/effect/lesser) - /datum/disease2/effect/lesser)) + for(var/e in (typesof(/datum/disease2/effect) - /datum/disease2/effect)) var/datum/disease2/effect/f = new e + if (f.badness > badness) //we don't want such strong effects + continue if(f.stage == src.stage) list += f effect = pick(list) @@ -39,16 +32,22 @@ multiplier = rand(1,effect.maxm) /datum/disease2/effectholder/proc/majormutate() - getrandomeffect_greater() + getrandomeffect(2) + +//////////////////////////////////////////////////////////////// +////////////////////////EFFECTS///////////////////////////////// +//////////////////////////////////////////////////////////////// /datum/disease2/effect - var/chance_maxm = 100 + var/chance_maxm = 50 var/name = "Blanking effect" var/stage = 4 var/maxm = 1 + var/badness = 1 proc/activate(var/mob/living/carbon/mob,var/multiplier) proc/deactivate(var/mob/living/carbon/mob) +////////////////////////SPECIAL///////////////////////////////// /datum/disease2/effect/alien name = "Unidentified Foreign Body" stage = 4 @@ -65,113 +64,47 @@ mob:gib() del D -/datum/disease2/effect/greater/gibbingtons - name = "Gibbingtons Syndrome" - stage = 4 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.gib() - -/datum/disease2/effect/greater/radian - name = "Radian's syndrome" - stage = 4 - maxm = 3 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.radiation += (2*multiplier) -u -/datum/disease2/effect/greater/toxins - name = "Hyperacid Syndrome" - stage = 3 - maxm = 3 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.adjustToxLoss((2*multiplier)) - -/datum/disease2/effect/greater/scream - name = "Random screaming syndrome" - stage = 2 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.say("*scream") - -/datum/disease2/effect/greater/drowsness - name = "Automated sleeping syndrome" - stage = 2 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.drowsyness += 10 - -/datum/disease2/effect/greater/shakey - name = "World Shaking syndrome" - stage = 3 - maxm = 3 - activate(var/mob/living/carbon/mob,var/multiplier) - shake_camera(mob,5*multiplier) - -/datum/disease2/effect/greater/deaf - name = "Hard of hearing syndrome" - stage = 4 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.ear_deaf += 20 - /datum/disease2/effect/invisible name = "Waiting Syndrome" stage = 1 activate(var/mob/living/carbon/mob,var/multiplier) return -/datum/disease2/effect/greater/telepathic - name = "Telepathy Syndrome" - stage = 3 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.mutations |= 512 +////////////////////////STAGE 4///////////////////////////////// -/datum/disease2/effect/greater/monkey +/datum/disease2/effect/gibbingtons + name = "Gibbingtons Syndrome" + stage = 4 + badness = 2 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.gib() + +/datum/disease2/effect/radian + name = "Radian's syndrome" + stage = 4 + maxm = 3 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.radiation += (2*multiplier) + +/datum/disease2/effect/deaf + name = "Hard of hearing syndrome" + stage = 4 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.ear_deaf += 20 + +/datum/disease2/effect/monkey name = "Monkism syndrome" stage = 4 + badness = 2 activate(var/mob/living/carbon/mob,var/multiplier) if(istype(mob,/mob/living/carbon/human)) var/mob/living/carbon/human/h = mob h.monkeyize() -/datum/disease2/effect/greater/sneeze - name = "Coldingtons Effect" - stage = 1 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.say("*sneeze") - if (prob(50)) - var/obj/effect/decal/cleanable/mucus/M = new(get_turf(mob)) - M.virus2 = mob.virus2.Copy() - -/datum/disease2/effect/greater/gunck - name = "Flemmingtons" - stage = 1 - activate(var/mob/living/carbon/mob,var/multiplier) - mob << "\red Mucous runs down the back of your throat." - -/datum/disease2/effect/greater/killertoxins - name = "Toxification syndrome" - stage = 4 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.adjustToxLoss(15) - -/datum/disease2/effect/greater/hallucinations - name = "Hallucinational Syndrome" - stage = 3 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.hallucination += 25 - -/datum/disease2/effect/greater/sleepy - name = "Resting syndrome" - stage = 2 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.say("*collapse") - -/datum/disease2/effect/greater/mind - name = "Lazy mind syndrome" - stage = 3 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.setBrainLoss(50) - -/datum/disease2/effect/greater/suicide +/datum/disease2/effect/suicide name = "Suicidal syndrome" stage = 4 + badness = 2 activate(var/mob/living/carbon/mob,var/multiplier) mob.suiciding = 1 //instead of killing them instantly, just put them at -175 health and let 'em gasp for a while @@ -181,92 +114,138 @@ u spawn(200) //in case they get revived by cryo chamber or something stupid like that, let them suicide again in 20 seconds mob.suiciding = 0 -// lesser syndromes, partly just copypastes +/datum/disease2/effect/killertoxins + name = "Toxification syndrome" + stage = 4 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.adjustToxLoss(15*multiplier) -/datum/disease2/effect/lesser - chance_maxm = 10 +////////////////////////STAGE 3///////////////////////////////// -/datum/disease2/effect/lesser/mind +/datum/disease2/effect/toxins + name = "Hyperacid Syndrome" + stage = 3 + maxm = 3 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.adjustToxLoss((2*multiplier)) + +/datum/disease2/effect/shakey + name = "World Shaking syndrome" + stage = 3 + maxm = 3 + activate(var/mob/living/carbon/mob,var/multiplier) + shake_camera(mob,5*multiplier) + +/datum/disease2/effect/telepathic + name = "Telepathy Syndrome" + stage = 3 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.mutations |= 512 + +/datum/disease2/effect/mind name = "Lazy mind syndrome" stage = 3 activate(var/mob/living/carbon/mob,var/multiplier) - mob.setBrainLoss(20) + if(istype(mob, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = mob + var/datum/organ/internal/brain/B = H.internal_organs["brain"] + B.take_damage(5) + else + mob.setBrainLoss(50) -/datum/disease2/effect/lesser/drowsy - name = "Bedroom Syndrome" - stage = 2 +/datum/disease2/effect/hallucinations + name = "Hallucinational Syndrome" + stage = 3 activate(var/mob/living/carbon/mob,var/multiplier) - mob.drowsyness = 5 + mob.hallucination += 25 -/datum/disease2/effect/lesser/deaf +/datum/disease2/effect/deaf name = "Hard of hearing syndrome" stage = 3 activate(var/mob/living/carbon/mob,var/multiplier) mob.ear_deaf = 5 -/datum/disease2/effect/lesser/gunck - name = "Flemmingtons" - stage = 1 +/datum/disease2/effect/giggle + name = "Uncontrolled Laughter Effect" + stage = 3 activate(var/mob/living/carbon/mob,var/multiplier) - mob << "\red Mucous runs down the back of your throat." + mob.say("*giggle") -/datum/disease2/effect/lesser/radian - name = "Radian's syndrome" - stage = 4 - maxm = 3 +/datum/disease2/effect/groan + name = "Groaning Syndrome" + stage = 3 activate(var/mob/living/carbon/mob,var/multiplier) - mob.radiation += 1 + mob.say("*groan") +////////////////////////STAGE 2///////////////////////////////// -/datum/disease2/effect/lesser/sneeze - name = "Coldingtons Effect" - stage = 1 +/datum/disease2/effect/scream + name = "Random screaming syndrome" + stage = 2 activate(var/mob/living/carbon/mob,var/multiplier) - mob.say("*sneeze") + mob.say("*scream") -/datum/disease2/effect/lesser/cough +/datum/disease2/effect/drowsness + name = "Automated sleeping syndrome" + stage = 2 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.drowsyness += 10 + +/datum/disease2/effect/drowsy + name = "Bedroom Syndrome" + stage = 2 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.drowsyness = 5 + +/datum/disease2/effect/sleepy + name = "Resting syndrome" + stage = 2 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.say("*collapse") + +/datum/disease2/effect/cough name = "Anima Syndrome" stage = 2 activate(var/mob/living/carbon/mob,var/multiplier) mob.say("*cough") -/datum/disease2/effect/lesser/hungry +/datum/disease2/effect/hungry name = "Appetiser Effect" stage = 2 activate(var/mob/living/carbon/mob,var/multiplier) mob.nutrition = max(0, mob.nutrition - 200) -/datum/disease2/effect/lesser/groan - name = "Groaning Syndrome" - stage = 3 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.say("*groan") - -/datum/disease2/effect/lesser/scream - name = "Loudness Syndrome" - stage = 4 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.say("*scream") - -/datum/disease2/effect/lesser/drool - name = "Saliva Effect" - stage = 1 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.say("*drool") - -/datum/disease2/effect/lesser/fridge +/datum/disease2/effect/fridge name = "Refridgerator Syndrome" stage = 2 activate(var/mob/living/carbon/mob,var/multiplier) mob.say("*shiver") -/datum/disease2/effect/lesser/twitch +////////////////////////STAGE 1///////////////////////////////// + +/datum/disease2/effect/sneeze + name = "Coldingtons Effect" + stage = 1 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.say("*sneeze") + if (prob(50)) + var/obj/effect/decal/cleanable/mucus/M = new(get_turf(mob)) + M.virus2 = mob.virus2.Copy() + +/datum/disease2/effect/gunck + name = "Flemmingtons" + stage = 1 + activate(var/mob/living/carbon/mob,var/multiplier) + mob << "\red Mucous runs down the back of your throat." + +/datum/disease2/effect/drool + name = "Saliva Effect" + stage = 1 + activate(var/mob/living/carbon/mob,var/multiplier) + mob.say("*drool") + +/datum/disease2/effect/twitch name = "Twitcher" stage = 1 activate(var/mob/living/carbon/mob,var/multiplier) mob.say("*twitch") -/datum/disease2/effect/lesser/giggle - name = "Uncontrolled Laughter Effect" - stage = 3 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.say("*giggle")