Files
CHOMPStation2/code/modules/mob/_modifiers/cloning.dm
Mechoid 437aad2d77 Adds a Frankenstein Surgical Procedure (#4990)
* Makes a Surgery for Frankensteining

* Fix a thing.

* Tweak things!

* Sickness not permanent, Recovery is.
2018-03-05 19:46:05 -06:00

127 lines
5.3 KiB
Plaintext

/*
* Modifier applied to newly cloned people.
*/
// Gives rather nasty downsides for awhile, making them less robust.
/datum/modifier/cloning_sickness
name = "cloning sickness"
desc = "You feel rather weak, having been cloned not so long ago."
on_created_text = "<span class='warning'><font size='3'>You feel really weak.</font></span>"
on_expired_text = "<span class='notice'><font size='3'>You feel your strength returning to you.</font></span>"
max_health_percent = 0.6 // -40% max health.
incoming_damage_percent = 1.1 // 10% more incoming damage.
outgoing_melee_damage_percent = 0.7 // 30% less melee damage.
disable_duration_percent = 1.25 // Stuns last 25% longer.
slowdown = 1 // Slower.
evasion = -15 // 15% easier to hit.
// Tracks number of deaths, one modifier added per cloning
/datum/modifier/cloned
name = "cloned"
desc = "You died and were cloned, and you can never forget that."
flags = MODIFIER_GENETIC // So it gets copied if they die and get cloned again.
stacks = MODIFIER_STACK_ALLOWED // Two deaths means two instances of this.
// Prevents cloning, actual effect is on the cloning machine
/datum/modifier/no_clone
name = "Cloning Incompatability"
desc = "For whatever reason, you cannot be cloned."
//WIP, but these may never be seen anyway, so *shrug
on_created_text = "<span class='warning'>Life suddenly feels more precious.</span>"
on_expired_text = "<span class='notice'>Death is cheap again.</span>"
flags = MODIFIER_GENETIC
// Prevents borging (specifically the MMI part), actual effect is on the MMI.
/datum/modifier/no_borg
name = "Cybernetic Incompatability"
desc = "For whatever reason, your brain is incompatable with direct cybernetic interfaces, such as the MMI."
flags = MODIFIER_GENETIC
//////////////////////////////////////
//Species-Specific Cloning Modifiers//
/////////////////////////////////////
/datum/modifier/cloning_sickness/promethean
name = "reformation sickness"
desc = "Your core feels damaged, as you were reformed with the improper machinery."
on_created_text = "<span class='warning'><font size='3'>Your core aches.</font></span>"
on_expired_text = "<span class='notice'><font size='3'>You feel your core's strength returning to normal.</font></span>"
incoming_damage_percent = 1 //Level the incoming damage from the parent modifier. They already take 200% burn.
incoming_brute_damage_percent = 1.5 //150% incoming brute damage. Decreases the effectiveness of their 0.75 modifier.
incoming_hal_damage_percent = 1.25 //125% incoming halloss.
outgoing_melee_damage_percent = 0.5 //50% less outgoing melee damage.
attack_speed_percent = 1.2 //20% slower attack speed.
//////////////////////
//Surgical Modifiers// As of writing, limited to the 'Frankenstein' modifier.
//////////////////////
/datum/modifier/franken_sickness
name = "surgically attached brain"
desc = "You feel weak, as your central nervous system is still recovering from being repaired."
on_created_text = "<span class='warning'><font size='3'>You feel... off, and your head hurts.</font></span>"
on_expired_text = "<span class='notice'><font size='3'>You feel some strength returning to you.</font></span>"
max_health_percent = 0.9 // -10% max health.
incoming_damage_percent = 1.1 // 10% more incoming damage.
incoming_hal_damage_percent = 1.5 // 50% more halloss damage, stacking on the previous 1.1 widespread.
outgoing_melee_damage_percent = 0.9 // 10% less melee damage.
disable_duration_percent = 1.25 // Stuns last 25% longer.
incoming_healing_percent = 0.9 // -10% to all healing
slowdown = 0.5 // Slower, by a smidge.
evasion = -5 // 5% easier to hit.
accuracy_dispersion = 1 // Inaccurate trait level of tile dispersion.
stacks = MODIFIER_STACK_ALLOWED //You have somehow had the surgery done twice. Your brain is very, very fucked, but I won't say no.
/datum/modifier/franken_sickness/can_apply(var/mob/living/L)
if(!ishuman(L))
return FALSE
if(L.isSynthetic()) //Nonhumans and Machines cannot be Frankensteined, at this time.
return FALSE
return ..()
/datum/modifier/franken_sickness/tick()
if(holder.stat != DEAD)
if(istype(holder, /mob/living/carbon/human))
var/mob/living/carbon/human/F = holder
if(F.can_defib)
F.can_defib = 0
/datum/modifier/franken_sickness/on_expire() //Not permanent, but its child is.
holder.add_modifier(/datum/modifier/franken_recovery, 0)
/datum/modifier/franken_recovery //When Franken_Sickness expires, this will be permanently applied in its place.
name = "neural recovery"
desc = "You feel out of touch, as your central nervous system is still recovering from being repaired."
on_created_text = "<span class='warning'><font size='3'>You feel... off. Everything is fuzzy.</font></span>"
on_expired_text = "<span class='notice'><font size='3'>You feel your senses returning to you.</font></span>"
incoming_hal_damage_percent = 1.5 // 50% more halloss damage.
disable_duration_percent = 1.25 // Stuns last 25% longer.
evasion = -5 // 5% easier to hit.
accuracy_dispersion = 1 // Inaccurate trait level of tile dispersion.
stacks = MODIFIER_STACK_ALLOWED
/datum/modifier/franken_recovery/can_apply(var/mob/living/L)
if(!ishuman(L))
return FALSE
if(L.isSynthetic()) //Nonhumans and Machines cannot be Frankensteined, at this time.
return FALSE
return ..()