Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 79 additions & 18 deletions code/datums/diseases/xeno_transformation.dm
Original file line number Diff line number Diff line change
@@ -1,26 +1,73 @@
//Xenomicrobes

/datum/disease/xeno_transformation
name = "Unknown Mutagenic Disease"
name = "|D-ID Field Error|"
max_stages = 5
spread = "Syringe"
spread = "SCANNER UNIT FAILURE"
spread_type = SPECIAL
cure = "Unknown"
cure = "Please contact the nearest Weyland-Yutani Specialist Technician."
cure_chance = 5
stage_prob = 100 //Guaranteed stage advance per check, but minimum age keeps it a consistent length.
agent = "Rip-LEY Mutagenic Microbes"
affected_species = list("Human")
hidden = list(1, 0)
stage_minimum_age = 100
stage_minimum_age = 120
var/hivenumber_alienize = XENO_HIVE_NORMAL
var/alienize_list = XENO_T1_CASTES //define first then check for PCI during disease infection
var/level = 0
var/xenospeaker = FALSE
var/start = FALSE

/datum/disease/xeno_transformation/stage_act()
..()

for(var/datum/reagent/ciphering_reagent as anything in affected_mob.reagents.reagent_list)
var/datum/chem_property/property_CIP = ciphering_reagent.get_property(PROPERTY_CIPHERING) //Checks for CIP changes to hivenumber

if(property_CIP)
level = property_CIP.level //check level on CIP for hivenumber_alienize
var/hivenumber = GLOB.hive_datum[level]
hivenumber_alienize = hivenumber

for(var/datum/reagent/ciphering_reagent_predator as anything in affected_mob.reagents.reagent_list)
var/datum/chem_property/property_CIP_PRED = ciphering_reagent_predator.get_property(PROPERTY_CIPHERING_PREDATOR) //checks for predalien hivenumber

if(property_CIP_PRED)
level = property_CIP_PRED.level //check level on PCI for hivenumber_alienize
var/hivenumber = GLOB.hive_datum[level]
hivenumber_alienize = hivenumber
alienize_list = list(XENO_CASTE_PREDALIEN)
Comment on lines +34 to +38
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fishslap

Fine...



switch(stage)
if(1)
if (start == FALSE)
to_chat(affected_mob, "Something has begun within you.") //Feedback for XT
start = TRUE
if(2)
if (prob(3))
if (prob(1))
to_chat(affected_mob, "Your throat feels scratchy.")
if (prob(1))
to_chat(affected_mob, "Your heart pumps a little faster.")
if (prob(1))
to_chat(affected_mob, "Something catches in your throat.")
if(3)
if (xenospeaker == FALSE)
xenospeaker = TRUE
affected_mob.apply_effect(3, DAZE)
to_chat(affected_mob, SPAN_XENOHIGHDANGER("Something in your mind tears- and your thoughts don't sound the way they did before."))
affected_mob.universal_understand = 1 //universal understanding for roleplay's sake.
affected_mob.set_languages(list(LANGUAGE_XENOMORPH)) //You're gonna be one of them soon, anyway.
give_action(affected_mob, /datum/action/human_action/activable/cult/speak_hivemind) //Lets the victim speak in their hivemind, but not spectate xenos. Fun for roleplay.

if(SSticker.mode && affected_mob.mind)
SSticker.mode.xenomorphs += affected_mob.mind

var/datum/hive_status/hive = GLOB.hive_datum[hivenumber_alienize]
if (hive)
affected_mob.faction = hive.internal_faction
affected_mob.hivenumber = hivenumber_alienize
if (prob(5))
to_chat(affected_mob, SPAN_DANGER("Your throat feels very scratchy."))
to_chat(affected_mob, SPAN_DANGER("There's- something in your throat..."))
affected_mob.take_limb_damage(1)
if (prob(8))
to_chat(affected_mob, SPAN_DANGER("Your skin feels tight."))
Expand All @@ -34,20 +81,34 @@
to_chat(affected_mob, "\italic " + pick("Soon we will be one...", "Must... evolve...", "Capture...", "We are perfect."))
if(4)
if (prob(10))
to_chat(affected_mob, pick(SPAN_DANGER("Your skin feels very tight."), SPAN_DANGER("Your blood boils!")))
to_chat(affected_mob, pick(SPAN_XENODANGER("Your skin feels very tight."), SPAN_DANGER("Your blood boils!")))
affected_mob.take_limb_damage(3)
if (prob(5))
affected_mob.whisper(pick("Soon we will be one...", "Must... evolve...", "Capture...", "We are perfect.", "Hsssshhhhh!"))
affected_mob.whisper(pick("Soon we will be one...", "Must... evolve...", "Capture...", "You are perfect."))
if (prob(8))
to_chat(affected_mob, SPAN_DANGER("You can feel... something...inside you."))
to_chat(affected_mob, SPAN_XENODANGER("You can feel... something... inside you."))
if(5)
to_chat(affected_mob, SPAN_DANGER("Your skin feels impossibly calloused..."))
affected_mob.apply_damage(10, TOX)
affected_mob.updatehealth()
if(prob(40))
var/turf/T = find_loc(affected_mob)
gibs(T)
var/mob/living/carbon/human/H = affected_mob
H.Alienize(XENO_T1_CASTES)
if (!isxeno(affected_mob) && !HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) //prevents transformed xeno from suffering stage 5 checks continually(?)
affected_mob.pain.apply_pain(PAIN_CHESTBURST_WEAK)
affected_mob.visible_message(SPAN_DANGER("[affected_mob] starts shaking uncontrollably!"),
SPAN_XENOHIGHDANGER("There's- a screaming coming from inside us- a voice so loud our insides rush at the ends of our skin to make space for its light- it won't be long now..."))
affected_mob.apply_effect(3, PARALYZE)
affected_mob.make_jittery(105)
affected_mob.take_limb_damage(1)
if (prob(5))
affected_mob.whisper(pick("So close...", "Evolve- EVOLVE- NOW!", "Capture... them... all...", "Just... a little... more...", "Hsssshhhhh!", "It's all so clear, now."))
if (prob(10))
to_chat(affected_mob, SPAN_DANGER("Your skin feels impossibly calloused..."))
affected_mob.pain.apply_pain(PAIN_CHESTBURST_WEAK)
var/message = pick("There's an emptiness inside of you.", "The organelles in your chest grieve for what you aren't.", "Your heart starts beating rapidly, and each beat is painful.")
message = SPAN_XENOBOLDNOTICE("[message].")
to_chat(affected_mob, message)
affected_mob.apply_damage(10, TOX)
if (prob(1))
affected_mob.updatehealth()
var/turf/hxenoturf = find_loc(affected_mob)
gibs(hxenoturf)
var/mob/living/carbon/human/humanmob = affected_mob
humanmob.Alienize(alienize_list, hivenumber_alienize)
src.cure()

10 changes: 8 additions & 2 deletions code/modules/mob/transform_procs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@
return O

//human -> alien
/mob/living/carbon/human/proc/Alienize(list/types)
//checks for ciphering level to change hivenumber
/mob/living/carbon/human/proc/Alienize(list/types, hivenumber_alienize)
if (monkeyizing)
return
for(var/obj/item/W in src)
Expand Down Expand Up @@ -102,15 +103,20 @@
new_xeno = new /mob/living/carbon/xenomorph/queen(loc)
if(XENO_CASTE_HELLHOUND)
new_xeno = new /mob/living/carbon/xenomorph/hellhound(loc)
if(XENO_CASTE_PREDALIEN)
new_xeno = new /mob/living/carbon/xenomorph/predalien(loc)
else
new_xeno = new /mob/living/carbon/xenomorph/drone(loc)

new_xeno.a_intent = INTENT_HARM
new_xeno.key = key

new_xeno.set_hive_and_update(hivenumber_alienize)

if(new_xeno.client)
new_xeno.client.change_view(GLOB.world_view_size)

to_chat(new_xeno, "<B>You are now an alien.</B>")
to_chat(new_xeno, "<B>Our new form ripples with strength that confounds us. We are now... perfection.</B>")
qdel(src)
return

Expand Down
Loading
Loading