|
|
|
@@ -16,6 +16,7 @@
|
|
|
|
|
var/list/stage4 = list("You feel white bread.")
|
|
|
|
|
var/list/stage5 = list("Oh the humanity!")
|
|
|
|
|
var/new_form = /mob/living/carbon/human
|
|
|
|
|
var/bantype
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/Copy()
|
|
|
|
|
var/datum/disease/transformation/D = ..()
|
|
|
|
@@ -49,10 +50,6 @@
|
|
|
|
|
if(istype(affected_mob, /mob/living/carbon) && affected_mob.stat != DEAD)
|
|
|
|
|
if(stage5)
|
|
|
|
|
to_chat(affected_mob, pick(stage5))
|
|
|
|
|
if(jobban_isbanned(affected_mob, new_form))
|
|
|
|
|
if(!QDELETED(affected_mob))
|
|
|
|
|
affected_mob.death(1)
|
|
|
|
|
return
|
|
|
|
|
if(QDELETED(affected_mob))
|
|
|
|
|
return
|
|
|
|
|
if(affected_mob.notransform)
|
|
|
|
@@ -64,6 +61,8 @@
|
|
|
|
|
affected_mob.dropItemToGround(I)
|
|
|
|
|
var/mob/living/new_mob = new new_form(affected_mob.loc)
|
|
|
|
|
if(istype(new_mob))
|
|
|
|
|
if(bantype && jobban_isbanned(affected_mob, bantype))
|
|
|
|
|
replace_banned_player(new_mob)
|
|
|
|
|
new_mob.a_intent = INTENT_HARM
|
|
|
|
|
if(affected_mob.mind)
|
|
|
|
|
affected_mob.mind.transfer_to(new_mob)
|
|
|
|
@@ -74,7 +73,22 @@
|
|
|
|
|
new_mob.real_name = new_mob.name
|
|
|
|
|
qdel(affected_mob)
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/proc/replace_banned_player(var/mob/living/new_mob) // This can run well after the mob has been transferred, so need a handle on the new mob to kill it if needed.
|
|
|
|
|
set waitfor = FALSE
|
|
|
|
|
|
|
|
|
|
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [affected_mob.name]?", bantype, null, bantype, 50, affected_mob)
|
|
|
|
|
if(LAZYLEN(candidates))
|
|
|
|
|
var/mob/dead/observer/C = pick(candidates)
|
|
|
|
|
to_chat(affected_mob, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!")
|
|
|
|
|
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(affected_mob)]) to replace a jobbaned player.")
|
|
|
|
|
affected_mob.ghostize(0)
|
|
|
|
|
affected_mob.key = C.key
|
|
|
|
|
else
|
|
|
|
|
to_chat(new_mob, "Your mob has been claimed by death! Appeal your job ban if you want to avoid this in the future!")
|
|
|
|
|
new_mob.death()
|
|
|
|
|
if (!QDELETED(new_mob))
|
|
|
|
|
new_mob.ghostize(can_reenter_corpse = FALSE)
|
|
|
|
|
new_mob.key = null
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/jungle_fever
|
|
|
|
|
name = "Jungle Fever"
|
|
|
|
@@ -92,6 +106,8 @@
|
|
|
|
|
visibility_flags = 0
|
|
|
|
|
agent = "Kongey Vibrion M-909"
|
|
|
|
|
new_form = /mob/living/carbon/monkey
|
|
|
|
|
bantype = ROLE_MONKEY
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
stage1 = list()
|
|
|
|
|
stage2 = list()
|
|
|
|
@@ -120,7 +136,7 @@
|
|
|
|
|
affected_mob.confused += 10
|
|
|
|
|
if(4)
|
|
|
|
|
if(prob(3))
|
|
|
|
|
affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh."))
|
|
|
|
|
affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh."), forced = "jungle fever")
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/jungle_fever/cure()
|
|
|
|
|
remove_monkey(affected_mob.mind)
|
|
|
|
@@ -153,19 +169,20 @@
|
|
|
|
|
stage5 = list("<span class='danger'>Your skin feels as if it's about to burst off!</span>")
|
|
|
|
|
new_form = /mob/living/silicon/robot
|
|
|
|
|
infectable_biotypes = list(MOB_ORGANIC, MOB_UNDEAD, MOB_ROBOTIC)
|
|
|
|
|
bantype = "Cyborg"
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/robot/stage_act()
|
|
|
|
|
..()
|
|
|
|
|
switch(stage)
|
|
|
|
|
if(3)
|
|
|
|
|
if (prob(8))
|
|
|
|
|
affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop"))
|
|
|
|
|
affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop"), forced = "robotic transformation")
|
|
|
|
|
if (prob(4))
|
|
|
|
|
to_chat(affected_mob, "<span class='danger'>You feel a stabbing pain in your head.</span>")
|
|
|
|
|
affected_mob.Unconscious(40)
|
|
|
|
|
if(4)
|
|
|
|
|
if (prob(20))
|
|
|
|
|
affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "kkkiiiill mmme", "I wwwaaannntt tttoo dddiiieeee..."))
|
|
|
|
|
affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "kkkiiiill mmme", "I wwwaaannntt tttoo dddiiieeee..."), forced = "robotic transformation")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/xeno
|
|
|
|
@@ -184,6 +201,7 @@
|
|
|
|
|
stage4 = list("<span class='danger'>Your skin feels very tight.</span>", "<span class='danger'>Your blood boils!</span>", "<span class='danger'>You can feel... something...inside you.</span>")
|
|
|
|
|
stage5 = list("<span class='danger'>Your skin feels as if it's about to burst off!</span>")
|
|
|
|
|
new_form = /mob/living/carbon/alien/humanoid/hunter
|
|
|
|
|
bantype = ROLE_ALIEN
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/xeno/stage_act()
|
|
|
|
|
..()
|
|
|
|
@@ -194,7 +212,7 @@
|
|
|
|
|
affected_mob.Unconscious(40)
|
|
|
|
|
if(4)
|
|
|
|
|
if (prob(20))
|
|
|
|
|
affected_mob.say(pick("You look delicious.", "Going to... devour you...", "Hsssshhhhh!"))
|
|
|
|
|
affected_mob.say(pick("You look delicious.", "Going to... devour you...", "Hsssshhhhh!"), forced = "xenomorph transformation")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/slime
|
|
|
|
@@ -246,10 +264,10 @@
|
|
|
|
|
switch(stage)
|
|
|
|
|
if(3)
|
|
|
|
|
if (prob(8))
|
|
|
|
|
affected_mob.say(pick("YAP", "Woof!"))
|
|
|
|
|
affected_mob.say(pick("YAP", "Woof!"), forced = "corgi transformation")
|
|
|
|
|
if(4)
|
|
|
|
|
if (prob(20))
|
|
|
|
|
affected_mob.say(pick("Bark!", "AUUUUUU"))
|
|
|
|
|
affected_mob.say(pick("Bark!", "AUUUUUU"), forced = "corgi transformation")
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/morph
|
|
|
|
|
name = "Gluttony's Blessing"
|
|
|
|
@@ -267,3 +285,43 @@
|
|
|
|
|
stage5 = list("<span class='danger'>You have become a morph.</span>")
|
|
|
|
|
new_form = /mob/living/simple_animal/hostile/morph
|
|
|
|
|
infectable_biotypes = list(MOB_ORGANIC, MOB_INORGANIC, MOB_UNDEAD) //magic!
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/gondola
|
|
|
|
|
name = "Gondola Transformation"
|
|
|
|
|
cure_text = "Condensed Capsaicin, ingested or injected." //getting pepper sprayed doesn't help
|
|
|
|
|
cures = list("condensedcapsaicin") //beats the hippie crap right out of your system
|
|
|
|
|
cure_chance = 80
|
|
|
|
|
stage_prob = 5
|
|
|
|
|
agent = "Tranquility"
|
|
|
|
|
desc = "Consuming the flesh of a Gondola comes at a terrible price."
|
|
|
|
|
severity = DISEASE_SEVERITY_BIOHAZARD
|
|
|
|
|
visibility_flags = 0
|
|
|
|
|
stage1 = list("You seem a little lighter in your step.")
|
|
|
|
|
stage2 = list("You catch yourself smiling for no reason.")
|
|
|
|
|
stage3 = list("<span class='danger'>A cruel sense of calm overcomes you.</span>", "<span class='danger'>You can't feel your arms!</span>", "<span class='danger'>You let go of the urge to hurt clowns.</span>")
|
|
|
|
|
stage4 = list("<span class='danger'>You can't feel your arms. It does not bother you anymore.</span>", "<span class='danger'>You forgive the clown for hurting you.</span>")
|
|
|
|
|
stage5 = list("<span class='danger'>You have become a Gondola.</span>")
|
|
|
|
|
new_form = /mob/living/simple_animal/pet/gondola
|
|
|
|
|
|
|
|
|
|
/datum/disease/transformation/gondola/stage_act()
|
|
|
|
|
..()
|
|
|
|
|
switch(stage)
|
|
|
|
|
if(2)
|
|
|
|
|
if (prob(5))
|
|
|
|
|
affected_mob.emote("smile")
|
|
|
|
|
if (prob(20))
|
|
|
|
|
affected_mob.reagents.add_reagent_list(list("pax" = 5))
|
|
|
|
|
if(3)
|
|
|
|
|
if (prob(5))
|
|
|
|
|
affected_mob.emote("smile")
|
|
|
|
|
if (prob(20))
|
|
|
|
|
affected_mob.reagents.add_reagent_list(list("pax" = 5))
|
|
|
|
|
if(4)
|
|
|
|
|
if (prob(5))
|
|
|
|
|
affected_mob.emote("smile")
|
|
|
|
|
if (prob(20))
|
|
|
|
|
affected_mob.reagents.add_reagent_list(list("pax" = 5))
|
|
|
|
|
if (prob(2))
|
|
|
|
|
to_chat(affected_mob, "<span class='danger'>You let go of what you were holding.</span>")
|
|
|
|
|
var/obj/item/I = affected_mob.get_active_held_item()
|
|
|
|
|
affected_mob.dropItemToGround(I)
|
|
|
|
|