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,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