gemwarrior 0.10.8 → 0.11.0

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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/bin/gemwarrior +0 -0
  3. data/data/default_world.yaml +282 -436
  4. data/gemwarrior.gemspec +1 -1
  5. data/lib/gemwarrior/arena.rb +17 -17
  6. data/lib/gemwarrior/battle.rb +146 -77
  7. data/lib/gemwarrior/entities/armor.rb +34 -0
  8. data/lib/gemwarrior/entities/armor/iron_helmet.rb +17 -0
  9. data/lib/gemwarrior/entities/creature.rb +81 -4
  10. data/lib/gemwarrior/entities/creatures/cow.rb +24 -0
  11. data/lib/gemwarrior/entities/{items → creatures}/goat.rb +9 -11
  12. data/lib/gemwarrior/entities/creatures/pig.rb +24 -0
  13. data/lib/gemwarrior/entities/entity.rb +59 -5
  14. data/lib/gemwarrior/entities/item.rb +10 -22
  15. data/lib/gemwarrior/entities/items/apple.rb +2 -5
  16. data/lib/gemwarrior/entities/items/arena_door.rb +2 -6
  17. data/lib/gemwarrior/entities/items/bed.rb +7 -11
  18. data/lib/gemwarrior/entities/items/bookcase.rb +57 -0
  19. data/lib/gemwarrior/entities/items/bullet.rb +25 -0
  20. data/lib/gemwarrior/entities/items/couch.rb +6 -10
  21. data/lib/gemwarrior/entities/items/cup.rb +2 -5
  22. data/lib/gemwarrior/entities/items/dehumidifier.rb +3 -6
  23. data/lib/gemwarrior/entities/items/feather.rb +2 -5
  24. data/lib/gemwarrior/entities/items/floor_tile.rb +6 -10
  25. data/lib/gemwarrior/entities/items/flower.rb +1 -4
  26. data/lib/gemwarrior/entities/items/herb.rb +12 -13
  27. data/lib/gemwarrior/entities/items/keystone.rb +2 -5
  28. data/lib/gemwarrior/entities/items/ladder.rb +7 -11
  29. data/lib/gemwarrior/entities/items/letter.rb +20 -23
  30. data/lib/gemwarrior/entities/items/map.rb +3 -6
  31. data/lib/gemwarrior/entities/items/massive_door.rb +3 -7
  32. data/lib/gemwarrior/entities/items/pedestal.rb +6 -10
  33. data/lib/gemwarrior/entities/items/pond.rb +4 -8
  34. data/lib/gemwarrior/entities/items/rope.rb +4 -8
  35. data/lib/gemwarrior/entities/items/small_hole.rb +15 -77
  36. data/lib/gemwarrior/entities/items/snowman.rb +5 -9
  37. data/lib/gemwarrior/entities/items/sparkly_thing.rb +3 -7
  38. data/lib/gemwarrior/entities/items/stonemite.rb +2 -6
  39. data/lib/gemwarrior/entities/items/tent.rb +3 -6
  40. data/lib/gemwarrior/entities/items/throne.rb +7 -6
  41. data/lib/gemwarrior/entities/items/tree.rb +2 -6
  42. data/lib/gemwarrior/entities/items/waterfall.rb +9 -8
  43. data/lib/gemwarrior/entities/location.rb +49 -43
  44. data/lib/gemwarrior/entities/monster.rb +34 -28
  45. data/lib/gemwarrior/entities/monsters/alexandrat.rb +3 -3
  46. data/lib/gemwarrior/entities/monsters/amberoo.rb +3 -3
  47. data/lib/gemwarrior/entities/monsters/amethystle.rb +3 -3
  48. data/lib/gemwarrior/entities/monsters/apatiger.rb +3 -3
  49. data/lib/gemwarrior/entities/monsters/aquamarine.rb +3 -3
  50. data/lib/gemwarrior/entities/monsters/bloodstorm.rb +3 -3
  51. data/lib/gemwarrior/entities/monsters/bosses/emerald.rb +12 -27
  52. data/lib/gemwarrior/entities/monsters/bosses/garynetty.rb +17 -5
  53. data/lib/gemwarrior/entities/monsters/bosses/jaspern.rb +66 -0
  54. data/lib/gemwarrior/entities/monsters/citrinaga.rb +3 -3
  55. data/lib/gemwarrior/entities/monsters/coraliz.rb +3 -3
  56. data/lib/gemwarrior/entities/monsters/cubicat.rb +3 -3
  57. data/lib/gemwarrior/entities/monsters/diaman.rb +3 -3
  58. data/lib/gemwarrior/entities/{items → people}/arena_master.rb +8 -13
  59. data/lib/gemwarrior/entities/{items → people}/drunk_man.rb +14 -35
  60. data/lib/gemwarrior/entities/people/queen_ruby.rb +71 -0
  61. data/lib/gemwarrior/entities/people/rockney.rb +132 -0
  62. data/lib/gemwarrior/entities/{items → people}/shifty_woman.rb +7 -12
  63. data/lib/gemwarrior/entities/{items → people}/thin_man.rb +9 -14
  64. data/lib/gemwarrior/entities/people/ware_hawker.rb +153 -0
  65. data/lib/gemwarrior/entities/person.rb +20 -0
  66. data/lib/gemwarrior/entities/player.rb +102 -60
  67. data/lib/gemwarrior/entities/weapon.rb +38 -0
  68. data/lib/gemwarrior/entities/{items → weapons}/dagger.rb +5 -7
  69. data/lib/gemwarrior/entities/{items → weapons}/gun.rb +8 -10
  70. data/lib/gemwarrior/entities/{items → weapons}/mace.rb +6 -9
  71. data/lib/gemwarrior/entities/{items → weapons}/opalaser.rb +5 -7
  72. data/lib/gemwarrior/entities/weapons/spear.rb +23 -0
  73. data/lib/gemwarrior/entities/{items → weapons}/stalactite.rb +5 -7
  74. data/lib/gemwarrior/entities/weapons/stone.rb +23 -0
  75. data/lib/gemwarrior/evaluator.rb +111 -107
  76. data/lib/gemwarrior/game.rb +61 -29
  77. data/lib/gemwarrior/game_assets.rb +76 -0
  78. data/lib/gemwarrior/inventory.rb +77 -43
  79. data/lib/gemwarrior/misc/animation.rb +17 -13
  80. data/lib/gemwarrior/misc/{music.rb → audio.rb} +15 -7
  81. data/lib/gemwarrior/misc/audio_cues.rb +133 -0
  82. data/lib/gemwarrior/misc/formatting.rb +9 -9
  83. data/lib/gemwarrior/misc/player_levels.rb +21 -0
  84. data/lib/gemwarrior/repl.rb +32 -31
  85. data/lib/gemwarrior/version.rb +1 -1
  86. data/lib/gemwarrior/world.rb +155 -134
  87. metadata +34 -22
  88. data/lib/gemwarrior/entities/items/cow.rb +0 -26
  89. data/lib/gemwarrior/entities/items/pig.rb +0 -26
  90. data/lib/gemwarrior/entities/items/queen_ruby.rb +0 -62
  91. data/lib/gemwarrior/entities/items/spear.rb +0 -26
  92. data/lib/gemwarrior/entities/items/stone.rb +0 -25
  93. data/lib/gemwarrior/entities/items/ware_hawker.rb +0 -93
@@ -1,43 +1,49 @@
1
1
  # lib/gemwarrior/entities/monster.rb
2
- # Monster creature
2
+ # Entity::Creature::Monster
3
3
 
4
4
  require_relative 'creature'
5
5
  require_relative 'items/herb'
6
+ require_relative 'items/bullet'
6
7
 
7
8
  module Gemwarrior
8
9
  class Monster < Creature
9
- INVENTORY_ITEMS_DEFAULT = [Herb.new]
10
+ ITEM_POOL = [Herb.new, Bullet.new]
10
11
 
11
- attr_accessor :inventory, :battlecry, :is_boss, :is_dead
12
+ attr_accessor :battlecry,
13
+ :is_boss,
14
+ :is_dead
12
15
 
13
16
  def initialize
14
- if [true, false].sample
15
- self.inventory = Inventory.new([INVENTORY_ITEMS_DEFAULT[rand(0..INVENTORY_ITEMS_DEFAULT.length-1)]])
16
- else
17
- self.inventory = Inventory.new
18
- end
19
- end
17
+ super
20
18
 
21
- def describe
22
- status_text = name.upcase.colorize(:green)
23
- status_text << '(BOSS)'.ljust(13).colorize(:yellow) if is_boss
24
- status_text << "\n"
25
- status_text << "#{description}".colorize(:white)
26
- status_text << "\n"
19
+ self.inventory = Inventory.new
20
+ self.is_dead = false
21
+ 3.times do
22
+ if [true, false].sample
23
+ self.inventory.add_item(ITEM_POOL[rand(0..ITEM_POOL.length-1)])
24
+ end
25
+ end
26
+ end
27
27
 
28
- status_text << "DEAD? #{is_dead}\n" unless is_dead.nil?
29
- status_text << "LVL : #{level}\n".colorize(:white)
30
- status_text << "HP : #{hp_cur}/#{hp_max}\n".colorize(:white)
31
- status_text << "ATK : #{atk_lo}-#{atk_hi}\n".colorize(:white)
32
- status_text << "DEF : #{defense}\n".colorize(:white)
33
- status_text << "DEX : #{dexterity}\n".colorize(:white)
34
- status_text << "ROX : #{rox}\n".colorize(:white)
35
- status_text << "XP : #{xp}\n".colorize(:white)
36
- status_text << "FACE : #{face}\n".colorize(:white)
37
- status_text << "HANDS: #{hands}\n".colorize(:white)
38
- status_text << "MOOD : #{mood}\n".colorize(:white)
39
- status_text << "INV : #{inventory.list_contents}".colorize(:white)
40
- status_text << "\n"
28
+ def describe_detailed
29
+ desc_text = "\"#{name_display}\"".colorize(:yellow)
30
+ desc_text << '(BOSS)'.ljust(13).colorize(:yellow) if is_boss
31
+ desc_text << "\n"
32
+ desc_text << "(#{name})\n".colorize(:green)
33
+ desc_text << "#{description}\n".colorize(:white)
34
+ desc_text << "DEAD? #{is_dead}\n".colorize(:white)
35
+ desc_text << "FACE : #{face}\n".colorize(:white)
36
+ desc_text << "HANDS: #{hands}\n".colorize(:white)
37
+ desc_text << "MOOD : #{mood}\n".colorize(:white)
38
+ desc_text << "LVL : #{level}\n".colorize(:white)
39
+ desc_text << "XP : #{xp}\n".colorize(:white)
40
+ desc_text << "HP : #{hp_cur}/#{hp_max}\n".colorize(:white)
41
+ desc_text << "ATK : #{atk_lo}-#{atk_hi}\n".colorize(:white)
42
+ desc_text << "DEF : #{defense}\n".colorize(:white)
43
+ desc_text << "DEX : #{dexterity}\n".colorize(:white)
44
+ desc_text << "ROX : #{rox}\n".colorize(:white)
45
+ desc_text << "INV : #{inventory.list_contents}\n".colorize(:white)
46
+ desc_text
41
47
  end
42
48
  end
43
49
  end
@@ -1,5 +1,5 @@
1
1
  # lib/gemwarrior/entities/monsters/alexandrat.rb
2
- # Alexandrat monster
2
+ # Entity::Creature::Monster::Alexandrat
3
3
 
4
4
  require_relative '../monster'
5
5
 
@@ -9,7 +9,9 @@ module Gemwarrior
9
9
  super
10
10
 
11
11
  self.name = 'alexandrat'
12
+ self.name_display = 'Alexandrat'
12
13
  self.description = 'Tiny, but fierce, color-changing rodent.'
14
+ self.battlecry = 'Bitey, bitey!'
13
15
  self.face = 'ugly'
14
16
  self.hands = 'gnarled'
15
17
  self.mood = 'unchipper'
@@ -24,8 +26,6 @@ module Gemwarrior
24
26
 
25
27
  self.rox = rand((level * 2)..(level * 3))
26
28
  self.xp = rand(level..(level * 2))
27
-
28
- self.battlecry = 'Bitey, bitey!'
29
29
  end
30
30
  end
31
31
  end
@@ -1,5 +1,5 @@
1
1
  # lib/gemwarrior/entities/monsters/amberoo.rb
2
- # Amberoo monster
2
+ # Entity::Creature::Monster::Amberoo
3
3
 
4
4
  require_relative '../monster'
5
5
 
@@ -9,7 +9,9 @@ module Gemwarrior
9
9
  super
10
10
 
11
11
  self.name = 'amberoo'
12
+ self.name_display = 'Amberoo'
12
13
  self.description = 'Fossilized and jumping around like an adorably dangerous threat from the past.'
14
+ self.battlecry = 'I\'m hoppin\' mad!'
13
15
  self.face = 'punchy'
14
16
  self.hands = 'balled'
15
17
  self.mood = 'jumpy'
@@ -24,8 +26,6 @@ module Gemwarrior
24
26
 
25
27
  self.rox = rand((level * 2)..(level * 3))
26
28
  self.xp = rand(level..(level * 2))
27
-
28
- self.battlecry = 'I\'m hoppin\' mad!'
29
29
  end
30
30
  end
31
31
  end
@@ -1,5 +1,5 @@
1
1
  # lib/gemwarrior/entities/monsters/amethystle.rb
2
- # Amethystle monster
2
+ # Entity::Creature::Monster::Amethystle
3
3
 
4
4
  require_relative '../monster'
5
5
 
@@ -9,7 +9,9 @@ module Gemwarrior
9
9
  super
10
10
 
11
11
  self.name = 'amethystle'
12
+ self.name_display = 'Amethystle'
12
13
  self.description = 'Sober and contemplative, it moves with purplish tentacles swaying in the breeze.'
14
+ self.battlecry = 'You\'ve found yourself in quite the thorny issue!'
13
15
  self.face = 'sharp'
14
16
  self.hands = 'loose'
15
17
  self.mood = 'mesmerizing'
@@ -24,8 +26,6 @@ module Gemwarrior
24
26
 
25
27
  self.rox = rand((level * 2)..(level * 3))
26
28
  self.xp = rand(level..(level * 2))
27
-
28
- self.battlecry = 'You\'ve found yourself in quite the thorny issue!'
29
29
  end
30
30
  end
31
31
  end
@@ -1,5 +1,5 @@
1
1
  # lib/gemwarrior/entities/monsters/apatiger.rb
2
- # Apatiger monster
2
+ # Entity::Creature::Monster::Apatiger
3
3
 
4
4
  require_relative '../monster'
5
5
 
@@ -9,7 +9,9 @@ module Gemwarrior
9
9
  super
10
10
 
11
11
  self.name = 'apatiger'
12
+ self.name_display = 'Apatiger'
12
13
  self.description = 'Apathetic about most everything as it lazes around, save for eating you.'
14
+ self.battlecry = 'Gggggggggrrrrrrrrrrrrrrrrooooooooooowwwwwwwwwwwwlllllllll!'
13
15
  self.face = 'calloused'
14
16
  self.hands = 'soft'
15
17
  self.mood = 'apathetic'
@@ -24,8 +26,6 @@ module Gemwarrior
24
26
 
25
27
  self.rox = rand((level * 2)..(level * 3))
26
28
  self.xp = rand(level..(level * 2))
27
-
28
- self.battlecry = 'Gggggggggrrrrrrrrrrrrrrrrooooooooooowwwwwwwwwwwwlllllllll!'
29
29
  end
30
30
  end
31
31
  end
@@ -1,5 +1,5 @@
1
1
  # lib/gemwarrior/entities/monsters/aquamarine.rb
2
- # Aquamarine monster
2
+ # Entity::Creature::Monster::Aquamarine
3
3
 
4
4
  require_relative '../monster'
5
5
 
@@ -9,7 +9,9 @@ module Gemwarrior
9
9
  super
10
10
 
11
11
  self.name = 'aquamarine'
12
+ self.name_display = 'Aquamarine'
12
13
  self.description = 'It is but one of the few, the proud, the underwater.'
14
+ self.battlecry = 'Attention! You are about to get smashed!'
13
15
  self.face = 'strained'
14
16
  self.hands = 'hairy'
15
17
  self.mood = 'tempered'
@@ -24,8 +26,6 @@ module Gemwarrior
24
26
 
25
27
  self.rox = rand((level * 2)..(level * 3))
26
28
  self.xp = rand(level..(level * 2))
27
-
28
- self.battlecry = 'Attention! You are about to get smashed!'
29
29
  end
30
30
  end
31
31
  end
@@ -1,5 +1,5 @@
1
1
  # lib/gemwarrior/entities/monsters/bloodstorm.rb
2
- # Bloodstorm monster
2
+ # Entity::Creature::Monster::Bloodstorm
3
3
 
4
4
  require_relative '../monster'
5
5
 
@@ -9,7 +9,9 @@ module Gemwarrior
9
9
  super
10
10
 
11
11
  self.name = 'bloodstorm'
12
+ self.name_display = 'Bloodstorm'
12
13
  self.description = 'A literal swirling, maniacal vortex of human hemoglobin.'
14
+ self.battlecry = '/swirls'
13
15
  self.face = 'bloody'
14
16
  self.hands = 'bloody'
15
17
  self.mood = 'boiling'
@@ -24,8 +26,6 @@ module Gemwarrior
24
26
 
25
27
  self.rox = rand((level * 2)..(level * 3))
26
28
  self.xp = rand(level..(level * 2))
27
-
28
- self.battlecry = '/swirls'
29
29
  end
30
30
  end
31
31
  end
@@ -1,24 +1,27 @@
1
1
  # lib/gemwarrior/entities/monsters/bosses/emerald.rb
2
- # Emerald boss monster
2
+ # Entity::Creature::Monster::Emerald (BOSS)
3
3
 
4
4
  require_relative '../../monster'
5
5
  require_relative '../../items/sparkly_thing'
6
- require_relative '../../../misc/music'
7
6
 
8
7
  module Gemwarrior
9
8
  class Emerald < Monster
10
9
  # CONSTANTS
11
- MOVE_TEXT = '*** WHOOOOOOSH ***'
10
+ MOVE_TEXT = '** WHOOOOOOSH **'
12
11
 
13
12
  def initialize
14
- self.name = 'Emerald'
13
+ super
14
+
15
+ self.name = 'emerald'
16
+ self.name_display = 'Emerald'
15
17
  self.description = 'A wily, beefy, tower of a man, Emerald looks to be a champion of both wisdom, from what you\'ve heard, AND strength, from what you plainly see. He sports a constant glint in his eyes as he faces you, dead-on.'
18
+ self.battlecry = 'You\'ve come for the SparklyThing(tm), I see. To that I say: Ha ha ha ha ha! Prepare yourself fool: today your whole life crumbles!'
16
19
  self.face = 'gleaming'
17
20
  self.hands = 'tantalizing'
18
21
  self.mood = 'enraged'
19
22
 
20
23
  self.level = 15
21
- self.hp_cur = rand((level * 2)..(level * 3))
24
+ self.hp_cur = rand((level * 3)..(level * 4))
22
25
  self.hp_max = hp_cur
23
26
  self.atk_lo = rand(level..(level * 2.5).floor)
24
27
  self.atk_hi = rand((level * 2.5).floor..(level * 3).floor)
@@ -26,33 +29,15 @@ module Gemwarrior
26
29
  self.dexterity = rand(8..10)
27
30
 
28
31
  self.inventory = Inventory.new(items = [SparklyThing.new])
29
- self.rox = rand((level * 2)..(level * 3))
30
- self.xp = rand(level..(level * 2))
32
+ self.rox = rand((level * 9)..(level * 11))
33
+ self.xp = rand((level * 13)..(level * 15))
31
34
 
32
- self.battlecry = 'You\'ve come for the SparklyThing(tm), I see. To that I say: Ha ha ha ha ha! Prepare yourself fool: today your whole life crumbles!'
33
35
  self.is_boss = true
34
- self.is_dead = false
35
36
  end
36
37
 
37
38
  def initiate_ending(world)
38
39
  # fanfare!
39
- Music::cue([
40
- { frequencies: 'G3', duration: 250 },
41
- { frequencies: 'A3', duration: 50 },
42
- { frequencies: 'B3', duration: 50 },
43
- { frequencies: 'C4', duration: 50 },
44
- { frequencies: 'D4', duration: 250 },
45
- { frequencies: 'E4', duration: 50 },
46
- { frequencies: 'F#4', duration: 50 },
47
- { frequencies: 'G4', duration: 50 },
48
- { frequencies: 'A4', duration: 250 },
49
- { frequencies: 'B4', duration: 50 },
50
- { frequencies: 'C5', duration: 50 },
51
- { frequencies: 'D5', duration: 50 },
52
- { frequencies: 'E5', duration: 50 },
53
- { frequencies: 'F#5', duration: 50 },
54
- { frequencies: 'G5', duration: 1000 }
55
- ])
40
+ Audio.play_synth(:win_game)
56
41
 
57
42
  # get reference to throne room, emerald monster, and throne item
58
43
  throne_room = world.location_by_coords(world.location_coords_by_name('Sky Tower (Throne Room)'))
@@ -91,7 +76,7 @@ module Gemwarrior
91
76
  STDIN.getc
92
77
 
93
78
  # onto the queen
94
- Animation::run(phrase: MOVE_TEXT)
79
+ Animation.run(phrase: MOVE_TEXT)
95
80
  puts
96
81
 
97
82
  return { type: 'move', data: 'Queen Room'}
@@ -1,13 +1,18 @@
1
- # lib/gemwarrior/entities/monsters/garynetty.rb
2
- # Garrynetty monster
1
+ # lib/gemwarrior/entities/monsters/bosses/garynetty.rb
2
+ # Entity::Creature::Monster::Garrynetty (BOSS)
3
3
 
4
4
  require_relative '../../monster'
5
+ require_relative '../../items/tent'
5
6
 
6
7
  module Gemwarrior
7
8
  class Garynetty < Monster
8
9
  def initialize
9
- self.name = 'Garynetty'
10
+ super
11
+
12
+ self.name = 'garynetty'
13
+ self.name_display = 'Garynetty'
10
14
  self.description = 'Conservative, yet odd, the Garynetty is not messing around.'
15
+ self.battlecry = '...?!'
11
16
  self.face = 'irregular'
12
17
  self.hands = 'sharp'
13
18
  self.mood = 'abrasive'
@@ -20,12 +25,19 @@ module Gemwarrior
20
25
  self.defense = rand(7..9)
21
26
  self.dexterity = rand(10..12)
22
27
 
23
- self.inventory = Inventory.new
28
+ self.inventory = random_item
24
29
  self.rox = rand((level * 2)..(level * 3))
25
30
  self.xp = rand((level * 3)..(level * 4))
26
31
 
27
- self.battlecry = '...?!'
28
32
  self.is_boss = true
29
33
  end
34
+
35
+ private
36
+
37
+ def random_item
38
+ if [true, false].sample
39
+ Inventory.new(items = [Tent.new])
40
+ end
41
+ end
30
42
  end
31
43
  end
@@ -0,0 +1,66 @@
1
+ # lib/gemwarrior/entities/monsters/bosses/jaspern.rb
2
+ # Entity::Creature::Monster::Jaspern (BOSS)
3
+
4
+ require_relative '../../monster'
5
+ require_relative '../../items/tent'
6
+
7
+ module Gemwarrior
8
+ class Jaspern < Monster
9
+ def initialize
10
+ super
11
+
12
+ self.name = 'jaspern'
13
+ self.name_display = 'Jaspern'
14
+ self.description = 'Dark green hair, but yellow and brown skin, Jaspern is actually somewhat translucent, and he does not appear to be moveable or go-around-able.'
15
+ self.battlecry = 'I am the keeper of this bridge! To go further, you must get through me!'
16
+ self.face = 'crystalline'
17
+ self.hands = 'small'
18
+ self.mood = 'opaque'
19
+
20
+ self.level = rand(7..8)
21
+ self.hp_cur = rand((level * 2.5).floor..(level * 3.5).floor)
22
+ self.hp_max = hp_cur
23
+ self.atk_lo = rand((level * 2)..(level * 2.5).floor)
24
+ self.atk_hi = rand((level * 2.5).floor..(level * 3).floor)
25
+ self.defense = rand(5..7)
26
+ self.dexterity = rand(8..9)
27
+
28
+ self.inventory = random_item
29
+ self.rox = rand((level * 6)..(level * 7))
30
+ self.xp = rand((level * 8)..(level * 10))
31
+
32
+ self.is_boss = true
33
+ end
34
+
35
+ def river_bridge_success(world)
36
+ # get object references
37
+ river_bridge = world.location_by_name('river_bridge')
38
+ jaspern = river_bridge.bosses_abounding[0]
39
+
40
+ # mark jaspern as dead
41
+ jaspern.is_dead = true
42
+ jaspern.face = 'broken'
43
+ jaspern.hands = 'limp'
44
+ jaspern.mood = 'defeated'
45
+ jaspern.hp_cur = 0
46
+ jaspern.rox = 0
47
+ jaspern.description = 'As Jaspern lies motionless upon the ground, you feel sorry for murdering him in cold blood without any provocation, but you feel like he was probably bad, and you really needed to explore further north. Regardless, it looks like you own the bridge now.'
48
+ jaspern.inventory = Inventory.new
49
+
50
+ # unlock northward travel
51
+ river_bridge.description = 'The path northward on this well-constructed bridge is no longer blocked after your brutal scuffle with Jaspern, and yet the flowing river below seems unperturbed.'
52
+ river_bridge.locs_connected[:north] = true
53
+ return
54
+ end
55
+
56
+ private
57
+
58
+ def random_item
59
+ if [true, false].sample
60
+ Inventory.new(items = [Tent.new])
61
+ else
62
+ Inventory.new
63
+ end
64
+ end
65
+ end
66
+ end
@@ -1,5 +1,5 @@
1
1
  # lib/gemwarrior/entities/monsters/citrinaga.rb
2
- # Citrinaga monster
2
+ # Entity::Creature::Monster::Citrinaga
3
3
 
4
4
  require_relative '../monster'
5
5
 
@@ -9,7 +9,9 @@ module Gemwarrior
9
9
  super
10
10
 
11
11
  self.name = 'citrinaga'
12
+ self.name_display = 'Citrinaga'
12
13
  self.description = 'Refreshing in its shiny, gleaming effectiveness at ending your life.'
14
+ self.battlecry = 'Slice and dice so nice!'
13
15
  self.face = 'shiny'
14
16
  self.hands = 'glistening'
15
17
  self.mood = 'staid'
@@ -24,8 +26,6 @@ module Gemwarrior
24
26
 
25
27
  self.rox = rand((level * 2)..(level * 3))
26
28
  self.xp = rand(level..(level * 3))
27
-
28
- self.battlecry = 'Slice and dice so nice!'
29
29
  end
30
30
  end
31
31
  end