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.
- checksums.yaml +4 -4
- data/bin/gemwarrior +0 -0
- data/data/default_world.yaml +282 -436
- data/gemwarrior.gemspec +1 -1
- data/lib/gemwarrior/arena.rb +17 -17
- data/lib/gemwarrior/battle.rb +146 -77
- data/lib/gemwarrior/entities/armor.rb +34 -0
- data/lib/gemwarrior/entities/armor/iron_helmet.rb +17 -0
- data/lib/gemwarrior/entities/creature.rb +81 -4
- data/lib/gemwarrior/entities/creatures/cow.rb +24 -0
- data/lib/gemwarrior/entities/{items → creatures}/goat.rb +9 -11
- data/lib/gemwarrior/entities/creatures/pig.rb +24 -0
- data/lib/gemwarrior/entities/entity.rb +59 -5
- data/lib/gemwarrior/entities/item.rb +10 -22
- data/lib/gemwarrior/entities/items/apple.rb +2 -5
- data/lib/gemwarrior/entities/items/arena_door.rb +2 -6
- data/lib/gemwarrior/entities/items/bed.rb +7 -11
- data/lib/gemwarrior/entities/items/bookcase.rb +57 -0
- data/lib/gemwarrior/entities/items/bullet.rb +25 -0
- data/lib/gemwarrior/entities/items/couch.rb +6 -10
- data/lib/gemwarrior/entities/items/cup.rb +2 -5
- data/lib/gemwarrior/entities/items/dehumidifier.rb +3 -6
- data/lib/gemwarrior/entities/items/feather.rb +2 -5
- data/lib/gemwarrior/entities/items/floor_tile.rb +6 -10
- data/lib/gemwarrior/entities/items/flower.rb +1 -4
- data/lib/gemwarrior/entities/items/herb.rb +12 -13
- data/lib/gemwarrior/entities/items/keystone.rb +2 -5
- data/lib/gemwarrior/entities/items/ladder.rb +7 -11
- data/lib/gemwarrior/entities/items/letter.rb +20 -23
- data/lib/gemwarrior/entities/items/map.rb +3 -6
- data/lib/gemwarrior/entities/items/massive_door.rb +3 -7
- data/lib/gemwarrior/entities/items/pedestal.rb +6 -10
- data/lib/gemwarrior/entities/items/pond.rb +4 -8
- data/lib/gemwarrior/entities/items/rope.rb +4 -8
- data/lib/gemwarrior/entities/items/small_hole.rb +15 -77
- data/lib/gemwarrior/entities/items/snowman.rb +5 -9
- data/lib/gemwarrior/entities/items/sparkly_thing.rb +3 -7
- data/lib/gemwarrior/entities/items/stonemite.rb +2 -6
- data/lib/gemwarrior/entities/items/tent.rb +3 -6
- data/lib/gemwarrior/entities/items/throne.rb +7 -6
- data/lib/gemwarrior/entities/items/tree.rb +2 -6
- data/lib/gemwarrior/entities/items/waterfall.rb +9 -8
- data/lib/gemwarrior/entities/location.rb +49 -43
- data/lib/gemwarrior/entities/monster.rb +34 -28
- data/lib/gemwarrior/entities/monsters/alexandrat.rb +3 -3
- data/lib/gemwarrior/entities/monsters/amberoo.rb +3 -3
- data/lib/gemwarrior/entities/monsters/amethystle.rb +3 -3
- data/lib/gemwarrior/entities/monsters/apatiger.rb +3 -3
- data/lib/gemwarrior/entities/monsters/aquamarine.rb +3 -3
- data/lib/gemwarrior/entities/monsters/bloodstorm.rb +3 -3
- data/lib/gemwarrior/entities/monsters/bosses/emerald.rb +12 -27
- data/lib/gemwarrior/entities/monsters/bosses/garynetty.rb +17 -5
- data/lib/gemwarrior/entities/monsters/bosses/jaspern.rb +66 -0
- data/lib/gemwarrior/entities/monsters/citrinaga.rb +3 -3
- data/lib/gemwarrior/entities/monsters/coraliz.rb +3 -3
- data/lib/gemwarrior/entities/monsters/cubicat.rb +3 -3
- data/lib/gemwarrior/entities/monsters/diaman.rb +3 -3
- data/lib/gemwarrior/entities/{items → people}/arena_master.rb +8 -13
- data/lib/gemwarrior/entities/{items → people}/drunk_man.rb +14 -35
- data/lib/gemwarrior/entities/people/queen_ruby.rb +71 -0
- data/lib/gemwarrior/entities/people/rockney.rb +132 -0
- data/lib/gemwarrior/entities/{items → people}/shifty_woman.rb +7 -12
- data/lib/gemwarrior/entities/{items → people}/thin_man.rb +9 -14
- data/lib/gemwarrior/entities/people/ware_hawker.rb +153 -0
- data/lib/gemwarrior/entities/person.rb +20 -0
- data/lib/gemwarrior/entities/player.rb +102 -60
- data/lib/gemwarrior/entities/weapon.rb +38 -0
- data/lib/gemwarrior/entities/{items → weapons}/dagger.rb +5 -7
- data/lib/gemwarrior/entities/{items → weapons}/gun.rb +8 -10
- data/lib/gemwarrior/entities/{items → weapons}/mace.rb +6 -9
- data/lib/gemwarrior/entities/{items → weapons}/opalaser.rb +5 -7
- data/lib/gemwarrior/entities/weapons/spear.rb +23 -0
- data/lib/gemwarrior/entities/{items → weapons}/stalactite.rb +5 -7
- data/lib/gemwarrior/entities/weapons/stone.rb +23 -0
- data/lib/gemwarrior/evaluator.rb +111 -107
- data/lib/gemwarrior/game.rb +61 -29
- data/lib/gemwarrior/game_assets.rb +76 -0
- data/lib/gemwarrior/inventory.rb +77 -43
- data/lib/gemwarrior/misc/animation.rb +17 -13
- data/lib/gemwarrior/misc/{music.rb → audio.rb} +15 -7
- data/lib/gemwarrior/misc/audio_cues.rb +133 -0
- data/lib/gemwarrior/misc/formatting.rb +9 -9
- data/lib/gemwarrior/misc/player_levels.rb +21 -0
- data/lib/gemwarrior/repl.rb +32 -31
- data/lib/gemwarrior/version.rb +1 -1
- data/lib/gemwarrior/world.rb +155 -134
- metadata +34 -22
- data/lib/gemwarrior/entities/items/cow.rb +0 -26
- data/lib/gemwarrior/entities/items/pig.rb +0 -26
- data/lib/gemwarrior/entities/items/queen_ruby.rb +0 -62
- data/lib/gemwarrior/entities/items/spear.rb +0 -26
- data/lib/gemwarrior/entities/items/stone.rb +0 -25
- data/lib/gemwarrior/entities/items/ware_hawker.rb +0 -93
@@ -1,43 +1,49 @@
|
|
1
1
|
# lib/gemwarrior/entities/monster.rb
|
2
|
-
# Monster
|
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
|
-
|
10
|
+
ITEM_POOL = [Herb.new, Bullet.new]
|
10
11
|
|
11
|
-
attr_accessor :
|
12
|
+
attr_accessor :battlecry,
|
13
|
+
:is_boss,
|
14
|
+
:is_dead
|
12
15
|
|
13
16
|
def initialize
|
14
|
-
|
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
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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 = '
|
10
|
+
MOVE_TEXT = '** WHOOOOOOSH **'
|
12
11
|
|
13
12
|
def initialize
|
14
|
-
|
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 *
|
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 *
|
30
|
-
self.xp = rand(level..(level *
|
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
|
-
|
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
|
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
|
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
|
-
|
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 =
|
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
|
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
|