amar-rpg 2.0.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 +7 -0
- data/LICENSE +675 -0
- data/README.md +155 -0
- data/amar-tui.rb +8195 -0
- data/cli_enc_output.rb +87 -0
- data/cli_enc_output_new.rb +433 -0
- data/cli_enc_output_new_3tier.rb +198 -0
- data/cli_enc_output_new_compact.rb +238 -0
- data/cli_name_gen.rb +21 -0
- data/cli_npc_output.rb +279 -0
- data/cli_npc_output_new.rb +700 -0
- data/cli_town_output.rb +39 -0
- data/cli_weather_output.rb +36 -0
- data/includes/class_enc.rb +341 -0
- data/includes/class_enc_new.rb +512 -0
- data/includes/class_monster_new.rb +551 -0
- data/includes/class_npc.rb +1378 -0
- data/includes/class_npc_new.rb +1187 -0
- data/includes/class_npc_new.rb.backup +706 -0
- data/includes/class_npc_new_skills.rb +153 -0
- data/includes/class_town.rb +237 -0
- data/includes/d6s.rb +40 -0
- data/includes/equipment_tables.rb +120 -0
- data/includes/functions.rb +67 -0
- data/includes/includes.rb +30 -0
- data/includes/randomizer.rb +15 -0
- data/includes/spell_catalog.rb +441 -0
- data/includes/tables/armour.rb +13 -0
- data/includes/tables/chartype.rb +4412 -0
- data/includes/tables/chartype_new.rb +765 -0
- data/includes/tables/chartype_new_full.rb +2713 -0
- data/includes/tables/enc_specific.rb +168 -0
- data/includes/tables/enc_type.rb +17 -0
- data/includes/tables/encounters.rb +99 -0
- data/includes/tables/magick.rb +169 -0
- data/includes/tables/melee.rb +36 -0
- data/includes/tables/missile.rb +17 -0
- data/includes/tables/monster_stats_new.rb +264 -0
- data/includes/tables/month.rb +18 -0
- data/includes/tables/names.rb +21 -0
- data/includes/tables/personality.rb +12 -0
- data/includes/tables/race_templates.rb +318 -0
- data/includes/tables/religions.rb +266 -0
- data/includes/tables/spells_new.rb +496 -0
- data/includes/tables/tier_system.rb +104 -0
- data/includes/tables/town.rb +71 -0
- data/includes/tables/weather.rb +41 -0
- data/includes/town_relations.rb +127 -0
- data/includes/weather.rb +108 -0
- data/includes/weather2latex.rb +114 -0
- data/lib/rcurses.rb +33 -0
- metadata +157 -0
@@ -0,0 +1,1378 @@
|
|
1
|
+
# The Amar Tool class for generating random NPCs
|
2
|
+
#
|
3
|
+
# When the class is initialized, the npc is generated
|
4
|
+
# using data from the imported tables (hashes and arrays)
|
5
|
+
# The initialization can be done via "inputform.rb" or a
|
6
|
+
# web application or otherwise.
|
7
|
+
|
8
|
+
|
9
|
+
class Npc
|
10
|
+
|
11
|
+
attr_reader :type, :level, :name, :area, :sex, :age
|
12
|
+
attr_reader :height, :weight, :description, :spamount
|
13
|
+
attr_reader :SIZE, :BP, :DB, :MD, :ENC, :STATUS
|
14
|
+
attr_writer :name, :area, :sex, :age, :height, :weight, :description
|
15
|
+
attr_writer :ENC
|
16
|
+
|
17
|
+
def initialize(name, type, level, area, sex, age, height, weight, description)
|
18
|
+
|
19
|
+
@name = name.to_s
|
20
|
+
@type = type.to_s
|
21
|
+
@level = level.to_i
|
22
|
+
@area = area.to_s
|
23
|
+
@sex = sex.to_s
|
24
|
+
@age = age.to_i
|
25
|
+
@height = height.to_i
|
26
|
+
@weight = weight.to_i
|
27
|
+
@description = description.to_s
|
28
|
+
|
29
|
+
@spamount = 0
|
30
|
+
|
31
|
+
# Randomize omitted values, starting with sex and name
|
32
|
+
|
33
|
+
if @sex == ""
|
34
|
+
var = rand(2).to_i
|
35
|
+
case var
|
36
|
+
when 0
|
37
|
+
@sex = "F"
|
38
|
+
else
|
39
|
+
@sex = "M"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
@name = naming("Human", @sex) if @name == ""
|
44
|
+
|
45
|
+
unless $Chartype.has_key?(@type)
|
46
|
+
@type = ""
|
47
|
+
end
|
48
|
+
|
49
|
+
if @type == ""
|
50
|
+
i = 1
|
51
|
+
tmp = Array.new
|
52
|
+
$Chartype.each_key do |key|
|
53
|
+
tmp[i] = key
|
54
|
+
i += 1
|
55
|
+
end
|
56
|
+
t = (rand(tmp.length - 1) + 1).to_i
|
57
|
+
@type = tmp[t]
|
58
|
+
end
|
59
|
+
|
60
|
+
if @level == 0
|
61
|
+
@level = (rand(5) + 1).to_i
|
62
|
+
end
|
63
|
+
|
64
|
+
if @area == ""
|
65
|
+
@area = randomizer(
|
66
|
+
"Amaronir" => 4,
|
67
|
+
"Merisir" => 2,
|
68
|
+
"Calaronir" => 2,
|
69
|
+
"Feronir" => 2,
|
70
|
+
"Aleresir" => 2,
|
71
|
+
"Rauinir" => 3,
|
72
|
+
"Outskirts" => 1,
|
73
|
+
"Other" => 1)
|
74
|
+
end
|
75
|
+
|
76
|
+
# Age generation with full range including youngsters
|
77
|
+
if @age == 0
|
78
|
+
base_age = @level * 2 + rand(10) + 16 # Base: 16-40s range
|
79
|
+
# 20% chance for youngling (13-17), 10% chance for elder (45-65)
|
80
|
+
age_modifier = rand(1..10)
|
81
|
+
if age_modifier <= 2 # 20% youngsters
|
82
|
+
@age = rand(13..17)
|
83
|
+
elsif age_modifier == 10 # 10% elders
|
84
|
+
@age = rand(45..65)
|
85
|
+
else # 70% normal range
|
86
|
+
@age = base_age
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
if @height == 0
|
91
|
+
@height = 160 + oD6 * 2 + oD6 + rand(10)
|
92
|
+
@height -= 5 if @sex == "F"
|
93
|
+
@height -= (3 * (16 - @age)) if @age < 17
|
94
|
+
end
|
95
|
+
|
96
|
+
@weight = @height - 120 + aD6 * 4 + rand(10) if @weight == 0
|
97
|
+
|
98
|
+
# Then start working with the type array
|
99
|
+
|
100
|
+
@npc = $Chartype[@type].dup
|
101
|
+
|
102
|
+
# Then generate the individual attributes
|
103
|
+
|
104
|
+
@npc["attr"].each_key do |key|
|
105
|
+
tmp = @npc["attr"][key]
|
106
|
+
tmp = (tmp * (@level + 1)) / 3 - 2 + aD6
|
107
|
+
tmp = 0 if tmp < 0
|
108
|
+
tmp = 1 if tmp < 1 and key != "MAGAP"
|
109
|
+
@npc["attr"][key] = tmp
|
110
|
+
end
|
111
|
+
|
112
|
+
# Adjust the weight based on the STRNG
|
113
|
+
|
114
|
+
@weight += @npc["attr"]["STRNG"] * 2 - 6
|
115
|
+
|
116
|
+
# Adjust female strength
|
117
|
+
|
118
|
+
@npc["attr"]["STRNG"] = ((@npc["attr"]["STRNG"] * 0.8) + 1).to_i if @sex == "F"
|
119
|
+
|
120
|
+
# Generate the SIZE attribute
|
121
|
+
|
122
|
+
# SIZE calculation with half-sizes based on weight
|
123
|
+
@SIZE = case @weight
|
124
|
+
when 0...10 then 0.5
|
125
|
+
when 10...15 then 1
|
126
|
+
when 15...20 then 1.5
|
127
|
+
when 20...35 then 2
|
128
|
+
when 35...50 then 2.5
|
129
|
+
when 50...75 then 3
|
130
|
+
when 75...100 then 3.5
|
131
|
+
when 100...125 then 4
|
132
|
+
when 125...150 then 4.5
|
133
|
+
when 150...188 then 5
|
134
|
+
when 188...225 then 5.5
|
135
|
+
when 225...263 then 6
|
136
|
+
when 263...300 then 6.5
|
137
|
+
when 300...350 then 7
|
138
|
+
when 350...400 then 7.5
|
139
|
+
when 400...450 then 8
|
140
|
+
when 450...500 then 8.5
|
141
|
+
when 500...550 then 9
|
142
|
+
when 550...600 then 9.5
|
143
|
+
when 600...663 then 10
|
144
|
+
when 663...725 then 10.5
|
145
|
+
when 725...788 then 11
|
146
|
+
when 788...850 then 11.5
|
147
|
+
when 850...925 then 12
|
148
|
+
when 925...1000 then 12.5
|
149
|
+
when 1000...1075 then 13
|
150
|
+
when 1075...1150 then 13.5
|
151
|
+
when 1150...1225 then 14
|
152
|
+
when 1225...1300 then 14.5
|
153
|
+
when 1300...1375 then 15
|
154
|
+
when 1375...1450 then 15.5
|
155
|
+
when 1450...1525 then 16
|
156
|
+
when 1525...1600 then 16.5
|
157
|
+
else
|
158
|
+
# For very large creatures, add 0.5 per 100kg
|
159
|
+
16.5 + ((@weight - 1600) / 100.0).floor * 0.5
|
160
|
+
end
|
161
|
+
|
162
|
+
# Then generate the individual skills
|
163
|
+
|
164
|
+
@npc["c_skill"].each_key do |key|
|
165
|
+
tmp = @npc["c_skill"][key]
|
166
|
+
tmp = (tmp * (@level + 1)) / 3 - 2 + aD6 + (@npc["attr"]["COORD"] / 3)
|
167
|
+
tmp = (tmp + @npc["attr"]["COORD"]) / 2 if tmp > @npc["attr"]["COORD"]
|
168
|
+
tmp = 0 if tmp < 0
|
169
|
+
@npc["c_skill"][key] = tmp.to_i
|
170
|
+
end
|
171
|
+
|
172
|
+
@npc["a_skill"].each_key do |key|
|
173
|
+
tmp = @npc["a_skill"][key]
|
174
|
+
tmp = (tmp * (@level + 1)) / 3 - 2 + aD6 + (@npc["attr"]["AWARE"] / 3)
|
175
|
+
tmp = (tmp + @npc["attr"]["AWARE"]) / 2 if tmp > @npc["attr"]["AWARE"]
|
176
|
+
tmp = 0 if tmp < 0
|
177
|
+
@npc["a_skill"][key] = tmp.to_i
|
178
|
+
end
|
179
|
+
|
180
|
+
@npc["l_skill"].each_key do |key|
|
181
|
+
tmp = @npc["l_skill"][key]
|
182
|
+
tmp = (tmp * (@level + 1)) / 3 - 2 + aD6
|
183
|
+
tmp = (tmp + @npc["attr"]["LEARN"]) / 2 if tmp > @npc["attr"]["LEARN"]
|
184
|
+
tmp = 0 if tmp < 0
|
185
|
+
@npc["l_skill"][key] = tmp
|
186
|
+
end
|
187
|
+
|
188
|
+
|
189
|
+
# Calculate Body Points, Damage Bonus and Magick Defense
|
190
|
+
|
191
|
+
@BP = 2 * @SIZE + (@npc["attr"]["ENDUR"] / 3).to_i
|
192
|
+
@DB = ((@SIZE + @npc["attr"]["STRNG"]) / 3).to_i
|
193
|
+
@MD = ((@npc["attr"]["MAGAP"] + @npc["attr"]["ENDUR"]) / 3).to_i
|
194
|
+
|
195
|
+
|
196
|
+
# Calculate modhide and modmvqt
|
197
|
+
|
198
|
+
@modhide = @npc["c_skill"]["Hide"].to_i + @npc["items"]["Armour"][3].to_i
|
199
|
+
@modmvqt = @npc["c_skill"]["Mvqt"].to_i + @npc["items"]["Armour"][2].to_i
|
200
|
+
|
201
|
+
|
202
|
+
# Adjust Weapon, Missile and Armour level if strength is to low
|
203
|
+
|
204
|
+
case @npc["attr"]["STRNG"]
|
205
|
+
when 1..2
|
206
|
+
tmp = 1
|
207
|
+
when 3
|
208
|
+
tmp = 2
|
209
|
+
when 4
|
210
|
+
tmp = 3
|
211
|
+
when 5
|
212
|
+
tmp = 5
|
213
|
+
when 6
|
214
|
+
tmp = 6
|
215
|
+
when 7
|
216
|
+
tmp = 7
|
217
|
+
else
|
218
|
+
tmp = 8
|
219
|
+
end
|
220
|
+
|
221
|
+
if tmp < @npc["specials"]["Arm-level"]
|
222
|
+
@npc["specials"]["Arm-level"] = tmp
|
223
|
+
end
|
224
|
+
|
225
|
+
case @npc["attr"]["STRNG"]
|
226
|
+
when 1
|
227
|
+
tmp = 2
|
228
|
+
when 2
|
229
|
+
tmp = 4
|
230
|
+
when 3
|
231
|
+
tmp = 11
|
232
|
+
when 4
|
233
|
+
tmp = 18
|
234
|
+
when 5
|
235
|
+
tmp = 22
|
236
|
+
when 7..8
|
237
|
+
tmp = 28
|
238
|
+
else
|
239
|
+
tmp = 30
|
240
|
+
end
|
241
|
+
|
242
|
+
if tmp < @npc["specials"]["Wpn-level"]
|
243
|
+
@npc["specials"]["Wpn-level"] = tmp
|
244
|
+
end
|
245
|
+
|
246
|
+
case @npc["attr"]["STRNG"]
|
247
|
+
when 1
|
248
|
+
tmp = 2
|
249
|
+
when 2
|
250
|
+
tmp = 5
|
251
|
+
when 3
|
252
|
+
tmp = 7
|
253
|
+
when 4..5
|
254
|
+
tmp = 9
|
255
|
+
when 6..7
|
256
|
+
tmp = 10
|
257
|
+
when 8..9
|
258
|
+
tmp = 11
|
259
|
+
else
|
260
|
+
tmp = 12
|
261
|
+
end
|
262
|
+
|
263
|
+
if tmp < @npc["specials"]["Msl-level"]
|
264
|
+
@npc["specials"]["Msl-level"] = tmp
|
265
|
+
end
|
266
|
+
|
267
|
+
|
268
|
+
# Calculate Social status and money
|
269
|
+
|
270
|
+
tmp = @npc["specials"]["Status"].to_i
|
271
|
+
tmp = (4 * tmp + @level + aD6) / 5
|
272
|
+
tmp = 0 if tmp < 0
|
273
|
+
@npc["specials"]["Status"] = tmp.to_i
|
274
|
+
|
275
|
+
tmp = @npc["items"]["Money"]
|
276
|
+
tmp = ((tmp * oD6).abs / 3.5).to_i
|
277
|
+
@npc["items"]["Money"] = tmp
|
278
|
+
|
279
|
+
|
280
|
+
# Get religion and status within the religion along with CS (Cultstanding)
|
281
|
+
# First determine the off chance of a totally different cult than usual
|
282
|
+
|
283
|
+
tmp = rand(12)
|
284
|
+
@npc["specials"]["Cult"] = ["any"] if tmp == 0
|
285
|
+
|
286
|
+
tmp = rand(@npc["specials"]["Cult"].length).to_i
|
287
|
+
@npc["specials"]["Cult"] = @npc["specials"]["Cult"][tmp]
|
288
|
+
if @npc["specials"]["Cult"] == "any"
|
289
|
+
@npc["specials"]["Cult"] = randomizer(
|
290
|
+
"Alesia" => 4,
|
291
|
+
"Anashina" => 3,
|
292
|
+
"Cal Amae" => 2,
|
293
|
+
"Elesi" => 1,
|
294
|
+
"(evil god)" => 1,
|
295
|
+
"Fal Munir" => 2,
|
296
|
+
"Gewillyn" => 2,
|
297
|
+
"Ielina" => 3,
|
298
|
+
"Ikalio" => 3,
|
299
|
+
"Juba" => 3,
|
300
|
+
"Kraagh" => 2,
|
301
|
+
"(lesser god)"=> 4,
|
302
|
+
"Maleko" => 2,
|
303
|
+
"Man Peggon" => 1,
|
304
|
+
"Mestronorpha"=> 1,
|
305
|
+
"Moltan" => 3,
|
306
|
+
"nobility" => 6,
|
307
|
+
"Recolar" => 3,
|
308
|
+
"Shalissa" => 3,
|
309
|
+
"Taroc" => 5,
|
310
|
+
"Timelords" => 1,
|
311
|
+
"Tsankili" => 2,
|
312
|
+
"Walmaer" => 5,
|
313
|
+
"None" => 6)
|
314
|
+
end
|
315
|
+
|
316
|
+
if @npc["specials"]["Cult"] == "nobility"
|
317
|
+
@npc["specials"]["Cult"] = "MacGillan" if @sex == "M"
|
318
|
+
@npc["specials"]["Cult"] = "Gwendyll" if @sex == "F"
|
319
|
+
nobility = true
|
320
|
+
end
|
321
|
+
|
322
|
+
tmp = @npc["specials"]["Cultstat1"].to_i + @level + (d6 + d6 + d6)/3
|
323
|
+
case tmp
|
324
|
+
when 0...8
|
325
|
+
@npc["specials"]["Cultstat1"] = "Interested"
|
326
|
+
@npc["specials"]["CS"] = 0
|
327
|
+
when 8...10
|
328
|
+
@npc["specials"]["Cultstat1"] = "Lay member"
|
329
|
+
@npc["specials"]["CS"] = (@npc["specials"]["CS"] / 5).to_i
|
330
|
+
when 10...13
|
331
|
+
@npc["specials"]["Cultstat1"] = "Initiated"
|
332
|
+
if nobility
|
333
|
+
@npc["specials"]["Status"] = 4 if @npc["specials"]["Status"] < 4
|
334
|
+
end
|
335
|
+
else
|
336
|
+
@npc["specials"]["Cultstat1"] = "Protector/Priest"
|
337
|
+
if nobility
|
338
|
+
@npc["specials"]["Status"] = 5 if @npc["specials"]["Status"] < 5
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
342
|
+
if @npc["specials"]["Cult"] == ["None"]
|
343
|
+
@npc["specials"]["Cultstat1"] = ""
|
344
|
+
@npc["specials"]["Status"] = 5
|
345
|
+
end
|
346
|
+
|
347
|
+
tmp = @npc["specials"]["CS"]
|
348
|
+
tmp = (2 * tmp) + @level + (3 * aD6) - 15
|
349
|
+
tmp = 0 if tmp < 0
|
350
|
+
@npc["specials"]["CS"] = tmp
|
351
|
+
|
352
|
+
|
353
|
+
# Transform Social status to words
|
354
|
+
|
355
|
+
case @npc["specials"]["Status"]
|
356
|
+
when 0
|
357
|
+
@npc["specials"]["Status"] = "S"
|
358
|
+
when 1
|
359
|
+
@npc["specials"]["Status"] = "LC"
|
360
|
+
when 2
|
361
|
+
@npc["specials"]["Status"] = "LMC"
|
362
|
+
when 3
|
363
|
+
@npc["specials"]["Status"] = "MC"
|
364
|
+
when 4
|
365
|
+
@npc["specials"]["Status"] = "UC"
|
366
|
+
else
|
367
|
+
@npc["specials"]["Status"] = "N"
|
368
|
+
end
|
369
|
+
|
370
|
+
# Reaction speed is calculated as weighted average between Awareness and Melee skill
|
371
|
+
if @npc["c_skill"]["Melee1s"] < @npc["attr"]["AWARE"]
|
372
|
+
@npc["a_skill"]["Reaction"] = (@npc["c_skill"]["Melee1s"] * 2 + @npc["attr"]["AWARE"]) / 3 + d6 - 3
|
373
|
+
else
|
374
|
+
@npc["a_skill"]["Reaction"] = (@npc["attr"]["AWARE"] * 2 + @npc["c_skill"]["Melee1s"]) / 3 + d6 - 3
|
375
|
+
end
|
376
|
+
@npc["a_skill"]["Reaction"] = @npc["attr"]["AWARE"] / 3 if @npc["a_skill"]["Reaction"] < @npc["attr"]["AWARE"] / 3
|
377
|
+
|
378
|
+
# Pick armour and weapons for the character (and drop duplicates)
|
379
|
+
|
380
|
+
tmp = rand(@npc["specials"]["Arm-level"]) + 1
|
381
|
+
tmp.to_i
|
382
|
+
@npc["items"]["Armour"] = $Armour[tmp].dup
|
383
|
+
|
384
|
+
tmp = rand(@npc["specials"]["Wpn-level"]) + 1
|
385
|
+
tmp.to_i
|
386
|
+
@npc["items"]["Melee1"] = $Melee[tmp].dup
|
387
|
+
@npc["items"]["Melee1"][3] += @DB
|
388
|
+
@npc["items"]["Melee1"][4] += @npc["a_skill"]["Reaction"]
|
389
|
+
@npc["items"]["Melee1"][5] += @npc["c_skill"]["Melee1s"]
|
390
|
+
@npc["items"]["Melee1"][6] += @npc["c_skill"]["Melee1s"]
|
391
|
+
@npc["items"]["Melee1"][6] += (@npc["c_skill"]["Dodge"] / 5).to_i
|
392
|
+
|
393
|
+
tmp2 = rand(@npc["specials"]["Wpn-level"]) + 1
|
394
|
+
tmp2.to_i
|
395
|
+
if tmp2 != tmp
|
396
|
+
@npc["items"]["Melee2"] = $Melee[tmp2].dup
|
397
|
+
@npc["items"]["Melee2"][3] += @DB
|
398
|
+
@npc["items"]["Melee2"][4] += @npc["a_skill"]["Reaction"]
|
399
|
+
@npc["items"]["Melee2"][5] += @npc["c_skill"]["Melee2s"]
|
400
|
+
@npc["items"]["Melee2"][6] += @npc["c_skill"]["Melee2s"]
|
401
|
+
@npc["items"]["Melee2"][6] += (@npc["c_skill"]["Dodge"] / 5).to_i
|
402
|
+
else
|
403
|
+
@npc["items"]["Melee2"] = ""
|
404
|
+
@npc["c_skill"]["Melee2s"] = 0
|
405
|
+
end
|
406
|
+
|
407
|
+
tmp3 = rand(@npc["specials"]["Wpn-level"]) + 1
|
408
|
+
tmp3.to_i
|
409
|
+
if tmp3 != tmp && tmp3 != tmp2
|
410
|
+
@npc["items"]["Melee3"] = $Melee[tmp3].dup
|
411
|
+
@npc["items"]["Melee3"][3] += @DB
|
412
|
+
@npc["items"]["Melee3"][4] += @npc["a_skill"]["Reaction"]
|
413
|
+
@npc["items"]["Melee3"][5] += @npc["c_skill"]["Melee3s"]
|
414
|
+
@npc["items"]["Melee3"][6] += @npc["c_skill"]["Melee3s"]
|
415
|
+
@npc["items"]["Melee3"][6] += (@npc["c_skill"]["Dodge"] / 5).to_i
|
416
|
+
else
|
417
|
+
@npc["items"]["Melee3"] = ""
|
418
|
+
@npc["c_skill"]["Melee3s"] = 0
|
419
|
+
end
|
420
|
+
|
421
|
+
tmp = rand(@npc["specials"]["Msl-level"]) + 1
|
422
|
+
tmp.to_i
|
423
|
+
@npc["items"]["Missile1"] = $Missile[tmp].dup
|
424
|
+
if @npc["items"]["Missile1"][1] != "Crossbow" && @npc["items"]["Missile1"][1] != "Bow"
|
425
|
+
@npc["items"]["Missile1"][3] += (@npc["attr"]["STRNG"] / 5).to_i
|
426
|
+
end
|
427
|
+
@npc["items"]["Missile1"][7] += @npc["a_skill"]["Reaction"]
|
428
|
+
@npc["items"]["Missile1"][4] += @npc["c_skill"]["Missile1s"]
|
429
|
+
|
430
|
+
tmp2 = rand(@npc["specials"]["Msl-level"]) + 1
|
431
|
+
tmp2.to_i
|
432
|
+
if tmp2 != tmp
|
433
|
+
@npc["items"]["Missile2"] = $Missile[tmp2].dup
|
434
|
+
if @npc["items"]["Missile2"][1] != "Crossbow" && @npc["items"]["Missile2"][1] != "Bow"
|
435
|
+
@npc["items"]["Missile2"][3] += (@npc["attr"]["STRNG"] / 5).to_i
|
436
|
+
end
|
437
|
+
@npc["items"]["Missile2"][7] += @npc["a_skill"]["Reaction"]
|
438
|
+
@npc["items"]["Missile2"][4] += @npc["c_skill"]["Missile2s"]
|
439
|
+
else
|
440
|
+
@npc["items"]["Missile2"] = ""
|
441
|
+
@npc["c_skill"]["Missile2s"] = 0
|
442
|
+
end
|
443
|
+
if @npc["items"]["Missile2"][1] == @npc["items"]["Missile1"][1]
|
444
|
+
@npc["items"]["Missile2"] = ""
|
445
|
+
@npc["c_skill"]["Missile2s"] = 0
|
446
|
+
end
|
447
|
+
|
448
|
+
|
449
|
+
# Calculate encumberance (in kilograms) and susequently the STATUS
|
450
|
+
|
451
|
+
@ENC = @npc["items"]["Armour"][4]
|
452
|
+
@ENC += @npc["items"]["Melee1"][8]
|
453
|
+
@ENC += @npc["items"]["Melee2"][8] if @npc["items"]["Melee2"][8].to_i != 0
|
454
|
+
@ENC += @npc["items"]["Missile1"][8]
|
455
|
+
@ENC += 3
|
456
|
+
@ENC = @ENC.to_i
|
457
|
+
|
458
|
+
case @ENC
|
459
|
+
when 0...(2 * @npc["attr"]["STRNG"])
|
460
|
+
@STATUS = 0
|
461
|
+
when (2 * @npc["attr"]["STRNG"])...(5 * @npc["attr"]["STRNG"])
|
462
|
+
@STATUS = -1
|
463
|
+
when (5 * @npc["attr"]["STRNG"])...(10 * @npc["attr"]["STRNG"])
|
464
|
+
@STATUS = -3
|
465
|
+
when (10 * @npc["attr"]["STRNG"])...(20 * @npc["attr"]["STRNG"])
|
466
|
+
@STATUS = -5
|
467
|
+
end
|
468
|
+
|
469
|
+
|
470
|
+
# Fill the array "spells" with "0"-values
|
471
|
+
|
472
|
+
@npc["magick"]["spells"] = [
|
473
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
474
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
475
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
476
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
477
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
478
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
479
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
480
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
481
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
482
|
+
]
|
483
|
+
|
484
|
+
# Get Magick lore, Spell lore
|
485
|
+
|
486
|
+
if @npc["magick"]["maglore"] < 1
|
487
|
+
@npc["magick"]["maglore"] = 0
|
488
|
+
@npc["magick"]["splore"] = 0
|
489
|
+
else
|
490
|
+
tmp = @npc["magick"]["maglore"]
|
491
|
+
tmp = (tmp * (@level + 1)) / 3 - 2 + aD6
|
492
|
+
tmp = (tmp + @npc["attr"]["LEARN"]) / 2 if tmp > @npc["attr"]["LEARN"]
|
493
|
+
tmp = 0 if tmp < 0
|
494
|
+
@npc["magick"]["maglore"] = tmp.to_i
|
495
|
+
|
496
|
+
tmp2 = @npc["magick"]["splore"]
|
497
|
+
tmp2 = (tmp2 * (@level + 1)) / 3 - 2 + aD6
|
498
|
+
tmp2 = (tmp2 + @npc["attr"]["LEARN"]) / 2 if tmp2 > @npc["attr"]["LEARN"]
|
499
|
+
tmp2 = tmp if tmp2 > tmp
|
500
|
+
tmp2 = 0 if tmp2 < 0
|
501
|
+
@npc["magick"]["splore"] = tmp2.to_i
|
502
|
+
|
503
|
+
if @npc["magick"]["splore"] < 2
|
504
|
+
@npc["magick"]["magtype1"] = "(none)"
|
505
|
+
else
|
506
|
+
if @npc["magick"]["magtype1"] == "any" or @npc["magick"]["magtype1"] == ""
|
507
|
+
@npc["magick"]["magtype1"] = randomizer(
|
508
|
+
"air" => 2,
|
509
|
+
"black" => 1,
|
510
|
+
"earth" => 3,
|
511
|
+
"fire" => 2,
|
512
|
+
"life" => 3,
|
513
|
+
"magic" => 1,
|
514
|
+
"perception"=> 3,
|
515
|
+
"protection"=> 3,
|
516
|
+
"summoning" => 2,
|
517
|
+
"water" => 3)
|
518
|
+
end
|
519
|
+
|
520
|
+
# Then get the spells
|
521
|
+
|
522
|
+
spamount = self.splore + aD6 - 3
|
523
|
+
spamount = 1 if spamount < 1
|
524
|
+
spamount = 9 if spamount > 9
|
525
|
+
|
526
|
+
if $Magick.has_key?(self.magtype1)
|
527
|
+
spells = $Magick[self.magtype1].dup
|
528
|
+
spamount = spells.length if spamount > spells.length
|
529
|
+
spamount.times do |i|
|
530
|
+
break if spells.length == 0
|
531
|
+
tmp = rand(spells.length).to_i
|
532
|
+
spell = spells[tmp]
|
533
|
+
spells.delete_at(tmp)
|
534
|
+
if spell[5].to_i < self.splore + 7
|
535
|
+
@npc["magick"]["spells"][i] = spell
|
536
|
+
@npc["magick"]["spells"][i][0] = (rand(self.splore)/2).to_i + 1
|
537
|
+
if @npc["magick"]["spells"][i][0].to_i + @npc["magick"]["spells"][i][5].to_i > self.splore + 6
|
538
|
+
@npc["magick"]["spells"][i][0] = self.splore + 6 - @npc["magick"]["spells"][i][5].to_i
|
539
|
+
end
|
540
|
+
@spamount += 1
|
541
|
+
else redo
|
542
|
+
end
|
543
|
+
end
|
544
|
+
end
|
545
|
+
end
|
546
|
+
end
|
547
|
+
|
548
|
+
end
|
549
|
+
|
550
|
+
|
551
|
+
# Define non-ordinary readable attributes
|
552
|
+
|
553
|
+
def attr(key)
|
554
|
+
@npc["attr"][key]
|
555
|
+
end
|
556
|
+
|
557
|
+
def c_skill(key)
|
558
|
+
@npc["c_skill"][key]
|
559
|
+
end
|
560
|
+
|
561
|
+
def a_skill(key)
|
562
|
+
@npc["a_skill"][key]
|
563
|
+
end
|
564
|
+
|
565
|
+
def l_skill(key)
|
566
|
+
@npc["l_skill"][key]
|
567
|
+
end
|
568
|
+
|
569
|
+
def specials(key)
|
570
|
+
@npc["specials"][key]
|
571
|
+
end
|
572
|
+
|
573
|
+
def items(key)
|
574
|
+
@npc["items"][key]
|
575
|
+
end
|
576
|
+
|
577
|
+
def magick(key)
|
578
|
+
@npc["magick"][key]
|
579
|
+
end
|
580
|
+
|
581
|
+
|
582
|
+
# Define non-ordinary writable attributes
|
583
|
+
|
584
|
+
def attr=(key, new)
|
585
|
+
@npc["attr"][key] = new
|
586
|
+
end
|
587
|
+
|
588
|
+
def c_skill=(key, new)
|
589
|
+
@npc["c_skill"][key] = new
|
590
|
+
end
|
591
|
+
|
592
|
+
def a_skill=(key, new)
|
593
|
+
@npc["a_skill"][key] = new
|
594
|
+
end
|
595
|
+
|
596
|
+
def l_skill=(key, new)
|
597
|
+
@npc["l_skill"][key] = new
|
598
|
+
end
|
599
|
+
|
600
|
+
def specials=(key, new)
|
601
|
+
@npc["specials"][key] = new
|
602
|
+
end
|
603
|
+
|
604
|
+
def items=(key, new)
|
605
|
+
@npc["items"][key] = new
|
606
|
+
end
|
607
|
+
|
608
|
+
def magick(key, new)
|
609
|
+
@npc["magick"][key] = new
|
610
|
+
end
|
611
|
+
|
612
|
+
|
613
|
+
# Specific readers (the rest)
|
614
|
+
|
615
|
+
def size
|
616
|
+
self.SIZE
|
617
|
+
end
|
618
|
+
|
619
|
+
def db
|
620
|
+
self.DB
|
621
|
+
end
|
622
|
+
|
623
|
+
def bp
|
624
|
+
self.BP
|
625
|
+
end
|
626
|
+
|
627
|
+
def md
|
628
|
+
self.MD
|
629
|
+
end
|
630
|
+
|
631
|
+
def enc
|
632
|
+
self.ENC
|
633
|
+
end
|
634
|
+
|
635
|
+
def status
|
636
|
+
self.STATUS
|
637
|
+
end
|
638
|
+
|
639
|
+
def strng
|
640
|
+
self.attr("STRNG")
|
641
|
+
end
|
642
|
+
|
643
|
+
def endur
|
644
|
+
self.attr("ENDUR")
|
645
|
+
end
|
646
|
+
|
647
|
+
def coord
|
648
|
+
self.attr("COORD")
|
649
|
+
end
|
650
|
+
|
651
|
+
def learn
|
652
|
+
self.attr("LEARN")
|
653
|
+
end
|
654
|
+
|
655
|
+
def aware
|
656
|
+
self.attr("AWARE")
|
657
|
+
end
|
658
|
+
|
659
|
+
def magap
|
660
|
+
self.attr("MAGAP")
|
661
|
+
end
|
662
|
+
|
663
|
+
def cs
|
664
|
+
self.specials("CS")
|
665
|
+
end
|
666
|
+
|
667
|
+
def balance
|
668
|
+
self.c_skill("Balance")
|
669
|
+
end
|
670
|
+
|
671
|
+
def climb
|
672
|
+
self.c_skill("Climb")
|
673
|
+
end
|
674
|
+
|
675
|
+
def dodge
|
676
|
+
self.c_skill("Dodge")
|
677
|
+
end
|
678
|
+
|
679
|
+
def hide
|
680
|
+
self.c_skill("Hide")
|
681
|
+
end
|
682
|
+
|
683
|
+
def modhide
|
684
|
+
@modhide
|
685
|
+
end
|
686
|
+
|
687
|
+
def mvqt
|
688
|
+
self.c_skill("Mvqt")
|
689
|
+
end
|
690
|
+
|
691
|
+
def modmvqt
|
692
|
+
@modmvqt
|
693
|
+
end
|
694
|
+
|
695
|
+
def ride
|
696
|
+
self.c_skill("Ride")
|
697
|
+
end
|
698
|
+
|
699
|
+
def sleight
|
700
|
+
self.c_skill("Sleight")
|
701
|
+
end
|
702
|
+
|
703
|
+
def swim
|
704
|
+
self.c_skill("Swim")
|
705
|
+
end
|
706
|
+
|
707
|
+
def tumble
|
708
|
+
self.c_skill("Tumble")
|
709
|
+
end
|
710
|
+
|
711
|
+
def physical1
|
712
|
+
self.specials("Physical1")
|
713
|
+
end
|
714
|
+
|
715
|
+
def physical1s
|
716
|
+
self.c_skill("Physical1s")
|
717
|
+
end
|
718
|
+
|
719
|
+
def physical2
|
720
|
+
self.specials("Physical2")
|
721
|
+
end
|
722
|
+
|
723
|
+
def physical2s
|
724
|
+
self.c_skill("Physical2s")
|
725
|
+
end
|
726
|
+
|
727
|
+
def physical3
|
728
|
+
self.specials("Physical3")
|
729
|
+
end
|
730
|
+
|
731
|
+
def physical3s
|
732
|
+
self.c_skill("Physical3s")
|
733
|
+
end
|
734
|
+
|
735
|
+
def react
|
736
|
+
self.a_skill("Reaction")
|
737
|
+
end
|
738
|
+
|
739
|
+
def dtraps
|
740
|
+
self.a_skill("DTraps")
|
741
|
+
end
|
742
|
+
|
743
|
+
def tracking
|
744
|
+
self.a_skill("Tracking")
|
745
|
+
end
|
746
|
+
|
747
|
+
def percept1
|
748
|
+
self.specials("Percept1")
|
749
|
+
end
|
750
|
+
|
751
|
+
def percept1s
|
752
|
+
self.a_skill("Percept1s")
|
753
|
+
end
|
754
|
+
|
755
|
+
def medicall
|
756
|
+
self.l_skill("MedicalL")
|
757
|
+
end
|
758
|
+
|
759
|
+
def readwrite
|
760
|
+
self.l_skill("ReadWrite")
|
761
|
+
end
|
762
|
+
|
763
|
+
def spoken
|
764
|
+
self.l_skill("Spoken")
|
765
|
+
end
|
766
|
+
|
767
|
+
def lore1
|
768
|
+
self.specials("Lore1")
|
769
|
+
end
|
770
|
+
|
771
|
+
def lore1s
|
772
|
+
self.l_skill("Lore1s")
|
773
|
+
end
|
774
|
+
|
775
|
+
def lore2
|
776
|
+
self.specials("Lore2")
|
777
|
+
end
|
778
|
+
|
779
|
+
def lore2s
|
780
|
+
self.l_skill("Lore2s")
|
781
|
+
end
|
782
|
+
|
783
|
+
def lore3
|
784
|
+
self.specials("Lore3")
|
785
|
+
end
|
786
|
+
|
787
|
+
def lore3s
|
788
|
+
self.l_skill("Lore3s")
|
789
|
+
end
|
790
|
+
|
791
|
+
def armour
|
792
|
+
self.items("Armour")[0]
|
793
|
+
end
|
794
|
+
|
795
|
+
def ap
|
796
|
+
@npc["items"]["Armour"][1]
|
797
|
+
end
|
798
|
+
|
799
|
+
def socstatus
|
800
|
+
self.specials("Status")
|
801
|
+
end
|
802
|
+
|
803
|
+
def money
|
804
|
+
self.items("Money")
|
805
|
+
end
|
806
|
+
|
807
|
+
def cult
|
808
|
+
self.specials("Cult")
|
809
|
+
end
|
810
|
+
|
811
|
+
def cultstat1
|
812
|
+
self.specials("Cultstat1")
|
813
|
+
end
|
814
|
+
|
815
|
+
def cultstat2
|
816
|
+
self.specials("Cultstat2")
|
817
|
+
end
|
818
|
+
|
819
|
+
def melee1
|
820
|
+
@npc["items"]["Melee1"][0]
|
821
|
+
end
|
822
|
+
|
823
|
+
def melee1s
|
824
|
+
self.c_skill("Melee1s")
|
825
|
+
end
|
826
|
+
|
827
|
+
def melee1i
|
828
|
+
@npc["items"]["Melee1"][4]
|
829
|
+
end
|
830
|
+
|
831
|
+
def melee1o
|
832
|
+
@npc["items"]["Melee1"][5]
|
833
|
+
end
|
834
|
+
|
835
|
+
def melee1d
|
836
|
+
@npc["items"]["Melee1"][6]
|
837
|
+
end
|
838
|
+
|
839
|
+
def melee1dam
|
840
|
+
@npc["items"]["Melee1"][3]
|
841
|
+
end
|
842
|
+
|
843
|
+
def melee1hp
|
844
|
+
@npc["items"]["Melee1"][7]
|
845
|
+
end
|
846
|
+
|
847
|
+
def melee2
|
848
|
+
@npc["items"]["Melee2"][0]
|
849
|
+
end
|
850
|
+
|
851
|
+
def melee2s
|
852
|
+
self.c_skill("Melee2s")
|
853
|
+
end
|
854
|
+
|
855
|
+
def melee2i
|
856
|
+
@npc["items"]["Melee2"][4]
|
857
|
+
end
|
858
|
+
|
859
|
+
def melee2o
|
860
|
+
@npc["items"]["Melee2"][5]
|
861
|
+
end
|
862
|
+
|
863
|
+
def melee2d
|
864
|
+
@npc["items"]["Melee2"][6]
|
865
|
+
end
|
866
|
+
|
867
|
+
def melee2dam
|
868
|
+
@npc["items"]["Melee2"][3]
|
869
|
+
end
|
870
|
+
|
871
|
+
def melee2hp
|
872
|
+
@npc["items"]["Melee2"][7]
|
873
|
+
end
|
874
|
+
|
875
|
+
def melee3
|
876
|
+
@npc["items"]["Melee3"][0]
|
877
|
+
end
|
878
|
+
|
879
|
+
def melee3s
|
880
|
+
self.c_skill("Melee3s")
|
881
|
+
end
|
882
|
+
|
883
|
+
def melee3i
|
884
|
+
@npc["items"]["Melee3"][4]
|
885
|
+
end
|
886
|
+
|
887
|
+
def melee3o
|
888
|
+
@npc["items"]["Melee3"][5]
|
889
|
+
end
|
890
|
+
|
891
|
+
def melee3d
|
892
|
+
@npc["items"]["Melee3"][6]
|
893
|
+
end
|
894
|
+
|
895
|
+
def melee3dam
|
896
|
+
@npc["items"]["Melee3"][3]
|
897
|
+
end
|
898
|
+
|
899
|
+
def melee3hp
|
900
|
+
@npc["items"]["Melee3"][7]
|
901
|
+
end
|
902
|
+
|
903
|
+
def missile1
|
904
|
+
@npc["items"]["Missile1"][0]
|
905
|
+
end
|
906
|
+
|
907
|
+
def missile1s
|
908
|
+
self.c_skill("Missile1s")
|
909
|
+
end
|
910
|
+
|
911
|
+
def missile1o
|
912
|
+
@npc["items"]["Missile1"][4]
|
913
|
+
end
|
914
|
+
|
915
|
+
def missile1dam
|
916
|
+
@npc["items"]["Missile1"][3]
|
917
|
+
end
|
918
|
+
|
919
|
+
def missile1rng
|
920
|
+
@npc["items"]["Missile1"][5]
|
921
|
+
end
|
922
|
+
|
923
|
+
def missile1rmax
|
924
|
+
@npc["items"]["Missile1"][6]
|
925
|
+
end
|
926
|
+
|
927
|
+
def missile1i
|
928
|
+
@npc["items"]["Missile1"][7]
|
929
|
+
end
|
930
|
+
|
931
|
+
def missile2
|
932
|
+
@npc["items"]["Missile2"][0]
|
933
|
+
end
|
934
|
+
|
935
|
+
def missile2s
|
936
|
+
self.c_skill("Missile2s")
|
937
|
+
end
|
938
|
+
|
939
|
+
def missile2o
|
940
|
+
@npc["items"]["Missile2"][4]
|
941
|
+
end
|
942
|
+
|
943
|
+
def missile2dam
|
944
|
+
@npc["items"]["Missile2"][3]
|
945
|
+
end
|
946
|
+
|
947
|
+
def missile2rng
|
948
|
+
@npc["items"]["Missile2"][5]
|
949
|
+
end
|
950
|
+
|
951
|
+
def missile2rmax
|
952
|
+
@npc["items"]["Missile2"][6]
|
953
|
+
end
|
954
|
+
|
955
|
+
def missile2i
|
956
|
+
@npc["items"]["Missile1"][7]
|
957
|
+
end
|
958
|
+
|
959
|
+
def maglore
|
960
|
+
@npc["magick"]["maglore"]
|
961
|
+
end
|
962
|
+
|
963
|
+
def splore
|
964
|
+
@npc["magick"]["splore"]
|
965
|
+
end
|
966
|
+
|
967
|
+
def magtype1
|
968
|
+
@npc["magick"]["magtype1"]
|
969
|
+
end
|
970
|
+
|
971
|
+
def spell0(key)
|
972
|
+
@npc["magick"]["spells"][0][key]
|
973
|
+
end
|
974
|
+
|
975
|
+
def spell1(key)
|
976
|
+
@npc["magick"]["spells"][1][key]
|
977
|
+
end
|
978
|
+
|
979
|
+
def spell2(key)
|
980
|
+
@npc["magick"]["spells"][2][key]
|
981
|
+
end
|
982
|
+
|
983
|
+
def spell3(key)
|
984
|
+
@npc["magick"]["spells"][3][key]
|
985
|
+
end
|
986
|
+
|
987
|
+
def spell4(key)
|
988
|
+
@npc["magick"]["spells"][4][key]
|
989
|
+
end
|
990
|
+
|
991
|
+
def spell5(key)
|
992
|
+
@npc["magick"]["spells"][5][key]
|
993
|
+
end
|
994
|
+
|
995
|
+
def spell6(key)
|
996
|
+
@npc["magick"]["spells"][6][key]
|
997
|
+
end
|
998
|
+
|
999
|
+
def spell7(key)
|
1000
|
+
@npc["magick"]["spells"][7][key]
|
1001
|
+
end
|
1002
|
+
|
1003
|
+
def spell8(key)
|
1004
|
+
@npc["magick"]["spells"][8][key]
|
1005
|
+
end
|
1006
|
+
|
1007
|
+
|
1008
|
+
# Specific writers (the rest)
|
1009
|
+
|
1010
|
+
def enc=(new)
|
1011
|
+
self.ENC = new
|
1012
|
+
end
|
1013
|
+
|
1014
|
+
def strng=(new)
|
1015
|
+
self.attr("STRNG", new)
|
1016
|
+
end
|
1017
|
+
|
1018
|
+
def endur=(new)
|
1019
|
+
self.attr("ENDUR", new)
|
1020
|
+
end
|
1021
|
+
|
1022
|
+
def coord=(new)
|
1023
|
+
self.attr("COORD", new)
|
1024
|
+
end
|
1025
|
+
|
1026
|
+
def learn=(new)
|
1027
|
+
self.attr("LEARN", new)
|
1028
|
+
end
|
1029
|
+
|
1030
|
+
def aware=(new)
|
1031
|
+
self.attr("AWARE", new)
|
1032
|
+
end
|
1033
|
+
|
1034
|
+
def magap=(new)
|
1035
|
+
self.attr("MAGAP", new)
|
1036
|
+
end
|
1037
|
+
|
1038
|
+
def cs=(new)
|
1039
|
+
self.specials("CS", new)
|
1040
|
+
end
|
1041
|
+
|
1042
|
+
def balance=(new)
|
1043
|
+
self.c_skill("Balance", new)
|
1044
|
+
end
|
1045
|
+
|
1046
|
+
def climb=(new)
|
1047
|
+
self.c_skill("Climb", new)
|
1048
|
+
end
|
1049
|
+
|
1050
|
+
def dodge=(new)
|
1051
|
+
self.c_skill("Dodge", new)
|
1052
|
+
end
|
1053
|
+
|
1054
|
+
def hide=(new)
|
1055
|
+
self.c_skill("Hide", new)
|
1056
|
+
end
|
1057
|
+
|
1058
|
+
def modhide=(new)
|
1059
|
+
@modhide = new
|
1060
|
+
end
|
1061
|
+
|
1062
|
+
def mvqt=(new)
|
1063
|
+
self.c_skill("Mvqt", new)
|
1064
|
+
end
|
1065
|
+
|
1066
|
+
def modmvqt=(new)
|
1067
|
+
@modmvqt = new
|
1068
|
+
end
|
1069
|
+
|
1070
|
+
def ride=(new)
|
1071
|
+
self.c_skill("Ride", new)
|
1072
|
+
end
|
1073
|
+
|
1074
|
+
def sleight=(new)
|
1075
|
+
self.c_skill("Sleight", new)
|
1076
|
+
end
|
1077
|
+
|
1078
|
+
def swim=(new)
|
1079
|
+
self.c_skill("Swim", new)
|
1080
|
+
end
|
1081
|
+
|
1082
|
+
def tumble=(new)
|
1083
|
+
self.c_skill("Tumble", new)
|
1084
|
+
end
|
1085
|
+
|
1086
|
+
def physical1=(new)
|
1087
|
+
self.specials("Physical1", new)
|
1088
|
+
end
|
1089
|
+
|
1090
|
+
def physical1s=(new)
|
1091
|
+
self.c_skill("Physical1s", new)
|
1092
|
+
end
|
1093
|
+
|
1094
|
+
def physical2=(new)
|
1095
|
+
self.specials("Physical2", new)
|
1096
|
+
end
|
1097
|
+
|
1098
|
+
def physical2s=(new)
|
1099
|
+
self.c_skill("Physical2s", new)
|
1100
|
+
end
|
1101
|
+
|
1102
|
+
def physical3=(new)
|
1103
|
+
self.specials("Physical3", new)
|
1104
|
+
end
|
1105
|
+
|
1106
|
+
def physical3s=(new)
|
1107
|
+
self.c_skill("Physical3s", new)
|
1108
|
+
end
|
1109
|
+
|
1110
|
+
def dtraps=(new)
|
1111
|
+
self.a_skill("DTraps", new)
|
1112
|
+
end
|
1113
|
+
|
1114
|
+
def tracking=(new)
|
1115
|
+
self.a_skill("Tracking", new)
|
1116
|
+
end
|
1117
|
+
|
1118
|
+
def percept1=(new)
|
1119
|
+
self.specials("Percept1", new)
|
1120
|
+
end
|
1121
|
+
|
1122
|
+
def percept1s=(new)
|
1123
|
+
self.a_skill("Percept1s", new)
|
1124
|
+
end
|
1125
|
+
|
1126
|
+
def medicall=(new)
|
1127
|
+
self.l_skill("MedicalL", new)
|
1128
|
+
end
|
1129
|
+
|
1130
|
+
def readwrite=(new)
|
1131
|
+
self.l_skill("ReadWrite", new)
|
1132
|
+
end
|
1133
|
+
|
1134
|
+
def spoken=(new)
|
1135
|
+
self.l_skill("Spoken", new)
|
1136
|
+
end
|
1137
|
+
|
1138
|
+
def lore1=(new)
|
1139
|
+
self.specials("Lore1", new)
|
1140
|
+
end
|
1141
|
+
|
1142
|
+
def lore1s=(new)
|
1143
|
+
self.l_skill("Lore1s", new)
|
1144
|
+
end
|
1145
|
+
|
1146
|
+
def lore2=(new)
|
1147
|
+
self.specials("Lore2", new)
|
1148
|
+
end
|
1149
|
+
|
1150
|
+
def lore2s=(new)
|
1151
|
+
self.l_skill("Lore2s", new)
|
1152
|
+
end
|
1153
|
+
|
1154
|
+
def lore3=(new)
|
1155
|
+
self.specials("Lore3", new)
|
1156
|
+
end
|
1157
|
+
|
1158
|
+
def lore3s=(new)
|
1159
|
+
self.l_skill("Lore3s", new)
|
1160
|
+
end
|
1161
|
+
|
1162
|
+
def armour=(new)
|
1163
|
+
@npc["items"]["Armour"][0] = new
|
1164
|
+
end
|
1165
|
+
|
1166
|
+
def ap=(new)
|
1167
|
+
@npc["items"]["Armour"][1] = new
|
1168
|
+
end
|
1169
|
+
|
1170
|
+
def socstatus=(new)
|
1171
|
+
self.specials("Status", new)
|
1172
|
+
end
|
1173
|
+
|
1174
|
+
def money=(new)
|
1175
|
+
self.items("Money", new)
|
1176
|
+
end
|
1177
|
+
|
1178
|
+
def cult=(new)
|
1179
|
+
self.specials("Cult", new)
|
1180
|
+
end
|
1181
|
+
|
1182
|
+
def cultstat1=(new)
|
1183
|
+
self.specials("Cultstat1", new)
|
1184
|
+
end
|
1185
|
+
|
1186
|
+
def cultstat2=(new)
|
1187
|
+
self.specials("Cultstat2", new)
|
1188
|
+
end
|
1189
|
+
|
1190
|
+
def melee1=(new)
|
1191
|
+
@npc["items"]["Melee1"][0] = new
|
1192
|
+
end
|
1193
|
+
|
1194
|
+
def melee1s=(new)
|
1195
|
+
self.c_skill("Melee1s", new)
|
1196
|
+
end
|
1197
|
+
|
1198
|
+
def melee1i=(new)
|
1199
|
+
@npc["items"]["Melee1"][4] = new
|
1200
|
+
end
|
1201
|
+
|
1202
|
+
def melee1o=(new)
|
1203
|
+
@npc["items"]["Melee1"][5] = new
|
1204
|
+
end
|
1205
|
+
|
1206
|
+
def melee1d=(new)
|
1207
|
+
@npc["items"]["Melee1"][6] = new
|
1208
|
+
end
|
1209
|
+
|
1210
|
+
def melee1dam=(new)
|
1211
|
+
@npc["items"]["Melee1"][3] = new
|
1212
|
+
end
|
1213
|
+
|
1214
|
+
def melee1hp=(new)
|
1215
|
+
@npc["items"]["Melee1"][7] = new
|
1216
|
+
end
|
1217
|
+
|
1218
|
+
def melee2=(new)
|
1219
|
+
@npc["items"]["Melee2"][0] = new
|
1220
|
+
end
|
1221
|
+
|
1222
|
+
def melee2s=(new)
|
1223
|
+
self.c_skill("Melee2s", new)
|
1224
|
+
end
|
1225
|
+
|
1226
|
+
def melee2i=(new)
|
1227
|
+
@npc["items"]["Melee2"][4] = new
|
1228
|
+
end
|
1229
|
+
|
1230
|
+
def melee2o=(new)
|
1231
|
+
@npc["items"]["Melee2"][5] = new
|
1232
|
+
end
|
1233
|
+
|
1234
|
+
def melee2d=(new)
|
1235
|
+
@npc["items"]["Melee2"][6] = new
|
1236
|
+
end
|
1237
|
+
|
1238
|
+
def melee2dam=(new)
|
1239
|
+
@npc["items"]["Melee2"][3] = new
|
1240
|
+
end
|
1241
|
+
|
1242
|
+
def melee2hp=(new)
|
1243
|
+
@npc["items"]["Melee2"][7] = new
|
1244
|
+
end
|
1245
|
+
|
1246
|
+
def melee3=(new)
|
1247
|
+
@npc["items"]["Melee3"][0] = new
|
1248
|
+
end
|
1249
|
+
|
1250
|
+
def melee3s=(new)
|
1251
|
+
self.c_skill("Melee3s", new)
|
1252
|
+
end
|
1253
|
+
|
1254
|
+
def melee3i=(new)
|
1255
|
+
@npc["items"]["Melee3"][4] = new
|
1256
|
+
end
|
1257
|
+
|
1258
|
+
def melee3o=(new)
|
1259
|
+
@npc["items"]["Melee3"][5] = new
|
1260
|
+
end
|
1261
|
+
|
1262
|
+
def melee3d=(new)
|
1263
|
+
@npc["items"]["Melee3"][6] = new
|
1264
|
+
end
|
1265
|
+
|
1266
|
+
def melee3dam=(new)
|
1267
|
+
@npc["items"]["Melee3"][3] = new
|
1268
|
+
end
|
1269
|
+
|
1270
|
+
def melee3hp=(new)
|
1271
|
+
@npc["items"]["Melee3"][7] = new
|
1272
|
+
end
|
1273
|
+
|
1274
|
+
def missile1=(new)
|
1275
|
+
@npc["items"]["Missile1"][0] = new
|
1276
|
+
end
|
1277
|
+
|
1278
|
+
def missile1s=(new)
|
1279
|
+
self.c_skill("Missile1s", new)
|
1280
|
+
end
|
1281
|
+
|
1282
|
+
def missile1sr=(new)
|
1283
|
+
@npc["items"]["Missile1"][7] = new
|
1284
|
+
end
|
1285
|
+
|
1286
|
+
def missile1o=(new)
|
1287
|
+
@npc["items"]["Missile1"][4] = new
|
1288
|
+
end
|
1289
|
+
|
1290
|
+
def missile1dam=(new)
|
1291
|
+
@npc["items"]["Missile1"][3] = new
|
1292
|
+
end
|
1293
|
+
|
1294
|
+
def missile1rng=(new)
|
1295
|
+
@npc["items"]["Missile1"][5] = new
|
1296
|
+
end
|
1297
|
+
|
1298
|
+
def missile1rmax=(new)
|
1299
|
+
@npc["items"]["Missile1"][6] = new
|
1300
|
+
end
|
1301
|
+
|
1302
|
+
def missile2=(new)
|
1303
|
+
@npc["items"]["Missile2"][0] = new
|
1304
|
+
end
|
1305
|
+
|
1306
|
+
def missile2s=(new)
|
1307
|
+
self.c_skill("Missile2s", new)
|
1308
|
+
end
|
1309
|
+
|
1310
|
+
def missile2sr=(new)
|
1311
|
+
@npc["items"]["Missile2"][7] = new
|
1312
|
+
end
|
1313
|
+
|
1314
|
+
def missile2o=(new)
|
1315
|
+
@npc["items"]["Missile2"][4] = new
|
1316
|
+
end
|
1317
|
+
|
1318
|
+
def missile2dam=(new)
|
1319
|
+
@npc["items"]["Missile2"][3] = new
|
1320
|
+
end
|
1321
|
+
|
1322
|
+
def missile2rng=(new)
|
1323
|
+
@npc["items"]["Missile2"][5] = new
|
1324
|
+
end
|
1325
|
+
|
1326
|
+
def missile2rmax=(new)
|
1327
|
+
@npc["items"]["Missile2"][6] = new
|
1328
|
+
end
|
1329
|
+
|
1330
|
+
def maglore=(new)
|
1331
|
+
@npc["magick"]["maglore"] = new
|
1332
|
+
end
|
1333
|
+
|
1334
|
+
def sp_lore=(new)
|
1335
|
+
@npc["magick"]["splore"] = new
|
1336
|
+
end
|
1337
|
+
|
1338
|
+
def magtype1=(new)
|
1339
|
+
@npc["magick"]["magtype1"] = new
|
1340
|
+
end
|
1341
|
+
|
1342
|
+
def spell0=(key, new)
|
1343
|
+
@npc["magick"]["spells"][0][key] = new
|
1344
|
+
end
|
1345
|
+
|
1346
|
+
def spell1=(key, new)
|
1347
|
+
@npc["magick"]["spells"][1][key] = new
|
1348
|
+
end
|
1349
|
+
|
1350
|
+
def spell2=(key, new)
|
1351
|
+
@npc["magick"]["spells"][2][key] = new
|
1352
|
+
end
|
1353
|
+
|
1354
|
+
def spell3=(key, new)
|
1355
|
+
@npc["magick"]["spells"][3][key] = new
|
1356
|
+
end
|
1357
|
+
|
1358
|
+
def spell4=(key, new)
|
1359
|
+
@npc["magick"]["spells"][4][key] = new
|
1360
|
+
end
|
1361
|
+
|
1362
|
+
def spell5=(key, new)
|
1363
|
+
@npc["magick"]["spells"][5][key] = new
|
1364
|
+
end
|
1365
|
+
|
1366
|
+
def spell6=(key, new)
|
1367
|
+
@npc["magick"]["spells"][6][key] = new
|
1368
|
+
end
|
1369
|
+
|
1370
|
+
def spell7=(key, new)
|
1371
|
+
@npc["magick"]["spells"][7][key] = new
|
1372
|
+
end
|
1373
|
+
|
1374
|
+
def spell8=(key, new)
|
1375
|
+
@npc["magick"]["spells"][8][key] = new
|
1376
|
+
end
|
1377
|
+
|
1378
|
+
end
|