gemwarrior 0.4.0 → 0.4.1

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