-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
568 lines (437 loc) · 22.5 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
KQ - the console-style roleplaying game
=======================================
KQ is a open-sourced CRPG, with eight characters, over twenty maps,
countless item, spells and enemies, all accompanied by music and sound
effects.
The majority of KQ was developed by JB, until he abandoned it in
Autumn 2002. Due to the wonders of open source, it was rescued by a
team from the Allegro community (http://www.allegro.cc/), including
Peter, 23yrold3yrold, ReyBrujo, Dudaskank, Konforce and Mr Troy, later to
be joined by Team Terradactyl, Steven Fullmer and MasterGoodbytes.
Thanks also are due to:
Sam Hocevar for several fixes and for being the Debian package maintainer
Edge for porting KQ to BeOS, and (with Caz Jones) fixing the joystick code
on that platform.
Building Instructions
=====================
You will need Allegro 4.0 or above, Lua 5.0 or above, DUMB 0.92 or
above. Most of our work was done with the GCC compiler (also known as
MinGW on Windows, DJGPP on DOS). The code should compile on Microsoft
Visual C, but we haven't any project files for it.
Ubuntu:
--------
apt-get install liballegro4-dev
apt-get install libaldmb1-dev
apt install liblua5.3-dev
apt install lua5.3
On Windows:
----------
fix.bat mingw
make depend
make
On Windows in cygwin environment:
----------
./configure
make
On DOS:
-------
fix.bat djgpp
make depend
make
On Mac OS X:
------------
./configure
make
On Linux:
---------
./configure
make
If you have the CVS version, you'll need to do some preparatory work
on Linux and OSX. Type
autoreconf -i
Then ./configure, make as above.
Cheating and Debugging:
==========
To build KQ with support for cheating and debugging, configure with
this command:
./configure --enable-debug --enable-cheats CFLAGS="-g -O0" OBJCFLAGS="-g -O0"
Setting the CFLAGS and OBJCFLAGS are necessary if you want to debug KQ
in gdb, or a similar debugger. Otherwise, the code will appear to jump
around as you step through it. For more info on cheating, see:
http://kqlives.sourceforge.net/index.php/HowToCheat
==========
Without further ado, over to JB: (some of his comments about directory
structure are now out of date)
---------------
Hello.
Disclaimer:
-----------
I just want to point out that this software comes with no warranty at
all, and none is implied. I can not be held responsible for anything
that happens as a result of your use of this software... you are 100%
liable for anything you do with it. These conditions apply regardless
of whether or not you took the time to read this.
----------------------------------------------------------------------
Final word from me ---------------------------------------------------
Well, since I'm done developing this guy I guess I should give some
information as to what I was doing. All you really need to know is
what all of this crap under the main directory is for. Under the
'kqdev' structure are several directories (assuming you unzipped
the archive properly and preserved the directory structure).
kqdev
--- data ---
This includes the data files... all of the WAVs and PCXs are in
the .dat files. The other two files suffixed .mon are enemy data
files and they are just space delimited text files and could be
easily read into a spreadsheet program if you wanted.
--- maps ---
This contains the map files, the mapdraw.c source file for the
mapdraw program and the PCXs for the tilesets... these tileset PCXs are
copies of the ones in the 'mpcx.dat' file in the 'data' directory.
These PCX files are important for another reason as well since they use
the KQ palette. I didn't bother including a palette file of any kind,
because all of the paint programs probably use different formats.
--- music ---
These are the music files used by KQ... a couple of them are unused,
but I was too lazy to bother getting rid of them.
--- other ---
This directory contains a good deal of the game data from 'res.c'
in comma delimited files for easy editing in a spreadsheet program.
If you edit the files, you simply save your changes in comma
delimited format and then just feed them into the perl script to
parse them into a nice format that can be cut and paste into 'res.c'
(which is where all of the source-imbedded game data is kept).
If you don't have perl, your best bet is to just edit the 'res.c'
file. To parse each .csv file just use the kq2h.pl script in this
directory:
perl kq2h.pl filename.csv > whatever.txt
The cut and paste from this .txt file into res.c.
--- saves ---
This should be empty except for a sgupdate.c file which is the
source for the saved game converter program.
--- scripts ---
This directory contains the .lob object files used by the game and
the .lua files that were compiled into the .lob files. Important
to note is that the .lua files under the scripts directory
contain 'macros' and need to be pre-processed using the progress.h
and itemdefs.h files from the parent directory. I have a crappy
perl script called prep.pl that will do this. To compile a .lua
script into a .lob file, do the following if you have perl:
perl prep.pl < filename.lua > temp.tmp
luac -o filename.lob temp.tmp
I tried piping under DOS, but it wasn't working quite right. Just
try it yourself if you like.
If you don't have perl, there is a 'pscripts' directory under the
'scripts' directory that contains all of the .lua files, but without
macros in them. Then you can compile these by just doing this:
luac -o filename.lob filename.lua
If you don't use DOS for doing this, things might be slightly
different for you.
That's about it... just make sure you have the following:
- allegro 4.0 or higher (I assume)
- JGMOD 0.98 or higher (I assume)
- Lua 4.0 or higher (I assume)
And, since it's GPL'd you can do whatever you want the source, but
I really could care less. You can contact me if there are problems
with the .zip or anything of that nature, but I most likely won't
respond to questions about the game itself or things like that...
you're on your own.
Again, I am sorry that I couldn't finish it, but as strange as it may
sound, it's a good thing for me that I don't feel like doing this
anymore... it means my life has gotten better.
/jb ([email protected])
----------------------------------------------------------------------
Release version 0.91
What's new - 06/07/2002 ----------------------------------------------
- Fixed up all of miscellaneous stuff which consisted mainly of
tweaks and minor bug fixes.
- Built the saved game converter.
- Removed the need for the game.sav (game.dat) file for saved games.
- This makes the engine complete except for combos and perhaps once
again trying to put entities in for random encounters (as opposed to
being attacked by invisible assailants). Oh, and I guess I need to
make the joystick stuff configurable through the config menu.
What's new - 05/23/2002 ----------------------------------------------
- Added joystick support. It's not configurable yet, but it should
work. The only problem is that I haven't fully tested it yet. I have
a 6-button gamepad, but Allegro is detecting it as a two button one
and KQ is made to not recognize any sticks with less than 4 buttons :)
What's new - 05/06/2002 ----------------------------------------------
- A scripter... a working one... Lua. It works really well. I am
using it similar to the way I was using separate map sources though.
I put all events and such into set functions so that I know what to
call from the actual C program. It's not so smart, but it works. I
may use the scripter to do other things like spell and item effects,
but no guarantee. I will need to write up some documentation for the
scripter in case anybody ever tries to use it.
- Note: Lua rocks!
What's new - 03/11/2002 ----------------------------------------------
- Well, I finally got back to work on the game and fixed a bunch of
stuff. What did I fix you ask? Well, I mostly took out stuff that
I had put in. Between the date below and the this date I added quite
a bit of new stuff. However, over the last couple of days, I have
removed most of it and finalized everything else. I had a scripter
(for the second time), but that was removed. I had battle party
sizes of four and three at certain points, and even had it possible
to have all eight characters in the party at one time (with only
four going to fight at once however). I had implemented a materia
like system using the name 'sparks'. I even had removed random
encounters and put in entities that you could fight or avoid as you
saw fit (this didn't work that great anyways). Why did i remove all
this stuff though? I had to. With everything I had done, I found
that I was losing interest in the game. I even got to a point where
I thought I would forget about it and condemn KQ to the RPG
graveyard. Now I'm back at it, and I've begun work on the remaining
bits of the actual game itself (as opposed to the engine). Oh,
actually I did leave a couple of things in. I'll list the changes
between the last version and this one so far:
- shared inventory. No more individual inventories and swapping
items back and forth.
- changes to the text boxes and their location. The boxes are more
or less auto-sized to fit the text and they are moved around to
indicate who is speaking. There is also a slightly different text
box that is used to indicate that the speaker is 'thinking' and not
actually speaking. The text box font is different as well.
- page numbers on item and spell lists. Best of all, the page
numbers match inside combat and outside. If you put Sleep at the top
of page 3 outside of combat, when you access your spell list inside
of battle, Sleep will be at the top of page 3.
- hero attack animations. They're pretty minimal, but at least it's
something.
- hp/mp bars (in addition to numerical displays) inside combat. This
is like FF7.
- removed the 'Cast' menu option. This option simply gave you a list
of only the spells that the character could cast according to current
hp level and location. Now, you just double-select a spell in the
'Magic' menu to cast it and the spells that you are able to cast are
highlighted.
- minor graphical changes
- code changes for efficiency or convienence reasons
----------------------------------------------------------------------
Default Game controls ------------------------------------------------
Note: These controls are customizable in 'setup.cfg'... as are
various other options.
arrow keys - use these for moving around and navigating menus.
ALT - This is the confirmation key. Use this to choose menu options,
talk to people, activate things, etc.
CTRL - This is the cancel key. This will let you back out of menus or
exit from certain options.
ENTER - This brings up the character menu.
ESC - This brings up the system menu.
Menus ----------------------------------------------------------------
Now, on with the main screen, or map screen (whatever). This is the
screen where you see everything happening and where you travel around.
From this screen you can activate a couple of menus. The first menu
we will call the system menu. It is merely a small menu in the upper
left corner which allows you to Save or Exit the game. Please note,
that you normally can't save in towns or dungeons, and so the Save
option might be grayed out. The system menu also contains a Config
option which let's you change various things... check them out for
yourself as the menu contains descriptions of what each options does.
The other menu that you can activate is the character menu. This is
the menu that lets you look at your party and status and where you can
use items and magic.
The menu options (and what they do) are as follows:
Items:
-----
This shows you the list of a characters items. The party's items
are pooled, meaning that there is only one inventory which both
party members share. By default, when you first bring up the
menu, you are in 'Use' mode. If you select an item, you will use it.
Only items that are usable outside of combat can be used. If you
press the cancel button, you will go to the little menu, which lets
you choose 'Use', 'Sort' or 'Drop'... or if you press the cancel
button again you will leave the item menu. If you choose 'Sort',
the items in inventory will be joined and sorted by type. Choosing
'Drop' allows you to select items to get rid of... this requires
you to choose how many to drop (if there is more than one of the
item) and to confirm that you really want to drop it.
Magic:
------
This option brings up a list of the spells that you have in your
grimoire. You can have up to 60 spells. The spells are organized
into pages... 5 pages of 12 spells each.
If you press ALT, and select a spell, the cursor will turn white.
Now you can move the white cursor to a new location and the spell will
go there instead. If there is a spell in the new location, the spells
will be swapped.
If you press ALT, and select a spell, and then press ALT again, it
will attempt to cast the spell. If the spell can not be cast outside
of combat you will be beeped!
Equip:
------
This option leads to the equip screen. This screen is broken into
three sections; the equipped items section (top), the item inventory
section (bottom left), and the preview section (bottom right).
The equipped items section shows what your character already has on.
The possible slots are Hand1 (weapon), Hand2 (shield or nothing if
weapon is two-handed), Head (helmets and caps), Body (armors, robes,
or suits), Arms (guantlets, bracers, or gloves), and Other (special
items like rings, cloaks, etc).
When you enter the equip menu, you are presented with four choices:
Equip:
You select this and then you can cycle through the equipment slots. As
you move through the list of equipment slots, the inventory window will
indicate what items of that type you have in inventory. If you select
an equip slot you will be taken to the inventory window where you can
go through the list of compatible items. The effects each item will
have on your stats shows up in the preview window as you cycle through
them. If you have no available items that can be equipped in the
selected slot, you will be beeped.
Optimize:
Just like it says, this will equip your character with the best
equipment possible. Take note though, that this method is not
fool proof... always check over what has been selected for you.
Weapons are selected based on damage alone. However, the bonus
damage that you cause due to your stats is not reflected in this
decision. The various armors (shields, headgear, body armor, and
arm-guards) are selected for defense and magic defense benefits only.
Relics are chosen for their overall effect to all stats...
including resistance. With the exception of Relics, always keep an
eye on how new equipment affects your Aura/Spirit... this is
especially important for heavy magic-users.
Remove:
This works similar to equip. You move along the equipment slots and
as you do, the effects of de-equipping the item in that slot are
indicated in the preview window. Selecting a slot removes the item...
as long as you have room in your inventory.
Empty:
This simply removes all equipment as long as there is room in your
inventory.
Spec:
-----
This shows a list of items which are special. In essence, these
are items that I did not want to leave in the character's
inventory as they are generally essential to the story. That way
they can't be dropped or sold. A description of each item is
listed at the bottom as you scroll through the list.
Stats:
------
Quite simply, this option shows the status screen for a character.
The stats are explained as follows:
Exp: your current experience.
Next: the experience you need to rise to the next level.
Strength: influences hit and damage done with most weapons.
Agility: influences hit, evade and damage done with spears
and daggers.
Vitality: influences defense and hp increases at level up.
Intellect: influences magic defense and mp increases at level up.
Also affects aura magic attack strength.
Sagacity: influences magic defense and mp increases at level up.
Also affects spirit magic attack strength.
Aura: this is your ability with aura based magic (mostly damage and
negative effect spells).
Spirit: this is your ability with spirit based magic (healing spells,
positive effect spells, and a couple of damage spells).
Attack: your damage potential... the higher the better.
Hit: the higher this is, the less likely you are to miss.
Defense: the higher this is, the less damage you take from attacks.
Evade: the higher this is, the less likely you are to be hit.
MagDef: the higher this is, the less damage you take from magic.
On the top right are your resistance ratings. The ratings are as
follows:
- a rating less than 0 means you are weak against that element. If
you are weak against an element, red bars will appear beside it.
Being weak against an element increases damage taken by the the
indicated amount. For example, three red bars would mean an attack
from that element would do 130% normal damage.
You can not be weak against the last seven elements because they are
status ailments and do not do damage.
- a rating of 0 to 10 indicates normal resistance and will show up as
green bars beside the element. A rating of 0 is normal and a rating of
10 indicates full immunity to that element (0 damage).
- a rating above 10 means that you are so strong against that element
that you absorb damage from such attacks. If this is the case, blue
bars will be shown and indicate how much you absorb. For example,
four blue bars would indicate that you absorb 40% of the damage
taken. You can't absorb the last seven elements as they do not
cause damage.
Below the resistance ratings is your list of equipment for quick
referral purposes.
Shop menus:
----------
The menus are pretty straight-forward except for a couple of little
things.
At the bottom of the screen, there are boxes with each party member in
them. If you highlight a weapon or a piece of armor the difference
between that weapon/armor and anything you are currently using/wearing
will show up as a reference. You will also see if you already have
the item equipped or are carrying it.
When buying spells, it will tell you if you know that spell and/or
whether you are carrying it.
When buying items, it will tell you if you are carrying any of the
items you are looking at.
The other thing is that when you are buying, if you press right you
can increase the quantity that you want to buy (up to 9). And then,
by pressing left you can decrease the quantity (down to 1 minimum).
Also note that shops carried limited quantities of items. These items
generally replenish over time, but some do not. If you sell items to
a shop that normally carries them, it will add that quantity to it's
inventory (up to the normal max that the shop carries).
Combat ---------------------------------------------------------------
Combat is pretty straight forward. You have one or two characters and
you will encounter one to five enemies. Sometimes they will surprise
you and get a free attack and sometimes you will suprise them and get
a free attack. Most of the time, surprise is not a factor.
The battle works mock real-time. Each combatant has a speed rating
and a speed bar, but there are still rounds for the purpose of
handling spell durations and such.
The enemies attack normally, use magic, or use special abilities.
Your guys can do the following:
Attack - a normal attack using whatever weapon you have.
Spell - cast a spell. The spells are presented in pages. The pages
appear in the same order as outside combat. Any spell that can't be
cast in combat, or you don't have enough mp for will be greyed out.
A note about targetting spells: some spells can be cast on one target
or all of them (or one ally or both). Just press up or down to target
all and then up or down again to go back to just one target.
Selecting multiple targets decreases the damage done accordingly.
Item - use an item. You can use most of the items in combat that you
could use outside of combat, plus a few extras. Items that can not
be used are greyed out.
Invoke - this option will allow you to use any of your equipped gear
in combat. Some items have special powers that can only be used this
way and only if you've got them equipped. Invokable items will be
in white.
Defend - this foregoes your attack so that you may better defend
yourself and reduce damage taken.
Run - this attempts to flee from combat. Doesn't always work. The
odds of running are higher if all of the enemies have already attacked.
If you surprise the enemy you can run automatically. Agility is the
key to running... and a little luck.
'Skill' - each character has a special ability that can be used in
combat only. The ability might not show up due to certain
circumstances.
Rage: increased attack power for one attack. If the attack is fatal,
the attacker will continue on to the next opponent. After the attack
is done, the attacker suffers damage.
Sweep: an attack made against all opponents. The attack is less strong
than a regular attack. Can only be used when there is two or more
opponents to attack.
Infuse: the caster can cast a spell on him/herself that imbue's him/her
with elemental properties based on the spell. This can be done once
per combat and only works with elemental type spells.
Prayer: this skill is used multiple times. If any of the opponents are
undead, this skill will try to dispel them. If none of the opponents are
undead, then this skill heals the entire party by a random amount.
Boost: this skill is usable once per combat and allows the caster to cast
a single spell as if his/her aura and spirit were 150% higher than normal.
However, a boosted spell also takes 150% normal mp.
Cover: this ability is similar to Defend, but the Covering hero will block
any attacks made against his/her partner as well. This is usable throughout
an entire combat.
Steal: this allows the hero using the skill to try and steal an item from an
enemy. Each enemy has up to two items that can be stolen. The first item is
a common one and if the steal is successful, there is a 95% chance that the
common item is stolen. If there is a rare item, there is only a 5% chance for
it to be taken. The chance to steal is based on the hero's level. Steal is
re-usable throughout combat.
Sense: this allows a hero to view some information about an enemy. The
information that can be uncovered is hp, maxhp, mp, maxmp, and elemental
resistances. This is re-usable throughout combat.
Conclusion ------------------------------------------------------------
That's about it for any explanations.
Just wander around, talk to people, explore things and look for bugs.
If you find a bug, just describe it and send mail to:
Thanks.