29ecfa47bf
GENETICS
The random hexadecimal rng game has been replaced with gene sequencing from goon.
Adds mutation activators and mutators
You can now store mutations
Everyone now has their own set of unique mutations
Limited mutations per person to 8 (including one always being monkey)
Adds race specific mutations (See fire breathing for lizads)
You can inspect discovered mutations, undiscovered mutations use an alias to recognize them by
Adds a sequence analyzer. Can be used to scan someones genes sequence. Useful for determing what mutations they can safely have and or collecting data for very difficult sequences
Adds mutation combining. It's currently only RADIOACTIVE + STRONG = HULK (So yes you will now need 2 mutations for to get hulk)
Adds several other mutations. Telepathy, firebreath, glowy, radioactive and strength
cl Time-Green
add: Goon genetics!
add: More mutations! Fire breath for lizards! Radioactive! Telepathy! Glowy! Strength, though its cosmetic and should be combined with radioactivity instead! Fiery sweat!
add: Adds void magnet mutation by @tralezab !
/cl
76 lines
2.6 KiB
Plaintext
76 lines
2.6 KiB
Plaintext
/datum/round_event_control/disease_outbreak
|
|
name = "Disease Outbreak"
|
|
typepath = /datum/round_event/disease_outbreak
|
|
max_occurrences = 1
|
|
min_players = 10
|
|
weight = 5
|
|
|
|
/datum/round_event/disease_outbreak
|
|
announceWhen = 15
|
|
|
|
var/virus_type
|
|
|
|
var/max_severity = 3
|
|
|
|
|
|
/datum/round_event/disease_outbreak/announce(fake)
|
|
priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak7.ogg')
|
|
|
|
/datum/round_event/disease_outbreak/setup()
|
|
announceWhen = rand(15, 30)
|
|
|
|
|
|
/datum/round_event/disease_outbreak/start()
|
|
var/advanced_virus = FALSE
|
|
max_severity = 3 + max(FLOOR((world.time - control.earliest_start)/6000, 1),0) //3 symptoms at 20 minutes, plus 1 per 10 minutes
|
|
if(prob(20 + (10 * max_severity)))
|
|
advanced_virus = TRUE
|
|
|
|
if(!virus_type && !advanced_virus)
|
|
virus_type = pick(/datum/disease/dnaspread, /datum/disease/advance/flu, /datum/disease/advance/cold, /datum/disease/brainrot, /datum/disease/magnitis)
|
|
|
|
for(var/mob/living/carbon/human/H in shuffle(GLOB.alive_mob_list))
|
|
var/turf/T = get_turf(H)
|
|
if(!T)
|
|
continue
|
|
if(!is_station_level(T.z))
|
|
continue
|
|
if(!H.client)
|
|
continue
|
|
if(H.stat == DEAD)
|
|
continue
|
|
if(H.has_trait(TRAIT_VIRUSIMMUNE)) //Don't pick someone who's virus immune, only for it to not do anything.
|
|
continue
|
|
var/foundAlready = FALSE // don't infect someone that already has a disease
|
|
for(var/thing in H.diseases)
|
|
foundAlready = TRUE
|
|
break
|
|
if(foundAlready)
|
|
continue
|
|
|
|
var/datum/disease/D
|
|
if(!advanced_virus)
|
|
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work.
|
|
if(!H.dna || (H.has_trait(TRAIT_BLIND))) //A blindness disease would be the worst.
|
|
continue
|
|
D = new virus_type()
|
|
var/datum/disease/dnaspread/DS = D
|
|
DS.strain_data["name"] = H.real_name
|
|
DS.strain_data["UI"] = H.dna.uni_identity
|
|
DS.strain_data["SE"] = H.dna.mutation_index
|
|
else
|
|
D = new virus_type()
|
|
else
|
|
D = new /datum/disease/advance/random(max_severity, max_severity)
|
|
D.carrier = TRUE
|
|
H.ForceContractDisease(D, FALSE, TRUE)
|
|
|
|
if(advanced_virus)
|
|
var/datum/disease/advance/A = D
|
|
var/list/name_symptoms = list() //for feedback
|
|
for(var/datum/symptom/S in A.symptoms)
|
|
name_symptoms += S.name
|
|
message_admins("An event has triggered a random advanced virus outbreak on [ADMIN_LOOKUPFLW(H)]! It has these symptoms: [english_list(name_symptoms)]")
|
|
log_game("An event has triggered a random advanced virus outbreak on [key_name(H)]! It has these symptoms: [english_list(name_symptoms)]")
|
|
break
|