diff --git a/code/datums/disease.dm b/code/datums/disease.dm index e7011287d36..b4457a473d4 100644 --- a/code/datums/disease.dm +++ b/code/datums/disease.dm @@ -120,11 +120,11 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease if(how_spread != AIRBORNE && how_spread != SPECIAL) check_range = 1 // everything else, like infect-on-contact things, only infect things on top of it - if(isturf(affected_mob.loc)) + if(isturf(source.loc)) for(var/mob/living/carbon/M in oview(check_range, source)) if(isturf(M.loc)) - if(AStar(affected_mob.loc, M.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, check_range)) - M.contract_disease(src) + if(AStar(source.loc, M.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, check_range)) + M.contract_disease(src, 0, 1, force_spread) return @@ -140,6 +140,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease for(var/datum/disease/D in affected_mob.viruses) if(D != src) if(IsSame(D)) + //error("Deleting [D.name] because it's the same as [src.name].") del(D) // if there are somehow two viruses of the same kind in the system, delete the other one if(holder == affected_mob) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index b7395e204c4..2a1f23432ea 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -25,6 +25,7 @@ var/list/archive_diseases = list() agent = "advance microbes" max_stages = 5 spread = "Unknown" + affected_species = list("Human","Monkey") // NEW VARS @@ -47,12 +48,15 @@ var/list/archive_diseases = list() if(!istype(D)) D = null // Generate symptoms if we weren't given any. + if(!symptoms || !symptoms.len) + if(!D || !D.symptoms || !D.symptoms.len) symptoms = GenerateSymptoms() else symptoms = D.symptoms name = D.name + Refresh(!copy) ..(process, D) return @@ -69,9 +73,14 @@ var/list/archive_diseases = list() // Compares type then ID. /datum/disease/advance/IsSame(var/datum/disease/advance/D) if(!(istype(D, /datum/disease/advance))) + //error("Returning 0 because not same type.") + return 0 + //error("Comparing [src.GetDiseaseID()] [D.GetDiseaseID()]") if(src.GetDiseaseID() != D.GetDiseaseID()) + //error("Returing 0") return 0 + //error("Returning 1") return 1 // To add special resistances. @@ -149,14 +158,14 @@ var/list/archive_diseases = list() CRASH("We did not have any symptoms before generating properties.") return - var/list/properties = list("resistance" = 1, "stealth" = 1, "stage_rate" = 1, "tansmittable" = 1, "severity" = 1) + var/list/properties = list("resistance" = 1, "stealth" = 1, "stage_rate" = 1, "transmittable" = 1, "severity" = 1) for(var/datum/symptom/S in symptoms) properties["resistance"] += S.resistance properties["stealth"] += S.stealth properties["stage_rate"] += S.stage_speed - properties["tansmittable"] += S.transmittable + properties["transmittable"] += S.transmittable properties["severity"] = max(properties["severity"], S.level) // severity is based on the highest level symptom return properties @@ -168,8 +177,8 @@ 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(round(properties["tansmittable"] - (symptoms.len / 2)), AIRBORNE))) - permeability_mod = 0.5 * properties["transmittable"] + SetSpread(max(BLOOD, min(properties["transmittable"] - symptoms.len, AIRBORNE))) + permeability_mod = round(0.5 * properties["transmittable"]) stage_prob = max(properties["stage_rate"], 1) SetSeverity(properties["severity"]) GenerateCure(properties) @@ -182,15 +191,15 @@ var/list/archive_diseases = list() switch(spread_id) if(NON_CONTAGIOUS) - src.spread = "None" + spread = "None" if(SPECIAL) - src.spread = "None" + spread = "None" if(CONTACT_GENERAL, CONTACT_HANDS, CONTACT_FEET) - src.spread = "On contact" + spread = "On contact" if(AIRBORNE) - src.spread = "Airborne" + spread = "Airborne" if(BLOOD) - src.spread = "Blood" + spread = "Blood" spread_type = spread_id //world << "Setting spread type to [spread_id]/[spread]" diff --git a/code/datums/diseases/advance/cold.dm b/code/datums/diseases/advance/cold.dm index 66ff503d93a..3392b5f7ecf 100644 --- a/code/datums/diseases/advance/cold.dm +++ b/code/datums/diseases/advance/cold.dm @@ -1,4 +1,5 @@ -/datum/disease/advance/cold/New(var/process = 1, var/datum/disease/advance/D) - name = "Cold" - symptoms = list(new/datum/symptom/sneeze) - ..(process, D) +/datum/disease/advance/cold/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0) + if(!D) + name = "Cold" + symptoms = list(new/datum/symptom/sneeze) + ..(process, D, copy) diff --git a/code/datums/diseases/advance/flu.dm b/code/datums/diseases/advance/flu.dm index 8fe45c3b342..b661f4f1bfd 100644 --- a/code/datums/diseases/advance/flu.dm +++ b/code/datums/diseases/advance/flu.dm @@ -1,4 +1,5 @@ -/datum/disease/advance/flu/New(var/process = 1, var/datum/disease/advance/D) - name = "Flu" - symptoms = list(new/datum/symptom/cough) - ..(process, D) +/datum/disease/advance/flu/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0) + if(!D) + name = "Flu" + symptoms = list(new/datum/symptom/cough) + ..(process, D, copy) diff --git a/code/datums/diseases/advance/symptoms/confusion.dm b/code/datums/diseases/advance/symptoms/confusion.dm index 87854e005d3..9bc2b6769c2 100644 --- a/code/datums/diseases/advance/symptoms/confusion.dm +++ b/code/datums/diseases/advance/symptoms/confusion.dm @@ -6,6 +6,7 @@ Confusion Little bit hidden. Lowers resistance. Decreases stage speed. + Not very transmittable. Intense Level. Bonus @@ -20,8 +21,10 @@ Bonus stealth = 1 resistance = -1 stage_speed = -3 + transmittable = 0 level = 4 + /datum/symptom/confusion/Activate(var/datum/disease/advance/A) ..() if(prob(SYMPTOM_ACTIVATION_PROB)) diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm index 5991d083240..a467f760ea6 100644 --- a/code/datums/diseases/advance/symptoms/cough.dm +++ b/code/datums/diseases/advance/symptoms/cough.dm @@ -5,7 +5,8 @@ Coughing Noticable. No Resistance. - Doesn't increase stage speed.. + Doesn't increase stage speed. + Transmittable. Low Level. BONUS @@ -20,6 +21,7 @@ BONUS stealth = -1 resistance = 0 stage_speed = 0 + transmittable = 2 level = 1 /datum/symptom/cough/Activate(var/datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index 3ae71a98865..163b2a3bc79 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -6,6 +6,7 @@ Damage Converter Little bit hidden. Lowers resistance tremendously. Decreases stage speed tremendously. + Reduced transmittablity Intense Level. Bonus @@ -18,8 +19,9 @@ Bonus name = "Toxic Compensation" stealth = 1 - resistance = -5 - stage_speed = -5 + resistance = -4 + stage_speed = -4 + transmittable = -2 level = 4 /datum/symptom/damage_converter/Activate(var/datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/dizzy.dm b/code/datums/diseases/advance/symptoms/dizzy.dm index 67cb9072223..cca159c8d47 100644 --- a/code/datums/diseases/advance/symptoms/dizzy.dm +++ b/code/datums/diseases/advance/symptoms/dizzy.dm @@ -6,6 +6,7 @@ Dizziness Little bit hidden. Lowers resistance considerably. Decreases stage speed. + Reduced transmittability Intense Level. Bonus @@ -20,6 +21,7 @@ Bonus stealth = 1 resistance = -2 stage_speed = -3 + transmittable = -1 level = 4 /datum/symptom/dizzy/Activate(var/datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/fever.dm b/code/datums/diseases/advance/symptoms/fever.dm index 9cd9585eabf..d5cb72f6122 100644 --- a/code/datums/diseases/advance/symptoms/fever.dm +++ b/code/datums/diseases/advance/symptoms/fever.dm @@ -6,6 +6,7 @@ Fever No change to hidden. Increases resistance. Increases stage speed. + Little transmittable. Low level. Bonus @@ -20,6 +21,7 @@ Bonus stealth = 0 resistance = 3 stage_speed = 3 + transmittable = 1 level = 2 /datum/symptom/fever/Activate(var/datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/hallucigen.dm b/code/datums/diseases/advance/symptoms/hallucigen.dm index a7a16f8b9a0..5e0f0aa4731 100644 --- a/code/datums/diseases/advance/symptoms/hallucigen.dm +++ b/code/datums/diseases/advance/symptoms/hallucigen.dm @@ -6,6 +6,7 @@ Hallucigen Very noticable. Lowers resistance considerably. Decreases stage speed. + Reduced transmittable. Critical Level. Bonus @@ -20,6 +21,7 @@ Bonus stealth = -2 resistance = -3 stage_speed = -3 + transmittable = -1 level = 5 /datum/symptom/hallucigen/Activate(var/datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/headache.dm b/code/datums/diseases/advance/symptoms/headache.dm index bb6708b2957..691b7bf3122 100644 --- a/code/datums/diseases/advance/symptoms/headache.dm +++ b/code/datums/diseases/advance/symptoms/headache.dm @@ -5,7 +5,8 @@ Headache Noticable. Highly resistant. - Increases stage speed.. + Increases stage speed. + Not transmittable. Low Level. BONUS @@ -15,15 +16,16 @@ BONUS ////////////////////////////////////// */ -/datum/symptom/cough +/datum/symptom/headache name = "Headache" stealth = -1 resistance = 4 stage_speed = 2 + transmittable = 0 level = 1 -/datum/symptom/cough/Activate(var/datum/disease/advance/A) +/datum/symptom/headache/Activate(var/datum/disease/advance/A) ..() if(prob(SYMPTOM_ACTIVATION_PROB)) var/mob/living/M = A.affected_mob diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm index 90bfbeba63a..f4b69c364ab 100644 --- a/code/datums/diseases/advance/symptoms/itching.dm +++ b/code/datums/diseases/advance/symptoms/itching.dm @@ -5,7 +5,8 @@ Itching Not noticable or unnoticable. Resistant. - Increases stage speed.. + Increases stage speed. + Little transmittable. Low Level. BONUS @@ -21,6 +22,7 @@ BONUS stealth = 0 resistance = 3 stage_speed = 3 + transmittable = 1 level = 1 /datum/symptom/itching/Activate(var/datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm index a47e0a8b91c..94aec8e23e6 100644 --- a/code/datums/diseases/advance/symptoms/sneeze.dm +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -6,6 +6,7 @@ Sneezing Very Noticable. Increases resistance. Doesn't increase stage speed. + Very transmittable. Low Level. Bonus @@ -21,6 +22,7 @@ Bonus stealth = -2 resistance = 2 stage_speed = 0 + transmittable = 3 level = 1 /datum/symptom/sneeze/Activate(var/datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/vomit.dm b/code/datums/diseases/advance/symptoms/vomit.dm index 099478a80e2..495163aed5f 100644 --- a/code/datums/diseases/advance/symptoms/vomit.dm +++ b/code/datums/diseases/advance/symptoms/vomit.dm @@ -6,6 +6,7 @@ Vomiting Very Very Noticable. Decreases resistance. Doesn't increase stage speed. + Little transmittable. Medium Level. Bonus @@ -24,6 +25,7 @@ Bonus stealth = -2 resistance = -1 stage_speed = 0 + transmittable = 1 level = 3 /datum/symptom/vomit/Activate(var/datum/disease/advance/A) @@ -57,6 +59,7 @@ Vomiting Blood Very Very Noticable. Decreases resistance. Decreases stage speed. + Little transmittable. Intense level. Bonus @@ -74,6 +77,7 @@ Bonus stealth = -2 resistance = -1 stage_speed = -1 + transmittable = 1 level = 4 /datum/symptom/vomit/blood/Vomit(var/mob/living/M) diff --git a/code/datums/diseases/advance/symptoms/weight.dm b/code/datums/diseases/advance/symptoms/weight.dm index 1d4bafafc6f..f983eb32396 100644 --- a/code/datums/diseases/advance/symptoms/weight.dm +++ b/code/datums/diseases/advance/symptoms/weight.dm @@ -5,7 +5,8 @@ Weight Gain Very Very Noticable. Decreases resistance. - Decreases stage speed.. + Decreases stage speed. + Reduced transmittable. Intense Level. Bonus @@ -20,6 +21,7 @@ Bonus stealth = -3 resistance = -3 stage_speed = -2 + transmittable = -2 level = 4 /datum/symptom/weight_gain/Activate(var/datum/disease/advance/A) @@ -44,6 +46,7 @@ Weight Loss Very Very Noticable. Decreases resistance. Decreases stage speed. + Reduced Transmittable. High level. Bonus @@ -59,6 +62,7 @@ Bonus stealth = -3 resistance = -2 stage_speed = -2 + transmittable = -2 level = 3 /datum/symptom/weight_loss/Activate(var/datum/disease/advance/A) @@ -82,6 +86,7 @@ Weight Even Very Noticable. Decreases resistance. Decreases stage speed. + Reduced transmittable. High level. Bonus @@ -98,6 +103,7 @@ Bonus stealth = -3 resistance = -2 stage_speed = -2 + transmittable = -2 level = 4 /datum/symptom/weight_loss/Activate(var/datum/disease/advance/A) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 0c8aa2e579b..65269a4b5d4 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -208,6 +208,13 @@ Weaken(3) 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 (radiation) if (radiation > 100) radiation = 100 diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index ba08719498e..085c21f29c0 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -70,6 +70,10 @@ if(prob(25)) message += " OLE!" + 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 + //Ninja mask obscures text and voice if set to do so. //Would make it more global but it's sort of ninja specific. if(istype(src.wear_mask, /obj/item/clothing/mask/gas/voice/space_ninja)&&src.wear_mask:voice=="Unknown") diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index 016f3dcb79a..e011158deac 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -143,6 +143,58 @@ else message = "[src] looks." m_type = 1 + + if("beep") + var/M = null + if(param) + for (var/mob/A in view(null, null)) + if (param == A.name) + M = A + break + if(!M) + param = null + + if (param) + message = "[src] beeps at [param]." + else + message = "[src] beeps." + playsound(src.loc, 'twobeep.ogg', 50, 0) + m_type = 1 + + if("ping") + var/M = null + if(param) + for (var/mob/A in view(null, null)) + if (param == A.name) + M = A + break + if(!M) + param = null + + if (param) + message = "[src] pings at [param]." + else + message = "[src] pings." + playsound(src.loc, 'ping.ogg', 50, 0) + m_type = 1 + + if("buzz") + var/M = null + if(param) + for (var/mob/A in view(null, null)) + if (param == A.name) + M = A + break + if(!M) + param = null + + if (param) + message = "[src] buzzes at [param]." + else + message = "[src] buzzes." + playsound(src.loc, 'buzz-sigh.ogg', 50, 0) + m_type = 1 + else src << text("Invalid Emote: []", act) if ((message && src.stat == 0)) diff --git a/code/modules/mob/mob_cleanup.dm b/code/modules/mob/mob_cleanup.dm index 65aa4f714ff..6161ee97fca 100644 --- a/code/modules/mob/mob_cleanup.dm +++ b/code/modules/mob/mob_cleanup.dm @@ -6,20 +6,25 @@ Put (mob/proc)s here that are in dire need of a code cleanup. /mob/proc/has_disease(var/datum/disease/virus) for(var/datum/disease/D in viruses) if(D.IsSame(virus)) + //error("[D.name]/[D.type] is the same as [virus.name]/[virus.type]") return 1 return 0 // This proc has some procs that should be extracted from it. I believe we can develop some helper procs from it - Rockdtben -/mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1) -// world << "Contract_disease called by [src] with virus [virus]" +/mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1, var/spread_type = -5) + //world << "Contract_disease called by [src] with virus [virus]" if(stat >=2) + //world << "He's dead jim." return if(istype(virus, /datum/disease/advance)) + //world << "It's an advance virus." var/datum/disease/advance/A = virus if(A.GetDiseaseID() in resistances) + //world << "It resisted us!" return else if(src.resistances.Find(virus.type)) + //world << "Normal virus and resisted" return @@ -37,10 +42,10 @@ Put (mob/proc)s here that are in dire need of a code cleanup. if(fail) return if(skip_this == 1) + //world << "infectin" //if(src.virus) < -- this used to replace the current disease. Not anymore! //src.virus.cure(0) - - var/datum/disease/v = new virus.type(D = virus) + var/datum/disease/v = new virus.type(1, virus, 0) src.viruses += v v.affected_mob = src v.strain_data = v.strain_data.Copy() @@ -48,7 +53,7 @@ Put (mob/proc)s here that are in dire need of a code cleanup. if(v.can_carry && prob(5)) v.carrier = 1 return - + //world << "Not skipping." //if(src.virus) // //return // @@ -67,7 +72,7 @@ Put (mob/proc)s here that are in dire need of a code cleanup. */ if(prob(15/virus.permeability_mod)) return //the power of immunity compels this disease! but then you forgot resistances - + //world << "past prob()" var/obj/item/clothing/Cl = null var/passed = 1 @@ -77,7 +82,10 @@ Put (mob/proc)s here that are in dire need of a code cleanup. var/hands_ch var/feet_ch - switch(virus.spread_type) + if(spread_type == -5) + spread_type = virus.spread_type + + switch(spread_type) if(CONTACT_HANDS) head_ch = 0 body_ch = 0 @@ -158,7 +166,7 @@ Put (mob/proc)s here that are in dire need of a code cleanup. passed = prob(Cl.permeability_coefficient*100+virus.permeability_mod) //world << "Mask pass [passed]" - if(passed && virus.spread_type == AIRBORNE && internals) + if(passed && spread_type == AIRBORNE && internals) passed = (prob(50*virus.permeability_mod)) if(passed) @@ -192,7 +200,8 @@ Put (mob/proc)s here that are in dire need of a code cleanup. else if(prob(15)) return else*/ - var/datum/disease/v = new virus.type + + var/datum/disease/v = new virus.type(1, virus, 0) src.viruses += v v.affected_mob = src v.strain_data = v.strain_data.Copy() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 790975c0ad3..26c1c88dca9 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -100,14 +100,14 @@ datum var/datum/reagent/blood/self = src src = null for(var/datum/disease/D in self.data["viruses"]) - var/datum/disease/virus = new D.type(D) + //var/datum/disease/virus = new D.type(0, D, 1) // We don't spread. - if(virus.spread_type == SPECIAL || virus.spread_type == NON_CONTAGIOUS) continue + if(D.spread_type == SPECIAL || D.spread_type == NON_CONTAGIOUS) continue if(method == TOUCH) - M.contract_disease(virus) + M.contract_disease(D) else //injected - M.contract_disease(virus, 1, 0) + M.contract_disease(D, 1, 0) /* diff --git a/html/changelog.html b/html/changelog.html index 68ac8f7f188..1050e16390e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -49,6 +49,18 @@ should be listed in the changelog upon commit tho. Thanks. --> +
+

09 November 2012

+

Giacom updated:

+ +
+ +

05 November 2012

Giacom updated:

diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index 7d7208cd954..b9cdd3aec60 100644 Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ