mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Lots of bugs fixed for advance diseases.
Fixed advance diseases using the same reference in mobs. Fixed advance diseases referencing other advance diseases' symptoms, instead of just copying it. I tested it more thoroughly this time and I can't find any issues but if you do please add them to the bug tracker and or contact me on #coderbus. Added a new reaction which will remove symptoms from a disease. Needs blood and synaptizine. Added a new symptom, shivering will make you cold. Tweaked and balanced some symptoms. Removed the "flex" emote that hulks will do randomly. Reduced the change to speak for hulks and brain damaged mobs. ( 7% -> 3% chance) Please let me know if anything is out of place or wrong. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5048 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -304,9 +304,4 @@ proc/listclearnulls(list/list)
|
||||
if(bitfield & bit)
|
||||
r += bit
|
||||
|
||||
return r
|
||||
|
||||
/proc/safe_pick_list(var/list/L)
|
||||
if(L && L.len)
|
||||
return pick(L)
|
||||
return null
|
||||
return r
|
||||
@@ -30,6 +30,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
|
||||
var/cure_list = null // allows for multiple possible cure combinations
|
||||
var/cure_chance = 8//chance for the cure to do its job
|
||||
var/spread = null //spread type description
|
||||
var/initial_spread = null
|
||||
var/spread_type = AIRBORNE
|
||||
var/contagious_period = 0//the disease stage when it can be spread
|
||||
var/list/affected_species = list()
|
||||
@@ -58,7 +59,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
|
||||
//world << "[affected_mob] is carrier"
|
||||
return
|
||||
|
||||
spread = (cure_present?"Remissive":initial(spread))
|
||||
spread = (cure_present?"Remissive":initial_spread)
|
||||
|
||||
if(stage > max_stages)
|
||||
stage = max_stages
|
||||
@@ -94,7 +95,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
|
||||
return result
|
||||
|
||||
|
||||
/datum/disease/proc/spread(var/atom/source=null, var/airborne_range = 3, var/force_spread)
|
||||
/datum/disease/proc/spread(var/atom/source=null, var/airborne_range = 2, var/force_spread)
|
||||
//world << "Disease [src] proc spread was called from holder [source]"
|
||||
|
||||
// If we're overriding how we spread, say so here
|
||||
@@ -174,12 +175,16 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
|
||||
cure_list = list(cure_id) // to add more cures, add more vars to this list in the actual disease's New()
|
||||
if(process) // Viruses in list are considered active.
|
||||
active_diseases += src
|
||||
initial_spread = spread
|
||||
|
||||
/datum/disease/proc/IsSame(var/datum/disease/D)
|
||||
if(istype(src, D.type))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/disease/proc/Copy()
|
||||
return new type(0, src)
|
||||
|
||||
/*
|
||||
/datum/disease/Del()
|
||||
active_diseases.Remove(src)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
var/list/archive_diseases = list()
|
||||
|
||||
|
||||
/*
|
||||
|
||||
PROPERTIES
|
||||
@@ -54,7 +55,8 @@ var/list/archive_diseases = list()
|
||||
if(!D || !D.symptoms || !D.symptoms.len)
|
||||
symptoms = GenerateSymptoms()
|
||||
else
|
||||
symptoms = D.symptoms
|
||||
for(var/datum/symptom/S in D.symptoms)
|
||||
symptoms += new S.type
|
||||
name = D.name
|
||||
|
||||
Refresh(!copy)
|
||||
@@ -93,6 +95,9 @@ var/list/archive_diseases = list()
|
||||
del(src) //delete the datum to stop it processing
|
||||
return
|
||||
|
||||
// Returns the advance disease with a different reference memory.
|
||||
/datum/disease/advance/Copy()
|
||||
return new /datum/disease/advance(0, src, 1)
|
||||
|
||||
/*
|
||||
|
||||
@@ -178,7 +183,7 @@ var/list/archive_diseases = list()
|
||||
hidden = list( (properties["stealth"] > 2), (properties["stealth"] > 3) )
|
||||
// The more symptoms we have, the less transmittable it is but some symptoms can make up for it.
|
||||
SetSpread(max(BLOOD, min(properties["transmittable"] - symptoms.len, AIRBORNE)))
|
||||
permeability_mod = round(0.5 * properties["transmittable"])
|
||||
permeability_mod = max(round(0.5 * properties["transmittable"]), 1)
|
||||
stage_prob = max(properties["stage_rate"], 1)
|
||||
SetSeverity(properties["severity"])
|
||||
GenerateCure(properties)
|
||||
@@ -250,12 +255,18 @@ var/list/archive_diseases = list()
|
||||
cure_id = "ethylredoxrazine"
|
||||
|
||||
if(6)
|
||||
cure_id = "silver"
|
||||
cure_id = "synaptizine"
|
||||
|
||||
if(7)
|
||||
cure_id = "gold"
|
||||
cure_id = "silver"
|
||||
|
||||
if(8)
|
||||
cure_id = "gold"
|
||||
|
||||
if(9)
|
||||
cure_id = "mindbreaker"
|
||||
|
||||
else
|
||||
cure_id = "plasma"
|
||||
|
||||
// Get the cure name from the cure_id
|
||||
@@ -267,12 +278,21 @@ var/list/archive_diseases = list()
|
||||
|
||||
// Randomly generate a symptom, has a chance to lose or gain a symptom.
|
||||
/datum/disease/advance/proc/Evolve(var/level = 2)
|
||||
var/s = safe_pick_list(GenerateSymptoms(level, 1))
|
||||
var/s = safepick(GenerateSymptoms(level, 1))
|
||||
if(s)
|
||||
AddSymptom(s)
|
||||
Refresh()
|
||||
return
|
||||
|
||||
// Randomly remove a symptom.
|
||||
/datum/disease/advance/proc/Devolve()
|
||||
if(symptoms.len > 1)
|
||||
var/s = safepick(symptoms)
|
||||
if(s)
|
||||
RemoveSymptom(s)
|
||||
Refresh()
|
||||
return
|
||||
|
||||
// Name the disease.
|
||||
/datum/disease/advance/proc/AssignName(var/name = "Unknown")
|
||||
src.name = name
|
||||
@@ -293,7 +313,7 @@ var/list/archive_diseases = list()
|
||||
if(HasSymptom(S))
|
||||
return
|
||||
|
||||
if(symptoms.len < 4 + rand(-1, 1))
|
||||
if(symptoms.len < 3 + rand(-1, 1))
|
||||
symptoms += S
|
||||
else
|
||||
RemoveSymptom(pick(symptoms))
|
||||
@@ -314,9 +334,13 @@ var/list/archive_diseases = list()
|
||||
// Mix a list of advance diseases and return the mixed result.
|
||||
/proc/Advance_Mix(var/list/D_list)
|
||||
|
||||
//world << "Mixing!!!!"
|
||||
|
||||
var/list/diseases = list()
|
||||
for(var/datum/disease/advance/A in D_list)
|
||||
diseases += A
|
||||
|
||||
for(var/datum/disease/advance/A in D_list.Copy())
|
||||
diseases += A.Copy()
|
||||
|
||||
if(!diseases.len)
|
||||
return null
|
||||
if(diseases.len <= 1)
|
||||
@@ -330,15 +354,26 @@ var/list/archive_diseases = list()
|
||||
|
||||
var/datum/disease/advance/D1 = pick(diseases)
|
||||
diseases -= D1
|
||||
D_list -= D1
|
||||
|
||||
var/datum/disease/advance/D2 = pick(diseases)
|
||||
D2.Mix(D1)
|
||||
|
||||
// Should be only 1 entry left, but if not let's only return a single entry
|
||||
//world << "END MIXING!!!!!"
|
||||
var/datum/disease/advance/to_return = pick(diseases)
|
||||
to_return.Refresh()
|
||||
return to_return
|
||||
|
||||
/proc/SetViruses(var/datum/reagent/R, var/list/data)
|
||||
if(data)
|
||||
var/list/preserve = list()
|
||||
if(istype(data) && data["viruses"])
|
||||
for(var/datum/disease/A in data["viruses"])
|
||||
preserve += A.Copy()
|
||||
R.data = data.Copy()
|
||||
else
|
||||
R.data = data
|
||||
if(preserve.len)
|
||||
R.data["viruses"] = preserve
|
||||
|
||||
#undef RANDOM_STARTING_LEVEL
|
||||
@@ -30,7 +30,7 @@ BONUS
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(1, 2, 3)
|
||||
M << "<span notice='notice'>[pick("You swallow excess mucus.", "You lightly cough .")]</span>"
|
||||
M << "<span notice='notice'>[pick("You swallow excess mucus.", "You lightly cough.")]</span>"
|
||||
else
|
||||
M.emote("cough")
|
||||
M.drop_item()
|
||||
|
||||
@@ -29,6 +29,6 @@ Bonus
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB))
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
M << "<span class='notice'>[pick("You feel hot.", "You feel like you're burning.")]</span>"
|
||||
M.bodytemperature += 30 * A.stage
|
||||
M.bodytemperature += 20 * A.stage
|
||||
|
||||
return
|
||||
|
||||
34
code/datums/diseases/advance/symptoms/shivering.dm
Normal file
34
code/datums/diseases/advance/symptoms/shivering.dm
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
Shivering
|
||||
|
||||
No change to hidden.
|
||||
Increases resistance.
|
||||
Increases stage speed.
|
||||
Little transmittable.
|
||||
Low level.
|
||||
|
||||
Bonus
|
||||
Cools down your body.
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/shivering
|
||||
|
||||
name = "Shivering"
|
||||
stealth = 0
|
||||
resistance = 2
|
||||
stage_speed = 2
|
||||
transmittable = 1
|
||||
level = 2
|
||||
|
||||
/datum/symptom/shivering/Activate(var/datum/disease/advance/A)
|
||||
..()
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB))
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
M << "<span class='notice'>[pick("You feel cold.", "You start shaking from the cold.")]</span>"
|
||||
M.bodytemperature -= 20 * A.stage
|
||||
|
||||
return
|
||||
@@ -31,7 +31,7 @@ Bonus
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(1, 2, 3)
|
||||
M.visible_message("<B>[M]</B> sniffs.")
|
||||
M.emote("sniff")
|
||||
else
|
||||
M.emote("sneeze")
|
||||
A.spread(A.holder, 5, AIRBORNE)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
var/list/list_symptoms = typesof(/datum/symptom) - /datum/symptom
|
||||
var/list/dictionary_symptoms = list()
|
||||
|
||||
var/global/const/SYMPTOM_ACTIVATION_PROB = 1
|
||||
var/global/const/SYMPTOM_ACTIVATION_PROB = 3
|
||||
|
||||
/datum/symptom
|
||||
// Buffs/Debuffs the symptom has to the overall engineered disease.
|
||||
|
||||
@@ -91,5 +91,5 @@ Bonus
|
||||
M.adjustBruteLoss(3)
|
||||
|
||||
var/turf/pos = get_turf(M)
|
||||
pos.add_vomit_floor(M)
|
||||
pos.add_blood_floor(M)
|
||||
playsound(pos, 'sound/effects/splat.ogg', 50, 1)
|
||||
@@ -73,6 +73,7 @@ Bonus
|
||||
if(1, 2, 3, 4)
|
||||
M << "<span class='notice'>[pick("You feel hungry.", "You crave for food.")]</span>"
|
||||
else
|
||||
M << "<span class='notice'>Your stomach rumbles.</span>"
|
||||
M.overeatduration = max(M.overeatduration - 100, 0)
|
||||
M.nutrition = max(M.nutrition - 100, 0)
|
||||
|
||||
|
||||
@@ -499,7 +499,7 @@ its easier to just keep the beam vertical.
|
||||
|
||||
// Only adds blood on the floor -- Skie
|
||||
/atom/proc/add_blood_floor(mob/living/carbon/M as mob)
|
||||
if( istype(M, /mob/living/carbon/monkey) )
|
||||
if( istype(M, /mob/living/carbon/monkey) || istype(M, /mob/living/carbon/human))
|
||||
if( istype(src, /turf/simulated) )
|
||||
var/turf/simulated/source1 = src
|
||||
var/obj/effect/decal/cleanable/blood/this = new /obj/effect/decal/cleanable/blood(source1)
|
||||
@@ -522,11 +522,7 @@ its easier to just keep the beam vertical.
|
||||
else if( istype(M, /mob/living/silicon/robot ))
|
||||
if( istype(src, /turf/simulated) )
|
||||
var/turf/simulated/source2 = src
|
||||
var/obj/effect/decal/cleanable/oil/this = new /obj/effect/decal/cleanable/oil(source2)
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
var/datum/disease/newDisease = new D.type
|
||||
this.viruses += newDisease
|
||||
newDisease.holder = this
|
||||
new /obj/effect/decal/cleanable/oil(source2)
|
||||
|
||||
/atom/proc/clean_prints()
|
||||
if(istype(fingerprints, /list))
|
||||
|
||||
@@ -528,10 +528,10 @@ var/list/datum/dna/hivemind_bank = list()
|
||||
|
||||
/mob/proc/changeling_hivedownload()
|
||||
set category = "Changeling"
|
||||
set name = "Hive Absorb (40)"
|
||||
set name = "Hive Absorb (20)"
|
||||
set desc = "Allows you to absorb DNA that is being channeled in the airwaves."
|
||||
|
||||
var/datum/changeling/changeling = changeling_power(40,1)
|
||||
var/datum/changeling/changeling = changeling_power(20,1)
|
||||
if(!changeling) return
|
||||
|
||||
var/list/names = list()
|
||||
@@ -549,7 +549,7 @@ var/list/datum/dna/hivemind_bank = list()
|
||||
if(!chosen_dna)
|
||||
return
|
||||
|
||||
changeling.chem_charges -= 40
|
||||
changeling.chem_charges -= 20
|
||||
changeling.absorbed_dna += chosen_dna
|
||||
usr << "<span class='notice'>We absorb the DNA of [S] from the air.</span>"
|
||||
feedback_add_details("changeling_powers","HD")
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
if (i > 0)
|
||||
var/obj/effect/decal/cleanable/xenoblood/b = new /obj/effect/decal/cleanable/xenoblood/xsplatter(src.loc)
|
||||
for(var/datum/disease/D in src.viruses)
|
||||
b.viruses += D
|
||||
b.viruses += new D.type(0, D, 1)
|
||||
if (step_to(src, get_step(src, direction), 0))
|
||||
break
|
||||
|
||||
|
||||
@@ -69,6 +69,6 @@
|
||||
if (i > 0)
|
||||
var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
|
||||
for(var/datum/disease/D in src.viruses)
|
||||
b.viruses += D
|
||||
b.viruses += new D.type(0, D, 1)
|
||||
if (step_to(src, get_step(src, direction), 0))
|
||||
break
|
||||
@@ -47,7 +47,7 @@
|
||||
if(viruses.len > 0)
|
||||
for(var/datum/disease/D in viruses)
|
||||
if(prob(virusProb))
|
||||
var/datum/disease/viruus = new D.type
|
||||
var/datum/disease/viruus = new D.type(0, D, 1)
|
||||
gib.viruses += viruus
|
||||
viruus.holder = gib
|
||||
viruus.spread_type = CONTACT_FEET
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
if (prob(10))
|
||||
stuttering = max(10, stuttering)
|
||||
if (getBrainLoss() >= 60 && stat != 2)
|
||||
if (prob(7))
|
||||
if (prob(3))
|
||||
switch(pick(1,2,3))
|
||||
if(1)
|
||||
say(pick("IM A PONY NEEEEEEIIIIIIIIIGH", "without oxigen blob don't evoluate?", "CAPTAINS A COMDOM", "[pick("", "that faggot traitor")] [pick("joerge", "george", "gorge", "gdoruge")] [pick("mellens", "melons", "mwrlins")] is grifing me HAL;P!!!", "can u give me [pick("telikesis","halk","eppilapse")]?", "THe saiyans screwed", "Bi is THE BEST OF BOTH WORLDS>", "I WANNA PET TEH monkeyS", "stop grifing me!!!!", "SOTP IT#"))
|
||||
@@ -209,12 +209,8 @@
|
||||
emote("collapse")
|
||||
|
||||
if ((HULK in mutations) && health >= 25)
|
||||
if (prob(7))
|
||||
switch(pick(1,2))
|
||||
if(1)
|
||||
say(pick("HGH!", "PROTEIN!", "OH YEAH!", "HULK SMASH!", "HULK NOT LIKE BOOKS!", "HNNNNNNNNNGGGGGGH!", ))
|
||||
if(2)
|
||||
emote("flexes")
|
||||
if (prob(3))
|
||||
say(pick("HGH!", "PROTEIN!", "OH YEAH!", "HULK SMASH!", "HULK NOT LIKE BOOKS!", "HNNNNNNNNNGGGGGGH!", ))
|
||||
if (radiation)
|
||||
if (radiation > 100)
|
||||
radiation = 100
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
if ((HULK in mutations) && health >= 25)
|
||||
if(copytext(message, 1, 2) != "*")
|
||||
message = uppertext(message) //because I don't know how to code properly in getting vars from other files -Bro
|
||||
message = "[uppertext(message)]!!" //because I don't know how to code properly in getting vars from other files -Bro
|
||||
|
||||
//Ninja mask obscures text and voice if set to do so.
|
||||
//Would make it more global but it's sort of ninja specific.
|
||||
|
||||
@@ -334,12 +334,13 @@ datum
|
||||
else R.reaction_obj(A, R.volume+volume_modifier)
|
||||
return
|
||||
|
||||
add_reagent(var/reagent, var/amount, var/data=null)
|
||||
add_reagent(var/reagent, var/amount, var/list/data=null)
|
||||
if(!isnum(amount)) return 1
|
||||
update_total()
|
||||
if(total_volume + amount > maximum_volume) amount = (maximum_volume - total_volume) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen.
|
||||
|
||||
for(var/A in reagent_list)
|
||||
|
||||
var/datum/reagent/R = A
|
||||
if (R.id == reagent)
|
||||
R.volume += amount
|
||||
@@ -349,30 +350,40 @@ datum
|
||||
// mix dem viruses
|
||||
if(R.id == "blood" && reagent == "blood")
|
||||
if(R.data && data)
|
||||
if((R.data && R.data["viruses"]) || (data && data["viruses"]))
|
||||
|
||||
R.data["viruses"] |= data["viruses"]
|
||||
var/datum/disease/advance/AD = Advance_Mix(R.data["viruses"])
|
||||
if(R.data["viruses"] && data["viruses"])
|
||||
|
||||
var/list/mix1 = R.data["viruses"]
|
||||
var/list/mix2 = data["viruses"]
|
||||
|
||||
// Stop issues with the list changing during mixing.
|
||||
var/list/to_mix = list()
|
||||
|
||||
for(var/datum/disease/advance/AD in mix1)
|
||||
to_mix += AD
|
||||
for(var/datum/disease/advance/AD in mix2)
|
||||
to_mix += AD
|
||||
|
||||
var/datum/disease/advance/AD = Advance_Mix(to_mix)
|
||||
if(AD)
|
||||
for(var/datum/disease/advance/D in R.data["viruses"])
|
||||
R.data["viruses"] -= D
|
||||
|
||||
R.data["viruses"] |= new/datum/disease/advance(0, AD)
|
||||
|
||||
|
||||
|
||||
var/list/preserve = list(AD)
|
||||
for(var/D in R.data["viruses"])
|
||||
if(!istype(D, /datum/disease/advance))
|
||||
preserve += D
|
||||
R.data["viruses"] = preserve
|
||||
|
||||
handle_reactions()
|
||||
return 0
|
||||
|
||||
var/datum/reagent/D = chemical_reagents_list[reagent]
|
||||
if(D)
|
||||
|
||||
var/datum/reagent/R = new D.type()
|
||||
reagent_list += R
|
||||
R.holder = src
|
||||
R.volume = amount
|
||||
R.data = data
|
||||
SetViruses(R, data) // Includes setting data
|
||||
|
||||
//debug
|
||||
//world << "Adding data"
|
||||
//for(var/D in R.data)
|
||||
|
||||
@@ -12,7 +12,7 @@ datum
|
||||
var/description = ""
|
||||
var/datum/reagents/holder = null
|
||||
var/reagent_state = SOLID
|
||||
var/data = null
|
||||
var/list/data = null
|
||||
var/volume = 0
|
||||
var/nutriment_factor = 0
|
||||
//var/list/viruses = list()
|
||||
@@ -99,28 +99,18 @@ datum
|
||||
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
var/datum/reagent/blood/self = src
|
||||
src = null
|
||||
for(var/datum/disease/D in self.data["viruses"])
|
||||
//var/datum/disease/virus = new D.type(0, D, 1)
|
||||
// We don't spread.
|
||||
if(D.spread_type == SPECIAL || D.spread_type == NON_CONTAGIOUS) continue
|
||||
if(self.data && self.data["viruses"])
|
||||
for(var/datum/disease/D in self.data["viruses"])
|
||||
//var/datum/disease/virus = new D.type(0, D, 1)
|
||||
// We don't spread.
|
||||
if(D.spread_type == SPECIAL || D.spread_type == NON_CONTAGIOUS) continue
|
||||
|
||||
if(method == TOUCH)
|
||||
M.contract_disease(D)
|
||||
else //injected
|
||||
M.contract_disease(D, 1, 0)
|
||||
if(method == TOUCH)
|
||||
M.contract_disease(D)
|
||||
else //injected
|
||||
M.contract_disease(D, 1, 0)
|
||||
|
||||
|
||||
/*
|
||||
if(self.data["virus"])
|
||||
var/datum/disease/V = self.data["virus"]
|
||||
if(M.resistances.Find(V.type)) return
|
||||
if(method == TOUCH)//respect all protective clothing...
|
||||
M.contract_disease(V)
|
||||
else //injected
|
||||
M.contract_disease(V, 1, 0)
|
||||
return
|
||||
*/
|
||||
|
||||
|
||||
reaction_turf(var/turf/simulated/T, var/volume)//splash the blood all over the place
|
||||
if(!istype(T)) return
|
||||
|
||||
@@ -475,9 +475,28 @@ datum
|
||||
|
||||
mix_virus_2
|
||||
|
||||
required_reagents = list("blood" = 5, "mutagen" = 5)
|
||||
name = "Mix Virus 2"
|
||||
id = "mixvirus2"
|
||||
required_reagents = list("blood" = 1, "mutagen" = 5)
|
||||
level = 4
|
||||
|
||||
rem_virus
|
||||
|
||||
name = "Devolve Virus"
|
||||
id = "remvirus"
|
||||
required_reagents = list("blood" = 1, "synaptizine" = 5)
|
||||
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
|
||||
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
|
||||
if(B && B.data)
|
||||
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
|
||||
if(D)
|
||||
D.Devolve()
|
||||
holder.del_reagent(id)
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// foam and foam precursor
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
B.data["viruses"] = list()
|
||||
|
||||
|
||||
B.data["viruses"] += new D.type(D)
|
||||
B.data["viruses"] += new D.type(0, D, 1)
|
||||
|
||||
|
||||
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
|
||||
|
||||
Reference in New Issue
Block a user