mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-09 16:33:50 +00:00
* 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  (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>
369 lines
13 KiB
Plaintext
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)
|