Added a new symptom with a high level, so that it's not possible to gain through mutations.

Gave the high level symptoms their own preset diseases and added them to the virus crate, along with a bottle of mutagen.

Several disease fixes, such as disease stages going below 0. Diseases which spread by blood will longer spread when you touch someone (i.e: click on someone)

I also did some cleaning up with comments.

Made handheld radios broadcast if their messages aren't sent on the same level as they're on, meaning that turning off the relay to the station will not make it impossible to communicate with others with radios.

Made some events only effect people on the station Z level.



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5192 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
giacomand@gmail.com
2012-11-25 21:32:07 +00:00
parent d9480a1407
commit af523d3e8f
17 changed files with 108 additions and 103 deletions
+10 -3
View File
@@ -63,13 +63,15 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
if(stage > max_stages)
stage = max_stages
if(stage_prob != 0 && prob(stage_prob) && stage != max_stages && !cure_present) //now the disease shouldn't get back up to stage 4 in no time
if(stage < max_stages && prob(stage_prob) && !cure_present) //now the disease shouldn't get back up to stage 4 in no time
stage++
//world << "up"
if(cure_present && prob(cure_chance))
if(stage > 0 && (cure_present && prob(cure_chance)))
stage--
//world << "down"
else if(stage <= 1 && ((prob(1) && curable) || (cure_present && prob(cure_chance))))
if(stage <= 1 && ((prob(1) && curable) || (cure_present && prob(cure_chance))))
// world << "Cured as stage act"
cure()
return
@@ -96,6 +98,11 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
return result
/datum/disease/proc/spread_by_touch()
switch(spread_type)
if(CONTACT_FEET, CONTACT_HANDS, CONTACT_GENERAL)
return 1
return 0
/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]"
-5
View File
@@ -1,5 +0,0 @@
/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)
-5
View File
@@ -1,5 +0,0 @@
/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)
+34
View File
@@ -0,0 +1,34 @@
// Cold
/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)
// Flu
/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)
// Voice Changing
/datum/disease/advance/voice_change/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
if(!D)
name = "Epiglottis Mutation"
symptoms = list(new/datum/symptom/voice_change)
..(process, D, copy)
// Toxin Filter
/datum/disease/advance/heal/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
if(!D)
name = "Liver Enhancer"
symptoms = list(new/datum/symptom/heal)
..(process, D, copy)
@@ -15,7 +15,7 @@ Bonus
//////////////////////////////////////
*/
/datum/symptom/damage_converter // Not the egg
/datum/symptom/damage_converter
name = "Toxic Compensation"
stealth = 1
@@ -38,9 +38,9 @@ Bonus
var/random_name = ""
switch(H.gender)
if(MALE)
random_name = (pick(first_names_male))
random_name = pick(first_names_male)
else
random_name = (pick(first_names_female))
random_name = pick(first_names_female)
random_name += " [pick(last_names)]"
H.SetSpecialVoice(random_name)
+3 -2
View File
@@ -280,12 +280,13 @@
name = "Virus crate"
contains = list(/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,
/obj/item/weapon/reagent_containers/glass/bottle/cold,
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion,
/obj/item/weapon/reagent_containers/glass/bottle/liver_enhance_virion,
/obj/item/weapon/reagent_containers/glass/bottle/fake_gbs,
/obj/item/weapon/reagent_containers/glass/bottle/magnitis,
// /obj/item/weapon/reagent_containers/glass/bottle/wizarditis, worse than GBS if anything
// /obj/item/weapon/reagent_containers/glass/bottle/gbs, No. Just no.
/obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat,
/obj/item/weapon/reagent_containers/glass/bottle/brainrot,
/obj/item/weapon/reagent_containers/glass/bottle/mutagen,
/obj/item/weapon/storage/syringes,
/obj/item/weapon/storage/beakerbox)
cost = 20
+9
View File
@@ -232,6 +232,9 @@
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
var/foundAlready = 0 // don't infect someone that already has the virus
var/turf/T = get_turf(H)
if(T.z != 1)
continue
for(var/datum/disease/D in H.viruses)
foundAlready = 1
if(H.stat == 2 || foundAlready)
@@ -298,6 +301,9 @@
sleep(100)
*/
for(var/mob/living/carbon/human/H in living_mob_list)
var/turf/T = get_turf(H)
if(T.z != 1)
continue
if(istype(H,/mob/living/carbon/human))
H.apply_effect((rand(15,75)),IRRADIATE,0)
if (prob(5))
@@ -310,6 +316,9 @@
randmutg(H)
domutcheck(H,null,1)
for(var/mob/living/carbon/monkey/M in living_mob_list)
var/turf/T = get_turf(M)
if(T.z != 1)
continue
M.apply_effect((rand(15,75)),IRRADIATE,0)
sleep(100)
command_alert("High levels of radiation detected near the station. Please report to the Med-bay if you feel strange.", "Anomaly Alert")
@@ -382,11 +382,11 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
sleep(rand(10,25)) // wait a little...
if(signal.data["done"])
if(signal.data["done"] && position.z in signal.data["level"])
// we're done here.
return
// Oh my god; the comms are down or something because the signal hasn't been broadcasted yet.
// Oh my god; the comms are down or something because the signal hasn't been broadcasted yet in our level.
// Send a mundane broadcast with limited targets:
//THIS IS TEMPORARY.
@@ -47,9 +47,6 @@
//to find it.
blinded = null
//Disease Check
//handle_virus_updates() There is no disease that affects aliens
//Handle temperature/pressure differences between body and environment
handle_environment(environment)
@@ -41,9 +41,6 @@
//to find it.
blinded = null
//Disease Check
//handle_virus_updates() There is no disease that affects larva
//Handle temperature/pressure differences between body and environment
handle_environment(enviroment)
@@ -10,9 +10,6 @@
//Chemicals in the body
handle_chemicals_in_body()
//Disease Check
//handle_virus_updates() There is no disease that affects brains
var/datum/gas_mixture/environment // Added to prevent null location errors-- TLE
if(loc)
environment = loc.return_air()
+13 -54
View File
@@ -52,36 +52,17 @@
if(!istype(M, /mob/living/carbon)) return
for(var/datum/disease/D in viruses)
var/s_spread_type
if(D.spread_type!=SPECIAL && D.spread_type!=AIRBORNE)
s_spread_type = D.spread_type
D.spread_type = CONTACT_HANDS
M.contract_disease(D)
D.spread_type = s_spread_type
world << "1 [D.spread]"
if(D.spread_by_touch())
world << "1 contract"
M.contract_disease(D, 0, 1, CONTACT_HANDS)
for(var/datum/disease/D in M.viruses)
var/s_spread_type
if(D.spread_type!=SPECIAL && D.spread_type!=AIRBORNE)
s_spread_type = D.spread_type
D.spread_type = CONTACT_HANDS
contract_disease(D)
D.spread_type = s_spread_type
world << "2 [D.spread]"
if(D.spread_by_touch())
world << "2 contract"
contract_disease(D, 0, 1, CONTACT_HANDS)
/* // old code: doesn't support multiple viruses
if(src.virus || M.virus)
var/s_spread_type
if(src.virus && src.virus.spread_type!=SPECIAL && src.virus.spread_type!=AIRBORNE)
s_spread_type = src.virus.spread_type
src.virus.spread_type = CONTACT_HANDS
M.contract_disease(src.virus)
src.virus.spread_type = s_spread_type
if(M.virus && M.virus.spread_type!=SPECIAL && M.virus.spread_type!=AIRBORNE)
s_spread_type = M.virus.spread_type
M.virus.spread_type = CONTACT_GENERAL
src.contract_disease(M.virus)
M.virus.spread_type = s_spread_type
*/
return
@@ -90,37 +71,15 @@
for(var/datum/disease/D in viruses)
var/s_spread_type
if(D.spread_type!=SPECIAL && D.spread_type!=AIRBORNE)
s_spread_type = D.spread_type
D.spread_type = CONTACT_HANDS
M.contract_disease(D)
D.spread_type = s_spread_type
if(D.spread_by_touch())
M.contract_disease(D, 0, 1, CONTACT_HANDS)
for(var/datum/disease/D in M.viruses)
var/s_spread_type
if(D.spread_type!=SPECIAL && D.spread_type!=AIRBORNE)
s_spread_type = D.spread_type
D.spread_type = CONTACT_HANDS
contract_disease(D)
D.spread_type = s_spread_type
/*
if(D.spread_by_touch())
contract_disease(D, 0, 1, CONTACT_HANDS)
if(src.virus || M.virus)
var/s_spread_type
if(src.virus && src.virus.spread_type!=SPECIAL && src.virus.spread_type!=AIRBORNE)
s_spread_type = src.virus.spread_type
src.virus.spread_type = CONTACT_HANDS
M.contract_disease(src.virus)
src.virus.spread_type = s_spread_type
if(M.virus && M.virus.spread_type!=SPECIAL && M.virus.spread_type!=AIRBORNE)
s_spread_type = M.virus.spread_type
M.virus.spread_type = CONTACT_GENERAL
src.contract_disease(M.virus)
M.virus.spread_type = s_spread_type
*/
return
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0)
@@ -11,9 +11,6 @@
//Chemicals in the body
handle_chemicals_in_body()
//Disease Check
//handle_virus_updates() There is no disease that affects metroids
handle_nutrition()
handle_targets()
+3 -16
View File
@@ -125,7 +125,7 @@ datum
blood_prop.blood_DNA[self.data["blood_DNA"]] = self.data["blood_type"]
for(var/datum/disease/D in self.data["viruses"])
var/datum/disease/newVirus = new D.type(D)
var/datum/disease/newVirus = D.Copy()
blood_prop.viruses += newVirus
newVirus.holder = blood_prop
@@ -136,32 +136,19 @@ datum
blood_prop = new(T)
blood_prop.blood_DNA["Non-Human DNA"] = "A+"
for(var/datum/disease/D in self.data["viruses"])
var/datum/disease/newVirus = new D.type(D)
var/datum/disease/newVirus = D.Copy()
blood_prop.viruses += newVirus
newVirus.holder = blood_prop
/*
if(T.density==0)
newVirus.spread_type = CONTACT_FEET
else
newVirus.spread_type = CONTACT_HANDS
*/
else if(istype(self.data["donor"], /mob/living/carbon/alien))
var/obj/effect/decal/cleanable/xenoblood/blood_prop = locate() in T
if(!blood_prop)
blood_prop = new(T)
blood_prop.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*"
for(var/datum/disease/D in self.data["viruses"])
var/datum/disease/newVirus = new D.type(D)
var/datum/disease/newVirus = D.Copy()
blood_prop.viruses += newVirus
newVirus.holder = blood_prop
/*
if(T.density==0)
newVirus.spread_type = CONTACT_FEET
else
newVirus.spread_type = CONTACT_HANDS
*/
return
/* Must check the transfering of reagents and their data first. They all can point to one disease datum.
@@ -118,6 +118,28 @@
var/list/data = list("viruses"= list(F))
reagents.add_reagent("blood", 20, data)
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion
name = "Epiglottis virion culture bottle"
desc = "A small bottle. Contains Epiglottis virion culture in synthblood medium."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle3"
New()
..()
var/datum/disease/F = new /datum/disease/advance/heal(0)
var/list/data = list("viruses"= list(F))
reagents.add_reagent("blood", 20, data)
/obj/item/weapon/reagent_containers/glass/bottle/liver_enhance_virion
name = "Liver enhancement virion culture bottle"
desc = "A small bottle. Contains liver enhancement virion culture in synthblood medium."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle3"
New()
..()
var/datum/disease/F = new /datum/disease/advance/voice_change(0)
var/list/data = list("viruses"= list(F))
reagents.add_reagent("blood", 20, data)
/obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat
name = "Pierrot's Throat culture bottle"
desc = "A small bottle. Contains H0NI<42 virion culture in synthblood medium."
+9 -1
View File
@@ -48,6 +48,14 @@ Stuff which is in development and not yet visible to players or just code relate
should be listed in the changelog upon commit tho. Thanks. -->
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
<div class="commit sansserif">
<h2 class="date">25 November 2012</h2>
<h3 class="author">Giacom updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added new very high level symptoms which are only obtainable in the virus crate. Virus crate will also come with mutagen.</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">23 November 2012</h2>
<h3 class="author">Giacom updated:</h3>
@@ -57,7 +65,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
<li class="rscadd">AIs in intellicards can no longer move their camera. This will limit them in ability but without making creating and carding an AI to have as a personel door opener impossible.</li>
<li class="rscadd">Telecommunication Busses can now be set to change the frequency of a signal. (Allowing you to say.. set the command channel to broadcast to the common channel).</li>
<li class="rscadd">Telecommunication was changed to be more effecient. Because of this, Relays don't need a broadcaster or a receiver and you can setup a relay on it's own. You can still disable sending and or receiving from the relay's interface.</li>
/ul>
</ul>
<h3 class="author">Zelacks updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Plant Analysers now work on seed bags.</li>