This page was automatically generated by NetLogo 4.1.1.

The applet requires Java 5 or higher. Java must be enabled in your browser settings. Mac users must have Mac OS X 10.4 or higher. Windows and Linux users may obtain the latest Java from Sun's Java site.


In order for this to work, this file, your model file (Practisim4_quarantinegame2.nlogo), and the file NetLogoLite.jar must all be in the same directory. (You can copy NetLogoLite.jar from the directory where you installed NetLogo.)

The applet will also need access to the sound extension. Copy the entire directory for each required extension into the same directory as the applet.

On some systems, you can test the applet locally on your computer before uploading it to a web server. It doesn't work on all systems, though, so if it doesn't work from your hard drive, please try uploading it to a web server.

You don't need to include everything in this file in your page. If you want, you can just take the HTML code beginning with <applet> and ending with </applet>, and paste it into any HTML file you want. It's even OK to put multiple <applet> tags on a single page.

If NetLogoLite.jar and your model are in different directories, you must modify the archive= and value= lines in the HTML code to point to their actual locations. (For example, if you have multiple applets in different directories on the same web server, you may want to put a single copy of NetLogoLite.jar in one central place and change the archive= lines of all the HTML files to point to that one central copy. This will save disk space for you and download time for your users.)

powered by NetLogo

view/download model file: Practisim4_quarantinegame2.nlogo

WHAT IS IT?

This section could give a general understanding of what the model is trying to show or explain.


HOW IT WORKS

This section could explain what rules the agents use to create the overall behavior of the model.


HOW TO USE IT

This section could explain how to use the model, including a description of each of the items in the interface tab.


THINGS TO NOTICE

This section could give some ideas of things for the user to notice while running the model.


THINGS TO TRY

This section could give some ideas of things for the user to try to do (move sliders, switches, etc.) with the model.


EXTENDING THE MODEL

This section could give some ideas of things to add or change in the procedures tab to make the model more complicated, detailed, accurate, etc.


NETLOGO FEATURES

This section could point out any especially interesting or unusual features of NetLogo that the model makes use of, particularly in the Procedures tab. It might also point out places where workarounds were needed because of missing features.


RELATED MODELS

This section could give the names of models in the NetLogo Models Library or elsewhere which are of related interest.


CREDITS AND REFERENCES

This section could contain a reference to the model's URL on the web if it has one, as well as any other necessary credits or references.


PROCEDURES

;;Extensions Library;;

extensions [sound]

;;Turtle Breeds;;

breed [extractors extractor]
breed [peeps peep]
breed [apeeps apeep]
breed [bpeeps bpeep]
breed [cpeeps cpeep] 
breed [dpeeps dpeep]
breed [epeeps epeep]
breed [qpeeps qpeep]

;;Variables List;;

globals [up lef down righ lift scan pop popstat level score tscore goal time startpop maxpop bio long iat ia ib ic id ie iq dialogue] ;; includes input from buttons the player presses among other globals

patches-own [dirty wall]

turtles-own [energy delay] ;; tracks reproductive readiness of healthy peeps and dpeeps before hatching clocks the amount of time sick peeps have before dying

;;Reporters List;;

to-report timeLeft ;; shows time remaining for player to finish level
  report (time)
end  

to-report extractorScore ;; tallies player's score for level (number of healthy peeps extracted)
  report (score)
end

to-report totalScore ;; tallies players' score for the whole campaign
  report (tscore)
end

to-report popSupport
  report (popstat)
end

to-report bioSphere
  report (bio)
end

to-report currentLevel
  report (level)
end

;;Primary Procedures;;

to setUp
  clear-all
  if "yes" = user-one-of "Welcome to Talahas Extractor! \n In this game, you're Charis, the operator of a spacecraft that siphons ('extracts') livestock in the BioDomes on planet Talahas. Your job is to oversee and harvest livestock from these BioDomes under various conditions. If this is your first time playing (or you enjoy a little back-story), dialogue mode is recommended... \n Run dialogue mode?" ["yes" "no"] 
    [set dialogue true] 
  setCounts
  addExtractor
  infectPatches
  wallPatches
  addPeeps
  infectPeeps
  checkBreeds
end

to setUpX
  clear-plot
  clear-turtles
  clear-patches
  setCounts
  addExtractor
  infectPatches
  wallPatches
  addPeeps
  infectPeeps
  checkBreeds
end

to runGame
  if count peeps = 0
  [gameOver1
  stop]
  if bio <= 0 
  [gameOver2
  stop] 
  if time = 0 and score < goal 
  [gameOver3
  stop] ;; stops game from running when time's up or other criteria fail
  if time = 0 and score >= goal 
  [advanceGame
  stop]
  renewPopulation ;; processes the death and reproduction of new turtles
  useExtractor ;; player-controlled extractor makes its move(s)
  movePeeps ;; peeps wander around the map in pseudo-random fashion
  spreadInfection ;; disease status of turtles updated
  checkBreeds ;; sets appropriate color/ other attributes of diseased turtles
  updateCounts ;; refreshes game statistics and updates to viewer & plots
  if dialogue = true
    [showDialogue] ;; gives 
end

;;Secondary Procedures;;

to setCounts ;; initializes variables and counters pertinent to the level
  if level = 0 [set level 1]
  if level = 1 [startLevel1]
  if level = 2 [startLevel2]
  if level = 3 [startLevel3]
  if level = 4 [startLevel4]
  if level = 5 [startLevel5]
  if level = 6 [startLevel6]
  if level = 7 [startLevel7]
  if level = 8 [startLevel8]
  if level = 9 [startLevel9]
  if level = 10 [startLevel10]
  if level = 11 [startLevel11]
  
  set score 0
  set popstat (list startpop "/" maxpop)
  set scan -1
end

to addExtractor
  create-extractors 1 ;; sets extractor at the center origin of the map
  ask extractors 
  [set shape "circle 2"
  set color blue]
end

to infectPatches
;;while [count patches with [pcolor = brown] < 3]
  ;;[ask one-of patches
    ;;[if count patches with [pcolor = brown] in-radius 5 = 0
      ;;[set pcolor brown]]]
ask patches
  [if abs (pxcor) = 21 or abs (pycor) = 21
    [set pcolor brown
    set dirty true]] 
end

to wallPatches ;; defines impassable terrain for ordinary turtles
if level = 1 
  [;;import-pcolors "jupiterspots.jpg" 
  mapLevel1]
if level = 2 
  [mapLevel2]
if level = 3 
  [mapLevel3]
if level = 4
  [mapLevel4]
if level = 5
  [mapLevel5]
if level = 6
  [mapLevel6]
if level = 7
  [mapLevel7]
if level = 8
  [mapLevel8]
if level = 9
  [mapLevel9]
if level = 10
  [mapLevel10]
end

to addPeeps
  set-default-shape turtles "sheep"
  ;;loop [spawnPeeps]
  create-peeps 20
  ask peeps
    [set color white
    setxy random-xcor random-ycor 
    while [count peeps in-radius 2 > 1 or [dirty] of patch-here = true or [wall] of patch-here = true]
    [setxy random-xcor random-ycor]] ;; randomly seeds peeps across map, with specified minimum distance between peeps
end  

to infectPeeps
  repeat ia ;; determines number of type sick peeps at start
  [ask one-of peeps 
    [set breed apeeps
    set energy 80]]
  repeat ib 
  [ask one-of peeps 
    [set breed bpeeps
    set energy 80]]  
  repeat ic
  [ask one-of peeps 
    [set breed cpeeps
    set delay 40]]
  repeat id
  [ask one-of peeps 
    [set breed dpeeps]]  
  repeat ie
  [ask one-of peeps
    [set breed epeeps
    set delay 20]]
end

to renewPopulation
  ask peeps
    [set energy (energy + (count peeps-here * random 2))] ;; peeps reproductively mature at various rates, accelerated by proximity of mates
  ask peeps 
    [if energy >= long
      [set energy 0
      hatch 2
      die]]
  ;;
  ask apeeps
    [set energy (energy - random 2) ;; infected peeps slowly die
    if energy = 0 [die]]
  ;;
  ask bpeeps
    [set energy (energy - random 2)
    if energy = 0 [die]]
  ;;
  ask cpeeps
    [set delay (delay - 1) ;; delay counts down before cpeep is fully manifest
      if delay = -1 [set energy 80]]
  ask cpeeps
    [set energy (energy - random 2)
    if energy = 0 [die]]
  ;;
  ask dpeeps
    [set energy (energy + random 2)] ;; dpeeps behave ostensibly like normal peeps, until they hatch their sick kin
  ask dpeeps
    [if energy >= (long * .5) ;; dpeeps sprout fake peep offspring which go on to produce apeeps and more dpeeps
      [set color white
      hatch 1]
    if energy >= (long)  
      [set energy 80
      hatch-apeeps 1
      set energy 0
      hatch 1
      die]]  
  ;;
  ask epeeps
    [set delay (delay - 1)
      if delay = -1 [set energy 80]]
  ask epeeps
    [set energy (energy - random 2)
    if energy = 0 [die]]  
end

to useExtractor
  ;;if (key =! 0)
  if (up = 1)
      [moveUp]
  if (lef = 1)
      [moveLeft]
  if (down = 1)
      [moveDown]
  if (righ = 1)    
      [moveRight]
  if (lift = 1)
    [extractPeep]
  if (scan = 1)
    [showEnergy]  
    set up 0
    set lef 0
    set down 0
    set righ 0
    set lift 0
end

to movePeeps
  ask peeps 
  ;;if not can-move? 0.5 [rt 180] 
    [rt random 360
    if [wall] of patch-ahead 1 = true
      [if heading >= 315 or heading < 45 or (heading >= 135 and heading < 225)
        [set heading (180 - heading)] 
      if (heading >= 45 and heading < 135) or (heading >= 225 and heading < 315)
        [set heading (- heading)]]
    fd 0.5] ;; peeps turn around randomly and go forward or 'bounce off' a wall in front of them
  ask apeeps
   [rt random 360
    if [wall] of patch-ahead 1 = true
      [if heading >= 315 or heading < 45 or (heading >= 135 and heading < 225)
        [set heading (180 - heading)] 
      if (heading >= 45 and heading < 135) or (heading >= 225 and heading < 315)
        [set heading (- heading)]]
    fd 0.5]
  ;;
  ask bpeeps
    [rt random 360
    if [wall] of patch-ahead 1 = true
      [if heading >= 315 or heading < 45 or (heading >= 135 and heading < 225)
        [set heading (180 - heading)] 
      if (heading >= 45 and heading < 135) or (heading >= 225 and heading < 315)
        [set heading (- heading)]]
   fd 0.25] ;; due to symptoms, bpeeps move slower than other peeps
  ;;
  ask cpeeps
    [rt random 360
    if [wall] of patch-ahead 1 = true
      [if heading >= 315 or heading < 45 or (heading >= 135 and heading < 225)
        [set heading (180 - heading)] 
      if (heading >= 45 and heading < 135) or (heading >= 225 and heading < 315)
        [set heading (- heading)]]
   fd 0.5]
  ;;
  ask dpeeps
      [rt random 360
    if [wall] of patch-ahead 1 = true
      [if heading >= 315 or heading < 45 or (heading >= 135 and heading < 225)
        [set heading (180 - heading)] 
      if (heading >= 45 and heading < 135) or (heading >= 225 and heading < 315)
        [set heading (- heading)]]
   fd 0.5]
  ;;
  ask epeeps
    [if delay >= 0
      [rt random 360
      if [wall] of patch-ahead 1 = true
        [if heading >= 315 or heading < 45 or (heading >= 135 and heading < 225)
          [set heading (180 - heading)]
        if (heading >= 45 and heading < 135) or (heading >= 225 and heading < 315)
         [set heading (- heading)]]
      fd 0.5]
    if delay < 0 ;; After Delay, epeeps move faster than others and ignore movement restrictions imposed by walls (tearing them down instead)
      [rt random 360
      fd 1.0
      ask patch-here
        [set wall false
        set pcolor brown]]]       
end

to spreadInfection
  ask apeeps
    [let victim peeps-here
    ask victim 
      [set breed apeeps
      set energy 80]] ;; apeeps infect healthy peeps on contact
  ask bpeeps
    [let victim peeps in-radius 2
      ask victim 
        [set breed bpeeps
        set energy 80]] ;; bpeeps infect healthy peeps in the local area
  ask cpeeps
    [let victim peeps-here
    ask victim 
      [set breed cpeeps
      set delay 40]]  
  ;;dpeeps infect other peeps indirectly
  ask epeeps
    [let victim peeps-here
    ask victim 
      [set breed epeeps
      set delay 20]] 
  ask qpeeps
    [let victim peeps-here
    ask victim [set breed qpeeps]]  
  ;;
  ask patches
    [if dirty = true
      [ask peeps-here 
      [let strain random 20
      if strain < ia 
      [set breed apeeps
      set energy 80]
      if strain < (ia + ib) and strain >= ia 
      [set breed bpeeps
      set energy 80]
      if strain < (ia + ib + ic) and strain >= (ia + ib) 
      [set breed cpeeps]
      if strain <  (ia + ib + ic + id) and strain >= (ia + ib + ic) 
      [set breed dpeeps]
      if strain < (ia + ib + ic + id + ie) and strain >= (ia + ib + ic + id) 
      [set breed epeeps]]]]     
  ;;
  ask peeps 
    [let infection random 10000
    if infection <= iat
      [let strain random 20
      if strain < ia [set breed apeeps]
      if strain < (ia + ib) and strain >= ia [set breed bpeeps]
      if strain < (ia + ib + ic) and strain >= (ia + ib) [set breed cpeeps]
      if strain <  (ia + ib + ic + id) and strain >= (ia + ib + ic) [set breed dpeeps]
      if strain < (ia + ib + ic + id + ie) and strain >= (ia + ib + ic + id) [set breed epeeps]]]   
end

to checkBreeds
  ask turtles
    [if breed = peeps [set color white]
    if breed = apeeps [set color yellow]
    if breed = bpeeps [set color orange]
    if breed = cpeeps and delay = 0 [set color green]
    if breed = dpeeps and energy <= (long * .5) [set color violet] ;; makes this breed visually indistinguishable from normal peeps *except when contained as purple
    if breed = epeeps and delay = 0 [set color red]]
end

to updateCounts
  set pop count turtles - 1
  set popstat (list pop "/" maxpop)
  if pop > maxpop [set bio bio - (pop - maxpop)]
  ;;Biosphere Vitals Plot
  set-current-plot "BioSphere"
  set-current-plot-pen "Healthy"
  plot count peeps
  set-current-plot-pen "Sick"
  plot (count apeeps + count bpeeps + count cpeeps + count dpeeps + count epeeps)
  set-current-plot-pen "Integrity"
  plot bio / 10   
  set time time - 1  
end

;;Tertiary Procedures;;

to moveUp
  ask extractors 
    [set heading 0
    fd 2]
end

to moveLeft
  ask extractors
    [set heading 270
    fd 2]
end

to moveDown
  ask extractors
    [set heading 180
    fd 2]
end

to moveRight
  ask extractors
    [set heading 90
    fd 2]
end

to extractPeep
  ask extractors
  [let points peeps in-radius 2
  ask points [set score score + 1]
  let target other turtles in-radius 2
  ask target [die]]
end


to showEnergy
  ask turtles
  [set label-color blue 
  set label energy]
end 

;;to tagPeeps ask peeps [set label who] end

;;Special Level Procedures;;

to startLevel1 ;; introductory level. No sick peeps and slower reproduction
  set goal 100
  set time 1000
  set startpop 20
  set maxpop 80
  set bio 800
  set long 80
end

to startLevel2
  set goal 150
  set time 1200
  set startpop 30
  set maxpop 100
  set bio 1000
  set long 80
  set ia 5
end

to startLevel3
  set goal 75
  set time 1500
  set startpop 30
  set maxpop 100
  set bio 1000
  set long 80
  set iat 20 ;; Plague settings are tweaked here
  set ia 5 
end

to startLevel4
  set time 2000
  set startpop 30
  set maxpop 100
  set bio 1000
  set long 80
  set iat 2
  set ia 4
  set ib 4
end

to startLevel5
  set time 1200
  set startpop 30
  set maxpop 100
  set bio 1000
  set long 80
  set iat 2
  set ia 0
  set ib 0
  set ic 5
end

to startLevel6
  set time 2000
  set startpop 40
  set maxpop 120
  set bio 1200
  set long 80
  set iat 5
  set ia 3
  set ib 3
  set ic 3
end

to startLevel7
  set time 1500
  set startpop 30
  set maxpop 100
  set bio 1000
  set long 80
  set iat 2
  set ia 5
  set ib 0
  set ic 0
  set id 5
end

to startLevel8
  set time 2000
  set startpop 50
  set maxpop 150
  set bio 1500
  set long 50
  set iat 5
  set ia 4
  set ib 4
  set ic 4
  set id 4
end

to startLevel9
  set time 1200
  set startpop 40
  set maxpop 120
  set bio 1200
  set long 80
  set iat 10
  set ia 4
  set ib 4
  set ic 4
  set id 4
  set ie 4
end

to startLevel10     
  set time 1200
  set startpop 30
  set maxpop 100
  set bio 1000
  set long 50
  set iat 20
  set ia 4
  set ib 4
  set ic 4
  set id 4
  set ie 4
end

to startLevel11
  set time 2000
  set startpop 25
  set maxpop 999999
  set bio 1000
  set long 80
  set iat 0
  set ia 0
  set ib 0
  set ic 0
  set id 0
  set ie 0
  set iq 7
end

to mapLevel1
ask patch 0 0
  [set wall true
  set pcolor green] ;; starting pod wall  
ask patches 
  [if abs (pxcor) >= 20 or abs (pycor) >= 20
    [set wall true
    set pcolor green]] ;; thick protective wall around
ask patches
  [if ((pxcor > 3 and pxcor < 6) and (pycor > 3 and pycor < 12)) or ((pxcor > 3 and pxcor < 12) and (pycor > 3 and pycor < 6))
  or ((pxcor > -6 and pxcor < -3) and (pycor > -12 and pycor < -3)) or ((pxcor > -12 and pxcor < -3) and (pycor > -6 and pycor < -3))
  or ((pxcor > 3 and pxcor < 6) and (pycor > -12 and pycor < -3)) or ((pxcor > 3 and pxcor < 12) and (pycor > -6 and pycor < -3))
  or ((pxcor > -6 and pxcor < -3) and (pycor > 3 and pycor < 12)) or ((pxcor > -12 and pxcor < -3) and (pycor > 3 and pycor < 6))   
    [set wall true
    set pcolor green]]              
end

to mapLevel2
ask patch 0 0
  [set wall true
  set pcolor green] ;; starting pod wall 
ask patches
  [if (abs (pycor) <= 13) and ((pxcor >= -14 and pxcor <= -13) or (pxcor >= 13 and pxcor <= 14))
    [set wall true
    set pcolor green]]
ask patches
  [if abs (pxcor) = 21 or abs (pycor) = 21
    [set wall true
    set pcolor green]] ;; outer surrounding wall
ask patches
  [if (abs (pycor) = 21) and ((pxcor >= -14 and pxcor <= -13) or (pxcor >= 19 and pxcor <= 21))
    [set wall false
    set pcolor black]] ;; outer wall holes  
end  

to mapLevel3
ask patches
  [if abs (pxcor) = 21 or abs (pycor) = 21
    [set wall true
    set pcolor green]] ;; outer surrounding wall
ask patches
  [if abs (pxcor) = 12 or abs (pycor) = 12 ;; inner surrounding wall
    [set wall true
    set pcolor green]]
ask patches
   [if (pxcor > -10 and pxcor < 0) or (pycor > 0 and pycor < 10) ;; set holes in walls
     [set wall false
     set pcolor black]]   
end

to mapLevel4 ;; giant land
ask patches 
  [if (pxcor >= -2 and pxcor <= 2) and (pycor >= -2 and pycor <= 2)
    [set wall true
    set pcolor green]] ;; a larger 'start pod'
ask patches
  [if abs (pxcor) >= 19 or abs (pycor) >= 19
    [set wall true
    set pcolor green]] ;; huge thick outer wall
ask patches
  [if ((pxcor >= -21 and pxcor <= 19) and (pycor >= 13 and pycor <= 18)) or ((pxcor >= -18 and pxcor <= -13) and (pycor >= -21 and pycor <= -19))
  or ((pxcor >= 13 and pxcor <= 18) and (pycor >= 19 and pycor <= 21)) or ((pxcor >= 19 and pxcor <= 21) and (pycor >= -18 and pycor <= -13))    
    [set wall false
    set pcolor black]] ;; great holes in the great wall  
ask patches
  [if ((pxcor >= 11 and pxcor <= 15) and (pycor <= 10)) or ((pxcor >= -13 and pxcor <= -9) and (pycor <= 10))
    [set wall true
    set pcolor green]]

end
to mapLevel5 ;; folding-in corridor
end
to mapLevel6
end
to mapLevel7
end
to mapLevel8
end
to mapLevel9
end
to mapLevel10
end

;;Game Progress and Messages;;

to gameOver1
  user-message (word "In your negligence, all healthy livestock have been wiped out. GAME OVER")
end

to gameOver2
  user-message (word "Your creatures have overrun the biosphere and destroyed it from within. GAME OVER")
end

to gameOver3
  user-message (word "You have not reached your extraction quota in the allotted time. GAME OVER")
end

to advanceGame
  user-message (word "Congragulations. You have harvested" score "peeps and earn a BioSphere maintanence bonus of" floor (bio / 10))
  if level = 1
    [user-message (word "OVERSEER: You've met your first quota, well done. Perhaps you'll prove useful to the corporation afterall...")]  
  set tscore (tscore + (score + (floor (bio / 10))))
  set level (level + 1)
  setUpX
end  
  
to showDialogue
  if level = 1 and time = 999
    [user-message (word "OVERSEER: Welcome to work at PeepCo. You'll be operating the extractor unit in Talahas sector 13Ya. Before being sent to the larger fields, you will learn about our collection procedure and basic population management here. I now defer you to your new assistant android, ROYJO.")
    user-message (word "ROYJO: Greetings, Miss Charis. I have been assigned to accompany you for training and the duration of your employment. If it would ease our interaction significantly, please call me Joe.")
    user-message (word "CHARIS: An android for an assistant, huh? This company is already making me feel like royalty...")
    user-message (word "ROYJO: Regardless of what my built-in sarcasm detector tells me, Miss Charis, my duty is to make sure you're properly trained...")
    user-message (word "CHARIS: This is going to be a long day... need coffee...")]
 
  if level = 1 and time = 990
    [user-message (word "ROYJO: See the blue circle in the center of the map? This is your Extractor. You control its movement with the WASD keys...")]     
;; 
  if level = 1 and time = 980 
    [user-message (word "ROYJO: Now notice the white critters bumbling around the map... These are Extraterrestria Ptalaha, better known as 'peeps'.")
    user-message (word "CHARIS: Cute little buggers, aren't they?")
    user-message (word "ROYJO: If you watch them for a while, you'll notice their numbers start increasing somewhat")]
;;
  if level = 1 and time = 900
    [user-message (word "ROYJO: Another tip you might appreciate: If you ever need a quick break, you can pause and unpause the game with the P button")]
    
  if level = 1 and time = 800
    [user-message (word "ROYJO: The peeps are reproducing through the process of binary fission (splitting in two periodically)")
    user-message (word "CHARIS: That sounds even better than mammalian pregnancy") 
    user-message (word "ROYJO: When peeps come into contact with other peeps, the genetic exchange accelerates their metabolism, propelling them to multiply even more quickly")  
    user-message (word "ROYJO: Essentially, the more peeps there are around to reproduce, the faster the peep-ulation will continue growing")
    user-message (word "ROYJO: You can track exactly how many peeps are in this BioDome by glancing at the left number under 'Upkeep'")]
;; 
   if level = 1 and time = 750
     [user-message (word "ROYJO: Feel free to move around the Biodome. You'll notice that unlike our peeps, the Extractor isn't restricted by walls.")
     user-message (word "ROYJO: Even better, you can take advantage of the Biodome's shape to exit one edge and emerge from the opposite side of the map! This will prove to be a handy shortcut when things get frantic.")]
;;     
   if level = 1 and time = 700  
     [user-message (word "ROYJO: Ultimately, we have to get the population under control, before the peeps multiply beyond the Biosphere's capacity")
     user-message (word "ROYJO: The right-side number tells you the total number of peeps our Biodome can support at one time before it starts collapsing")
     user-message (word "ROYJO: To trim the herd down, we need to start 'extracting' peeps from the Biosphere")]
;;  
   if level = 1 and time = 675
     [user-message (word "ROYJO: When you're ready, find a nice group of peeps and move your Extractor torwards them")
     user-message (word "ROYJO: Press O (as in Otter) when you're hovering over a few of the beasts.") 
     user-message (word "This 'extracts' them from the biosphere to our facility (where they are processed for their organs). Don't worry, PeepCo assures us their slaughter is humane.")
     user-message (word "ROYJO: Ultimately, the number of peeps you harvest determines how many points you're awarded. That would be your 'Score'...")]
;;     
   if level = 1 and time = 650
     [user-message (word "ROYJO: As you start seeing, the task of harvesting from a BioDome is a delicate matter of balance. You want to keep enough peeps around to increase output, without allowing their population overwhelming the BioSphere's means of support") 
     user-message (word "ROYJO: Note in case of emergency, the BioSphere can temporarily withstand overpopulation (see the brown line on the 'BioSphere' data output for structural integrity). However, gross overpopulation will cause it to collapse more quickly, giving you less time to bring things back under control")  
     user-message (word "ROYJO: Above all else, make sure you do NOT kill all your peeps. Peep output will cease, and the company will have to repopulate the area. Ergo, you'll be fired!")] 
;;
  if level = 1 and time = 600
    [user-message (word "ROYJO: Your population is still high, I hope? We need to be able to extract 100 peeps before our time runs out!")]
;; 
  if level = 1 and time = 100
    [user-message (word "ROYJO: We got to start wrapping up pretty soon. We've extracted " score " peeps and the minimum is 100...")
    user-message (word "CHARIS: I'll try not to get TOO excited...")]
;;
  if level = 2 and time = 1199
    [user-message (word "ROYJO: Unfortunately, not all our BioSpheres can be completely sterilized from intruders.")
    user-message (word "ROYJO: On this agricultural planet, there are numerous parasites that infest peeps' bodies and use them as vessels to infect more hosts. See those sickly yellow peeps? They're already infested and need to be removed before they come into physical contact with healthy bodies... ")
    user-message (word "CHARIS: So now we're competing with alien body-snatchers, great...")
    user-message (word "ROYJO: Most of these parasites are contracted along the outer edges of the BioSphere, where we can't monitor things directly and the barriers may be dillapidated. Hence, we must make a point to keep most of our herd in the middle of the BioSphere and stop too many peeps from wandering out to the edges.")
    user-message (word "CHARIS: I'll keep that in mind.")]
;;
  if level = 3 and time = 1499
    [user-message (word "ROYJO: Making matters more unpredictable, many BioSpheres have not been properly decontaminated to begin with.")   
    user-message (word "ROYJO: Data on this particular BioSphere shows continuous infection of the populace from pervasive airborne spores")
    user-message (word "CHARIS: I guess asking management to fix it would just make matters too easy, huh?")
    user-message (word "ROYJO: The situation is urgent. You must stop any outbreaks that occur before they threaten your entire stock")]

  if level = 4 and time = 1999
  
  [user-message (word "CHARIS: What are those hideous things?")
  user-message (word "ROYJO: Those orange peeps are infested with another type of parasite. These buggers put extra stress on the hosts' bodies, reducing them to slow lumbering bags of disease.")
  user-message (word "CHARIS: Those poor bastards. At least it'll be easy to mop them up before they wreck everything else.")
  user-message (word "ROYJO: Not necessarily. This parasite has the unsavory ability to spray eggs from its host onto other nearby peeps. Left unchecked, this highly contagious parasite can spread through your populace like wildfire.") 
  user-message (word "ROYJO: We should try to separate the herds out a little so we won't have a chain of infestations...")
  user-message (word "CHARIS: I know all about herding, so we should be set then!")]

end