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:
giacomand@gmail.com
2012-11-13 00:28:07 +00:00
parent 9999a1d65e
commit 7955d348d8
23 changed files with 170 additions and 579 deletions
+23 -12
View File
@@ -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)
+10 -20
View File
@@ -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
+20 -1
View File
@@ -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)