Merge pull request #6379 from Heroman3003/resleeving_sickness

Adds resleeving sickness
This commit is contained in:
Novacat
2020-01-09 22:50:42 -05:00
committed by GitHub
12 changed files with 549 additions and 558 deletions

2
code/datums/mind_vr.dm Normal file
View File

@@ -0,0 +1,2 @@
/datum/mind
var/vore_death = FALSE // Was our last gasp a gurgle?

View File

@@ -79,6 +79,14 @@
desc = "Miniature medical robots that swiftly restore bodily damage."
starts_with = list(/obj/item/weapon/reagent_containers/pill/healing_nanites = 7)
/obj/item/weapon/storage/pill_bottle/sleevingcure
name = "pill bottle (Kitsuhanan Cure)"
desc = "A rare cure provided by KHI that helps counteract negative side effects of using imperfect resleeving machinery."
starts_with = list(/obj/item/weapon/reagent_containers/pill/sleevingcure = 7)
/obj/item/weapon/storage/pill_bottle/sleevingcure/full
starts_with = list(/obj/item/weapon/reagent_containers/pill/sleevingcure = 14)
/obj/item/weapon/storage/firstaid/insiderepair
name = "combat organ kit"
desc = "Contains advanced organ medical treatments."
@@ -95,3 +103,15 @@
/obj/item/weapon/storage/pill_bottle/arithrazine,
/obj/item/device/healthanalyzer/advanced
)
/obj/item/weapon/storage/mrebag/pill
name = "vacuum-sealed pill"
desc = "A small vacuum-sealed package containing a singular pill. For emergencies only."
icon_state = "pouch_small"
max_w_class = ITEMSIZE_TINY
can_hold = list(/obj/item/weapon/reagent_containers/pill)
/obj/item/weapon/storage/mrebag/pill/sleevingcure
name = "vacuum-sealed pill (Kitsuhanan Cure)"
desc = "A small vacuum-sealed package containing a singular pill. For emergencies only."
starts_with = list(/obj/item/weapon/reagent_containers/pill/sleevingcure)

View File

@@ -3,8 +3,9 @@
id = "adranol"
description = "A mild sedative that calms the nerves and relaxes the patient."
taste_description = "milk"
reagent_state = SOLID
reagent_state = LIQUID
color = "#d5e2e5"
scannable = 1
/datum/reagent/adranol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
@@ -65,7 +66,7 @@
description = "A potent chemical that treats physical damage at an exceptional rate."
taste_description = "sparkles"
taste_mult = 3
reagent_state = SOLID
reagent_state = LIQUID
color = "#964e06"
overdose = REAGENTS_OVERDOSE * 0.5
scannable = 1
@@ -76,3 +77,18 @@
chem_effective = 0.75
if(alien != IS_DIONA)
M.heal_organ_damage(8 * removed * chem_effective, 0)
/datum/reagent/sleevingcure
name = "Kitsuhanan Cure"
id = "sleevingcure"
description = "A rare cure provided by KHI that helps counteract negative side effects of using imperfect resleeving machinery."
taste_description = "chocolate peanut butter"
taste_mult = 2
reagent_state = LIQUID
color = "#b4dcdc"
overdose = 5
scannable = 0
/datum/reagent/sleevingcure/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.remove_a_modifier_of_type(/datum/modifier/resleeving_sickness)
M.remove_a_modifier_of_type(/datum/modifier/faux_resleeving_sickness)

View File

@@ -124,3 +124,13 @@
..()
reagents.add_reagent("healing_nanites", 30)
color = reagents.get_color()
/obj/item/weapon/reagent_containers/pill/sleevingcure
name = "Kitsuhanan Cure pill"
desc = "A rare cure provided by KHI that helps counteract negative side effects of using imperfect resleeving machinery."
icon_state = "pill3"
/obj/item/weapon/reagent_containers/pill/sleevingcure/Initialize()
..()
reagents.add_reagent("sleevingcure", 1)
color = reagents.get_color()

View File

@@ -85,16 +85,10 @@
H.add_modifier(modifier_type)
//Apply damage
H.adjustCloneLoss((H.getMaxHealth() - config.health_threshold_dead)*-0.75)
H.adjustCloneLoss(H.getMaxHealth()*1.5)
H.Paralyse(4)
H.updatehealth()
//Grower specific mutations
if(heal_level < 60)
randmutb(H)
H.dna.UpdateSE()
H.dna.UpdateUI()
//Update appearance, remake icons
H.UpdateAppearance()
H.sync_organ_dna()
@@ -134,10 +128,10 @@
connected_message("Clone Rejected: Deceased.")
return
else if(occupant.health < heal_level && occupant.getCloneLoss() > 0)
else if(occupant.getCloneLoss() > 0)
//Slowly get that clone healed and finished.
occupant.adjustCloneLoss(-2 * heal_rate)
occupant.adjustCloneLoss(-3 * heal_rate)
//Premature clones may have brain damage.
occupant.adjustBrainLoss(-(CEILING((0.5*heal_rate), 1)))
@@ -152,7 +146,7 @@
use_power(7500) //This might need tweaking.
return
else if(((occupant.health >= heal_level) || (occupant.health == occupant.maxHealth)) && (!eject_wait))
else if(((occupant.health == occupant.maxHealth)) && (!eject_wait))
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
audible_message("\The [src] signals that the growing process is complete.")
connected_message("Growing Process Complete.")
@@ -409,6 +403,7 @@
anchored = 1
var/blur_amount
var/confuse_amount
var/sickness_duration
var/mob/living/carbon/human/occupant = null
var/connected = null
@@ -438,6 +433,9 @@
manip_rating += M.rating
blur_amount = (48 - manip_rating * 8)
var/total_rating = manip_rating + scan_rating
sickness_duration = (45 - (total_rating-4)*1.875) MINUTES // 45 minutes default, 30 minutes with max non-anomaly upgrades, 15 minutes with max anomaly ones
/obj/machinery/transhuman/resleever/attack_hand(mob/user as mob)
user.set_machine(src)
var/health_text = ""
@@ -584,8 +582,13 @@
else
occupant << "<span class='warning'>You feel a small pain in your head as you're given a new backup implant. Oh, and a new body. It's disorienting, to say the least.</span>"
occupant.confused = max(occupant.confused, confuse_amount)
occupant.confused = max(occupant.confused, confuse_amount) // Apply immedeate effects
occupant.eye_blurry = max(occupant.eye_blurry, blur_amount)
if(!(occupant.mind.vore_death))
occupant.add_modifier(/datum/modifier/faux_resleeving_sickness, sickness_duration/3) // And more longterm, though purely visual ones
else
occupant.add_modifier(/datum/modifier/resleeving_sickness, sickness_duration) // Much more serious if it wasn't a death by vore though
occupant.mind.vore_death = FALSE // Reset our death type. Just in case
if(occupant.mind && occupant.original_player && ckey(occupant.mind.key) != occupant.original_player)
log_and_message_admins("is now a cross-sleeved character. Body originally belonged to [occupant.real_name]. Mind is now [occupant.mind.name].",occupant)

View File

@@ -0,0 +1,24 @@
/datum/modifier/resleeving_sickness
name = "resleeving sickness"
desc = "You feel rather weak and unfocused, having been sleeved not so long ago."
stacks = MODIFIER_STACK_EXTEND
on_created_text = "<span class='warning'><font size='3'>You feel weak and unfocused.</font></span>"
on_expired_text = "<span class='notice'><font size='3'>You feel your strength and focus return to you.</font></span>"
incoming_brute_damage_percent = 1.1 // 10% more brute damage
incoming_fire_damage_percent = 1.1 // 10% more burn damage
incoming_hal_damage_percent = 1.5 // 50% more incoming agony.
outgoing_melee_damage_percent = 0.5 // 50% less melee damage.
disable_duration_percent = 2 // 100% longer stuns.
evasion = -40 // 40% easier to hit.
accuracy = -50 // 50% less accurate.
accuracy_dispersion = 20 // 20% less precise.
/datum/modifier/faux_resleeving_sickness
name = "resleeving sickness"
desc = "You feel somewhat weak and unfocused, having been sleeved not so long ago."
stacks = MODIFIER_STACK_EXTEND
on_created_text = "<span class='warning'>You feel slightly weak and unfocused.</span>"
on_expired_text = "<span class='notice'>You feel your strength and focus return to you.</span>"

View File

@@ -393,6 +393,8 @@
//M.death(1) // "Stop it he's already dead..." Basically redundant and the reason behind screaming mouse carcasses.
if(M.ckey)
message_admins("[key_name(owner)] has digested [key_name(M)] in their [lowertext(name)] ([owner ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[owner.x];Y=[owner.y];Z=[owner.z]'>JMP</a>" : "null"])")
if(M.mind)
M.mind.vore_death = TRUE
// If digested prey is also a pred... anyone inside their bellies gets moved up.
if(is_vore_predator(M))