Pokemon GO

Pokemon GO preview image

1 collaborator

Default-person Jameson Reeves (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 5.3.1 • Viewed 225 times • Downloaded 13 times • Run 0 times
Download the 'Pokemon GO' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;; This was created with old data and assumptions. By the time I was almost finished with this code,
;; I found this page which could help improve upon the data: http://pkmngotrading.com/forum/ .
;; Furthermore, the rarity of some pokemon (e.g. eevee) do not seem to align with other reports.

;; button referenced commands are Title-Cased with a dash

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MODEL GLOBALS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

globals [
  sprout?
  tgrass ;; grass type
  tfire ;; fire type
  twater
  tbug
  tnormal
  tpoison
  telectric
  tground
  tfairy
  tfighting
  tpsychic
  trock
  tghost
  tice
  tdragon
  tflying
  caught-pokemon
  uncaught-pokemon
  ]

breed [ trainer a-trainer ]
breed [ rivals a-rival ]
breed [ pokemon a-pokemon ]

trainer-own [ target ]
rivals-own [ target ]
;; number assigns pokemon to pokemon (e.g. bulbasaur)
;; commonness assigns pokemon to commonness
;; ptype assigns pokemon to a type (for sprout on patch types)
;; energy makes pokemon ephemeral
;; alive-number is assigned if they are caught, otherwise 0
pokemon-own [
  number
  ptype1
  ptype2 ;; internal recorded note for sprout at specific patches
  commonness
  energy
  alive-number
  ]

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MODEL SETUP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to Setup
  clear-all
  outside-world ;; sets up the patches
  city ;; sets up the city composition
  sprout-player ;; sprouts player
  setup-player ;; sets up the trainer
  sprout-rival ;; sprouts trainer's rivals
  setup-rival ;; sets up the trainer's rivals
  reset-ticks
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PATCH CREATION
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; North of the outside-world is Someone's or Bill's PC. That is where we store the Pokemon.

to outside-world
  ;; Water
  ask patches [
    if (pxcor = 19) or (pxcor = 20) and (pycor <= 20) and (pycor >= -20) [
      set pcolor blue
    ]
  ]
  ;; Grass
  ask patches [
    if (pxcor = -19) or (pxcor = -20) and (pycor <= 20) and (pycor >= -20) [
      set pcolor green
    ]
  ]
  ;; Wetlands
  ask patches [
    if (pycor = 19) or (pycor = 20) and (pxcor <= 18) and (pxcor >= -18) [
      set pcolor turquoise
    ]
  ]
  ;; Beach
  ask patches [
    if (pycor = -19) or (pycor = -20) and (pxcor <= 18) and (pxcor >= -18) [
      set pcolor 28
    ]
  ]
end 

to city
      ;; Concrete
      ;; tells random patches (the number decided by a slider) to turn gray
      ;; as long as they are not in the outside world nor already assigned
  ask n-of Concrete patches [
    if (pxcor <= 18) and (pxcor >= -18) and (pycor <= 18) and (pycor >= -18) and pcolor = black [
      set pcolor gray
    ]
  ]
    ;; Open Spaces
  ask n-of Open-Spaces patches [
    if (pxcor <= 18) and (pxcor >= -18) and (pycor <= 18) and (pycor >= -18) and pcolor = black [
      set pcolor lime
    ]
  ]
    ;; Landmarks
  ask n-of Landmarks patches [
    if (pxcor <= 18) and (pxcor >= -18) and (pycor <= 18) and (pycor >= -18) and pcolor = black [
      set pcolor brown
    ]
  ]
    ;; Power Plants
  ask n-of Power-Plants patches [
    if (pxcor <= 18) and (pxcor >= -18) and (pycor <= 18) and (pycor >= -18) and pcolor = black [
      set pcolor yellow
    ]
  ]
    ;; Hospitals
  ask n-of Hospitals patches [
    if (pxcor <= 18) and (pxcor >= -18) and (pycor <= 18) and (pycor >= -18) and pcolor = black [
      set pcolor white
    ]
  ]
    ;; Gyms : not Pokemon gyms, but human gyms
  ask n-of Gyms patches [
    if (pxcor <= 18) and (pxcor >= -18) and (pycor <= 18) and (pycor >= -18) and pcolor = black [
      set pcolor violet
    ]
  ]
    ;; Cinemas
  ask n-of Cinemas patches [
    if (pxcor <= 18) and (pxcor >= -18) and (pycor <= 18) and (pycor >= -18) and pcolor = black [
      set pcolor sky
    ]
  ]
    ;; Houses-Of-Worship
  ask n-of Houses-Of-Worship patches [
    if (pxcor <= 18) and (pxcor >= -18) and (pycor <= 18) and (pycor >= -18) and pcolor = black [
      set pcolor red
    ]
  ]
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TRAINER CREATION
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Initially I had set it up to create trainer/rivals and send them to randomxycor in the setup button.
;; I noticed those turtles would move around a lot more than once per tick, while the pokemon
;; would only move once per tick. I decided to try to set up the random location of trainer/rivals by
;; following the same method: having them be sprouted by random patches.

;; trainer sprouts at random location

to sprout-player
  ask one-of patches [
    sprout-trainer 1
    ]
end 

;; trainer is given its characteristics

to setup-player
  ask trainer [
    set color Trainer-Color
    set shape "trainer"
    set size 2
  ]
end 

;; rivals sprout at random locations

to sprout-rival
  ;; allows the user to determine how much competition there is
  ask n-of Number-OF-Rivals patches [
    sprout-rivals 1
    ]
end 

;; rival is given its characteristics

to setup-rival
  ask rivals [
    set color Rivals-Color
    set shape "person"
    set size 1.5
  ]
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MODEL GO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to Pokemon-Go-!
  move-players
  catch-pokemons
  sprout-pokemons
  define-pokemon-by-type
  move-pokemons
  sprout-types
  kill-pokemons
  tick
end 

to move-players
  ;; switch off = passive and switch on = active
  ifelse Trainer-Actively-Searches = TRUE [
    ask trainer [
      ;; Active:
      ;; if the trainer is within a distance set by user to the highest pokemon within that distance
      ;; they face that target and move forward twice as fast (trainer is more excited)
      ;; otherwise trainer wanders randomly and slowly
      set target max-one-of pokemon with [ number > 0 ] [ commonness ]
      ifelse target != nobody and distance target <= Pokemon-Radar-Distance [
        face target
        fd 2
    ] [
      rt random 360
      fd 1
    ]
  ]
  ] [
      ;; Passive:
      ;; the trainer wanders randomly and slowly always
      ;; only catches pokemon if trainer receives a notification on phone
      ;; that is a real function in the game
    ask trainer [
      rt random 360
      fd 1
    ]
  ]
  ifelse Rivals-Actively-Search = TRUE [
    ask rivals [
      set target max-one-of pokemon with [ number > 0 ] [ commonness ]
      ifelse target != nobody and distance target <= Pokemon-Radar-Distance [
        face target
        fd 2
    ] [
      rt random 360
      fd 1
    ]
  ]
  ] [
    ask rivals [
      rt random 360
      fd 1
  ]
  ]
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CATCH POKEMON
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to catch-pokemons
  ask trainer [
    ;; identifies the highest level pokemon around
    let best-pokemon max-one-of pokemon with [ number > 0 ] in-radius Catch-Radius [ commonness ]
    ;; catches the highest level pokemon around
    if best-pokemon != nobody [
      ask best-pokemon [
        set caught-pokemon caught-pokemon + 1
        ;; tells the pokemon to go to their waiting corner
        if number >= 1 and number <= 41 [ setxy -21 + number 24 ]
        if number >= 42 and number <= 82 [ setxy -21 + (number - 41) 23 ]
        if number >= 83 and number <= 123 [ setxy -21 + (number - 82) 22 ]
        if number >= 124 and number <= 164 [ setxy -21 + (number - 123) 21 ]
        ;; assigns them a value to associate them with previous value
        ;; clears them from being caught again (number < 0)
        ;; assigns them a row
        ;; saves them from dying (energy -1)
        if number >= 1 and number <= 41 [
          set alive-number number
          set number -1
        ]
        if number >= 42 and number <= 82 [
          set alive-number number
          set number -2
        ]
        if number >= 83 and number <= 123 [
          set alive-number number
          set number -3
        ]
        if number >= 124 and number <= 164 [
          set alive-number number
          set number -4
        ]
        set energy -1
      ]
    ]
  ]
  ask rivals [
    ;; catches the highest level pokemon around
    let best-pokemon max-one-of pokemon with [ number > 0 ] in-radius Catch-Radius [ commonness ]
    if best-pokemon != nobody [
      ask best-pokemon [ die ]
    ]
  ]
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INDIVIDUAL POKEMON SPROUT RATES + ATTRIBUTION OF SOME CHARACTERISTICS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Pokemon sprout rates were calculated based on the rarity percentages from https://pokeassistant.com/main/pokemonstats
;; Pokemon sprout at rate: 1 per (60 / rarity*100) -> round to the nearest integer
;; For example, Bulbasaur has a rarity percentage of 1.18% so we will see it about 1 time for every 51
;; Pokemon move styles and lifespans are based on the same values
;; Very Common Pokemon:  1/3 -> 1/39
;; Common Pokemon: 1/40 -> 1/99
;; Uncommon Pokemon:  1/100 -> 1/299
;; Rare Pokemon: 1/300 and 1/857
;; Very Rare Pokemon: 1/6000 except
;; Special Pokemon: Venusaur, Charizard, Blastoise, Dragonite, and
;; Legendary Pokemon: Ditto, and
;; Unseen Pokemon (will never sprout in this simulation as there has yet to be a sighting:
;; Articuno, Zapdos, Moltres, and Mewtwo
;; Special and Legendary choices are a bit arbitrary/subjective based on experience and research
;; Pokemon move and have a life expectancey according to rare category
;; For example, caterpie is very common and will move short distances for long periods of time
;; while ditto is legendary and will move long distances for short periods of time

to sprout-pokemons
  ;; bulbasaur appears 1 out of 51
  set sprout? ( 1 + random 51 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 1
        set ptype1 "grass"
        set ptype2 "poison"
        common-pokemon
      ]
    ]
  ]
  ;; ivysaur appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 2
        set ptype1 "grass"
        set ptype2 "poison"
        rare-pokemon
      ]
    ]
  ]
  ;; venusaur appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 3
        set ptype1 "grass"
        set ptype2 "poison"
        special-pokemon
      ]
    ]
  ]
  ;; charmander appears 1 out of 261
  set sprout? ( 1 + random 261 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 4
        set ptype1 "fire"
        uncommon-pokemon
      ]
    ]
  ]
  ;; charmeleon appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 5
        set ptype1 "fire"
        rare-pokemon
      ]
    ]
  ]
  ;; charizard appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 6
        set ptype1 "grass"
        set ptype2 "flying"
        special-pokemon
      ]
    ]
  ]
  ;; squirtle appears 1 out of 107
  set sprout? ( 1 + random 107 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 7
        set ptype1 "water"
        uncommon-pokemon
      ]
    ]
  ]
  ;; wartortle appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 8
        set ptype1 "water"
        rare-pokemon
      ]
    ]
  ]
  ;; blastoise appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 9
        set ptype1 "water"
        special-pokemon
      ]
    ]
  ]
  ;; caterpie appears 1 out of 16
  set sprout? ( 1 + random 16 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 10
        set ptype1 "bug"
        very-common-pokemon
      ]
    ]
  ]
  ;; metapod appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 11
        set ptype1 "bug"
        rare-pokemon
      ]
    ]
  ]
  ;; butterfree appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 12
        set ptype1 "bug"
        set ptype2 "flying"
        very-rare-pokemon
      ]
    ]
  ]
  ;; weedle appears 1 out of 9
  set sprout? ( 1 + random 9 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 13
        set ptype1 "bug"
        set ptype2 "poison"
        very-common-pokemon
      ]
    ]
  ]
  ;; kakuna appears 1 out of 107
  set sprout? ( 1 + random 107 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 14
        set ptype1 "bug"
        set ptype2 "poison"
        uncommon-pokemon
      ]
    ]
  ]
  ;; beedrill appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 15
        set ptype1 "bug"
        set ptype2 "poison"
        rare-pokemon
      ]
    ]
  ]
  ;; pidgey appears 1 out of 3
  set sprout? ( 1 + random 3 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 16
        set ptype1 "normal"
        set ptype2 "flying"
        very-common-pokemon
      ]
    ]
  ]
  ;; pidgeotto appears 1 out of 52
  set sprout? ( 1 + random 52 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 17
        set ptype1 "normal"
        set ptype2 "flying"
        common-pokemon
      ]
    ]
  ]
  ;; pidgeot appears 1 out of 231
  set sprout? ( 1 + random 231 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 18
        set ptype1 "normal"
        set ptype2 "flying"
        uncommon-pokemon
      ]
    ]
  ]
  ;; rattata appears 1 out of 5
  set sprout? ( 1 + random 5 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 19
        set ptype1 "normal"
        very-common-pokemon
      ]
    ]
  ]
  ;; raticate appears 1 out of 261
  set sprout? ( 1 + random 261 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 20
        set ptype1 "normal"
        uncommon-pokemon
      ]
    ]
  ]
  ;; spearow appears 1 out of 16
  set sprout? ( 1 + random 16 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 21
        set ptype1 "normal"
        set ptype2 "flying"
        very-common-pokemon
      ]
    ]
  ]
  ;; fearow appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 22
        set ptype1 "normal"
        set ptype2 "flying"
        rare-pokemon
      ]
    ]
  ]
  ;; ekans appears 1 out of 24
  set sprout? ( 1 + random 24 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 23
        set ptype1 "poison"
        very-common-pokemon
      ]
    ]
  ]
  ;; arbok appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 24
        set ptype1 "poison"
        rare-pokemon
      ]
    ]
  ]
  ;; pikachu appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 25
        set ptype1 "electric"
        rare-pokemon
      ]
    ]
  ]
  ;; raichu appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 26
        set ptype1 "electric"
        very-rare-pokemon
      ]
    ]
  ]
  ;; sandshrew appears 1 out of 54
  set sprout? ( 1 + random 54 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 27
        set ptype1 "ground"
        common-pokemon
      ]
    ]
  ]
  ;; sandslash appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 28
        set ptype1 "ground"
        rare-pokemon
      ]
    ]
  ]
  ;; nidoran-1 appears 1 out of 44
  set sprout? ( 1 + random 44 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 29
        set ptype1 "poison"
        common-pokemon
      ]
    ]
  ]
  ;; nidorina appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 30
        set ptype1 "poison"
        rare-pokemon
      ]
    ]
  ]
  ;; nidoqueen appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 31
        set ptype1 "poison"
        set ptype2 "ground"
        very-rare-pokemon
      ]
    ]
  ]
  ;; nidoran-2 appears 1 out of 38
  set sprout? ( 1 + random 38 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 32
        set ptype1 "poison"
        very-common-pokemon
      ]
    ]
  ]
  ;; nidorino appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 33
        set ptype1 "poison"
        rare-pokemon
      ]
    ]
  ]
  ;; nidoking appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 34
        set ptype1 "poison"
        set ptype2 "ground"
        very-rare-pokemon
      ]
    ]
  ]
  ;; clefairy appears 1 out of 40
  set sprout? ( 1 + random 40 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 35
        set ptype1 "fairy"
        common-pokemon
      ]
    ]
  ]
  ;; clefable appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 36
        set ptype1 "fairy"
        very-rare-pokemon
      ]
    ]
  ]
  ;; vulpix appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 37
        set ptype1 "fire"
        rare-pokemon
      ]
    ]
  ]
  ;; ninetales appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 38
        set ptype1 "fire"
        very-rare-pokemon
      ]
    ]
  ]
  ;; jigglypuff appears 1 out of 182
  set sprout? ( 1 + random 182 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 39
        set ptype1 "normal"
        set ptype2 "fairy"
        uncommon-pokemon
      ]
    ]
  ]
  ;; wigglytuff appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 40
        set ptype1 "normal"
        set ptype2 "fairy"
        very-rare-pokemon
      ]
    ]
  ]
  ;; zubat appears 1 out of 3
  set sprout? ( 1 + random 3 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 41
        set ptype1 "poison"
        set ptype2 "flying"
        very-common-pokemon
      ]
    ]
  ]
  ;; golbat appears 1 out of 91
  set sprout? ( 1 + random 91 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 42
        set ptype1 "poison"
        set ptype2 "flying"
        common-pokemon
      ]
    ]
  ]
  ;; oddish appears 1 out of 49
  set sprout? ( 1 + random 49 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 43
        set ptype1 "grass"
        set ptype2 "poison"
        common-pokemon
      ]
    ]
  ]
  ;; gloom appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 44
        set ptype1 "grass"
        set ptype2 "poison"
        rare-pokemon
      ]
    ]
  ]
  ;; vileplume appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 45
        set ptype1 "grass"
        set ptype2 "poison"
        very-rare-pokemon
      ]
    ]
  ]
  ;; paras appears 1 out of 23
  set sprout? ( 1 + random 23 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 46
        set ptype1 "bug"
        set ptype2 "grass"
        very-common-pokemon
      ]
    ]
  ]
  ;; parasect appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 47
        set ptype1 "bug"
        set ptype2 "grass"
        rare-pokemon
      ]
    ]
  ]
  ;; venonat appears 1 out of 18
  set sprout? ( 1 + random 18 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 48
        set ptype1 "bug"
        set ptype2 "poison"
        very-common-pokemon
      ]
    ]
  ]
  ;; venomoth appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 49
        set ptype1 "bug"
        set ptype2 "poison"
        rare-pokemon
      ]
    ]
  ]
  ;; diglett appears 1 out of 200
  set sprout? ( 1 + random 200 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 50
        set ptype1 "ground"
        uncommon-pokemon
      ]
    ]
  ]
  ;; dugtrio appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 51
        set ptype1 "ground"
        very-rare-pokemon
      ]
    ]
  ]
  ;; meowth appears 1 out of 154
  set sprout? ( 1 + random 154 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 52
        set ptype1 "normal"
        uncommon-pokemon
      ]
    ]
  ]
  ;; persian appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 53
        set ptype1 "normal"
        rare-pokemon
      ]
    ]
  ]
  ;; psyduck appears 1 out of 79
  set sprout? ( 1 + random 79 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 54
        set ptype1 "water"
        common-pokemon
      ]
    ]
  ]
  ;; golduck appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 55
        set ptype1 "water"
        rare-pokemon
      ]
    ]
  ]
  ;; mankey appears 1 out of 95
  set sprout? ( 1 + random 95 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 56
        set ptype1 "fighting"
        common-pokemon
      ]
    ]
  ]
  ;; primeape appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 57
        set ptype1 "fighting"
        very-rare-pokemon
      ]
    ]
  ]
  ;; growlithe appears 1 out of 65
  set sprout? ( 1 + random 65 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 58
        set ptype1 "fire"
        common-pokemon
      ]
    ]
  ]
  ;; arcanine appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 59
        set ptype1 "fire"
        very-rare-pokemon
      ]
    ]
  ]
  ;; poliwag appears 1 out of 49
  set sprout? ( 1 + random 49 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 60
        set ptype1 "water"
        common-pokemon
      ]
    ]
  ]
  ;; poliwhirl appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 61
        set ptype1 "water"
        rare-pokemon
      ]
    ]
  ]
  ;; poliwrath appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 62
        set ptype1 "water"
        set ptype2 "fighting"
        very-rare-pokemon
      ]
    ]
  ]
  ;; abra appears 1 out of 167
  set sprout? ( 1 + random 167 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 63
        set ptype1 "psychic"
        uncommon-pokemon
      ]
    ]
  ]
  ;; kadabra appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 64
        set ptype1 "psychic"
        very-rare-pokemon
      ]
    ]
  ]
  ;; alakazam appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 65
        set ptype1 "psychic"
        very-rare-pokemon
      ]
    ]
  ]
  ;; machop appears 1 out of 130
  set sprout? ( 1 + random 130 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 66
        set ptype1 "fighting"
        uncommon-pokemon
      ]
    ]
  ]
  ;; machoke appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 67
        set ptype1 "fighting"
        very-rare-pokemon
      ]
    ]
  ]
  ;; machamp appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 68
        set ptype1 "fighting"
        very-rare-pokemon
      ]
    ]
  ]
  ;; bellsprout appears 1 out of 37
  set sprout? ( 1 + random 37 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 69
        set ptype1 "grass"
        set ptype2 "poison"
        very-common-pokemon
      ]
    ]
  ]
  ;; weepinbell appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 70
        set ptype1 "grass"
        set ptype2 "poison"
        rare-pokemon
      ]
    ]
  ]
  ;; victreebel appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 71
        set ptype1 "grass"
        set ptype2 "poison"
        very-rare-pokemon
      ]
    ]
  ]
  ;; tentacool appears 1 out of 182
  set sprout? ( 1 + random 182 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 72
        set ptype1 "water"
        set ptype2 "poison"
        uncommon-pokemon
      ]
    ]
  ]
  ;; tentacruel appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 73
        set ptype1 "water"
        set ptype2 "poison"
        rare-pokemon
      ]
    ]
  ]
  ;; geodude appears 1 out of 63
  set sprout? ( 1 + random 63 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 74
        set ptype1 "rock"
        set ptype2 "ground"
        common-pokemon
      ]
    ]
  ]
  ;; graveler appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 75
        set ptype1 "rock"
        set ptype2 "ground"
        rare-pokemon
      ]
    ]
  ]
  ;; golem appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 76
        set ptype1 "rock"
        set ptype2 "ground"
        very-rare-pokemon
      ]
    ]
  ]
  ;; ponyta appears 1 out of 130
  set sprout? ( 1 + random 130 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 77
        set ptype1 "fire"
        uncommon-pokemon
      ]
    ]
  ]
  ;; rapidash appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 78
        set ptype1 "fire"
        very-rare-pokemon
      ]
    ]
  ]
  ;; slowpoke appears 1 out of 261
  set sprout? ( 1 + random 261 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 79
        set ptype1 "water"
        set ptype2 "psychic"
        uncommon-pokemon
      ]
    ]
  ]
  ;; slowbro appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 80
        set ptype1 "water"
        set ptype2 "psychic"
        very-rare-pokemon
      ]
    ]
  ]
  ;; magnemite appears 1 out of 200
  set sprout? ( 1 + random 200 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 83 ;; real number is 81
        set ptype1 "electric"
        uncommon-pokemon
      ]
    ]
  ]
  ;; magneton appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 84 ;; real number is 82
        set ptype1 "electric"
        very-rare-pokemon
      ]
    ]
  ]
  ;; farfetch'd appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 85 ;; real number is 83
        set ptype1 "normal"
        set ptype2 "flying"
        very-rare-pokemon
      ]
    ]
  ]
  ;; doduo appears 1 out of 11
  set sprout? ( 1 + random 11 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 81 ;; real number is 84 (was causing the graph to overscale)
        set ptype1 "normal"
        set ptype2 "flying"
        very-common-pokemon
      ]
    ]
  ]
  ;; dodrio appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 82 ;; real number is 85
        set ptype1 "normal"
        set ptype2 "flying"
        rare-pokemon
      ]
    ]
  ]
  ;; seel appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 86
        set ptype1 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; dewgong appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 87
        set ptype1 "water"
        set ptype2 "ice"
        very-rare-pokemon
      ]
    ]
  ]
  ;; grimer appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 88
        set ptype1 "poison"
        very-rare-pokemon
      ]
    ]
  ]
  ;; muk appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 89
        set ptype1 "poison"
        very-rare-pokemon
      ]
    ]
  ]
  ;; shellder appears 1 out of 300
  set sprout? ( 1 + random 300 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 90
        set ptype1 "water"
        rare-pokemon
      ]
    ]
  ]
  ;; cloyster appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 91
        set ptype1 "water"
        set ptype2 "ice"
        very-rare-pokemon
      ]
    ]
  ]
  ;; gastly appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 92
        set ptype1 "ghost"
        set ptype2 "poison"
        very-rare-pokemon
      ]
    ]
  ]
  ;; haunter appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 93
        set ptype1 "ghost"
        set ptype2 "poison"
        very-rare-pokemon
      ]
    ]
  ]
  ;; gengar appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 94
        set ptype1 "ghost"
        set ptype2 "poison"
        very-rare-pokemon
      ]
    ]
  ]
  ;; onix appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 95
        set ptype1 "rock"
        set ptype2 "ground"
        very-rare-pokemon
      ]
    ]
  ]
  ;; drowzee appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 96
        set ptype1 "psychic"
        very-rare-pokemon
      ]
    ]
  ]
  ;; hypno appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 97
        set ptype1 "psychic"
        very-rare-pokemon
      ]
    ]
  ]
  ;; krabby appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 98
        set ptype1 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; kingler appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 99
        set ptype1 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; voltorb appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 100
        set ptype1 "electric"
        very-rare-pokemon
      ]
    ]
  ]
  ;; electrode appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 101
        set ptype1 "electric"
        very-rare-pokemon
      ]
    ]
  ]
  ;; exeggcute appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 102
        set ptype1 "grass"
        set ptype2 "psychic"
        very-rare-pokemon
      ]
    ]
  ]
  ;; exeggutor appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 103
        set ptype1 "grass"
        set ptype2 "psychic"
        very-rare-pokemon
      ]
    ]
  ]
  ;; cubone appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 104
        set ptype1 "ground"
        very-rare-pokemon
      ]
    ]
  ]
  ;; marowak appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 105
        set ptype1 "ground"
        very-rare-pokemon
      ]
    ]
  ]
  ;; hitmonlee appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 106
        set ptype1 "fighting"
        very-rare-pokemon
      ]
    ]
  ]
  ;; hitmonchan appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 107
        set ptype1 "fighting"
        very-rare-pokemon
      ]
    ]
  ]
  ;; lickitung appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 108
        set ptype1 "normal"
        very-rare-pokemon
      ]
    ]
  ]
  ;; koffing appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 109
        set ptype1 "poison"
        very-rare-pokemon
      ]
    ]
  ]
  ;; weezing appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 110
        set ptype1 "poison"
        very-rare-pokemon
      ]
    ]
  ]
  ;; rhyhorn appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 111
        set ptype1 "ground"
        set ptype2 "rock"
        very-rare-pokemon
      ]
    ]
  ]
  ;; rhydon appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 112
        set ptype1 "ground"
        set ptype2 "rock"
        very-rare-pokemon
      ]
    ]
  ]
  ;; chansey appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 113
        set ptype1 "normal"
        very-rare-pokemon
      ]
    ]
  ]
  ;; tangela appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 114
        set ptype1 "grass"
        very-rare-pokemon
      ]
    ]
  ]
  ;; kangaskhan appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 115
        set ptype1 "normal"
        very-rare-pokemon
      ]
    ]
  ]
  ;; horsea appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 116
        set ptype1 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; seadra appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 117
        set ptype1 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; goldeen appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 118
        set ptype1 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; seaking appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 119
        set ptype1 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; staryu appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 120
        set ptype1 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; starmie appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 121
        set ptype1 "water"
        set ptype2 "psychic"
        very-rare-pokemon
      ]
    ]
  ]
  ;; mr. mime appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 122
        set ptype1 "psychic"
        set ptype2 "fairy"
        very-rare-pokemon
      ]
    ]
  ]
  ;; scyther appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 123
        set ptype1 "flying"
        set ptype2 "bug"
        very-rare-pokemon
      ]
    ]
  ]
  ;; jynx appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 124
        set ptype1 "ice"
        set ptype1 "psychic"
        very-rare-pokemon
      ]
    ]
  ]
  ;; electabuzz appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 125
        set ptype1 "electric"
        very-rare-pokemon
      ]
    ]
  ]
  ;; magmar appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 126
        set ptype1 "fire"
        very-rare-pokemon
      ]
    ]
  ]
  ;; pinsir appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 127
        set ptype1 "bug"
        very-rare-pokemon
      ]
    ]
  ]
  ;; tauros appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 128
        set ptype1 "normal"
        very-rare-pokemon
      ]
    ]
  ]
  ;; magikarp appears 1 out of 857
  set sprout? ( 1 + random 857 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 129
        set ptype1 "water"
        rare-pokemon
      ]
    ]
  ]
  ;; gyarados appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 130
        set ptype1 "water"
        set ptype2 "flying"
        very-rare-pokemon
      ]
    ]
  ]
  ;; lapras appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 131
        set ptype1 "water"
        set ptype2 "ice"
        very-rare-pokemon
      ]
    ]
  ]
  ;; ditto appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 132
        set ptype1 "normal"
        legendary-pokemon
      ]
    ]
  ]
  ;; eevee appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 133
        set ptype1 "normal"
        very-rare-pokemon
      ]
    ]
  ]
  ;; vaporeon appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 134
        set ptype1 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; jolteon appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 135
        set ptype1 "electric"
        very-rare-pokemon
      ]
    ]
  ]
  ;; flareon appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 136
        set ptype1 "fire"
        very-rare-pokemon
      ]
    ]
  ]
  ;; porygon appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 137
        set ptype1 "normal"
        very-rare-pokemon
      ]
    ]
  ]
  ;; omanyte appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 138
        set ptype1 "rock"
        set ptype2 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; omastar appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 139
        set ptype1 "rock"
        set ptype2 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; kabuto appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 140
        set ptype1 "rock"
        set ptype2 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; kabutops appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 141
        set ptype1 "rock"
        set ptype2 "water"
        very-rare-pokemon
      ]
    ]
  ]
  ;; aerodactyl appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 142
        set ptype1 "rock"
        set ptype2 "flying"
        very-rare-pokemon
      ]
    ]
  ]
  ;; snorlax appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 143
        set ptype1 "normal"
        very-rare-pokemon
      ]
    ]
  ]

  ;; articuno, 144, ice, flying
  ;; zapdos, 145, electric, flying
  ;; moltres, 146, fire, flying

  ;; dratini appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 147
        set ptype1 "dragon"
        very-rare-pokemon
      ]
    ]
  ]
  ;; dragonair appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 148
        set ptype1 "dragon"
        very-rare-pokemon
      ]
    ]
  ]
  ;; dragonite appears 1 out of 6000
  set sprout? ( 1 + random 6000 )
  if sprout? = 1 [
    ask one-of patches [
      sprout-pokemon 1 [
        set number 149
        set ptype1 "dragon"
        set ptype2 "flying"
        special-pokemon
      ]
    ]
  ]

  ;; mewtwo, 150, psychic
  ;; mew, 151, psychic
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SPROUT BY TYPE OF PATCH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to sprout-types
  ;; sets which pokemon (their numbers) are associated with their type (e.g. 1 = bulbasaur)
  set tgrass [ 1 2 3 43 44 45 46 47 69 70 71 102 103 114 ]
  set tfire [ 4 5 6 37 38 58 59 77 78 126 136 ]
  set twater [ 7 8 9 54 55 60 61 62 72 73 79 80 86 87 90 91 98 99 116 117 118 119 120 121 129 130 131 134 138 139 140 141 ]
  set tbug [ 10 11 12 13 14 15 46 47 48 49 123 127 ]
  set tnormal [ 16 17 18 19 20 21 22 39 40 52 53 85 81 82 108 113 115 128 132 133 137 143 ]
  set tpoison [ 1 2 3 13 14 15 23 24 29 30 31 32 33 34 41 42 43 44 45 48 49 69 70 71 72 73 88 89 92 93 94 109 110 ]
  set telectric [ 25 26 83 84 100 101 125 135 ]
  set tground [ 27 28 31 34 50 51 74 75 76 95 104 105 111 112 ]
  set tfairy [ 35 36 39 40 122 ]
  set tfighting [ 56 57 62 66 67 68 106 107 ]
  set tpsychic [ 63 64 65 79 80 96 97 102 103 121 122 124 ]
  set trock [ 74 75 76 95 111 112 138 139 140 141 142 ]
  set tghost [ 92 93 94 ]
  set tice [ 87 91 124 131 ]
  set tdragon [ 147 148 149 ]
  set tflying [ 6 12 16 17 18 21 22 41 42 85 81 82 123 130 142 149 ]

  ;; water sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let waterpatch round ((count patches with [ pcolor = blue ]) / (1 + random (count patches with [ pcolor = blue ])) )
    ask n-of waterpatch patches with [ pcolor = blue ] [
      water-sprout
    ]
  ]
  if sprout? = 2 [
    let waterpatch round ((count patches with [ pcolor = blue ]) / (1 + random (count patches with [ pcolor = blue ])) )
    ask n-of waterpatch patches with [ pcolor = blue ] [
      poison-sprout
    ]
  ]
  if sprout? = 3 [
    let waterpatch round ((count patches with [ pcolor = blue ]) / (1 + random (count patches with [ pcolor = blue ])) )
    ask n-of waterpatch patches with [ pcolor = blue ] [
      ice-sprout
    ]
  ]

  ;; grass sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let grasspatch round ((count patches with [ pcolor = green ]) / (1 + random (count patches with [ pcolor = green ])) )
    ask n-of grasspatch patches with [ pcolor = green ] [
      grass-sprout
    ]
  ]
  if sprout? = 2 [
    let grasspatch round ((count patches with [ pcolor = green ]) / (1 + random (count patches with [ pcolor = green ])) )
    ask n-of grasspatch patches with [ pcolor = green ] [
      bug-sprout
    ]
  ]
  if sprout? = 3 [
    let grasspatch round ((count patches with [ pcolor = green ]) / (1 + random (count patches with [ pcolor = green ])) )
    ask n-of grasspatch patches with [ pcolor = green ] [
      psychic-sprout
    ]
  ]
  if sprout? = 4 [
    let grasspatch round ((count patches with [ pcolor = green ]) / (1 + random (count patches with [ pcolor = green ])) )
    ask n-of grasspatch patches with [ pcolor = green ] [
      flying-sprout
    ]
  ]

  ;; wetland sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let wetlandpatch round ((count patches with [ pcolor = turquoise ]) / (1 + random (count patches with [ pcolor = turquoise ])) )
    ask n-of wetlandpatch patches with [ pcolor = turquoise ] [
      poison-sprout
    ]
  ]

  ;; beach sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let beachpatch round ((count patches with [ pcolor = 28 ]) / (1 + random (count patches with [ pcolor = 28 ])) )
    ask n-of beachpatch patches with [ pcolor = 28 ] [
      ground-sprout
    ]
  ]
  if sprout? = 2 [
    let beachpatch round ((count patches with [ pcolor = 28 ]) / (1 + random (count patches with [ pcolor = 28 ])) )
    ask n-of beachpatch patches with [ pcolor = 28 ] [
      psychic-sprout
    ]
  ]

  ;; concrete sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let concretepatch round ((count patches with [ pcolor = gray ]) / (1 + random (count patches with [ pcolor = gray ])) )
    ask n-of concretepatch patches with [ pcolor = gray ] [
      fire-sprout
    ]
  ]
  if sprout? = 2 [
    let concretepatch round ((count patches with [ pcolor = gray ]) / (1 + random (count patches with [ pcolor = gray ])) )
    ask n-of concretepatch patches with [ pcolor = gray ] [
      normal-sprout
    ]
  ]
  if sprout? = 3 [
    let concretepatch round ((count patches with [ pcolor = gray ]) / (1 + random (count patches with [ pcolor = gray ])) )
    ask n-of concretepatch patches with [ pcolor = gray ] [
      ground-sprout
    ]
  ]
  if sprout? = 4 [
    let concretepatch round ((count patches with [ pcolor = gray ]) / (1 + random (count patches with [ pcolor = gray ])) )
    ask n-of concretepatch patches with [ pcolor = gray ] [
      rock-sprout
    ]
  ]

  ;; open space sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let openspacepatch round ((count patches with [ pcolor = lime ]) / (1 + random (count patches with [ pcolor = lime ])) )
    ask n-of openspacepatch patches with [ pcolor = lime ] [
      grass-sprout
    ]
  ]
  if sprout? = 2 [
    let openspacepatch round ((count patches with [ pcolor = lime ]) / (1 + random (count patches with [ pcolor = lime ])) )
    ask n-of openspacepatch patches with [ pcolor = lime ] [
      bug-sprout
    ]
  ]
  if sprout? = 3 [
    let openspacepatch round ((count patches with [ pcolor = lime ]) / (1 + random (count patches with [ pcolor = lime ])) )
    ask n-of openspacepatch patches with [ pcolor = lime ] [
      ground-sprout
    ]
  ]
  if sprout? = 4 [
    let openspacepatch round ((count patches with [ pcolor = lime ]) / (1 + random (count patches with [ pcolor = lime ])) )
    ask n-of openspacepatch patches with [ pcolor = lime ] [
      psychic-sprout
    ]
  ]
  if sprout? = 5 [
    let openspacepatch round ((count patches with [ pcolor = lime ]) / (1 + random (count patches with [ pcolor = lime ])) )
    ask n-of openspacepatch patches with [ pcolor = lime ] [
      ghost-sprout
    ]
  ]
  if sprout? = 6 [
    let openspacepatch round ((count patches with [ pcolor = lime ]) / (1 + random (count patches with [ pcolor = lime ])) )
    ask n-of openspacepatch patches with [ pcolor = lime ] [
      flying-sprout
    ]
  ]

  ;; landmarks sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let landmarkpatch round ((count patches with [ pcolor = brown ]) / (1 + random (count patches with [ pcolor = brown ])) )
    ask n-of landmarkpatch patches with [ pcolor = brown ] [
      fairy-sprout
    ]
  ]
  if sprout? = 2 [
    let landmarkpatch round ((count patches with [ pcolor = brown ]) / (1 + random (count patches with [ pcolor = brown ])) )
    ask n-of landmarkpatch patches with [ pcolor = brown ] [
      dragon-sprout
    ]
  ]

  ;; power plant sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let powerplantpatch round ((count patches with [ pcolor = yellow ]) / (1 + random (count patches with [ pcolor = yellow ])) )
    ask n-of powerplantpatch patches with [ pcolor = yellow ] [
      electric-sprout
    ]
  ]

  ;; hospital sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let hospitalpatch round ((count patches with [ pcolor = white ]) / (1 + random (count patches with [ pcolor = white ])) )
    ask n-of hospitalpatch patches with [ pcolor = white ] [
      psychic-sprout
    ]
  ]

  ;; gym sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let gympatch round ((count patches with [ pcolor = violet ]) / (1 + random (count patches with [ pcolor = violet ])) )
    ask n-of gympatch patches with [ pcolor = violet ] [
      fighting-sprout
    ]
  ]

  ;; cinema sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let cinemapatch round ((count patches with [ pcolor = sky ]) / (1 + random (count patches with [ pcolor = sky ])) )
    ask n-of cinemapatch patches with [ pcolor = sky ] [
      ghost-sprout
    ]
  ]

  ;; house of worship sprout
  set sprout? ( 1 + random 100 )
  if sprout? = 1 [
    let houseofworshippatch round ((count patches with [ pcolor = red ]) / (1 + random (count patches with [ pcolor = red ])) )
    ask n-of houseofworshippatch patches with [ pcolor = red ] [
      fairy-sprout
    ]
  ]
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; POKEMON TYPES FOR SPROUT BY TYPE OF PATCH + ATTRIBUTION OF SOME CHARACTERISTICS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; grass type pokemon

to grass-sprout
  sprout-pokemon 1 [
    set number one-of tgrass
    ifelse number != 46 and number != 47 [ set ptype1 "grass" ] [ set ptype1 "bug" ]
    if number != 46 or number != 47 or number != 102 or number != 103 or number != 114 [ set ptype2 "poison" ]
    if number = 46 or number = 47 [ set ptype2 "grass" ]
    if number = 102 or number = 103 [ set ptype2 "psychic" ]
    if number = 200 [
      very-common-pokemon
    ]
    if number = 54 or number = 60 [
      common-pokemon
    ]
    if number = 7 or number = 72 or number = 79 [
      uncommon-pokemon
    ]
    if number = 8 or number = 55 or number = 61 or number = 73 or number = 90 or number = 129 [
      rare-pokemon
    ]
    if number = 62 or number = 80 or number = 86 or number = 87 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; fire type pokemon

to fire-sprout
  sprout-pokemon 1 [
    set number one-of tfire
    set ptype1 "fire"
    if number = 6 [ set ptype2 "flying" ]
    if number = 200 [
      very-common-pokemon
    ]
    if number = 58 [
      common-pokemon
    ]
    if number = 4 or number = 77 [
      uncommon-pokemon
    ]
    if number = 5 or number = 37 or number = 129[
      rare-pokemon
    ]
    if number = 38 or number = 59 or number = 78 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; water type pokemon

to water-sprout
  sprout-pokemon 1 [
    set number one-of twater
    ifelse number != 138 or number != 139 or number != 140 or number != 141 [ set ptype1 "water" ] [ set ptype1 "rock" set ptype2 "water" ]
    if number = 62 [ set ptype2 "fighting" ]
    if number = 72 or number = 73 [ set ptype2 "poison" ]
    if number = 79 or number = 80 or number = 121 [ set ptype2 "psychic" ]
    if number = 87 or number = 91 or number = 131 [ set ptype2 "ice" ]
    if number = 130 [ set ptype2 "flying" ]
    if number = 13 or number = 23 or number = 32 or number = 41 or number = 48 or number = 69 [
      very-common-pokemon
    ]
    if number = 1 or number = 29 or number = 42 or number = 43 [
      common-pokemon
    ]
    if number = 14 or number = 72 [
      uncommon-pokemon
    ]
    if number = 15 or number = 24 or number = 30 or number = 33 or number = 44 or number = 49 or number = 70 or number = 73 or number = 129 [
      rare-pokemon
    ]
    if number = 31 or number = 34 or number = 45 or number = 71 or number = 88 or number = 89 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; bug type pokemon

to bug-sprout
  sprout-pokemon 1 [
    set number one-of tbug
    set ptype1 "bug"
    if number = 12 or number = 123 [ set ptype2 "flying" ]
    if number = 13 or number = 14 or number = 15 or number = 48 or number = 49 [ set ptype2 "poison" ]
    if number = 46 or number = 47 [ set ptype2 "grass" ]
    if number = 10 or number = 13 or number = 46 or number = 48 [
      very-common-pokemon
    ]
    if number = 200 [
      common-pokemon
    ]
    if number = 14 [
      uncommon-pokemon
    ]
    if number = 11 or number = 15 or number = 47 or number = 49 or number = 129 [
      rare-pokemon
    ]
    if number = 12 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; normal type pokemon

to normal-sprout
  sprout-pokemon 1 [
    set number one-of tnormal
    set ptype1 "normal"
    if number = 16 or number = 17 or number = 18 or number = 21 or number = 22 or number = 85 or number = 81 or number = 82 [ set ptype2 "flying" ]
    if number = 39 or number = 40 [ set ptype2 "fairy" ]
    if number = 16 or number = 19 or number = 21 or number = 81 [
      very-common-pokemon
    ]
    if number = 17 [
      common-pokemon
    ]
    if number = 18 or number = 20 or number = 39 or number = 52 [
      uncommon-pokemon
    ]
    if number = 22 or number = 53 or number = 82 or number = 129 [
      rare-pokemon
    ]
    if number = 40 or number = 85 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; poison type pokemon

to poison-sprout
  sprout-pokemon 1 [
    set number one-of tpoison
    if number = 1 or number = 2 or number = 3 or number = 43 or number = 44 or number = 45 or number = 69 or number = 70 or number = 71 [ set ptype1 "grass" set ptype2 "poison" ]
    if number = 13 or number = 14 or number = 15 or number = 48 or number = 49 [ set ptype1 "bug" set ptype2 "poison" ]
    ;; split these so the line wasn't too long
    if number = 23 or number = 24 or number = 29 or number = 30 or number = 32 [ set ptype1 "poison" ]
    if number = 33 or number = 88 or number = 89 or number = 109 or number = 110 [ set ptype1 "poison" ]
    if number = 72 or number = 73 [ set ptype1 "water" set ptype2 "poison" ]
    if number = 92 or number = 93 or number = 94 [ set ptype1 "ghost" set ptype2 "poison" ]
    if number = 31 or number = 34 [ set ptype1 "poison" set ptype2 "ground" ]
    if number = 41 or number = 42 [ set ptype1 "poison" set ptype2 "flying" ]
    if number = 13 or number = 23 or number = 32 or number = 41 or number = 48 or number = 69 [
      very-common-pokemon
    ]
    if number = 1 or number = 29 or number = 42 or number = 43 [
      common-pokemon
    ]
    if number = 14 or number = 72 [
      uncommon-pokemon
    ]
    if number = 15 or number = 24 or number = 30 or number = 33 or number = 44 or number = 49 or number = 70 or number = 73 or number = 129 [
      rare-pokemon
    ]
    if number = 31 or number = 34 or number = 45 or number = 71 or number = 88 or number = 89 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; electric type pokemon

to electric-sprout
  sprout-pokemon 1 [
    set number one-of telectric
    set ptype1 "electric"
    if number = 200 [
      very-common-pokemon
    ]
    if number = 200 [
      common-pokemon
    ]
    if number = 83 [
      uncommon-pokemon
    ]
    if number = 25 or number = 129 [
      rare-pokemon
    ]
    if number = 26 or number = 84 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; ground type pokemon

to ground-sprout
  sprout-pokemon 1 [
    set number one-of tground
    ifelse number != 31 or number != 34 or number != 74 or number != 75 or number != 76 or number != 95 [ set ptype1 "ground" ] [ set ptype2 "ground" ]
    if number = 31 or number = 34 [ set ptype1 "poison" ]
    if number = 74 or number = 75 or number = 76 or number = 95 [ set ptype1 "rock" ]
    if number = 200 [
      very-common-pokemon
    ]
    if number = 27 or number = 74 [
      common-pokemon
    ]
    if number = 50 [
      uncommon-pokemon
    ]
    if number = 28 or number = 75 or number = 129 [
      rare-pokemon
    ]
    if number = 31 or number = 34 or number = 51 or number = 76 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; fairy type pokemon

to fairy-sprout
  sprout-pokemon 1 [
    set number one-of tfairy
    ifelse number = 35 or number = 36 [ set ptype1 "fairy" ] [ set ptype2 "fairy" ]
    if number = 39 or number = 40 [ set ptype1 "normal" ]
    if number = 122 [ set ptype1 "psychic" ]
    if number = 200 [
      very-common-pokemon
    ]
    if number = 35 [
      common-pokemon
    ]
    if number = 39 [
      uncommon-pokemon
    ]
    if number = 129 or number = 129 [
      rare-pokemon
    ]
    if number = 36 or number = 40 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; fighting type pokemon

to fighting-sprout
  sprout-pokemon 1 [
    set number one-of tfighting
    ifelse number != 62 [ set ptype1 "fighting" ] [ set ptype1 "water" set ptype2 "fighting" ]
    if number = 200 [
      very-common-pokemon
    ]
    if number = 56 [
      common-pokemon
    ]
    if number = 66 [
      uncommon-pokemon
    ]
    if number = 200 or number = 129 [
      rare-pokemon
    ]
    if number = 57 or number = 62 or number = 67 or number = 68 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; psychic type pokemon

to psychic-sprout
  sprout-pokemon 1 [
    set number one-of tpsychic
    ifelse number = 63 or number = 64 or number = 65 or number = 96 or number = 97 or number = 122 [ set ptype1 "psychic" ] [ set ptype2 "psychic" ]
    if number = 79 or number = 80 or number = 121 [ set ptype1 "water" ]
    if number = 102 or number = 103 [ set ptype1 "grass" ]
    if number = 124 [ set ptype1 "ice" ]
    if number = 122 [ set ptype2 "fairy" ]
    if number = 200 [
      very-common-pokemon
    ]
    if number = 200 [
      common-pokemon
    ]
    if number = 63 or number = 79 [
      uncommon-pokemon
    ]
    if number = 200 or number = 129 [
      rare-pokemon
    ]
    if number = 64 or number = 65 or number = 80 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; rock type pokemon

to rock-sprout
  sprout-pokemon 1 [
    set number one-of trock
    if number = 74 or number = 75 or number = 76 or number = 95 [ set ptype1 "rock" set ptype2 "ground" ]
    if number = 138 or number = 139 or number = 140 or number = 141 [ set ptype1 "rock" set ptype2 "water" ]
    if number = 142 [ set ptype1 "rock" set ptype2 "flying" ]
    if number = 111 or number = 112 [ set ptype1 "ground" set ptype2 "rock" ]
    if number = 200 [
      very-common-pokemon
    ]
    if number = 74 [
      common-pokemon
    ]
    if number = 200 [
      uncommon-pokemon
    ]
    if number = 75 or number = 129 [
      rare-pokemon
    ]
    if number = 76 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; ghost type pokemon

to ghost-sprout
  sprout-pokemon 1 [
    set number one-of tghost
    set ptype1 "ghost"
    set ptype2 "poison"
    if number = 200 [
      very-common-pokemon
    ]
    if number = 200 [
      common-pokemon
    ]
    if number = 200 [
      uncommon-pokemon
    ]
    if number = 129 [
      rare-pokemon
    ]
    if number >= 91 and number <= 150 and number != 129 and number != 132 [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; ice type pokemon

to ice-sprout
  sprout-pokemon 1 [
    set number one-of tice
    if number = 87 or number = 91 or number = 131 [ set ptype1 "water" set ptype2 "ice" ]
    if number = 124 [ set ptype1 "ice" set ptype2 "psychic" ]
    if number = 200 [
      very-common-pokemon
    ]
    if number = 200 [
      common-pokemon
    ]
    if number = 200 [
      uncommon-pokemon
    ]
    if number = 129 [
      rare-pokemon
    ]
    if number = 87 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; dragon type pokemon

to dragon-sprout
  sprout-pokemon 1 [
    set number one-of tdragon
    set ptype1 "dragon"
    if number = 149 [ set ptype2 "flying" ]
    if number = 200 [
      very-common-pokemon
    ]
    if number = 200 [
      common-pokemon
    ]
    if number = 200 [
      uncommon-pokemon
    ]
    if number = 129 [
      rare-pokemon
    ]
    if number >= 91 and number <= 150 and number != 129 and number != 132 [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;; flying type pokemon

to flying-sprout
  sprout-pokemon 1 [
    set number one-of tflying
    if number = 16 or number = 17 or number = 18 or number = 21 or number = 22 or number = 85  or number = 81 or number = 82 [ set ptype1 "normal" ]
    if number = 12 or number = 123 [ set ptype1 "bug" ]
    if number = 41 or number = 42 [ set ptype1 "poison" ]
    if number = 6 [ set ptype1 "fire" ]
    if number = 130 [ set ptype1 "water" ]
    if number = 142 [ set ptype1 "rock" ]
    if number = 149 [ set ptype1 "dragon" ]
    set ptype2 [ "flying" ]
    if number = 16 or number = 21 or number = 41 or number = 81 [
      very-common-pokemon
    ]
    if number = 17 or number = 42 [
      common-pokemon
    ]
    if number = 18 [
      uncommon-pokemon
    ]
    if number = 22 or number = 82 [
      rare-pokemon
    ]
    if number = 12 or number = 85 or (number >= 91 and number <= 150 and number != 129 and number != 132) [
      very-rare-pokemon
    ]
    if number = 3 or number = 6 or number = 9 or number = 149 [
          special-pokemon
    ]
    if number = 132 [
         legendary-pokemon
    ]
  ]
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FURTHER ATTRIBUTION OF CHARACTERISTICS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to define-pokemon-by-type
  ;; coloring of pokemon
  ask pokemon [
      if ptype1 = "grass" [ set color green ]
      if ptype1 = "fire" [ set color red ]
      if ptype1 = "water" [ set color blue ]
      if ptype1 = "bug" [ set color lime ]
      if ptype1 = "normal" [ set color 7 ]
      if ptype1 = "poison" [ set color violet ]
      if ptype1 = "electric" [ set color yellow ]
      if ptype1 = "ground" [ set color brown ]
      if ptype1 = "fairy" [ set color pink ]
      if ptype1 = "fighting" [ set color orange ]
      if ptype1 = "psychic" [ set color magenta ]
      if ptype1 = "rock" [ set color 2 ]
      if ptype1 = "ghost" [ set color sky ]
      if ptype1 = "ice" [ set color cyan ]
      if ptype1 = "dragon" [ set color white ]
  ]
end 

;; the following energy values are arbitrary, but with the decreasing magnitude purposeful

;; very common pokemon traits

to very-common-pokemon
  set energy 70
  set size 1
  set shape "dot"
  set commonness 1
end 

;; common pokemon traits

to common-pokemon
  set energy 60
  set size 1
  set shape "x"
  set commonness 2
end 

;; uncommon pokemon traits

to uncommon-pokemon
  set energy 50
  set size 1
  set shape "triangle"
  set commonness 3
end 

;; rare pokemon traits

to rare-pokemon
  set energy 40
  set size 1
  set shape "square"
  set commonness 4
end 

;; very rare pokemon traits

to very-rare-pokemon
  set energy 30
  set size 1
  set shape "pentagon"
  set commonness 5
end 

;; special pokemon traits

to special-pokemon
  set energy 20
  set size 1
  set shape "circle"
  set commonness 6
end 

;; legendary pokemon traits
;; although only one exists at the moment, this will make adding others easier

to legendary-pokemon
  set energy 10
  set size 1
  set shape "ditto"
  set commonness 7
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; POKEMON MOVEMENT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to move-pokemons
  ask pokemon [
    if number > 0 [
      rt random 360
      fd commonness
      set energy energy - 1
    ]
  ]
end 

;; uncaught pokemon

to kill-pokemons
  ask pokemon [
    if energy = 0 [
      ;;set uncaught-pokemon uncaught-pokemon + 1
      die
    ]
  ]
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; REFERENCES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; This code helped to sprout pokemon at varying rates.
;; Abrahamson, D. and Wilensky, U. (2004). NetLogo Prob Graphs Basic model.
;;   http://ccl.northwestern.edu/netlogo/models/ProbGraphsBasic.
;;   Center for Connected Learning and Computer-Based Modeling,
;;   Northwestern University, Evanston, IL.

;; This code helped to understand how to make trainers catch pokemon.
;; Wilensky, U. (2010). NetLogo Communication T-T Example model.
;;   http://modelingcommons.org/browse/one_model/2278.

;; This code helped to understand how to make trainers actively play.
;; Wilensky, U. (2010). NetLogo Move Towards Target Example model.
;;   http://modelingcommons.org/browse/one_model/2765.

;; This code was often revisited as reference to NetLogo basics and commands
;; Wilensky, U. (1997). NetLogo Wolf Sheep Predation model.
;;   http://ccl.northwestern.edu/netlogo/models/WolfSheepPredation.
;;   Center for Connected Learning and Computer-Based Modeling,
;;   Northwestern University, Evanston, IL.

There is only one version of this model, created over 5 years ago by Jameson Reeves.

Attached files

File Type Description Last updated
Pokemon GO.png preview Preview for 'Pokemon GO' over 5 years ago, by Jameson Reeves Download

This model does not have any ancestors.

This model does not have any descendants.