== Change Log - Full == === 0.1.23 > 0.1.24 === * Converted the documentation into one file. * Removed the town. The game starts in dungeon 1 with a tiny little bit of story. * The graveyard has been turned into a crypt and located within the dungeons. It is very basic at the moment. * Random merchants will appear in the dungeon. Merchants have been given more items, to make them more useful when encountered. * Creatures can pickup items. The total number of items a creature can carry is based on their size. * In text mode, door symbols are updated when closed. * Creatures can eat food and corpses that they're carrying. * Creatures can drink potions or throw them at enemies. * Creatures can zap the player or themself with wands. * Creatures can use weapons that they start with or pickup. They will favour weapons with special properties or use the most damaging. * Written in spellbooks. New spells are learnt from them, instead of from scrolls. * Written in wands and removed scrolls. * Compressed the tile image files. * Targetting in text mode no longer removes whatever is under the target. * Creatures can spawn other creatures of any type, when generating creatures to place in an area. They are generated next to the first creature. At the moment this can be seen with rats, which spawn in small groups. * Removed monks, because I want to concentrate on Fighters and Wizards. * Fixed a bug with selecting the nearest target. * Scrolls can handle spells that use targetting. * In text mode, creature colour is determined by their health. Above 75% is white, above 50% is light grey, above 25% is dark grey and below is red. * In text mode, neutral and Friendly creatures have a green background. * In graphical mode, neutral creatures have been given health bars. * Potions no longer have effect strings. "no effect" is displayed if nothing happens after quaffing the potion. * Fixed a bug with text strings on blindness, poison and confusion. * Fixed a bug with entering previously visited levels. * Level order is saved in character data, to make it easier to change for each game. * Status messages from previous turns are displayed in grey. === 0.1.22 > 0.1.23 === * Documentation has been converted to text format. This is to reduce space taken up and make it more flexible. * Written the tutorial back in. * Level and log data is no longer stored for dead and successful characters. * Removed the listen command. * Creatures move around more intelligently: * If they see the player and then the player disappears, they will move to the last place they saw the player. Creatures use pathfinding to do this, so if the player closes a door between the creature and the player, the creature will try to find an alternative route. Creatures can determine routes up to their intelligence * 10. So a giant ant, with intelligence of 2, could plan a route up to 20 squares through the dungeon. * Creatures will move around other creatures to attack. * Creatures have percentage chances of fighting, casting magic, using an item or using an ability each time. Using items isn't written in yet. * Started creature abilities. Currently giant red ants can spit fire. * Removed some unused code, data files and variables. * Written in creature corpses. Eating a creature corpse gives effects based on the type of creature it originally was. * Creatures are now able to carry gold and items, which they drop on death. They can't pick up or use items yet. * The code which destroys objects from damage types takes into account how much damage was inflicted. So a minor wound will rarely destroy anything, but a major wound is more likely. * Added in lots more items that can be destroyed by damage types. * Items carried by creatures can be destroyed from damage types, like the player. * Fixed a couple of bugs in the feed-to-pet code. * Made the code which determines random appearances for sets of specific objects more flexible. Rings and scrolls have random appearances now. * Random item apperances have different sell and buy values at merchants, if identified. * Creatures have descriptions, which can be seen when examining them. * Added a pet menu, which currently has actions for examining, playing and renaming pets. * Conducts are no longer stored for classes that wouldn't be appropriate for them. For example, Monks can't have the 'No Armour' conduct, because they fight without armour. * When a square has multiple items and the player presses the 'get' key, a menu of the items will appear, instead of picking them all up. * Rewritten the player and creatures effect systems to make them faster and more versatile. * Rewritten and unified the player and creature damage applying code. * Effects not given by race or objects are displayed on the main window. All effects can be viewed from the character screen. * Removed the coin materials, except for gold. * HP, Mana and Effects are displayed below messages, instead of at the side. * Creatures have more appropriate attack text. For example, red ants "bite" and chickens "peck". * Added lots more effects in, such as Acid Vulnerability, Blindness Immunity and Fire Healing. * High scores are displayed on the main window, rather than a seperate window. Also rearranged the layout of the high scores. * Pets are shown on the high score table, if they survive. === 0.1.21 > 0.1.22 === * Completely changed the interface. Everything happens in one window now. The game is designed to be keyboard controlled. * The inventory, containers, spells and shops are accessed through a keyboard operated menu. The inventory and spell windows have been removed. * Written a keyboard operated "look" command in. * Added a welcome screen. * Added a character information screen. * Potions can be thrown. They can be thrown at the player (works like drinking the potion), at the ground (smashes the potion) or at a creature (affects the creature with the potion effects). * Spell, item and ranged weapon targetting is done using the keyboard. * Changed the level order code, so that special levels can be written in. * Written a special level in. * Enemy spellcasters store a list of available spells. * Traps can work on creatures. They currently only work on pets, because enemies know where they are. In the future, the player will be able to put traps down, which enemy creatures will trigger. * Conversation answers are written to the log file. * Critical hits have a small chance of disarming weapons and a tiny chance of destroying the weapon. * If the pet is alive when the game is over, the end score is multiplied by 1.1 (i.e. an extra ten percent). * Starting score is set to zero. Previously it was influenced by starting gear and gold. * Gold adds a little bit to the inventory weight. * Gold can be generated in containers. * A maximum of 100 gravestones will appear in the graveyard. If there are more than 100 dead characters, a random selection of 100 of them will be shown in each game. === 0.1.20 > 0.1.21 === * Magic * Spells have been modified to allow them to be cast from the player or a creature. * Creatures can cast spells. They behave intelligently, although there are not many spells available. For example, they cast fire/ice when the player is in range, cast displace when heavily injured and so on. * Enemy creatures may suffer from spell failure, like the player. They also regenerate at 1 mana point per turn, like the player. * The player and creatures can target spells to specific locations. * The spell window has a scrollbar when necessary. * Written in a few extra spells. All current spells are just for testing and will change a lot before being finished. * Merchants and Containers: * Merchant and container views have been converted to lists, to make them easier to use. * Merchant and container views display information about the selected object. * Special data is stored on items sold to merchants and found in containers. This means additional properties that make an instance of an object different to others. For example, all soup items have different flavours. * Combined a lot of the merchant and container code. * Improved a few of the merchant pictures. * The default window layout will be applied to new installations. * A few minor things. === 0.1.19 > 0.1.20 === * Written in Wizards: * Magic effects. In text mode, symbols flash on for a few milliseconds. In graphical mode, a spell effect picture flashes on for a few milliseconds. This can be seen on fire and demolition spells. * Pictures for all race/gender combinations. Also made some little improvements to some of the other class pictures. * Spell window for casting (left-click) and examining (right-click) spells. * Mana, which is reduced based on the power of the spell cast. It is restored a little bit each turn. * Spells can be learnt from scrolls. * Mayor: * Added the mayors building to the town. * Added the mayor and a conversation, which explains the quest and what the player must do. * The player wins the game by presenting the Jewels of Power to the mayor, instead of just reaching the town. * Rearranged the town a lot. It's smaller, but still contains everything that it did before. * Removed the message window. Prompts are now displayed in the log window. * Combined the container, merchant and dungeon windows. * The items sold by merchants will increase when the player gains a level. * The new game window displays race, class and pet descriptions, instead of numbers. * Creature size is now stored in the data files. This is used to determine how difficult it is to hear the creature. * Removed the data from unsorted.ini and added it to properly named files. * Removed the game over window. * Bumping into a secret door reveals it. * Creatures killed by pets show on the "Creatures Killed" list. * Fixed a bug in the code which illuminates walls, it was illuminating all adjacent tiles instead of just walls. * Added a simple damage indicator when performing a ranged attack. * The list of creatures killed is no longer stored in memory. * Loading a game no longer counts as a turn. * Adjusted the suggested window layout to give more space to the dungeon window. * Moved the status window menu to the main menu. * Removed some stuff from the default view of the status window. Also, some things wont appear for classes where it wouldn't be relevant. For example, fighters don't cast spells, so mana isn't displayed for them. * Creatures no longer random walk onto stairs when they're being processed on a different level. * A few minor things. === 0.1.18 > 0.1.19 === * Viewing the contents of a container is done with the pick up key, instead of the open key. This means the open key has been removed, because it no longer does anything. * Removed the message that says a container is on the current square, because the player can see it. * Written in tools. So far there is a candle lantern and a magical lantern. * Reduced the distance that characters can see. Equipping a light source will improve this. * Items can no longer be dropped on squares containing containers. Instead, they can be placed into the container. * Written ranged weapons back in. * Lots of bugs fixed: * Inventory weight is now rounded to 1 decimal place, to avoid numbers that are a tiny bit out, like 123.000000001 * Fixed the "is not affected by poison/confusion/blindness" messages when creatures are affected by something that deals that type of damage. * Stopped invalid items being generated in containers. * Fixed a bug which caused player data to get overwritten when the text/graphical mode or size was changed. Thanks to Glowie for letting me know about that. * Fixed the level which must be reached once the winning artifact is recovered. It should be the town, not the penultimate level. * When the container or merchant windows are open, the "Game" and "New Game" menu items are disabled. * Fixed the area visible when blinded. === 0.1.17 > 0.1.18 === * Item effects are now removed when an equipped item is dropped. Thanks to Crypt for letting me know about that bug. * Attempting to attack a distant creature, without a ranged weapon equipped, no longer counts as a move. Thanks to Glowie for telling me about that. * Removed the cook and baker from the town. The general merchant no longer sells food. The amount of food sold by the butcher and farmer has been increased. This reduces repetitive actions when starting a game. Thanks to Glowie for suggesting that. * Removed all the save and skill data from the creature and player data files. There are now three stats, which everything else is based on: Strength, Dexterity and Intelligence. * When re-entering a level, the turns between leaving and entering are applied to the creatures. So effects (like poison) occur, they randomly walk around and healing takes place to simulate the time while the player wasn't on that dungeon floor. * Written in functions to determine the degrees between two points and return a compass direction. * Written some help pages into the documentation and cleaned up the front page. * The listen action displays the direction the sound was heard from. * Friendly creatures and the player have a green health bar. Hostile creatures have a red health bar. * Monsters heal very slowly over time. === 0.1.16 > 0.1.17 === * Added a suggested layout menu item, which can be used while a game is in progress to resize all the windows to an appropriate size. This was added based on feedback in here: http://groups.google.com/group/rec.games.roguelike.development/browse_frm/thread/e37eff57031d18df/ * The status window shows three dots in the bottom right corner when the text overflows. * Added a 'Recommended' menu item to the status display list. * Added a welcome message, which says that Paprika is in development. * The minimap is now displayed on the status window, rather than it's own window. * The minimap decreases in size if it overlaps the window. * Creatures now have fortitude, reflex and will saves. * The baby dinosaur pet has a chance of causing temporary blindness when it attacks, due to it's spike. "Ooww, not in my eye!" * Improved the storage of special data on creatures and objects. * Made the town a lot smaller and made most merchants start outside of buildings. This is so moving around in the town requires less processing. * Improved formatting of the preview text in the new game window. * Bugs * The "new game" menu item from the windows menu unloads the current game if one is in progress. * Life detection spell now uses the distance function to show the distance between player and creature. * Fixed the minimum size of the new game window. It was too small and obscuring the pictures. * Removed * Nearly all the creatures. There's only 6 now. This is so I can concentrate on finalising how creatures will be stored. * Bestiary. I may add it back in the future, but it serves no purpose at the moment. * Some stats from the status window, which are displayed elsewhere: Name, Class, Race, Location. * Hole traps. They don't make sense with the new XP method. * Journal. It makes more sense to use Notepad, so there's no point in me spending time on that instead of more important things. === 0.1.15 > 0.1.16 === * Experience has been completely removed. The character level is now determined by the lowest dungeon level reached. From the player perspective, the advantages are: * The difficulty of the game can be controlled easier. So you wont get bored fighting really easy monsters or be annoyed by being placed into fights with impossible monsters. * No penalty for avoiding combat by sneaking around creatures, this is especially useful for rogues. * There aren't (m)any roguelikes using this system, so it'll make a nice change. * All games will contain the full range of class levels, unless you get killed :) * Pets * The pet type and pet name is now changeable from the new game window. * Added a spider to the available pets. The spider is weaker than the baby dinosaur, but it has a poison attack. Spiders are not available if arachnophobia is turned on. * Your character can now feed their pet if they have some food and are next to the pet. * Bugs * Fixed a bug that caused incorrect poison messages to be displayed. Thanks to Malorzean for discovering that. * Fixed a bug where a monster would do nothing when the player paused next to it. * The furthest distance seen by the player was always one less than it should have been, this is fixed now. * Status Window * Added a lot more information to the status window (saves, skills, proficiences, etc). * You can now select what is displayed on the status window. Just click the window and check/uncheck the items. * The status window is updated after moving to a new level. * Decision window * Messages can now be stored as files or generated on demand. The files are stored in \data\talk\. * Selecting an option can lead to another set of options, this allows for conversations. * Added a variable string $character$, which will be replaced with the characters name if included in a message. Also added $player$, which is replaced with the players name. * The three parts of Paprika that use the decision window are all using the new code (close door, merchant, non hostile creature). Although none of these use the full functionality of it. * Scrolls and rings have been renamed from 'Scroll of X' to 'X Scroll'. * The main window title displays the character race and character class, as well as the character name. * Removed the conducts window. They been added to the status window. * It's now possible to hear objects, using the sound.ini file. For example, if the character is near a fountain, they will be able to hear water splashing. === 0.1.14 > 0.1.15 === * Written in a creature-attack-creature function. * Expanded the creature damage and effect system, so creatures can now be affected by blindness, confusion, poison, etc. Only poison has any effect at the moment though. * Written in the code to start the pet system. You get a little spiky thing that will fight with you. He can't do much yet. * Instead of just looking for the player, creatures will now look for anything that is hostile to them, and then attack or move closer. * The field of view is now circular, instead of square. This wont make much difference in the dungeons, but should be noticable in the town. * The bestiary shows how many creatures are in each section, using the same method as the inventory. * The bestiary shows the total number of creatures that can be found and how many have been found. This is a bit spoilerish, so I've added an option to the unsorted.ini file to disable that. * On the message window, pressing down on the last option loops round to the first. Pressing up on the first option loops round to the end. * Made some small improvements to the pathfinding, so the path goes more in the direction of the destination. * Friendly creatures show a health bar in graphical mode, with a blue line instead of green. * Changed the active games window slightly and added more information about saved games. * Fixed a bug that sometimes occured when dumping character info, if tiles didn't have a text equivilant. * Examine has been added to the list of actions from the merchant decision window. * The new game window takes into account the mode used, so if text mode is in use, the player picture is not generated. === 0.1.13 > 0.1.14 === ==== Day 7 of the Orange October Minigun 7DRL Challenge ==== * Written in containers. They can start with a few random objects and you can place items in them for retrieval later. * Generalist merchants now buy scrolls and have a small chance of selling scrolls. * Scroll of Teleport has been renamed to Scroll of Displace. It moves the character to a random place on the current level. I will write a Scroll of Teleport, which can move you to any level you have been on. * Added the bestiary window, which shows creatures that have been killed. Several more things are planned for that, see the to-do list for more info. * It's now possible to equip two rings. * Fixed a bug that would happen when selling an item to a merchant that had no items. * Fixed spelling of "sapphires". * The fire spell only works on creatures that can be seen, so it no longer goes through walls. ==== Day 6 of the Orange October Minigun 7DRL Challenge ==== * Monsters can now open doors (or just push them open if they don't have hands). A listen check is performed based on the distance away, if successful, you'll get a mesage saying you hear a door opening. In the future, rogues will be able to lock/unlock doors to stop creatures using them. * Monsters follow through levels when the player uses steps. No more running away! * Game difficulty now determines how merchants buy/sell items. Easy means lower priced items and more gold for selling items, hard is the opposite. * Written in a mage merchant, who sells scrolls. He can be found in one of the buildings in the town. * The distances of monsters displayed by the Life Detection spell is now more accurate. * Shields are available as a viewable section of the inventory. * Fixed a bug that was giving experience to the player everytime they went down a level, instead of just the first time. === Day 5 of the Orange October Minigun 7DRL Challenge ==== * Written pathfinding, using a modified version of a method by Pieter Droogendijk. Details here: http://roguebasin.roguelikedevelopment.org/index.php?title=Quick_Pathfinding_in_a_Dungeon === 0.1.12 > 0.1.13 === ==== Day 4 of the Orange October Minigun 7DRL Challenge ==== * Creatures can now have immunities and resistances. They can also have reductions and vulnerabilities. For example, undead are immune to poison and creatures that are meant to be cold will take more damage from fire than a regular creature. * When a type of monster is killed by any character, it's identification string is stored in the killed.ini file along with the last character to kill it. This will be used to create the encyclopedia window. * Weapon and shield size restrictions are now in place, based on the size of the character. For example, small characters can't use large shields and normal characters can't use large weapons if they have a large shield equipped. ==== Day 3 of the Orange October Minigun 7DRL Challenge ==== * The message window can now show tiles. Tiles on this window and the 'new game' window have a town floor background so the object or person can easily be seen. * Doors can now be closed by pressing 'c' when adjacent to a door. This will not work if a creature is in the doorway. * Fixed actions menu commands not working correctly if keys have been reassigned. * Added a check in to make sure the player doesn't start on top of a monster. * The version number is stored in save files. If a game is loaded that was created in a different version of Paprika, a warning message is displayed. In future, if the save file version is known to be compatible with the application version, the warning will not be displayed. === 0.1.11 > 0.1.12 === ==== Day 2 of the Orange October Minigun 7DRL Challenge ==== * The game is now more difficult if the date is Friday the 13th. * Redesigned the 'new game' window and added a picture of the selected character. * In tiles mode, all race and class combinations now have male and female pictures. * Written in a window, which displays a message and allows the user to select an option. This is used on merchants (view shop, swap places or attack) and on creatures that aren't hostile (swap places, attack or examine). * Added pageup and pagedown to the list of available keys. They are being used for diagonal directions, along with home and end. This allows all eight directions to be used regardless of the state of num lock. * Empty folders are no longer required when Paprika is installed. Folders are generated at run time when needed. === 0.1.10 > 0.1.11 === ==== Day 1 of the Orange October Minigun 7DRL Challenge ==== * Improvements to the town: * The graveyard is accessible from the town. * The town has fields with trees. * Friendly animals appear in the town. At the moment this is just dogs and chickens. I may add cats if I can find a suitable picture of one. * Statues of successful characters appear in the town. * Added an arachnophobia setting to the unsorted.ini file. When enabled, spiders will not be generated in the dungeons. Resumed games will change spiders into snakes. * Creatures have a listen modifier, which determines how easily they can be heard. For example, dragons can be heard from further away than rats. * The item colour on the mini-map has been modified slightly. Pickupable items (weapons, bananas, etc) now appear in bright blue and unpickupable items (writing, graves, etc) appear in dark blue. === 0.1.9 > 0.1.10 === * Town * Buildings are generated in random places. * Each building contains one of the available merchants. * Players start in the town and must bring the Jewels of Power back to town. * Merchants no longer appear inside the dungeon. * Added an alternative death ascii image and a monk ascii win ascii image. Each class has a different win image. * The number of each creature killed by the player is now tracked. This can be seen in character dumps. * A character dump is now automatically created when a player wins or dies. * Improved the code which archives players. * Combined the code which sets each windows position and size. * Made the player class a bit stronger and made the hardest monsters a bit weaker, which should balance things out for a while until I finish writing in lots of scrolls, magical weapons and so on. * Removed the automatically generated writing on the dungeon floor, because I couldn't think of anything useful to say in them. === 0.1.8 > 0.1.9 === * Portraits now display information about the person in them. This can be dead characters, successful characters or other people. * Added IsImmune and IsResistant functions for players. A resistance to something works 50% of the time. * Written in two more scrolls: Scroll of Greed (detects coins) and Scroll of Teleport (moves to a random location on the current level). * Started a player journal, for storing notes. * Lots of small things: * The Tutorial/Graveyard menu actions function correctly when the other window is open. * Moved some hard-coded messages to the messages.ini file. * Lots of minor code improvements. * XP ratio and coin values are now stored as a percentages, rather than a decimals. * Added '...' after the 'Documentation' menu item because it leads to another window. * Random names can start with vowels. * Stopped caching some data that isn't used much. * All tiles in the graveyard are now visible when the player enters the graveyard. * Removed the 'Increment' and 'Decrement' functions and replaced all code that uses them with normal calculations. This will take a bit longer to write, but the code runs about 8 times faster. * Listen now works up to six squares, instead of three. * Fixed a few bugs when the player won. * Anything that reveals the whole map (debug command, graveyard, scroll, etc) now shows secret doors as well. * The area of effect on the demolition spell is now random, instead of being 7 squares in every direction. * Increased the chance of secret doors appearing. * More feedback on a few things, like picking up items, reading scrolls, etc. * The area type (dungeon, forest, etc) is stored in the level file. * Fixed the no shields conduct staying when a shield is equipped. * Successful players are now archived to the 'Successful' folder. * Removed all blank lines and added a few comments. * The grave that appears when a player dies is now blood and bones instead. * Removed the "Creatures" section heading from level files. === 0.1.7 > 0.1.8 === * Dead characters are now moved to the 'graveyard' folder. * Written a dynamic graveyard level, which is filled with the gravestones of dead characters. * Written a tutorial which goes through the idea of Paprika and some basic things. * Added two more scrolls: * Scroll of Life Detection (shows monsters in current dungeon) * Scroll of Demolition (removes nearby walls inside the dungeon) * Potions can now be assigned an image instead of being randomly assigned. Water and Salt Water have been fixed to clear (well, blue) potion images. * Moving and fighting can now be done diagonally by the player and creatures. * Messages on the floor can be created and changed. * Keys are now configurable using the keys.ini file. * Improved handling of items in the merchant window, the code is better now and duplicate items show as stacked. * Added stuff to the documentation and added a menu command in Paprika to open the documentation. * The dungeon is no longer revealed when the character dies. === 0.1.6 > 0.1.7 === * Fixed a bug that froze Paprika when a monster was killed. Thanks to Crypt for letting me know about that. * Fixed bugs that occured when using a language that doesn't have decimals with a fullstop, like this: "1.2". Thanks to Crypt for letting me know about that. * Some changes to make it easier when I convert it to VB2005 === 0.1.5 > 0.1.6 === * Creatures can now have effects. They have all the usual functions, like applying/removing/checking/expiring/loading/saving and so on. The first places this will be used are with magic weapons, traps and magic. I wish VB supported class inheritance! * HTML screenshots now have unique filenames and a bit of info on the page. * Hostile creatures show a health bar. * Items can be destroyed by specified effects (fire, rust, etc). The chance of an item being destroyed is related to the percentage of damaged sustained. * Added the code and ini data to handle scrolls. So far I've written in a Map scroll (reveals level) and a Fire scroll (burns all creatures within five tiles). I need to add in extra things, like chances of a spell working, saves against magic and so on. === 0.1.4 > 0.1.5 === ==== Day 3 & 4 of the 7DRL challenge ==== * Fixed a bug that allowed dead players to continue using ranged weapons (thanks to Max Bane for discovering that) * A random quest message is now displayed when you start a new game. The quests all involve retrieving the Jewels of Power. They need a bit of work to make them more authentic * Added Vegetarian, Vegan, Fruitarian, Carnivore and No Potions conducts * Items on the initial square when starting/resuming a game are now displayed === 0.1.3 > 0.1.4 === ==== Day 2 of the 7DRL challenge ==== * Added snake traps. They are what they sound like... step on one and a load of random snakes is unleashed upon the player! * Shields are written in. They work like normal D&D shields. There's small (AC1), medium (AC2) and large (AC3) sizes. Small creatures can't use the largest type of shields. Larger shields provide more protection, but weight more and will resrict allowed weapons (when I write that in) * A conducts system has been written. There are four conducts so far: No food, no weapons, no shields and no armour. Conducts are visible from the new conducts window and on character dump files * Started planning the magic system and the spells that will be available. See the spells.ods file in the documentation directory for information about that === 0.1.2 > 0.1.3 === ==== Day 1 of the 7DRL challenge ==== * Added a page about Paprika at the Roguebasin: http://roguebasin.t-o-m-e.net/index.php/Paprika * Added a thread to r.g.r.dev to announce my participation in the 7DRL challenge: http://groups.google.com/group/rec.games.roguelike.development/browse_frm/thread/f3415a19dbd01fa7/ * Race is now stored with high score info and displayed in the high score window * You can no longer search while blinded * Added easy and hard modes. Easy means better treasure and easier monsters, harder is the opposite. Additionally, secret doors do not appear if the difficulty is set to easy. The difficulty mode can be changed at any time and is effective on levels generated after that point * Pressing 't' will use the stairs on the current square. This is easier to remember and use than '<' and '>'. Those keys will still continue to work though, at least for now * Fixed a bug that would cause an error when the application was closed when the merchant window was open * The merchant window is now resizable and changes to the display mode affect it immediately * A check has been written in to make sure only ranged weapons are used to perform ranged attacks * The status screen is now only updated when it's visible * The creature data is now stored like an ini section, rather than a line. This is to make it easier to work with when effects can be used on creatures * Left-clicking the dungeon will show info about stuff on that square. Right-clickling will perform a ranged attack on the creature in that square (if possible) * Speeded up item name to inventory number code * Previously identified potion types will now use their real names in stores (for example: 'Bottle of Poison' instead of 'Tall Red Potion') * Added an option in data\display.ini for permanent text mode, which means the mode is always text and can't be changed. This allows me to distribute a version that doesn't include the tiles, for people who never want to use them or want a faster+smaller download === 0.1.1 > 0.1.2 === * Removed most of the error handling code and improved the code so it checks when an error would occur instead * Some small improvements to how the tile array is stored. This speeds up displaying of graphical dungeons slightly * Improved how grave and player tiles are handled === 0.1 > 0.1.1 === ==== This is now stage 2 - Optimising & Testing ==== * Optimisation * All dungeon/item/object arrays are now only the dimensions they need to be. For example, a 20 by 40 dungeon would always use the largest value before, so that would be a 40 by 40 array. Now it uses the actual values, so it's a 20 by 40 array. This speeds up a lot of code, especially loops * The tile objects array was causing lots of parts of the code to be slow, because it was so big. I've changed it to a one-dimensional array and rewritten all the code for accessing that array. This had significantly speeded up many operations, most notably saving/loading, outputting maps (text/graphical/mini) and exiting. It also means there's no limit to the number of items that can be in a square * Numerous additions of 'With...End With' code * The method of clearing dead ends has been vastly improved, so it's now 25 times faster (based on 3 tests of a 100x100 map) * Removed some useless stuff from the code that draws the mini-map * The main and mini maps are only drawn once when starting a new game, instead of twice * Combined all the lines that output preview text on the new character form * Combined ACTION_PAUSE and ACTION_ATTACK into ACTION_STAY, because they result in the same thing * Improved the code which selects a monospace font for the dungeon in text mode * The inventory array now starts at 0 and the inventory weight code no longer attempts to retrieve a non-existant item * When saving, the visible tiles and map tiles are combined. This reduces the size of the save game files and speeds up loading * In merchant stores, the prices and objects names are only stored once. This reduces the number of file reads * Weapon damage and armour class are only calculated when they may have changed, instead of every turn * The inventory weight code no longer attempts to retrieve the weight of items that don't exist * Removed some unused variables from the output code * Made some small adjustments to the way monsters are output in text mode * All long lines have been wrapped using underscores * Testing * Stopped characters being created if their names would create illegal filenames * The main window title is reset when a game is closed * Fixed calculating of monk unarmed damage * Screenshots now display just the visible area, rather than outputting the other parts as spaces * Monsters no longer get a free attack when starting a game * Hidden doors and traps are only revealed by search checks if you have a line of sight to the object. No more detecting traps on the other side of walls! === 0.0.20 > 0.1 === All essential features are written in, so Paprika is now in beta stage and has been jumped up to v0.1. * Merchants are now written in. There's lots of different types (butcher, alchemist, generalist, blacksmith, etc). They have random items for sale, based on rarity. They sell at different percentages based on type and randomness. Some merchants will allow you to sell things to them. For example, blacksmiths will buy weapons, cooks will buy food and generalists will buy pretty much anything * Doors can now be secret, they look exactly like walls until a successful search reveals them * Written a function in that performs skill checks * Added searching using the new skill check function. Searching can reveal traps and secret doors * Settings.ini has been split into display.ini and log.ini. The messages.ini file is now writings.ini * You can now dump HTML screenshots as well as regular text ones (using the character dump). The difference is that the HTML screenshots are shown in colour * The display size is now saved and the menu items for display size/mode now show check marks * Added a listen skill, which can be used to detect creatures behind walls and doors. Gnomes and Elves get a small bonus * Fixed some bugs: Doors overwriting tile contents and red beetles were blue * Added an 'Actions' menu which gives access to all the commands. This is intended to help new players learn the controls before they are comfortable just pressing the letters * Added a check in so that holding down a direction key will move you one step in that direction at a time, instead of doing nothing and then jumping down to the final location * Added a page to the documentation with the key list * You can now swap places with a neutral or friendly creatures by pressing shift and the direction * Added a preview checkbox to the new game window and changed the layout * Most text strings have been removed and placed in messages.ini * Reordered some menu items and improved the 'Windows' menu * Fixed handling of border and title bar sizes causing incorrect resize widths/heights on some windows === 0.0.19 > 0.0.20 === * Fort, reflex and will saves can now be made. The success rate is dependent on class, race and level. Saves are currently written in for poison (fort) and confusion (will). This will be used more later for spells, traps and so on * Dropping, equpping, unequipping, eating and drinking an item now counts as an action * When your hitpoints are below 25% they show in red, otherwise they appear normally * The attack/defence skill and random rolls have been removed from combat messages. The messages are now critical miss, miss, hit and critical hit * In the tradition of roguelikes, an ascii grave appears when you die. Also, a shield+sword appears if you win. I've also written in a magic crystal ball which will be displayed for magic classess when they win * If you're score doesn't make the high scores list, it is temporarily displayed below all the other ones so you can see your score and how close you were to making it to the list * The basic functionality of doors has been written in. Doors are always located on the edge of rooms and they can be opened by walking into them. Opening a door counts as one action. In the future I'll make them more useful, by allowing them to be locked/unlocked/bashed/closed and so on * The dungeon size has been made a bit more random so they aren't so square * Added hole traps which plunge you down into the level below * To avoid a trap, you now make a reflex save instead of a search skill check === 0.0.18 > 0.0.19 === * Inventory improvements: * Multiple instances of the same item display the number in brackets next to it, rather than showing each on a new line * Items are now shown in alphabetical order * The maimum string size returned from INI files has been increased because large inventories weren't being returned * The equipped flag is now stored as a number, rather than 'true' or 'false'. This is done to reduce file sizes * Random item selection has been improved to give more control and more realistic dungeons. Each level has a percentage chance of each object type, then a random object is selected within that object type based on rarity and level. For example, a small number of weak traps appear in the first few levels, but a large number of lethal traps appear in later levels * The value of inventory items now counts as 50%, instead of 100%, when determining that part of the final score * Classes can now have starting gear. Currently this is implemented for fighters (leather armour and club). Items are not automatically equipped because that might go against conducts when I write that in * Switched the colour scheme back to white-on-black * I've started working on ranged weapons. They are usable at the moment, but they're not very user-friendly and don't take into account ammunition * Rewritten most of the effects system to take into account different effect types. The possible effect types are turn-based, permanent (last until something removes them) and object-based * Rings are written in, equipped them will create object based effects, although they are all negative at the moment :) * You can no longer tell what a message on the floor is if you're blind * Log messages now wrap onto multiple lines - finally! Each line attempts to wrap in a logical place, like the end of a word * You can dump character info by selecting the item from the options menu. The status window has been reduced to just the important things now, since the character dump shows everything * There's now a small and large display mode which changes the font size (in text mode) or the tile size (in graphical mode). The default is always normal until I write code in to save the users preference === 0.0.17 > 0.0.18 === * Experience has been written in. All monsters have a level, which is used to determine how much they are worth when killed. Killing more powerful creatures gives a higher reward, killing less powerful gives hardly anything or nothing in extreme cases * Characters can now advance in levels. Skills and other abilities improve as they grow more powerful. Each class will have five different levels. For more info, see the fighter and monk stats in the class.ini file * Fixed the colour of stairs that go up on the mini-map. It should be orange like the other stairs, not blue like objects * Traps no longer get displayed on the mini-map until they've been activated * HitPoints are now correct when modified by race. HitPoints increase by ratio when increasing level, so if you have 18 of 30 (60%) hit points on level 3, you'll jump to 24 of 40 (60%) on level 4 * Weapon and armour restrictions are now in. They were temporarily hard-coded in before, but now they're written in properly * Race seeing distances are now written in. Humans can see seven squares (normal vision), elves and gnomes can see eight (low-light vision) and dwarves can see nine (darkvision). Monsters will probably get their own unique distances, but for now they can all see 10 squares away * Undead are 'destroyed' instead of 'killed' when they are reduced to zero hitpoints * In text mode you display grey if below 50% health and red if below 25% health * Item selection is now based on frequency and dungeon level (i.e. precious gems are more likely to be found deeper) * High score if you win is gold+inventory value+(experience*5)+(lowest level*40). High score if you die is ((gold+inventory value)*0.85)+(experience*5)+(lowest level*40). The 15% decrease when dying is adventurer tax, which pays for retrieval of your body from the dungeon and burial services === 0.0.16 > 0.0.17 === * Races are now in and virtually all the stats I want have been written in but aren't being used yet. The player stats are determined by class and then race modifiers are applied. For example, the default hit points for fighters is 10, but for gnomes it's 11 because they get a small bonus. See race.ini and class.ini for details * The new character creation screen shows a preview of the stats that will be used * I've changed the application colours to make it more like windows * Moved ale and wine into the potions and added a new potion * Moved the item examine code into the item class. Using the right-click menu or double clicking an item in the inventory displays the examine info * Clicking a known tile shows information about the items and creatures there. The information is a bit more vague than if you're carrying the item and examine it * Objects in text mode are now displayed in colours, i.e. a ruby potion is a red exclamation mark * Significantly speeded up rendering of text mode. For example, displaying all of the largest possible dungeon on my computer would take 0.7 seconds. It now takes 0.1 seconds. For normal use the generating time will be instant * All items now have a value in gold pieces. When you die the total value of your pack is added to your gold to make the score. The value of an item can be seen by examining it * The shrouded/visible state of the tiles is now saved so when you return to a dungeon level you still remember which bits you've seen * Rewritten some parts of the game over code. 'Death' is now 'Result', since the outcome could be success. 10% of the value of gold and possessions is removed if the final result is death, to take care of 'adventurer tax'. Winning the game adds the value of the Jewels of Power to your score, worth 2,500 gold pieces * All combinations of race and class currently available have a unique picture * The monster generation code has been rewritten. It's now based on dungeon level (i.e. difficult monsters further down) and frequency (i.e. rats are more common than dragons) * A load of new monsters have been added so I can test out the random selection code. * The code which obtains a random key from an ini file section has been improved so that the total doesn't need to add to 100, it can be anything now * It's now possible to get small, medium and large amounts of the five coin types. The actual coin amount is generated randomly based on the material and size category === 0.0.15 > 0.0.16 === * Improvements to the mini-map: Objects+Creatures+Stairs are now displayed and the tiles are displayed as squares instead of circles * The inventory screen can show everything or sections * Operations on inventory items have been speeded up and the amount of code has been reduced. All operations work directly with the inventory array, instead of the list control * Added a confusion effect. It can currently be obtained by drinking wine or ale (50% chance). It causes the player to move around randomly * Critical hits from players and monsters deal out twice as much damage. Other effects like blindness are more likely to be effective and will last longer if inflicted via a critical hit * Traps have been added. Each class also has a search skill, which is used to see if they are affected by a trap when stepping onto it. Eventually that will be used for detecting traps and secret doors * Armour restrictions are now in place for monks (can't use any) and for rogues (can only use light armour) * Items all have weights now and each class has an amount they can carry. Carrying over your limit causes you to be 'burdened', although this doesn't do anything yet * Made some slight adjustments to the min/max dungeon sizes * Effects are now saved and loaded * Added a variety of snakes (normal (inflicts poison), cobra (stronger+more lethal) and two-headed (two attacks)) and a giant spider (inflicts poison). At present these are too powerful since character levels haven't been written in yet * The map is revealed when you die * Examing an item shows more information (weight, damage for weapons, class for armour, info for potions, etc) === 0.0.14 > 0.0.15 === * Weapon restrictions are now in place for monks (can't use any) and rogues (can't use large/massive weapons) * Added a 'Delete' button to the active games window and made some other improvements to that window * Monsters can now attack multiple times per round * Coins are now the correct value for their material. Gold coins are now stored with decimal places, so copper coins (100 copper=1 gold) make a difference * A warning now appears when the user tries to start a new game that would overwrite an existing game * Creatures can now be hostile, neutral or friendly. Creatures attacked will become hostile. This has been added so I can create store owners, pets, dungeon insects and so on * Added a high score file to record the best players. These are displayed on the new high scores window. The scores are just based on gold at the moment * Added a basic poison type, which randomly inflicts small amounts of damage until it disappears. it can be obtained by drinking a bottle of poison and removed by drinking a bottle of salt water * Tiles are now loaded the first time they are used, instead of loading all of them when the application starts. This reduces memory usage, speeds up starting and means no tiles are loaded if text mode is used exclusively * Several bug fixes * In combat, 20 will always be a successful hit and 1 will always be a failure. This works for monsters and players === 0.0.13 > 0.0.14 === * I've created a long to-do list so I can better organise my time and concentrate on what needs to be done. It's constantly being changed so I haven't included it with this build * Made some optimisations to outputting maps in text mode * Added various effect functions (apply, check, decrement, display, remove) and added a blindness effect * Added armour, which contributes to the defence skill in combat * Item equipped flags are now saved * Potions now have effects. Each potion type is randomly associated with a potion design, like most other roguelikes * Rewritten the damage and effects applying code for players * Dungeon features are now stored in features.ini and randomly generated. No more hard-coding for that :) * Added a few more dungeon features like swords and portraits. They don't do anything at the moment * Changed 'Resume Game...' to 'Active Games...'. It'll have a delete option at some point * Characters can now be male or female. Sex has no effects on gameplay * Character class and sex can now be generated randomly * A grave is now displayed when you die and a message says the cause of death * Some other small improvements === 0.0.12 > 0.0.13 === * Created a creature class which holds all the data about each creature and their functions * Created a player class which holds all the data about the player and their functions * Started working on an inventory item class * Reduced the maximum amount of items in a square to five and added code to more items than the max can't be dropped * Line of Sight code now takes into account the distance. At the moment anything beyond seven tiles can't be seen * Improved handling of coins. They're now added to the coins total, the amounts are stored in the coins.ini file and each type of coin is worth different amounts. * Levels are now generated when needed, instead of all being generated at the start. This greatly reduces the time to start a new game * The main save file is now stored in ini format * The amount of monsters per level is now determined by the size of the level, rather than the dungeon level. This means (when Paprika is ready and play-tested) it should balance with the number of items, which is also determined by the level size * Objects are now correctly drawn under monsters in graphical mode * Monsters that can't be seen are now not drawn shrouded * Monsters that aren't in combat and can't see the player will sometimes wander around aimlessly * The player, creature and combat modules have been removed * Split the output code for text and graphical maps. The code has been improved and runs faster now * Lots of other small improvements === 0.0.11 > 0.0.12 === * The 'Resume Game...' menu item now displays a selectable list of games with info * Added an item that is automatically generated on the lowest level. Returning it to the surface "wins" the game. Note: This is just a temporary method to test out and write code for winning * Added gold as a player attribute and gold items. Code needs to be written to convert gold items to gold points * The dungeon view screen is now resizable. The visible distance settings have been removed from the settings file, since they aren't needed anymore * Improved storage of tile filenames and speeded up loading tiles slightly * Added some pages and info to the documentation * It's now possible to switch between text and graphical mode in game. It's no longer necessary to restart * Added modifiers to the random dice roll function, so it can now accept strings like 2d6+4 === 0.0.10 > 0.0.11 === * Extracting random values from ini values has been rewritten to use percentage tables. It's more effecient and easier to understand now * Converted Change Log from a text file to a HTML document * Implemented basic weapons into combat and added them as items * Weapon damage and size is stored in the new weapon.ini file * Written the equip/unequip code, it only works for weapons at the moment * Item generation is now random and stored in the new frequency_objects.ini file * Renamed 'campaign' to 'game'. I think it makes more sense that way * Class data is now stored in the new class.ini file * Some code tidying === 0.0.9 > 0.0.10 === * Added attack and defence to monsters * Players also have an attack and defence rating based on class * Lots of improvement to the combat system * Divided monsters into groups. When selecting a monster a random group is selected, then a random monster within that group is selected. For example, 'Rats' then 'Dark Brown Rat' * Simplified the inventory window * Status messages are now displayed in colour (red for combat, grey for debug, etc) * Started commenting the settings.ini file, although I'm going to remove that and start some basic help files when things are more finalised * Lots of minor improvements === 0.0.8 > 0.0.9 === * Added more combat code * Added soup * Some other minor improvements === 0.0.7 > 0.0.8 === * Monsters have arrived! They're very simple at the moment, they just chase and attack. The player can't attack yet * Improved text mode: Drawing maps, inventory icons, tiles are no longer loaded * Some variable changes * Logging (see config file) * Slight speed improvement to drawing maps. Drawing the map takes about 0.01 seconds on my machine * Reorganised folders * Lots of minor improvements === 0.0.6 > 0.0.7 === * Line of sight code is now in. Easily the most difficult bit to write so far! * Unseen floors and walls are not visible. Previously visited floors and walls are shrouded * Worked out the cause of the starting space bug and fixed it * Moved the code which finds free tiles for objects to its own functions * Slight speed improvement to drawing the dungeon * Started some death code === 0.0.5 > 0.0.6 === * Started the inventory and item system * Added inventory window * Multiple items can exist in a square * Items are loaded and saved * Levels are now saved * Fixed the starting space bug (?) * Improved some code * Various other minor updates === 0.0.4 > 0.0.5 === * New official name: Paprika * Pretty much a complete rewrite and major update * Maps are now generated randomly * PictureClip control is no longer needed * Possible to move between levels * Converted to MDI interface * Added map window * Added log window * Addded text view * Redone the whole tile system * Stored window locations * Many many other updates === 0.0.3 > 0.0.4 === * Fixed a bug with walking into walls too much would mess up coords * Added status panel and message writer function * Added doors and the code to open them * The near parts of maps are now shown, meaning maps can be any size * Other minor changes like comments, code improvements and so on === 0.0.2 > 0.0.3 === * Players are returned to the correct position when using stairs * Improved painting tiles when level sizes are different * Minor changes, extra comments, variable name changes, etc * Added extra levels and more stairs for testing === 0.0.1 > 0.0.2 === * Levels are now cached at the start * Fixed items appearing every time * Moved most settings to the settings.ini file * Renamed map files * Improved the resize window to match level code * Better use of constants * More comments * Added debug menu * Improvements to code