gemwarrior 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/gemwarrior +5 -1
- data/lib/gemwarrior/entities/monster.rb +4 -4
- data/lib/gemwarrior/entities/monsters/alexandrat.rb +1 -1
- data/lib/gemwarrior/entities/player.rb +6 -4
- data/lib/gemwarrior/evaluator.rb +92 -76
- data/lib/gemwarrior/game.rb +4 -2
- data/lib/gemwarrior/misc/version.rb +1 -1
- data/lib/gemwarrior/world.rb +4 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8cd1829a08b6e83220b459bbf729652871e0e81d
|
4
|
+
data.tar.gz: 43625f3347022e2f25edafa561de8adc0201eaa2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cafe13f7ec0d4d08e50859ba1a2774afa6b715fb264745957d11ff14f2c97f853ab6c872d64d712acb3756aa6aa2c48324c43ddc426ff1a331efdc53ddefd8a
|
7
|
+
data.tar.gz: 61332501f1680a1289723a2c7379d84ced6eb8195723640b41de1be6fdefa95c7469b0541da12cc311b0bbd30c62212e28724831feb44c4bda63c0a73838bb7d
|
data/bin/gemwarrior
CHANGED
@@ -8,13 +8,17 @@ require_relative '../lib/gemwarrior/game'
|
|
8
8
|
GAME_NAME = "Gem Warrior"
|
9
9
|
|
10
10
|
def parse_options
|
11
|
-
options = {:god_mode => false, :beast_mode => false}
|
11
|
+
options = {:debug_mode => false, :god_mode => false, :beast_mode => false}
|
12
12
|
|
13
13
|
optparse = OptionParser.new do |opts|
|
14
14
|
opts.on('-v', '--version', 'Display version number and exit') do
|
15
15
|
puts "#{GAME_NAME} v#{Gemwarrior::VERSION}"
|
16
16
|
exit
|
17
17
|
end
|
18
|
+
|
19
|
+
opts.on('-d', '--debug', 'Turn debug on') do
|
20
|
+
options[:debug_mode] = true
|
21
|
+
end
|
18
22
|
|
19
23
|
opts.on('-g', '--god', 'Set godmode to true on load') do
|
20
24
|
options[:god_mode] = true
|
@@ -14,12 +14,12 @@ module Gemwarrior
|
|
14
14
|
status_text << "ATK: #{atk_lo.to_s.rjust(2)}-#{atk_hi.to_s.rjust(2)} "
|
15
15
|
status_text << "DEF: #{defense.to_s.rjust(2)} "
|
16
16
|
status_text << "DEX: #{dexterity.to_s.rjust(2)} "
|
17
|
-
status_text << "INV: #{inventory.list_contents} "
|
18
17
|
status_text << "ROX: #{rox.to_s.rjust(3)} "
|
19
18
|
status_text << "XP: #{xp.to_s.rjust(3)} "
|
20
|
-
status_text << "FACE: #{face.ljust(
|
21
|
-
status_text << "HANDS: #{hands.ljust(
|
22
|
-
status_text << "MOOD: #{mood.ljust(
|
19
|
+
status_text << "FACE: #{face.ljust(12)} "
|
20
|
+
status_text << "HANDS: #{hands.ljust(12)} "
|
21
|
+
status_text << "MOOD: #{mood.ljust(12)}"
|
22
|
+
status_text << "INV: #{inventory.list_contents}\n"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -10,7 +10,7 @@ module Gemwarrior
|
|
10
10
|
self.description = 'Tiny, but fierce, color-changing rodent.'
|
11
11
|
self.face = 'ugly'
|
12
12
|
self.hands = 'gnarled'
|
13
|
-
self.mood = '
|
13
|
+
self.mood = 'unchipper'
|
14
14
|
|
15
15
|
self.level = rand(1..2)
|
16
16
|
self.hp_cur = rand((level * 2)..(level * 3))
|
@@ -51,7 +51,7 @@ module Gemwarrior
|
|
51
51
|
self.beast_mode = options.fetch(:beast_mode)
|
52
52
|
end
|
53
53
|
|
54
|
-
def check_self(show_pic = true)
|
54
|
+
def check_self(debug_mode = false, show_pic = true)
|
55
55
|
unless show_pic == false
|
56
56
|
print_char_pic
|
57
57
|
end
|
@@ -74,10 +74,12 @@ module Gemwarrior
|
|
74
74
|
self_text << "ATTACK : #{self.atk_lo}-#{self.atk_hi}\n"
|
75
75
|
self_text << "DEXTERITY : #{self.dexterity}\n"
|
76
76
|
self_text << "DEFENSE : #{self.defense}\n"
|
77
|
-
|
78
|
-
|
77
|
+
if debug_mode
|
78
|
+
self_text << "GOD_MODE : #{self.god_mode}\n"
|
79
|
+
self_text << "BEAST_MODE: #{self.beast_mode}\n"
|
80
|
+
end
|
79
81
|
|
80
|
-
self_text << "#{self.description}\n\n"
|
82
|
+
self_text << "\n#{self.description}\n\n"
|
81
83
|
|
82
84
|
self_text << "Current status - breathing, wearing clothing, and with a few other specific characteristics: face is #{self.face}, hands are #{self.hands}, and general mood is #{self.mood}.\n"
|
83
85
|
end
|
data/lib/gemwarrior/evaluator.rb
CHANGED
@@ -14,8 +14,7 @@ module Gemwarrior
|
|
14
14
|
|
15
15
|
GO_PARAMS = 'Options: north, east, south, west'
|
16
16
|
CHANGE_PARAMS = 'Options: name'
|
17
|
-
|
18
|
-
DEBUG_PARAMS = 'Options: vars, map, stat'
|
17
|
+
DEBUG_LIST_PARAMS = 'Options: monsters, items, locations'
|
19
18
|
DEBUG_STAT_PARAMS = 'Options: atk_lo, atk_hi, strength, dexterity'
|
20
19
|
|
21
20
|
## ERRORS
|
@@ -33,24 +32,33 @@ module Gemwarrior
|
|
33
32
|
ERROR_CHANGE_PARAM_INVALID = 'You cannot change that...yet.'
|
34
33
|
ERROR_LIST_PARAM_MISSING = 'You cannot just "list". You gotta choose something to list.'
|
35
34
|
ERROR_LIST_PARAM_INVALID = 'You cannot list that...yet.'
|
36
|
-
ERROR_DEBUG_PARAM_MISSING = 'You cannot just "debug". You gotta choose a debug command.'
|
37
|
-
ERROR_DEBUG_PARAM_INVALID = 'You cannot debug that...yet.'
|
38
35
|
ERROR_DEBUG_STAT_PARAM_MISSING = 'You cannot just "change stats". You gotta choose a stat to change.'
|
39
36
|
ERROR_DEBUG_STAT_PARAM_INVALID = 'You cannot change that stat...yet.'
|
40
37
|
|
41
|
-
attr_accessor :world,
|
38
|
+
attr_accessor :world,
|
39
|
+
:commands, :aliases, :extras, :cmd_descriptions,
|
40
|
+
:devcommands, :devaliases, :devcmd_descriptions
|
42
41
|
|
43
42
|
def initialize(world)
|
44
43
|
self.world = world
|
45
|
-
|
46
|
-
self.
|
47
|
-
self.
|
48
|
-
self.
|
44
|
+
|
45
|
+
self.devcommands = %w(god beast list vars map stat)
|
46
|
+
self.devaliases = %w(gd bs ls v m s)
|
47
|
+
self.devcmd_descriptions = [
|
48
|
+
'Toggle god mode (i.e. invincible)',
|
49
|
+
'Toggle beast mode (i.e. super strength)',
|
50
|
+
'List all instances of a specific entity type',
|
51
|
+
'List all the variables in the world',
|
52
|
+
'Show a map of the world',
|
53
|
+
'Change player stat'
|
54
|
+
]
|
55
|
+
|
56
|
+
self.commands = %w(character inventory rest look take drop equip unequip go attack change help quit quit!)
|
57
|
+
self.aliases = %w(c i r l t d e ue g a ch h q qq)
|
49
58
|
self.extras = %w(exit exit! x x)
|
50
|
-
self.
|
59
|
+
self.cmd_descriptions = [
|
51
60
|
'Display character information',
|
52
61
|
'Look in your inventory',
|
53
|
-
'List all the objects of a type that exist in the world',
|
54
62
|
'Take a load off and regain HP',
|
55
63
|
'Look around your current location',
|
56
64
|
'Take item',
|
@@ -82,91 +90,85 @@ module Gemwarrior
|
|
82
90
|
command = tokens.first.downcase
|
83
91
|
param1 = tokens[1]
|
84
92
|
param2 = tokens[2]
|
85
|
-
param3 = tokens[3]
|
86
93
|
|
87
|
-
case command
|
88
94
|
# dev commands
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
world.
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
95
|
+
if world.debug_mode
|
96
|
+
case command
|
97
|
+
when 'god', 'gd'
|
98
|
+
return world.player.god_mode = !world.player.god_mode
|
99
|
+
when 'beast', 'bs'
|
100
|
+
return world.player.beast_mode = !world.player.beast_mode
|
101
|
+
when 'vars', 'v'
|
102
|
+
world.print_all_vars
|
103
|
+
when 'list', 'ls'
|
104
|
+
if param1.nil?
|
105
|
+
puts ERROR_LIST_PARAM_MISSING
|
106
|
+
return DEBUG_LIST_PARAMS
|
107
|
+
else
|
108
|
+
return world.list(param1)
|
109
|
+
end
|
110
|
+
when 'map', 'm'
|
111
|
+
world.print_map
|
112
|
+
when 'stat', 'st'
|
113
|
+
if param1.nil?
|
114
|
+
puts ERROR_DEBUG_STAT_PARAM_MISSING
|
115
|
+
return DEBUG_STAT_PARAMS
|
116
|
+
else
|
117
|
+
case param1
|
118
|
+
when 'atk_lo'
|
119
|
+
unless param2.nil?
|
120
|
+
param2.to_i!
|
121
|
+
if param2.is_a? Numeric
|
122
|
+
if param2 >= 0
|
123
|
+
world.player.atk_lo = param2
|
116
124
|
end
|
117
125
|
end
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
126
|
+
end
|
127
|
+
when 'atk_hi'
|
128
|
+
unless param2.nil?
|
129
|
+
param2.to_i!
|
130
|
+
if param2.is_a? Numeric
|
131
|
+
if param2 >= 0
|
132
|
+
world.player.atk_hi = param2
|
125
133
|
end
|
126
134
|
end
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
+
end
|
136
|
+
when 'strength', 'str', 'st'
|
137
|
+
unless param2.nil?
|
138
|
+
param2.to_i!
|
139
|
+
if param2.is_a? Numeric
|
140
|
+
if param2 >= 0
|
141
|
+
world.player.atk_lo = param2
|
142
|
+
world.player.atk_hi = param2
|
135
143
|
end
|
136
144
|
end
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
145
|
+
end
|
146
|
+
when 'dexterity', 'dex', 'd'
|
147
|
+
unless param2.nil?
|
148
|
+
param2.to_i!
|
149
|
+
if param2.is_a? Numeric
|
150
|
+
if param2 >= 0
|
151
|
+
world.player.dexterity = param2
|
144
152
|
end
|
145
153
|
end
|
146
|
-
else
|
147
|
-
ERROR_DEBUG_STAT_PARAM_INVALID
|
148
154
|
end
|
155
|
+
else
|
156
|
+
return ERROR_DEBUG_STAT_PARAM_INVALID
|
149
157
|
end
|
150
|
-
else
|
151
|
-
ERROR_DEBUG_PARAM_INVALID
|
152
158
|
end
|
153
159
|
end
|
160
|
+
end
|
161
|
+
|
154
162
|
# normal commands
|
163
|
+
case command
|
155
164
|
when 'character', 'c'
|
156
|
-
world.player.check_self
|
165
|
+
world.player.check_self(world.debug_mode)
|
157
166
|
when 'inventory', 'i'
|
158
167
|
if param1
|
159
168
|
world.player.inventory.describe_item(param1)
|
160
169
|
else
|
161
170
|
world.player.list_inventory
|
162
171
|
end
|
163
|
-
when 'list', 'ls'
|
164
|
-
if param1.nil?
|
165
|
-
puts ERROR_LIST_PARAM_MISSING
|
166
|
-
LIST_PARAMS
|
167
|
-
else
|
168
|
-
world.list(param1)
|
169
|
-
end
|
170
172
|
when 'rest', 'r'
|
171
173
|
world.player.rest
|
172
174
|
when 'look', 'l'
|
@@ -266,16 +268,30 @@ module Gemwarrior
|
|
266
268
|
i = 0
|
267
269
|
print_separator
|
268
270
|
commands.each do |cmd|
|
269
|
-
puts " #{cmd.ljust(9)}, #{aliases[i].ljust(2)} -- #{
|
271
|
+
puts " #{cmd.ljust(9)}, #{aliases[i].ljust(2)} -- #{cmd_descriptions[i]}"
|
270
272
|
i = i + 1
|
271
273
|
end
|
272
274
|
print_separator
|
275
|
+
puts " DEBUG COMMANDS"
|
276
|
+
print_separator
|
277
|
+
if world.debug_mode
|
278
|
+
i = 0
|
279
|
+
devcommands.each do |cmd|
|
280
|
+
puts " #{cmd.ljust(9)}, #{devaliases[i].ljust(2)} -- #{devcmd_descriptions[i]}"
|
281
|
+
i = i + 1
|
282
|
+
end
|
283
|
+
print_separator
|
284
|
+
end
|
273
285
|
end
|
274
286
|
|
275
287
|
def input_valid?(input)
|
276
288
|
tokens = input.split
|
277
289
|
command = tokens[0]
|
278
|
-
commands_and_aliases = commands | aliases |
|
290
|
+
commands_and_aliases = commands | aliases | extras
|
291
|
+
|
292
|
+
if world.debug_mode
|
293
|
+
commands_and_aliases = commands_and_aliases | devcommands | devaliases
|
294
|
+
end
|
279
295
|
|
280
296
|
if commands_and_aliases.include?(command.downcase)
|
281
297
|
if tokens.size.between?(1,4)
|
data/lib/gemwarrior/game.rb
CHANGED
@@ -25,10 +25,11 @@ module Gemwarrior
|
|
25
25
|
|
26
26
|
def initialize(options)
|
27
27
|
# create new world and player
|
28
|
-
self.world
|
29
|
-
|
28
|
+
self.world = World.new
|
29
|
+
|
30
30
|
start_stats = PlayerLevels::get_level_stats(1)
|
31
31
|
|
32
|
+
world.debug_mode = options.fetch(:debug_mode)
|
32
33
|
world.player = Player.new({
|
33
34
|
:description => PLAYER_DESC_DEFAULT,
|
34
35
|
:level => start_stats[:level],
|
@@ -44,6 +45,7 @@ module Gemwarrior
|
|
44
45
|
:inventory => PLAYER_INVENTORY_DEFAULT,
|
45
46
|
:rox => PLAYER_ROX_DEFAULT,
|
46
47
|
:cur_coords => world.location_coords_by_name('Home'),
|
48
|
+
|
47
49
|
:god_mode => options.fetch(:god_mode),
|
48
50
|
:beast_mode => options.fetch(:beast_mode)
|
49
51
|
})
|
data/lib/gemwarrior/world.rb
CHANGED
@@ -15,12 +15,12 @@ module Gemwarrior
|
|
15
15
|
ERROR_LIST_PARAM_INVALID = 'That is not something that can be listed.'
|
16
16
|
ERROR_LOCATION_DESCRIBE_ENTITY_INVALID = 'You do not see that here.'
|
17
17
|
|
18
|
-
attr_accessor :monsters, :locations, :player
|
18
|
+
attr_accessor :monsters, :locations, :player, :debug_mode
|
19
19
|
|
20
20
|
def initialize
|
21
|
-
self.monsters
|
22
|
-
self.locations
|
23
|
-
self.player
|
21
|
+
self.monsters = init_monsters
|
22
|
+
self.locations = init_locations
|
23
|
+
self.player = nil
|
24
24
|
end
|
25
25
|
|
26
26
|
def print_all_vars
|