- Slightly rewrote the diseases. Spreading, stage updates, etc. Check the diffs if you want details.

- Fixed wizarditis teleport lagggggg

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@339 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
panurgomatic
2010-10-21 03:23:10 +00:00
parent fa12986b97
commit c0c940db6a
27 changed files with 369 additions and 301 deletions

View File

@@ -387,6 +387,9 @@
dat += "<b>Blood Type:</b> [(Blood.data["blood_type"]||"none")]<BR>"
var/datum/disease/D = Blood.data["virus"]
dat += "<b>Agent of disease:</b> [D?"[D.agent] - <A href='?src=\ref[src];create_virus_culture=[D.type]'>Create virus culture bottle</A>":"none"]<BR>"
if(D)
dat += "<b>Common name:</b> [(D.name||"none")]<BR>"
dat += "<b>Possible cure:</b> [(D.cure||"none")]<BR>"
dat += "<b>Contains antibodies to:</b> "
if(Blood.data["resistances"])
var/list/res = Blood.data["resistances"]

View File

@@ -74,9 +74,9 @@ datum
var/datum/disease/V = self.data["virus"]
if(M.resistances.Find(V.type)) return
if(method == TOUCH)//respect all protective clothing...
M.contract_disease(new V.type)
M.contract_disease(V)
else //injected
M.contract_disease(new V.type, 1)
M.contract_disease(V, 1)
return
@@ -84,6 +84,7 @@ datum
var/datum/reagent/blood/self = src
src = null
if(!istype(T, /turf/simulated/)) return
var/datum/disease/D = self.data["virus"]
if(istype(self.data["donor"], /mob/living/carbon/human) || !self.data["donor"])
var/turf/simulated/source2 = T
var/list/objsonturf = range(0,T)
@@ -94,19 +95,36 @@ datum
var/obj/decal/cleanable/blood/blood_prop = new /obj/decal/cleanable/blood(source2)
blood_prop.blood_DNA = self.data["blood_DNA"]
blood_prop.blood_type = self.data["blood_type"]
blood_prop.virus = self.data["virus"]
if(D)
blood_prop.virus = new D.type
blood_prop.virus.holder = blood_prop
if(istype(T, /turf/simulated/floor))
blood_prop.virus.spread_type = CONTACT_FEET
else
blood_prop.virus.spread_type = CONTACT_HANDS
else if(istype(self.data["donor"], /mob/living/carbon/monkey))
var/turf/simulated/source1 = T
var/obj/decal/cleanable/blood/blood_prop = new /obj/decal/cleanable/blood(source1)
blood_prop.blood_DNA = self.data["blood_DNA"]
blood_prop.virus = self.data["virus"]
if(D)
blood_prop.virus = new D.type
blood_prop.virus.holder = blood_prop
if(istype(T, /turf/simulated/floor))
blood_prop.virus.spread_type = CONTACT_FEET
else
blood_prop.virus.spread_type = CONTACT_HANDS
else if(istype(self.data["donor"], /mob/living/carbon/alien))
var/turf/simulated/source2 = T
var/obj/decal/cleanable/xenoblood/blood_prop = new /obj/decal/cleanable/xenoblood(source2)
blood_prop.virus = self.data["virus"]
if(D)
blood_prop.virus = new D.type
blood_prop.virus.holder = blood_prop
if(istype(T, /turf/simulated/floor))
blood_prop.virus.spread_type = CONTACT_FEET
else
blood_prop.virus.spread_type = CONTACT_HANDS
return
vaccine
@@ -119,8 +137,8 @@ datum
var/datum/reagent/vaccine/self = src
src = null
if(self.data&&method == INGEST)
if(M.resistances.Find(self.data)) return
M.resistances += self.data
if(M.virus&&M.virus.type == self.data)
M.virus.cure()
return
@@ -967,9 +985,9 @@ datum
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
src = null
if( (prob(10) && method==TOUCH) || method==INGEST)
if(!M.virus)
M.virus = new /datum/disease/robotic_transformation
M.virus.affected_mob = M
var/datum/disease/D = new /datum/disease/robotic_transformation
M.contract_disease(D,1)
del(D)
xenomicrobes
name = "Xenomicrobes"
@@ -979,9 +997,9 @@ datum
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
src = null
if( (prob(10) && method==TOUCH) || method==INGEST)
if(!M.virus)
M.virus = new /datum/disease/xeno_transformation
M.virus.affected_mob = M
var/datum/disease/D = new /datum/disease/xeno_transformation
M.contract_disease(D,1)
del(D)
//foam precursor
@@ -1804,4 +1822,4 @@ datum
if(data >= 55 && prob(33))
if (!M.confused) M.confused = 1
M.confused += 2
..()
..()

View File

@@ -357,6 +357,18 @@
amount_per_transfer_from_this = 10
flags = FPRINT | TABLEPASS | OPENCONTAINER
var/list/can_be_placed_into = list(
/obj/machinery/chem_master/,
/obj/table,
/obj/secure_closet,
/obj/closet,
/obj/item/weapon/storage,
/obj/machinery/atmospherics/unary/cryo_cell,
/obj/item/weapon/chem_grenade,
/obj/machinery/bot/medbot,
/obj/machinery/pandemic,
/obj/item/weapon/secstorage/ssafe)
examine()
set src in view(2)
..()
@@ -374,7 +386,8 @@
R.my_atom = src
afterattack(obj/target, mob/user , flag)
if(src.can_be_placed_into.Find(target.type))
return
if(ismob(target) && target.reagents && reagents.total_volume)
user << "\blue You splash the solution onto [target]."
for(var/mob/O in viewers(world.view, user))
@@ -407,7 +420,7 @@
var/trans = src.reagents.trans_to(target, 10)
user << "\blue You transfer [trans] units of the solution to [target]."
else if(reagents.total_volume && !istype(target,/obj/machinery/chem_master/) && !istype(target,/obj/table) && !istype(target,/obj/secure_closet) && !istype(target,/obj/closet) && !istype(target,/obj/item/weapon/storage) && !istype(target, /obj/machinery/atmospherics/unary/cryo_cell) && !istype(target, /obj/item/weapon/chem_grenade) && !istype(target, /obj/machinery/bot/medbot) &&!istype(target, /obj/machinery/pandemic))
else if(reagents.total_volume)
user << "\blue You splash the solution onto [target]."
src.reagents.reaction(target, TOUCH)
spawn(5) src.reagents.clear_reagents()
@@ -547,7 +560,7 @@
B.volume = amount
//set reagent data
B.data["donor"] = T
if(T.virus)
if(T.virus && T.virus.spread_type != SPECIAL)
B.data["virus"] = new T.virus.type
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
if(T.resistances&&T.resistances.len)