2015-08-08 13:57:52 +00:00
2016-01-02 10:09:13 +00:00
// --- help ---
2015-08-08 13:57:52 +00:00
const char * wormdes =
2016-01-02 10:09:13 +00:00
" These huge monsters normally live below the sand, but your movements have "
" disturbed them. They are too big to be slain with your "
" weapons, but you can defeat them by making them unable to move. "
" This also produces some Spice. They move two times slower than you. " ;
2015-08-08 13:57:52 +00:00
const char * cocytushelp =
2016-01-02 10:09:13 +00:00
" This frozen lake is a hellish version of the Icy Land. Now, your body heat melts the floor, not the walls. " ;
2015-08-08 13:57:52 +00:00
const char * tentdes =
2016-01-02 10:09:13 +00:00
" The tentacles of Cthulhu are like sandworms, but longer. "
" They also withdraw one cell at a time, instead of exploding instantly. " ;
2015-08-08 13:57:52 +00:00
const char * gameboardhelp =
2016-01-02 10:09:13 +00:00
" Ever wondered how some boardgame would look on the hyperbolic plane? "
" I wondered about Go, so I have created this feature. Now you can try yourself! \n "
" Enter = pick up an item (and score), space = clear an item \n "
" Other keys place orbs and terrain features of various kinds \n "
2015-08-08 13:57:52 +00:00
" In the periodic editor, press 0-4 to switch walls in different ways \n "
;
const char * ivydes =
2016-01-02 10:09:13 +00:00
" A huge plant growing in the Jungle. Each Ivy has many branches, "
" and one branch grows per each of your moves. Branches grow in a clockwise "
" order. The root itself is vulnerable. " ;
2015-08-08 13:57:52 +00:00
const char * slimehelp =
2016-01-02 10:09:13 +00:00
" The Alchemists produce magical potions from pools of blue and red slime. You "
" can go through these pools, but you cannot move from a blue pool to a red "
" pool, or vice versa. Pools containing items count as colorless, and "
" they change color to the PC's previous color when the item is picked up. "
" Slime beasts also have to keep to their own color, "
" but when they are killed, they explode, destroying items and changing "
" the color of the slime and slime beasts around them. " ;
2015-08-08 13:57:52 +00:00
const char * gdemonhelp =
2016-01-02 10:09:13 +00:00
" These creatures are slow, but very powerful... more powerful than you. "
" You need some more experience in demon fighting before you will be able to defeat them. "
" Even then, you will be able to slay this one, but more powerful demons will come... \n \n "
" Each 10 lesser demons you kill, you become powerful enough to kill all the greater "
" demons on the screen, effectively turning them into lesser demons. " ;
2015-08-08 13:57:52 +00:00
const char * ldemonhelp =
2016-01-02 10:09:13 +00:00
" These creatures are slow, but they often appear in large numbers. " ;
2015-08-08 13:57:52 +00:00
const char * trollhelp =
2016-01-02 10:09:13 +00:00
" A big monster from the Living Caves. A dead Troll will be reunited "
" with the rocks, causing some walls to grow around its body. " ;
const char * trollhelp2 =
" Additionally, all items around the killed Troll will be destroyed. " ;
2015-08-08 13:57:52 +00:00
const char * camelothelp =
" The Knights of the Round Table are the greatest warriors of these lands. "
" They are not very inventive with names though, as they call each of their "
" castles Camelot. "
" You are probably worth of joining them, but they will surely give you "
" some quest to prove yourself... \n \n "
" Each castle contains a single treasure, the Holy Grail, in the center. "
" The radius of the Round Table is usually 28, but after you find a Holy Grail "
" successfully, each new castle (and each Round Table) you find will be bigger. " ;
const char * templehelp =
" The temple of Cthulhu consists of many concentric circles of columns. "
" You will surely encounter many Cultists there, who believe that a pilgrimage "
" to the inner circles will bring them closer to Cthulhu himself, and Grimoires "
" which surely contain many interesting secrets. \n \n "
" The circles in the temple of Cthulhu are actually horocycles. They are "
" infinite, and there is an infinite number of them. " ;
const char * barrierhelp =
2016-01-02 10:09:13 +00:00
" Huge, impassable walls which separate various lands. " ;
2015-08-08 13:57:52 +00:00
const char * cavehelp =
2016-01-02 10:09:13 +00:00
" This cave contains walls which are somehow living. After each turn, each cell "
" counts the number of living wall and living floor cells around it, and if it is "
" currently of a different type than the majority of cells around it, it switches. "
" Items count as three floor cells, and dead Trolls count as five wall cells. "
" Some foreign monsters also count as floor or wall cells. \n " ;
2015-08-08 13:57:52 +00:00
const char * vinehelp =
" The Vineyard is filled with vines. A very dense pattern of straight lines here... \n \n "
" Vine Beasts and Vine Spirits change vine cells to grass, and vice versa. " ;
const char * hvinehelp =
" A vine is growing here... but only on a half of the cell. How is that even possible?! "
" Most monsters cannot move from this cell to the cell containing the other half. "
" Vine spirits can move only to the adjacent cells which are also adjacent to the "
" other half. " ;
const char * deadcavehelp =
" Somehow, this cave has not received the spark of Life yet. " ;
const char * foresthelp =
2016-01-02 10:09:13 +00:00
" This forest is quite dry. Beware the bushfires! \n "
" Trees catch fire on the next turn. The temperature of the grass cells "
" rises once per turn for each fire nearby, and becomes fire itself "
" when its temperature has risen 10 times. \n "
" You can also cut down the trees. Big trees take two turns to cut down. " ;
2015-08-08 13:57:52 +00:00
const char * hivehelp =
" The Hive is filled with Hyperbugs. They are huge insects which look a bit like "
" ants, a bit like bees, and a bit like roaches. "
" They live in circular nests, and an army of Hyperbugs will attack any intruder, "
" including you and enemy Hyperbugs. Will you manage to get to the "
" heart of such a nest, and get the precious Royal Jelly? " ;
2016-01-02 10:09:13 +00:00
const char * redrockhelp =
" This land contains high rock formations. Most of the valley is at level 0, "
" while items are found at level 3. It is impossible to gain two or more levels, "
" or to lose three levels, in a single move, (attacks are possible at any "
" difference, though). Kill Red Trolls and Rock Snakes to make a cell higher. " ;
const char * caribbeanhelp =
" This dangerous sea contains nasty sharks and pirates. " ;
const char * cislandhelp =
" The islands of Caribbean are infinite and circular, and "
" the pirates probably have hidden their treasures somewhere far from the coast. " ;
const char * redsnakedes =
" Rock snakes are similar to Sandworms, but they move each turn. However, they "
" only move on the hexagonal cells. They are also somewhat longer than the Sandworms. " ;
const char * minedesc =
" This minefield has been created by the Bomberbirds to protect their valuable eggs. "
" Mines explode when they are stepped on, creating fire all around them "
" (this fire never expires in the Minefield). If you don't step on a mine, you "
" know the number of mines in cells around you. These numbers are marked with "
" color codes on the cells you have visited. " ;
const char * palacedesc =
" So better just to concentrate on collecting treasure. "
" Beware the traps, and the guards, who are hard to kill! " ;
const char * gatedesc =
" Green pressure plates open all gates in radius 3 around them. "
" Similarly, red pressure plates close all gates in this radius. " ;
const char * princessdesc =
" A mouse squeaks at you. It seems that it wants you to go somewhere. "
" That's interesting, what could you find here? \n \n "
" Note: in the part of the Palace that you are exploring during this "
" quest, the distribution of monsters, pressure plates, and items has been "
" changed somewhat, to make it a bit more suitable for less "
" experienced players. The number of monsters does not depend on the "
" number of Hypersian Rugs you have collected, and there are more "
" opening plates. \n \n "
" However, even with the normal distribution, it appears that it should be "
" always possible to reach your goal. If you want this challenge, "
" select it from the special game modes menu. " ;
const char * elemdesc =
" The Elemental Planes are divided into four subzones: Planes of Fire, Water, Air, and Earth. "
" You need to collect a Shard from each Plane to construct an Elemental Gem. "
" It is dangerous to collect too many Shards of the same type without constructing a Gem. " ;
const char * NODESC = " No description yet. " ;
2015-08-08 13:57:52 +00:00
// --- monsters ---
2016-01-02 10:09:13 +00:00
const int motypes = 102 ;
2015-08-08 13:57:52 +00:00
struct monstertype {
char glyph ;
int color ;
const char * name ;
const char * help ;
} ;
# define BUGCOLORS 3
2016-01-02 10:09:13 +00:00
const char * tamebomberdesc =
" This bomberbird will follow you at some distance, and attack your enemies. "
" You can kill it to place a mine. " ;
const char * gargdesc =
" A being made of stone, who likes high buildings. It becomes normal stone when "
" killed, but only if next to something stable -- otherwise it falls. " ;
2015-08-08 13:57:52 +00:00
monstertype minf [ motypes ] = {
{ 0 , 0 , " none " , NULL } ,
{ ' Y ' , 0x4040FF , " Yeti " ,
2016-01-02 10:09:13 +00:00
" A big and quite intelligent monster living in the Icy Land. "
2015-08-08 13:57:52 +00:00
} ,
{ ' W ' , 0xD08040 , " Icewolf " ,
2016-01-02 10:09:13 +00:00
" A nasty predator from the Icy Land. Contrary to other monsters, "
" it tracks its prey by their heat. "
2015-08-08 13:57:52 +00:00
} ,
{ ' W ' , 0xD08040 , " Icewolf " , " " } ,
{ ' R ' , 0xFF8000 , " Ranger " ,
2016-01-02 10:09:13 +00:00
" Rangers take care of the magic mirrors in the Land of Mirrors. "
" They know that rogues like to break these mirrors... so "
" they will attack you! "
2015-08-08 13:57:52 +00:00
} ,
{ ' T ' , 0xD0D0D0 , " Rock Troll " , trollhelp } ,
{ ' G ' , 0x20D020 , " Goblin " ,
2016-01-02 10:09:13 +00:00
" A nasty creature native to the Living Caves. They don't like you "
" for some reason. "
2015-08-08 13:57:52 +00:00
} ,
{ ' S ' , 0xE0E040 , " Sand Worm " , wormdes } ,
{ ' s ' , 0x808000 , " Sand Worm Tail " , wormdes } ,
{ ' S ' , 0x808000 , " Sand Worm W " , wormdes } ,
{ ' H ' , 0x80FF00 , " Hedgehog Warrior " ,
2016-01-02 10:09:13 +00:00
" These warriors of the Forest wield exotic weapons called hedgehog blades. "
" These blades protect them from a frontal attack, but they still can be 'stabbed' "
" easily by moving from one place next to them to another. "
2015-08-08 13:57:52 +00:00
} ,
{ ' M ' , 0x806050 , " Desert Man " ,
2016-01-02 10:09:13 +00:00
" A tribe of men native to the Desert. They have even tamed the huge Sandworms, who won't attack them. " } ,
2015-08-08 13:57:52 +00:00
{ ' C ' , 0x00FFFF , " Ivy Root " , ivydes } ,
{ ' C ' , 0xFFFF00 , " Active Ivy " , ivydes } ,
{ ' C ' , 0x40FF00 , " Ivy Branch " , ivydes } ,
{ ' C ' , 0x006030 , " Dormant Ivy " , ivydes } ,
2016-01-02 10:09:13 +00:00
{ ' C ' , 0x804000 , " Dead Ivy " , ivydes } ,
{ ' C ' , 0x800000 , " Dead Ivy " , ivydes } ,
2015-08-08 13:57:52 +00:00
{ ' M ' , 0x804000 , " Giant Ape " ,
2016-01-02 10:09:13 +00:00
" This giant ape thinks that you are an enemy. " } ,
2015-08-08 13:57:52 +00:00
{ ' B ' , 0x909000 , " Slime Beast " , slimehelp } ,
{ ' @ ' , 0x8080FF , " Mirror Image " ,
2016-01-02 10:09:13 +00:00
" A magical being which copies your movements. "
2015-08-08 13:57:52 +00:00
} ,
{ ' @ ' , 0xFF8080 , " Mirage " ,
2016-01-02 10:09:13 +00:00
" A magical being which copies your movements. "
" You feel that it would be much more useful in an Euclidean space. "
2015-08-08 13:57:52 +00:00
} ,
{ ' @ ' , 0x509050 , " Golem " ,
2016-01-02 10:09:13 +00:00
" You can summon these friendly constructs with a magical process. "
2015-08-08 13:57:52 +00:00
} ,
{ ' @ ' , 0x509050 , " Golem " ,
2016-01-02 10:09:13 +00:00
" You can summon these friendly constructs with a magical process. "
2015-08-08 13:57:52 +00:00
} ,
{ ' E ' , 0xD09050 , " Eagle " ,
2016-01-02 10:09:13 +00:00
" A majestic bird, who is able to fly very fast. "
2015-08-08 13:57:52 +00:00
} ,
{ ' S ' , 0xFF8080 , " Seep " ,
2016-01-02 10:09:13 +00:00
" A monster who is able to live inside the living cave wall. "
2015-08-08 13:57:52 +00:00
} ,
{ ' Z ' , 0x804000 , " Zombie " ,
2016-01-02 10:09:13 +00:00
" A typical Graveyard monster. "
2015-08-08 13:57:52 +00:00
} ,
{ ' G ' , 0xFFFFFF , " Ghost " ,
2016-01-02 10:09:13 +00:00
" A typical monster from the Graveyard, who moves through walls. \n \n "
2015-08-08 13:57:52 +00:00
" There are also wandering Ghosts. They will appear "
" if you do not explore any new places for a long time (about 100 turns). "
" They can appear anywhere in the game. "
} ,
{ ' N ' , 0x404040 , " Necromancer " ,
2016-01-02 10:09:13 +00:00
" Necromancers can raise ghosts and zombies from fresh graves. "
2015-08-08 13:57:52 +00:00
} ,
{ ' S ' , 0x404040 , " Shadow " ,
2016-01-02 10:09:13 +00:00
" A creepy monster who follows you everywhere in the Graveyard. "
2015-08-08 13:57:52 +00:00
} ,
{ ' T ' , 0x40E040 , " Tentacle " , tentdes } ,
{ ' t ' , 0x008000 , " Tentacle Tail " , tentdes } ,
{ ' T ' , 0x008000 , " Tentacle W " , tentdes } ,
{ ' z ' , 0xC00000 , " Tentacle (withdrawing) " , tentdes } ,
{ ' P ' , 0xFF8000 , " Cultist " ,
2016-01-02 10:09:13 +00:00
" People worshipping Cthulhu. They are very dangerous. "
2015-08-08 13:57:52 +00:00
} ,
{ ' P ' , 0xFFFF00 , " Fire Cultist " ,
2016-01-02 10:09:13 +00:00
" People worshipping Cthulhu. This one is especially dangerous, "
" as he is armed with a weapon which launches fire from afar. "
2015-08-08 13:57:52 +00:00
} ,
{ ' D ' , 0xFF0000 , " Greater Demon " , gdemonhelp } ,
{ ' D ' , 0x800000 , " Greater Demon " , gdemonhelp } ,
{ ' d ' , 0xFF2020 , " Lesser Demon " , ldemonhelp } ,
{ ' d ' , 0x802020 , " Lesser Demon " , ldemonhelp } ,
{ ' S ' , 0x2070C0 , " Ice Shark " ,
2016-01-02 10:09:13 +00:00
" This dangerous predator has killed many people, and has been sent to Cocytus. "
2015-08-08 13:57:52 +00:00
} ,
{ ' W ' , 0xFFFFFF , " Running Dog " ,
2016-01-02 10:09:13 +00:00
" This white dog is able to run all the time. It is the only creature "
" able to survive and breed in the Land of Eternal Motion. "
2015-08-08 13:57:52 +00:00
} ,
{ ' S ' , 0xC00040 , " Demon Shark " ,
2016-01-02 10:09:13 +00:00
" Demons of Hell do not drown when they fall into the lake in Cocytus. "
" They turn into demonic sharks, enveloped in a cloud of steam. "
2015-08-08 13:57:52 +00:00
} ,
{ ' S ' , 0xC00040 , " Fire Fairy " ,
2016-01-02 10:09:13 +00:00
" These fairies would rather burn the forest, than let you get some Fern Flowers. "
" The forest is infinite, after all... \n \n "
" Fire Fairies transform into fires when they die. "
2015-08-08 13:57:52 +00:00
} ,
{ ' C ' , 0x4000C0 , " Crystal Sage " ,
2016-01-02 10:09:13 +00:00
" This being radiates an aura of wisdom. "
" It is made of a beautiful crystal, you would love to take it home. "
" But how is it going to defend itself? Better not to think of it, "
" thinking causes your brain to go hot... \n \n "
" Crystal Sages melt at -30 °C, and they can rise the temperature around you from afar. "
2015-08-08 13:57:52 +00:00
} ,
{ ' P ' , 0x4040C0 , " Pikeman " ,
" When Pikemen move, they attack all cells which are now adjacent to them. "
" Luckily, they can be killed in the same way. \n \n "
" They never move if this would attack their friends. "
} ,
{ ' F ' , 0xC04040 , " Flail Guard " ,
" This guard of the Emerald Mine is wielding a huge flail. "
" You cannot attack him directly, as the flail would still hit you then. "
" Luckily, you have learned a trick: if you step away from him, "
" he will hit himself with the flail! "
} ,
{ ' M ' , 0x404040 , " Miner " ,
" Miners have special tools for dealing with the Living Cave. "
" When they die, these tools activate, destroying the living cave "
" around them. "
} ,
{ ' V ' , 0x421C52 , " Vine Beast " ,
" A beast made of vines! \n \n "
" Vine Beasts turn into vines when they die. "
} ,
2016-01-02 10:09:13 +00:00
{ ' V ' , 0xFFC0C0 , " Vine Spirit " ,
2015-08-08 13:57:52 +00:00
" A spirit living in the vines! \n \n "
" Vine Spirits destroy the vines when they die. "
} ,
{ ' T ' , 0x803030 , " Dark Troll " ,
" A Troll without the power of Life. "
} ,
{ ' E ' , 0xFFFF40 , " Earth Elemental " ,
" A rare unliving construct from the Dead Caves. "
" It instantly destroys cave walls next to its path, and also leaves "
" an impassable wall behind it. You suppose that this impassable wall helps it to "
" escape from some threats. You hope you won't meet these threats... "
} ,
{ ' B ' , 0xC04040 , " Red Hyperbug " , hivehelp } ,
{ ' B ' , 0x40C040 , " Green Hyperbug " , hivehelp } ,
{ ' B ' , 0x4040C0 , " Blue Hyperbug " , hivehelp } ,
{ ' W ' , 0x404040 , " Witch Apprentice " ,
" A Witch without any special powers. But watch out! She will "
" pick up any basic Orbs on her path, and use their powers. "
} ,
{ ' W ' , 0xFF4040 , " Speed Witch " ,
" A Witch with a Speed spell. She moves twice as fast as you. Unless you "
" have an Orb of Speed too, of course! "
} ,
{ ' W ' , 0xFFFFFF , " Flash Witch " ,
" A Witch with a Flash spell. Very dangerous! \n \n "
" Luckily, she never uses the spell if it would kill her friends. "
" She could destroy an Evil Golem, though. "
} ,
{ ' W ' , 0xFF8000 , " Fire Witch " ,
" A Witch with a Fire spell. She will leave a trail of fire behind her. "
} ,
{ ' W ' , 0x8080FF , " Winter Witch " ,
" A Witch with a Winter spell. She is able to move through fire. "
} ,
{ ' W ' , 0x808080 , " Aether Witch " ,
" A Witch with an Aether spell. She is able to move through fire and walls. "
} ,
{ ' @ ' , 0x905050 , " Evil Golem " ,
" Somebody has summoned these evil constructs with a magical process. "
} ,
{ ' @ ' , 0x8080FF , " Knight " , camelothelp } ,
{ ' P ' , 0xD10000 , " Cult Leader " ,
" These Cultists can push the statues, just like you. "
} ,
{ ' B ' , 0x909000 , " Slime Beast " , slimehelp } ,
{ ' @ ' , 0x8080FF , " Knight " , camelothelp } , // knight moved
{ ' @ ' , 0x8B4513 , " Illusion " ,
" Illusions are targetted "
" by most monsters, just like yourself, Thumpers, and your friends. "
} ,
2016-01-02 10:09:13 +00:00
{ ' P ' , 0xD00000 , " Pirate " ,
" Just a typical hyperbolic pirate. " } ,
{ ' S ' , 0x8080C0 , " Shark " , " Just a nasty shark. " } ,
{ ' P ' , 0x0000FF , " Parrot " , " Parrots feel safe in the forests of Caribbean, so they "
" never leave them. But they will help the Pirates by attacking the intruders. " } ,
{ ' S ' , 0xE09000 , " Rock Snake " , redsnakedes } ,
{ ' s ' , 0xE09000 , " Rock Snake Tail " , redsnakedes } ,
{ ' T ' , 0xC02020 , " Red Troll " , " A kind of Troll native to the Red Rock Valley. " } ,
{ ' B ' , 0xA00000 , " Bomberbird " ,
" Dark red birds who have created the minefield. \n \n "
" They create a mine on the spot where they are killed, provided "
" that the terrain is suitable. Also note that mines are triggered "
" by dead birds falling on them. "
} ,
{ ' A ' , 0xFFFFFF , " Albatross " ,
" Those large seabirds attack you for some reason. At least they are not "
" as fast as Eagles... "
} ,
{ ' B ' , 0x40C000 , " Tame Bomberbird " , tamebomberdesc } ,
{ ' B ' , 0x40C000 , " Tame Bomberbird " , tamebomberdesc } , // bomberbird moved
{ ' G ' , 0xFF0000 , " Palace Guard " ,
" You have to hit Palace Guards several times to kill them. After each hit, they "
" are pushed away and stunned for some time. "
} ,
{ ' G ' , 0xC06000 , " Fat Guard " , " Fat guards are too heavy to be pushed away by your hits. " } ,
{ ' G ' , 0xFFFFFF , " Skeleton " ,
" Skeletons work similar to Palace Guards, but they won't die no matter how many "
" times you hit them. Well, you have to be more creative... \n \n "
" Skeletons attacked outside of their native land, Palace, are stunned for a longer time. "
} ,
{ ' G ' , 0xC000C0 , " Vizier " ,
" Viziers are neither pushed away nor stunned. However, you attack them automatically when "
" escaping from them. " } ,
{ ' V ' , 0xC0C0C0 , " Viking " , " Mighty warriors from the Fjord, who can use boats. " } ,
{ ' T ' , 0x00FFFF , " Fjord Troll " ,
" Fjord Trolls leave a wall when they die, causing the living fjord to rise around it. "
" Contrary to Rock Trolls, items around are not destroyed. "
} ,
{ ' E ' , 0x0000FF , " Water Elemental " ,
" Wherever this powerful being goes, the living fjord "
" sinks below water, non-magical boats are destroyed, and fires are extinguished. \n \n "
" As a special case, you can attack the Water Elemental from the water, without drowning immediately. "
} ,
{ ' M ' , 0xD0D0D0 , " Mouse " , princessdesc } ,
{ ' M ' , 0xD0D0D0 , " Mouse " , princessdesc } ,
{ ' P ' , 0xFF80FF , " Prince " , princessdesc } ,
{ ' P ' , 0xFF80FF , " Princess " , princessdesc } ,
{ ' P ' , 0xFF80FF , " Prince " , princessdesc } ,
{ ' P ' , 0xFF80FF , " Princess " , princessdesc } ,
{ ' S ' , 0xC0C0C0 , " Servant " , " A simple servant of the master of the Ivory Tower. " } ,
{ ' B ' , 0x707070 , " Gargoyle " , gargdesc } ,
{ ' E ' , 0xFF0000 , " Fire Elemental " ,
" This monster leaves a trail of fire behind. " } ,
{ ' E ' , 0xC0C0FF , " Air Elemental " , " An Air Elemental looks like a live tornado. Once you are three (or less) cells from it, "
" it is impossible to move closer, due to strong winds. You can stand and wait, though. "
" This also affects most monsters. " } ,
{ ' D ' , 0xC06000 , " Striped Dog " , " A predator native to the Zebra. " } ,
{ ' G ' , 0xFFFFFF , " Tentacle+Ghost " , tentdes } ,
// shmup specials
{ ' @ ' , 0xC0C0C0 , " Rogue " , " In the Shoot'em Up mode, you are armed with thrown Knives. " } ,
{ ' * ' , 0xC0C0C0 , " Knife " , " A simple, but effective, missile, used by rogues. " } ,
{ ' * ' , 0xFF0000 , " Flail " , " This attack is likely to hit the attacker. " } ,
{ ' * ' , 0xFFFF00 , " Fireball " , " This magical missile burns whatever it hits. " } ,
{ ' * ' , 0xFFFF00 , " Tongue " , " Some monsters have long tongues, which allow them to attack enemies in nearby cells. " } ,
{ ' * ' , 0xFFFFFF , " Airball " , " This magical missile pushes back whatever it hits. " }
2015-08-08 13:57:52 +00:00
} ;
enum eMonster {
moNone ,
moYeti , moWolf , moWolfMoved ,
moRanger ,
moTroll , moGoblin ,
moWorm , moWormtail , moWormwait , moHedge ,
moDesertman ,
moIvyRoot , moIvyHead , moIvyBranch , moIvyWait , moIvyNext , moIvyDead ,
moMonkey ,
moSlime ,
moMirror , moMirage , moGolem , moGolemMoved ,
moEagle , moSeep ,
moZombie , moGhost , moNecromancer , moShadow ,
moTentacle , moTentacletail , moTentaclewait , moTentacleEscaping ,
moCultist , moPyroCultist ,
moGreater , moGreaterM , moLesser , moLesserM ,
moShark , moRunDog , moGreaterShark , moFireFairy ,
moCrystalSage , moLancer , moFlailer , moMiner ,
moVineBeast , moVineSpirit , moDarkTroll , moEarthElemental ,
moBug0 , moBug1 , moBug2 ,
moWitch , moWitchSpeed , moWitchFlash , moWitchFire , moWitchWinter , moWitchGhost ,
moEvilGolem , moKnight , moCultistLeader , moSlimeNextTurn , moKnightMoved ,
moIllusion ,
2016-01-02 10:09:13 +00:00
moPirate , moCShark , moParrot ,
moHexSnake , moHexSnakeTail , moRedTroll , moBomberbird , moAlbatross ,
moTameBomberbird , moTameBomberbirdMoved ,
moPalace , moFatGuard , moSkeleton , moVizier ,
moViking , moFjordTroll , moWaterElemental ,
moMouse , moMouseMoved ,
moPrincess , moPrincessMoved ,
moPrincessArmed , moPrincessArmedMoved ,
moEdgeMonkey , moGargoyle , moFireElemental , moAirElemental ,
moOrangeDog , moTentacleGhost ,
// shmup specials
moPlayer , moBullet , moFlailBullet , moFireball , moTongue , moAirball ,
2015-08-08 13:57:52 +00:00
// temporary
2016-01-02 10:09:13 +00:00
moDeadBug , moLightningBolt , moDeadBird
2015-08-08 13:57:52 +00:00
} ;
// --- items ----
2016-01-02 10:09:13 +00:00
const int ittypes = 67 ;
2015-08-08 13:57:52 +00:00
struct itemtype {
char glyph ;
int color ;
const char * name ;
const char * help ;
} ;
itemtype iinf [ ittypes ] = {
{ 0 , 0 , " none " , NULL } ,
{ ' * ' , 0xFFFFFF , " Ice Diamond " ,
2016-01-02 10:09:13 +00:00
" Cold white gems, found in the Icy Land. "
2015-08-08 13:57:52 +00:00
} ,
{ ' $ ' , 0xFFD700 , " Gold " ,
2016-01-02 10:09:13 +00:00
" An expensive metal from the Living Caves. For some reason "
" gold prevents the living walls from growing close to it. "
2015-08-08 13:57:52 +00:00
} ,
{ ' ; ' , 0xFF4000 , " Spice " ,
2016-01-02 10:09:13 +00:00
" A rare and expensive substance found in the Desert. "
" It is believed to extend life and raise special psychic powers. "
2015-08-08 13:57:52 +00:00
} ,
{ ' * ' , 0xC00000 , " Ruby " ,
2016-01-02 10:09:13 +00:00
" A beautiful gem from the Jungle. "
2015-08-08 13:57:52 +00:00
} ,
{ ' ! ' , 0xFFFF00 , " Elixir of Life " ,
2016-01-02 10:09:13 +00:00
" A wonderful beverage, apparently obtained by mixing red and blue slime. You definitely feel more "
" healthy after drinking it, but you still fell that one hit of a monster is enough to kill you. " } ,
2015-08-08 13:57:52 +00:00
{ ' % ' , 0xFF00FF , " Shard " ,
2016-01-02 10:09:13 +00:00
" A piece of a magic mirror, or a mirage cloud, that can be used for magical purposes. Only mirrors and clouds "
" in the Land of Mirrors leave these. " } ,
2015-08-08 13:57:52 +00:00
{ ' / ' , 0xFF8000 , " Necromancer's Totem " ,
2016-01-02 10:09:13 +00:00
" These sinister totems contain valuable gems. " } ,
2015-08-08 13:57:52 +00:00
{ ' % ' , 0x00D000 , " Demon Daisy " ,
2016-01-02 10:09:13 +00:00
" These star-shaped flowers native to Hell are a valuable alchemical component. " } ,
2015-08-08 13:57:52 +00:00
{ ' / ' , 0x00FF00 , " Statue of Cthulhu " ,
2016-01-02 10:09:13 +00:00
" This statue is made of materials which cannot be found in your world. " } ,
2015-08-08 13:57:52 +00:00
{ ' * ' , 0xFF8000 , " Phoenix Feather " ,
2016-01-02 10:09:13 +00:00
" One of few things that does not cause the floor in the Land of Eternal Motion to collapse. Obviously they are quite valuable. "
2015-08-08 13:57:52 +00:00
} ,
{ ' * ' , 0x8080FF , " Ice Sapphire " ,
2016-01-02 10:09:13 +00:00
" Cold blue gems, found in the Cocytus. "
2015-08-08 13:57:52 +00:00
} ,
{ ' * ' , 0xEEFF20 , " Hyperstone " ,
2016-01-02 10:09:13 +00:00
" These bright yellow gems can be found only by those who have mastered the Crossroads. "
2015-08-08 13:57:52 +00:00
} ,
{ ' [ ' , 0x8080FF , " Key " ,
2016-01-02 10:09:13 +00:00
" That's all you need to unlock the Orb of Yendor! Well... as long as you are able to return to the Orb that this key unlocks... \n \n "
" Each key unlocks only the Orb of Yendor which led you to it. "
2015-08-08 13:57:52 +00:00
} ,
{ ' o ' , 0x306030 , " Dead Orb " ,
2016-01-02 10:09:13 +00:00
" These orbs can be found in the Graveyard. You think that they were once powerful magical orbs, but by now, their "
" power is long gone. No way to use them, you could as well simply drop them... \n \n "
2015-08-08 13:57:52 +00:00
} ,
{ ' o ' , 0xFF20FF , " Orb of Yendor " ,
2016-01-02 10:09:13 +00:00
" This wonderful Orb can only be collected by those who have truly mastered this hyperbolic universe, "
" as you need the right key to unlock it. Luckily, your psychic abilities will let you know "
" where the key is after you touch the Orb. " } ,
2015-08-08 13:57:52 +00:00
{ ' o ' , 0xFFFF00 , " Orb of Storms " ,
2016-01-02 10:09:13 +00:00
" This orb can be used to invoke the lightning spell, which causes lightning bolts to shoot from you in all directions. " } ,
2015-08-08 13:57:52 +00:00
{ ' o ' , 0xFFFFFF , " Orb of Flash " ,
2016-01-02 10:09:13 +00:00
" This orb can be used to invoke a flash spell, which destroys almost everything in radius of 2. " } ,
2015-08-08 13:57:52 +00:00
{ ' o ' , 0x8080FF , " Orb of Winter " ,
2016-01-02 10:09:13 +00:00
" This orb can be used to invoke a wall of ice. It also protects you from fires. " } ,
2015-08-08 13:57:52 +00:00
{ ' o ' , 0xFF6060 , " Orb of Speed " ,
2016-01-02 10:09:13 +00:00
" This orb can be used to move faster for some time. " } ,
2015-08-08 13:57:52 +00:00
{ ' o ' , 0x90B090 , " Orb of Life " ,
2016-01-02 10:09:13 +00:00
" This orb can be used to summon friendly golems. It is used instantly when you pick it up. " } ,
2015-08-08 13:57:52 +00:00
{ ' o ' , 0x60D760 , " Orb of Shielding " ,
2016-01-02 10:09:13 +00:00
" This orb can protect you from damage. " } ,
2015-08-08 13:57:52 +00:00
{ ' o ' , 0x606060 , " Orb of Earth " ,
2016-01-02 10:09:13 +00:00
" This orb lets you go through living walls. It also has powers in some of the other lands. " } ,
2015-08-08 13:57:52 +00:00
{ ' o ' , 0x20FFFF , " Orb of Teleport " ,
2016-01-02 10:09:13 +00:00
" This orb lets you instantly move to another location on the map. Just click a location which "
" is not next to you to teleport there. "
2015-08-08 13:57:52 +00:00
} ,
{ ' o ' , 0xA0FF40 , " Orb of Safety " ,
2016-01-02 10:09:13 +00:00
" This orb lets you instantly move to a safe faraway location. Knowing the nature of this strange world, you doubt "
" that you will ever find the way back... \n \n "
" Your game will be saved if you quit the game while the Orb of Safety is still powered. \n \n "
" Technical note: as it is virtually impossible to return, this Orb recycles memory used for the world so far (even if you do not use it to save the game). "
2015-08-08 13:57:52 +00:00
} ,
{ ' o ' , 0x40C000 , " Orb of Thorns " ,
2016-01-02 10:09:13 +00:00
" This orb allows attacking Hedgehog Warriors directly, as well as stabbing other monsters. \n "
2015-08-08 13:57:52 +00:00
} ,
{ ' % ' , 0x0000FF , " Fern Flower " ,
2016-01-02 10:09:13 +00:00
" This flower brings fortune to the person who finds it. \n "
2015-08-08 13:57:52 +00:00
} ,
{ ' ! ' , 0x900000 , " Wine " ,
2016-01-02 10:09:13 +00:00
" Wine grown under hyperbolic sun would be extremely prized in your home location. "
2015-08-08 13:57:52 +00:00
} ,
{ ' o ' , 0x706070 , " Orb of Aether " ,
2016-01-02 10:09:13 +00:00
" This orb allows one to pass through all kinds of walls and chasms. "
2015-08-08 13:57:52 +00:00
} ,
{ ' $ ' , 0xFFFFC0 , " Silver " ,
" A precious metal from the Dead Caves. "
} ,
{ ' o ' , 0x005050 , " Orb of the Mind " ,
" This orb allows you to instantly kill a non-adjacent enemy by clicking it. "
" Each use drains 30 charges. "
} ,
{ ' ! ' , 0xE2B227 , " Royal Jelly " ,
" This is what Hyperbug Queens eat. Very tasty and healthy. "
} ,
{ ' * ' , 0x60C060 , " Emerald " ,
" A precious green gem from the Emerald Mines. "
} ,
{ ' o ' , 0x421C52 , " Orb of Invisibility " ,
" When you have this Orb, most monsters won't see you, unless "
" you are standing still, attacking, or picking up items. "
} ,
{ ' * ' , 0xFFFF00 , " Powerstone " ,
" A Stone from the Land of Power. You are not sure what it is exactly, but "
" as the Powerstones are kept in crystal cabinets, they are surely valuable. "
} ,
{ ' o ' , 0xFF4000 , " Orb of Fire " ,
" When you have this Orb, you will leave a trail of fire behind you. "
} ,
{ ' ! ' , 0xFFFF00 , " Holy Grail " , camelothelp } ,
{ ' ? ' , 0x00FF00 , " Grimoire " ,
" The Grimoires contain many secrets of the Great Old Ones. "
" Each new inner circle in the Temple of Cthulhu contains new Grimoires, with new secrets. "
" You hope to read them when you return home, and to learn many things. "
" The knowledge is valuable to you, but it is rather pointless to try to get "
" several copies of the same Grimoire... "
} ,
{ ' o ' , 0xFF8000 , " Orb of the Dragon " ,
" This Orb allows you to throw fire, just like the Fire Cultists. \n \n "
" Each fire drains 5 charges. You are not allowed to throw fire into adjacent cells. "
} ,
{ ' o ' , 0x8B4513 , " Orb of Trickery " ,
" This Orb allows you to create illusions of yourself. Illusions are targetted "
" by most monsters, just like yourself, Thumpers, and your friends. \n \n "
" Each illusion takes 5 charges to create, and one extra charge "
" per turn. You can also click your illusion to take it away, restoring 4 charges. \n \n "
" If you have both Orb of Teleport and Orb of Trickery, Illusion is cast "
" first -- you can then teleport on your Illusion to switch places with it. "
} ,
2016-01-02 10:09:13 +00:00
{ ' x ' , 0xFF0000 , " Pirate Treasure " , " Ye wonder where did th' Pirates find all these riches... " } ,
{ ' ? ' , 0xFFFFFF , " Compass " ,
" The hyperbolic pirates have no use for treasure maps. However, they have found "
" out that a compass points to the center of the island. So they just go as "
" far towards the center as they can, and hide their treasure there. "
} ,
{ ' * ' , 0xFF8080 , " Red Gem " , " A gem from the Red Rock Valley. " } ,
{ ' o ' , 0x6060FF , " Orb of Time " ,
" Normally, the power of most Orbs slowly fades away, even when "
" you are not actively using them. This Orb prevents this. \n \n "
" When you have the Orb of Time, Orbs which are not active won't lose their power. "
" Orbs are considered active if they have a continuous power which has actually "
" affected something in the last turn. \n \n "
" Orbs of Shielding remain active after being activated (even if you are no longer "
" attacked), and Orbs of Time have a bigger cap inside their native Caribbean than "
" outside. "
} ,
{ ' o ' , 0x40C0C0 , " Orb of Space " ,
" This Orb is able to bring faraway items to your location, even if there are "
" monsters or barriers on the way. The cost of "
" bringing an item (in charges) equals the square of its distance to you. Contrary "
" to some other Orbs, usage is not allowed if you have not enough power left. " ,
} ,
{ ' ! ' , 0xFF8080 , " Bomberbird Egg " ,
" Bomberbird eggs are big and tasty, and thus valuable. "
" They can hatch when left alone for some time (but this will never happen "
" if you are watching). "
} ,
{ ' * ' , 0xFFBF00 , " Amber " ,
" When the tide is away, beautiful ambers can be found on the hyperbolic beaches. "
" Perhaps there used to be a forest here? "
} ,
{ ' $ ' , 0xFFFFFF , " Pearl " ,
" You do not know exactly why, but there are valuable pearls on many boats "
" in the whirlpool. "
} ,
{ ' o ' , 0x306000 , " Orb of Friendship " ,
" This Orb summons a friendly Bomberbird. "
} ,
{ ' o ' , 0x000060 , " Orb of Water " ,
" This Orb allows your boat to go against the current, "
" and also to go into the land, creating water on the way. "
} ,
{ ' o ' , 0xC00060 , " Orb of Air " ,
" This Orb allows you to blow your enemies away. \n \n "
" Click a monster to blow it one cell away. It cannot be used against mimics, ghosts, sharks and other monsters restricted to a specific terrain, and multi-tile monsters. "
} ,
{ ' ? ' , 0x802000 , " Hypersian Rug " ,
" Nice, a hyperbolic rug! It will not fit very well on your flat Euclidean floor, but who cares? " } ,
{ ' o ' , 0x60A060 , " Orb of the Frog " ,
" This Orb lets you jump to a place which is two cell away from you, in a single turn. "
" You can jump over water, chasms and fire, but not over walls. " } ,
{ ' * ' , 0x800000 , " Garnet " , " Vikings believe that garnets improve their strength. " } ,
{ ' o ' , 0x0070C0 , " Orb of the Fish " ,
" This Orb lets you dive into the water. While diving, you are able to see and collect underwater treasures, "
" while being invisible to monsters yourself. You are afraid of jumping into the water straight from a boat, so usually you won't do it. "
} ,
{ ' o ' , 0xC00000 , " Orb of Discord " ,
" Causes most monsters to attack other monsters, not only you and your friends. " } ,
{ ' P ' , 0x00FF00 , " SAVE " , princessdesc } ,
{ ' o ' , 0xFF208F , " Orb of Love " ,
" Love takes time, but it heals all wounds, and transcends time and space. \n \n "
" The Orb of Love is worth 30$$$, if you end the game with it. \n "
} ,
{ ' / ' , 0xFFFFE0 , " Ivory Figurine " ,
" A beautiful figurine, made of ivory. Figurines close to the base of the Tower "
" tend do disappear after you have collected many of them. "
} ,
{ ' * ' , 0x606060 , " Onyx " , " A black gem with white stripes. It is beautiful. " } ,
{ ' % ' , 0xFF8000 , " Fire Shard " , elemdesc } ,
{ ' % ' , 0x8080C0 , " Air Shard " , elemdesc } ,
{ ' % ' , 0x80C080 , " Earth Shard " , elemdesc } ,
{ ' % ' , 0x0000C0 , " Water Shard " , elemdesc } ,
{ ' * ' , 0xF0F0F0 , " Elemental Gem " , elemdesc } ,
{ ' o ' , 0x309060 , " Orb of Summoning " ,
" This orb allows you to summon monsters. Usually, they are either Elementals or "
" native creatures. While the monsters do not like being summoned, and will "
" attack you once they recover from summoning sickness, such summoning "
" often has its uses. "
} ,
{ ' o ' , 0x306090 , " Orb of Matter " ,
" This Orb allows to temporarily create impassable matter, either to block paths or "
" to build bridges across chasms and waters. " }
2015-08-08 13:57:52 +00:00
} ;
enum eItem { itNone , itDiamond , itGold , itSpice , itRuby , itElixir , itShard , itBone , itHell , itStatue ,
itFeather , itSapphire , itHyperstone , itKey ,
itGreenStone , itOrbYendor ,
itOrbLightning , itOrbFlash , itOrbWinter , itOrbSpeed , itOrbLife , itOrbShield , itOrbDigging ,
itOrbTeleport , itOrbSafety ,
itOrbThorns , itFernFlower ,
itWine , itOrbGhost , itSilver , itOrbPsi ,
itRoyalJelly , itEmerald , itOrbInvis , itPower , itOrbFire ,
itHolyGrail , itGrimoire ,
2016-01-02 10:09:13 +00:00
itOrbDragon , itOrbIllusion ,
itPirate , itCompass ,
itRedGem , itOrbPreserve , itOrbTelekinesis ,
itBombEgg , itCoast , itWhirlpool ,
itOrbFriend , itOrbWater , itOrbAir ,
itPalace , itOrbFrog ,
itFjord , itOrbFish ,
itOrbDiscord ,
itSavedPrincess , itOrbLove ,
itEdge , itZebra ,
itFireShard , itAirShard , itEarthShard , itWaterShard ,
itElemental , itOrbSummon , itOrbMatter
2015-08-08 13:57:52 +00:00
} ;
// --- wall types ---
2016-01-02 10:09:13 +00:00
const int walltypes = 69 ;
2015-08-08 13:57:52 +00:00
struct walltype {
char glyph ;
int color ;
const char * name ;
const char * help ;
} ;
const char * lakeDesc = " Hell has these lakes everywhere... They are shaped like evil stars, and filled with burning sulphur. " ;
2016-01-02 10:09:13 +00:00
const char * thumpdesc = " A device that attracts sandworms and other enemies. You need to activate it. " ;
const char * twdesc = " This structure will disappear after some time. " ;
2015-08-08 13:57:52 +00:00
walltype winf [ walltypes ] = {
{ ' . ' , 0xFF00FF , " none " , NULL } ,
{ ' # ' , 0x8080FF , " ice wall " ,
2016-01-02 10:09:13 +00:00
" Ice Walls melt after some time has passed. "
2015-08-08 13:57:52 +00:00
} ,
{ ' # ' , 0xC06000 , " great wall " , barrierhelp } ,
{ ' + ' , 0x900030 , " red slime " , slimehelp } ,
{ ' + ' , 0x300090 , " blue slime " , slimehelp } ,
{ ' # ' , 0xA0D0A0 , " living wall " , cavehelp } ,
{ ' . ' , 0x306060 , " living floor " , cavehelp } ,
{ ' # ' , 0xD03030 , " dead troll " , trollhelp } ,
{ ' # ' , 0xCDA98F , " sand dune " ,
2016-01-02 10:09:13 +00:00
" A natural terrain feature of the Desert. "
2015-08-08 13:57:52 +00:00
} ,
{ ' % ' , 0xC0C0FF , " Magic Mirror " ,
2016-01-02 10:09:13 +00:00
" You can go inside the Magic Mirror, and produce some mirror images to help you. "
2015-08-08 13:57:52 +00:00
} ,
{ ' % ' , 0xFFC0C0 , " Cloud of Mirage " ,
2016-01-02 10:09:13 +00:00
" Tiny droplets of magical water. You see images of yourself inside them. "
" Go inside the cloud, to make these images help you. " } ,
{ ' ^ ' , 0x8D694F , " Thumper " , thumpdesc } ,
{ ' ^ ' , 0x804000 , " Fire " ,
" This cell is on fire. Most beings and items cannot survive. "
2015-08-08 13:57:52 +00:00
} ,
{ ' + ' , 0xC0C0C0 , " ancient grave " ,
2016-01-02 10:09:13 +00:00
" An ancient grave. "
2015-08-08 13:57:52 +00:00
} ,
{ ' + ' , 0xD0D080 , " fresh grave " ,
2016-01-02 10:09:13 +00:00
" A fresh grave. Necromancers like those. "
2015-08-08 13:57:52 +00:00
} ,
{ ' # ' , 0x00FFFF , " column " ,
2016-01-02 10:09:13 +00:00
" A piece of architecture typical to R'Lyeh. "
2015-08-08 13:57:52 +00:00
} ,
{ ' = ' , 0xFFFF00 , " lake of sulphur " , lakeDesc } ,
{ ' = ' , 0xFFFF00 , " lake of sulphur " , lakeDesc } ,
{ ' = ' , 0x000080 , " lake " ,
2016-01-02 10:09:13 +00:00
" An impassable lake in Cocytus. "
2015-08-08 13:57:52 +00:00
} ,
{ ' _ ' , 0x000080 , " frozen lake " , cocytushelp } ,
{ ' > ' , 0x101010 , " chasm " ,
2016-01-02 10:09:13 +00:00
" It was a floor... until something walked on it. "
2015-08-08 13:57:52 +00:00
} ,
{ ' > ' , 0x101010 , " chasmD " ,
2016-01-02 10:09:13 +00:00
" It was a floor... until something walked on it. "
2015-08-08 13:57:52 +00:00
} ,
{ ' # ' , 0x60C000 , " big tree " , foresthelp } ,
{ ' # ' , 0x006000 , " tree " , foresthelp } ,
{ ' # ' , 0x421C52 * 2 , " vine " , vinehelp } ,
{ ' : ' , 0x006000 , " vine " , hvinehelp } ,
{ ' ; ' , 0x006000 , " vine " , hvinehelp } ,
{ ' ^ ' , 0x804000 , " partial fire " , " This cell is partially on fire. " } ,
{ ' # ' , 0xA07070 , " dead wall " , deadcavehelp } ,
{ ' . ' , 0x401010 , " dead floor " , deadcavehelp } ,
{ ' . ' , 0x905050 , " rubble " , " Dead floor, with some rubble. " } ,
{ ' # ' , 0xD0D010 , " weird rock " ,
" A weirdly colored rock. Hyperentomologists claim that the "
" Hyperbug armies use these rocks to navigate back home after a victorious battle. "
} ,
{ ' # ' , 0x8080C0 , " crystal cabinet " ,
" Witches use these crystal cabinets to protect Powerstones, as well as the more "
" expensive Orbs. They are partially protected from thieves: they are too strong "
" to be smashed by conventional attacks, and if you try to steal the item "
" using an Orb of Aether, your Aether power will be completely drained. "
} ,
{ ' # ' , 0xC0C0C0 , " wall of Camelot " , camelothelp } ,
{ ' # ' , 0xA06000 , " Round Table " , camelothelp } ,
{ ' = ' , 0x0000A0 , " moat of Camelot " , camelothelp } ,
{ ' + ' , 0x606060 , " big statue of Cthulhu " ,
" These statues of Cthulhu are too large to carry, and they don't look too "
" valuable anyway. Most monsters will never go through them... they probably have "
" their reasons. But you can go! When you move into the cell containing "
" a statue, you push the statue to the cell you left. \n "
2016-01-02 10:09:13 +00:00
} ,
{ ' = ' , 0x0000A0 , " sea " , caribbeanhelp } ,
{ ' + ' , 0x0000A0 , " boat " ,
" Hyperbolic pirates do not need huge ships, since so many lands to conquest "
" are so close. These small boats are enough for them. \n \n "
" Boats allow you to go through water. If you are in a boat, you can move into "
" a water cell (and the boat will come with you). "
} ,
{ ' . ' , 0x00FF00 , " island " , cislandhelp } ,
{ ' . ' , 0x80C000 , " island " , cislandhelp } ,
{ ' # ' , 0x006000 , " tree " ,
" The forests of Caribbean are too dense to be traversed by humans, "
" and they are hard to burn. Many colorful parrots can be found there. "
} ,
{ ' , ' , 0x800000 , " rock I " , redrockhelp } ,
{ ' : ' , 0xC00000 , " rock II " , redrockhelp } ,
{ ' ; ' , 0xFF0000 , " rock III " , redrockhelp } ,
{ ' . ' , 0xD0D0D0 , " minefield " , minedesc } ,
{ ' . ' , 0xD0D0D0 , " minefield " , minedesc } ,
{ ' . ' , 0x909090 , " cell without mine " , minedesc } ,
{ ' + ' , 0x808000 , " stranded boat " ,
" This boat cannot go through the sand. But if you sit inside and "
" wait for the tide, you will be able to use it to travel through the Ocean. "
} ,
{ ' # ' , 0xFFD500 , " palace wall " , palacedesc } ,
{ ' + ' , 0xFFFFFF , " closed gate " , gatedesc } ,
{ ' - ' , 0x404040 , " open gate " , gatedesc } ,
{ ' _ ' , 0xC00000 , " closing plate " , gatedesc } ,
{ ' _ ' , 0x00C000 , " opening plate " , gatedesc } ,
{ ' _ ' , 0x202020 , " trapdoor " , " This floor will fall after someone goes there. Go quickly! " } ,
{ ' + ' , 0xFF0000 , " giant rug " ,
" This is the biggest Hypersian Rug you have ever seen! "
" Unfortunately, it is too large to take it as a trophy. " } ,
{ ' # ' , 0xfffff0 , " platform " , " You can stand here. " } ,
{ ' # ' , 0x909090 , " stone gargoyle " , gargdesc } ,
{ ' . ' , 0x909090 , " stone gargoyle floor " , gargdesc } ,
{ ' . ' , 0x909090 , " rubble " , " Some rubble. " } ,
{ ' + ' , 0x804000 , " ladder " ,
" You can use this ladder to climb the Tower. "
} ,
{ ' # ' , 0xC0C0C0 , " limestone wall " , " Simply a wall. Mostly. " } ,
{ ' ^ ' , 0x804000 , " Bonfire " ,
" A heap of wood that can be used to start a fire. Everything is already here, you just need to touch it to fire it. "
} ,
{ ' ^ ' , 0x8D694F , " Thumper " ,
" A device that attracts sandworms and other enemies. You need to activate it. " } ,
{ ' ^ ' , 0x804000 , " Eternal Fire " ,
" This fire never burns out. "
} ,
{ ' . ' , 0x909090 , " stone gargoyle bridge " , gargdesc } ,
{ ' # ' , 0x309060 , " temporary wall " , twdesc } ,
{ ' . ' , 0x309060 , " temporary floor " , twdesc } ,
{ ' . ' , 0x309060 , " temporary bridge " , twdesc }
2015-08-08 13:57:52 +00:00
} ;
enum eWall { waNone , waIcewall , waBarrier , waFloorA , waFloorB , waCavewall , waCavefloor , waDeadTroll , waDune ,
2016-01-02 10:09:13 +00:00
waMirror , waCloud , waThumperOff , waFire , waAncientGrave , waFreshGrave , waColumn , waSulphurC , waSulphur ,
2015-08-08 13:57:52 +00:00
waLake , waFrozenLake , waChasm , waChasmD , waDryTree , waWetTree ,
waVinePlant , waVineHalfA , waVineHalfB , waPartialFire ,
waDeadwall , waDeadfloor , waDeadfloor2 , waWaxWall , waGlass , waCamelot , waRoundTable ,
waCamelotMoat ,
waBigStatue ,
2016-01-02 10:09:13 +00:00
waSea , waBoat , waCIsland , waCIsland2 , waCTree ,
waRed1 , waRed2 , waRed3 ,
waMineUnknown , waMineMine , waMineOpen ,
waStrandedBoat ,
waPalace , waClosedGate , waOpenGate , waClosePlate , waOpenPlate , waTrapdoor ,
waGiantRug ,
waPlatform , waGargoyle , waGargoyleFloor , waRubble , waLadder , waStone ,
waBonfireOff , waThumperOn , waEternalFire ,
waGargoyleBridge ,
waTempWall , waTempFloor , waTempBridge ,
2015-08-08 13:57:52 +00:00
// temporary walls for various purposes
2016-01-02 10:09:13 +00:00
waTemporary , waEarthD , waElementalTmp , waElementalD
2015-08-08 13:57:52 +00:00
} ;
// --- land types ---
2016-01-02 10:09:13 +00:00
const int numLands = 35 ;
const int landtypes = numLands + 6 ;
2015-08-08 13:57:52 +00:00
struct landtype {
int color ;
const char * name ;
const char * help ;
} ;
landtype linf [ landtypes ] = {
{ 0xFF00FF , " ??? " , " " } ,
{ 0xC06000 , " Great Wall " , " " } ,
{ 0xFF0000 , " Crossroads " ,
2016-01-02 10:09:13 +00:00
" This land is a quick gateway to other lands. It is very easy to find other lands "
" from the Crossroads. Which means that you find monsters from most other lands here! \n \n "
" As long as you have found enough treasure in their native lands, you can "
" find magical items in the Crossroads. Mirror Land brings mirrors and clouds, "
" and other land types bring magical orbs. \n \n "
" A special treasure, Hyperstone, can be found on the Crossroads, but only "
" after you have found 10 of every other treasure. "
2015-08-08 13:57:52 +00:00
} ,
{ 0xCDA98F , " Desert " ,
2016-01-02 10:09:13 +00:00
" A hot land, full of sand dunes, mysterious Spice, and huge and dangerous sand worms. "
2015-08-08 13:57:52 +00:00
} ,
{ 0x8080FF , " Icy Land " ,
2016-01-02 10:09:13 +00:00
" A very cold land, full of ice walls. Your mere presence will cause these ice walls to "
" melt, even if you don't want it. "
2015-08-08 13:57:52 +00:00
} ,
{ 0x306060 , " Living Cave " , cavehelp } ,
{ 0x00C000 , " Jungle " ,
2016-01-02 10:09:13 +00:00
" A land filled with huge ivy plants and dangerous animals. "
2015-08-08 13:57:52 +00:00
} ,
{ 0x900090 , " Alchemist Lab " , slimehelp } ,
{ 0x704070 , " Mirror Land " ,
2016-01-02 10:09:13 +00:00
" A strange land which contains mirrors and mirages, protected by Mirror Rangers. " } ,
2015-08-08 13:57:52 +00:00
{ 0x404070 , " Graveyard " ,
2016-01-02 10:09:13 +00:00
" All the monsters you kill are carried to this strange land, and buried. "
" Careless Rogues are also carried here... "
2015-08-08 13:57:52 +00:00
} ,
{ 0x00FF00 , " R'Lyeh " ,
2016-01-02 10:09:13 +00:00
" An ancient sunken city which can be reached only when the stars are right. \n \n "
2015-08-08 13:57:52 +00:00
" You can find Temples of Cthulhu in R'Lyeh once you collect five Statues of Cthulhu. "
} ,
{ 0xC00000 , " Hell " ,
2016-01-02 10:09:13 +00:00
" A land filled with demons and molten sulphur. Abandon all hope ye who enter here! "
2015-08-08 13:57:52 +00:00
} ,
{ 0x00FF00 , " Cocytus " ,
cocytushelp
} ,
{ 0xFFFF00 , " Land of Eternal Motion " ,
2016-01-02 10:09:13 +00:00
" A land where you cannot stop, because every piece of floor is extremely unstable. Only monsters who "
" can run forever are able to survive there, and only phoenix feathers are so light that they do not disturb "
" the floor. \n "
2015-08-08 13:57:52 +00:00
} ,
{ 0x008000 , " Dry Forest " , foresthelp } ,
{ 0x0000C0 , " Emerald Mine " ,
" Evil people are mining for emeralds in this living cave. "
" It does not grow naturally, but it is dug out in a regular "
" pattern, which is optimal according to the evil engineers. "
} ,
{ 0x421C52 , " Vineyard " , foresthelp } ,
{ 0x104040 , " Dead Cave " , deadcavehelp } ,
{ 0x705020 , " Hive " , hivehelp } ,
{ 0xFFFF00 , " Land of Power " ,
" The Land of Power is filled with everburning fire, magical Orbs, and guarded by "
" witches and golems. There are basic orbs lying everywhere, and more prized ones "
" are kept in crystal cabinets. \n \n "
" Witches are allowed to use all the powers of the "
" basic orbs against intruders. These powers never expire, but a Witch "
" can use only one power at a time (not counting Orbs of Life). \n \n "
2016-01-02 10:09:13 +00:00
" Witches and Golems don't pursue you into other Lands. Also, most Orb powers "
2015-08-08 13:57:52 +00:00
" are drained when you leave the Land of Power. "
} ,
{ 0xD0D0D0 , " Camelot " , camelothelp } ,
{ 0xD000D0 , " Temple of Cthulhu " , templehelp } ,
2016-01-02 10:09:13 +00:00
{ 0xFF8000 , " Crossroads II " ,
" An alternate layout of the Crossroads. It is more dense and more regular, "
" although you won't find the castle of Camelot here. "
} ,
{ 0x0000FF , " Caribbean " , caribbeanhelp } ,
{ 0x400000 , " Red Rock Valley " , redrockhelp } ,
{ 0xD0D0D0 , " Minefield " , minedesc } ,
{ 0x2020FF , " Ocean " ,
" You can collect some valuable Ambers on the coast, but beware the tides! \n \n "
" You can also take one of the boats and venture into the Ocean, "
" to find other coasts, dangerous whirlpools, and islands inhabited by Pirates. "
} ,
{ 0x0000C0 , " Whirlpool " ,
" Many lost boats are spinning in this whirlpool. Some of them contain treasures "
" and Pirates. \n \n "
" Unmanned boats will go one cell clockwise in each turn. Sharks and manned boats "
" are only allowed to go with the current, that is, towards the center, or clockwise. "
} ,
{ 0xFFD500 , " Palace " , palacedesc } ,
{ 0xC0C000 , " Living Fjord " ,
" A coastal area, from where you can get both to the inland worlds and to the Ocean. "
" Each turn, each cell will become water or earth, based on the majority of cells around it. "
" Contrary to the Living Caves, this process is not affected by most items and monsters, "
" but elementals, dead Trolls, and cells outside of the Living Fjord have "
" a very powerful effect. "
} ,
{ 0xFFFFE0 , " Ivory Tower " , " Powerful wizards claimed this part of the world, to perform their magical "
" experiments in peace and solitude. They have changed the direction of gravity, "
" to make it even harder for intruders to reach them. \n \n "
" Gravity works as follows: cells are unstable if they are empty, and there is "
" no cell immediately below them which contains a wall. It is impossible to move "
" from one unstable cell to another, except if moving down. " } ,
{ 0x606060 , " Zebra " , " Everything in this Land has black and white stripes. " } ,
{ 0xC08080 , " Plane of Fire " , elemdesc } ,
{ 0x808080 , " Plane of Air " , elemdesc } ,
{ 0x80C080 , " Plane of Earth " , elemdesc } ,
{ 0x8080C0 , " Plane of Water " , elemdesc } ,
{ 0x4040FF , " Crossroads III " ,
" An alternate layout of the Crossroads. Great Walls cross here at right angles. "
} ,
{ 0x4040C0 , " Sea Border " , " Border between seas. " } ,
{ 0x4040C0 , " Elemental Planes " , elemdesc } ,
{ 0xE08020 , " Canvas " , " A fake Land with colored floors. " } ,
{ 0x00C000 , " Palace Quest " , princessdesc } , // this is fake
2015-08-08 13:57:52 +00:00
} ;
enum eLand { laNone , laBarrier , laCrossroads , laDesert , laIce , laCaves , laJungle , laAlchemist , laMirror , laGraveyard ,
2016-01-02 10:09:13 +00:00
laRlyeh , laHell , laCocytus , laMotion , laDryForest , laEmerald , laWineyard , laDeadCaves ,
laHive , laPower , laCamelot , laTemple ,
laCrossroads2 , laCaribbean , laRedRock , laMinefield , laOcean , laWhirlpool ,
laPalace , laLivefjord ,
laEdge , laZebra , laEFire , laEAir , laEEarth , laEWater , laCrossroads3 ,
laOceanWall , laElementalWall , laCanvas , laPrincessQuest } ;
2015-08-08 13:57:52 +00:00
// cell information for the game
struct gcell {
2016-01-02 10:09:13 +00:00
// main fields
eLand land : 8 ;
eWall wall : 8 ;
eMonster monst : 8 ;
eItem item : 8 ;
// if this is a barrier, what lands on are on the sides?
eLand barleft : 8 , barright : 8 ;
unsigned ligon : 1 ; // is it sparkling with lightning?
unsigned
pathdist : 5 , // player distance wrt usual movement
cpdist : 5 , mpdist : 5 ; // current/minimum player distance
unsigned mondir : 3 , // monster direction, for multi-tile monsters and graphics
bardir : 4 , // barrier direction
stuntime : 4 , // stun time left (for Palace Guards and Skeletons)
hitpoints : 3 , // hitpoints left (for Palace Guards)
landflags : 2 ; // extra flags for land
char wparam ; // wall parameter, used for remaining power of Bonfires and Thumpers
// 'tmp' is used for:
// pathfinding algorithm used by monsters with atypical movement (which do not use pathdist)
// bugs' pathfinding algorithm
short aitmp ;
// 'landparam' is used for:
// heat in Icy/Cocytus;
// heat in Dry (0..10);
// CR2 structure;
// hive Weird Rock color / pheromones;
// Ocean/coast depth
union { int32_t landpar ; float heat ; } LHU ;
2015-08-08 13:57:52 +00:00
} ;
2016-01-02 10:09:13 +00:00
# define landparam LHU.landpar
2015-08-08 13:57:52 +00:00
# define NODIR 7
# define NOBARRIERS 8