mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 04:57:12 +01:00
Updates to Epidemic and virology:
- Vira now take a few minutes before they cause any symptoms at all to the infectee. This also increases the life time of vira a bit. - In Epidemic, the heads now get a Command Report explaining the situation. However, the crew itself must not be notified of the events. - Epidemic now has a time limit(currently 90 minutes). If the crew is not cured by that time, the station will be destroyed by an inbound cruiser.
This commit is contained in:
@@ -113,7 +113,7 @@ proc/airborne_can_reach(turf/source, turf/target)
|
||||
var/infectionchance = 10
|
||||
var/speed = 1
|
||||
var/spreadtype = "Blood" // Can also be "Airborne"
|
||||
var/stage = 1
|
||||
var/stage = 0
|
||||
var/stageprob = 10
|
||||
var/dead = 0
|
||||
var/clicks = 0
|
||||
@@ -225,7 +225,7 @@ proc/airborne_can_reach(turf/source, turf/target)
|
||||
if(mob.reagents.has_reagent("virusfood"))
|
||||
mob.reagents.remove_reagent("virusfood",0.1)
|
||||
clicks += 10
|
||||
if(clicks > stage*100 && prob(10))
|
||||
if(clicks > (stage+1)*100 && prob(10))
|
||||
if(stage == 4)
|
||||
var/datum/disease2/resistance/res = new /datum/disease2/resistance(src)
|
||||
src.cure(mob)
|
||||
@@ -246,13 +246,13 @@ proc/airborne_can_reach(turf/source, turf/target)
|
||||
if(stage>1)
|
||||
E = effects[1]
|
||||
E.effect.deactivate(mob)
|
||||
if(stage>2)
|
||||
if(stage>=2)
|
||||
E = effects[2]
|
||||
E.effect.deactivate(mob)
|
||||
if(stage>3)
|
||||
if(stage>=3)
|
||||
E = effects[3]
|
||||
E.effect.deactivate(mob)
|
||||
if(stage>4)
|
||||
if(stage>=4)
|
||||
E = effects[4]
|
||||
E.effect.deactivate(mob)
|
||||
|
||||
@@ -272,6 +272,7 @@ proc/airborne_can_reach(turf/source, turf/target)
|
||||
disease.spreadtype = spreadtype
|
||||
disease.stageprob = stageprob
|
||||
disease.antigen = antigen
|
||||
disease.uniqueID = uniqueID
|
||||
for(var/datum/disease2/effectholder/holder in effects)
|
||||
// world << "adding effects"
|
||||
var/datum/disease2/effectholder/newholder = new /datum/disease2/effectholder
|
||||
|
||||
@@ -8,6 +8,12 @@
|
||||
var/checkwin_counter =0
|
||||
var/finished = 0
|
||||
|
||||
var/cruiser_arrival
|
||||
|
||||
var/virus_name = ""
|
||||
|
||||
var/stage = 0
|
||||
|
||||
///////////////////////////
|
||||
//Announces the game type//
|
||||
///////////////////////////
|
||||
@@ -31,6 +37,51 @@
|
||||
|
||||
return 1
|
||||
|
||||
/datum/game_mode/epidemic/proc/cruiser_seconds()
|
||||
return (cruiser_arrival - world.time) / 10
|
||||
|
||||
////////////////////// INTERCEPT ////////////////////////
|
||||
/// OVERWRITE THE INTERCEPT WITH A QUARANTINE WARNING ///
|
||||
/////////////////////////////////////////////////////////
|
||||
|
||||
/datum/game_mode/epidemic/send_intercept()
|
||||
var/intercepttext = "<FONT size = 3 color='red'><B>CONFIDENTIAL REPORT</FONT><HR>"
|
||||
virus_name = "X-[rand(1,99)]™"
|
||||
intercepttext += "<B>Warning: Pathogen [virus_name] has been detected on [station_name()].</B><BR><BR>"
|
||||
intercepttext += "<B>Code violet quarantine of [station_name()] put under immediate effect.</B><BR>"
|
||||
intercepttext += "<B>Class [rand(2,5)] cruiser has been dispatched. ETA: [round(cruiser_seconds() / 60)] minutes.</B><BR>"
|
||||
intercepttext += "<BR><B><FONT size = 2 color='blue'>Instructions</FONT></B><BR>"
|
||||
intercepttext += "<B>* ELIMINATE THREAT WITH EXTREME PREJUDICE. [virus_name] IS HIGHLY CONTAGIOUS. INFECTED CREW MEMBERS MUST BE QUARANTINED IMMEDIATELY.</B><BR>"
|
||||
intercepttext += "<B>* [station_name()] is under QUARANTINE. Any vessels outbound from [station_name()] will be tracked down and destroyed.</B><BR>"
|
||||
intercepttext += "<B>* The existence of [virus_name] is highly confidential. To prevent a panic, only high-ranking staff members are authorized to know of its existence. Crew members that illegally obtained knowledge of [virus_name] are to be neutralized.</B><BR>"
|
||||
intercepttext += "<B>* A cure is to be researched immediately, but NanoTrasen intellectual property must be respected. To prevent knowledge of [virus_name] from falling into unauthorized hands, all medical staff that work with the pathogen must be enhanced with a NanoTrasen loyality implant.</B><BR>"
|
||||
|
||||
|
||||
for (var/obj/machinery/computer/communications/comm in world)
|
||||
if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
|
||||
var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc )
|
||||
intercept.name = "paper"
|
||||
intercept.info = intercepttext
|
||||
|
||||
comm.messagetitle.Add("Cent. Com. CONFIDENTIAL REPORT")
|
||||
comm.messagetext.Add(intercepttext)
|
||||
world << sound('commandreport.ogg')
|
||||
|
||||
/datum/game_mode/epidemic/proc/announce_to_kill_crew()
|
||||
var/intercepttext = "<FONT size = 3 color='red'><B>CONFIDENTIAL REPORT</FONT><HR>"
|
||||
intercepttext += "<FONT size = 2;color='red'><B>PATHOGEN [virus_name] IS STILL PRESENT ON [station_name()]. IN COMPLIANCE WITH NANOTRASEN LAWS FOR INTERSTELLAR SAFETY, EMERGENCY SAFETY MEASURES HAVE BEEN AUTHORIZED. ALL INFECTED CREW MEMBERS ON [station_name()] ARE TO BE NEUTRALIZED AND DISPOSED OF IN A MANNER THAT WILL DESTROY ALL TRACES OF THE PATHOGEN. FAILURE TO COMPLY WILL RESULT IN IMMEDIATE DESTRUCTION OF [station_name].</B></FONT><BR>"
|
||||
intercepttext += "<B>CRUISER WILL ARRIVE IN [round(cruiser_seconds()/60)] MINUTES</B><BR>"
|
||||
|
||||
for (var/obj/machinery/computer/communications/comm in world)
|
||||
if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
|
||||
var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc )
|
||||
intercept.name = "paper"
|
||||
intercept.info = intercepttext
|
||||
|
||||
comm.messagetitle.Add("Cent. Com. CONFIDENTIAL REPORT")
|
||||
comm.messagetext.Add(intercepttext)
|
||||
world << sound('commandreport.ogg')
|
||||
|
||||
|
||||
/datum/game_mode/epidemic/post_setup()
|
||||
var/list/crew = list()
|
||||
@@ -39,7 +90,6 @@
|
||||
|
||||
if(crew.len < 2)
|
||||
world << "\red There aren't enough players for this mode!"
|
||||
return
|
||||
|
||||
var/datum/disease2/disease/lethal = new
|
||||
lethal.makerandom(1)
|
||||
@@ -62,18 +112,24 @@
|
||||
continue
|
||||
H.virus2 = nonlethal.getcopy()
|
||||
|
||||
cruiser_arrival = world.time + (10 * 90 * 60)
|
||||
stage = 1
|
||||
|
||||
spawn (rand(waittime_l, waittime_h))
|
||||
send_intercept()
|
||||
|
||||
spawn(10 * 60 * 30)
|
||||
command_alert("Unknown pathogen detected in routine biological scans.", "Biohazard Alert")
|
||||
spawn(300)
|
||||
command_alert("Pathogen identified as level 7 biohazard. All crew, take precaution immediately. Avoid contact with other biological personnel when necessary. Initiate quarantine immediately.", "Biohazard Alert")
|
||||
|
||||
..()
|
||||
|
||||
|
||||
/datum/game_mode/epidemic/process()
|
||||
if(stage == 1 && cruiser_seconds() < 60 * 30)
|
||||
announce_to_kill_crew()
|
||||
stage = 2
|
||||
else if(stage == 2 && cruiser_seconds() <= 0)
|
||||
crew_lose()
|
||||
stage = 3
|
||||
|
||||
checkwin_counter++
|
||||
if(checkwin_counter >= 20)
|
||||
if(!finished)
|
||||
@@ -106,6 +162,30 @@
|
||||
else
|
||||
return 0
|
||||
|
||||
///////////////////////////////////////////
|
||||
///Handle crew failure(station explodes)///
|
||||
///////////////////////////////////////////
|
||||
/datum/game_mode/epidemic/proc/crew_lose()
|
||||
ticker.mode:explosion_in_progress = 1
|
||||
for(var/mob/M in world)
|
||||
if(M.client)
|
||||
M << 'Alarm.ogg'
|
||||
world << "\blue<b>Incoming missile detected.. Impact in 10..</b>"
|
||||
for (var/i=9 to 1 step -1)
|
||||
sleep(10)
|
||||
world << "\blue<b>[i]..</b>"
|
||||
sleep(10)
|
||||
enter_allowed = 0
|
||||
for(var/mob/M in world)
|
||||
if(M.client)
|
||||
spawn(0)
|
||||
M.client.station_explosion_cinematic()
|
||||
sleep(110)
|
||||
ticker.mode:station_was_nuked = 1
|
||||
ticker.mode:explosion_in_progress = 0
|
||||
return
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//Announces the end of the game with all relavent information stated//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user