Files
Bubberstation/code/datums/diseases/transformation.dm
SkyratBot 84d003b4ab [MIRROR] more span macro changes in brain traumas and disease files [MDB IGNORE] (#19226)
* more span macro changes in brain traumas and disease files (#73273)

## About The Pull Request

i was fucking around with brain traumas on a downstream and noticed they
had similar issues to quirks so i decided to continue work from #73116

![Code_Klx14O288V](https://user-images.githubusercontent.com/116288367/217046732-765ffe27-73c9-416a-833e-e0d9e2aa7a86.png)
(search in VSC for span class = 'notice')
its going to be a bit of a thing to get all of these but this is a
decent chunk i think

there was only one annoying/tough file.
imaginary_friend.dm had class = 'game say' and class = 'emote' both of
which after some testing did not seem like they did anything. ill try to
keep that in mind in other files if i continue to do this but i either
omitted them because they didnt have any formatting or, in the case of
emote, turned it into name, which i think is what you'd want those
messages to look like.

there were also a few small spelling errors that i fixed

## Why It's Good For The Game

more consistent and stops people from copying brain trauma formatting
wrong

## Changelog

they should all work the same

---------

Co-authored-by: san7890 <the@ san7890.com>

* more span macro changes in brain traumas and disease files

---------

Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-02-08 02:16:41 +00:00

369 lines
13 KiB
Plaintext

/datum/disease/transformation
name = "Transformation"
max_stages = 5
spread_text = "Acute"
spread_flags = DISEASE_SPREAD_SPECIAL
cure_text = "A coder's love (theoretical)."
agent = "Shenanigans"
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/alien)
severity = DISEASE_SEVERITY_BIOHAZARD
stage_prob = 5
visibility_flags = HIDDEN_SCANNER|HIDDEN_PANDEMIC
disease_flags = CURABLE
var/list/stage1 = list("You feel unremarkable.")
var/list/stage2 = list("You feel boring.")
var/list/stage3 = list("You feel utterly plain.")
var/list/stage4 = list("You feel white bread.")
var/list/stage5 = list("Oh the humanity!")
var/new_form = /mob/living/carbon/human
var/bantype
var/transformed_antag_datum //Do we add a specific antag datum once the transformation is complete?
/datum/disease/transformation/Copy()
var/datum/disease/transformation/D = ..()
D.stage1 = stage1.Copy()
D.stage2 = stage2.Copy()
D.stage3 = stage3.Copy()
D.stage4 = stage4.Copy()
D.stage5 = stage5.Copy()
D.new_form = D.new_form
return D
/datum/disease/transformation/stage_act(delta_time, times_fired)
. = ..()
if(!.)
return
switch(stage)
if(1)
if (length(stage1) && DT_PROB(stage_prob, delta_time))
to_chat(affected_mob, pick(stage1))
if(2)
if (length(stage2) && DT_PROB(stage_prob, delta_time))
to_chat(affected_mob, pick(stage2))
if(3)
if (length(stage3) && DT_PROB(stage_prob * 2, delta_time))
to_chat(affected_mob, pick(stage3))
if(4)
if (length(stage4) && DT_PROB(stage_prob * 2, delta_time))
to_chat(affected_mob, pick(stage4))
if(5)
do_disease_transformation(affected_mob)
/datum/disease/transformation/proc/do_disease_transformation(mob/living/affected_mob)
if(iscarbon(affected_mob) && affected_mob.stat != DEAD)
if(length(stage5))
to_chat(affected_mob, pick(stage5))
if(QDELETED(affected_mob))
return
if(affected_mob.notransform)
return
affected_mob.notransform = 1
for(var/obj/item/W in affected_mob.get_equipped_items(TRUE))
affected_mob.dropItemToGround(W)
for(var/obj/item/I in affected_mob.held_items)
affected_mob.dropItemToGround(I)
var/mob/living/new_mob = new new_form(affected_mob.loc)
if(istype(new_mob))
if(bantype && is_banned_from(affected_mob.ckey, bantype))
replace_banned_player(new_mob)
new_mob.set_combat_mode(TRUE)
if(affected_mob.mind)
affected_mob.mind.transfer_to(new_mob)
else
new_mob.key = affected_mob.key
if(transformed_antag_datum)
new_mob.mind.add_antag_datum(transformed_antag_datum)
new_mob.name = affected_mob.real_name
new_mob.real_name = new_mob.name
qdel(affected_mob)
/datum/disease/transformation/proc/replace_banned_player(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 = poll_candidates_for_mob("Do you want to play as [affected_mob.real_name]?", bantype, bantype, 5 SECONDS, affected_mob)
if(LAZYLEN(candidates))
var/mob/dead/observer/C = pick(candidates)
to_chat(affected_mob, span_userdanger("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 jobbanned player.")
affected_mob.ghostize(FALSE)
affected_mob.key = C.key
else
to_chat(new_mob, span_userdanger("Your mob has been claimed by death! Appeal your job ban if you want to avoid this in the future!"))
new_mob.investigate_log("has been killed because there was no one to replace them as a job-banned player.", INVESTIGATE_DEATHS)
new_mob.death()
if (!QDELETED(new_mob))
new_mob.ghostize(can_reenter_corpse = FALSE)
new_mob.key = null
/datum/disease/transformation/jungle_flu
name = "Jungle Flu"
cure_text = "Death."
cures = list(/datum/reagent/medicine/adminordrazine)
spread_text = "Unknown"
spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS
viable_mobtypes = list(/mob/living/carbon/human)
spreading_modifier = 1
cure_chance = 0.5
disease_flags = CAN_CARRY|CAN_RESIST
desc = "A neutered but still dangerous descendent of the ancient \"Jungle Fever\", victims will eventually genetically backtrack into a primate. \
Luckily, once turned the new monkey will not gain the rabies-like rage of the fever."
severity = DISEASE_SEVERITY_BIOHAZARD
stage_prob = 2
visibility_flags = NONE
agent = "Kongey Vibrion M-909"
new_form = /mob/living/carbon/human/species/monkey
stage1 = list()
stage2 = list()
stage3 = list()
stage4 = list(
span_warning("You breathe through your mouth."),
span_warning("You have a craving for bananas."),
span_warning("Your back hurts."),
span_warning("Your mind feels clouded."),
)
stage5 = list(span_warning("You feel like monkeying around."))
/datum/disease/transformation/jungle_flu/do_disease_transformation(mob/living/carbon/affected_mob)
affected_mob.monkeyize()
/datum/disease/transformation/jungle_flu/stage_act(delta_time, times_fired)
. = ..()
if(!.)
return
switch(stage)
if(2)
if(DT_PROB(1, delta_time))
to_chat(affected_mob, span_notice("Your [pick("arm", "back", "elbow", "head", "leg")] itches."))
if(3)
if(DT_PROB(2, delta_time))
to_chat(affected_mob, span_danger("You feel a stabbing pain in your head."))
affected_mob.adjust_confusion(10 SECONDS)
if(4)
if(DT_PROB(1.5, delta_time))
affected_mob.say(pick("Eeee!", "Eeek, ook ook!", "Eee-eeek!", "Ungh, ungh."), forced = "jungle fever")
/datum/disease/transformation/robot
name = "Robotic Transformation"
cure_text = "An injection of copper."
cures = list(/datum/reagent/copper)
cure_chance = 2.5
agent = "R2D2 Nanomachines"
desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg."
severity = DISEASE_SEVERITY_BIOHAZARD
visibility_flags = NONE
stage1 = list()
stage2 = list(span_danger("Beep...boop.."), "Your joints feel stiff.")
stage3 = list(
span_danger("You can feel something move...inside."),
span_danger("Your joints feel very stiff."),
span_warning("Your skin feels loose."),
)
stage4 = list(span_danger("You can feel... something...inside you."), span_danger("Your skin feels very loose."),)
stage5 = list(span_danger("Your skin feels as if it's about to burst off!"))
new_form = /mob/living/silicon/robot
infectable_biotypes = MOB_ORGANIC|MOB_UNDEAD|MOB_ROBOTIC
bantype = JOB_CYBORG
/datum/disease/transformation/robot/stage_act(delta_time, times_fired)
. = ..()
if(!.)
return
switch(stage)
if(3)
if (DT_PROB(4, delta_time))
affected_mob.say(pick("beep, beep!", "Beep, boop", "Boop...bop"), forced = "robotic transformation")
if (DT_PROB(2, delta_time))
to_chat(affected_mob, span_danger("You feel a stabbing pain in your head."))
affected_mob.Unconscious(40)
if(4)
if (DT_PROB(10, delta_time))
affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "I wwwaaannntt tttoo dddiiieeee...", "kkkiiiill mmme"), forced = "robotic transformation")
/datum/disease/transformation/xeno
name = "Xenomorph Transformation"
cure_text = "Spaceacillin & Glycerol"
cures = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/glycerol)
cure_chance = 2.5
agent = "Rip-LEY Alien Microbes"
desc = "This disease changes the victim into a xenomorph."
severity = DISEASE_SEVERITY_BIOHAZARD
visibility_flags = NONE
stage1 = list()
stage2 = list("Your throat feels scratchy.", span_danger("Kill..."))
stage3 = list(
span_danger("You can feel something move...inside."),
span_danger("Your throat feels very scratchy."),
span_warning("Your skin feels tight."),
)
stage4 = list(
span_danger("You can feel... something...inside you."),
span_danger("Your blood boils!"),
span_danger("Your skin feels very tight."),
)
stage5 = list(span_danger("Your skin feels as if it's about to burst off!"))
new_form = /mob/living/carbon/alien/adult/hunter
bantype = ROLE_ALIEN
/datum/disease/transformation/xeno/stage_act(delta_time, times_fired)
. = ..()
if(!.)
return
switch(stage)
if(3)
if(DT_PROB(2, delta_time))
to_chat(affected_mob, span_danger("You feel a stabbing pain in your head."))
affected_mob.Unconscious(40)
if(4)
if(DT_PROB(10, delta_time))
affected_mob.say(pick("Going to... devour you...", "Hsssshhhhh!", "You look delicious."), forced = "xenomorph transformation")
/datum/disease/transformation/slime
name = "Advanced Mutation Transformation"
cure_text = "frost oil"
cures = list(/datum/reagent/consumable/frostoil)
cure_chance = 55
agent = "Advanced Mutation Toxin"
desc = "This highly concentrated extract converts anything into more of itself."
severity = DISEASE_SEVERITY_BIOHAZARD
visibility_flags = NONE
stage1 = list("You don't feel very well.")
stage2 = list("Your skin feels a little slimy.")
stage3 = list(span_danger("Your appendages are melting away."), span_danger("Your limbs begin to lose their shape."))
stage4 = list(span_danger("You are turning into a slime."))
stage5 = list(span_danger("You have become a slime."))
new_form = /mob/living/simple_animal/slime
/datum/disease/transformation/slime/stage_act(delta_time, times_fired)
. = ..()
if(!.)
return
switch(stage)
if(1)
if(ishuman(affected_mob))
var/mob/living/carbon/human/human = affected_mob
if(isjellyperson(human))
stage = 5
if(3)
if(ishuman(affected_mob))
var/mob/living/carbon/human/human = affected_mob
if(!ismonkey(human) && !isjellyperson(human))
human.set_species(/datum/species/jelly/slime)
/datum/disease/transformation/slime/do_disease_transformation(mob/living/affected_mob)
if(affected_mob.client && ishuman(affected_mob)) // if they are a human who's not a monkey and are sentient, then let them have the old fun
var/mob/living/carbon/human/human = affected_mob
if(!ismonkey(human))
new_form = /mob/living/simple_animal/slime/random
return ..()
/datum/disease/transformation/corgi
name = "The Barkening"
cure_text = "Death"
cures = list(/datum/reagent/medicine/adminordrazine)
agent = "Fell Doge Majicks"
desc = "This disease transforms the victim into a corgi."
severity = DISEASE_SEVERITY_BIOHAZARD
visibility_flags = NONE
stage1 = list("BARK.")
stage2 = list("You feel the need to wear silly hats.")
stage3 = list(span_danger("Must... eat... chocolate...."), span_danger("YAP"))
stage4 = list(span_danger("Visions of washing machines assail your mind!"))
stage5 = list(span_danger("AUUUUUU!!!"))
new_form = /mob/living/basic/pet/dog/corgi
/datum/disease/transformation/corgi/stage_act(delta_time, times_fired)
. = ..()
if(!.)
return
switch(stage)
if(3)
if (DT_PROB(4, delta_time))
affected_mob.say(pick("Woof!", "YAP"), forced = "corgi transformation")
if(4)
if (DT_PROB(10, delta_time))
affected_mob.say(pick("AUUUUUU", "Bark!"), forced = "corgi transformation")
/datum/disease/transformation/morph
name = "Gluttony's Blessing"
cure_text = "Nothing"
cures = list(/datum/reagent/consumable/nothing)
agent = "Gluttony's Blessing"
desc = "A 'gift' from somewhere terrible."
stage_prob = 10
severity = DISEASE_SEVERITY_BIOHAZARD
visibility_flags = NONE
stage1 = list("Your stomach rumbles.")
stage2 = list("Your skin feels saggy.")
stage3 = list(span_danger("Your appendages are melting away."), span_danger("Your limbs begin to lose their shape."))
stage4 = list(span_danger("You're ravenous."))
stage5 = list(span_danger("You have become a morph."))
new_form = /mob/living/simple_animal/hostile/morph
infectable_biotypes = MOB_ORGANIC|MOB_MINERAL|MOB_UNDEAD //magic!
transformed_antag_datum = /datum/antagonist/morph
/datum/disease/transformation/gondola
name = "Gondola Transformation"
cure_text = "Condensed Capsaicin, ingested or injected." //getting pepper sprayed doesn't help
cures = list(/datum/reagent/consumable/condensedcapsaicin) //beats the hippie crap right out of your system
cure_chance = 55
stage_prob = 2.5
agent = "Tranquility"
desc = "Consuming the flesh of a Gondola comes at a terrible price."
severity = DISEASE_SEVERITY_BIOHAZARD
visibility_flags = NONE
stage1 = list("You seem a little lighter in your step.")
stage2 = list("You catch yourself smiling for no reason.")
stage3 = list(
span_danger("A cruel sense of calm overcomes you."),
span_danger("You can't feel your arms!"),
span_danger("You let go of the urge to hurt clowns."),
)
stage4 = list(span_danger("You can't feel your arms. It does not bother you anymore."), span_danger("You forgive the clown for hurting you."))
stage5 = list(span_danger("You have become a Gondola."))
new_form = /mob/living/simple_animal/pet/gondola
/datum/disease/transformation/gondola/stage_act(delta_time, times_fired)
. = ..()
if(!.)
return
switch(stage)
if(2)
if(DT_PROB(2.5, delta_time))
affected_mob.emote("smile")
if(DT_PROB(10, delta_time))
affected_mob.reagents.add_reagent_list(list(/datum/reagent/pax = 5))
if(3)
if(DT_PROB(2.5, delta_time))
affected_mob.emote("smile")
if(DT_PROB(10, delta_time))
affected_mob.reagents.add_reagent_list(list(/datum/reagent/pax = 5))
if(4)
if(DT_PROB(2.5, delta_time))
affected_mob.emote("smile")
if(DT_PROB(10, delta_time))
affected_mob.reagents.add_reagent_list(list(/datum/reagent/pax = 5))
if(DT_PROB(1, delta_time))
var/obj/item/held_item = affected_mob.get_active_held_item()
if(held_item)
to_chat(affected_mob, span_danger("You let go of what you were holding."))
affected_mob.dropItemToGround(held_item)