gemwarrior 0.8.0 → 0.8.1

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