mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 16:18:01 +01:00
Merge pull request #8746 from ACCount12/diseasesfixes
Fixes for DNA spread and transformation diseases
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
DD.holder = src
|
||||
if(DD.disease_flags & CAN_CARRY && prob(5))
|
||||
DD.carrier = 1
|
||||
DD.strain_data = D.strain_data.Copy()
|
||||
DD.affected_mob.med_hud_set_status()
|
||||
|
||||
|
||||
|
||||
@@ -179,7 +179,9 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
|
||||
|
||||
|
||||
/datum/disease/proc/Copy()
|
||||
return new type()
|
||||
var/datum/disease/D = new type()
|
||||
D.strain_data = strain_data.Copy()
|
||||
return D
|
||||
|
||||
|
||||
/datum/disease/proc/GetDiseaseID()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
disease_flags = CAN_CARRY|CAN_RESIST
|
||||
agent = "S4E1 retrovirus"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
var/list/original_dna = list()
|
||||
var/datum/dna/original_dna = null
|
||||
var/transformed = 0
|
||||
desc = "This disease transplants the genetic code of the intial vector into new hosts."
|
||||
severity = MEDIUM
|
||||
@@ -16,6 +16,17 @@
|
||||
|
||||
/datum/disease/dnaspread/stage_act()
|
||||
..()
|
||||
if(!affected_mob.dna)
|
||||
cure()
|
||||
|
||||
if(!strain_data["dna"])
|
||||
//Absorbs the target DNA.
|
||||
strain_data["dna"] = new affected_mob.dna.type
|
||||
affected_mob.dna.copy_dna(strain_data["dna"])
|
||||
src.carrier = 1
|
||||
src.stage = 4
|
||||
return
|
||||
|
||||
switch(stage)
|
||||
if(2 || 3) //Pretend to be a cold and give time to spread.
|
||||
if(prob(8))
|
||||
@@ -32,21 +43,18 @@
|
||||
affected_mob.adjustToxLoss(2)
|
||||
affected_mob.updatehealth()
|
||||
if(4)
|
||||
if(!src.transformed)
|
||||
if ((!strain_data["name"]) || (!strain_data["UI"]) || (!strain_data["SE"]))
|
||||
del(affected_mob.virus)
|
||||
return
|
||||
|
||||
if(!src.transformed && !src.carrier)
|
||||
//Save original dna for when the disease is cured.
|
||||
src.original_dna["name"] = affected_mob.real_name
|
||||
src.original_dna["UI"] = affected_mob.dna.uni_identity
|
||||
src.original_dna["SE"] = affected_mob.dna.struc_enzymes
|
||||
original_dna = new affected_mob.dna.type
|
||||
affected_mob.dna.copy_dna(original_dna)
|
||||
|
||||
affected_mob << "<span class='danger'>You don't feel like yourself..</span>"
|
||||
affected_mob.dna.uni_identity = strain_data["UI"]
|
||||
var/datum/dna/transform_dna = strain_data["dna"]
|
||||
|
||||
transform_dna.transfer_identity(affected_mob)
|
||||
affected_mob.real_name = affected_mob.dna.real_name
|
||||
|
||||
updateappearance(affected_mob)
|
||||
affected_mob.dna.struc_enzymes = strain_data["SE"]
|
||||
affected_mob.real_name = strain_data["name"]
|
||||
domutcheck(affected_mob)
|
||||
|
||||
src.transformed = 1
|
||||
@@ -55,12 +63,12 @@
|
||||
return
|
||||
|
||||
/datum/disease/dnaspread/Del()
|
||||
if ((original_dna["name"]) && (original_dna["UI"]) && (original_dna["SE"]))
|
||||
if(affected_mob)
|
||||
affected_mob.dna.uni_identity = original_dna["UI"]
|
||||
updateappearance(affected_mob)
|
||||
affected_mob.dna.struc_enzymes = original_dna["SE"]
|
||||
affected_mob.real_name = original_dna["name"]
|
||||
if (original_dna && transformed && affected_mob)
|
||||
original_dna.transfer_identity(affected_mob)
|
||||
affected_mob.real_name = affected_mob.dna.real_name
|
||||
|
||||
affected_mob << "<span class='notice'>You feel more like yourself.</span>"
|
||||
updateappearance(affected_mob)
|
||||
domutcheck(affected_mob)
|
||||
|
||||
affected_mob << "<span class='notice'>You feel more like yourself.</span>"
|
||||
..()
|
||||
@@ -9,6 +9,7 @@
|
||||
severity = HARMFUL
|
||||
stage_prob = 10
|
||||
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.")
|
||||
@@ -202,7 +203,7 @@
|
||||
var/mob/living/carbon/human/human = affected_mob
|
||||
if(human.dna && human.dna.species.id != "slime")
|
||||
human.dna.species = new /datum/species/slime()
|
||||
human.update_icons()
|
||||
human.regenerate_icons()
|
||||
|
||||
/datum/disease/transformation/corgi
|
||||
name = "The Barkening"
|
||||
|
||||
@@ -36,9 +36,20 @@
|
||||
destination.dna.uni_identity = uni_identity
|
||||
destination.dna.blood_type = blood_type
|
||||
destination.dna.species = species
|
||||
destination.dna.mutant_color = mutant_color
|
||||
destination.dna.real_name = real_name
|
||||
destination.dna.mutations = mutations
|
||||
|
||||
/datum/dna/proc/copy_dna(var/datum/dna/new_dna)
|
||||
new_dna.unique_enzymes = unique_enzymes
|
||||
new_dna.struc_enzymes = struc_enzymes
|
||||
new_dna.uni_identity = uni_identity
|
||||
new_dna.blood_type = blood_type
|
||||
new_dna.species = new species.type
|
||||
new_dna.mutant_color = mutant_color
|
||||
new_dna.real_name = real_name
|
||||
new_dna.mutations = mutations
|
||||
|
||||
/datum/dna/proc/add_mutation(mutation_name)
|
||||
var/datum/mutation/human/HM = mutations_list[mutation_name]
|
||||
HM.on_acquiring(holder)
|
||||
|
||||
@@ -153,7 +153,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
*/
|
||||
|
||||
for(var/datum/disease/D in src.viruses)
|
||||
B.data["viruses"] += new D.type(0, D, 1)
|
||||
B.data["viruses"] += D.Copy()
|
||||
|
||||
B.data["blood_DNA"] = copytext(src.dna.unique_enzymes,1,0)
|
||||
if(src.resistances&&src.resistances.len)
|
||||
|
||||
Reference in New Issue
Block a user