{{Spoiler}}''This section is about adding dungeons to the world map. If you would like to learn about the specifics of dungeon building, see [[Dungeon Building]].''
This page is for listing all secrets, easter eggs and less obvious features in IVAN.<br>Needless to say, this page is full of SPOILERS! Discovering these secrets for yourself will always be more rewarding!__TOC__
If you accept the risks of reading this page, read on... otherwise now is a good time to hit that back button. I've included some blank space to make sure you don't accidentally read anything you don't want to.== Introduction ==
NOTE: This is not a page for listing [[Cheats and Exploits|cheats or exploits]] - this is for intentional features that are difficult brief guide explaining how to discover through normal gameplayinclude your customized dungeons on the IVAN world map.
== Three key resources ==
There are three key steps to getting your dungeon to appear on the world map.
=== Your dungeon data file ===
Your dungeon data file should reside in <code>Script/dungeons</code> where it will automatically be picked up by the game when it creates the world map. It should contain the kinds of things described in the article on [[Dungeon Building]]. Most importantly, the [[#DungeonControlVariable|<code>Dungeon</code>]] control variable will need to be the <code>DEFINED_VALUE</code> you set in <code>define.dat</code>, which will help link the dungeon to its overworld terrain.
=== define.dat ===
Anything you put in <code>define.dat</code>, you can refer to in your other script files. This is a general rule and is applicable to any of the data files. For example, if you want to create another config of a guard, then you just put a new <code>#define</code> in <code>define.dat</code>, and you can now refer to it in <code>char.dat</code> and your dungeon data file.
So it follows that you can <code>#define</code> your own dungeon name, which will be essential when we come to link the dungeon data file to the terrain data file.
Stick to upper case lettering when adding a new <code>#define</code>, and be sure to put an underscore when separating words.
Dos and don'ts: be sure items that are enumerated follow a nice numerical sequence e.g. <code>1, 2, 3, 4, 5;</code> or <code>2, 4, 8, 16, 32;</code>, rather than <code>1, 2, 5, 7, 8;</code>.
If we wish to refer to a particular dungeon in the code itself, say in <code>game.cpp</code>, then the code will need to know about it, and so a <code>#define</code> will need to appear in <code>ivandef.h</code> before compiling the game.
=== owterra.dat ===
The data file <code>owterra.dat</code> contains the "over-world terrains" of the IVAN world map. These are so named, because they become the little pictures that sit over the ground terrain on the world map. They denote the places - cities or dungeons - you can visit when adventuring in the world map, and so they need to be linked up to the dungeon data files.
Pictures showing famous owterrains...
Spoilers incoming!This table shows the control variables for each over-world terrain:
{| class="wikitable"! Keyword! Values! Description|-| <code>BitmapPos</code>| <code>x, y;</code>| This determines the bitmap position of the picture of the terrain in <code>WTerra.pcx</code>|-| <code>NameStem</code>| <code>"string"</code>| This is a string, beginning with a lowercase word, usually a noun or an adjective, for example, "mighty cathedral" or "cave entrance"|-| <code>UsesLongArticle</code>| <code>true</code> or <code>false</code>| |-| <code>IsAbstract</code>| <code>true</code> or <code>false</code>| |-| <code>CanBeGenerated</code>| <code>true</code> or <code>false</code>| |-| <code>AttachedDungeon</code>| <code>DEFINED_VALUE</code>| |-| <code>AttachedArea</code>| <code>0, 1, 2, ...</code>| |-| <code>RevealEnvironmentInitially</code>| <code>true</code> or <code>false</code>| |-| <code>NativeGTerrainType</code>| <code>DEFINED_VALUE</code>| MUST be non-zero. Can select from <code>DESERT</code>, <code>JUNGLE</code>, <code>STEPPE</code>, <code>LEAFY_FOREST</code>, <code>EVERGREEN_FOREST</code>, <code>TUNDRA</code>, <code>GLACIER</code>. Note that the tundra type produces the familiar snow terrain.|}
== A worked example ==
== Known limitations ==
----As of <code>0.50.6</code>, the number of slots is <code>32</code>.
= Eating Bone =As a lowly human in the world Overflow of number of IVAN, you are sadly relegated to consuming only meat, vegetables, fruit, liquids and graindungeons.<br>While Ways in which this means that you can happily eat a wide variety of foods including most ommel materials, you cannot even ''attempt'' to eat rocks, metals, bone, plant matter, plastics, gasses or fibrous materials such as nymph hair.<br>Now that might not sound like much of a problem, but there's a significant stat boost that can be gained specifically by consuming [[Ommel Bone|ommel bone]] or [[Ommel Tooth|ommel tooth]], much like how consuming any other ommel material (hair excluded) will give you a boost to certain statshappen.
But humans cannot eat bone! What a tragedy!<br>However, there's a specific category Population distribution of monster that ''can'' eat bones... and that would be canines.What does this mean? Well for one, it means that you can feed any friendly canines ommel bone items and watch as they become hulking beefcakes who can actually fend for themselves!<br>Alternatively, if you yourself have been polymorphed into a canine, you can eat ommel bone or ommel tooth items and benefit from it too!Monsters classified as canines are:* [[Blink Dog]]* [[Jackal]]* [[Puppy]]* [[Wolf]]Eating ommel bone will produce a unique message in the game log.Note: If you're polymorphed into a canine you can, of course, eat regular bones too. They are at least a little nutritious but are unlikely to stave off hunger for long.= Feeding [[Huang Ming Pong]] =Being a big fatty, Huang Ming Pong cannot resist eating any food within his sight.<br>If you feel like it, you can lure Huang Ming Pong out of his house terrain types collected by leaving a trail of food for him.While he is distracted and as long as he cannot see you, you can sneak into the sumo arena.<br>Alternatively, you can lure him out of his house onto broken glass or banana peels in order to hurt him - this will not deter him from seeking out and eating any food item in sight.NOTE: Huang Ming Pong is smart enough to not eat dangerous or rotten food items. However he ''will'' eat beneficial food items such as ommel fluids and holy bananas.= [[Fountains]] =Fountains are primarily a decorative feature - or they would be if this wasn't a roguelike.<br>While the most likely outcome of drinking from a fountain is simply quenching your thirst, fountains in IVAN can produce a number of different effects, ranging from granting free items to stat buffs to summoning hordes of hostile monsters around you.For more information, check the [[fountains]] page.= Hidden Items Inside Objects =Certain objects in the world will drop unexpected items when destroyed.<br>While usually the result of '''a'''pplying a pickax to something, destroying an object via explosions or magic works just as well.The objects that have a chance to drop valuable items are:* Beds* Couches* Random, earthen dungeon walls* Sofas= [[Secret Rooms]] =Within the [[Gloomy Cave]], up to two separate secret rooms with no entryways may spawn on any floor.<br>Secret rooms will always contain a chest full of valuable items, and at least one nasty trap - either land mines or bear traps made of strong materials.<br>It is highly recommended to make liberal use of the '''s'''earch function while entering these rooms, unless you have levitation active.For more information on locating and accessing these rooms, check the main page for [[Secret Rooms|secret rooms]].= Sneaking into the Sumo Arena =If you want to access the sumo arena without challenging Huang Ming Pong to mortal combat, you'll need to sneak in when he isn't looking - or can't see you.<br>There are two ways to achieve this:* Lure Huang Ming Pong a significant distance away from his house, far enough to break his line of sight with the stairwell.* Have some means of invisibility.Once you've snuck in... there's actually not a lot you can do really. Damaging any of the structures within the sumo arena or placing a trap will draw the ire of the town, and any items left in the arena will be cleared out when you go back upstairs.<br>Perhaps you could find some way to give you an advantage in the sumo fight ''without'' leaving items behind in the arena...?<br>Although that would be better classed as an exploit...= Taming Canines =If you've played at least a little IVAN before reading this page, you should be quite familiar with the ability to '''t'''hrow items.<br>While usually used for throwing items in order to damage an opponent from afar, there is another, less obvious use which also takes advantage of any [[bone]]s you might have encountered on your journey.<br>Throwing a bone at any canine creature will cause it to catch it in its mouth, eat it, and become friendly instantly.<br>With enough bones you can lead an absurdly large army of dogs, wolves and other creatures.Monsters that can be tamed this way are as follows:* [[Blink Dog]]* [[Jackal]]* [[Puppy]]* [[Wolf]]'''NOTE: This only works using bones specifically, and those bones must be made of a bone material. Items that are simply made of bone will not work - that includes skulls.'''= Unique Messages =While (usually) not practical or useful ''per se'', certain actions will cause unique and sometimes humorous messages to be printed to the game log.<br>Try:* Using various commands without any relevant objects nearby (e.g. using '''o'''pen without having a door present)* '''C'''hatting with literally anything.** See also: [[Science Talking]], a hidden feature used to raise your INT and WIS.* Interacting with altars in various ways other than '''O'''ffering items to them.* Sitting ('''_''' key) on various objects.** Trying this at an altar will actually increase your standing with that god by a small amount.* '''Z'''apping a bananasampling algorithm.