gemwarrior 0.10.8 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
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