gemwarrior 0.6.2 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/gemwarrior/battle.rb +46 -6
- data/lib/gemwarrior/entities/location.rb +1 -0
- data/lib/gemwarrior/entities/monsters/bosses/garynetty.rb +31 -0
- data/lib/gemwarrior/entities/player.rb +44 -21
- data/lib/gemwarrior/game.rb +15 -20
- data/lib/gemwarrior/misc/player_levels.rb +73 -1
- data/lib/gemwarrior/misc/version.rb +1 -1
- data/lib/gemwarrior/world.rb +44 -2
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5dd2a134a899cfbfd6ac8cf1a0a21e39f22abe86
         | 
| 4 | 
            +
              data.tar.gz: f8db94e677447ffa3568ebfe94181f4be0a504de
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: baf985a9731cff030b8cbf27693680eb063dee3a748d3bb541f4bd93eca8db3b7772b496d73d3ce3675ec6244269ba961a197fd398f22be153d29dac10f86d08
         | 
| 7 | 
            +
              data.tar.gz: b4cadec0839733de6a0d064e0063b8aca37cf47980b0db968494f014d43be0b124aeff8df3cc454f1da07b1bca924e550f53fcbeb16e5749729118c53356f666
         | 
    
        data/lib/gemwarrior/battle.rb
    CHANGED
    
    | @@ -1,11 +1,16 @@ | |
| 1 1 | 
             
            # lib/gemwarrior/battle.rb
         | 
| 2 2 | 
             
            # Monster battle
         | 
| 3 3 |  | 
| 4 | 
            +
            require_relative 'misc/player_levels'
         | 
| 5 | 
            +
             | 
| 4 6 | 
             
            module Gemwarrior
         | 
| 5 7 | 
             
              class Battle
         | 
| 8 | 
            +
                include PlayerLevels
         | 
| 9 | 
            +
              
         | 
| 6 10 | 
             
                # CONSTANTS
         | 
| 7 11 | 
             
                ## ERRORS
         | 
| 8 12 | 
             
                ERROR_ATTACK_OPTION_INVALID = 'That will not do anything against the monster.'
         | 
| 13 | 
            +
                BEAST_MODE_ATTACK           = 100
         | 
| 9 14 |  | 
| 10 15 | 
             
                attr_accessor :world, :player, :monster
         | 
| 11 16 |  | 
| @@ -35,11 +40,6 @@ module Gemwarrior | |
| 35 40 | 
             
                      player_death
         | 
| 36 41 | 
             
                    end
         | 
| 37 42 |  | 
| 38 | 
            -
                    puts
         | 
| 39 | 
            -
                    puts "PLAYER  :: #{player.hp_cur.to_s.rjust(3)} HP"
         | 
| 40 | 
            -
                    puts "MONSTER :: #{monster.hp_cur.to_s.rjust(3)} HP"
         | 
| 41 | 
            -
                    puts "[Fight/Attack][Look][Run]".colorize(:color => :yellow)
         | 
| 42 | 
            -
                    
         | 
| 43 43 | 
             
                    if player_near_death?
         | 
| 44 44 | 
             
                      puts "You are almost dead!\n".colorize(:yellow)
         | 
| 45 45 | 
             
                    end
         | 
| @@ -47,6 +47,11 @@ module Gemwarrior | |
| 47 47 | 
             
                      puts "#{monster.name} is almost dead!\n".colorize(:yellow)
         | 
| 48 48 | 
             
                    end
         | 
| 49 49 |  | 
| 50 | 
            +
                    puts
         | 
| 51 | 
            +
                    puts "PLAYER  :: #{player.hp_cur.to_s.rjust(3)} HP"
         | 
| 52 | 
            +
                    puts "MONSTER :: #{monster.hp_cur.to_s.rjust(3)} HP"
         | 
| 53 | 
            +
                    puts "[Fight/Attack][Look][Run]".colorize(:color => :yellow)
         | 
| 54 | 
            +
                    
         | 
| 50 55 | 
             
                    puts 'What do you do?'
         | 
| 51 56 | 
             
                    cmd = gets.chomp.downcase
         | 
| 52 57 |  | 
| @@ -108,7 +113,12 @@ module Gemwarrior | |
| 108 113 | 
             
                    0
         | 
| 109 114 | 
             
                  else
         | 
| 110 115 | 
             
                    if entity.eql?(monster)
         | 
| 111 | 
            -
                       | 
| 116 | 
            +
                      if player.beast_mode
         | 
| 117 | 
            +
                        atk_range = BEAST_MODE_ATTACK..BEAST_MODE_ATTACK
         | 
| 118 | 
            +
                      else
         | 
| 119 | 
            +
                        atk_range = player.atk_lo..player.atk_hi
         | 
| 120 | 
            +
                      end
         | 
| 121 | 
            +
                      rand(atk_range)
         | 
| 112 122 | 
             
                    else
         | 
| 113 123 | 
             
                      rand(monster.atk_lo..monster.atk_hi)
         | 
| 114 124 | 
             
                    end
         | 
| @@ -169,6 +179,11 @@ module Gemwarrior | |
| 169 179 | 
             
                      exit(0)
         | 
| 170 180 | 
             
                    else
         | 
| 171 181 | 
             
                      puts 'You just beat a boss monster. Way to go!'
         | 
| 182 | 
            +
                      puts " XP : #{monster.xp}".colorize(:green)
         | 
| 183 | 
            +
                      puts " ROX: #{monster.rox}".colorize(:green)
         | 
| 184 | 
            +
                      print_battle_line
         | 
| 185 | 
            +
                      update_player_stats
         | 
| 186 | 
            +
                      world.location_by_coords(player.cur_coords).remove_monster(monster.name)
         | 
| 172 187 | 
             
                    end
         | 
| 173 188 | 
             
                  else
         | 
| 174 189 | 
             
                    puts 'You get the following spoils of war:'
         | 
| @@ -181,8 +196,33 @@ module Gemwarrior | |
| 181 196 | 
             
                end
         | 
| 182 197 |  | 
| 183 198 | 
             
                def update_player_stats
         | 
| 199 | 
            +
                  old_player_level = PlayerLevels::check_level(player.xp)
         | 
| 200 | 
            +
                  
         | 
| 184 201 | 
             
                  player.xp = player.xp + monster.xp
         | 
| 185 202 | 
             
                  player.rox = player.rox + monster.rox
         | 
| 203 | 
            +
                  
         | 
| 204 | 
            +
                  new_player_level = PlayerLevels::check_level(player.xp)
         | 
| 205 | 
            +
                  
         | 
| 206 | 
            +
                  if new_player_level > old_player_level
         | 
| 207 | 
            +
                    puts 'You leveled up!'
         | 
| 208 | 
            +
                    new_stats = PlayerLevels::get_level_stats(new_player_level)
         | 
| 209 | 
            +
                    
         | 
| 210 | 
            +
                    player.level = new_stats[:level]
         | 
| 211 | 
            +
                    puts "You are now level #{player.level}!"
         | 
| 212 | 
            +
                    player.hp_cur = new_stats[:hp_max]
         | 
| 213 | 
            +
                    player.hp_max = new_stats[:hp_max]
         | 
| 214 | 
            +
                    puts "You now have #{player.hp_max} hit points!"
         | 
| 215 | 
            +
                    player.stam_cur = new_stats[:stam_max]
         | 
| 216 | 
            +
                    player.stam_max = new_stats[:stam_max]
         | 
| 217 | 
            +
                    puts "You now have #{player.stam_max} stamina points!"
         | 
| 218 | 
            +
                    player.atk_lo = new_stats[:atk_lo]
         | 
| 219 | 
            +
                    player.atk_hi = new_stats[:atk_hi]
         | 
| 220 | 
            +
                    puts "You now have an attack of #{player.atk_lo}-#{player.atk_hi}!"
         | 
| 221 | 
            +
                    player.defense = new_stats[:defense]
         | 
| 222 | 
            +
                    puts "You now have #{player.defense} defensive points!"
         | 
| 223 | 
            +
                    player.dexterity = new_stats[:dexterity]
         | 
| 224 | 
            +
                    puts "You now have #{player.dexterity} dexterity points!"
         | 
| 225 | 
            +
                  end
         | 
| 186 226 | 
             
                end
         | 
| 187 227 |  | 
| 188 228 | 
             
                def player_near_death?
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            # lib/gemwarrior/entities/monsters/garynetty.rb
         | 
| 2 | 
            +
            # Garrynetty monster
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require_relative '../../monster'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            module Gemwarrior
         | 
| 7 | 
            +
              class Garynetty < Monster
         | 
| 8 | 
            +
                def initialize
         | 
| 9 | 
            +
                  self.name         = 'Garynetty'
         | 
| 10 | 
            +
                  self.description  = 'Conservative, yet odd, the Garynetty is not messing around.'
         | 
| 11 | 
            +
                  self.face         = 'irregular'
         | 
| 12 | 
            +
                  self.hands        = 'sharp'
         | 
| 13 | 
            +
                  self.mood         = 'abrasive'
         | 
| 14 | 
            +
                  
         | 
| 15 | 
            +
                  self.level        = rand(12..15)
         | 
| 16 | 
            +
                  self.hp_cur       = rand((level * 2.5).floor..(level * 3.5).floor)
         | 
| 17 | 
            +
                  self.hp_max       = hp_cur
         | 
| 18 | 
            +
                  self.atk_lo       = rand((level * 2)..(level * 2.5).floor)
         | 
| 19 | 
            +
                  self.atk_hi       = rand((level * 2.5).floor..(level * 3).floor)
         | 
| 20 | 
            +
                  self.defense      = rand(7..9)
         | 
| 21 | 
            +
                  self.dexterity    = rand(10..12)
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  self.inventory    = Inventory.new
         | 
| 24 | 
            +
                  self.rox          = rand((level * 2)..(level * 3))
         | 
| 25 | 
            +
                  self.xp           = rand((level * 3)..(level * 4))
         | 
| 26 | 
            +
                  
         | 
| 27 | 
            +
                  self.battlecry    = '...?!'
         | 
| 28 | 
            +
                  self.is_boss      = true
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
            end
         | 
| @@ -3,9 +3,12 @@ | |
| 3 3 |  | 
| 4 4 | 
             
            require_relative 'creature'
         | 
| 5 5 | 
             
            require_relative '../battle'
         | 
| 6 | 
            +
            require_relative '../misc/player_levels'
         | 
| 6 7 |  | 
| 7 8 | 
             
            module Gemwarrior
         | 
| 8 9 | 
             
              class Player < Creature
         | 
| 10 | 
            +
                include PlayerLevels
         | 
| 11 | 
            +
              
         | 
| 9 12 | 
             
                # CONSTANTS
         | 
| 10 13 | 
             
                ## CHARACTER ATTRIBUTES
         | 
| 11 14 | 
             
                CHAR_UPPER_POOL       = (65..90).map{ |i| i.chr }
         | 
| @@ -31,8 +34,8 @@ module Gemwarrior | |
| 31 34 | 
             
                  self.xp           = options.fetch(:xp)
         | 
| 32 35 | 
             
                  self.hp_cur       = options.fetch(:hp_cur)
         | 
| 33 36 | 
             
                  self.hp_max       = options.fetch(:hp_max)
         | 
| 34 | 
            -
                  self.atk_lo       = options.fetch(: | 
| 35 | 
            -
                  self.atk_hi       = options.fetch(: | 
| 37 | 
            +
                  self.atk_lo       = options.fetch(:atk_lo)
         | 
| 38 | 
            +
                  self.atk_hi       = options.fetch(:atk_hi)
         | 
| 36 39 |  | 
| 37 40 | 
             
                  self.defense      = options.fetch(:defense)
         | 
| 38 41 | 
             
                  self.dexterity    = options.fetch(:dexterity)
         | 
| @@ -53,30 +56,30 @@ module Gemwarrior | |
| 53 56 | 
             
                    print_char_pic
         | 
| 54 57 | 
             
                  end
         | 
| 55 58 |  | 
| 56 | 
            -
                   | 
| 57 | 
            -
                  if  | 
| 58 | 
            -
                     | 
| 59 | 
            -
                  else
         | 
| 60 | 
            -
                    cur_weapon_name = inventory.weapon.name
         | 
| 59 | 
            +
                  weapon_slot = ''
         | 
| 60 | 
            +
                  if has_weapon_equipped?
         | 
| 61 | 
            +
                    weapon_slot = inventory.weapon.name
         | 
| 61 62 | 
             
                    self.atk_lo = inventory.weapon.atk_lo
         | 
| 62 63 | 
             
                    self.atk_hi = inventory.weapon.atk_hi
         | 
| 64 | 
            +
                  else
         | 
| 65 | 
            +
                    weapon_slot = '(unarmed)'
         | 
| 63 66 | 
             
                  end
         | 
| 64 67 |  | 
| 65 | 
            -
                  self_text =  "NAME      : #{name}\n"
         | 
| 66 | 
            -
                  self_text  | 
| 67 | 
            -
                  self_text << "WEAPON    : #{ | 
| 68 | 
            -
                  self_text << "LEVEL     : #{level}\n"
         | 
| 69 | 
            -
                  self_text << "EXPERIENCE: #{xp}\n"
         | 
| 70 | 
            -
                  self_text << "HIT POINTS: #{hp_cur}/#{hp_max}\n"
         | 
| 71 | 
            -
                  self_text << "ATTACK    : #{atk_lo}-#{atk_hi}\n"
         | 
| 72 | 
            -
                  self_text << "DEXTERITY : #{dexterity}\n"
         | 
| 73 | 
            -
                  self_text << "DEFENSE   : #{defense}\n"
         | 
| 74 | 
            -
                  self_text << "GOD_MODE  : #{god_mode}\n"
         | 
| 75 | 
            -
                  self_text << "BEAST_MODE: #{beast_mode}\n\n"
         | 
| 68 | 
            +
                  self_text =  "NAME      : #{self.name}\n"
         | 
| 69 | 
            +
                  self_text << "POSITION  : #{self.cur_coords.values.to_a}\n"
         | 
| 70 | 
            +
                  self_text << "WEAPON    : #{weapon_slot}\n"
         | 
| 71 | 
            +
                  self_text << "LEVEL     : #{self.level}\n"
         | 
| 72 | 
            +
                  self_text << "EXPERIENCE: #{self.xp}\n"
         | 
| 73 | 
            +
                  self_text << "HIT POINTS: #{self.hp_cur}/#{self.hp_max}\n"
         | 
| 74 | 
            +
                  self_text << "ATTACK    : #{self.atk_lo}-#{self.atk_hi}\n"
         | 
| 75 | 
            +
                  self_text << "DEXTERITY : #{self.dexterity}\n"
         | 
| 76 | 
            +
                  self_text << "DEFENSE   : #{self.defense}\n"
         | 
| 77 | 
            +
                  self_text << "GOD_MODE  : #{self.god_mode}\n"
         | 
| 78 | 
            +
                  self_text << "BEAST_MODE: #{self.beast_mode}\n\n"
         | 
| 76 79 |  | 
| 77 | 
            -
                  self_text << "#{description}\n\n"
         | 
| 80 | 
            +
                  self_text << "#{self.description}\n\n"
         | 
| 78 81 |  | 
| 79 | 
            -
                  self_text << "Current status - breathing, wearing clothing, and with a few other specific characteristics: face is #{face}, hands are #{hands}, and general mood is #{mood}.\n"
         | 
| 82 | 
            +
                  self_text << "Current status - breathing, wearing clothing, and with a few other specific characteristics: face is #{self.face}, hands are #{self.hands}, and general mood is #{self.mood}.\n"
         | 
| 80 83 | 
             
                end
         | 
| 81 84 |  | 
| 82 85 | 
             
                def rest
         | 
| @@ -139,12 +142,32 @@ module Gemwarrior | |
| 139 142 | 
             
                  battle.start
         | 
| 140 143 | 
             
                end
         | 
| 141 144 |  | 
| 145 | 
            +
                def has_weapon_equipped?
         | 
| 146 | 
            +
                  self.inventory.weapon
         | 
| 147 | 
            +
                end
         | 
| 148 | 
            +
                
         | 
| 142 149 | 
             
                def cur_weapon_name
         | 
| 143 | 
            -
                   | 
| 150 | 
            +
                  if has_weapon_equipped?
         | 
| 144 151 | 
             
                    return " with your #{inventory.weapon.name}"
         | 
| 152 | 
            +
                  else
         | 
| 153 | 
            +
                    return nil
         | 
| 145 154 | 
             
                  end
         | 
| 146 155 | 
             
                end
         | 
| 147 156 |  | 
| 157 | 
            +
                def switch_beast_mode
         | 
| 158 | 
            +
                  if self.beast_mode
         | 
| 159 | 
            +
            binding.pry
         | 
| 160 | 
            +
                    self.beast_mode = false
         | 
| 161 | 
            +
                    self.atk_lo = has_weapon_equipped? ? self.inventory.weapon.atk_lo : PlayerLevels::get_level_stats(self.level)[:atk_lo]
         | 
| 162 | 
            +
                    self.atk_hi = has_weapon_equipped? ? self.inventory.weapon.atk_hi : PlayerLevels::get_level_stats(self.level)[:atk_hi]
         | 
| 163 | 
            +
                  else
         | 
| 164 | 
            +
                    self.beast_mode = true
         | 
| 165 | 
            +
                    self.atk_lo = BEAST_MODE_ATTACK
         | 
| 166 | 
            +
            binding.pry
         | 
| 167 | 
            +
                    self.atk_hi = BEAST_MODE_ATTACK
         | 
| 168 | 
            +
                  end
         | 
| 169 | 
            +
                end
         | 
| 170 | 
            +
                
         | 
| 148 171 | 
             
                private
         | 
| 149 172 |  | 
| 150 173 | 
             
                # TRAVEL    
         | 
    
        data/lib/gemwarrior/game.rb
    CHANGED
    
    | @@ -5,6 +5,7 @@ require 'colorize' | |
| 5 5 | 
             
            require 'matrext'
         | 
| 6 6 |  | 
| 7 7 | 
             
            require_relative 'entities/player'
         | 
| 8 | 
            +
            require_relative 'misc/player_levels'
         | 
| 8 9 | 
             
            require_relative 'world'
         | 
| 9 10 | 
             
            require_relative 'evaluator'
         | 
| 10 11 | 
             
            require_relative 'repl'
         | 
| @@ -12,19 +13,11 @@ require_relative 'inventory' | |
| 12 13 |  | 
| 13 14 | 
             
            module Gemwarrior
         | 
| 14 15 | 
             
              class Game
         | 
| 16 | 
            +
                include PlayerLevels
         | 
| 17 | 
            +
              
         | 
| 15 18 | 
             
                # CONSTANTS
         | 
| 16 19 | 
             
                ## PLAYER DEFAULTS
         | 
| 17 20 | 
             
                PLAYER_DESC_DEFAULT       = 'Picked to do battle against a wizened madman for a shiny something or other for world-saving purposes.'
         | 
| 18 | 
            -
                PLAYER_LEVEL_DEFAULT      = 1
         | 
| 19 | 
            -
                PLAYER_XP_DEFAULT         = 0
         | 
| 20 | 
            -
                PLAYER_HP_CUR_DEFAULT     = 30
         | 
| 21 | 
            -
                PLAYER_HP_MAX_DEFAULT     = 30
         | 
| 22 | 
            -
                PLAYER_STAM_CUR_DEFAULT   = 20
         | 
| 23 | 
            -
                PLAYER_STAM_MAX_DEFAULT   = 20
         | 
| 24 | 
            -
                PLAYER_ATK_LO_DEFAULT     = 1
         | 
| 25 | 
            -
                PLAYER_ATK_HI_DEFAULT     = 2
         | 
| 26 | 
            -
                PLAYER_DEFENSE_DEFAULT    = 5
         | 
| 27 | 
            -
                PLAYER_DEXTERITY_DEFAULT  = 5
         | 
| 28 21 | 
             
                PLAYER_INVENTORY_DEFAULT  = Inventory.new
         | 
| 29 22 | 
             
                PLAYER_ROX_DEFAULT        = 0
         | 
| 30 23 |  | 
| @@ -34,18 +27,20 @@ module Gemwarrior | |
| 34 27 | 
             
                  # create new world and player
         | 
| 35 28 | 
             
                  self.world = World.new
         | 
| 36 29 |  | 
| 30 | 
            +
                  start_stats = PlayerLevels::get_level_stats(1)
         | 
| 31 | 
            +
                  
         | 
| 37 32 | 
             
                  world.player = Player.new({
         | 
| 38 33 | 
             
                    :description        => PLAYER_DESC_DEFAULT,
         | 
| 39 | 
            -
                    :level              =>  | 
| 40 | 
            -
                    :xp                 =>  | 
| 41 | 
            -
                    :hp_cur             =>  | 
| 42 | 
            -
                    :hp_max             =>  | 
| 43 | 
            -
                    :stam_cur           =>  | 
| 44 | 
            -
                    :stam_max           =>  | 
| 45 | 
            -
                    :atk_lo             =>  | 
| 46 | 
            -
                    :atk_hi             =>  | 
| 47 | 
            -
                    :defense            =>  | 
| 48 | 
            -
                    :dexterity          =>  | 
| 34 | 
            +
                    :level              => start_stats[:level],
         | 
| 35 | 
            +
                    :xp                 => start_stats[:xp_start],
         | 
| 36 | 
            +
                    :hp_cur             => start_stats[:hp_max],
         | 
| 37 | 
            +
                    :hp_max             => start_stats[:hp_max],
         | 
| 38 | 
            +
                    :stam_cur           => start_stats[:stam_max],
         | 
| 39 | 
            +
                    :stam_max           => start_stats[:stam_max],
         | 
| 40 | 
            +
                    :atk_lo             => start_stats[:atk_lo],
         | 
| 41 | 
            +
                    :atk_hi             => start_stats[:atk_hi],
         | 
| 42 | 
            +
                    :defense            => start_stats[:defense],
         | 
| 43 | 
            +
                    :dexterity          => start_stats[:dexterity],
         | 
| 49 44 | 
             
                    :inventory          => PLAYER_INVENTORY_DEFAULT,
         | 
| 50 45 | 
             
                    :rox                => PLAYER_ROX_DEFAULT,
         | 
| 51 46 | 
             
                    :cur_coords         => world.location_coords_by_name('Home'),
         | 
| @@ -2,5 +2,77 @@ | |
| 2 2 | 
             
            # Stats table for each level the player can reach
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Gemwarrior
         | 
| 5 | 
            -
               | 
| 5 | 
            +
              module PlayerLevels
         | 
| 6 | 
            +
                def self.get_level_stats(level)
         | 
| 7 | 
            +
                  case level
         | 
| 8 | 
            +
                  when 1
         | 
| 9 | 
            +
                    {
         | 
| 10 | 
            +
                      :level => 1, :xp_start => 0,
         | 
| 11 | 
            +
                      :hp_max => 30, :stam_max => 20, 
         | 
| 12 | 
            +
                      :atk_lo => 1, :atk_hi => 2, 
         | 
| 13 | 
            +
                      :defense => 5, :dexterity => 5
         | 
| 14 | 
            +
                    }
         | 
| 15 | 
            +
                  when 2
         | 
| 16 | 
            +
                    { 
         | 
| 17 | 
            +
                      :level => 2, :xp_start => 50,
         | 
| 18 | 
            +
                      :hp_max => 35, :stam_max => 25, 
         | 
| 19 | 
            +
                      :atk_lo => 2, :atk_hi => 3, 
         | 
| 20 | 
            +
                      :defense => 6, :dexterity => 6
         | 
| 21 | 
            +
                    }
         | 
| 22 | 
            +
                  when 3
         | 
| 23 | 
            +
                    { 
         | 
| 24 | 
            +
                      :level => 3, :xp_start => 120,
         | 
| 25 | 
            +
                      :hp_max => 45, :stam_max => 30, 
         | 
| 26 | 
            +
                      :atk_lo => 3, :atk_hi => 5, 
         | 
| 27 | 
            +
                      :defense => 7, :dexterity => 8
         | 
| 28 | 
            +
                    }
         | 
| 29 | 
            +
                  when 4
         | 
| 30 | 
            +
                    {
         | 
| 31 | 
            +
                      :level => 4, :xp_start => 250,
         | 
| 32 | 
            +
                      :hp_max => 55, :stam_max => 35, 
         | 
| 33 | 
            +
                      :atk_lo => 5, :atk_hi => 6, 
         | 
| 34 | 
            +
                      :defense => 8, :dexterity => 9
         | 
| 35 | 
            +
                    }
         | 
| 36 | 
            +
                  when 5
         | 
| 37 | 
            +
                    { 
         | 
| 38 | 
            +
                      :level => 5, :xp_start => 600,
         | 
| 39 | 
            +
                      :hp_max => 70, :stam_max => 45, 
         | 
| 40 | 
            +
                      :atk_lo => 7, :atk_hi => 8, 
         | 
| 41 | 
            +
                      :defense => 10, :dexterity => 11
         | 
| 42 | 
            +
                    }
         | 
| 43 | 
            +
                  when 6
         | 
| 44 | 
            +
                    { 
         | 
| 45 | 
            +
                      :level => 6, :xp_start => 1000,
         | 
| 46 | 
            +
                      :hp_max => 85, :stam_max => 60, 
         | 
| 47 | 
            +
                      :atk_lo => 8, :atk_hi => 10, 
         | 
| 48 | 
            +
                      :defense => 13, :dexterity => 13
         | 
| 49 | 
            +
                    }
         | 
| 50 | 
            +
                  when 7
         | 
| 51 | 
            +
                    { 
         | 
| 52 | 
            +
                      :level => 7, :xp_start => 1500,
         | 
| 53 | 
            +
                      :hp_max => 100, :stam_max => 80, 
         | 
| 54 | 
            +
                      :atk_lo => 10, :atk_hi => 12, 
         | 
| 55 | 
            +
                      :defense => 15, :dexterity => 16
         | 
| 56 | 
            +
                    }
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
                
         | 
| 60 | 
            +
                def self.check_level(xp)
         | 
| 61 | 
            +
                  if xp < 50
         | 
| 62 | 
            +
                    1
         | 
| 63 | 
            +
                  elsif xp < 120
         | 
| 64 | 
            +
                    2
         | 
| 65 | 
            +
                  elsif xp < 250
         | 
| 66 | 
            +
                    3
         | 
| 67 | 
            +
                  elsif xp < 600
         | 
| 68 | 
            +
                    4
         | 
| 69 | 
            +
                  elsif xp < 1000
         | 
| 70 | 
            +
                    5
         | 
| 71 | 
            +
                  elsif xp < 1500
         | 
| 72 | 
            +
                    6
         | 
| 73 | 
            +
                  elsif xp < 10000
         | 
| 74 | 
            +
                    7
         | 
| 75 | 
            +
                  end
         | 
| 76 | 
            +
                end
         | 
| 77 | 
            +
              end
         | 
| 6 78 | 
             
            end
         | 
    
        data/lib/gemwarrior/world.rb
    CHANGED
    
    | @@ -195,6 +195,7 @@ module Gemwarrior | |
| 195 195 | 
             
                  require_relative 'entities/monsters/cubicat'
         | 
| 196 196 | 
             
                  require_relative 'entities/monsters/diaman'
         | 
| 197 197 | 
             
                  require_relative 'entities/monsters/bosses/emerald'
         | 
| 198 | 
            +
                  require_relative 'entities/monsters/bosses/garynetty'
         | 
| 198 199 |  | 
| 199 200 | 
             
                  self.monsters = [
         | 
| 200 201 | 
             
                    Alexandrat.new, 
         | 
| @@ -207,7 +208,8 @@ module Gemwarrior | |
| 207 208 | 
             
                    Coraliz.new, 
         | 
| 208 209 | 
             
                    Cubicat.new, 
         | 
| 209 210 | 
             
                    Diaman.new,
         | 
| 210 | 
            -
                    Emerald.new
         | 
| 211 | 
            +
                    Emerald.new,
         | 
| 212 | 
            +
                    Garynetty.new
         | 
| 211 213 | 
             
                  ]
         | 
| 212 214 | 
             
                end
         | 
| 213 215 |  | 
| @@ -287,12 +289,52 @@ module Gemwarrior | |
| 287 289 | 
             
                      :name               => 'Forest', 
         | 
| 288 290 | 
             
                      :description        => 'Trees exist here, in droves.',
         | 
| 289 291 | 
             
                      :coords             => {:x => 4, :y => 0},
         | 
| 290 | 
            -
                      :locs_connected     => {:north => false, :east => true, :south => false, :west =>  | 
| 292 | 
            +
                      :locs_connected     => {:north => false, :east => true, :south => false, :west => true},
         | 
| 291 293 | 
             
                      :danger_level       => :low,
         | 
| 292 294 | 
             
                      :items              => [Feather.new, Tree.new],
         | 
| 293 295 | 
             
                      :bosses_abounding   => []
         | 
| 294 296 | 
             
                    })
         | 
| 295 297 | 
             
                  )
         | 
| 298 | 
            +
                  locations.push(Location.new({
         | 
| 299 | 
            +
                      :name               => 'Pain Desert (Southeast)', 
         | 
| 300 | 
            +
                      :description        => 'Horrible terribleness emanates from this desolate land of unkind misery.',
         | 
| 301 | 
            +
                      :coords             => {:x => 3, :y => 0},
         | 
| 302 | 
            +
                      :locs_connected     => {:north => true, :east => true, :south => false, :west => true},
         | 
| 303 | 
            +
                      :danger_level       => :assured,
         | 
| 304 | 
            +
                      :items              => [],
         | 
| 305 | 
            +
                      :bosses_abounding   => [Garynetty.new]
         | 
| 306 | 
            +
                    })
         | 
| 307 | 
            +
                  )
         | 
| 308 | 
            +
                  locations.push(Location.new({
         | 
| 309 | 
            +
                      :name               => 'Pain Desert (Northeast)', 
         | 
| 310 | 
            +
                      :description        => 'Horrible terribleness emanates from this desolate land of unkind misery.',
         | 
| 311 | 
            +
                      :coords             => {:x => 3, :y => 1},
         | 
| 312 | 
            +
                      :locs_connected     => {:north => false, :east => false, :south => true, :west => true},
         | 
| 313 | 
            +
                      :danger_level       => :assured,
         | 
| 314 | 
            +
                      :items              => [],
         | 
| 315 | 
            +
                      :bosses_abounding   => [Garynetty.new]
         | 
| 316 | 
            +
                    })
         | 
| 317 | 
            +
                  )
         | 
| 318 | 
            +
                  locations.push(Location.new({
         | 
| 319 | 
            +
                      :name               => 'Pain Desert (Northwest)', 
         | 
| 320 | 
            +
                      :description        => 'Horrible terribleness emanates from this desolate land of unkind misery.',
         | 
| 321 | 
            +
                      :coords             => {:x => 2, :y => 1},
         | 
| 322 | 
            +
                      :locs_connected     => {:north => false, :east => true, :south => true, :west => false},
         | 
| 323 | 
            +
                      :danger_level       => :assured,
         | 
| 324 | 
            +
                      :items              => [],
         | 
| 325 | 
            +
                      :bosses_abounding   => [Garynetty.new]
         | 
| 326 | 
            +
                    })
         | 
| 327 | 
            +
                  )
         | 
| 328 | 
            +
                  locations.push(Location.new({
         | 
| 329 | 
            +
                      :name               => 'Pain Desert (Southwest)', 
         | 
| 330 | 
            +
                      :description        => 'Horrible terribleness emanates from this desolate land of unkind misery.',
         | 
| 331 | 
            +
                      :coords             => {:x => 2, :y => 0},
         | 
| 332 | 
            +
                      :locs_connected     => {:north => true, :east => true, :south => false, :west => false},
         | 
| 333 | 
            +
                      :danger_level       => :assured,
         | 
| 334 | 
            +
                      :items              => [],
         | 
| 335 | 
            +
                      :bosses_abounding   => [Garynetty.new]
         | 
| 336 | 
            +
                    })
         | 
| 337 | 
            +
                  )
         | 
| 296 338 | 
             
                  locations.push(Location.new({
         | 
| 297 339 | 
             
                      :name               => 'Plains', 
         | 
| 298 340 | 
             
                      :description        => 'A lot of grass and nothing, but you see a mysterious tower further north, and your home to the south.',
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: gemwarrior
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.6. | 
| 4 | 
            +
              version: 0.6.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Michael Chadwick
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-06- | 
| 11 | 
            +
            date: 2015-06-11 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: os
         | 
| @@ -195,6 +195,7 @@ files: | |
| 195 195 | 
             
            - lib/gemwarrior/entities/monsters/aquamarine.rb
         | 
| 196 196 | 
             
            - lib/gemwarrior/entities/monsters/bloodstorm.rb
         | 
| 197 197 | 
             
            - lib/gemwarrior/entities/monsters/bosses/emerald.rb
         | 
| 198 | 
            +
            - lib/gemwarrior/entities/monsters/bosses/garynetty.rb
         | 
| 198 199 | 
             
            - lib/gemwarrior/entities/monsters/citrinaga.rb
         | 
| 199 200 | 
             
            - lib/gemwarrior/entities/monsters/coraliz.rb
         | 
| 200 201 | 
             
            - lib/gemwarrior/entities/monsters/cubicat.rb
         |