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,26 +0,0 @@
|
|
1
|
-
# lib/gemwarrior/entities/items/cow.rb
|
2
|
-
# Item::Cow
|
3
|
-
|
4
|
-
require_relative '../item'
|
5
|
-
|
6
|
-
module Gemwarrior
|
7
|
-
class Cow < Item
|
8
|
-
def initialize
|
9
|
-
super
|
10
|
-
|
11
|
-
self.name = 'cow'
|
12
|
-
self.description = 'Grazing on some fake grass, unperturbed, this black and white herd animal looks bored.'
|
13
|
-
self.atk_lo = nil
|
14
|
-
self.atk_hi = nil
|
15
|
-
self.takeable = true
|
16
|
-
self.useable = true
|
17
|
-
self.equippable = false
|
18
|
-
self.talkable = true
|
19
|
-
end
|
20
|
-
|
21
|
-
def use(player = nil)
|
22
|
-
puts '>> "Moo."'
|
23
|
-
{ type: nil, data: nil }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# lib/gemwarrior/entities/items/pig.rb
|
2
|
-
# Item::Pig
|
3
|
-
|
4
|
-
require_relative '../item'
|
5
|
-
|
6
|
-
module Gemwarrior
|
7
|
-
class Pig < Item
|
8
|
-
def initialize
|
9
|
-
super
|
10
|
-
|
11
|
-
self.name = 'pig'
|
12
|
-
self.description = 'Dirty, eating slop, but still kind of cute. Yep, this is a pig.'
|
13
|
-
self.atk_lo = nil
|
14
|
-
self.atk_hi = nil
|
15
|
-
self.takeable = true
|
16
|
-
self.useable = true
|
17
|
-
self.equippable = false
|
18
|
-
self.talkable = true
|
19
|
-
end
|
20
|
-
|
21
|
-
def use(player = nil)
|
22
|
-
puts '>> "Oink."'
|
23
|
-
{ type: nil, data: nil }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# lib/gemwarrior/entities/items/queen_ruby.rb
|
2
|
-
# Item::QueenRuby
|
3
|
-
|
4
|
-
require_relative '../item'
|
5
|
-
require_relative '../../misc/animation'
|
6
|
-
|
7
|
-
module Gemwarrior
|
8
|
-
class QueenRuby < Item
|
9
|
-
# CONSTANTS
|
10
|
-
MOVE_TEXT = '*** WHOOOOOOSH ***'
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
super
|
14
|
-
|
15
|
-
self.name = 'queen_ruby'
|
16
|
-
self.description = 'Queen Ruby glimmers like she was made from the substance of her name. She wears a wan smile, and her hands are delicately intertwined as she sits patiently.'
|
17
|
-
self.atk_lo = nil
|
18
|
-
self.atk_hi = nil
|
19
|
-
self.takeable = true
|
20
|
-
self.useable = true
|
21
|
-
self.equippable = false
|
22
|
-
self.talkable = true
|
23
|
-
end
|
24
|
-
|
25
|
-
def use(player = nil)
|
26
|
-
puts '>> "Thank you for bringing back the ShinyThing(tm)! The land of Jool is saved!"'
|
27
|
-
STDIN.getch
|
28
|
-
puts ">> \"Please, #{player.name}, hand the ShinyThing(tm) to me, before all is lost!\""
|
29
|
-
puts
|
30
|
-
print 'Hand over the ShinyThing(tm)? (y/n) '
|
31
|
-
answer = gets.chomp.downcase
|
32
|
-
|
33
|
-
case answer
|
34
|
-
when 'y', 'yes'
|
35
|
-
player.inventory.remove_item('sparkly_thing')
|
36
|
-
print '>> "Oh, thank you! Now that the evil Emerald is defeated, and I, Queen Ruby, have the ShinyThing(tm) again, peace can come to the land of Jool. Your reward is...'
|
37
|
-
STDIN.getch
|
38
|
-
Animation::run(phrase: '...', oneline: true)
|
39
|
-
STDIN.getch
|
40
|
-
Animation::run(phrase: '...', oneline: true)
|
41
|
-
STDIN.getch
|
42
|
-
Animation::run(phrase: '...my thanks!"', oneline: true)
|
43
|
-
STDIN.getch
|
44
|
-
puts
|
45
|
-
puts '>> "Now, be a dear and run on home."'
|
46
|
-
puts
|
47
|
-
STDIN.getch
|
48
|
-
puts 'And with that, she waves her arm in a tired, yet mystical, manner. Your mind and sight go blank, and you "poof" out of existence.'
|
49
|
-
puts
|
50
|
-
|
51
|
-
Animation::run(phrase: MOVE_TEXT)
|
52
|
-
{ type: 'move', data: 'Home' }
|
53
|
-
when 'n', 'no'
|
54
|
-
puts '>> "No? No??? Well, you are not leaving this room until you do, so think long and hard about that."'
|
55
|
-
{ type: nil, data: nil }
|
56
|
-
else
|
57
|
-
puts '>> "Take your time and let me know when you are going to give me the ShinyThing(tm), all right?"'
|
58
|
-
{ type: nil, data: nil }
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# lib/gemwarrior/entities/items/spear.rb
|
2
|
-
# Item::Spear
|
3
|
-
|
4
|
-
require_relative '../item'
|
5
|
-
|
6
|
-
module Gemwarrior
|
7
|
-
class Spear < Item
|
8
|
-
def initialize
|
9
|
-
super
|
10
|
-
|
11
|
-
self.name = 'spear'
|
12
|
-
self.description = 'Sharp spikes atop a steel ball, affixed to a sturdy wooden handle. You could do damage with this.'
|
13
|
-
self.atk_lo = 3
|
14
|
-
self.atk_hi = 7
|
15
|
-
self.takeable = true
|
16
|
-
self.useable = true
|
17
|
-
self.consumable = false
|
18
|
-
self.equippable = true
|
19
|
-
end
|
20
|
-
|
21
|
-
def use(player = nil)
|
22
|
-
puts 'This spear does, indeed, appear to strike fear upon that which is near.'
|
23
|
-
{ type: nil, data: nil }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# lib/gemwarrior/entities/items/stone.rb
|
2
|
-
# Item::Stone
|
3
|
-
|
4
|
-
require_relative '../item'
|
5
|
-
|
6
|
-
module Gemwarrior
|
7
|
-
class Stone < Item
|
8
|
-
def initialize
|
9
|
-
super
|
10
|
-
|
11
|
-
self.name = 'stone'
|
12
|
-
self.description = 'A small, sharp mega pebble, suitable for tossing in amusement, and perhaps combat.'
|
13
|
-
self.atk_lo = 1
|
14
|
-
self.atk_hi = 2
|
15
|
-
self.takeable = true
|
16
|
-
self.useable = true
|
17
|
-
self.equippable = true
|
18
|
-
end
|
19
|
-
|
20
|
-
def use(player = nil)
|
21
|
-
puts 'You toss the stone a few feet into the air, and then it falls back into your palm. The experience was truly thrilling.'
|
22
|
-
{ type: nil, data: nil }
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,93 +0,0 @@
|
|
1
|
-
# lib/gemwarrior/entities/items/ware_hawker.rb
|
2
|
-
# Item::WareHawker
|
3
|
-
|
4
|
-
require_relative '../item'
|
5
|
-
require_relative 'mace'
|
6
|
-
require_relative 'spear'
|
7
|
-
|
8
|
-
module Gemwarrior
|
9
|
-
class WareHawker < Item
|
10
|
-
# CONSTANTS
|
11
|
-
PRICE_MACE = 200
|
12
|
-
PRICE_SPEAR = 250
|
13
|
-
PLAYER_ROX_INSUFFICIENT = '>> "Are you seriously wasting my time? You are testing me, human."'
|
14
|
-
PLAYER_ITEMS_ADDITIONAL = '>> "Will there be something else?"'
|
15
|
-
PLAYER_COMMAND_INVALID = '>> "That means nothing to me."'
|
16
|
-
|
17
|
-
def initialize
|
18
|
-
super
|
19
|
-
|
20
|
-
self.name = 'ware_hawker'
|
21
|
-
self.description = 'A literal anthropomorphic hawk has set up shop behind a crudely-made table. Some wares are scattered atop its surface, seemingly within anyone\'s grasp, but the hawk\'s piercing eyes seem to belie this observation.'
|
22
|
-
self.atk_lo = nil
|
23
|
-
self.atk_hi = nil
|
24
|
-
self.takeable = false
|
25
|
-
self.useable = true
|
26
|
-
self.equippable = false
|
27
|
-
self.talkable = true
|
28
|
-
end
|
29
|
-
|
30
|
-
def use(player = nil)
|
31
|
-
puts 'You greet the hawk, mentioning that you are interested in the objects presented. The hawk speaks in a beautiful, yet commanding, tone:'
|
32
|
-
puts
|
33
|
-
|
34
|
-
hawk_shop(player)
|
35
|
-
end
|
36
|
-
|
37
|
-
def reuse(player = nil)
|
38
|
-
hawk_shop(player)
|
39
|
-
end
|
40
|
-
|
41
|
-
def hawk_shop(player)
|
42
|
-
items_purchased = []
|
43
|
-
|
44
|
-
puts '>> "I hope you have rox, human. My time is amenable to business transactions, not idle chit chat. What do you want?"'
|
45
|
-
puts
|
46
|
-
puts 'A feathered arm quickly moves across the table in an arc suggesting to you that a choice is to be made. Each object has a price tag underneath it, painstakingly written in ink.'
|
47
|
-
puts
|
48
|
-
puts "(1) Mace - #{PRICE_MACE} rox"
|
49
|
-
puts "(2) Spear - #{PRICE_SPEAR} rox"
|
50
|
-
puts
|
51
|
-
puts '>> "Choose. Now.'
|
52
|
-
|
53
|
-
loop do
|
54
|
-
puts ' 1 - Mace'
|
55
|
-
puts ' 2 - Spear'
|
56
|
-
puts ' x - leave'
|
57
|
-
print '[HAWK]> '
|
58
|
-
choice = gets.chomp.downcase
|
59
|
-
|
60
|
-
case choice
|
61
|
-
when '1'
|
62
|
-
if player.rox >= PRICE_MACE
|
63
|
-
player.rox -= PRICE_MACE
|
64
|
-
items_purchased.push(Mace.new)
|
65
|
-
puts '>> "Yes, fine."'
|
66
|
-
puts PLAYER_ITEMS_ADDITIONAL
|
67
|
-
next
|
68
|
-
else
|
69
|
-
puts PLAYER_ROX_INSUFFICIENT
|
70
|
-
next
|
71
|
-
end
|
72
|
-
when '2'
|
73
|
-
if player.rox >= PRICE_SPEAR
|
74
|
-
player.rox -= PRICE_SPEAR
|
75
|
-
items_purchased.push(Spear.new)
|
76
|
-
puts '>> "Hmph. Very well, then."'
|
77
|
-
puts PLAYER_ITEMS_ADDITIONAL
|
78
|
-
next
|
79
|
-
else
|
80
|
-
puts PLAYER_ROX_INSUFFICIENT
|
81
|
-
next
|
82
|
-
end
|
83
|
-
when 'x'
|
84
|
-
puts '>> "Our business is complete then."'
|
85
|
-
return { type: 'purchase', data: items_purchased }
|
86
|
-
else
|
87
|
-
puts PLAYER_COMMAND_INVALID
|
88
|
-
next
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|