/*
# Setting game variables to their starting value.
# First, customizable values.
*/<<set $population to 1000000>><<set $infected to 1000>><<set $recovered to 0>><<set $dead to 0>><<set $maxactions to 1>><<set $actions to 0>><<set $usualdayswait to 1>><<set $compliance to 1>><<set $infectionhealthmeasures to 1>><<set $recoveryhealthmeasures to 1>><<set $mortalityhealthmeasures to 1>><<set $money to 10000>>/*
# Values that technically can be changed but hardly affect the experience
*/<<set $playername to "Applicant">><<set $epidemicname to "Epidemic">>/*
# Fixed Values that shouldn't be changed.
*/<<set $susceptible to ($population - $infected - $recovered - $dead)>><<set $strikes to 0>><<set $days to 0>><<set $startdate to new Date()>><<set $pendingresearch to []>><<set $pendinglabtests to []>><<set $pendinghealthmeasures to []>><<set $dayswait to 1>>
<<set $reviewresearch to []>><<set $reviewlabtests to []>><<set $reviewhealthmeasures to []>><<set $lastresearch to []>><<set $lastlabtests to []>><<set $lasthealthmeasures to []>><<set $infectionmultiplier to 1>><<set $recoverymultiplier to 1>><<set $mortalitymultiplier to 1>><<set $researchdone to 0>><<set $labtestsdone to 0>><<set $healthmeasuresdone to 0>>/*
# Daily Value Changes
*/<<set $infections to $infected>><<set $recoveries to $recovered>><<set $deaths to $dead>><<set $R0change to 0>><<set $infectionratechange to 0>><<set $recoveryratechange to 0>><<set $mortalityratechange to 0>>/*
# Default Ruleset
*/
<<set $settingfluctuations to true>><<set $settingfluctuationvalue to 50>>
<<set $settingSIRmodel to true>>
<<set $settingcustomevents to false>>
/*
#Date Values
#$startdate uses the javascript Date() function to store the date when the program is run.
#$weekdays is an array that stores the days of the week.
#$months is an array that stores the months of the year.
#$monthdays is an array that stores how many days are in each month; Accounts for 29 days of February on leap years using a short if statement.
*/<<set $startdate to new Date()>>
<<set $weekdays to ["Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ]>>
<<set $months to ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]>>
<<set $monthdays to [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]>>
<<if ($startdate.getYear() / 4) == Math.trunc($startdate.getYear/4)>><<set $monthdays[1] to 29>><<else>><<set $monthdays[1] to 28>><</if>>
/*
# Date format for currentdatearray:
# ["Day of the Week", "Day of the Month", "Suffix", "Month", "Year", "Hour","Minute"]
#This array stores the data for ease of access. If statements are used to determine if the suffix should be "st","nd","rd" or "th". Single hours and minutes should have a 0 before. Single digit dates should have a 0 before but only in the shortdate format.
*/<<set $currentdatearray to [ $weekdays[$startdate.getDay()], $startdate.getDate(), "Suffix", $months[$startdate.getMonth()], $startdate.getFullYear(), $startdate.getHours(), $startdate.getMinutes() ]>>
<<if $currentdatearray[1] == "1" or $currentdatearray[1] == "21" or $currentdatearray[1] == "31">><<set $currentdatearray[2] to "st">><<elseif $currentdatearray[1] == "2" or $currentdatearray[1] == "22">><<set $currentdatearray[2] to "nd">><<elseif $currentdatearray[1] == "3" or $currentdatearray[1] == "23">><<set $currentdatearray[2] to "rd">><<else>><<set $currentdatearray[2] to "th">><</if>>
<<if $currentdatearray[5] < 10>><<set $currentdatearray[5] to ("0" + $currentdatearray[5])>><</if>>
<<if $currentdatearray[6] < 10>><<set $currentdatearray[6] to ("0" + $currentdatearray[6])>><</if>>/*
# $currentfulldate is used inside emails, $currentshortdate is used elsewhere.
*/<<set $currentfulldate to ($currentdatearray[0] +" " +$currentdatearray[1] +$currentdatearray[2] + " of " +$currentdatearray[3] +" " +$currentdatearray[4] +" at " +$currentdatearray[5] +":" +$currentdatearray[6])>>
<<if $currentdatearray[1] < 10>><<set $currentshortdate to ("0" +$currentdatearray[1] +"/" +(Math.trunc($months.indexOf($currentdatearray[3]))+1) +"/" +$currentdatearray[4])>><<else>><<set $currentshortdate to ($currentdatearray[1] +"/" +(Math.trunc($months.indexOf($currentdatearray[3]))+1) +"/" +$currentdatearray[4])>><</if>><<cacheaudio "email" "Assets/email.mp3">><<cacheaudio "strike" "Assets/strike.mp3">><<cacheaudio "money" "Assets/money.mp3">><<cacheaudio "type" "Assets/type.mp3">>/*
# Setup for Inbox Arrays
# First email from the CEO.
*/<<set $mailname to ["Application Result"]>><<set $mailsender to ["Michael.Robe@Epidemiological.com"]>><<set $mailshortdate to [$currentshortdate]>><<set $mailfulldate to [$currentfulldate]>><<set $mailread to [false]>><<set $newemail to true>>
<<goto Apply>>/*
# This email is found at the bottom of the Start passage, and is given as soon as the game starts.
*/[[Back to Inbox |Inbox]] <img src="Assets/Inbox.svg" class="smallicon"><<set $mailindex to $mailname.indexOf("Application Result")>><<set $mailread[$mailindex] to true>>
From: $mailsender[$mailindex]
Received on: $mailfulldate[$mailindex]
<h1>$mailname[$mailindex]</h1>
Dear <<textbox "$playername" $playername>>,
We have received your application letter and, after careful consideration, the team at Epidemiological would like to confirm the outcome of your application:
<p class=good>You got the position as Chief Epidemiologist at Epidemiological.</p>
I would not usually allow someone of your skill level to be hired for this position, however due to an abnormally low response rate by applicants and the urgency of an ongoing outbreak here at Immunopolis, an exception had to be made. Consider this a temporary position until a more qualified individual can be found, however if your skills impress me you might be considered for a permanent position at the company.
Starting tomorrow, you will receive a budget of 10,000<img src="Assets/Cytocoins.svg" class="smallicon"> (Cytokoins, the currency used here at Immunopolis) and if for any reason you drop below zero, you will receive a strike.
<p class=bad>As it stands, your performance will be put under the highest level of scrutiny. I will not hesitate to fire you if you get three strikes.</p>
Since you are currently not located at Immunopolis, you will be able to take up this position remotely from the comfort of your home computer. You are expected to start tomorrow at 9:00AM and you are expected to work weekends!
<p class=neutral>Your contract ends either, once you successfully eradicate the epidemic (Lower the Replication value and number of infected individuals below a certain threshold), or if I have to fire you. I will send you an email once your contract ends.</p>
I will see to it that someone will be in contact with you to explain your duties by tomorrow; I am far too busy for that.
If you have any questions, don't. Hesitate to ask, or ask someone else.
Michael.
<div style="border-top: black dashed 0.5vw;">
Michael Robe
Chief Executive Officer
Epidemiological
157 Louis Pasteur Avenue
Immunopolis
<div class="banner"><h1><img src="Assets/Epidemiological.png" class="companylogo">pidemiological</h1>
<h2>Cultured Discoveries, Epidemic Recoveries!</h2></div></div>/* This is a Comment
# Comments can run over multiple lines. Using comments also prevents new lines being printed on the passage. Hashtag is not necessary for a comment - I just like to put it in so I can easily tell at a glance what is a comment and what isn't.
*/[[Back to Settings|Settings Menu]]
<h1> H1 Heading </h1>
<h2>H2 Heading</h2>
<h3>H3 Heading</h3>
This is a normal paragraph<div class=good> Good thing happened</div><div class=neutral> Neutral thing happened </div><div class=bad> Bad thing happened </div>
<p class="susceptible">Susceptible Colour </p>
<p class="infected">Infected Colour </p>
<p class="recovered">Recovered Colour </p>
<p class="dead">Dead Colour </p>/*
# This is a letter; it is tagged with the "Letter" tag at the top. There is some CSS that automatically applies the right formatting for letters.
*/<div class="unread"><<button "Unread Letter">><</button>></div>
<div class="read"><<button "Read Letter">><</button>></div>
<<textbox "_textbox" "User Input">>
<<listbox "_listbox">><<optionsfrom ["Option 1","Option 2","Option 3"]>><</listbox>>
/*
# Images and Icons
*/
<div><img src="Assets/Epidemiological.png" class="companylogo"></div><div><img src="Assets/Dashboard.svg" class="bigicon"><img src="Assets/Debug.svg" class="bigicon"><img src="Assets/Health Measures.svg" class="bigicon"><img src="Assets/Hints.svg" class="bigicon"><img src="Assets/Lab Tests.svg" class="bigicon"><img src="Assets/Inbox.svg" class="bigicon"><img src="Assets/Research.svg" class="bigicon"></div>
<div><img src="Assets/Dashboard.svg" class="smallicon"><img src="Assets/Dead.svg" class="smallicon"><img src="Assets/Debug.svg" class="smallicon"><img src="Assets/Health Measures.svg" class="smallicon"><img src="Assets/Hints.svg" class="smallicon"><img src="Assets/Infected.svg" class="smallicon"><img src="Assets/Mail Read.svg" class="smallicon"><img src="Assets/Mail Unread.svg" class="smallicon"><img src="Assets/Recovered.svg" class="smallicon"><img src="Assets/Research.svg" class="smallicon"><img src="Assets/Strike Active.svg" class="smallicon"><img src="Assets/Strike Inactive.svg" class="smallicon"><img src="Assets/Susceptible.svg" class="smallicon"></div>
<div style="float:left; width:75vw;"><img src="Assets/Inbox.svg" class="bigicon"><h1>Inbox</h1></div><div style="float:right; width:18vw;">
[[Dashboard]] <img src="Assets/Dashboard.svg" class="smallicon">
Actions: $actions/$maxactions
<<set _num to $money>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon">
</div>/*
# Inbox will use parallel arrays to store information about emails. All emails will be printed (in the reverse order they were received) using a for loop. Emails are displayed as a button that takes you to the passage with that name.
*/<h2>Day: $days ($currentshortdate)</h2>
<<for _i to $mailname.length-1; _i > -1; _i-->><<set _passageid to $mailname[_i]>><<set _currentmail to ($mailname[_i] +" -- " +$mailsender[_i] +" -- " +$mailshortdate[_i])>><<if $mailread[_i] == false>><div class="unread"><<button _currentmail _passageid>><</button>></div><<else>><div class="read"><<button _currentmail _passageid>><</button>></div><</if>><</for>>
/*
# SFX
*/<<audio ":all" stop>><<if $newstrike == true>><<audio "strike" play>><<elseif $newmoney == true>><<audio "money" play>><<elseif $newemail == true>><<audio "email" play>><</if>><<set $newstrike to false>><<set $newemail to false>><<set $newmoney to false>>/*
# Dashboard Header
*/<div style="float:left; width:55vw;"><img src="Assets/Dashboard.svg" class="bigicon"><h1>Dashboard</h1></div><div style="float:right; width:18vw;">
[[Review]] <<if $reviewresearch.length == 0 and $reviewlabtests == 0 and $reviewhealthmeasures == 0>><img src="Assets/Hints Empty.svg" class="smallicon"><<else>><img src="Assets/Hints.svg" class="smallicon"><</if>>
Actions: $actions/$maxactions
<<set _num to $money>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon">
</div><div style="float:right; width:20vw;">
[[Inbox]] <<if $mailread.includes(false)>><img src="Assets/Mail Unread.svg" class="smallicon"><<else>><img src="Assets/Mail Read.svg" class="smallicon"><</if>>
Day: $days ($currentshortdate)
Strikes: $strikes/3 <<if $strikes is 0>><img src="Assets/Strike Inactive.svg" class="smallicon"><<else>><img src="Assets/Strike Active.svg" class="smallicon"><</if>><<if $strikes gte 2>><img src="Assets/Strike Active.svg" class="smallicon"><<else>><img src="Assets/Strike Inactive.svg" class="smallicon"><</if>><<if $strikes is 3>><img src="Assets/Strike Active.svg" class="smallicon"><<else>><img src="Assets/Strike Inactive.svg" class="smallicon"><</if>>
</div><div style="float:left; width:53vw;"><<if $days < 1>>You become enrolled to the staph list tomorrow.<<else>>You have $actions/$maxactions actions.<</if>>
<<if $days == 0>>[[Start First Day|Pass Time]] <img src="Assets/Dayend.svg" class="smallicon">
<p class="neutral">Wait until Tomorrow.</p><<else>><<if $actions > 0>>[[End Shift Early|Pass Time]] <<if $actions == $maxactions>><img src="Assets/Daystart.svg" class="smallicon"><<elseif $actions == 0>><img src="Assets/Dayend.svg" class="smallicon"><<else>><img src="Assets/Daymiddle.svg" class="smallicon"><</if>>
<p class="neutral">Progress time $dayswait day(s) and lose any actions.</p><<else>>[[End Shift|Pass Time]] <<if $actions == $maxactions>><img src="Assets/Daystart.svg" class="smallicon"><<elseif $actions == 0>><img src="Assets/Dayend.svg" class="smallicon"><<else>><img src="Assets/Daymiddle.svg" class="smallicon"><</if>>
<p class="neutral">Progress time $dayswait day(s) and replenish actions.</p><</if>><</if>><<if not ($days == 0)>>
[[Research]] <img src="Assets/Research.svg" class="smallicon"> <<if $pendingresearch.length > 0>> <p class="neutral">($pendingresearch.length Pending [[?|Pending Research]])</p><</if>>
Find out the nature of the pathogen or epidemic, and unlock new actions.
[[Lab Tests]] <img src="Assets/Lab Tests.svg" class="smallicon"> <<if $pendinglabtests.length > 0>> <p class="neutral">($pendinglabtests.length Pending [[?|Pending Lab Tests]])</p><</if>>
Find out how the pathogen reacts to various conditions to narrow it down.
[[Health Measures]] <img src="Assets/Health Measures.svg" class="smallicon"> <<if $pendinghealthmeasures.length > 0>> <p class="neutral">( $pendinghealthmeasures.length Pending [[?|Pending Health Measures]])</p><</if>>
Limit the spread of the infection, decrease mortality rate, or increase recovery rate of patients.<</if>>
</div><div style="float:left; width:33vw;">/*
# Calculates the percentage of the population that is infected, recovered and dead (rounded to 2 decimal places) and change in infected per day; takes into account recoveries and deaths. Also calculates R value.
*/<<if not ($days == 0)>><<set $percentsusceptible to Math.round(($susceptible / ($susceptible + $infected + $recovered + $dead))*10000)/100>><<set $percentinfected to Math.round(($infected / ($susceptible + $infected + $recovered + $dead))*10000)/100>><<set $percentrecovered to Math.round(($recovered / ($susceptible + $infected + $recovered + $dead))*10000)/100>><<set $percentdead to Math.round(($dead / ($susceptible + $infected +$recovered +$dead))*10000)/100>><<set $infectedchange to (($infections - $recoveries) - $deaths)>>/*
# Displays amounts of susceptible, infected, recovered and dead people. Brackets are used to denote increases, where if statements are used to find out if a + is required to denote an increase.
*/<h3><h2>$epidemicname:</h2>
Initial Population: <<set _num to ($susceptible + $infected + $recovered + $dead)>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>></h3><<if $researchdatabase["Contact Tracing"].completed == true>><div class="susceptible"><h3>Susceptible: $percentsusceptible%</h3>
<img src="Assets/Susceptible.svg" class="smallicon"> <<set _num to $susceptible>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>> (<<if $infections < 0>>+<</if>><<set _num to -$infections>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>>)</div><div class="infected"><h3>Infected: $percentinfected%</h3>
<img src="Assets/Infected.svg" class="smallicon"> <<set _num to $infected>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>> (<<if $infectedchange > 0>>+<</if>><<set _num to $infectedchange>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>>)</div><div class="recovered"><h3>Recovered: $percentrecovered%</h3>
<img src="Assets/Recovered.svg" class="smallicon"> <<set _num to $recovered>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>> (<<if $recoveries > 0>>+<</if>><<set _num to $recoveries>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>>)</div><div class="dead"><h3>Dead: $percentdead%</h3>
<img src="Assets/Dead.svg" class="smallicon"> <<set _num to $dead>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>> (<<if $deaths > 0>>+<</if>><<set _num to $deaths>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>>)</div><<else>><div class="susceptible"><h3>Susceptible: ?%</h3>
<img src="Assets/Susceptible.svg" class="smallicon"> Unknown </div><div class="infected"><h3>Infected: ?%</h3>
<img src="Assets/Infected.svg" class="smallicon"> Unknown </div><div class="recovered"><h3>Recovered: ?%</h3>
<img src="Assets/Recovered.svg" class="smallicon"> Unknown </div><div class="dead"><h3>Dead: ?%</h3>
<img src="Assets/Dead.svg" class="smallicon"> Unknown </div><</if>><</if>></div><div style="float:left; width:75vw;"><img src="Assets/Lab Tests.svg" class="bigicon"><h1>Lab Tests</h1></div><div style="float:right; width:18vw;">
[[Dashboard]] <img src="Assets/Dashboard.svg" class="smallicon">
Actions: $actions/$maxactions
<<set _num to $money>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon">
</div>/*
# List Box with all the biotests.
# Tests that are already pending are removed from the list, and tests that have already been correctly identified are also removed from the list. Also, tests that aren't unlocked are removed from the list too.
*/<<set $labtests to Object.keys($pathogendatabase[$pathogen]["Lab Tests"])>><<for _i to $labtests.length -1; _i >=0; _i-->><<set _found to false>><<for _j to 0; _j < $pendinglabtests.length; _j++>><<if $pendinglabtests[_j][0] == $labtests[_i]>><<set _found to true>><</if>><</for>><<for _j to 0; _j < Object.keys($labtestdatabase).length; _j++>><<if (($labtestdatabase[Object.keys($labtestdatabase)[_j]].unlocked == false) or ($labtestdatabase[Object.keys($labtestdatabase)[_j]].completed == true)) and Object.keys($labtestdatabase)[_j]==$labtests[_i]>><<set _found to true>><</if>><</for>><<if _found == true>><<set $labtests.deleteAt(_i)>><</if>><</for>>
<<if $labtests.length == 0>><p class="neutral">You do not have any Lab Tests you can do! Unlock some.</p>
<<else>><<listbox "$labtestchoice">><<optionsfrom $labtests>><</listbox>>
/*
# The following code makes the text dynamically change when selecting different options.
# It does so using Javascript by internally changing the value inside the <span> to the desired code, which runs whenever the listbox is changed.
*/<span id="labTestDesc"></span>
<<script>>
$(document).one(":passagerender", function (event) {
$(event.content).find("#labTestDesc").empty().wiki("Costs <<set _num to $labtestdatabase[$labtestchoice].cost>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src='Assets/Cytocoins.svg' class='smallicon'>, takes $labtestdatabase[$labtestchoice].delay day(s) to accomplish.\n<<if $actions > 0>>[[Send Email|Request Lab Test]]<<else>><div class='bad'>Not enough Actions Remain - Replenish them by ending your shift.</div><</if>>\n\n<h3><<print $labtestchoice>> Test:</h3>\n<<print $labtestdatabase[$labtestchoice].description>>\n\nProcedure:\n<<for _i to 0; _i < $labtestdatabase[$labtestchoice].procedure.length; _i++>>\n<<print _i + 1>>. <<print $labtestdatabase[$labtestchoice].procedure[_i]>><</for>>\n\n<<print $labtestdatabase[$labtestchoice].result>>");
$(event.content).find("#listbox-labtestchoice").on("change", function (event) {
$("#labTestDesc").fadeOut(150);
setTimeout(function () {
$("#labTestDesc").empty().wiki("Costs <<set _num to $labtestdatabase[$labtestchoice].cost>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src='Assets/Cytocoins.svg' class='smallicon'>, takes $labtestdatabase[$labtestchoice].delay day(s) to accomplish.\n<<if $actions > 0>>[[Send Email|Request Lab Test]]<<else>><div class='bad'>Not enough Actions Remain - Replenish them by ending your shift.</div><</if>>\n\n<h3><<print $labtestchoice>> Test:</h3>\n<<print $labtestdatabase[$labtestchoice].description>>\n\nProcedure:\n<<for _i to 0; _i < $labtestdatabase[$labtestchoice].procedure.length; _i++>>\n<<print _i + 1>>. <<print $labtestdatabase[$labtestchoice].procedure[_i]>><</for>>\n\n<<print $labtestdatabase[$labtestchoice].result>>").fadeIn(150);
}, 150);
});
});
<</script>><</if>><div style="float:left; width:75vw;"><img src="Assets/Health Measures.svg" class="bigicon"><h1>Health Measures</h1></div><div style="float:right; width:18vw;">
[[Dashboard]] <img src="Assets/Dashboard.svg" class="smallicon">
Actions: $actions/$maxactions
<<set _num to $money>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon">
</div><<if $researchdatabase["Impact Analysis"].completed == true>><h2><<print (Math.trunc($compliance * 10000)/100)>>% Public Compliance</h2><p class="infected">Health Measure effect on Infection: <<print (Math.trunc($infectionhealthmeasures * 10000)/100)>>% (<<print (Math.trunc((1 +($infectionhealthmeasures-1)*$compliance) * 10000)/100)>>%)</p>
<p class="recovered">Health Measure effect on Recovery: <<print (Math.trunc($recoveryhealthmeasures * 10000)/100)>>% (<<print (Math.trunc((1 +($recoveryhealthmeasures-1)*$compliance) * 10000)/100)>>%)</p>
<p class="dead">Health Measure effect on Mortality: <<print (Math.trunc($mortalityhealthmeasures * 10000)/100)>>% (<<print (Math.trunc((1 + ($mortalityhealthmeasures-1)*$compliance) * 10000)/100)>>%)</p><<else>><h2>?% Public Compliance</h2><p class="infected">Health Measure effect on Infection: ?% </p>
<p class="recovered">Health Measure effect on Recovery: ?% </p>
<p class="dead">Health Measure effect on Mortality: ?% </p><</if>>
/*
# List Box with all the health measures.
# Health Measures that are already pending are removed from the list, and Single-Use health measures that have been used are also removed from the list.
*/<<set $healthmeasures to Object.keys($pathogendatabase[$pathogen]["Health Measures"])>><<for _i to $healthmeasures.length -1; _i >=0; _i-->><<set _found to false>><<for _j to 0; _j < $pendinghealthmeasures.length; _j++>><<if $pendinghealthmeasures[_j][0] == $healthmeasures[_i]>><<set _found to true>><</if>><</for>><<for _j to 0; _j < Object.keys($healthmeasuredatabase).length; _j++>><<if (($healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_j]].unlocked == false) or ($healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_j]].completed == true and $healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_j]].type == "Single Use")) and Object.keys($healthmeasuredatabase)[_j]==$healthmeasures[_i]>><<set _found to true>><</if>><</for>><<if _found == true>><<set $healthmeasures.deleteAt(_i)>><</if>><</for>>
<<if $healthmeasures.length == 0>><p class="neutral">You do not have any Health Measures you can do! Unlock some.</p>
<<else>><<listbox "$healthmeasurechoice">><<optionsfrom $healthmeasures>><</listbox>>
/*
# Change "Simple Restrictions" with $healthmeasuretype to enable more interesting health measures user input.
# The following code makes the text dynamically change when selecting different options.
# It does so using Javascript by internally changing the value inside the <span> to the desired code, which runs whenever the listbox is changed.
*/<span id="healthMeasureDesc"></span>
<<script>>
$(document).one(":passagerender", function (event) {
$(event.content).find("#healthMeasureDesc").empty().wiki("Costs <<set _num to $healthmeasuredatabase[$healthmeasurechoice].cost>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src='Assets/Cytocoins.svg' class='smallicon'>, takes $healthmeasuredatabase[$healthmeasurechoice].delay day(s) to accomplish.\n<<if $actions > 0>>[[Send Email|Simple Restrictions]]<<else>><div class='bad'>Not enough Actions Remain - Replenish them by ending your shift.</div><</if>>\n\n<h3><<print ($healthmeasurechoice +' (' +$healthmeasuredatabase[$healthmeasurechoice].type +')')>></h3>\n<<print $healthmeasuredatabase[$healthmeasurechoice].description>>");
$(event.content).find("#listbox-healthmeasurechoice").on("change", function (event) {
$("#healthMeasureDesc").fadeOut(150);
setTimeout(function () {
$("#healthMeasureDesc").empty().wiki("Costs <<set _num to $healthmeasuredatabase[$healthmeasurechoice].cost>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src='Assets/Cytocoins.svg' class='smallicon'>, takes $healthmeasuredatabase[$healthmeasurechoice].delay day(s) to accomplish.\n<<if $actions > 0>>[[Send Email|Simple Restrictions]]<<else>><div class='bad'>Not enough Actions Remain - Replenish them by ending your shift.</div><</if>>\n\n<h3><<print ($healthmeasurechoice +' (' +$healthmeasuredatabase[$healthmeasurechoice].type +')')>></h3>\n<<print $healthmeasuredatabase[$healthmeasurechoice].description>>").fadeIn(150);
}, 150);
});
});
<</script>><</if>>/*
#Setting up starting date values
#$startdate uses the javascript Date() function to store the date when the program is run.
#$weekdays is an array that stores the days of the week.
#$months is an array that stores the months of the year.
#$monthdays is an array that stores how many days are in each month; Accounts for 29 days of February on leap years using a short if statement.
*/<<set $startdate to new Date()>>
<<set $weekdays to ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]>>
<<set $months to ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]>>
<<set $monthdays to [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]>>
<<if ($startdate.getYear() / 4) == Math.trunc($startdate.getYear/4)>><<set $monthdays[1] to 29>><<else>><<set $monthdays[1] to 28>><</if>>
/*
# Date format for currentdatearray:
# ["Day of the Week", "Day of the Month", "Suffix", "Month", "Year", "Hour","Minute"]
#This array stores the data for ease of access. If statements are used to determine if the suffix should be "st","nd","rd" or "th". Single digit hours and minutes should have a 0 before.
*/<<set $currentdatearray to [ $weekdays[$startdate.getDay()-1], $startdate.getDate(), "Suffix", $months[$startdate.getMonth()], $startdate.getFullYear(), $startdate.getHours(), $startdate.getMinutes() ]>>
<<if $currentdatearray[1] == "1" or $currentdatearray[1] == "21" or $currentdatearray[1] == "31">><<set $currentdatearray[2] to "st">><<elseif $currentdatearray[1] == "2" or $currentdatearray[1] == "22">><<set $currentdatearray[2] to "nd">><<elseif $currentdatearray[1] == "3" or $currentdatearray[1] == "23">><<set $currentdatearray[2] to "rd">><<else>><<set $currentdatearray[2] to "th">><</if>>
<<if $currentdatearray[5] < 10>><<set $currentdatearray[5] to ("0" + $currentdatearray[5])>><</if>>
<<if $currentdatearray[6] < 10>><<set $currentdatearray[6] to ("0" + $currentdatearray[6])>><</if>>/*
# $currentfulldate is used inside emails, $currentshortdate is used elsewhere.
*/<<set $currentfulldate to ($currentdatearray[0] +" the " +$currentdatearray[1] +$currentdatearray[2] + " of " +$currentdatearray[3] +" " +$currentdatearray[4] +" at " +$currentdatearray[5] +":" +$currentdatearray[6])>>
<<set $currentshortdate to ($currentdatearray[1] +"/" +(Math.trunc($months.indexOf($currentdatearray[3]))+1) +"/" +$currentdatearray[4])>>
<<print $currentfulldate>>
<<print $currentshortdate>><div style="float:left; width:75vw;"><img src="Assets/Debug.svg" class="bigicon"><h1>DEBUG</h1></div><div style="float:right; width:18vw;">
[[Dashboard]] <img src="Assets/Dashboard.svg" class="smallicon">
Actions: $actions/$maxactions
Cytocoins: $money<img src="Assets/Cytocoins.svg" class="smallicon">
</div>
<<print ($pathogendatabase[$pathogen].infectionrate*$infectionmultiplier) / ($pathogendatabase[$pathogen].recoveryrate*$recoverymultiplier)*($susceptible / ($susceptible + $infected + $recovered))>>
[[Test]]
[[Test 2]]
[[Default Date]]
[[Overwrite Values]]
[[Unlock All]]
[[Complete All]]
[[Check Remaining Unlocks]]
[[Emails]]
<div style="float:left; width:75vw;"><img src="Assets/Research.svg" class="bigicon"><h1>Research</h1></div><div style="float:right; width:18vw;">
[[Dashboard]] <img src="Assets/Dashboard.svg" class="smallicon">
Actions: $actions/$maxactions
<<set _num to $money>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon">
</div><<if $researchdatabase["Transmission Monitoring"].completed == true>>
<h2>R: <<print Math.trunc(($pathogendatabase[$pathogen].infectionrate*$infectionmultiplier) / ($pathogendatabase[$pathogen].recoveryrate*$recoverymultiplier)*($susceptible / ($susceptible + $infected + $recovered))*10000)/10000>></h2><p class="infected">Infection Rate: <<print $pathogendatabase[$pathogen].infectionrate*$infectionmultiplier>></p>
<p class="recovered">Recovery Rate: <<print $pathogendatabase[$pathogen].recoveryrate*$recoverymultiplier>></p>
<p class="dead">Mortality Rate: <<print $pathogendatabase[$pathogen].mortalityrate*$mortalitymultiplier>></p><<else>>
<h2>R: Unknown</h2><p class="infected">Infection Rate: Unknown</p>
<p class="recovered">Recovery Rate: Unknown</p>
<p class="dead">Mortality Rate: Unknown</p><</if>>/*
# List Box with all the research.
# Research that is already pending or is complete is removed from the list.
*/<<set $researches to Object.keys($pathogendatabase[$pathogen]["Research"])>><<for _i to $researches.length -1; _i >=0; _i-->><<set _found to false>><<for _j to 0; _j < $pendingresearch.length; _j++>><<if $pendingresearch[_j][0] == $researches[_i]>><<set _found to true>><</if>><</for>><<for _j to 0; _j < Object.keys($researchdatabase).length; _j++>><<if (($researchdatabase[Object.keys($researchdatabase)[_j]].unlocked == false) or ($researchdatabase[Object.keys($researchdatabase)[_j]].completed == true)) and Object.keys($researchdatabase)[_j]==$researches[_i]>><<set _found to true>><</if>><</for>><<if _found == true>><<set $researches.deleteAt(_i)>><</if>><</for>>
<<if $researches.length == 0>><p class="neutral">You do not have any Research you can do!</p>
<<else>><<listbox "$researchchoice">><<optionsfrom $researches>><</listbox>>
/*
# The following code makes the text dynamically change when selecting different options.
# It does so using Javascript by internally changing the value inside the <span> to the desired code, which runs whenever the listbox is changed.
*/<span id="researchDesc"></span>
<<script>>
$(document).one(":passagerender", function (event) {
$(event.content).find("#researchDesc").empty().wiki("Costs <<set _num to $researchdatabase[$researchchoice].cost>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src='Assets/Cytocoins.svg' class='smallicon'>, takes $researchdatabase[$researchchoice].delay day(s) to accomplish.\n<<if $actions > 0>>[[Send Email|Request Research]]<<else>><div class='bad'>Not enough Actions Remain - Replenish them by ending your shift.</div><</if>>\n\n<h3>$researchchoice</h3>\n<<print $researchdatabase[$researchchoice].description>>");
$(event.content).find("#listbox-researchchoice").on("change", function (event) {
$("#researchDesc").fadeOut(150);
setTimeout(function () {
$("#researchDesc").empty().wiki("Costs <<set _num to $researchdatabase[$researchchoice].cost>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src='Assets/Cytocoins.svg' class='smallicon'>, takes $researchdatabase[$researchchoice].delay day(s) to accomplish.\n<<if $actions > 0>>[[Send Email|Request Research]]<<else>><div class='bad'>Not enough Actions Remain - Replenish them by ending your shift.</div><</if>>\n\n<h3>$researchchoice</h3>\n<<print $researchdatabase[$researchchoice].description>>").fadeIn(150);
}, 150);
});
});
<</script>><</if>>/*
# MAKE SURE TO CHANGE ##### TO THE MAILID!!!
# This email is found at [Passage Name, Location and Prerequisite]
*/[[Back to Inbox |Inbox]] <img src="Assets/Inbox.svg" class="smallicon"><<set $mailindex to $mailname.indexOf("#####")>><<set $mailread[$mailindex] to true>>
From: $mailsender[$mailindex]
Received on: $mailfulldate[$mailindex]
<h1>$mailname[$mailindex]</h1>
[Greeting]
[Email Body]
[Valediction],
[Signature]
<div style="border-top: black dashed 0.5vw;">
[Full Name]
[Profession]
Epidemiological
157 Louis Pasteur Avenue
Immunopolis
<div class="banner"><h1><img src="Assets/Epidemiological.png" class="companylogo">pidemiological</h1>
<h2>Cultured Discoveries, Epidemic Recoveries!</h2></div></div>Elisabeth Aseigh (AKA ELISA, ELISA Assay)
Lab Technician
Age: 24
Silly but efficient lab assistantConstance Taylor Gionne (Con Tay Gionne - Contagion)
Possible ItalianEugene Splicer, AKA Reporter Gene, Gene Splicer
Just says stuff about news I guess.<<set $successful to false>>From: Michael.Robe@Epidemiological.com
Received on: $currentfulldate
<h1>You're Fired!</h1>
Dear $playername.
<p class="bad">You have failed to eradicate $epidemicname, and have received three strikes. I'm afraid I am going to have to let you go.</p>
Any amount of Cytokoins that were funded to you over the course of the epidemic is expected to be paid back to Epidemiological in full, out of your pocket. You currently owe <<set _num to (10000 - $money + ($strikes*2500))>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon"> (Whatever was still in your Epidemiological finance account has already been seized)
The pathogen was $pathogen.
<<for _i to 0; _i < $pathogendatabase[$pathogen].phylogeny.length; _i++>><<print $pathogendatabase[$pathogen].phylogeny[_i]>>, <</for>>$pathogen
<<print $pathogendatabase[$pathogen].description>>
Please click the following link: [[End Screen|End]]
I will make sure to hire a more suitable candidate for this position next time, instead.
Mike.
<div style="border-top: black dashed 0.5vw;">
Michael Robe
Chief Executive Officer
Epidemiological
157 Louis Pasteur Avenue
Immunopolis
<div class="banner"><h1><img src="Assets/Epidemiological.png" class="companylogo">pidemiological</h1>
<h2>Cultured Discoveries, Epidemic Recoveries!</h2></div></div><<set $successful to true>>From: Michael.Robe@Epidemiological.com
Received on: $currentfulldate
<h1>$epidemicname is Eradicated!</h1>
Congratulations, $playername!
<p class="good">You have stopped the outbreak!</p>
You have done so while receiving $strikes strike(s)!
You have spent <<set _num to (10000 - $money + ($strikes*2500))>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon">. Normally we would make you pay this back to us out of your own pocket but, considering how well you did, we can call it even.
The pathogen was $pathogen.
<<for _i to 0; _i < $pathogendatabase[$pathogen].phylogeny.length; _i++>><<print $pathogendatabase[$pathogen].phylogeny[_i]>>, <</for>>$pathogen
<<print $pathogendatabase[$pathogen].description>>
Please click the following link: [[End Screen|End]]
<p class="good">Thank you for your service, you make Epidemiological proud.</p>
Mike Robe.
<div style="border-top: black dashed 0.5vw;">
Michael Robe
Chief Executive Officer
Epidemiological
157 Louis Pasteur Avenue
Immunopolis
<div class="banner"><h1><img src="Assets/Epidemiological.png" class="companylogo">pidemiological</h1>
<h2>Cultured Discoveries, Epidemic Recoveries!</h2></div></div>Samuel & Isabella, AKA Sam & Ella
/*
# This email is found at the bottom of the Application Result passage, and is given when the application result letter is viewed for the first time.
*/[[Back to Inbox |Inbox]] <img src="Assets/Inbox.svg" class="smallicon"><<set $mailindex to $mailname.indexOf("Employee Training")>><<set $mailread[$mailindex] to true>>
From: $mailsender[$mailindex]
Received on: $mailfulldate[$mailindex]
<h1>$mailname[$mailindex]</h1>
Nice to meet you, $playername!
My name is Annabelle, but most people at Epidemiological just call me Anna or even Auntie so feel free to call me that instead. Mike was too busy to give you the proper training himself, so he asked me to show you the ropes. You can always read this email later, so feel free to come back to it if you need help.
In case you didn't know, Epidemiological are trying to control the recent <<textbox "$epidemicname" $epidemicname>> outbreak at Immunopolis.
You've likely already seen the "Dashboard". It is a place to access various facilities at Epidemiological, through the Research, Lab Tests and Health Measures links. Normally, on the Dashboard you can see statistics about how the epidemic is progressing, but you would have to research Contact Tracing first. Lastly, anything you have done can be reviewed by pressing the Review button in the top right of your Dashboard.
<h3>Research</h3>
*This is where you can get upgrades or complete specific requirements to unlock new Lab Tests or Health Measures.
*With certain upgrades, you can also view the Replication Value, which shows you how much the pathogen is replicating throughout the outbreak; an R value greater than 1 means the amount of infections is increasing, whereas a value smaller than 1 means the epidemic is dying out. Lower the R value by decreasing infection rates, or increasing recovery rates!
<h3>Lab Tests</h3>
*Ask our Lab technician to conduct various experiments , which will help you narrow down which type of pathogen you're dealing with. We suggest doing some external research on a search engine of your own, to find out which characteristics might correspond to which pathogen.
*Make sure you correctly remember the method for conducting the lab test; finding out which pathogen is causing the epidemic is required for development a vaccine.
<h3>Health Measures</h3>
*Health measures allow you to control the infection, mortality and recovery rates of the pathogen. These values directly affect the R value.
*The general public might become decreasingly compliant as you instate more health measures. Make sure you periodically do things to increase their compliance or your health measures won't be as effective.
Each department is run by different people, which I'm sure you will get to meet very soon. Get in contact by email if you want something done - We have a strict policy to reply to emails within 1 working day, so expect a response on your following shift. Make sure you check your emails often.
You will probably only get enough time to request $maxactions different action(s) from the department per shift, so make them count! You can replenish them by ending your shift, but I suggest spending them all first.
I hope this helps,
A. Biotic
<div style="border-top: black dashed 0.5vw;">
Annabelle Biotic, PhD in Microbiology
Lead Microbiologist
Epidemiological
157 Louis Pasteur Avenue
Immunopolis
<div class="banner"><h1><img src="Assets/Epidemiological.png" class="companylogo">pidemiological</h1>
<h2>Cultured Discoveries, Epidemic Recoveries!</h2></div></div><<set _emailgreetings to ["Hello.","Hello $playername!","Hi.","Hi $playername!","Greetings","$playername!","Hey.","Hey $playername!","Reece here,","Reece Urchin here,","What's up?","What's up $playername?","Wassup?","Whatya up to, $playername?","How you doin?"]>><<set _emailvaledictions to ["Thanks,\n\nReece","Goodbye,\n\nReece","Bye,\n\nReece","Don't hesitate to get in touch again,\n\nReece","I'll get back to work then,\n\nReece","Talk to you soon,\n\nReece","Reece.","Reece Urchin.","The Urchin's back to Researching","I'm back to Researching,\n\nReece Urchin","Reece Out!", "Peace out, Reece's out!","Peace,\n\nReece.","See you later alligator,\n\nReece.","Stay Awesome $playername,\n\nReece."]>>/*
# This email is found at the bottom of Pass Time, and is given, delayed, after conducting research.
*/[[Back to Inbox |Inbox]] <img src="Assets/Inbox.svg" class="smallicon"><<set $mailindex to $mailname.indexOf("Research Results")>><<if $mailread[$mailindex]==false>><<set $reecegreeting to random(0,14)>><<set $reecevalediction to random(0,14)>><</if>><<set $mailread[$mailindex] to true>>
From: $mailsender[$mailindex]
Received on: $mailfulldate[$mailindex]
<h1>$mailname[$mailindex]</h1>
<<print _emailgreetings[$reecegreeting]>>
I have done the research you requested. Here's the information you wanted:
<<for _i to 0; _i < $lastresearch.length; _i++>>
<h3 class="neutral"><<print $lastresearch[_i][0]>>:</h3><<if $lastresearch[_i][2] == false>><div class="bad"><<print $lastresearch[_i][1]>></div><<else>><div class="good"><<print $lastresearch[_i][1]>></div><</if>>
<</for>>
Remember, if you lose this email you can always review this information from your Dashboard.
<<print _emailvaledictions[$reecevalediction]>>
<div style="border-top: black dashed 0.5vw;">
Reece Urchin
Researcher
Epidemiological
157 Louis Pasteur Avenue
Immunopolis
<div class="banner"><h1><img src="Assets/Epidemiological.png" class="companylogo">pidemiological</h1>
<h2>Cultured Discoveries, Epidemic Recoveries!</h2></div></div><<set _emailgreetings to ["Hello.","Hello $playername!","Hi.","Hi $playername!","Greetings","$playername!","Hey.","Hey $playername!","Connie here,","Constance here,","I have some results for you, $playername.","Thank you for requesting your health measure,","Health Measure's done!","Ciao $playername!","Ciao,"]>><<set _emailvaledictions to ["Thanks,\n\nConstance Taylor Gionne.","Goodbye,\n\nConnie.","Bye,\n\nCon.","Don't hesitate to get in touch again,\n\nConstance Tay. Gionne.","I'll get back to work then,\n\nConnie Taylor Gionne.","Talk to you soon,\n\nConnie Tay.","Con.","Constance Taylor Gionne.","Connie.","Let me know if you need another Health Measure communicated!\n\nConnie.","Try to keep the public compliant,\n\nConnie.", "Let's put a stop to this,\n\nCon. Tay. Gionne.","Well, I'm gone!\n\n Constance Taylor Gionne","We're pros at this!\n\nCon.","Arrivederci!\n\nConstance."]>>/*
# This email is found at the bottom of Pass Time, and is given, delayed, after conducting a health measure.
*/[[Back to Inbox |Inbox]] <img src="Assets/Inbox.svg" class="smallicon"><<set $mailindex to $mailname.indexOf("Health Measure Results")>><<if $mailread[$mailindex]==false>><<set $conniegreeting to random(0,14)>><<set $connievalediction to random(0,14)>><</if>><<set $mailread[$mailindex] to true>>
From: $mailsender[$mailindex]
Received on: $mailfulldate[$mailindex]
<h1>$mailname[$mailindex]</h1>
<<print _emailgreetings[$conniegreeting]>>
I have communicated the Health Measure<<if $lasthealthmeasures.length > 1>>s<</if>> you requested. Here are the effects that I have observed:
<<for _i to 0; _i < $lasthealthmeasures.length; _i++>>
<h3 class="neutral"><<print $lasthealthmeasures[_i][0]>>:</h3>
<<if $lasthealthmeasures[_i][2] == "good">><div class="good"><<print $lasthealthmeasures[_i][3]>></div><<elseif $lasthealthmeasures[_i][2] == "bad">><div class="bad"><<print $lasthealthmeasures[_i][3]>></div><<else>><div class="neutral"><<print $lasthealthmeasures[_i][3]>></div>
<</if>><</for>>
Remember, if you lose this email you can always review this information from your Dashboard.
<<print _emailvaledictions[$connievalediction]>>
<div style="border-top: black dashed 0.5vw;">
Constance Taylor Gionne
Public Health Official
Epidemiological
157 Louis Pasteur Avenue
Immunopolis
<div class="banner"><h1><img src="Assets/Epidemiological.png" class="companylogo">pidemiological</h1>
<h2>Cultured Discoveries, Epidemic Recoveries!</h2></div></div><<set _emailgreetings to ["Hello.","Hello $playername!","Hi.","Hi $playername!","Greetings","$playername!","Hey.","Hey $playername!","Elisa here,","Elisabeth here,","I have some results for you, $playername.","Thank you for requesting your lab tests,","Lab Tests' done!","Hi, I'm in a rush to get more lab tests done!","I say Hello!"]>><<set _emailvaledictions to ["Thanks,\n\nELISA.","Goodbye,\n\nElisabeth.","Bye,\n\nELISA.","Don't hesitate to get in touch again,\n\nElisabeth Aseigh.","I'll get back to work then,\n\nElisabeth.","Talk to you soon,\n\nELISA.","ELISA.","Elisabeth Aseigh.","What do you think my favourite lab test is?\n\nELISA Aseigh.","Let me know if you need another lab test done!\n\nELISA.","See ya,\n\nELISA.", "Cya,\n\nELISA.","Welp, I'm off to do more lab tests.\n\nELISA.","Oops, I've got to go clean up a spillage.\n\nELISA.","I say Goodbye!\n\nElisabeth Aseigh."]>>/*
# This email is found at the bottom of Pass Time, and is given, delayed, after conducting a lab test.
*/[[Back to Inbox |Inbox]] <img src="Assets/Inbox.svg" class="smallicon"><<set $mailindex to $mailname.indexOf("Lab Test Results")>><<if $mailread[$mailindex]==false>><<set $elisagreeting to random(0,14)>><<set $elisavalediction to random(0,14)>><</if>><<set $mailread[$mailindex] to true>>
From: $mailsender[$mailindex]
Received on: $mailfulldate[$mailindex]
<h1>$mailname[$mailindex]</h1>
<<print _emailgreetings[$elisagreeting]>>
I have done the lab test<<if $lastlabtests.length > 1>>s<</if>> you requested using the steps you gave me. Here are the results:
<<for _i to 0; _i < $lastlabtests.length; _i++>>
<h3 class="neutral"><<print $lastlabtests[_i][0]>>:</h3><<if $lastlabtests[_i][2] == false>><div class="bad"><<print $lastlabtests[_i][1]>></div><<else>><div class="good"><<print $lastlabtests[_i][1] +".\nThe specimen is " + $lastlabtests[_i][3]+".">></div><</if>>
<</for>>
Remember, if you lose this email you can always review this information from your Dashboard.
<<print _emailvaledictions[$elisagreeting]>>
<div style="border-top: black dashed 0.5vw;">
Elisabeth Aseigh
Lab Technician
Epidemiological
157 Louis Pasteur Avenue
Immunopolis
<div class="banner"><h1><img src="Assets/Epidemiological.png" class="companylogo">pidemiological</h1>
<h2>Cultured Discoveries, Epidemic Recoveries!</h2></div></div>/*
# The adjective of the news article - Linked to the $newspeople array.
*/<<set $newsnameadjective to ["Rushing"]>>/*
# The noun in the news article - Linked to the $newsstory array.
*/<<set $newsnamenoun to ["Candidiasis"]>>/*
# A fictional person that will be the subject of the news story
*/<<set $newspeople to ["Candace да, beloved Russian athlete,"]>>/*
# A fictional scenario that occurs to the subject of the news story
*/<<set $newsstory to ["has managed to treat their candida infection."]>>/*
# Randomly assigns two indexes for selecting things from the array.
*/<<set _randomindex1 to random(0,$newsnameadjective.length - 1)>><<set _randomindex2 to random(0,$newsnamenoun.length - 1)>>/*
# Prints the news story.
*/<h3>$newsnameadjective[_randomindex1]) $newsnamenoun[_randomindex2]</h3>
$newspeople[_randomindex1] $newsstory[_randomindex2]
<div style="float:left; width:75vw;"><img src="Assets/Hints.svg" class="bigicon"><h1>Review</h1></div><div style="float:right; width:18vw;">
[[Dashboard]] <img src="Assets/Dashboard.svg" class="smallicon">
Actions: $actions/$maxactions
<<set _num to $money>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon">
</div>/*
# Research
*/<h3>Conducted Research</h3><<if $reviewresearch.length == 0>><div class="neutral">
No Research conducted yet!
</div><<else>>
<<set _researchnames to []>><<for _i to 0; _i < $reviewresearch.length; _i ++>><<set _researchnames.push($reviewresearch[_i][0])>><</for>><<listbox "$reviewresearchname">><<optionsfrom (_researchnames)>><</listbox>>
/*
# The following code makes the text dynamically change when selecting different options.
# It does so using Javascript by internally changing the value inside the <span> to the desired code, which runs whenever the listbox is changed.
*/<span id="conductedResearchResult"></span>
<<script>>
$(document).one(":passagerender", function (event) {
$(event.content).find("#conductedResearchResult").empty().wiki("<<if $reviewresearch[_researchnames.indexOf($reviewresearchname)][2] == false>><div class='bad'><<print $reviewresearch[_researchnames.indexOf($reviewresearchname)][1]>></div><<else>><div class='good'><<print $reviewresearch[_researchnames.indexOf($reviewresearchname)][1]>></div><</if>>");
$(event.content).find("#listbox-reviewresearchname").on("change", function (event) {
$("#conductedResearchResult").fadeOut(150);
setTimeout(function () {
$("#conductedResearchResult").empty().wiki("<<if $reviewresearch[_researchnames.indexOf($reviewresearchname)][2] == false>><div class='bad'><<print $reviewresearch[_researchnames.indexOf($reviewresearchname)][1]>></div><<else>><div class='good'><<print $reviewresearch[_researchnames.indexOf($reviewresearchname)][1]>></div><</if>>").fadeIn(150);
}, 150);
});
});
<</script>>
<</if>>/*
# Lab Tests
*/<h3>Conducted Lab Tests</h3><<if $reviewlabtests.length == 0>><div class="neutral">
No Lab Tests conducted yet!
</div><<else>>
<<set _labtestnames to []>><<for _i to 0; _i < $reviewlabtests.length; _i ++>><<set _labtestnames.push($reviewlabtests[_i][0] +" Test")>><</for>><<listbox "$reviewlabtestname">><<optionsfrom (_labtestnames)>><</listbox>>
/*
# The following code makes the text dynamically change when selecting different options.
# It does so using Javascript by internally changing the value inside the <span> to the desired code, which runs whenever the listbox is changed.
*/<span id="conductedLabTestResult"></span>
<<script>>
$(document).one(":passagerender", function (event) {
$(event.content).find("#conductedLabTestResult").empty().wiki("<<if $reviewlabtests[_labtestnames.indexOf($reviewlabtestname)][2] == true>><div class='good'><<print $reviewlabtests[_labtestnames.indexOf($reviewlabtestname)][1]>> \n<<print $reviewlabtests[_labtestnames.indexOf($reviewlabtestname)][3]>></div><<else>><div class='bad'>\n<<print $reviewlabtests[_labtestnames.indexOf($reviewlabtestname)][1]>></div><</if>>");
$(event.content).find("#listbox-reviewlabtestname").on("change", function (event) {
$("#conductedLabTestResult").fadeOut(150);
setTimeout(function () {
$("#conductedLabTestResult").empty().wiki("<<if $reviewlabtests[_labtestnames.indexOf($reviewlabtestname)][2] == true>><div class='good'><<print $reviewlabtests[_labtestnames.indexOf($reviewlabtestname)][1]>> \n<<print $reviewlabtests[_labtestnames.indexOf($reviewlabtestname)][3]>></div><<else>><div class='bad'>\n<<print $reviewlabtests[_labtestnames.indexOf($reviewlabtestname)][1]>></div><</if>>").fadeIn(150);
}, 150);
});
});
<</script>><</if>>/*
# Health Measures
*/<h3>Conducted Health Measures</h3><<if $reviewhealthmeasures.length == 0>><div class="neutral">
No Health Measures conducted yet!
</div><<else>>
<<set _healthmeasurenames to []>><<for _i to 0; _i < $reviewhealthmeasures.length; _i ++>><<set _healthmeasurenames.push($reviewhealthmeasures[_i][0])>><</for>><<listbox "$reviewhealthmeasurename">><<optionsfrom (_healthmeasurenames)>><</listbox>>
/*
# The following code makes the text dynamically change when selecting different options.
# It does so using Javascript by internally changing the value inside the <span> to the desired code, which runs whenever the listbox is changed.
*/<span id="conductedHealthMeasureResult"></span>
<<script>>
$(document).one(":passagerender", function (event) {
$(event.content).find("#conductedHealthMeasureResult").empty().wiki("<<if $reviewhealthmeasures[_healthmeasurenames.indexOf($reviewhealthmeasurename)][2] == 'good'>><div class='good'><<print $reviewhealthmeasures[_healthmeasurenames.indexOf($reviewhealthmeasurename)][3]>></div><<elseif $reviewhealthmeasures[_healthmeasurenames.indexOf($reviewhealthmeasurename)][2] == 'bad'>><div class='bad'><<print $reviewhealthmeasures[_healthmeasurenames.indexOf($reviewhealthmeasurename)][3]>></div><<else>><div class='neutral'><<print $reviewhealthmeasures[_healthmeasurenames.indexOf($reviewhealthmeasurename)][3]>></div><</if>>");
$(event.content).find("#listbox-reviewhealthmeasurename").on("change", function (event) {
$("#conductedHealthMeasureResult").fadeOut(150);
setTimeout(function () {
$("#conductedHealthMeasureResult").empty().wiki("<<if $reviewhealthmeasures[_healthmeasurenames.indexOf($reviewhealthmeasurename)][2] == 'good'>><div class='good'><<print $reviewhealthmeasures[_healthmeasurenames.indexOf($reviewhealthmeasurename)][3]>></div><<elseif $reviewhealthmeasures[_healthmeasurenames.indexOf($reviewhealthmeasurename)][2] == 'bad'>><div class='bad'><<print $reviewhealthmeasures[_healthmeasurenames.indexOf($reviewhealthmeasurename)][3]>></div><<else>><div class='neutral'><<print $reviewhealthmeasures[_healthmeasurenames.indexOf($reviewhealthmeasurename)][3]>></div><</if>>").fadeIn(150);
}, 150);
});
});
<</script>><</if>>
/*
#When calling this function, always set the number of days you wish to progress to $dayswait. It defines how many days to simulate.
*/[[Dashboard]]
<<set $newstrike to false>>
<<set _newunlocks to false>>
<<set _pendingstrikes to []>>
<<set _pendingunlocks to [ [], [], [] ]>>
<<set _researchdone to false>>
<<set _labtestsdone to false>>
<<set _healthmeasuresdone to false>>
<<set $runninginfectedchange to 0>>
<<set $runninginfections to 0>>
<<set $runningrecoveries to 0>>
<<set $runningdeaths to 0>>
<<set _foundresearch to false>>
<<set _foundlabtest to false>>
<<set _foundhealthmeasure to false>>
<<for _i to 0; _i lt $dayswait; _i++>>/*
# Implementation of the S I R Model to calculate infection per day. Deaths are omitted from the model (They do not add up to the population), and expected recoveries are omitted for now.
*/<<set $expectedinfections to ($pathogendatabase[$pathogen].infectionrate*$infectionmultiplier*$infected*($susceptible/($susceptible+$infected+$recovered)))>>/*
# Implementation of the S I R model to calculate recoveries per day.
*/<<set $expectedrecoveries to ($pathogendatabase[$pathogen].recoveryrate*$recoverymultiplier*$infected)>>/*
# Calculation of deaths per day.
*/<<set $expecteddeaths to ($pathogendatabase[$pathogen].mortalityrate*$mortalitymultiplier*$infected)>>/*
# Adds random fluctuations to infections, recoveries and deaths value, so they can be up to 50% less or up to 50% more than expected. Then, any decimal value is run randomly to decide if 1 should be added to the value or not.
*/<<if $settingfluctuations is true>><<set $infections to ($expectedinfections * (random((100-$settingfluctuationvalue),(100+$settingfluctuationvalue))/100))>><<set $recoveries to ($expectedrecoveries * (random((100-$settingfluctuationvalue),(100+$settingfluctuationvalue))/100))>><<set $deaths to ($expecteddeaths * (random((100-$settingfluctuationvalue),(100+$settingfluctuationvalue))/100))>>
<<else>><<set $infections to $expectedinfections>><<set $recoveries to $expectedrecoveries>><<set $deaths to $expecteddeaths>><</if>>
<<if ($infections - Math.trunc($infections))*100 gte random(0,100)>><<set $infections to $infections + 1>><</if>><<if ($recoveries - Math.trunc($recoveries))*100 gte random(0,100)>><<set $recoveries to $recoveries + 1>><</if>><<if ($deaths - Math.trunc($deaths))*100 gte random(0,100)>><<set $deaths to $deaths + 1>><</if>>/*
# Truncates the new infections. Adds them to the current infected removing that amount of susceptible people. If infections are greater than healthy people, everyone gets infected.
*/<<set $infections to Math.trunc($infections)>><<if $infections > $susceptible>><<set $infections to $susceptible>><</if>><<set $infected to $infected + $infections>><<set $susceptible to $susceptible - $infections>>/*
# Truncates the new recoveries. Adds them to the current recovered removing that amount of infected people. If recoveries are greater than infected people, everyone recovers.
*/<<set $recoveries to Math.trunc($recoveries)>><<if $recoveries > $infected>><<set $recoveries to $infected>><</if>><<set $recovered to $recovered + $recoveries>><<set $infected to $infected - $recoveries>>/*
# Rounds up the new deaths, adds them to the current dead removing that amount of infected people. If deaths are greater than infected people, everyone dies.
*/<<set $deaths to Math.trunc($deaths)>><<if $deaths > $infected>><<set $deaths to $infected>><</if>><<set $dead to $dead + $deaths>><<set $infected to $infected - $deaths>>/*
# Change in infected per day; takes into account recoveries and deaths.
*/<<set $infectedchange to ($infections - ($recoveries + $deaths))>>/*
# Running infections, recoveries and deaths - accounts for the recoveries over the whole period of time to progress, not just the last 1 day.
*/<<set $runninginfections to $runninginfections + $infections>>
<<set $runninginfectedchange to $runninginfectedchange + $infectedchange>>
<<set $runningrecoveries to $runningrecoveries + $recoveries>>
<<set $runningdeaths to $runningdeaths + $deaths>>/*
# UPDATING THE DATE CORRECTLY
#Increases day counter by 1.
*/<<set $days to $days + 1>>/*
#Increase weekdays by 1; if it is greater than 6 (there are 7 weekdays including index 0) set it back to 0.
*/<<if $currentdatearray[0] == "Saturday">>
<<set $currentdatearray[0] to "Sunday">>
<<else>>
<<set $currentdatearray[0] to $weekdays[$weekdays.indexOf($currentdatearray[0])+1]>>
<</if>>/*
#Increase date by 1. If it is greater than the days in the month, set it to 1 and increase month by 1. If month is greater than 11 (12 months including index 0) set it to 0 and increase year by 1. If year is divisible by 4, set february to 29 days otherwise set it to 28.
*/<<set $currentdatearray[1] to $currentdatearray[1] + 1>><<if $currentdatearray[1] > ($monthdays[$months.indexOf($currentdatearray[3])])>><<set $currentdatearray[1] to 1>><<if $currentdatearray[3] == "December">><<set $currentdatearray[3] to "January">><<set $currentdatearray[4] to $currentdatearray[4] + 1>><<if ($currentdatearray[4]/4) == Math.trunc($currentdatearray[4]/4)>><<set $monthdays[1] to 29>><<else>><<set $monthdays[1] to 28>><</if>><<else>><<set $currentdatearray[3] to $months[($months.indexOf($currentdatearray[3]) + 1)]>><</if>><</if>>
/*
# Randomize the time to a random morning work hour.
*/<<set $currentdatearray[5] to random(9,11)>><<set $currentdatearray[6] to random(0,59)>>/*
# Changes the suffix and makes sure numbers have a 0 in front of them
*/<<if $currentdatearray[1] == "1" or $currentdatearray[1] == "21" or $currentdatearray[1] == "31">><<set $currentdatearray[2] to "st">><<elseif $currentdatearray[1] == "2" or $currentdatearray[1] == "22">><<set $currentdatearray[2] to "nd">><<elseif $currentdatearray[1] == "3" or $currentdatearray[1] == "23">><<set $currentdatearray[2] to "rd">><<else>><<set $currentdatearray[2] to "th">><</if>>
<<if $currentdatearray[5] < 10>><<set $currentdatearray[5] to ("0" + $currentdatearray[5])>><</if>>
<<if $currentdatearray[6] < 10>><<set $currentdatearray[6] to ("0" + $currentdatearray[6])>><</if>>/*
# $currentfulldate is used inside emails, $currentshortdate is used elsewhere.
*/<<set $currentfulldate to ($currentdatearray[0] +" " +$currentdatearray[1] +$currentdatearray[2] + " of " +$currentdatearray[3] +" " +$currentdatearray[4] +" at " +$currentdatearray[5] +":" +$currentdatearray[6])>>
<<if $currentdatearray[1] < 10>><<set $currentshortdate to ("0" +$currentdatearray[1] +"/" +(Math.trunc($months.indexOf($currentdatearray[3]))+1) +"/" +$currentdatearray[4])>><<else>><<set $currentshortdate to ($currentdatearray[1] +"/" +(Math.trunc($months.indexOf($currentdatearray[3]))+1) +"/" +$currentdatearray[4])>><</if>>/*
# Loop that progresses research by each day, and adds them to $lastresearch if they are complete.
# Change (4) to the index that the delay is stored at.
*/<<if not($pendingresearch.length == 0)>>
<<for _j to $pendingresearch.length-1; _j >= 0; _j-->>
<<set $pendingresearch[_j][3] to $pendingresearch[_j][3] -1>>
<<if $pendingresearch[_j][3] < 1>>
<<if _foundresearch == false>>
<<set $lastresearch to []>><<set _foundresearch to true>><</if>>
<<set $lastresearch.push($pendingresearch[_j])>><<set $pendingresearch.deleteAt(_j)>><</if>><</for>><</if>>/*
# Loop that progresses lab tests by each day, and adds them to $lastlabtests if they are complete.
# 4 is the index that the delay is stored at.
*/<<if not($pendinglabtests.length == 0)>>
<<for _j to $pendinglabtests.length-1; _j >= 0; _j-->>
<<set $pendinglabtests[_j][4] to $pendinglabtests[_j][4] -1>>
<<if $pendinglabtests[_j][4] < 1>>
<<if _foundlabtest == false>>
<<set $lastlabtests to []>><<set _foundlabtest to true>><</if>>
<<set $lastlabtests.push($pendinglabtests[_j])>><<set $pendinglabtests.deleteAt(_j)>><</if>><</for>><</if>>/*
# Loop that progresses health measures by each day, and adds them to $lasthealthmeasures if they are complete.
# 4 is the index that the delay is stored at.
*/<<if not($pendinghealthmeasures.length == 0)>>
<<for _j to $pendinghealthmeasures.length-1; _j >= 0; _j-->>
<<set $pendinghealthmeasures[_j][4] to $pendinghealthmeasures[_j][4] -1>>
<<if $pendinghealthmeasures[_j][4] < 1>>
<<if _foundhealthmeasure == false>>
<<set $lasthealthmeasures to []>><<set _foundhealthmeasure to true>><</if>>
<<set $lasthealthmeasures.push($pendinghealthmeasures[_j])>><<set $pendinghealthmeasures.deleteAt(_j)>><</if>><</for>><</if>>/*
#End For Loop
*/
<</for>>
<<set $infections to $runninginfections>><<set $infectedchange to $runninginfectedchange>><<set $recoveries to $runningrecoveries>><<set $deaths to $runningdeaths>><<set $actions to $maxactions>>
/*
# Generating new emails
# $last(x) refers to results of the most recent actions, whereas $pending(x) refers to actions that have not had results yet.
# If there is anything in $pending(x), the email needs to be re-generated with today's new date and shifted to the top of the list, and made unread. This is done by deleting the old listings in the mail arrays and recreating them.
# Research
# $lastresearch[_i][2] refers to if the research was correctly conducted.
*/<<for _i to 0; _i < $lastresearch.length; _i++>>
<<if $lastresearch[_i][2] == true>><<set $researchdatabase[$lastresearch[_i][0]].completed to true>><<script>>eval(variables().researchdatabase[variables().lastresearch[temporary().i][0]].effect)<</script>><<set $researchdatabase[$lastresearch[_i][0]].effect to "">><</if>>
<</for>>
<<if (_foundresearch == true) and not($lastresearch.length == 0)>>
<<if $mailname.includes("Research Results")>>
<<set _mailindex to $mailname.indexOf("Research Results")>>
<<set $mailname.deleteAt(_mailindex)>><<set $mailsender.deleteAt(_mailindex)>><<set $mailshortdate.deleteAt(_mailindex)>><<set $mailfulldate.deleteAt(_mailindex)>><<set $mailread.deleteAt(_mailindex)>>
<</if>>
<<set $mailname.push("Research Results")>><<set $mailsender.push("Reece.Urchin@Epidemiological.com")>><<set $mailshortdate.push($currentshortdate)>><<set $mailfulldate.push($currentfulldate)>><<set $mailread.push(false)>><<set $newemail to true>>
<</if>>/*
# Adds the results to the review research page, replacing any health measure that is currently there only if the test was incorrectly done.
*/<<for _i to 0; _i < $lastresearch.length; _i++>><<set _found to false>><<if $reviewresearch.length == 0>>
<<set $reviewresearch.push($lastresearch[_i])>><<else>><<for _j to 0; _j < $reviewresearch.length; _j++>><<if $lastresearch[_i][0] == $reviewresearch[_j][0]>><<set _found to true>>
<<set $reviewresearch.deleteAt(_j)>><<set $reviewresearch.push($lastresearch[_i])>>
<</if>><</for>><<if _found == false>><<set $reviewresearch.push($lastresearch[_i])>><</if>><</if>><</for>>/*
# Calculates which research should be unlocked
*/<<for _i to 0; _i < Object.keys($researchdatabase).length; _i++>><<for _j to $researchdatabase[Object.keys($researchdatabase)[_i]].requirement.length-1; _j >= 0; _j-->><<if eval($researchdatabase[Object.keys($researchdatabase)[_i]].requirement[_j]) == true>><<set $researchdatabase[Object.keys($researchdatabase)[_i]].requirement.deleteAt(_j)>><</if>><</for>><<if $researchdatabase[Object.keys($researchdatabase)[_i]].requirement.length == 0 and $researchdatabase[Object.keys($researchdatabase)[_i]].unlocked == false>><<set $researchdatabase[Object.keys($researchdatabase)[_i]].unlocked to true>><<set _newunlocks to true>><<set _pendingunlocks[0].push(Object.keys($researchdatabase)[_i])>><</if>><</for>><<set _researchdone to true>>/*
# Lab Tests
# $lastlabtests[_i][2] refers to if the lab test was correctly conducted.
*/<<if (_foundlabtest == true) and not($lastlabtests.length == 0)>>
<<if $mailname.includes("Lab Test Results")>>
<<set _mailindex to $mailname.indexOf("Lab Test Results")>>
<<set $mailname.deleteAt(_mailindex)>><<set $mailsender.deleteAt(_mailindex)>><<set $mailshortdate.deleteAt(_mailindex)>><<set $mailfulldate.deleteAt(_mailindex)>><<set $mailread.deleteAt(_mailindex)>>
<</if>>
<<set $mailname.push("Lab Test Results")>><<set $mailsender.push("Elisabeth.Aseigh@Epidemiological.com")>><<set $mailshortdate.push($currentshortdate)>><<set $mailfulldate.push($currentfulldate)>><<set $mailread.push(false)>><<set $newemail to true>>
<</if>>/*
# Adds the results to the review research page, replacing any identical test that is currently there only if the test was incorrectly done.
*/
<<for _i to 0; _i < $lastlabtests.length; _i++>>
<<if $lastlabtests[_i][2] == true>><<set $labtestdatabase[$lastlabtests[_i][0]].completed to true>><</if>><<set _found to false>><<if $reviewlabtests.length == 0>>
<<set $reviewlabtests.push($lastlabtests[_i])>><<else>><<for _j to 0; _j < $reviewlabtests.length; _j++>><<if $lastlabtests[_i][0] == $reviewlabtests[_j][0]>><<set _found to true>><<if ($reviewlabtests[_j][2]==false) and ($lastlabtests[_i][2]==true)>><<set $reviewlabtests.deleteAt(_j)>><<set $reviewlabtests.push($lastlabtests[_i])>><</if>><</if>><</for>><<if _found == false>><<set $reviewlabtests.push($lastlabtests[_i])>><</if>><</if>><</for>>
/*
# Calculates which lab tests should be unlocked
*/<<for _i to 0; _i < Object.keys($labtestdatabase).length; _i++>><<for _j to $labtestdatabase[Object.keys($labtestdatabase)[_i]].requirement.length-1; _j >= 0; _j-->><<if eval($labtestdatabase[Object.keys($labtestdatabase)[_i]].requirement[_j]) == true>><<set $labtestdatabase[Object.keys($labtestdatabase)[_i]].requirement.deleteAt(_j)>><</if>><</for>><<if $labtestdatabase[Object.keys($labtestdatabase)[_i]].requirement.length == 0 and $labtestdatabase[Object.keys($labtestdatabase)[_i]].unlocked == false>>
<<set $labtestdatabase[Object.keys($labtestdatabase)[_i]].unlocked to true>><<set _newunlocks to true>><<set _pendingunlocks[1].push(Object.keys($labtestdatabase)[_i])>><</if>><</for>><<set _labtestsdone to true>>
/*
# Health Measures
# $lasthealthmeasures[_i][4] refers to if the health measure was correctly conducted.
*/<<if (_foundhealthmeasure == true) and not($lasthealthmeasures.length == 0)>>
<<for _i to 0; _i < $lasthealthmeasures.length; _i++>>
<<if $lasthealthmeasures[_i][5] == true>><<set $healthmeasuredatabase[$lasthealthmeasures[_i][0]].completed to true>><</if>>
<<set $infectionhealthmeasures to $infectionhealthmeasures*$lasthealthmeasures[_i][1][0]>><<set $recoveryhealthmeasures to $recoveryhealthmeasures*$lasthealthmeasures[_i][1][1]>><<set $mortalityhealthmeasures to $mortalityhealthmeasures*$lasthealthmeasures[_i][1][2]>><<set $compliance to $compliance*$lasthealthmeasures[_i][1][3]>><</for>>
<<if $mailname.includes("Health Measure Results")>>
<<set _mailindex to $mailname.indexOf("Health Measure Results")>>
<<set $mailname.deleteAt(_mailindex)>><<set $mailsender.deleteAt(_mailindex)>><<set $mailshortdate.deleteAt(_mailindex)>><<set $mailfulldate.deleteAt(_mailindex)>><<set $mailread.deleteAt(_mailindex)>>
<</if>>
<<set $mailname.push("Health Measure Results")>><<set $mailsender.push("Constance-Taylor.Gionne@Epidemiological.com")>><<set $mailshortdate.push($currentshortdate)>><<set $mailfulldate.push($currentfulldate)>><<set $mailread.push(false)>><<set $newemail to true>>
<</if>>
<<if $compliance > 1>><<set $compliance to 1>><</if>>/*
# Adds the results to the review research page, replacing any health measure that is currently there only if the test was incorrectly done.
*/<<for _i to 0; _i < $lasthealthmeasures.length; _i++>><<set _found to false>><<if $reviewhealthmeasures.length == 0>>
<<set $reviewhealthmeasures.push($lasthealthmeasures[_i])>><<else>><<for _j to 0; _j < $reviewhealthmeasures.length; _j++>><<if $lasthealthmeasures[_i][0] == $reviewhealthmeasures[_j][0]>><<set _found to true>>
<<set $reviewhealthmeasures.deleteAt(_j)>><<set $reviewhealthmeasures.push($lasthealthmeasures[_i])>>
<</if>><</for>><<if _found == false>><<set $reviewhealthmeasures.push($lasthealthmeasures[_i])>><</if>><</if>><</for>>/*
# Calculates which health measures should be unlocked
*/<<for _i to 0; _i < Object.keys($healthmeasuredatabase).length; _i++>><<for _j to $healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_i]].requirement.length-1; _j >= 0; _j-->><<if eval($healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_i]].requirement[_j]) == true>><<set $healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_i]].requirement.deleteAt(_j)>><</if>><</for>><<if $healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_i]].requirement.length == 0 and $healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_i]].unlocked == false>><<set $healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_i]].unlocked to true>><<set _newunlocks to true>><<set _pendingunlocks[2].push(Object.keys($healthmeasuredatabase)[_i])>><</if>><</for>><<set _healthmeasuresdone to true>>/*
# Reset dayswait if it was changed.
*/<<set $dayswait to $usualdayswait>>/*
# Array that tracks most recent unlocks, so the user can be told.
*/
<<if _newunlocks == true>><<set $lastunlocks to _pendingunlocks>>
<<if $mailname.includes("New Unlocks")>>
<<set _mailindex to $mailname.indexOf("New Unlocks")>>
<<set $mailname.deleteAt(_mailindex)>><<set $mailsender.deleteAt(_mailindex)>><<set $mailshortdate.deleteAt(_mailindex)>><<set $mailfulldate.deleteAt(_mailindex)>><<set $mailread.deleteAt(_mailindex)>>
<</if>>
<<set $mailname.push("New Unlocks")>><<set $mailsender.push("Annabelle.Biotic@Epidemiological.com")>><<set $mailshortdate.push($currentshortdate)>><<set $mailfulldate.push($currentfulldate)>><<set $mailread.push(false)>><<set $newemail to true>>
<</if>>
<</if>>
/*
# Emails that are received at various time points.
# The player receives a new email from the teacher after passing time once.
*/<<if not $mailname.includes("Employee Training")>><<set $mailname.push("Employee Training")>><<set $mailsender.push("Annabelle.Biotic@Epidemiological.com")>><<set $mailshortdate.push($currentshortdate)>><<set $mailfulldate.push($currentfulldate)>><<set $mailread.push(false)>><<set $newemail to true>><</if>>/*
# Multiplier which affects the rate of infection, recovery and mortality, based on current health measures in place. How much it affects the pathorate is proportional to the compliance.
*/<<set $infectionmultiplier to (1+(($infectionhealthmeasures-1)*$compliance))>><<set $recoverymultiplier to (1+(($recoveryhealthmeasures-1)*$compliance))>><<set $mortalitymultiplier to (1+(($mortalityhealthmeasures-1)*$compliance))>>/*
# Strike System
*/<<if $money < 0>><<set $strikes to $strikes + 1>><<set $money to $money +2500>><<set $newstrike to true>><<set $pendingstrikes.push("You spent more money than you had access to! I have reimbursed you, but do not spend more money than you have access to, again!")>><</if>>
<<if $newstrike == true>><<set $laststrikes to _pendingstrikes>>
<</if>>/*
# The if statement fixes a really weird bug where the program would progress to the dashboard before calculations were made.
*/<<if _researchdone == true and _labtestsdone == true and _healthmeasuresdone == true>><<if (($pathogendatabase[$pathogen].infectionrate*$infectionmultiplier) / ($pathogendatabase[$pathogen].recoveryrate*$recoverymultiplier)*($susceptible / ($susceptible + $infected + $recovered)) * $infected < 100) and (($pathogendatabase[$pathogen].infectionrate*$infectionmultiplier) / ($pathogendatabase[$pathogen].recoveryrate*$recoverymultiplier)*($susceptible / ($susceptible + $infected + $recovered)) < 1) and ($infected < 1000) or ($infected == 0)>><<goto "Game Success">><<elseif $strikes >= 3>><<goto "Game Failure">><<else>><<goto Dashboard>><</if>><</if>>
[[DEBUG]]
Healthy:
<<textbox "$susceptible" $susceptible>>
Infected:
<<textbox "$infected" $infected>>
Additional Infections:
<<textbox "$infections" $infections>>
Recovered:
<<textbox "$recovered" $recovered>>
Additional Recoveries:
<<textbox "$recoveries" $recoveries>>
Dead:
<<textbox "$dead" $dead>>
Additional Deaths:
<<textbox "$deaths" $deaths>>
[[Integerify]]<<set $susceptible to Math.trunc($susceptible)>>
<<set $infected to Math.trunc($infected)>>
<<set $infections to Math.trunc($infections)>>
<<set $recovered to Math.trunc($recovered)>>
<<set $recoveries to Math.trunc($recoveries)>>
<<set $dead to Math.trunc($dead)>>
<<set $deaths to Math.trunc($deaths)>>
<<goto Dashboard>>Reece Urchin (Researching)Michael Robe, AKA Mike Robe
CEO of Epidemiological
Age: 38
Strict and always busy (Nobody knows what he is so busy doing, though)Doctor Annabelle Biotic, AKA A. Biotic, Anna Biotic and Auntie Biotic.
Friendly face at Epidemiological, PhD in Microbiology
Age: 45
She is the kind auntie personality everyone wishes they had.<h2>Accessibility Settings</h2><h3>Colour Scheme:</h3> <<listbox "$settingaccessibility" autoselect>><<option "Dark">><<option "Light">><<option "Dyslexia">><<option "Colourblind">><</listbox>> [[Test Style|Accessibility Test]]
Changes the colour scheme of the program when selected. Default: Dark
<h2>Game Settings (Reset to default when page is reloaded)</h2><h3>Fluctuations:</h3> <<checkbox "$settingfluctuations" false true checked>>
Checked: allow infections, recoveries and deaths to randomly fluctuate every day. (Default: Checked)
<h3>Fluctuation Value:</h3> <<textbox "$settingfluctuationvalue" "50">>
The minimum/maximum percentage the values can fluctuate by. (Default: 50)
<h3>SIR model:</h3> <<checkbox "$settingSIRmodel" false true checked>>
Checked: Use SIR model, Unchecked: Use SI model (Unimplemented). Changes how strike system and win conditions work, too. (Default: Checked)
<h3>Custom Events:</h3> <<checkbox "$settingcustomevents" false true>>
Checked: Enables custom events (Unimplemented). (Default: Unchecked)
[[Confirm Settings|Apply]]
<div class="banner"><h1><img src="Assets/Epidemiological.png" class="companylogo">pidemiological</h1>
<h2>Cultured Discoveries, Epidemic Recoveries!</h2></div>
Epidemiological is a (fictional) Epidemiology company situated in the (also fictional) Immunopolis, population of <<set _num to $population>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>> people.
Your role as the Chief Epidemiologist working for the company:
*Find out which contagious agent is causing the Epidemic, through research or laboratory tests.
*Manage public health through health measures and public service announcements.
*Don't make too many mistakes and prevent the outbreak quickly.
<div class="neutral">It is recommended that you have some knowledge of Third Year Microbiology for this position.</div>/*
# Checks which difficulty is being played using if statements and an array containing the settings values. Just to inform user they are playing on another difficulty.
*/<<set $settingfluctuationvalue to Math.trunc($settingfluctuationvalue)>><<if $settingfluctuations is true and $settingfluctuationvalue is 50 and $settingSIRmodel is true and $settingcustomevents is false>><<set $modetype to "Normal Mode">><<elseif $settingfluctuations is false and $settingSIRmodel is false and $settingcustomevents is true>><<set $modetype to "Hard Mode">><<else>><<set $modetype to "Custom Mode">><</if>>
[[Submit Job Application|Database]] /*($modetype - [[Settings|Settings Menu]])*/<<if $strikes < 3>><<set $strikes to ($strikes + 1)>><</if>>
<<goto Dashboard>><<audio "type" play>>/*
# The user "writes" an email with the procedure of the conducted test; if it is correct then the user will receive a test result the following day.
# A "for loop" is used to generate as many listboxes as there are steps to the procedure; since "for loops" are very finicky in twine when using _i in variables in each iteration,_variablename is used to fix a bug. The procedure is shuffled in the listbox.
*/[[Cancel Writing Email|Lab Tests]]
To: Elisabeth.Aseigh@Epidemiological.com
<h1>Lab Test Request</h1>
Greetings,
I wanted to request that you conduct a $labtestchoice test on the isolated $epidemicname bacteria. This would involve the following procedure:
<<set $procedurequiz to []>><<set _tempprocedure to []>><<set _tempprocedure to _tempprocedure.concat($labtestdatabase[$labtestchoice].procedure)>>
<<for _i to 0; _i < $labtestdatabase[$labtestchoice].procedure.length; _i++>>
<<set $procedurequiz.push("")>><<set _variablename to "$procedurequiz[" +_i +"]">><<print _i + 1>>. <<listbox _variablename>><<optionsfrom _tempprocedure.shuffle()>><</listbox>>
<</for>>
Thanks in advance,
$playername.
[[Send Email|Lab test Check]] <p class="bad">Costs 1 Action and <<set _num to $labtestdatabase[$labtestchoice].cost>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon"></p><p class="neutral"> (You have $actions/$maxactions actions and <<set _num to $money>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon">)</p>
[[DEBUG]]
<<print $pathogendatabase[$pathogen]["Health Measures"]["Meat Handling"].modifier[0]>>
<<print $pathogendatabase[$pathogen]["Health Measures"][Object.keys($pathogendatabase[$pathogen]["Health Measures"])[0]].modifier.length>>
variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen)]['Health Measures'][i]].modifier.length
variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen)]['Health Measures'][i]].modifier[j][3]
<<script>>
for (let i = 0; i < Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures']).length; i++) { for (let j = 0; j < variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier.length; j++) { variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier[j][3] = variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier[j][3] + 0.05; }; }
<</script>>
<<print $pathogendatabase[$pathogen]["Health Measures"]["Meat Handling"].modifier[0]>>
<<set _num to >><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><<print $procedurequiz>>
<<set $actions to $actions - 1>>
<<set $labtestsdone to $labtestsdone + 1>>
<<set $money to $money - $labtestdatabase[$labtestchoice].cost>>
<<if $labtestdatabase[$labtestchoice].cost > 0>><<set $newmoney to true>><</if>>
<<print $labtestprocedure[$labtestindex]>>
/*
# Checks every step of the procedure is correct. If any step is incorrect, the result will be inconclusive and the user has to do the test again.
*/<<set _correct to true>>
<<for _i to 0; _i < $procedurequiz.length; _i++>>
<<if not ($procedurequiz[_i] == $labtestdatabase[$labtestchoice].procedure[_i])>><<set _correct to false>><</if>>
<</for>>/*
# Sets up an array with lab test result information.
# Index 0 is the lab test name.
# Index 1 is the result.
# Index 2 is if the test was successful.
*/<<if _correct == false>>
<<set $pendinglabtests.push([$labtestchoice,"The procedure you provided was incorrect; the results obtained were inconclusive",_correct,"None",$labtestdatabase[$labtestchoice].delay])>>
<<else>>
<<set $pendinglabtests.push([$labtestchoice,$pathogendatabase[$pathogen]["Lab Tests"][$labtestchoice].description,_correct,$pathogendatabase[$pathogen]["Lab Tests"][$labtestchoice].result,$labtestdatabase[$labtestchoice].delay])>>
<</if>>
<<goto Dashboard>><<set $actions to $actions - 1>>
<<set $healthmeasuresdone to $healthmeasuresdone + 1>>
<<set $money to $money - $healthmeasuredatabase[$healthmeasurechoice].cost>>
<<if $healthmeasuredatabase[$healthmeasurechoice].cost > 0>><<set $newmoney to true>><</if>>
<<set _correct to true>>
/*
# When implementing health measures other than simple restrictions, change the [0] to the corresponding array.
*/
<<set $pendinghealthmeasures.push([$healthmeasurechoice,$pathogendatabase[$pathogen]["Health Measures"][$healthmeasurechoice].modifier[0],$pathogendatabase[$pathogen]["Health Measures"][$healthmeasurechoice].font[0],$pathogendatabase[$pathogen]["Health Measures"][$healthmeasurechoice].meaning[0],$healthmeasuredatabase[$healthmeasurechoice].delay,_correct])>>
<<goto Dashboard>><<audio "type" play>>/*
# All restrictions use the default success value (first index)
# The user "writes" an email
*/[[Cancel Writing Email|Health Measures]]
To: Constance-Taylor.Gionne@Epidemiological.com
<h1>Health Measure Request</h1>
Greetings,
I wanted to initiate $healthmeasurechoice.
<<print $healthmeasuredatabase[$healthmeasurechoice].description>>
Thanks in advance,
$playername.
[[Send Email|Health measures Check]] <p class="bad">Costs 1 Action and <<set _num to $healthmeasuredatabase[$healthmeasurechoice].cost>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon"></p>
<p class="neutral"> (You have $actions/$maxactions actions and <<set _num to $money>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon">)</p>
[[Dashboard]]/*
# Databases of all the specific information relevant to each pathogen, split into Research, Lab Tests and Health Measures categories. This allows for easy addition and editing, as well as readability of information.
# $pathogendatabase contains information specific to the pathogens. First key refers to the name of the pathogen, and the rest is pretty self explanatory. Actions are split up into either research, lab tests or health measures.
# health measures have an "effect" value array of arrays, which corresponds how it changes the infectionrate, recoveryrate, mortalityrate and compliance respectively.
# health measures also have a "font" value array, which chooses what font the text should be when displayed in the email.
# $researchdatabase, $labtestdatabase and $healthmeasuredatabase all contain general information to each action, that is irrelevant to which pathogen is causing the outbreak.
# description is just a string that says what the action is or what it does,
# effect (research only) is a string of javascript code that is run after the research is conducted (For example, increasing variables().money)
# delay refers to how many days it takes to complete the action
# cost refers to how many cytocoins are spent to take the action
# requirement must be boolean javascript code in an array of strings and each string that is equal to true it is removed from the array. If all requirements are removed then the action is unlocked. (Example: "variables().healthmeasuredatabase['Waste Disposal'].completed").
# unlocked is a simple boolean that tracks if the action is unlocked or not (If the requirement array is empty, this is usually set to true automatically but can be overwritten manually)
# completed is a simple boolean that tracks if the action was conducted at least once, and is often a requirement of other actions.
# Calculations:
# Escherichia Coli:
# Recovery takes 8 days, therefore 1/8 is recoveryrate. R0 is 1.5, therefore infectionrate is 1.5*(1/8). 10% of people develop HUS, of which ~4% die, therefore mortality is 0.1*0.04 - since the infection lasts 8 days, the mortalityrate is 0.1*0.04*(1/8).
*/<<set $pathogendatabase to {
"Escherichia coli": {
species: "Entero-Hemorrhagic Escherichia Coli (EHEC)",
infectionrate: 0.1875,
recoveryrate: 0.125,
mortalityrate: 0.0005,
description: "Produces shiga toxin, causing damage to the lining of the intestinal wall. Can cause Hemolytic Uremic Syndrome (HUS)",
resistances: [],
phylogeny: ["Pseudomonadota"," Gammaproteobacteria","Enterobacterales","Enterobacteriaceae","Escherichia"],
"Research":{
"Animal Research Authorization": {
result: "You can now use animal subjects in your research and lab tests.",
},
"Apply for Grant": {
result: "You have received a grant of 2,500<img src='Assets/Cytocoins.svg' class='smallicon'>",
},
"Boost Compliance Gain": {
result: "All health measures will have 5% improved effects on Compliance",
},
"Boost Infection Loss": {
result: "All health measures will have 5% improved effects on Infection",
},
"Boost Mortality Loss": {
result: "All health measures will have 5% improved effects on Mortality",
},
"Boost Recovery Gain": {
result: "All health measures will have 5% improved effects on Recovery",
},
"Cheap Health Measures": {
result: "Health Measures are now about 15% cheaper!",
},
"Cheap Lab Tests": {
result: "Lab Tests are now about 15% cheaper!",
},
"Cheap Research": {
result: "Research is now about 15% cheaper!",
},
"Cheaper Health Measures": {
result: "Health Measures are now about 15% cheaper!",
},
"Cheaper Lab Tests": {
result: "Lab Tests are now about 15% cheaper!",
},
"Cheaper Research": {
result: "Research is now about 15% cheaper!",
},
"Cheapest Health Measures": {
result: "Health Measures are now about 15% cheaper!",
},
"Cheapest Lab Tests": {
result: "Lab Tests are now about 15% cheaper!",
},
"Cheapest Research": {
result: "Research is now about 15% cheaper!",
},
"Contact Tracing": {
result: "You can now view Susceptible, Infected, Recovered and Dead numbers from your Dashboard.",
},
"Fast Health Measures": {
result: "Health Measures are now about 30% faster!",
},
"Fast Lab Tests": {
result: "Lab Tests are now about 30% faster!",
},
"Fast Research": {
result: "Research is now about 30% faster!",
},
"Faster Health Measures": {
result: "Health Measures are now about 30% faster!",
},
"Faster Lab Tests": {
result: "Lab Tests are now about 30% faster!",
},
"Faster Research": {
result: "Research is now about 30% faster!",
},
"Fastest Health Measures": {
result: "Health Measures are now about 30% faster!",
},
"Fastest Lab Tests": {
result: "Lab Tests are now about 30% faster!",
},
"Fastest Research": {
result: "Research is now about 30% faster!",
},
"Identify Origin": {
result: "After extensive surveillance, it was found that the outbreak originated from an infection caused by eating contaminated foodstuffs.",
},
"Identify Pathogen": {
result: ["You have correctly identified that the pathogen is E. coli! Vaccine development can now begin, available in the Research department.","You have incorrectly identified the pathogen. You may try again."],
},
"Identify Symptoms": {
result: "Symptoms of the disease include a High Fever, Diarrhoea (Occasionally bloody), Fatigue, Abdominal Cramps, Nausea and even Vomiting.",
},
"Identify Transmission": {
result: "It was found that the strain is transmissible through meat, vegetables, fruit, milk, water, human waste and close contact. ",
},
"Impact Analysis": {
result: "You can now view the effect your health measures have on Compliance, Infection, Recovery and Mortality from your Health Measures tab.",
},
"Life Savings": {
result: "You have found 5,000<img src='Assets/Cytocoins.svg' class='smallicon'> in your savings account!",
},
"Microscopy": {
result: "You now have access to lab tests that require microscope use.",
},
"More Actions": {
result: "You now get 1 extra action per day!",
},
"Obtain Sample" : {
result: "You have successfully managed to isolate a sample of the epidemiological agent.",
},
"Specific Reagents": {
result: "The Lab Department now has access to more reagents to conduct lab tests with.",
},
"Transmission Monitoring": {
result: "You can now view the Replication (R) value, Infection rate, Recovery rate and Mortality rate from your Research tab.",
},
"Vaccine Development": {
result: "Potential vaccines have been developed! Pre-clinical trials using animals could now begin, available in the Lab Test department, if you are authorized.",
},
},
"Lab Tests":{
"Antibiotic Resistance": {
description: "The greatest zones of inhibition were noticed around Ciprofloxacin, Levofloxacin and Ceftriaxone",
result: "susceptible to treatment with Ciprofloxacin, Levofloxacin and Ceftriaxone.",
},
"Capsule Stain": {
description: "Bacilli with visible white haloes were observed under the microscope",
result: "Capsulated",
},
"Catalase": {
description: "Bubble formation was observed",
result: "Catalase Positive (+ve)",
},
"Citrate Utilization": {
description: "No colour change observed; Simmons Citrate agar stayed green",
result: "Citrate Negative (-ve)",
},
"Coagulase": {
description: "No visible agglutination of plasma was observed",
result: "Coagulase Negative (-ve)",
},
"Endospore Stain": {
description: "Pink Bacilli were observed under the microscope",
result: "Non-Sporing",
},
"Flagella Stain": {
description: "Lots of flagella are visible all around each bacilli",
result: "Peritrichously Flagellated",
},
"Gelatin Hydrolysis": {
description: "No liquefaction of Nutrient Gelatin medium was observed",
result: "Gelatin Hydrolysis Negative (-ve)",
},
"Gram Stain": {
description: "Pink Bacilli were observed under the microscope",
result: "Gram Stain Negative (-ve)",
},
"Growth in Cyanide": {
description: "No growth was observed in KCN broth",
result: "Growth in Cyanide Negative (-ve)",
},
"Growth Temperature": {
description: "The highest level of turbidity was observed in broth tubes incubated at 37°C",
result: "Optimal growth temperature is 37°C",
},
"Hydrogen Sulphide": {
description: "No colour change of SIM media was observed",
result: "Hydrogen Sulphide Negative (-ve)",
},
"Haemolysis": {
description: "Blood agar became darkened around bacterial growth",
result: "Beta-Hymolytic",
},
"Indole Production": {
description: "A red ring formed on top of the broth mixture",
result: "Indole Positive (+ve)",
},
"Methyl Red": {
description: "MRVP medium changed colour to red",
result: "Methyl Red Positive (+ve)",
},
"Nitrate Reduction": {
description: "Nitrate broth turned red after addition of reagents A and B, before addition of Zinc powder",
result: "Nitrate Reduction Positive (+ve)",
},
"Oxidative Fermentation": {
description: "The medium in both, the aerobic and anaerobic tubes, turned yellow",
result: "Fermentative",
},
"Oxidase": {
description: "No colour change of oxidase strip was observed",
result: "Oxidase Negative (-ve)",
},
"Pyrrolidonyl Arylamidase": {
description: "The PYR broth turned blue",
result: "PYR Negative (-ve) but Indole Positive (+ve)",
},
"Triple Sugar Iron Agar": {
description: "The agar had a yellow slant and a yellow butt, with bubble formation visible",
result: "Triple Sugar Iron Agar Acid/Acid, Gas Positive (+ve), with no H₂ production",
},
"Urease": {
description: "No colour change of urease agar was observed",
result: "Urease Negative (-ve)",
},
"Vaccine Pre-Clinical Trials": {
description: "Vaccines used on animal models have been deemed non-toxic and effective at treating the infection",
result: "being used to create vaccines. Clinical trials can now begin, available in the Health Measure department",
},
"Voges Proskauer": {
description: "No coloured layer formed on the MRVP medium",
result: "Voges Proskauer Negative (-ve)",
}
},
"Health Measures":{
"Animal Control": {
modifier: [ [1, 1, 1, 0.9] ],
font: ["bad"],
meaning: ["Animal control was completely ineffective at controlling infection rates; The pathogen is likely not spread by contact with animals. The public seems to trust you less."],
},
"Antibiotic Use": {
modifier: [ [1, 1.03, 0.97, 0.97] ],
font: ["good"],
meaning: ["Antibiotic use was mildly effective at helping infected individuals. Recovery rates and Mortality rates improved slightly."],
},
"Awareness Gatherings": {
modifier: [ [1.03, 1, 1, 1.2] ],
font: ["good"],
meaning: ["Awareness gatherings were very effective at informing the public about the dangers of the epidemic. Although infection rates worsened neglegibly due to increased person-to-person contact, the public seems to trust you much more!"],
},
"Controlled Exposure": {
modifier: [ [1.15, 1.15, 1, 0.9] ],
font: ["neutral"],
meaning: ["Controlled exposure has been increased: Although infection rates might worsen considerably, recovery rates will improve considerably on average. The public might have ethical concerns on your approach, though."],
},
"Educate Population": {
modifier: [ [1, 1, 1, 1.1] ],
font: ["good"],
meaning: ["The public has been informed about nature of the disease, and common myths have been debunked. The public seems to trust you more."],
},
"Experimental Medication": {
modifier: [ [1, 1.05, 1.5, 0.95] ],
font: ["bad"],
meaning: ["Use of experimental medication had a mild improvement to recovery rates, but there was a considerable increase in mortality rates due to unexpected side effects."],
},
"Fruit Handling": {
modifier: [ [0.97, 1, 1, 0.95] ],
font: ["neutral"],
meaning: ["Proper preparation of Fruit has had a neglegible improvement on infection rates; Perhaps the pathogen isn't often found in fruit."],
},
"Hand Washing": {
modifier: [ [0.95, 1, 1, 0.97] ],
font: ["good"],
meaning: ["Proper hand hygiene has been instated, and it appears to have moderately improved infection rates."],
},
"Immune Passport": {
modifier: [ [0.97, 1, 1, 0.85] ],
font: ["bad"],
meaning: ["Implementation of an Immune Passport was found very controversial by the public, and the improvement to infection rates have been neglegible."],
},
"Improve Ventilation": {
modifier: [ [1, 1, 1, 0.9] ],
font: ["bad"],
meaning: ["Improving ventilation was completely ineffective at controlling infection rates; The pathogen is likely not airborne. The public seems to trust you less."],
},
"Increase Patient Care": {
modifier: [ [1.03, 1.1, 0.9, 0.97] ],
font: ["good"],
meaning: ["More infected individuals are being admitted to hospitals. The infection rate increase was neglegible, and there was a moderate improvement in recovery and mortality rates."],
},
"Mask Wearing": {
modifier: [ [1, 1, 1, 0.9] ],
font: ["bad"],
meaning: ["Mask wearing was completely ineffective at controlling infection rates; The pathogen is likely not spread via aerosols. The public seems to trust you less."],
},
"Meat Handling": {
modifier: [ [0.9, 1, 1, 1] ],
font: ["good"],
meaning: ["Proper preparation and handling of raw meat has caused a considerable improvement to infection rates! The pathogen likely often spreads through contaminated meat."],
},
"Milk Pasteurization": {
modifier: [ [0.97, 1, 1, 0.95] ],
font: ["neutral"],
meaning: ["Sterilization of dairy products has had a neglegible impact on infection rates."],
},
"Prioritize Risk Groups": {
modifier: [ [1, 0.95, 0.75, 1] ],
font: ["good"],
meaning: ["Screening for, and treatment of, High-Risk groups has been increased. Although this means recovery rates will worsen slightly, since the average person might not be supplied treatment, Mortality rates have improved considerably since those that need the treatment the most will get it."],
},
"Product Recall": {
modifier: [ [0.95, 1, 1, 0.95] ],
font: ["good"],
meaning: ["Identifying and recalling foodstuffs contaminated with the pathogen was effective at reducing transmission rates! The pathogen is likely found in foodstuffs."],
},
"Quarantining": {
modifier: [ [0.97, 1.05, 1, 0.95] ],
font: ["good"],
meaning: ["Quarantining has had a neglegible improvement on infection and mild improvement to recovery rates, but the public doesn't like being stuck at home."],
},
"Relaxation of Restrictions": {
modifier: [ [1.1, 1, 1, 1.2] ],
font: ["neutral"],
meaning: ["Relaxation of Health Measures has been beneficial on Public Morale, however has moderately increased infection rates."],
},
"Reward Scheme": {
modifier: [ [1, 1, 1, 1.5] ],
font: ["good"],
meaning: ["The public have received another incentive to follow restrictions, therefore compliance increased significantly."],
},
"Safe Sex Practices": {
modifier: [ [1, 1, 1, 0.9] ],
font: ["bad"],
meaning: ["Safe Sex Practices were completely ineffective at controlling infection rates; The pathogen is likely not sexually transmitted. The public seems to trust you less."],
},
"Sanitization": {
modifier: [ [0.97, 1, 1, 0.95] ],
font: ["neutral"],
meaning: ["Sanitization of touched items was barely effective at lowering the infection rate. This might mean the pathogen doesn't spread via fomites much."],
},
"Social Distancing": {
modifier: [ [0.97, 1, 1, 0.95] ],
font: ["neutral"],
meaning: ["Social distancing was barely effective at lowering the infection rate. This might mean the pathogen doesn't spread via person-to-person contact much."],
},
"Sterilization of Wounds": {
modifier: [ [0.97, 1, 0.97, 0.95] ],
font: ["neutral"],
meaning: ["Proper sterilization of open wounds caused neglegible improvements to infection rates and mortality rates."],
},
"Vaccine Clinical Trials": {
modifier: [ [1, 1, 1, 1] ],
font: ["good"],
meaning: ["Clinical trials were a success, and Vaccine Rollout can now begin from the Health Measures department."],
},
"Vaccine Rollout": {
modifier: [ [0.75, 1.5, 0.75, 1.5] ],
font: ["good"],
meaning: ["Vaccines have successfully finally finished development and been rolled out. This caused a considerable improvement to rates of infection, recovery and mortality due to faster immune system responses and improved symptoms. Public morale has improved considerably."],
},
"Vector Control": {
modifier: [ [1, 1, 1, 0.9] ],
font: ["bad"],
meaning: ["Vector control was completely ineffective at controlling infection rates; The pathogen is likely not spread via vectors. The public seems to trust you less."],
},
"Vegetable Handling": {
modifier: [ [0.95, 1, 1, 0.97] ],
font: ["good"],
meaning: ["Proper preparation and washing of vegetables caused a moderate improvement to infection rates. Perhaps the pathogen is food-borne?"],
},
"Waste Disposal": {
modifier: [ [0.9, 1, 1, 0.97] ],
font: ["good"],
meaning: ["Improvement to collection and disposal of trash and waste has had a considerable improvement on infection rates! The pathogen likely spreads through human waste."],
},
"Water Purification": {
modifier: [ [0.95, 1, 1, 0.97] ],
font: ["good"],
meaning: ["Purification of water has had a moderate improvement to infection rates; The pathogen might be found in contaminated water often."],
},
}
}
}>>/*
# Database for research, and description of what each research does.
*/<<set $researchdatabase to {
"Animal Research Authorization": {
description: "Greenlights use of animal models in research and testing.",
delay: 5,
cost: 100,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Apply for Grant": {
description: "Apply for a grant with the bank, to receive 2,500<img src='Assets/Cytocoins.svg' class='smallicon'>",
effect: "variables().money = variables().money + 2500; variables().newmoney = true;",
delay: 7,
cost: 0,
requirement: ["variables().money < 5000"],
unlocked: false,
completed: false,
},
"Boost Compliance Gain": {
description: "Be more persuasive with the public. Each health measure will have a 5% improved effect on Compliance",
effect: "for (let i = 0; i < Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures']).length; i++) { for (let j = 0; j < variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier.length; j++) { variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier[j][3] = variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier[j][3] + 0.05; }; }",
delay: 5,
cost: 500,
requirement: ["variables().compliance < 0.35"],
unlocked: false,
completed: false,
},
"Boost Infection Loss": {
description: "Be more persuasive with the public. Each health measure will have a 5% improved effect on Infection",
effect: "for (let i = 0; i < Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures']).length; i++) { for (let j = 0; j < variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier.length; j++) { variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier[j][0] = variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier[j][0] - 0.05; }; }",
delay: 5,
cost: 500,
requirement: ["variables().infectionhealthmeasures > 1.15"],
unlocked: false,
completed: false,
},
"Boost Mortality Loss": {
description: "Be more persuasive with the public. Each health measure will have a 5% improved effect on Mortality",
effect: "for (let i = 0; i < Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures']).length; i++) { for (let j = 0; j < variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier.length; j++) { variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier[j][2] = variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier[j][2] - 0.05; }; }",
delay: 5,
cost: 500,
requirement: ["variables().mortalityhealthmeasures > 1.15"],
unlocked: false,
completed: false,
},
"Boost Recovery Gain": {
description: "Be more persuasive with the public. Each health measure will have a 5% improved effect on Recovery",
effect: "for (let i = 0; i < Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures']).length; i++) { for (let j = 0; j < variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier.length; j++) { variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier[j][1] = variables().pathogendatabase[variables().pathogen]['Health Measures'][Object.keys(variables().pathogendatabase[variables().pathogen]['Health Measures'])[i]].modifier[j][1] + 0.05; }; }",
delay: 5,
cost: 500,
requirement: ["variables().recoveryhealthmeasures < 0.85"],
unlocked: false,
completed: false,
},
"Cheap Health Measures": {
description: "Makes all health measures about 15% cheaper.",
effect: "for (let i = 0; i < Object.keys(variables().healthmeasuredatabase).length; i++) { variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].cost = Math.round(variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].cost * 0.85); }",
delay: 5,
cost: 500,
requirement: ["variables().healthmeasuresdone > 5"],
unlocked: false,
completed: false,
},
"Cheap Lab Tests": {
description: "Makes all lab tests about 15% cheaper.",
effect: "for (let i = 0; i < Object.keys(variables().labtestdatabase).length; i++) { variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].cost = Math.round(variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].cost * 0.85); }",
delay: 5,
cost: 500,
requirement: ["variables().labtestsdone > 5"],
unlocked: false,
completed: false,
},
"Cheap Research": {
description: "Makes all research about 15% cheaper.",
effect: "for (let i = 0; i < Object.keys(variables().researchdatabase).length; i++) { variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].cost = Math.round(variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].cost * 0.85); }",
delay: 5,
cost: 500,
requirement: ["variables().researchdone > 9"],
unlocked: false,
completed: false,
},
"Cheaper Health Measures": {
description: "Makes all health measures about 15% cheaper.",
effect: "for (let i = 0; i < Object.keys(variables().healthmeasuredatabase).length; i++) { variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].cost = Math.round(variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].cost * 0.85); }",
delay: 5,
cost: 500,
requirement: ["variables().healthmeasuresdone > 9","variables().researchdatabase['Cheap Health Measures'].completed"],
unlocked: false,
completed: false,
},
"Cheaper Lab Tests": {
description: "Makes all lab tests about 15% cheaper.",
effect: "for (let i = 0; i < Object.keys(variables().labtestdatabase).length; i++) { variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].cost = Math.round(variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].cost * 0.85); }",
delay: 5,
cost: 500,
requirement: ["variables().labtestsdone > 9","variables().researchdatabase['Cheap Lab Tests'].completed"],
unlocked: false,
completed: false,
},
"Cheaper Research": {
description: "Makes all research about 15% cheaper.",
effect: "for (let i = 0; i < Object.keys(variables().researchdatabase).length; i++) { variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].cost = Math.round(variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].cost * 0.85); }",
delay: 5,
cost: 500,
requirement: ["variables().researchdone > 13","variables().researchdatabase['Cheap Research'].completed"],
unlocked: false,
completed: false,
},
"Cheapest Health Measures": {
description: "Makes all health measures about 15% cheaper.",
effect: "for (let i = 0; i < Object.keys(variables().healthmeasuredatabase).length; i++) { variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].cost = Math.round(variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].cost * 0.85); }",
delay: 5,
cost: 500,
requirement: ["variables().healthmeasuresdone > 13","variables().researchdatabase['Cheaper Health Measures'].completed"],
unlocked: false,
completed: false,
},
"Cheapest Lab Tests": {
description: "Makes all lab tests about 15% cheaper.",
effect: "for (let i = 0; i < Object.keys(variables().labtestdatabase).length; i++) { variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].cost = Math.round(variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].cost * 0.85); }",
delay: 5,
cost: 500,
requirement: ["variables().labtestsdone > 13","variables().researchdatabase['Cheaper Lab Tests'].completed"],
unlocked: false,
completed: false,
},
"Cheapest Research": {
description: "Makes all research about 15% cheaper.",
effect: "for (let i = 0; i < Object.keys(variables().researchdatabase).length; i++) { variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].cost = Math.round(variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].cost * 0.85); }",
delay: 5,
cost: 500,
requirement: ["variables().researchdone > 17","variables().researchdatabase['Cheaper Research'].completed"],
unlocked: false,
completed: false,
},
"Contact Tracing": {
description: "Initiate measures to track how many members of the population are currently infected, recovered or dead due to the pathogen.",
delay: 3,
cost: 100,
requirement: ["variables().researchdatabase['Identify Origin'].completed"],
unlocked: false,
completed: false,
},
"Fast Health Measures": {
description: "Makes all health measures about 30% faster.",
effect: "for (let i = 0; i < Object.keys(variables().healthmeasuredatabase).length; i++) { variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].delay = Math.round(variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].delay * 0.7); }",
delay: 5,
cost: 500,
requirement: ["variables().healthmeasuresdone > 5"],
unlocked: false,
completed: false,
},
"Fast Lab Tests": {
description: "Makes all lab tests about 30% faster.",
effect: "for (let i = 0; i < Object.keys(variables().labtestdatabase).length; i++) { variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].delay = Math.round(variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].delay * 0.7); }",
delay: 5,
cost: 500,
requirement: ["variables().labtestsdone > 5"],
unlocked: false,
completed: false,
},
"Fast Research": {
description: "Makes all research about 30% faster.",
effect: "for (let i = 0; i < Object.keys(variables().researchdatabase).length; i++) { variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].delay = Math.round(variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].delay * 0.7); }",
delay: 5,
cost: 500,
requirement: ["variables().researchdone > 9"],
unlocked: false,
completed: false,
},
"Faster Health Measures": {
description: "Makes all health measures about 30% faster.",
effect: "for (let i = 0; i < Object.keys(variables().healthmeasuredatabase).length; i++) { variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].delay = Math.round(variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].delay * 0.7); }",
delay: 5,
cost: 500,
requirement: ["variables().healthmeasuresdone > 9","variables().researchdatabase['Fast Health Measures'].completed"],
unlocked: false,
completed: false,
},
"Faster Lab Tests": {
description: "Makes all lab tests about 30% faster.",
effect: "for (let i = 0; i < Object.keys(variables().labtestdatabase).length; i++) { variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].delay = Math.round(variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].delay * 0.7); }",
delay: 5,
cost: 500,
requirement: ["variables().labtestsdone > 9","variables().researchdatabase['Fast Lab Tests'].completed"],
unlocked: false,
completed: false,
},
"Faster Research": {
description: "Makes all research about 30% faster.",
effect: "for (let i = 0; i < Object.keys(variables().researchdatabase).length; i++) { variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].delay = Math.round(variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].delay * 0.7); }",
delay: 5,
cost: 500,
requirement: ["variables().researchdone > 13","variables().researchdatabase['Fast Research'].completed"],
unlocked: false,
completed: false,
},
"Fastest Health Measures": {
description: "Makes all health measures about 30% faster.",
effect: "for (let i = 0; i < Object.keys(variables().healthmeasuredatabase).length; i++) { variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].delay = Math.round(variables().healthmeasuredatabase[Object.keys(variables().healthmeasuredatabase)[i]].delay * 0.7); }",
delay: 5,
cost: 500,
requirement: ["variables().healthmeasuresdone > 13","variables().researchdatabase['Faster Health Measures'].completed"],
unlocked: false,
completed: false,
},
"Fastest Lab Tests": {
description: "Makes all lab tests about 30% faster.",
effect: "for (let i = 0; i < Object.keys(variables().labtestdatabase).length; i++) { variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].delay = Math.round(variables().labtestdatabase[Object.keys(variables().labtestdatabase)[i]].delay * 0.7); }",
delay: 5,
cost: 500,
requirement: ["variables().labtestsdone > 13","variables().researchdatabase['Faster Lab Tests'].completed"],
unlocked: false,
completed: false,
},
"Fastest Research": {
description: "Makes all research about 30% faster.",
effect: "for (let i = 0; i < Object.keys(variables().researchdatabase).length; i++) { variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].delay = Math.round(variables().researchdatabase[Object.keys(variables().researchdatabase)[i]].delay * 0.7); }",
delay: 5,
cost: 500,
requirement: ["variables().researchdone > 17","variables().researchdatabase['Faster Research'].completed"],
unlocked: false,
completed: false,
},
"Identify Origin": {
description: "Investigate where/how the outbreak begun. This allows you to start conducting health measures to limit the transmission.",
effect: "",
delay: 1,
cost: 0,
requirement: [],
unlocked: true,
completed: false,
},
"Identify Pathogen": {
description: "Identify the pathogen causing the epidemic, so that vaccine development can begin.",
delay: 3,
cost: 0,
requirement: ["variables().labtestsdone > 3"],
unlocked: false,
completed: false,
},
"Identify Symptoms": {
description: "Find out which symptoms are caused by the pathogen.",
delay: 3,
cost: 100,
requirement: ["variables().researchdatabase['Obtain Sample'].completed"],
unlocked: false,
completed: false,
},
"Identify Transmission": {
description: "Investigate the mode of Transmission of the Pathogen. Modes of transmission can include Aerosols, Blood, Fomites, Foodstuffs, Close-Contact, Vectors, Water, Zoonosis and others. ",
effect: "",
delay: 3,
cost: 100,
requirement: ["variables().researchdatabase['Identify Origin'].completed"],
unlocked: false,
completed: false,
},
"Impact Analysis": {
description: "Track how your health measures affect Infection, Recovery and Mortality rates of the epidemic.",
delay: 3,
cost: 100,
requirement: ["variables().researchdatabase['Obtain Sample'].completed"],
unlocked: false,
completed: false,
},
"Life Savings": {
description: "Apply for a grant with the bank, to receive 5,000<img src='Assets/Cytocoins.svg' class='smallicon'>",
effect: "variables().money = variables().money + 5000; variables().newmoney = true;",
delay: 5,
cost: 0,
requirement: ["variables().researchdatabase['Cheapest Research'].completed","variables().researchdatabase['Cheapest Lab Tests'].completed","variables().researchdatabase['Cheapest Health Measures'].completed"],
unlocked: false,
completed: false,
},
"Microscopy": {
description: "Get access to lab tests that require using a Microscope.",
delay: 3,
cost: 100,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"More Actions": {
description: "Receive an additional action every day.",
effect: "variables().maxactions = variables().maxactions + 1; variables().actions = variables().actions + 1",
delay: 5,
cost: 500,
requirement: ["variables().researchdatabase['Fastest Research'].completed","variables().researchdatabase['Fastest Lab Tests'].completed","variables().researchdatabase['Fastest Health Measures'].completed"],
unlocked: false,
completed: false,
},
"Obtain Sample": {
description: "Obtain a sample of the pathogenic agent for cultivation. This allows you to start conducting lab tests.",
effect: "",
delay: 1,
cost: 0,
requirement: [],
unlocked: true,
completed: false,
},
"Specific Reagents": {
description: "Get access to a wider range of reagents to conduct lab tests with.",
delay: 3,
cost: 100,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Transmission Monitoring": {
description: "Track the Infection, Recovery and Mortality rates of the epidemic, as well as the Replication (R) value.",
delay: 3,
cost: 100,
requirement: ["variables().researchdatabase['Identify Transmission'].completed"],
unlocked: false,
completed: false,
},
"Vaccine Development": {
description: "After identifying the specific bacterial agent responsible for causing the epidemic, vaccine development can begin.",
delay: 14,
cost: 1000,
requirement: ["variables().researchdatabase['Identify Pathogen'].completed"],
unlocked: false,
completed: false,
},
}>>/*
# Database for the lab tests. These include procedures and descriptions of what each test does, and align with the pathogen database.
*/<<set $labtestdatabase to {
"Antibiotic Resistance": {
description: "Used to find out which Antibiotics a bacteria is resistant to, by using a Disk Diffusion method. It involves adding disks soaked in antibiotic onto agar, and measuring zones of inhibition.",
procedure: ["Streak bacteria onto agar plate thoroughly","Allow agar surface to dry","Apply antibiotic disks equidistant from each other and the edge of the agar plate","Incubate agar plate","Measure zones of inhibition"],
result: "The antibiotics with the greatest zones of inhibition, are the antibiotics the bacteria is most susceptible to, whereas those with little or no area of inhibition are antibiotics that the bacteria is resistant to.",
delay: 4,
cost: 100,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Capsule Stain": {
description: "Used to find out if the bacteria has a capsule, a structure used for survival.",
procedure: ["Transfer bacteria to a glass slide","Flood slide with India ink","Wash smear with crystal violet","Examine slide under a microscope"],
result: "Capsule-positive bacteria will have a visible white 'halo', whereas Capsule-negative bacteria will not. This test also lets you see the shape of the bacteria; Cocci (Spherical), Bacilli (Rod), Spirilla (Spiral), Vibrio (Comma) or Spirochaetes (Corkscrew).",
delay: 4,
cost: 100,
requirement: ["variables().researchdatabase['Specific Reagents'].completed","variables().researchdatabase['Microscopy'].completed"],
unlocked: false,
completed: false,
},
"Catalase": {
description: "Used to test if a bacteria contains the enzyme catalase, which neutralizes hydrogen peroxide by producing oxygen.",
procedure: [ "Transfer bacteria to a glass slide","Add a drop of hydrogen peroxide","Monitor the slide for appearance of bubbles"],
result: "Catalase-positive bacteria cause rapid bubble formation, whereas Catalase-negative bacteria cause no bubble formation.",
delay: 4,
cost: 50,
requirement: ["variables().researchdatabase['Obtain Sample'].completed"],
unlocked: false,
completed: false,
},
"Citrate Utilization": {
description: "Used to find out if the bacteria can utilize citrate as its carbon and energy source.",
procedure: ["Inoculate bacteria into a slant of SC agar","Incubate SC agar","Examine SC agar for a colour change"],
result: "Citrate-positive bacteria change the Simmons Citrate (SC) agar blue, whereas Citrate-negative bacteria agar stays green.",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Coagulase": {
description: "Used to find out if the bacteria contains coagulase which causes the clotting of blood plasma, and is usually used for differentiating Staphylococcus aureus from other Staphyloccocus.",
procedure: ["Innoculate bacteria into a tube of rabbit plasma","Incubate rabbit plasma","Tilt rabbit plasma to examine if agglutination occurred"],
result: "Coagulase-positive bacteria show agglutination and clumping of plasma, whereas Coagulase-negative bacteria do not agglutinate plasma.",
delay: 4,
cost: 50,
requirement: ["variables().researchdatabase['Animal Research Authorization'].completed","variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Endospore Stain": {
description: "Used to find out if the bacteria produces endospores.",
procedure: ["Fix bacteria onto a glass slide","Cover slide with blotting paper","Saturate blotting paper with Malachite green","Wash the slide with water","Counterstain with safranin","Examine slide under a microscope"],
result: "Bacteria are stained purple and visible endospores are stained green. This test also lets you see the shape of the bacteria; Cocci (Spherical), Bacilli (Rod), Spirilla (Spiral), Vibrio (Comma) or Spirochaetes (Corkscrew).",
delay: 4,
cost: 100,
requirement: ["variables().researchdatabase['Specific Reagents'].completed","variables().researchdatabase['Microscopy'].completed"],
unlocked: false,
completed: false,
},
"Flagella Stain": {
description: "Used to view flagella on a bacterial cell under a microscope. Flagella are clearly stained blue-black, allowing you to identify their nature.",
procedure: ["Put a drop of water onto a glass slide","Gently inoculate bacteria onto slide","Cover slide with cover slip","Put a drop of Flagella Stain on one end of the cover slip","Examine slide under a microscope"],
result: "Natures of Flagella include: Monotrichous (Single flagellum), Peritrichous (Flagella all around), Amphitrichous (Flagella at both ends), Lophotrichous (Tuft of many flagella at one end or both ends), Atrichous (Without flagella, nonmotile). This test also lets you see the shape of the bacteria; Cocci (Spherical), Bacilli (Rod), Spirilla (Spiral), Vibrio (Comma) or Spirochaetes (Corkscrew).",
delay: 4,
cost: 150,
requirement: ["variables().researchdatabase['Specific Reagents'].completed","variables().researchdatabase['Microscopy'].completed"],
unlocked: false,
completed: false,
},
"Gelatin Hydrolysis": {
description: "Used to test if the bacteria produces gelatinases, which liquefy Nutrient Gelatin (NG) medium.",
procedure: ["Inoculate bacteria into a tube of NG medium","Incubate NG medium","Refrigerate NG medium","Tilt NG medium to examine if liquefaction occurred"],
result: "Gelatinase-positive bacteria results in medium liquefaction even when refrigerated, whereas Gelatinase-negative bacteria do not liquefy the medium.",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Gram Stain": {
description: "Used to differentiate bacteria based on the composition of their cell wall.",
procedure: ["Fix bacteria onto a glass slide","Flood slide with crystal violet","Treat slide with mordant (Gram's iodine)","Decolorize slide with ethanol","Stain slide with safranin","Examine slide under a microscope"],
result: "Gram-positive bacteria cells will stain blue/purple, whereas Gram-negative cells will stain pink/red. This test also lets you see the shape of the bacteria; Cocci (Spherical), Bacilli (Rod), Spirilla (Spiral), Vibrio (Comma) or Spirochaetes (Corkscrew).",
delay: 4,
cost: 100,
requirement: ["variables().researchdatabase['Specific Reagents'].completed","variables().researchdatabase['Microscopy'].completed"],
unlocked: false,
completed: false,
},
"Growth in Cyanide": {
description: "Used to find out if the bacteria can grow in Potassium Cyanide (KCN) broth.",
procedure: ["Inoculate bacteria into tube of KCN broth","Incubate KCN broth","Examine KCN broth for turbidity"],
result: "Growth in Cyanide-positive bacteria can grow in the broth and obvious turbidity can be observed, whereas Growth in Cyanide-negative bacteria cannot grow in the broth.",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Growth Temperature": {
description: "Used to find out what the optimal temperature for growth of the bacteria is. Necessary for any test that requires incubating the sample at an appropriate temperature.",
procedure: ["Inoculate bacteria into tubes of broth","Incubate tubes at various temperatures","Examine broths for turbidity"],
result: "The temperature at which the highest level of turbidity is visible, the most optimal temperature for growth of this specific bacteria.",
delay: 4,
cost: 50,
requirement: ["variables().researchdatabase['Obtain Sample'].completed"],
unlocked: false,
completed: false,
},
"Hydrogen Sulphide": {
description: "Used to detect whether bacteria produce Hydrogen Sulphide (H₂S). Hydrogen Sulphide reacts with certain heavy metal salts in Sulphide Indole Motility Medium (SIM) to produce an insoluble black precipitate.",
procedure: ["Inoculate bacteria into SIM medium","Incubate SIM medium","Note any colour change of SIM medium"],
result: "H₂S-positive bacteria produce a colour change due to formation of black precipitate, whereas H₂S-negative bacteria do not produce a colour change.",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Haemolysis": {
description: "Used to find out if the bacteria produces hemolysins, enzymes that damage red blood cells. Blood agar is used, and colour of the agar after growth indicates the type of haemolysis.",
procedure: ["Streak bacteria onto a blood agar plate","Incubate blood agar plate","Note any colour change of blood agar"],
result: "Types of haemolysis include: Alpha (Incomplete haemolysis, Discolored or darkened agar), Beta (Complete haemolysis, Clear agar) or Gamma (No haemolysis, No discernible colour change).",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Indole Production": {
description: "Used to test if a bacteria can degrade amino acid Tryptophan to produce indole.",
procedure: ["Inoculate bacteria into tube of tryptophan broth","Incubate tryptophan broth","Add Kovac's reagent to tryptophan broth","Monitor for formation of a red ring"],
result: "Indole-positive bacteria produce a red layer on top of the medium, whereas Indole-negative bacteria have no colour change on top of the tube.",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed","variables().researchdatabase['Specific Reagents'].completed"],
unlocked: false,
completed: false,
},
"Methyl Red": {
description: "Used to find out which fermentation pathway is used to utilize glucose in the bacteria, using Methyl Red Voges Proskauer (MRVP) medium.",
procedure: ["Inoculate bacteria into tube of MRVP broth","Incubate MRVP broth","Add Methyl Red to tube","Examine the colour of the MRVP broth"],
result: "Methyl Red-positive bacteria cause a red colour change in the medium, whereas Methyl Red-negative bacteria medium has no colour change.",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed","variables().researchdatabase['Specific Reagents'].completed"],
unlocked: false,
completed: false,
},
"Nitrate Reduction": {
description: "Used to test if a bacteria can reduce nitrate (NO₃⁻) to nitrite (NO₂⁻) or other nitrogenous compounds via the use of nitrase (aka Nitrate reductase).",
procedure: ["Inoculate bacteria into tube of nitrate broth","Incubate nitrate broth","Add nitrite reagent A and nitrite reagent B","Monitor for colour change of broth","Add Zinc powder to tube","Monitor for colour change of broth"],
result: "Nitrate Reduction-positive bacteria show a red colour of the nitrate broth upon addition of reagent A and B which disappears after addition of Zinc powder, whereas Nitrate Reduction-negative bacteria show a red colour of broth after addition of Zinc.",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed","variables().researchdatabase['Specific Reagents'].completed"],
unlocked: false,
completed: false,
},
"Oxidative Fermentation": {
description: "Used to test if bacteria can metabolise carbohydrates oxidatively by fermentation, using Hugh and Liefson's (H&L) medium. This is done in duplicate, where one tube is aerobic but the other is kept anaerobic using a layer of oil.",
procedure: ["Inoculate bacteria into two tubes of H&L medium","Apply sterile mineral oil to one tube","Incubate both tubes aerobically","Examine tubes for colour change daily"],
result: "Non-saccharolytic bacteria medium stays green in both tubes, Fermentative bacteria medium turns to yellow in both tubes, and Oxidative bacteria medium only turns yellow in the aerobic tube.",
delay: 7,
cost: 100,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Oxidase": {
description: "Used to test if a bacteria contains the enzyme cytochrome oxidase.",
procedure: ["Streak bacteria onto an agar plate","Incubate agar plate","Apply oxidase strip to a colony","Monitor oxidase strip for a colour change"],
result: "Oxidase-positive bacteria will cause an oxidase strip to change colour to purple, whereas Oxidase-negative bacteria do not cause a colour change.",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Pyrrolidonyl Arylamidase": {
description: "Used to test for presence of L-Pyrrolidonyl Arylamidase (PYR).",
procedure: ["Inoculate bacteria into tube of PYR broth","Incubate PYR broth","Add some drops of PYR reagent","Examine PYR broth for colour change"],
result: "PYR-positive bacteria are indicated by a red colour of broth, whereas PYR-negative bacteria show no colour change, or a blue colour in the presence of an Indole reaction.",
delay: 4,
cost: 100,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed","variables().researchdatabase['Specific Reagents'].completed"],
unlocked: false,
completed: false,
},
"Triple Sugar Iron Agar": {
description: "Used to find out if bacteria ferment dextrose, lactose or sucrose using Triple Sugar Iron (TSI) agar.",
procedure: ["Inoculate bacteria into TSI agar slant and streak surface","Incubate TSI agar slant","Examine TSI medium for colour change"],
result: "Fermentation of only dextrose is alkaline/acid (Red slant/yellow butt), fermentation of dextrose, lactose and/or sucrose is acid/acid (yellow slant/yellow butt), No carbohydrate fermentation is alkaline/alkaline (red slant/red butt). Gas production (CO₂ or H₂) cause bubble formation in agar, and H₂ production blackens the agar.",
delay: 4,
cost: 100,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Urease": {
description: "Used to find out if bacteria can hydrolyse urea to produce ammonia and carbon dioxide.",
procedure: ["Streak bacteria onto surface of urea agar slant","Incubate urea agar slant","Examine urea agar slant for colour change"],
result: "Urease-positive bacteria cause a pink colour change of the medium, whereas urease-negative bacterial medium stays yellow.",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed"],
unlocked: false,
completed: false,
},
"Vaccine Pre-Clinical Trials": {
description: "Test potential vaccine candidates in-vivo on animal models, to identify if the vaccine is effective and safe for human use.",
procedure: ["Administer vaccine to animal model at varying doses","Allow time for an immune response to take place","Collect blood samples to measure immune cell production","Closely observe animal for signs of toxicity, adverse reactions, etc","Expose animal to pathogen to determine if immunity is efficient","If vaccine is ineffective or toxic, revise vaccine." ],
result: "Once the vaccine is deemed safe and effective on animals, clinical trials on small groups of human subjects can begin.",
delay: 14,
cost: 1000,
requirement: ["variables().researchdatabase['Vaccine Development'].completed","variables().researchdatabase['Animal Research Authorization'].completed"],
unlocked: false,
completed: false,
},
"Voges Proskauer": {
description: "Used to find out if the bacteria produces acetoin from pyruvate, using Methyl Red Voges Proskauer (MRVP) medium.",
procedure: ["Inoculate bacteria into tube of MRVP broth","Incubate MRVP broth","Add Barritt's A reagent to tube","Examine if top layer forms"],
result: "Voges Proskauer-positive bacteria cause the formation of a red-brown layer on the top of the medium, whereas Voges Proskauer-negative bacteria medium has no colour change.",
delay: 4,
cost: 50,
requirement: ["variables().labtestdatabase['Growth Temperature'].completed","variables().researchdatabase['Specific Reagents'].completed"],
unlocked: false,
completed: false,
}
}>>/*
# Health Measure Database. Contains descriptions of each procedure. Aligns with the health measures in the pathogen database.
*/<<set $healthmeasuredatabase to {
"Animal Control": {
type:"Repeatable",
description: "Tell people to wash hands after handling animals, not eat and drink in animal housing, and use appropriate Personal Protection Equipment when handling animals. Lowers infection rate if the pathogen is transmitted zoonotically.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Identify Origin'].completed","variables().researchdatabase['Animal Research Authorization'].completed"],
unlocked: false,
completed: false,
},
"Antibiotic Use": {
type:"Repeatable",
description: "Encourage the prescription and use of antibiotics on infected individuals, improving recovery and mortality rates. Use against an antibiotic-resistant pathogen is not a good idea though, since it can worsen symptoms and infection rates. ",
delay: 5,
cost: 200,
requirement: ["variables().labtestdatabase['Antibiotic Resistance'].completed"],
unlocked: false,
completed: false,
},
"Awareness Gatherings": {
type:"Repeatable",
description: "Arrange large gatherings, such as conventions and rallies, to convey the importance of following health measures and educate the public. This can be risky and increase person-to-person transmissions due to close contact, but will greatly increase compliance.",
delay: 10,
cost: 500,
requirement: ["variables().compliance < 0.80"],
unlocked: false,
completed: false,
},
"Controlled Exposure": {
type:"Single Use",
description: "Strategic screening and infection of low-risk individuals to build up herd immunity, to protect high-risk individuals in the long-run. This will considerably increase infection and recovery rates. Ethically questionable, and the public compliance will drop considerably especially with more lethal epidemics.",
delay: 10,
cost: 500,
requirement: ["variables().researchdatabase['Contact Tracing'].completed","variables().researchdatabase['Transmission Monitoring'].completed","variables().researchdatabase['Impact Analysis'].completed"],
unlocked: false,
completed: false,
},
"Educate Population": {
type:"Repeatable",
description: "Ensure the public is well informed about the nature of the outbreak and pathogen, and ensure myths or conspiracy theories are debunked. Increases public compliance.",
delay: 5,
cost: 200,
requirement: ["variables().compliance < 0.90"],
unlocked: false,
completed: false,
},
"Experimental Medication": {
type:"Repeatable",
description: "Fast-track the development and dispersal of a new medication to treat the infection. This might improve recovery rates, but increase mortality rates due to unexpected side effects, and lower compliance due to ethical considerations.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Vaccine Development'].completed"],
unlocked: false,
completed: false,
},
"Fruit Handling": {
type:"Single Use",
description: "Advise appropriate washing and preparation of fruit. Decreases infection rate in the event of certain food-borne pathogens.",
delay: 5,
cost: 200,
requirement: ["variables().healthmeasuredatabase['Product Recall'].completed"],
unlocked: false,
completed: false,
},
"Hand Washing": {
type:"Single Use",
description: "Encourage the public to wash their hands frequently, especially before/after preparing food or contact with people or surfaces that might contain fomites. Lowers transmission of most kind.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Identify Origin'].completed"],
unlocked: false,
completed: false,
},
"Immune Passport": {
type:"Single Use",
description: "Instate mandatory paperwork that must be shown by recovered or immunized individuals to prove their immunization status. Unimmunized individuals will be denied certain services, such as access to public transport. This may lower infection rates but largely lower public morale.",
effect: "",
delay: 7,
cost: 200,
requirement: ["variables().healthmeasuredatabase['Vaccine Rollout'].completed"],
unlocked: false,
completed: false,
},
"Improve Ventilation": {
type:"Repeatable",
description: "Encourage people to improve ventilation in enclosed spaces, especially those that are frequently crowded such as public transport through the act of opening videos and such. Improves infection rates against airborne pathogens and those found in aerosols.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Identify Origin'].completed","variables().healthmeasuredatabase['Mask Wearing'].completed"],
unlocked: false,
completed: false,
},
"Increase Patient Care": {
type:"Repeatable",
description: "Increase the priority of infected individual when admitted to the hospital. This will greatly improve recovery and mortality rates, but there is a potential for hospital-acquired infections.",
delay: 5,
cost: 500,
requirement: ["variables().researchdatabase['Identify Symptoms'].completed"],
unlocked: false,
completed: false,
},
"Mask Wearing": {
type:"Single Use",
description: "Mandate wearing face-coverings to prevent the spread of aerosols in public settings. Lowers infection rates if the pathogen is transmissible via aerosols.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Identify Origin'].completed"],
unlocked: false,
completed: false,
},
"Meat Handling": {
type:"Single Use",
description: "Advise the public to handle raw meat responsibly, by washing hands after contact and ensuring it is correctly cooked. Lowers infection rate if the pathogen is food-borne in raw meat.",
delay: 5,
cost: 200,
requirement: ["variables().healthmeasuredatabase['Product Recall'].completed"],
unlocked: false,
completed: false,
},
"Milk Pasteurization": {
type:"Single Use",
description: "Encourage proper sterilization of dairy products, such as pasteurization of milk. Effective at lowering infection if the pathogen is food-borne and found in dairy.",
delay: 5,
cost: 200,
requirement: ["variables().healthmeasuredatabase['Product Recall'].completed"],
unlocked: false,
completed: false,
},
"Prioritize Risk Groups": {
type:"Regulable",
description: "In the event of treatment shortages, prioritize treatment options to high-risk individuals or those with severe infections and deny treatment to individuals with mild infection. Greatly lowers mortality rates since those at risk get the help they need, but lowers recovery rates on average since mild infections aren't treated.",
delay: 5,
cost: 500,
requirement: ["variables().researchdatabase['Contact Tracing'].completed","variables().researchdatabase['Transmission Monitoring'].completed","variables().researchdatabase['Impact Analysis'].completed","variables().researchdatabase['Identify Symptoms'].completed"],
unlocked: false,
completed: false,
},
"Product Recall": {
type:"Repeatable",
description: "Recall any contaminated foodstuff products. Decreases infection rate if the pathogen is transmitted through foodstuffs.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Identify Origin'].completed"],
unlocked: false,
completed: false,
},
"Quarantining": {
type:"Repeatable",
description: "Close off highly-infected areas and encourage people to stay indoors if infected. This might mildly improve recovery rates, and is especially effective at reducing person-to-person transmission, but lowers compliance.",
delay: 5,
cost: 200,
requirement: ["variables().healthmeasuredatabase['Social Distancing'].completed"],
unlocked: false,
completed: false,
},
"Relaxation of Restrictions": {
type:"Repeatable",
description: "Make active public restrictions less strict. This will increase infection rates but increase compliance.",
delay: 5,
cost: 200,
requirement: ["variables().compliance < 0.50"],
unlocked: false,
completed: false,
},
"Reward Scheme": {
type:"Single Use",
description: "Give out rewards to those that follow restrictions. Expensive, but increases compliance Significantly",
delay: 10,
cost: 750,
requirement: ["variables().compliance < 0.70"],
unlocked: false,
completed: false,
},
"Safe Sex Practices": {
type:"Single Use",
description: "Encourage safe sex practices, such as contraception and screening for Sexually Transmitted Infections. Effective at lowering infection rates if the pathogen is sexually transmitted.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Identify Origin'].completed"],
unlocked: false,
completed: false,
},
"Sanitization": {
type:"Repeatable",
description: "Advise sanitization of public spaces or places of frequent contact. Effective at lowering infection rates if the pathogen can survive outside of the host for long periods of time through fomites.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Identify Origin'].completed"],
unlocked: false,
completed: false,
},
"Social Distancing": {
type:"Single Use",
description: "Advise people to limit their physical closeness to each other. Lowers infection rate if the pathogen is transmitted by person-to-person transmission.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Identify Origin'].completed"],
unlocked: false,
completed: false,
},
"Sterilization of Wounds": {
type:"Single Use",
description: "Advise sterilization, treatment and bandaging of open wounds, and washing of hands after contact with blood. This lowers infection rates in the event of blood-borne transmission, and improves mortality rate by lowering risk of septicaemias.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Identify Origin'].completed","variables().researchdatabase['Identify Symptoms'].completed"],
unlocked: false,
completed: false,
},
"Vaccine Clinical Trials": {
type:"Single Use",
description: "After conducting Pre-Clinical Trials, Clinical Trials can begin on Human volunteers.",
delay: 14,
cost: 1000,
requirement: ["variables().labtestdatabase['Vaccine Pre-Clinical Trials'].completed"],
unlocked: false,
completed: false,
},
"Vaccine Rollout": {
type:"Single Use",
description: "After considerable research, development and Testing, vaccines will be rolled out to the public. This considerably improves infection, recovery and mortality rates and has a strong benefit on public morale.",
delay: 10,
cost: 500,
requirement: ["variables().healthmeasuredatabase['Vaccine Clinical Trials'].completed"],
unlocked: false,
completed: false,
},
"Vector Control": {
type:"Repeatable",
description: "Control the spread of disease via vectors, such through the installation of bug nets to limit mosquitoes. Ineffective against pathogens not transmitted via vector.",
delay: 5,
cost: 200,
requirement: ["variables().healthmeasuredatabase['Animal Control'].completed"],
unlocked: false,
completed: false,
},
"Vegetable Handling": {
type:"Single Use",
description: "Advise appropriate washing and preparation of vegetables. Decreases infection rate in the event of certain food-borne or soil-based pathogens.",
delay: 5,
cost: 200,
requirement: ["variables().healthmeasuredatabase['Product Recall'].completed"],
unlocked: false,
completed: false,
},
"Waste Disposal": {
type:"Repeatable",
description: "Improve the infrastructure responsible for collection or disposal of waste, and advise individuals to wash hands after contact with waste. Lowers infection rates if the pathogen is found in waste.",
delay: 5,
cost: 200,
requirement: ["variables().healthmeasuredatabase['Water Purification'].completed"],
unlocked: false,
completed: false,
},
"Water Purification": {
type:"Single Use",
description: "Encourage people to only handle clean, purified water for drinking or cleaning, and advise to boil water when cooking. Lowers infection rates in the event of waterborne transmission.",
delay: 5,
cost: 200,
requirement: ["variables().researchdatabase['Identify Origin'].completed"],
unlocked: false,
completed: false,
}
}>>/*
# End of Databases. Pick a random pathogen, using Javascript's Array.random(array) and Object.keys(object) functions.
# Object.keys() returns an array containing all of the entries in a datamap.
# Array.random() simply returns a random value from the array.
*/
<<set $pathogen to Array.random(Object.keys($pathogendatabase))>>
<<goto Dashboard>>[[DEBUG]]
<<for _i to 0; _i < Object.keys($researchdatabase).length; _i++>><<set $researchdatabase[Object.keys($researchdatabase)[_i]].unlocked to true>><</for>>
<<for _i to 0; _i < Object.keys($labtestdatabase).length; _i++>><<set $labtestdatabase[Object.keys($labtestdatabase)[_i]].unlocked to true>><</for>>
<<for _i to 0; _i < Object.keys($healthmeasuredatabase).length; _i++>><<set $healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_i]].unlocked to true>><</for>>
<<set $reecegreeting to random(0,15)>> <<set $reecevalediction to random(0,15)>><<set _emailgreetings to ["Hello.","Hello $playername!","Hi.","Hi $playername!","Greetings","$playername!","Hey.","Hey $playername!","Anna here,","Annabelle here,","How is my favourite $playername doing?","If it isn't my favourite $playername!","Auntie's here,","Your favourite aunt's here!","Hello Sweetheart,"]>><<set _emailvaledictions to ["Thanks,\n\nAnna.","Goodbye,\n\nAnnabelle.","Bye,\n\nAnna Biotic.","Don't hesitate to get in touch,\n\nAuntie.","I'll get back to work then,\n\nA. Biotic.","Talk to you soon,\n\nAnna.","Auntie.","Annabelle Biotic.","PS: Auntie baked you some cookies!\n\nAnna.","Lots of Love,\n\nAuntie","Auntie's always here for you,\n\nAnnabelle.", "Love you,\n\nAuntie","PS: If you ever get an infection, let me know as I might have something for that.\n\nAuntie Biotic.","Stay Safe $playername,\n\nAnna Biotic","Stay Safe Sweetheart,\n\nAuntie."]>>/*
# This email is found at the bottom of the Application Result passage, and is given when the application result letter is viewed for the first time.
*/[[Back to Inbox |Inbox]] <img src="Assets/Inbox.svg" class="smallicon"><<set $mailindex to $mailname.indexOf("New Unlocks")>><<if $mailread[$mailindex]==false>><<set $annagreeting to random(0,14)>><<set $annavalediction to random(0,14)>><</if>><<set $mailread[$mailindex] to true>>
From: $mailsender[$mailindex]
Received on: $mailfulldate[$mailindex]
<h1>$mailname[$mailindex]</h1>
<<print _emailgreetings[$annagreeting]>>
I just wanted to inform you that some brand new actions have become available at the various departments.
<<if $lastunlocks[0].length > 0>><h2>Research:</h2><<for _i to 0; _i < $lastunlocks[0].length; _i++>><<print _i + 1>>. <<print $lastunlocks[0][_i] +"\n">>
<</for>>
<</if>><<if $lastunlocks[1].length > 0>><h2>Lab Tests:</h2><<for _i to 0; _i < $lastunlocks[1].length; _i++>><<print _i + 1>>. <<print $lastunlocks[1][_i]+"\n">>
<</for>>
<</if>><<if $lastunlocks[2].length > 0>><h2>Health Measures:</h2><<for _i to 0; _i < $lastunlocks[2].length; _i++>><<print _i + 1>>. <<print $lastunlocks[2][_i]+"\n">>
<</for>>
<</if>><<print _emailvaledictions[$annagreeting]>>
<div style="border-top: black dashed 0.5vw;">
Annabelle Biotic, PhD in Microbiology
Lead Microbiologist
Epidemiological
157 Louis Pasteur Avenue
Immunopolis
<div class="banner"><h1><img src="Assets/Epidemiological.png" class="companylogo">pidemiological</h1>
<h2>Cultured Discoveries, Epidemic Recoveries!</h2></div></div><<audio "type" play>><<if $researchchoice == "Identify Pathogen">><<goto "Identify Pathogen">><</if>>/*
# All research uses the first value (Default)
# The user "writes" an email
*/[[Cancel Writing Email|Research]]
To: Reece.Urchin@Epidemiological.com
<h1>Research Request</h1>
Greetings,
I wanted to research $researchchoice.
<<print $researchdatabase[$researchchoice].description>>
Thanks in advance,
$playername.
[[Send Email|Research Check]] <p class="bad">Costs 1 Action and <<set _num to $researchdatabase[$researchchoice].cost>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon"></p>
<p class="neutral"> (You have $actions/$maxactions actions and <<set _num to $money>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to ''>><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (''+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ('' +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = '0'+_j>><<if _j.length == 3>><<set _numstring to ','+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == ''>><<set _numstring to '0'>><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon">)</p>
<<set $actions to $actions - 1>>
<<set $researchdone to $researchdone + 1>>
<<set $money to $money - $researchdatabase[$researchchoice].cost>>
<<if $researchdatabase[$researchchoice].cost > 0>><<set $newmoney to true>><</if>>
<<set _correct to true>>
/*
# When implementing health measures other than simple restrictions, change the [0] to the corresponding array.
*/
<<set $pendingresearch.push([$researchchoice,$pathogendatabase[$pathogen]["Research"][$researchchoice].result,_correct,$researchdatabase[$researchchoice].delay])>>
<<goto Dashboard>><<set _pathogenchoices to ["Escherichia coli","Staphylococcus aureus","Salmonella enterica","Shigella dysinteriae"]>>/*
# All research uses the first value (Default)
# The user "writes" an email
*/[[Cancel Writing Email|Research]]
To: Reece.Urchin@Epidemiological.com
<h1>Research Request</h1>
Greetings,
I wanted to research $researchchoice.
<<print $researchdatabase[$researchchoice].description>>
Based on the lab tests I have conducted, I believe the pathogen causing the outbreak is <<listbox "$pathogenguess">><<optionsfrom _pathogenchoices.shuffle()>><</listbox>>
Thanks in advance,
$playername.
[[Send Email|Identify Pathogen Check]] <p class="bad">Costs 1 Action and $researchdatabase[$researchchoice].cost<img src="Assets/Cytocoins.svg" class="smallicon"></p>
<p class="neutral"> (You have $actions/$maxactions actions and $money<img src="Assets/Cytocoins.svg" class="smallicon">)</p>
<<set $actions to $actions - 1>>
<<set $researchdone to $researchdone + 1>>
<<set $money to $money - $researchdatabase[$researchchoice].cost>>
<<if $researchdatabase[$researchchoice].cost > 0>><<set $newmoney to true>><</if>>
<<if $pathogenguess == $pathogen>><<set _correct to true>><<set _index to 0>><<else>><<set _correct to false>><<set _index to 1>><</if>>
/*
# When implementing health measures other than simple restrictions, change the [0] to the corresponding array.
*/
<<set $pendingresearch.push([$researchchoice,$pathogendatabase[$pathogen]["Research"][$researchchoice].result[_index],_correct,$researchdatabase[$researchchoice].delay])>>
<<goto Dashboard>>[[DEBUG]]
<<for _i to 0; _i < Object.keys($researchdatabase).length; _i++>><<set $researchdatabase[Object.keys($researchdatabase)[_i]].completed to true>><</for>>
<<for _i to 0; _i < Object.keys($labtestdatabase).length; _i++>><<set $labtestdatabase[Object.keys($labtestdatabase)[_i]].completed to true>><</for>>
<<for _i to 0; _i < Object.keys($healthmeasuredatabase).length; _i++>><<set $healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_i]].completed to true>><</for>><<set $researchdone to 999>><<set $labtestsdone to 999>><<set $healthmeasuresdone to 999>>
[[DEBUG]]
<h1>Research</h1>
<<for _i to 0; _i < Object.keys($researchdatabase).length; _i++>><<if $researchdatabase[Object.keys($researchdatabase)[_i]].requirement.length > 0>><<print Object.keys($researchdatabase)[_i] +": " +$researchdatabase[Object.keys($researchdatabase)[_i]].requirement +"\n\n">><</if>><</for>>
<h1>Lab Tests</h1>
<<for _i to 0; _i < Object.keys($labtestdatabase).length; _i++>><<if $labtestdatabase[Object.keys($labtestdatabase)[_i]].requirement.length > 0>><<print Object.keys($labtestdatabase)[_i] +": " +$labtestdatabase[Object.keys($labtestdatabase)[_i]].requirement +"\n\n">><</if>><</for>>
<h1>Health Measures</h1>
<<for _i to 0; _i < Object.keys($healthmeasuredatabase).length; _i++>><<if $healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_i]].requirement.length > 0>><<print Object.keys($healthmeasuredatabase)[_i] +": " +$healthmeasuredatabase[Object.keys($healthmeasuredatabase)[_i]].requirement +"\n\n">><</if>><</for>>[[Back to Dashboard|Dashboard]]
<h3>Pending Research</h3>
<<for _i to 0; _i < $pendingresearch.length; _i++>>
<<print (_i + 1)>>. <<print $pendingresearch[_i][0]>>: <<print $pendingresearch[_i][3]>> day(s) left.
<</for>>[[Back to Dashboard|Dashboard]]
<h3>Pending Lab Tests</h3>
<<for _i to 0; _i < $pendinglabtests.length; _i++>>
<<print (_i + 1)>>. <<print $pendinglabtests[_i][0]>>: <<print $pendinglabtests[_i][4]>> day(s) left.
<</for>>[[Back to Dashboard|Dashboard]]
<h3>Pending Health Measures</h3>
<<for _i to 0; _i < $pendinghealthmeasures.length; _i++>>
<<print (_i + 1)>>. <<print $pendinghealthmeasures[_i][0]>>: <<print $pendinghealthmeasures[_i][4]>> day(s) left.
<</for>>[[DEBUG]]
[[Test 2]]
<<if (($pathogendatabase[$pathogen].infectionrate*$infectionmultiplier) / ($pathogendatabase[$pathogen].recoveryrate*$recoverymultiplier)*($susceptible / ($susceptible + $infected + $recovered)) * $infected < 20) and (($pathogendatabase[$pathogen].infectionrate*$infectionmultiplier) / ($pathogendatabase[$pathogen].recoveryrate*$recoverymultiplier)*($susceptible / ($susceptible + $infected + $recovered)) < 1) and ($infected < 1000) or ($infected == 0)>><h2>Thank you for playing Epidemiological, $playername!</h2>
<<if $successful == true>><p class="good">$epidemicname was successfully stopped after $days days, with <<set _num to $money>><<if _num < 0>>-<<set _num to _num*-1>><</if>><<set _numstring to "">><<for _i to _num; _i gte 1; _i = Math.trunc(_i/1000)>><<if (""+_i).length < 4>><<set _numstring to (_i+_numstring)>><<else>><<for _j to ("" +(_i - (Math.trunc(_i/1000)*1000))); _j.length<4; _j = "0"+_j>><<if _j.length == 3>><<set _numstring to ","+_j+_numstring>><</if>><</for>><</if>><</for>><<if _numstring == "">><<set _numstring to "0">><</if>><<print _numstring>><img src="Assets/Cytocoins.svg" class="smallicon"> remaining!</p><<else>><p class="bad">$epidemicname was not prevented in time. You were fired after working at the company for $days days.</p><</if>>
Please, don't forget to fill out this form to give feedback about your experience:
https://strathsci.qualtrics.com/jfe/form/SV_9WGMkDJ7oGBHrfg
(It consists of 20 questions and will take you about 10 minutes.)[[DEBUG]]
[[Application Result]]
[[Employee Training]]
[[New Unlocks]]
[[Research Results]]
[[Lab Test Results]]
[[Health Measure Results]]
[[Game Success]]
[[Game Failure]]