December 2014 Changelog

EmpireMUD 2.0 alpha Change Log

December 31, 2014

  • Import/Export: You can now see a list of what you can import from a trading partner using “import list <empire>” or export to a trading partner using “export list <empire>”. Also fixed a typo in the import/export lists.
  • Empire detail: Changed how coins are displayed on the empire detail.
  • Costs: Updated costs to [hopefully] be able to understand on the import/export screens.
  • strip_color: Fixed a potential buffer overrun in this function (although no known bug was occurring due to this).

December 30, 2014

  • Coins: Decreased the value of coins by a factor of 10. Items which gave 1 coin should now give 10x. Existing empire coin hoards were updated to match.
  • Dig: Fixed a bug where dig was giving one extra item every time. It has been this way for a few weeks now due to a <= that should have been a <, ever since I converted it to an interaction.
  • Import/Export: Added these commands so that empires with Trade Routes can configure their trade rules.
  • Auto-trading: Players with Trade Routes, trade pacts with other empires, and properly-configured trade rules can now automatically exchange goods with other empires. This happens every in-game day at noon and up to 100 items may be imported per day.

December 29, 2014

  • Privileges: Fixed a bug where adding a new privilege would not assign the correct default rank and would cause crashes in some cases trying to display empire rank.
  • Trade Routes: Added a new ability to Empire.
  • Trade: Added a new empire privilege.
  • Trade system: Adding some initial components of the trade system.
  • City: Fixed a bug in “city abandon” where overlapping cities could result in abandoning the second city center. Now, when a city is abandoned, only tiles owned by that city that aren’t also in another city you own, will be abandoned.
  • Create: Fixed a bug in creating multiple items.
  • Map OLC: Fixed a bug where the map editor could set a map tile to be a building with incomplete data and trigger crashes or unpredictable behavior in other code.
  • Look: Fixed a crash bug caused by invalid building type.
  • Mines: Raised copper mines to 7% and silver mines to 3.5%.
  • Workforce: Your NPCs can now mint coins, if you have Skilled Labor.
  • Coinage: Added the mint, exchange, deposit, and withdraw commands. Coins are now ready for use.
  • Inventory: Now shows your wealth if you are in a vault.
  • Vault: Added a BLD flag to mark vaults.
  • Set: Immortals can now set coin amounts on players.

December 28, 2014

  • Bad data: Removed old data that was set for a couple of weeks before a bug fix I made last week. The old data was still there and periodically causing bugs.
  • real_shift(): Fixed a bug where it could shift from a location that was not on the map.
  • Spawning: Fixed a bug where it could fail to find a map room to spawn.
  • Bonus traits: Added an option to skip bonus trait selection and do it later.
  • Cities: Raised the city-city distance to 30.
  • Coinage: Most of the new coin code is now live but there’s no way to make coins yet.

December 27, 2014

  • Cities: Changed the bonus city point from 2500 wealth to 4000 wealth, to reflect the inflated value of gold and silver.
  • Create: Replaced the god create command with a version that isn’t based on a data structure and instead uses multi_isname() and the new CREATABLE flag.
  • Coin mill: Added this item to the Forge ability.
  • Mint: Added this building to the Commerce ability.
  • Bits: Replaced the many uses of (1 << X) for bits in the code with a macro that guarantees they are unsigned long long, as (1 << 31) gives a signed int.
  • Silver: Raised the wealth values on silver from 1/3/6 to 2/5/10.
  • Gold: Raised the wealth values on gold from 2/5/10 to 3/8/16.
  • Copper: Added copper mine, copper ore, copper ingot, and copper bar (1 wealth).
  • Territory: Land gained from Commerce/Wealth now has diminishing returns after 10000.
  • Mines: Copper mines now appear at 6%; silver mine was reduced from 7.7% to 3%. Iron mines went down by 1.3% accordingly.

December 25, 2014

  • Territory: Added a total count to the territory display.

December 24, 2014

  • Bonus traits: Added the bonus trait system, where new characters get to pick one small bonus trait for their character. Players get a 2nd bonus trait after they hit 2 days of playtime. Existing players will be prompted for these when they log in next. They may have to do this twice if they’ve earned 2 bonus traits.

December 21, 2014

  • Logs: Added the year to the date in log output.
  • Lookup table: Fixed a bug where players were not removed from the global lookup table when they died.
  • Workforce: Changed how workforce mobs are despawned when a chore or room is deactivated.
  • Newbie equipment: Fixed a bug occurring if a player manages to delete themselves without the game deleting their equipment file; the newbie gear would be equipped to them without checking if they were already equipped.
  • Vnums: Cleaned up vnums.h and removed a lot of #defines in there that are no longer used by the code. Also attempted to remove vnums.h from the dependencies of other code files, but it’s still used virtually throughout.
  • Memory leaks: Fixed a couple of tiny memory leaks in OLC.
  • Data integrity: Added additional checks on startup to ensure all sectors exist.
  • Climate change: Replaced crops’ “base sectors” with climates, and attached climate ids to sectors in place of climate flags. Adapted the affinity morphs to use these. Cleaned up the code for planting and harvesting. The only thing that I didn’t do but would like to is make the climates configurable in-game, too.

December 20, 2014

  • Territory: Fixed a bug where designated rooms were showing up as outside-territory on the territory list.
  • Interactions: Tweaked the interactions system so that the interaction callback functions can return a failure state.
  • Butcher: Updated to use the newer, cleaner format of the interactions system.

December 19, 2014

  • Show: Rewrote the immortal “show” command to split control off to sub-functions instead of using a giant, hideous switch statement.
  • Show Account: This “show” option now also shows players with identical IP addresses who are not attached to the account.
  • Show Spawns: Added a new “show” option to see where a mob spawns.
  • Map editor: Merged the command that created a Tower of Souls and surrounding unclaimable land, with the command that made the current tile unclaimable. It now makes an unclaimable block of the desired size and does not create the Tower of Souls. Also updated the terrain-changing code so that it correctly re-reads starting locations if one is placed on the map. Fixed a small memory leak in the code that re-reads starting locations.
  • Map icons: Added placeholders that help make buildings’ icons appear to attach to other objects on the map, to replace the special-cased code that covered walls, gatehouses, docks, and many other building types. These buildings may have slightly different icons now.
  • Tunnel: Tweaked how tunnel detects the terrain it can be built on, to remove the terrain vnums from the function.
  • Cities: Relaxed the rules on what type of sector cities can be founded on.
  • Ruins: Fixed a bug where the building recipe data wasn’t being cleared when a building fell into ruins, so dismantling the ruins was requiring skill and returning resources. Mountains no longer have a special ruins icon.
  • Roadside icon: Added a new 1-character sector icon to help building road and wall tiles correctly. This will slightly change the appearance of mountains next to some roads.
  • String tools: Added a new generic string replacement function.
  • Sectors: Removed all remaining unnecessary sector vnums from the code.

December 18, 2014

  • Mob spawns: Players inside buildings can now correctly trigger mob spawns.
  • Tunnels: Tunnels no longer block the “circle” command.
  • Taverns: You can now fill drink containers from any part of the tavern. (This also applies to any future buildings that provide water.)
  • Sectors: Converted the INSIDE and BUILDING sectors to the new sector system, and revised some bits of code where these types were checked. Also centralized the code that sets up buildings.
  • Tips: Added a tip-of-the-day feature.

December 17, 2014

  • Territory: Quarries and Clay Pits now always count as in-city territory, similar to mines.

December 16, 2014

  • Roads: Rewrote the “lay” command, which used its own primitive version of resource management. Updated it to use the new sector system.
  • Sectors: Further work on converting old sector vnums to the new system.

December 15, 2014

  • Auto-abandon: Fixed a bug where an empire’s last square of territory would not auto-abandon, even if it was supposed to. This was also probably causing unnecessary scanning of the world for territory to abandon, which might be a contributor to periodic lag.
  • Case-sensitivity: Fixed a whole host of bugs caused by a recent change I made where the argument-processing functions no longer turned some arguments to all-lowercase. This was causing various issues including players not getting new-player-setup done correctly, having id numbers of 0, being unable to start an empire, as well as potential problems in a bunch of commands whose arguments became case-sensitive.

December 11, 2014

  • Random encounters: Rewrote the random encounters code (sharks, crocs) to use the interactions on the room as their data source, rather than hard-coded vnums. Also removed the mob flag RANDOM-ENCOUNTER because the SPAWNED flag will cover it.
  • Chameleon: Merged all the chameleon types into 1 room affect flag.
  • Dead: Ensured characters are still alive before processing certain automatic actions like mob movement/aggro and healing.

December 10, 2014

  • Command interpreter: Fixed a bug from December 8 where the command interpreter was only accepting lowercase commands.

December 9, 2014

  • Random is broken: Fixed the random algorithms that choose random map tiles, random object messages, and random tombs. All of these were weighting incorrectly toward the end of the list.
  • Random shortcut: Added a short-circuit in the random number generator to avoid unnecessary computation when there is only one possible return value.
  • Icons in columns: The stat/vstat and olc editors now show map icons in two columns, reducing the vertical space they take up by half.

December 8, 2014

  • Self-delete: Fixed a bug where deleting one of your alts when your empire contains ONLY your alts would accidentally delete the whole empire.
  • Map icons: Replaced the old tileset system with a new system that allows variable icons.
  • Argument processors: Removed code that changes arguments to lower-case when they go through string-processing functions.

December 7, 2014

  • Chant of Nature: Reworked to use a new sector evolution. Now works on crops too. No longer grows jungle from field (but will grow jungle from swamp).
  • Constants: Moved the few remaining world constants from constants.world.c into constants.c and removed the world constants file, which has lost most of its data during recent code-to-live-data migrations.
  • Fillin: Fixed a recent bug where fillin wouldn’t correctly change the map sector. Fillin now also correctly removes the PLAYER-MADE flag.
  • Harvest: Converted to use new interaction data.
  • Pick: Converted to use new interaction data.
  • Gather: Converted to use new interaction data.
  • Workforce: Re-wrote the digging, farming, and gardening workforce chores to use new interaction data.

December 6, 2014

  • Interactions: Applied the “interaction” system from mobs to buildings, crops, and sectors. Added new dig, harvest, find-herb, and forage interaction types. Input all the data that’s currently hard-coded or found elsewhere. Also added new functions for running interactions to avoid the big, messy code found in the existing mob interactions (which will need to be updated to use the sleeker model at some point).
  • Dig: Rewrote dig to use the new dig interaction data.
  • Forage: Rewrote forage to use the new forage interaction data.
  • Tower of Souls: Replaced explicit references in code and help files that said “Tower of Souls”, with the term “starting location”.
  • Rivers: Updated more code to refer generically to “water” or “fresh water” instead of explicitly calling it a river.

December 5, 2014

  • Affinities: Reworked affinities (used by animal morphs) to use sector flags instead of sector vnums.
  • Guard Towers: Can now shoot into Overgrown Forest and Jungle, similar to how you can see people in those forests (compared to EmpireMUD 1.0).
  • Catapults: Overgrown Forests and Jungle no longer prevent a catapult from shooting, but rough terrain (e.g. mountain) does.
  • Desert Groves: Instead of always giving 2 trees when chopped down, groves now give 1 or 2 trees randomly, and may rarely give 3 trees.
  • Field Crops: Empty fields will now randomly, but rarely, grow crops. Crop tiles that are surrounded by fields will now randomly, but very rarely, turn back to fields.
  • Sector changes: Made more code updates to get sector vnums out of the code and replace them with data-driven information.

December 4, 2014

  • Overflow crash: Fixed a crash bug caused by huge amounts of text from, say, moving quickly across the map while mounted.
  • Memory leaks: Fixed several memory leaks in output, prompts, and color code parsing.
  • Trench filling: Removed evolution rules that I added incorrectly which resulted in all unfinished trenches filling with water today.

December 3, 2014

  • Slash-channels: Some slash-channel commands will now accept abbrevs of channel names.
  • World evolution: Created a dynamic world evolution system to replace the hard-coded one. Added it to sector OLC and added all the existing hard-coded evolution data, then removed the old code.
  • Trenches: Mobs are no longer swept away when a trench fills with water. They just swim helplessly instead.
  • Chop: Now driven by world evolutions.
  • Excavate/Filling: Now driven by world evolutions.
  • Planting and crop growth: Now driven by world evolutions.
  • Fillin: You can no longer fill in oases that were not made by players.
  • Building: Attached the build-on flags to sector types, making what-can-be-built-on-what entirely dynamic and editable in OLC.

December 2, 2014

  • Sectors and Crops: Finished the migration from hard-coded data to live data, and wrote the OLC for sectors and crops. Updated data for all of them.
  • Forage: Converted forage to use vnums from the crop and sector data.
  • Hide: Removed terrain restrictions on hide.
  • Eedit rank: Fixed a bug that was disallowing spaces in rank name.