gemwarrior 0.4.0 → 0.4.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.
@@ -10,14 +10,16 @@ module Gemwarrior
10
10
  PROGRAM_NAME = 'Gem Warrior'
11
11
  QUIT_MESSAGE = 'Thanks for playing the game. Until next time...'
12
12
  RESUME_MESSAGE = 'Back to adventuring!'
13
- SEPARATOR = '================================================================'
13
+ SEPARATOR = '=========================================================================='
14
14
  CHANGE_PARAMS = 'Options: name'
15
+ LIST_PARAMS = 'Options: monsters, items, locations'
15
16
 
16
17
  ## ERRORS
17
18
  ERROR_COMMAND_INVALID = 'That\'s not something the game yet understands.'
18
19
  ERROR_LIST_PARAM_MISSING = 'You can\'t just "list". You gotta choose something to list.'
19
20
  ERROR_CHANGE_PARAM_MISSING = 'Ch-ch-changes...aren\'t happening because you didn\'t specify what to change.'
20
21
  ERROR_CHANGE_PARAM_INVALID = 'You can\'t change that...yet.'
22
+ ERROR_LIST_PARAM_INVALID = 'You can\'t list that...yet.'
21
23
  ERROR_GO_PARAM_MISSING = 'Just wander aimlessly? A direction would be nice.'
22
24
  ERROR_ATTACK_PARAM_MISSING = 'You can\'t just "attack". You gotta choose something to attack.'
23
25
  ERROR_TAKE_PARAM_MISSING = 'You can\'t just "take". You gotta choose something to take.'
@@ -25,12 +27,14 @@ module Gemwarrior
25
27
  ERROR_EQUIP_PARAM_MISSING = 'You can\'t just "equip". You gotta choose something to equip.'
26
28
  ERROR_UNEQUIP_PARAM_MISSING = 'You can\'t just "unequip". You gotta choose something to unequip.'
27
29
 
28
- attr_accessor :world, :commands, :aliases, :descriptions
30
+ attr_accessor :world, :commands, :aliases, :descriptions, :devcmds, :devaliases
29
31
 
30
32
  def initialize(world)
31
33
  self.world = world
32
- self.commands = %w(character inventory list rest look take drop equip unequip go attack change help quit exit quit! exit!)
33
- self.aliases = %w(c i ls r l t d e ue g a ch h q x qq xx)
34
+ self.devcmds = %w(allvars godmode iddqd)
35
+ self.devaliases = %w(av god)
36
+ self.commands = %w(character inventory list rest look take drop equip unequip go attack change help quit quit!)
37
+ self.aliases = %w(c i ls r l t d e ue g a ch h q qq)
34
38
  self.descriptions = [
35
39
  'Display character information',
36
40
  'Look in your inventory',
@@ -45,10 +49,8 @@ module Gemwarrior
45
49
  'Attack a monster',
46
50
  'Change something',
47
51
  'This help menu',
48
- 'Quit w/ confirmation',
49
- 'Exit w/ confirmation (very different, of course)',
50
- 'Quit w/o confirmation',
51
- 'Exit w/o confirmation (very, very different, of course)'
52
+ 'Quit w/ confirmation (also exit/x)',
53
+ 'Quit w/o confirmation (also exit!/xx)'
52
54
  ]
53
55
  end
54
56
 
@@ -67,6 +69,12 @@ module Gemwarrior
67
69
  param = tokens[1]
68
70
 
69
71
  case command
72
+ # dev commands
73
+ when 'allvars', 'av'
74
+ world.all_vars()
75
+ when 'iddqd', 'godmode', 'god'
76
+ world.player.god_mode = !world.player.god_mode
77
+ # normal commands
70
78
  when 'character', 'c'
71
79
  world.player.check_self
72
80
  when 'inventory', 'i'
@@ -77,9 +85,15 @@ module Gemwarrior
77
85
  end
78
86
  when 'list', 'ls'
79
87
  if param.nil?
80
- ERROR_LIST_PARAM_MISSING
88
+ puts ERROR_LIST_PARAM_MISSING
89
+ puts LIST_PARAMS
81
90
  else
82
- world.list(param)
91
+ case param
92
+ when 'monsters', 'items', 'locations'
93
+ world.list(param)
94
+ else
95
+ ERROR_LIST_PARAM_INVALID
96
+ end
83
97
  end
84
98
  when 'rest', 'r'
85
99
  world.player.rest
@@ -166,7 +180,7 @@ module Gemwarrior
166
180
  i = 0
167
181
  print_separator
168
182
  commands.each do |cmd|
169
- puts " #{cmd}, #{aliases[i]}\n -- #{descriptions[i]}"
183
+ puts " #{cmd.ljust(9)}, #{aliases[i].ljust(2)} -- #{descriptions[i]}"
170
184
  i = i + 1
171
185
  end
172
186
  print_separator
@@ -174,7 +188,7 @@ module Gemwarrior
174
188
 
175
189
  def input_valid?(input)
176
190
  tokens = input.split
177
- commands_and_aliases = commands | aliases
191
+ commands_and_aliases = commands | aliases | devcmds | devaliases
178
192
  if commands_and_aliases.include?(tokens.first.downcase)
179
193
  if tokens.size.between?(1,2)
180
194
  return true
@@ -1,11 +1,10 @@
1
1
  # lib/gemwarrior/game.rb
2
2
  # Main launching point for Gem Warrior
3
3
 
4
+ require_relative 'entities/player'
4
5
  require_relative 'world'
5
- require_relative 'player'
6
-
7
- require_relative 'repl'
8
6
  require_relative 'evaluator'
7
+ require_relative 'repl'
9
8
 
10
9
  module Gemwarrior
11
10
  class Game
@@ -13,8 +12,8 @@ module Gemwarrior
13
12
  ## PLAYER DEFAULTS
14
13
  PLYR_LEVEL_DEFAULT = 1
15
14
  PLYR_XP_DEFAULT = 0
16
- PLYR_HP_CUR_DEFAULT = 10
17
- PLYR_HP_MAX_DEFAULT = 10
15
+ PLYR_HP_CUR_DEFAULT = 30
16
+ PLYR_HP_MAX_DEFAULT = 30
18
17
  PLYR_STAM_CUR_DEFAULT = 20
19
18
  PLYR_STAM_MAX_DEFAULT = 20
20
19
  PLYR_ATK_LO_DEFAULT = 1
@@ -30,21 +29,21 @@ module Gemwarrior
30
29
  def initialize
31
30
  # create new world and player
32
31
  self.world = World.new
33
- world.player = Player.new(
34
- PLYR_LEVEL_DEFAULT,
35
- PLYR_XP_DEFAULT,
36
- PLYR_HP_CUR_DEFAULT,
37
- PLYR_HP_MAX_DEFAULT,
38
- PLYR_STAM_CUR_DEFAULT,
39
- PLYR_STAM_MAX_DEFAULT,
40
- PLYR_ATK_LO_DEFAULT,
41
- PLYR_ATK_HI_DEFAULT,
42
- PLYR_DEFENSE_DEFAULT,
43
- PLYR_DEXTERITY_DEFAULT,
44
- PLYR_INVENTORY_DEFAULT,
45
- PLYR_ROX_DEFAULT,
46
- world.loc_by_id(PLYR_CUR_LOC_ID_DEFAULT)
47
- )
32
+ world.player = Player.new({
33
+ :level => PLYR_LEVEL_DEFAULT,
34
+ :xp => PLYR_XP_DEFAULT,
35
+ :hp_cur => PLYR_HP_CUR_DEFAULT,
36
+ :hp_max => PLYR_HP_MAX_DEFAULT,
37
+ :stam_cur => PLYR_STAM_CUR_DEFAULT,
38
+ :stam_max => PLYR_STAM_MAX_DEFAULT,
39
+ :atk_lo => PLYR_ATK_LO_DEFAULT,
40
+ :atk_hi => PLYR_ATK_HI_DEFAULT,
41
+ :defense => PLYR_DEFENSE_DEFAULT,
42
+ :dexterity => PLYR_DEXTERITY_DEFAULT,
43
+ :inventory => PLYR_INVENTORY_DEFAULT,
44
+ :rox => PLYR_ROX_DEFAULT,
45
+ :cur_loc => world.loc_by_id(PLYR_CUR_LOC_ID_DEFAULT)
46
+ })
48
47
 
49
48
  # create the console
50
49
  self.eval = Evaluator.new(world)
@@ -0,0 +1,6 @@
1
+ # lib/gemwarrior/misc/player_levels.rb
2
+ # Stats table for each level the player can reach
3
+
4
+ module Gemwarrior
5
+ #todo
6
+ end
@@ -1,6 +1,6 @@
1
- # lib/gemwarrior/version.rb
2
- # Version of Gem Warrior
3
-
4
- module Gemwarrior
5
- VERSION = "0.4.0"
6
- end
1
+ # lib/gemwarrior/version.rb
2
+ # Version of Gem Warrior
3
+
4
+ module Gemwarrior
5
+ VERSION = "0.4.1"
6
+ end
File without changes
@@ -4,9 +4,9 @@
4
4
  require 'readline'
5
5
  require 'os'
6
6
 
7
- require_relative 'version'
7
+ require_relative 'misc/version'
8
+ require_relative 'misc/wordlist'
8
9
  require_relative 'evaluator'
9
- require_relative 'wordlist'
10
10
 
11
11
  module Gemwarrior
12
12
  class Repl
@@ -1,10 +1,10 @@
1
1
  # lib/gemwarrior/world.rb
2
2
  # World where the locations, monsters, items, etc. exist
3
3
 
4
+ require_relative 'entities/monster'
5
+ require_relative 'entities/item'
6
+ require_relative 'entities/location'
4
7
  require_relative 'defaults'
5
- require_relative 'monster'
6
- require_relative 'item'
7
- require_relative 'location'
8
8
 
9
9
  module Gemwarrior
10
10
  class World
@@ -26,14 +26,42 @@ module Gemwarrior
26
26
  self.player = nil
27
27
  end
28
28
 
29
- def list(param)
29
+ def all_vars
30
+ puts "======================\n"
31
+ puts "All Variables in World\n"
32
+ puts "======================\n"
33
+ puts "#{list("players", true)}\n"
34
+ puts "#{list("monsters", true)}\n\n"
35
+ puts "#{list("items", true)}\n\n"
36
+ puts "#{list("locations", true)}\n"
37
+ end
38
+
39
+ def list(param, details = false)
30
40
  case param
31
- when "monsters"
32
- return "The world's monsters consist of #{@monsters.map(&:name).join(', ')}"
33
- when "items"
34
- return "The world's items consist of #{@items.map(&:name).join(', ')}"
35
- when "locations"
36
- return "The world consists of #{@locations.map(&:name).join(', ')}"
41
+ when 'players'
42
+ puts '[PLAYERS]'
43
+ player.check_self(false)
44
+ when 'monsters'
45
+ puts '[MONSTERS]'
46
+ if details
47
+ return monsters.map { |m| print m.describe }
48
+ else
49
+ ">> #{monsters.map(&:name).join(', ')}"
50
+ end
51
+ when 'items'
52
+ puts '[ITEMS]'
53
+ if details
54
+ items.map { |i| print i.status }
55
+ else
56
+ ">> #{items.map(&:name).join(', ')}"
57
+ end
58
+ when 'locations'
59
+ puts '[LOCATIONS]'
60
+ if details
61
+ locations.map { |l| print l.status }
62
+ else
63
+ ">> #{locations.map(&:name).join(', ')}"
64
+ end
37
65
  else
38
66
  ERROR_LIST_PARAM_INVALID
39
67
  end
@@ -70,303 +98,303 @@ module Gemwarrior
70
98
 
71
99
  def init_monsters
72
100
  monsters = []
73
- monsters.push(Monster.new(
74
- MOB_ID_ALEXANDRAT,
75
- MOB_NAME_ALEXANDRAT,
76
- MOB_DESC_ALEXANDRAT,
77
- 'ugly',
78
- 'gnarled',
79
- 'unsurprisingly unchipper',
80
- MOB_LEVEL_ALEXANDRAT,
81
- MOB_LEVEL_ALEXANDRAT * 5,
82
- MOB_LEVEL_ALEXANDRAT * 5,
83
- MOB_LEVEL_ALEXANDRAT * 2,
84
- MOB_LEVEL_ALEXANDRAT * 2,
85
- MOB_DEXTERITY_ALEXANDRAT,
86
- Inventory.new,
87
- rand(0..10),
88
- MOB_LEVEL_ALEXANDRAT * rand(1..2),
89
- MOB_BATTLECRY_ALEXANDRAT
90
- )
101
+ monsters.push(Monster.new({
102
+ :id => MOB_ID_ALEXANDRAT,
103
+ :name => MOB_NAME_ALEXANDRAT,
104
+ :description => MOB_DESC_ALEXANDRAT,
105
+ :face => 'ugly',
106
+ :hands => 'gnarled',
107
+ :mood => 'unsurprisingly unchipper',
108
+ :level => (MOB_LEVEL_ALEXANDRAT * 1.5).floor,
109
+ :hp_cur => (MOB_LEVEL_ALEXANDRAT * 4.25).floor,
110
+ :hp_max => (MOB_LEVEL_ALEXANDRAT * 4.25).floor,
111
+ :atk_lo => (MOB_LEVEL_ALEXANDRAT * 1.25).floor,
112
+ :atk_hi => MOB_LEVEL_ALEXANDRAT * 2,
113
+ :dexterity => MOB_DEXTERITY_ALEXANDRAT,
114
+ :inventory => Inventory.new,
115
+ :rox_to_give => rand(0..10),
116
+ :xp_to_give => MOB_LEVEL_ALEXANDRAT * rand(1..2),
117
+ :battlecry => MOB_BATTLECRY_ALEXANDRAT
118
+ })
91
119
  )
92
- monsters.push(Monster.new(
93
- MOB_ID_AMBEROO,
94
- MOB_NAME_AMBEROO,
95
- MOB_DESC_AMBEROO,
96
- 'punchy',
97
- 'balled',
98
- 'jumpy',
99
- MOB_LEVEL_AMBEROO,
100
- MOB_LEVEL_AMBEROO * 5,
101
- MOB_LEVEL_AMBEROO * 5,
102
- MOB_LEVEL_AMBEROO * 2,
103
- MOB_LEVEL_AMBEROO * 2,
104
- MOB_DEXTERITY_AMBEROO,
105
- Inventory.new,
106
- rand(0..10),
107
- MOB_LEVEL_AMBEROO * rand(1..2),
108
- MOB_BATTLECRY_AMBEROO
109
- )
120
+ monsters.push(Monster.new({
121
+ :id => MOB_ID_AMBEROO,
122
+ :name => MOB_NAME_AMBEROO,
123
+ :description => MOB_DESC_AMBEROO,
124
+ :face => 'punchy',
125
+ :hands => 'balled',
126
+ :mood => 'jumpy',
127
+ :level => (MOB_LEVEL_AMBEROO * 1.5).floor,
128
+ :hp_cur => (MOB_LEVEL_AMBEROO * 4.5).floor,
129
+ :hp_max => (MOB_LEVEL_AMBEROO * 4.5).floor,
130
+ :atk_lo => (MOB_LEVEL_AMBEROO * 1.25).floor,
131
+ :atk_hi => MOB_LEVEL_AMBEROO * 2,
132
+ :dexterity => MOB_DEXTERITY_AMBEROO,
133
+ :inventory => Inventory.new,
134
+ :rox_to_give => rand(0..10),
135
+ :xp_to_give => MOB_LEVEL_AMBEROO * rand(1..2),
136
+ :battlecry => MOB_BATTLECRY_AMBEROO
137
+ })
110
138
  )
111
- monsters.push(Monster.new(
112
- MOB_ID_AMETHYSTLE,
113
- MOB_NAME_AMETHYSTLE,
114
- MOB_DESC_AMETHYSTLE,
115
- 'sharp',
116
- 'loose',
117
- 'mesmerizing',
118
- MOB_LEVEL_AMETHYSTLE,
119
- MOB_LEVEL_AMETHYSTLE * 5,
120
- MOB_LEVEL_AMETHYSTLE * 5,
121
- MOB_LEVEL_AMETHYSTLE * 2,
122
- MOB_LEVEL_AMETHYSTLE * 2,
123
- MOB_DEXTERITY_AMETHYSTLE,
124
- Inventory.new,
125
- rand(0..10),
126
- MOB_LEVEL_AMETHYSTLE * rand(1..2),
127
- MOB_BATTLECRY_AMETHYSTLE
128
- )
139
+ monsters.push(Monster.new({
140
+ :id => MOB_ID_AMETHYSTLE,
141
+ :name => MOB_NAME_AMETHYSTLE,
142
+ :description => MOB_DESC_AMETHYSTLE,
143
+ :face => 'sharp',
144
+ :hands => 'loose',
145
+ :mood => 'mesmerizing',
146
+ :level => MOB_LEVEL_AMETHYSTLE,
147
+ :hp_cur => MOB_LEVEL_AMETHYSTLE * 5,
148
+ :hp_max => MOB_LEVEL_AMETHYSTLE * 5,
149
+ :atk_lo => (MOB_LEVEL_AMETHYSTLE * 1.25).floor,
150
+ :atk_hi => MOB_LEVEL_AMETHYSTLE * 2,
151
+ :dexterity => MOB_DEXTERITY_AMETHYSTLE,
152
+ :inventory => Inventory.new,
153
+ :rox_to_give => rand(0..10),
154
+ :xp_to_give => MOB_LEVEL_AMETHYSTLE * rand(1..2),
155
+ :battlecry => MOB_BATTLECRY_AMETHYSTLE
156
+ })
129
157
  )
130
- monsters.push(Monster.new(
131
- MOB_ID_APATIGER,
132
- MOB_NAME_APATIGER,
133
- MOB_DESC_APATIGER,
134
- 'calloused',
135
- 'soft',
136
- 'apathetic',
137
- MOB_LEVEL_APATIGER,
138
- MOB_LEVEL_APATIGER * 5,
139
- MOB_LEVEL_APATIGER * 5,
140
- MOB_LEVEL_APATIGER * 2,
141
- MOB_LEVEL_APATIGER * 2,
142
- MOB_DEXTERITY_APATIGER,
143
- Inventory.new,
144
- rand(0..10),
145
- MOB_LEVEL_APATIGER * rand(1..2),
146
- MOB_BATTLECRY_APATIGER
147
- )
158
+ monsters.push(Monster.new({
159
+ :id => MOB_ID_APATIGER,
160
+ :name => MOB_NAME_APATIGER,
161
+ :description => MOB_DESC_APATIGER,
162
+ :face => 'calloused',
163
+ :hands => 'soft',
164
+ :mood => 'apathetic',
165
+ :level => MOB_LEVEL_APATIGER,
166
+ :hp_cur => MOB_LEVEL_APATIGER * 5,
167
+ :hp_max => MOB_LEVEL_APATIGER * 5,
168
+ :atk_lo => (MOB_LEVEL_APATIGER * 1.25).floor,
169
+ :atk_hi => MOB_LEVEL_APATIGER * 2,
170
+ :dexterity => MOB_DEXTERITY_APATIGER,
171
+ :inventory => Inventory.new,
172
+ :rox_to_give => rand(0..10),
173
+ :xp_to_give => MOB_LEVEL_APATIGER * rand(1..2),
174
+ :battlecry => MOB_BATTLECRY_APATIGER
175
+ })
148
176
  )
149
- monsters.push(Monster.new(
150
- MOB_ID_AQUAMARINE,
151
- MOB_NAME_AQUAMARINE,
152
- MOB_DESC_AQUAMARINE,
153
- 'strained',
154
- 'hairy',
155
- 'tempered',
156
- MOB_LEVEL_AQUAMARINE,
157
- MOB_LEVEL_AQUAMARINE * 5,
158
- MOB_LEVEL_AQUAMARINE * 5,
159
- MOB_LEVEL_AQUAMARINE * 2,
160
- MOB_LEVEL_AQUAMARINE * 2,
161
- MOB_DEXTERITY_AQUAMARINE,
162
- Inventory.new,
163
- rand(0..10),
164
- MOB_LEVEL_AQUAMARINE * rand(1..2),
165
- MOB_BATTLECRY_AQUAMARINE
166
- )
177
+ monsters.push(Monster.new({
178
+ :id => MOB_ID_AQUAMARINE,
179
+ :name => MOB_NAME_AQUAMARINE,
180
+ :description => MOB_DESC_AQUAMARINE,
181
+ :face => 'strained',
182
+ :hands => 'hairy',
183
+ :mood => 'tempered',
184
+ :level => MOB_LEVEL_AQUAMARINE,
185
+ :hp_cur => MOB_LEVEL_AQUAMARINE * 5,
186
+ :hp_max => MOB_LEVEL_AQUAMARINE * 5,
187
+ :atk_lo => (MOB_LEVEL_AQUAMARINE * 1.5).floor,
188
+ :atk_hi => MOB_LEVEL_AQUAMARINE * 2,
189
+ :dexterity => MOB_DEXTERITY_AQUAMARINE,
190
+ :inventory => Inventory.new,
191
+ :rox_to_give => rand(0..10),
192
+ :xp_to_give => MOB_LEVEL_AQUAMARINE * rand(1..2),
193
+ :battlecry => MOB_BATTLECRY_AQUAMARINE
194
+ })
167
195
  )
168
- monsters.push(Monster.new(
169
- MOB_ID_BLOODSTORM,
170
- MOB_NAME_BLOODSTORM,
171
- MOB_DESC_BLOODSTORM,
172
- 'bloody',
173
- 'bloody',
174
- 'boiling',
175
- MOB_LEVEL_BLOODSTORM,
176
- MOB_LEVEL_BLOODSTORM * 5,
177
- MOB_LEVEL_BLOODSTORM * 5,
178
- MOB_LEVEL_BLOODSTORM * 2,
179
- MOB_LEVEL_BLOODSTORM * 2,
180
- MOB_DEXTERITY_BLOODSTORM,
181
- Inventory.new,
182
- rand(0..10),
183
- MOB_LEVEL_BLOODSTORM * rand(2..3),
184
- MOB_BATTLECRY_BLOODSTORM
185
- )
196
+ monsters.push(Monster.new({
197
+ :id => MOB_ID_BLOODSTORM,
198
+ :name => MOB_NAME_BLOODSTORM,
199
+ :description => MOB_DESC_BLOODSTORM,
200
+ :face => 'bloody',
201
+ :hands => 'bloody',
202
+ :mood => 'boiling',
203
+ :level => MOB_LEVEL_BLOODSTORM,
204
+ :hp_cur => MOB_LEVEL_BLOODSTORM * 5,
205
+ :hp_max => MOB_LEVEL_BLOODSTORM * 5,
206
+ :atk_lo => (MOB_LEVEL_BLOODSTORM * 1.5).floor,
207
+ :atk_hi => MOB_LEVEL_BLOODSTORM * 2,
208
+ :dexterity => MOB_DEXTERITY_BLOODSTORM,
209
+ :inventory => Inventory.new,
210
+ :rox_to_give => rand(0..10),
211
+ :xp_to_give => MOB_LEVEL_BLOODSTORM * rand(2..3),
212
+ :battlecry => MOB_BATTLECRY_BLOODSTORM
213
+ })
186
214
  )
187
- monsters.push(Monster.new(
188
- MOB_ID_CITRINAGA,
189
- MOB_NAME_CITRINAGA,
190
- MOB_DESC_CITRINAGA,
191
- 'shiny',
192
- 'glistening',
193
- 'staid',
194
- MOB_LEVEL_CITRINAGA,
195
- MOB_LEVEL_CITRINAGA * 5,
196
- MOB_LEVEL_CITRINAGA * 5,
197
- MOB_LEVEL_CITRINAGA * 2,
198
- MOB_LEVEL_CITRINAGA * 2,
199
- MOB_DEXTERITY_CITRINAGA,
200
- Inventory.new,
201
- rand(0..10),
202
- MOB_LEVEL_CITRINAGA * rand(2..3),
203
- MOB_BATTLECRY_CITRINAGA
204
- )
215
+ monsters.push(Monster.new({
216
+ :id => MOB_ID_CITRINAGA,
217
+ :name => MOB_NAME_CITRINAGA,
218
+ :description => MOB_DESC_CITRINAGA,
219
+ :face => 'shiny',
220
+ :hands => 'glistening',
221
+ :mood => 'staid',
222
+ :level => MOB_LEVEL_CITRINAGA,
223
+ :hp_cur => MOB_LEVEL_CITRINAGA * 5,
224
+ :hp_max => MOB_LEVEL_CITRINAGA * 5,
225
+ :atk_lo => (MOB_LEVEL_CITRINAGA * 1.3).floor,
226
+ :atk_hi => MOB_LEVEL_CITRINAGA * 2,
227
+ :dexterity => MOB_DEXTERITY_CITRINAGA,
228
+ :inventory => Inventory.new,
229
+ :rox_to_give => rand(0..10),
230
+ :xp_to_give => MOB_LEVEL_CITRINAGA * rand(2..3),
231
+ :battlecry => MOB_BATTLECRY_CITRINAGA
232
+ })
205
233
  )
206
- monsters.push(Monster.new(
207
- MOB_ID_CORALIZ,
208
- MOB_NAME_CORALIZ,
209
- MOB_DESC_CORALIZ,
210
- 'spotted',
211
- 'slippery',
212
- 'emotionless',
213
- MOB_LEVEL_CORALIZ,
214
- MOB_LEVEL_CORALIZ * 5,
215
- MOB_LEVEL_CORALIZ * 5,
216
- MOB_LEVEL_CORALIZ * 2,
217
- MOB_LEVEL_CORALIZ * 2,
218
- MOB_DEXTERITY_CORALIZ,
219
- Inventory.new,
220
- rand(0..10),
221
- MOB_LEVEL_CORALIZ * rand(2..3),
222
- MOB_BATTLECRY_CORALIZ
223
- )
234
+ monsters.push(Monster.new({
235
+ :id => MOB_ID_CORALIZ,
236
+ :name => MOB_NAME_CORALIZ,
237
+ :description => MOB_DESC_CORALIZ,
238
+ :face => 'spotted',
239
+ :hands => 'slippery',
240
+ :mood => 'emotionless',
241
+ :level => MOB_LEVEL_CORALIZ,
242
+ :hp_cur => MOB_LEVEL_CORALIZ * 5,
243
+ :hp_max => MOB_LEVEL_CORALIZ * 5,
244
+ :atk_lo => (MOB_LEVEL_CORALIZ * 1.5).floor,
245
+ :atk_hi => MOB_LEVEL_CORALIZ * 2,
246
+ :dexterity => MOB_DEXTERITY_CORALIZ,
247
+ :inventory => Inventory.new,
248
+ :rox_to_give => rand(0..10),
249
+ :xp_to_give => MOB_LEVEL_CORALIZ * rand(2..3),
250
+ :battlecry => MOB_BATTLECRY_CORALIZ
251
+ })
224
252
  )
225
- monsters.push(Monster.new(
226
- MOB_ID_CUBICAT,
227
- MOB_NAME_CUBICAT,
228
- MOB_DESC_CUBICAT,
229
- 'striking',
230
- 'grippy',
231
- 'salacious',
232
- MOB_LEVEL_CUBICAT,
233
- MOB_LEVEL_CUBICAT * 5,
234
- MOB_LEVEL_CUBICAT * 5,
235
- MOB_LEVEL_CUBICAT * 2,
236
- MOB_LEVEL_CUBICAT * 2,
237
- MOB_DEXTERITY_CUBICAT,
238
- Inventory.new,
239
- rand(0..10),
240
- MOB_LEVEL_CUBICAT * rand(3..4),
241
- MOB_BATTLECRY_CUBICAT
242
- )
253
+ monsters.push(Monster.new({
254
+ :id => MOB_ID_CUBICAT,
255
+ :name => MOB_NAME_CUBICAT,
256
+ :description => MOB_DESC_CUBICAT,
257
+ :face => 'striking',
258
+ :hands => 'grippy',
259
+ :mood => 'salacious',
260
+ :level => MOB_LEVEL_CUBICAT,
261
+ :hp_cur => MOB_LEVEL_CUBICAT * 5,
262
+ :hp_max => MOB_LEVEL_CUBICAT * 5,
263
+ :atk_lo => (MOB_LEVEL_CUBICAT * 1.75).floor,
264
+ :atk_hi => MOB_LEVEL_CUBICAT * 2,
265
+ :dexterity => MOB_DEXTERITY_CUBICAT,
266
+ :inventory => Inventory.new,
267
+ :rox_to_give => rand(0..10),
268
+ :xp_to_give => MOB_LEVEL_CUBICAT * rand(3..4),
269
+ :battlecry => MOB_BATTLECRY_CUBICAT
270
+ })
243
271
  )
244
- monsters.push(Monster.new(
245
- MOB_ID_DIAMAN,
246
- MOB_NAME_DIAMAN,
247
- MOB_DESC_DIAMAN,
248
- 'bright',
249
- 'jagged',
250
- 'adamant',
251
- MOB_LEVEL_DIAMAN,
252
- MOB_LEVEL_DIAMAN * 5,
253
- MOB_LEVEL_DIAMAN * 5,
254
- MOB_LEVEL_DIAMAN * 2,
255
- MOB_LEVEL_DIAMAN * 2,
256
- MOB_DEXTERITY_DIAMAN,
257
- Inventory.new,
258
- rand(0..10),
259
- MOB_LEVEL_DIAMAN * rand(3..5),
260
- MOB_BATTLECRY_DIAMAN
261
- )
272
+ monsters.push(Monster.new({
273
+ :id => MOB_ID_DIAMAN,
274
+ :name => MOB_NAME_DIAMAN,
275
+ :description => MOB_DESC_DIAMAN,
276
+ :face => 'bright',
277
+ :hands => 'jagged',
278
+ :mood => 'adamant',
279
+ :level => MOB_LEVEL_DIAMAN,
280
+ :hp_cur => MOB_LEVEL_DIAMAN * 5,
281
+ :hp_max => MOB_LEVEL_DIAMAN * 5,
282
+ :atk_lo => (MOB_LEVEL_DIAMAN * 1.75).floor,
283
+ :atk_hi => MOB_LEVEL_DIAMAN * 2,
284
+ :dexterity => MOB_DEXTERITY_DIAMAN,
285
+ :inventory => Inventory.new,
286
+ :rox_to_give => rand(0..10),
287
+ :xp_to_give => MOB_LEVEL_DIAMAN * rand(3..5),
288
+ :battlecry => MOB_BATTLECRY_DIAMAN
289
+ })
262
290
  )
263
291
  end
264
292
 
265
293
  def init_items
266
294
  items = []
267
- items.push(Item.new(
268
- ITEM_ID_STONE,
269
- ITEM_NAME_STONE,
270
- ITEM_DESC_STONE,
271
- ITEM_ATK_LO_STONE,
272
- ITEM_ATK_HI_STONE,
273
- true,
274
- true
275
- )
295
+ items.push(Item.new({
296
+ :id => ITEM_ID_STONE,
297
+ :name => ITEM_NAME_STONE,
298
+ :description => ITEM_DESC_STONE,
299
+ :atk_lo => ITEM_ATK_LO_STONE,
300
+ :atk_hi => ITEM_ATK_HI_STONE,
301
+ :takeable => true,
302
+ :equippable => true
303
+ })
276
304
  )
277
- items.push(Item.new(
278
- ITEM_ID_BED,
279
- ITEM_NAME_BED,
280
- ITEM_DESC_BED,
281
- ITEM_ATK_LO_BED,
282
- ITEM_ATK_HI_BED,
283
- false,
284
- false
285
- )
305
+ items.push(Item.new({
306
+ :id => ITEM_ID_BED,
307
+ :name => ITEM_NAME_BED,
308
+ :description => ITEM_DESC_BED,
309
+ :atk_lo => ITEM_ATK_LO_BED,
310
+ :atk_hi => ITEM_ATK_HI_BED,
311
+ :takeable => false,
312
+ :equippable => false
313
+ })
286
314
  )
287
- items.push(Item.new(
288
- ITEM_ID_STALACTITE,
289
- ITEM_NAME_STALACTITE,
290
- ITEM_DESC_STALACTITE,
291
- ITEM_ATK_LO_STALACTITE,
292
- ITEM_ATK_HI_STALACTITE,
293
- true,
294
- true
295
- )
315
+ items.push(Item.new({
316
+ :id => ITEM_ID_STALACTITE,
317
+ :name => ITEM_NAME_STALACTITE,
318
+ :description => ITEM_DESC_STALACTITE,
319
+ :atk_lo => ITEM_ATK_LO_STALACTITE,
320
+ :atk_hi => ITEM_ATK_HI_STALACTITE,
321
+ :takeable => true,
322
+ :equippable => true
323
+ })
296
324
  )
297
- items.push(Item.new(
298
- ITEM_ID_FEATHER,
299
- ITEM_NAME_FEATHER,
300
- ITEM_DESC_FEATHER,
301
- ITEM_ATK_LO_FEATHER,
302
- ITEM_ATK_HI_FEATHER,
303
- true,
304
- false
305
- )
325
+ items.push(Item.new({
326
+ :id => ITEM_ID_FEATHER,
327
+ :name => ITEM_NAME_FEATHER,
328
+ :description => ITEM_DESC_FEATHER,
329
+ :atk_lo => ITEM_ATK_LO_FEATHER,
330
+ :atk_hi => ITEM_ATK_HI_FEATHER,
331
+ :takeable => true,
332
+ :equippable => false
333
+ })
306
334
  )
307
- items.push(Item.new(
308
- ITEM_ID_GUN,
309
- ITEM_NAME_GUN,
310
- ITEM_DESC_GUN,
311
- ITEM_ATK_LO_GUN,
312
- ITEM_ATK_HI_GUN,
313
- true,
314
- true
315
- )
335
+ items.push(Item.new({
336
+ :id => ITEM_ID_GUN,
337
+ :name => ITEM_NAME_GUN,
338
+ :description => ITEM_DESC_GUN,
339
+ :atk_lo => ITEM_ATK_LO_GUN,
340
+ :atk_hi => ITEM_ATK_HI_GUN,
341
+ :takeable => true,
342
+ :equippable => true
343
+ })
316
344
  )
317
345
  end
318
346
 
319
347
  def init_locations
320
348
  locations = []
321
- locations.push(Location.new(
322
- LOC_ID_HOME,
323
- LOC_NAME_HOME,
324
- LOC_DESC_HOME,
325
- LOC_CONNECTIONS_HOME,
326
- :none,
327
- [item_by_id(0), item_by_id(1)],
328
- monsters
329
- )
349
+ locations.push(Location.new({
350
+ :id => LOC_ID_HOME,
351
+ :name => LOC_NAME_HOME,
352
+ :description => LOC_DESC_HOME,
353
+ :locs_connected => LOC_CONNECTIONS_HOME,
354
+ :danger_level => :none,
355
+ :items => [item_by_id(0), item_by_id(1)],
356
+ :monsters_available => monsters
357
+ })
330
358
  )
331
- locations.push(Location.new(
332
- LOC_ID_CAVE_ENTRANCE,
333
- LOC_NAME_CAVE_ENTRANCE,
334
- LOC_DESC_CAVE_ENTRANCE,
335
- LOC_CONNECTIONS_CAVE_ENTRANCE,
336
- :low,
337
- [],
338
- monsters
339
- )
359
+ locations.push(Location.new({
360
+ :id => LOC_ID_CAVE_ENTRANCE,
361
+ :name => LOC_NAME_CAVE_ENTRANCE,
362
+ :description => LOC_DESC_CAVE_ENTRANCE,
363
+ :locs_connected => LOC_CONNECTIONS_CAVE_ENTRANCE,
364
+ :danger_level => :low,
365
+ :items => [],
366
+ :monsters_available => monsters
367
+ })
340
368
  )
341
- locations.push(Location.new(
342
- LOC_ID_CAVE_ROOM1,
343
- LOC_NAME_CAVE_ROOM1,
344
- LOC_DESC_CAVE_ROOM1,
345
- LOC_CONNECTIONS_CAVE_ROOM1,
346
- :moderate,
347
- [item_by_id(2)],
348
- monsters
349
- )
369
+ locations.push(Location.new({
370
+ :id => LOC_ID_CAVE_ROOM1,
371
+ :name => LOC_NAME_CAVE_ROOM1,
372
+ :description => LOC_DESC_CAVE_ROOM1,
373
+ :locs_connected => LOC_CONNECTIONS_CAVE_ROOM1,
374
+ :danger_level => :moderate,
375
+ :items => [item_by_id(2)],
376
+ :monsters_available => monsters
377
+ })
350
378
  )
351
- locations.push(Location.new(
352
- LOC_ID_FOREST,
353
- LOC_NAME_FOREST,
354
- LOC_DESC_FOREST,
355
- LOC_CONNECTIONS_FOREST,
356
- :low,
357
- [item_by_id(3)],
358
- monsters
359
- )
379
+ locations.push(Location.new({
380
+ :id => LOC_ID_FOREST,
381
+ :name => LOC_NAME_FOREST,
382
+ :description => LOC_DESC_FOREST,
383
+ :locs_connected => LOC_CONNECTIONS_FOREST,
384
+ :danger_level => :low,
385
+ :items => [item_by_id(3)],
386
+ :monsters_available => monsters
387
+ })
360
388
  )
361
- locations.push(Location.new(
362
- LOC_ID_SKYTOWER,
363
- LOC_NAME_SKYTOWER,
364
- LOC_DESC_SKYTOWER,
365
- LOC_CONNECTIONS_SKYTOWER,
366
- :assured,
367
- [item_by_id(4)],
368
- monsters
369
- )
389
+ locations.push(Location.new({
390
+ :id => LOC_ID_SKYTOWER,
391
+ :name => LOC_NAME_SKYTOWER,
392
+ :description => LOC_DESC_SKYTOWER,
393
+ :locs_connected => LOC_CONNECTIONS_SKYTOWER,
394
+ :danger_level => :assured,
395
+ :items => [item_by_id(4)],
396
+ :monsters_available => monsters
397
+ })
370
398
  )
371
399
  end
372
400
  end