Quest for the Unicorn is a game belonging to the Rogue/Hack genre of games. In Quest you create a character and travel the lands of Halkanar in search of the long lost Unicorns. Quest is a very complex game containing not only the main quest, but many sub-quests. Quest contains over 60 different dungeons, many containing usefull items, or valuable information.
In the early 1980s I had acquired a Tandy-1000 computer and shortly afterwards I was given a copy of the game "Rogue." This game quickly ended up my favorite game at that time, at last I had some D&D-like game to play.
In late 1983 to early 1984 I had discovered and read "The Chronicles of Thomas Covenant" by Stephen R. Donaldson and was enamoured with the world those books took place in and thought that it would be a great setting for a computer game.
I had also just acquired Turbo Pascal 3.0 and wanted to learn Pascal. At this point all the interests converged and I began working on a game that was patterned after Rogue, but set in the world of "The Land", the place where all the action takes place in the "Thomas Covenant" books.
When I first started designing my new game, which would end up being titled: "The Land", I looked at the things that I did not like about Rogue, and came up with the following things:
Next I laid out my design goals for my game:
I began actually coding the game in mid 1984 and spent a year on the initial project. In mid 1985 version 1.0 was complete and I uploaded it to the local FIDO-Net BBS (Sacramento, CA). Within a week "The Land" had become the number one downloaded file and within 6 months it was spread across the globe, all in the pre-Internet age!
Several years later I had decided to make a new game based upon the codebase of "The Land", this time improving on some of the drawbacks in the original code. First, "The Land" had much of its data hard coded which made creating another game from the same engine really difficult. Second, "The Land" was my project for learning Pascal and contained a lot of bad coding practices. This new game would be completely original in its setting and was patterned after my real-world D&D campaigns that I had designed in the 70s. It was to include many of the towns and dungeons that I had used in my D&D and would take place in the same land, Halkanar.
My main design goals of this new game were:
I began coding the new game, as yet untitled, in early 1989. I took the original codebase from "The Land" and refactored it to remove any data used by the engine to exist entirely in the data files. Afterwards I worked on expanding the capabilities of the engine. After the main game engine had been reworked and layout of the world, including towns and dugneons. The upland world was 12 times larger than the world in "The Land" and contained over 60 dugeons and a dozen towns. Even tho there are a large number of dungeons, only about 5 were necessary to completing the main goal of the game. The rest contained useful items that if gone after would make the end goal easier.
The game was completed in 1990 and uploaded to my local BBS, again pre-Internet days here. "Quest for the Unicorn" underwent several revisions between 1990 and the mid 90s, mainly fixing bugs and adding a host of features as computer hardware became more capable. Sometime in the mid 90s the last version for MSDOS was released, version 2.1.2. A version 4.0 was created when I had upated my Turbo Pascal to a new version, but never publicly released.
In the mid-2000s I decided to port the codebase for "Quest" from Pascal to C, a project that took me nearly 2 years, working on it off and on. Version 5 was the first c version and was distributed only on my website in the late 2000s.
In 2010 I decided to take "Quest" back to its roots and patterend it more after the game "Rogue" by replacing the graphic tileset with an ascii graphics interface.
-d=depth | - | Set maximum dungeon depth (>1 and <=10) |
-h | - | Enable heroic mode |
-e | - | Enable epic mode |
-n | - | Enable normal mode |
-c | - | Casual mode |
-at | - | Enable auto target mode |
-nat | - | Disable auto target mode |
-apg | - | Turn on auto pickup gold |
-napg | - | Turn off auto pickup gold |
-apt | - | Turn on auto pickup torches |
-napt | - | Turn off auto pickup torches |
-aod | - | Auto open doors, will open doors when run into |
-naod | - | Turn off auto open doors |
-asw | - | Auto bump walls, perfroms <s>earch command when running into wall |
-nasw | - | Turn off auto bump walls |
-ac | - | Turn on arena combat mode |
-nac | - | Turn off arena combat mode |
-eds | - | Enable dungeon scaling |
-nds | - | Turn off dungeon scaling |
-fcd | - | Full combat damage between party and monsters |
-rcd | - | Reduced combat damage between party and monsters |
-mc=cnt | - | Number of monstes/groups that can spawn on a level |
-dr=ms | - | Delay for ranged combat visual effects |
-dh=ms | - | Delay for successful hit visual effects |
-dt=ms | - | Delay fro trap visual effects |
-w=width | - | Width of window (Graphics version only) |
-h=height | - | Height of window (Graphics version only) |
-m | - | Monochrome mode (Text version only) |
-clr | - | Color mode (Text version only) |
-s | - | Show stats/settings and exit |
Long option | Equivalent to short option |
ArenaCombat | -ac |
AutoOpenDoors | -aod |
AutoPickupGold | -apg |
AutoPickupTorch | -apt |
AutoSearchWalls | -asw |
AutoTarget | -at |
Casual | -c |
Color | -clr |
DungeonScaling | -eds |
Epic | -e |
FullPartyCombat | -fcd |
Heroic | -h |
Monochrome | -m |
NoArenaComabe | -nac |
NoAutoOpenDoors | -naod |
NoAutoPickupgold | -napg |
NoAutoPickuptorch | -napt |
NoAutoSearchWalls | -nasw |
NoAutoTarget | -nat |
NoDungeonScaling | -nds |
NoFullPartyCombat | -rcd |
Normal | -n |
ShowStats | -s |
DelayHit | -dh |
DelayTraps | -dt |
DelayRanged | -dr |
Depth | -d |
MonsterCount | -mc |
Width | -w |
Height | -h |
downgradedepth depth | Permenently change the maximum depth in a saved game |
downgradearena | Permenently turn off the arena comabe mode in a saved game. |
FKeyGear | Unshifted F keys select gear |
FKeyMacros | Unshifted F keys select macros |
FKeySpells | Unshifted F keys select spells |
FKeyWeapons | Unshifted F keys select weapons |
Fn=macro | Assigne Fn macro (Ex. F1=Rs) |
note: Switches -d, -c, -h, -e, -mc, and -ac, -nac only have an effect on a new game. These switches will have no effect on a game that is loaded. A loaded game will have the modes set when the character was created.
note: Using -downgradedepth can only make dungeons shallower to a minimum depth of 2. You cannot specify a depth that is greater than what the save file is currently set to.
note: Using -downgradearena allows you to permenently turn off the arena combat mode in a saved game. Once it is turned off you cannot turn it back on.
WARNING! There is a downside to decreasing the dungeon depth, turning off arena combat mode or decreasing the monster spawn rate in that with fewer monsters to fight you will gain levels at a slower rate and also with fewer battles means fewer drops and fewer chances to have that really special piece of gear drop.
Normal - This is the standard mode. Players qualify for scores as well as rebirth. Monsters are at the normal level. Permadeath is active in this mode.
Heroic - This is meant to give more of a challenge. This mode also qualifies for scoring and rebirth. Monsters are double the strength of those in normal mode. When a score is recorded in the heroic mode the exp field will be shown in red to show that the score was obtained in heroic mode. Like normal, permadeath is active in this mode.
Epic - This is an even tougher game. This mode qualifies for scoring and rebirth. Monsters in this mode are 4 times stronger than those in normal mode. When a score is recorded in the epic mode the exp field will be shown in purple to show that the score was obtained in epic mode. Like normal, permadeath is active in this mode.
Casual - This is meant for a more casual game. In this mode permadeath is not active. If you die you can reload from your last save. As a consequence of playing in this mode no scores will be recorded and you will not qualify for the Ritual of Rebirth.
The mode is set when the character is created. If the -h, -e, or -c command line switch was provided when the program is run for a new character then the mode of the character will be set to the appropriate switch. After the character is created there is no longer a need to provide the mode switch when starting the game, it is automatically recorded in the character data.
8 | - | Move up |
2 | - | Move down |
4 | - | Move left |
6 | - | Move Right |
7 | - | Move up and left |
9 | - | Move up and right |
1 | - | Move down and left |
3 | - | Move down and right |
i | - | Show inventory |
Q | - | Quit, no save |
X | - | Exit with save |
> | - | Enter dungeon or town |
e | - | Eat |
h | - | Hunt for food |
E | - | Enter/Exit a ship |
R | - | Show player record |
{ | - | Save weapon set |
[ | - | Recall weapon set |
} | - | Save gear set |
] | - | Recall gear set |
? | - | List commands |
8 | - | Move up |
2 | - | Move down |
4 | - | Move left |
6 | - | Move Right |
7 | - | Move up and left |
9 | - | Move up and right |
1 | - | Move down and left |
3 | - | Move down and right |
5 | - | Run |
Q | - | Quit, no save. note: This will abandon the character |
X | - | Exit with save |
> | - | Down level |
< | - | Up level |
s | - | Search |
o | - | Open a door |
c | - | Close a door |
J | - | Jam a door closed |
i | - | Show inventory |
g | - | Get an item |
q | - | Show quest log |
u | - | Use an item |
E | - | Enter/Exit a ship |
f | - | Fire weapon in right hand |
m | - | Cast a magic spell |
M | - | Show mini map (Text version only) |
n | - | Take a Nap |
t | - | Talk to an adjacent character |
T | - | Throw an item |
j | - | Join another member to your party |
p | - | Party commands |
l | - | Light a torch |
L | - | Show message log |
w | - | Say a Word of Power |
b | - | Buy an item (Must be standing near a merchant) |
S | - | Save and exit |
R | - | Show player record |
H | - | Show icons |
x | - | Transcribe spell |
- | - | Throw left hand |
= | - | Throw right hand |
{ | - | Save weapon set |
[ | - | Recall weapon set |
} | - | Save gear set |
] | - | Recall gear set |
? | - | Show commands |
8 | - | Move up |
2 | - | Move down |
4 | - | Move left |
6 | - | Move Right |
7 | - | Move up and left |
9 | - | Move up and right |
1 | - | Move down and left |
3 | - | Move down and right |
i | - | Show inventory |
g | - | Get an item |
u | - | Use an item |
f | - | Fire weapon in right hand |
m | - | Cast a magic spell |
T | - | Throw an item |
p | - | Party commands |
V | - | Turn sound on/off |
R | - | Show player record |
H | - | Show icons |
- | - | Throw left hand |
= | - | Throw right hand |
{ | - | Save weapon set |
[ | - | Recall weapon set |
} | - | Save gear set |
] | - | Recall gear set |
? | - | Show commands |
Mode | Fkey | Shifted | Ctrl | Alt |
----------- | ------------ | ------------ | ------ | ------------ |
FKeySpells | Spells | Save Weapons | Macros | Load Weapons |
FKeyWeapons | Load Weapons | Save Weapons | Macros | Spells |
FKeyGear | Load Gear | Save Gear | Macros | Spells |
FKeyMacros | Macros | Save Weapons | Spells | Load Weapons |
L | - | The player has light |
S | - | The player is shielded (protection effects from used items) |
P | - | The player is poisoned |
H | - | The player is hasted |
G | - | The player is under the effects of Giant Strength |
F | - | The player has resistance to fire |
C | - | The player has resistance to cold |
Z | - | The player has resistance to electricity |
A | - | The player has resistance to arcane |
V | - | The player is levitating |
M | - | The player has resistance to mind attacks |
E | - | The player is ethereal |
e | - | The player is ethereal, but the effect is about to run out |
Macros at this time can only be defined within the .cfg files, either the global unicorn.cfg or a character .cfg. Note that like other options, a character .cfg that defines macros will override macros assigned to the same keys defined in unicorn.cfg. This allows you to define macros that can be used globally amongst all your characters, and others that are character specific.
Here is a sample .cfg file from one of my paladins that shows how to create macros:
FKeyMacros
M1=[1
M2=[2
M3=[3
M4=[4
M5=mf$E
M6=mp$E
M9=ms$E
M10=mc$E
The FKeyMacros line specifies that I want the unshifted F keys to be assigned to the macros instead of spells. Normally macros are executed with <CTRL><Fkey>.
The other lines define my macros. M1 through M4 give me single key access to 4 different weapon sets in my gear manager. M5 gives me single key cast of Find Traps spell, M6 will cast Protection From Evil, M9 will cast Slow Poison, and M10 will cast Cure Light Wounds.
Notice how the macro definition is just simply the keys you would normally press inside the game. The only difference is the $E, when the macro expander sees the $E it actually replaces it with the <Enter> key, and $e will be replaced by the <Esc> key. To specify arrows, just use the number pad number equivalent, for example left arrow would be 4, right arrow would be 6.
Let me also explain about my spell casts. When you use the <m>agic command, you only need to type enough letters to make the spell name unique, the rest of the name will come up automatically. In the case of my paladin, he only knows those particular 4 spells and so only needs to type the first letter of each spell for it to be unique. When my paladin learns Cure Serious Wounds, then my F10 macro will no longer work, since c is no longer capable of identifiying a complete spell. In which case I will have to change my F10 macro, if I want to keep it as Cure Light Wounds, then I would change the macro line to read:
M10=mcure l$E
Macros can be executed in towns, dungeons, or arena combats. They cannot be used upland, as the F keys have special meaning upland if you possess a particular artifact. Macros also cannot be triggerd in subscreens (inventory, character record, etc). However, if you want a macro to do something with your inventory, you can put in your macro the ability to enter inventory and do something. For example, you could create a macro like this:
M8=uj$Ec$E
If you keep an identification item in slot j (Belt Back), then this macro will allow you to identify the item in slot c (Left Shoulder), just by pressint <CTRL> <F8>, or just <F8> if you are using FKeyMacros.
Another good use of macros is if you have a piece of gear that grants you a special action when worn, but you do not want that piece of gear worn all the time. For example, on one of my characters I have a Robe of Eyes, but its protection value is not as good as my main cloak, but I would like to use the power of the Robe of Eyes when entering a new dungeon level. I have this macro defined:
M9=uqT84$E$EiqT84$E$e
This macro equips the cloak that I have in the last slot of my pack, uses it and then swaps it back for my main cloak. Now all I have to do is press <F9> and I have single key access to the power of the Robe of Eyes, while not having to move gear around manually to use it.
So, macros can only be triggered from the main screen, but macros can go into subscreens to do things.
There is also one more place that a macro can be executed, and that is during name entry on new character creation. I have in my unicorn.cfg macros like this:
M10=$Em22444444424444442226268884444444$E
I can hit F10 after entering my new characters name (Before pressing <ENTER>!) and the macro will hit all the remaining keys to build me a male elf paladin with stats appropriate for a paladin. I have such macros for all the base classes. When I want to start a new character all I need to do is enter the name and press the F key for the class that I want to build.
<8><Up Arrow> | - | Move the selection cursor up, will scroll if there are more items above. |
<2><Dn Arrow> | - | Move the selection cursor down, will scroll if there are more items below. |
<9><PgUp> | - | Will scroll upwards one page worth of items. |
<2><PgDn> | - | Will scroll downwards one page worth of items. |
<7><Home> | - | Move to the first page of items. |
<1><End> | - | Move to the last page of items. |
<I> | - | Pull up the info card for the selected item. |
<Enter> | - | Purchase selected item. |
The <a> through <r> keys will also instantly move the selection arrows to the row marked by the appropriate key.
In addition to the persistant maps, dungeon contents (items laying on the floor and living mobs) will remain persistant until the dungeon is reset. So if you left an item and some mobs on level 1, leave the level and come back, you will find level 1 exactly how you left it, the items will still be there and the same mobs will be there. Mobs are now spanwed only when the dungeon is reset, so you can even leave the dungeon, go to town, and come back and the dungeon will be just how you left it, mobs, items, explored territory will all be as you left it.
A dungeon is reset under two condtions, either entering it for the first time or if you visited a different dungeon prior to reentering a dungeon. so you can leave, come back, leave, come back, all you want and the dungeon will stay how you left it so long as you do not enter another dungeon, at which point a reset will occur.
When a dungeon resets all items and mobs currently in the dungeon will be removed and all levels of the dungeon will spawn new random mobs. You will also forget any explored territory in a reset dungeon and must explore it again. Of course if you drew maps of the dungeon floors, you should have no difficulty finding your way around.
The following new commands have been added with the gear manager and may be used in dungeons, arena combat mode, and upland:
{ | - | Save just your main and off hands to a specified gear slot |
[ | - | Recall just your main and off hands from a specified gear slot |
} | - | Save all equipment to a specified gear slot |
] | - | Recall all equipment from a specified gear slot |
When using any of these commands you will receive a prompt for which gear slot is to be used, 0 through 9.
The weapon equipped in the offhand position will only do 50% of its normal damage. While dual wielding weapons your shield will not contribute to your armor rating. Any enchantments or socket effect on your shield will still work.
Strength | - | Increases melee damage |
Dexterity | - | Increases chance to hit/chance to dodge |
Intelligence | - | Increases chance to hit with magic |
Wisdom | - | Increases mana regeneration |
Constitution | - | Increases health regeneration |
Charisma | - | Improves haggling with vendors |
Spell name entry has been made as easy to swallow as possible, start type the name of your spell, as soon as the computer can see your character string as a unique spell name, it will come up with the rest of the name for you, if this is the spell you wish to cast, just press <ENTER>, otherwise you can press the backspace to continue entering a name.
The spell "Sticks to Snakes" works only in the combat mode and not in the standard dungeon mode. so dont cast this spell unless you are in the combat mode.
To socket a gem or jewel into a socketed item, <U>se the gem or jewel and then select the item in the inventory screen that you want to socket with the gem. An item can have a maximum of 3 sockets, once all the sockets on an item are full, you cannot add any more socketable items.
STR+ | - | Increases strength |
DEX+ | - | Increases dexterity |
INT+ | - | Increases intelligence |
WIS+ | - | Increases wisdom |
CON+ | - | Increases constitution |
CHR+ | - | Increases charisma |
Mp+ | - | Increases mana |
Hp+ | - | Increases health |
AP+ | - | Increases attack power |
DEF+ | - | Increases armour protection |
Hit+ | - | Incrases chance to hit |
HpR+ | - | Increases health regeneration rate |
MnR+ | - | Increases mana regeneration rate |
All+ | - | Increases all base stats |
Exp+ | - | Increases experience gained |
MF+ | - | Increases chance to find rarer items |
Hp/Mp+ | - | Increases both health and mana points |
MGR+ | - | Increases magic resistance |
MLV+ | - | Increases monster level |
CRT+ | - | Increases chance for critical damage |
DDG+ | - | Increases dodge chance |
SPP+ | - | Increases spell power |
Unidentified | Cyan |
Common | Gray |
Uncommon | White |
Rare | Green |
Very Rare | Blue |
Utra Rare | Purple |
Legendary/Unique | Yellow |
Rarity | Base Chance | Increase per point of Lore |
Common | 100.000% | |
Uncommon | 25.000% | 5.000% |
Rare | 2.500% | 0.100% |
Very Rare | 0.250% | 0.015% |
Ultra Rare | 0.025% | 0.002% |
Why would you want to do rebirth? Simply put you get to start over with all your current inventory! So if you found some powerful gear you can start the game over already possessing that gear. This allows you to complete the game quicker and therefore place higher on the Hall of Legends score table. In addition to this every rebirth adds to your magic find stat making it easier to find that better gear!
During rebirth you will not lose any trophies you have already collected, but any progress towards trophies you have not yet acquired will be reset and you will have to begin your journey towards those trophies again.
Any quest rewards or items will be removed from your inventory during rebirth, so if you have any quest items belonging to object quests, you may want to consider not performing a rebirth until after completing the object quest. There is an exception to this, one of the object quests requires a large number of components, these components are not considered quest objects and will not be removed. It should be fairly obvious which items these are. Objects acquired as the result of an object quest are not considered quest objects and will not be removed by rebirth.
In order to perform the Ritual of Rebirth, visit any druidic temple. If you qualify for the ritual it will appear as one of the options. In order to qualify you must have completed the main goal of the game and not be playing in casual mode.
Legends | This table contains the highest level attained by class. This table is pre-filled with a selection of NPCs. |
High Scores | This table holds the highest level attained by class. This table starts empty. |
Hall of Legends | This table holds those heroes who have actually completed the main goal of the game. |
Hall of Remembrance | This table holds those heroes who have fallen. |