gemwarrior 0.8.0 → 0.8.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7a5c0f4d674fbc3b60e83d6e035c80c9830642b4
4
- data.tar.gz: 83c0913aba4c0c8cb1449f1b0407fc2073866202
3
+ metadata.gz: 7d9ee449614471055090e892a1df42560c7aa007
4
+ data.tar.gz: 965e2ba208c084fa2a09560264bc2fc93681c85d
5
5
  SHA512:
6
- metadata.gz: 6df3ec5a685a5101167ed050417d5cc49da501740ef97f6ac644431e5f84d969b013cbd5eabd49bf3e1aff0f2ec1dd438a08523eb9d04be51a7f352d3c0792a1
7
- data.tar.gz: 6fb339430b354569b3aca5cf2079a801eafd5a8ca588370a529bc76123bf9ec6d738e200457fe26d517a675e5b440353cb234ab56a14f113ef6cdd23131aa9a9
6
+ metadata.gz: 13103d68009ab62661164fecacd8f959034078e069ce3e150935fc275659fcab5c7450a4b6496078d092f6da88731205b17301b0a11357e28a2851e41af4d0a5
7
+ data.tar.gz: 65b36061328f65a994f5e58fb8321a3b9b97e25aa3e5105c580751555aacb03282ad3513a965b3bde0fa662c5021e11460fef3766834b46e29c1a06b74c15cf5
data/data/locations.yml CHANGED
@@ -880,6 +880,7 @@
880
880
  items:
881
881
  - Flower
882
882
  - Keystone
883
+ - Pond
883
884
 
884
885
  -
885
886
  name: 'Sky Tower (Armory)'
@@ -38,11 +38,10 @@ module Gemwarrior
38
38
  player.xp = player.xp + bonus_xp
39
39
  puts 'You decided you\'ve had enough of the exhausting Arena for one day and exit the main stage.'
40
40
  puts "You have gained #{bonus_rox} rox and #{bonus_xp} XP!"
41
- return
41
+
42
+ return print_arena_outro
42
43
  end
43
44
  end
44
-
45
- print_arena_outro
46
45
  end
47
46
 
48
47
  private
@@ -15,17 +15,18 @@ module Gemwarrior
15
15
  ## MESSAGES
16
16
  TEXT_ESCAPE = 'POOF'
17
17
 
18
- attr_accessor :world, :player, :monster
18
+ attr_accessor :world, :player, :monster, :player_defending
19
19
 
20
20
  def initialize(options)
21
- self.world = options.fetch(:world)
22
- self.player = options.fetch(:player)
23
- self.monster = options.fetch(:monster)
21
+ self.world = options.fetch(:world)
22
+ self.player = options.fetch(:player)
23
+ self.monster = options.fetch(:monster)
24
+ self.player_defending = false
24
25
  end
25
26
 
26
27
  def start(is_arena = nil, is_event = nil)
27
28
  print_battle_line
28
- binding.pry
29
+
29
30
  if is_arena
30
31
  print 'Your opponent is now...'
31
32
  Animation::run({:phrase => "#{monster.name.upcase}!", :speed => :slow})
@@ -81,8 +82,21 @@ module Gemwarrior
81
82
  print "\n"
82
83
  puts
83
84
 
85
+ self.player_defending = false
86
+
84
87
  puts 'What do you do?'
85
- puts "[Fight/Attack][Look][Run]".colorize(:color => :yellow)
88
+ print '['.colorize(:yellow)
89
+ print 'F'.colorize(:green)
90
+ print 'ight/'.colorize(:yellow)
91
+ print 'A'.colorize(:green)
92
+ print 'ttack]['.colorize(:yellow)
93
+ print 'D'.colorize(:green)
94
+ print 'efend]['.colorize(:yellow)
95
+ print 'L'.colorize(:green)
96
+ print 'ook]['.colorize(:yellow)
97
+ print 'R'.colorize(:green)
98
+ print 'un]'.colorize(:yellow)
99
+ print "\n"
86
100
 
87
101
  cmd = STDIN.gets.chomp.downcase
88
102
 
@@ -100,6 +114,9 @@ module Gemwarrior
100
114
  else
101
115
  puts "You miss entirely!".colorize(:yellow)
102
116
  end
117
+ when 'defend', 'd'
118
+ puts 'You dig in and defend this round.'
119
+ self.player_defending = true
103
120
  when 'look', 'l'
104
121
  print "#{monster.name}".colorize(:white)
105
122
  print " (#{monster.hp_cur}/#{monster.hp_max} HP): #{monster.description}\n"
@@ -146,7 +163,9 @@ module Gemwarrior
146
163
  end
147
164
  rand(atk_range)
148
165
  else
149
- rand(monster.atk_lo..monster.atk_hi)
166
+ dmg = rand(monster.atk_lo..monster.atk_hi)
167
+ dmg = dmg - (entity.defense / 2) if player_defending
168
+ return dmg
150
169
  end
151
170
  end
152
171
  end
@@ -0,0 +1,24 @@
1
+ # lib/gemwarrior/entities/items/opalaser.rb
2
+ # Item::Opalaser
3
+
4
+ require_relative '../item'
5
+
6
+ module Gemwarrior
7
+ class Opalaser < Item
8
+ def initialize
9
+ self.name = 'opalaser'
10
+ self.description = 'Gleaming with supernatural light, this object feels alien, yet familiar.'
11
+ self.atk_lo = 10
12
+ self.atk_hi = 12
13
+ self.takeable = true
14
+ self.useable = true
15
+ self.equippable = true
16
+ self.equipped = false
17
+ end
18
+
19
+ def use(player = nil)
20
+ puts 'You pull the "trigger" on the opalaser, but nothing happens.'
21
+ {:type => nil, :data => nil}
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,35 @@
1
+ # lib/gemwarrior/entities/items/pond.rb
2
+ # Item::Pond
3
+
4
+ require_relative '../item'
5
+
6
+ module Gemwarrior
7
+ class Pond < Item
8
+ # CONTACTS
9
+ NEEDED_ITEMS = ['dehumidifier', 'feather', 'gun', 'stalactite']
10
+
11
+ def initialize
12
+ self.name = 'pond'
13
+ self.description = 'This tiny pool of water self-ripples every minute or so. Small, floating insects buzz around merrily. A small plaque lays at the foot, reading: "If the right objects curious doth possess, touch the water\'s surface and you\'ll get redress."'
14
+ self.atk_lo = nil
15
+ self.atk_hi = nil
16
+ self.takeable = false
17
+ self.useable = true
18
+ self.equippable = false
19
+ self.equipped = false
20
+ end
21
+
22
+ def use(player = nil)
23
+ puts 'You gently place your fingers on the pond\'s rippling surface.'
24
+ binding.pry
25
+ if (NEEDED_ITEMS - player.inventory.items.map(&:name)).empty?
26
+ puts 'The pond water explodes with a force that knocks you back onto the ground. When you come to, you notice the depression in the ground where the pond once was now has a new curious object!'
27
+ self.description = 'A barren depression in the ground is all that is left of the pond.'
28
+ return {:type => 'item', :data => 'Opalaser'}
29
+ else
30
+ puts 'You graze your fingers within the pond for a moment, feeling the coolness. You feel zen.'
31
+ return {:type => nil, :data => nil}
32
+ end
33
+ end
34
+ end
35
+ end
@@ -40,6 +40,14 @@ module Gemwarrior
40
40
  items.map(&:name).include?(item_name)
41
41
  end
42
42
 
43
+ def add_item(item_name)
44
+ Dir.glob('lib/gemwarrior/items/*.rb').each do |item|
45
+ require_relative item[item.index('/', item.index('/')+1)+1..item.length]
46
+ end
47
+
48
+ self.items.push(eval(item_name).new)
49
+ end
50
+
43
51
  def remove_item(item_name)
44
52
  if has_item?(item_name)
45
53
  items.reject! { |item| item.name == item_name }
@@ -314,6 +314,9 @@ module Gemwarrior
314
314
  arena = Arena.new({:world => world, :player => world.player})
315
315
  arena.start
316
316
  #return 'You enter the arena and fight some battles. It was cool, but not as cool as if it were actually implemented.'
317
+ when 'item'
318
+ world.location_by_coords(world.player.cur_coords).add_item(result[:data])
319
+ return
317
320
  else
318
321
  return
319
322
  end
@@ -2,5 +2,5 @@
2
2
  # Version of Gem Warrior
3
3
 
4
4
  module Gemwarrior
5
- VERSION = "0.8.0"
5
+ VERSION = "0.8.1"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemwarrior
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Chadwick
@@ -194,6 +194,8 @@ files:
194
194
  - lib/gemwarrior/entities/items/keystone.rb
195
195
  - lib/gemwarrior/entities/items/ladder.rb
196
196
  - lib/gemwarrior/entities/items/massive_door.rb
197
+ - lib/gemwarrior/entities/items/opalaser.rb
198
+ - lib/gemwarrior/entities/items/pond.rb
197
199
  - lib/gemwarrior/entities/items/rope.rb
198
200
  - lib/gemwarrior/entities/items/snowman.rb
199
201
  - lib/gemwarrior/entities/items/sparklything.rb