September 2014 Changelog

EmpireMUD 2.0 Alpha Change Log

September 30, 2014

  • Fountains and Wells: Converted these from map sectors to building types, and adding the DRINK building flag that allows a building to provide drinkable water.
  • Build: All build recipes have been moved into the craft recipe system.
  • Craft OLC: Updated to allow buildings as craft recipes.
  • Upgrade: Reworked the upgrade command to read from building data and recipe data instead of needing a hard-coded upgrade for each building.
  • Shrines: Fixed a bug from Sunday’s building change, where shrines were causing data corruption and game crashes in some rare occasions, due to their building ID being set wrong.

September 29, 2014

  • Courtyard: New building.
  • Forest: The 3-tree forest tile is now known as a “Shady Forest” in order to distinguish it from the other forest tiles (Light Forest, Forest, Shady Forest, Overgrown Forest). This comes up with the new territory command.
  • Forest/Jungle: These tiles no longer block view of players on the map (mountains still do, though).
  • Territory: Upgraded the territory command so that you can now specify any terrain, crop, or building. The default command still shows you all terrain outside of buildings. This command now also scales up for very large empires, by grouping together larger areas of land.

September 28, 2014

  • Class: Fixed the default display of the class command.
  • Nodismantle: New feature helps keep you from accidentally dismantling things.
  • Refashion: Now also works on shields.
  • Cities: You can now found a city in front of a building entrance.
  • Arsenal: This building is now known as “armory”.
  • Buildings: Overhauled and refactored virtually all of the building system:
    • Large buildings: These are gone. All buildings now take up 1 map tile.
    • Castles, Palaces: Replaced with portcullis and great hall.
    • Forts, Greathouses, Treeforts: Replaced with barracks and training yard.
    • Interlink: Some buildings can now be interlinked, where their interiors connect to each other. This lets you build creative castle or fort setups by combining nearby interlinkable buildings.
    • Dedicate: Shrines and other monuments are no longer dedicated when you build them. Instead, you can use the “dedicate” command once they are complete. You can also now build temples facing any direction.
    • Fame: Some buildings now give fame when they didn’t before.
    • Open/Closed: Some buildings which were “closed” are now “open” — they don’t take you off the map. Open buildings can now be built in front of entrances.
    • Steps: This new building can represent the steps of a large temple, or steps up a hillside.

September 27, 2014

  • Territory overages: Empires that have gone over on their outside-of-city territory will now lose claimed land at a rate of one tile per half-hour, starting with the tile furthest from any city. This does not apply to in-city territory.
  • Claim: Fixed a bug where you couldn’t claim a mine/road tile outside of a city when at the outside-of-city cap, even though these tiles always count as in-city.
  • Harvest: Sped up the action slightly and fixed an issue where 0 Dexterity would mean you could never finish harvesting.
  • Startup: Fixed a bug where the wrong empire data functions were called during startup, resulting in incorrect tech computations on some empires in the first few minutes after a reboot.

September 26, 2014

  • Empires: Sorted the empire list.

September 25, 2014

  • Party: Finished the new party system including file save/load.

September 24, 2014

  • Party: Debugged the new party system and successfully tested the existing aspects.

September 23, 2014

  • Oocsay: Added “osay” as a valid variant of this command after much pestering.
  • Command Interpreter: Organized the long list of prototypes in interpreter.c and made the command structure easier to read by replacing 0 and -1 with constants, after discovering a bug related to structure arguments out of order.
  • Reforge: Fixed a bug where the reforge command was always using the Refashion data instead.

September 22, 2014

  • Admin Utilities: Added a new utility command for admins, for testing things. Current tests include diminishing returns, and the RNG.
  • Corpses: Fixed a bug in how corpse keywords are generated.
  • Last Login Info: Fixed a bug in the recent code that preserves login info for characters loaded by utilities.

September 21, 2014

  • Summon Humans: Now scales in number with Charisma.
  • Summon Animals: Now scales in number with Wits, and the animals are charmed.
  • Summon Guards: Now scales in number with Greatness.
  • Summon Bodyguard: No longer requires that you be in your own territory.
  • Typos: Fixed various typos and capitalization errors.
  • Flee: Familiars and other followers will no longer auto-flee.
  • Designate: No longer shows a list of room types if you’re in a building that can’t take more rooms.
  • Set: Updated help file. Setting member greatness will now always re-detect total empire greatness.
  • Floating: Objects will no longer reset their autostore timer as they float west, preventing items from floating forever.
  • Closed building tiles: Updated all definitions that used ALWAYS_CLOSED to now use ROOM_IS_CLOSED, for a much cleaner if() line.
  • Dismantle: Resources are now removed right-to-left, mirroring how they are added when building.
  • Tower of Sorcery: Added missing commands list to both rooms.
  • Cooldowns: Players will now receive a message whenever a cooldown expires.
  • Empire editor: Rank names can no longer be blank.
  • Butcher and Shear: Fixed a display issue where it wasn’t reporting when you got multiple copies of an item from these commands.
  • Screen-reader: Changed the display for side tiles of large structures.
  • Mountainwalk: Fixed a bug in this mob flag where it wasn’t allowing the mob to move in the mountains.
  • Set account: Changing the account of a player now causes an immediate re-read of empire members, as this can change greatness and membership counts.
  • Materials: Capitalized material names to better match other const arrays.
  • Stat object: Fixed missile weapon speed display.
  • Identify: Fixed missile weapon speed display.
  • Autokill: When a player or mob’s lack of autokill stops a fight at the incapacitated stage, all other creatures in the room are checked for similar conditions and pulled out of combat if they were hitting the same target. Attacking an incapacitated creature again will now kill it, not keep it permanent incapacitated. Also changed the code from “only human mobs autokill” to “only animal mobs don’t autokill”. Aggressive animals will still autokill.
  • Mill: Rephrased the action string to make more sense. Also re-worked the mill buildings to indicate that it mills more than just flour.
  • Poisons: Cleaned up some of the old poison code, since brewing and applying poisons were separated last month.
  • Empire list: Territory is now spaced for 4 digits.
  • Follow: Players will no longer see the “Someone stops following you.” message if they can’t see the person. This is for consistency with starts-following.
  • Cities: City location is now stored by rnum instead of vnum. This is to simplify the code and make things more standard.
  • Hestian Trinket: Fixed a bug where the room’s rnum was stored rather than vnum, which can be an issue if the world changes while using the trinket.
  • Pursuit: Mobs who pursue will no longer target earthmelded, disguised, or hidden players. However, they will keep looking until the pursuit times out, or the player becomes visible.
  • Bite: You can no longer start biting while in combat with someone else.
  • Class: This command will now send a more meaningful error message when used incorrectly.
  • Stop: This command will now cancel vampire feeding.
  • Disarm: Now engages combat every time.
  • Disguise: If a player cannot see through your disguise, they can no longer target you with your real name.
  • Gossip/Shout: Fixed a capitalization bug in these commands.
  • Empire tech: Fixed a bug where empire tech was not being cleared properly for the final empire in the list. Also, immortal-only empires now have all tech, all the time.
  • Burning buildings: There will now be a highlighted notice below the map or room description if the building is on fire.
  • Hestian trinket: You can no longer use this item from a room you couldn’t teleport out of.
  • Teleportation: Added new room validation preventing teleporting into a claimed room (not just out of one), and added a safety limit to the loop that looks for a random room.
  • Empire names: Added code forcing these to be unique, and disallowing the use of banned names.
  • Empire territory: Changed how empire territory locations are stored from vnum to rnum, to save on a large number of real_room() calls during processing.
  • Whois: Added empire greatness to whois.
  • Tavern: Typing this command with no arguments will now show what all your taverns are brewing, and their locations.
  • Restore: Now clears cooldowns.
  • Whois: Fixed an issue with lore display for offline players.
  • Main menu: Added a stripped-down version of the main menu for screen-reader users.
  • Empire detail: Removed the portal list, as it’s easier and less spammy to check your own portals with the “portal” command.

September 20, 2014

  • Einventory: Now accepts multiple keywords for objects, in no particular order.
  • Mortlog: Updated the code to remove totally unused mortlog parameter.
  • Death logs: Updated death syslogs to better indicate location.
  • Einventory: When used by an immortal to target a specific empire, this command now accepts quotation marks for multi-word empire names.
  • one_word: This function now treats parentheses as word groupings.
  • Emote: Using bad $ codes in emotes will no longer trigger a syserr.
  • Stolen objects: The original owner id of an object is no longer lost when it is stolen.
  • Object saving: Changed the condition for saving a last-owner, last-empire, stolen timer, or autostore timer on an object.
  • Building/Tunnel: Most buildings can now be built facing any level of forest, rather than requiring a 4-forest.
  • Hit/Kill: This command now allows you to switch targets in combat.
  • Spear: Added +1 dex to basic spear to assist with fishing.
  • Dark: Updated the message when it’s too dark to see, to explicitly indicate that you can’t see mobs or items.
  • Guard Tower: Fixed the upgrade cost on the 3rd level guard towers; it was meant to be double the cost of upgrading to level 2, but was incorrectly the same any time except when being dismantled.
  • Siege damage: Now targets the correct part of any over-sized structure.
  • Sire: Will no longer set your action to ‘siring’ if the bite fails.
  • Dig: You can now get lighting-/bloodstones from digging in certain developed tiles that were built on top of the correct tile, such as digging in a quarry that was built on a desert tile.
  • Corpse looting: Ensured the corpse and its contents have the correct last-owner-id so that the person who killed that corpse has the ability to loot it without being marked a thief. This doesn’t apply to player corpses, which are always owned by the player.
  • Weapon types: Created a multifaceted list of weapon types instead of just sharp/not-sharp.
  • Stunning Blow: Increased the skillup rate. Also fixed a bug where magical weapons could trigger it.
  • Cut Deep: Increased the skillup rate.
  • Object OLC: Added .store as an alias for .storage in the editor.
  • Stat character: Now shows combat speed.
  • Circle: The last direction you moved is now updated by the circle command, in case you somehow circle into a tile that cares about that.
  • Affects: Your stored mount will no longer show on your affects if you don’t have the Ride ability. However, it is still stored in case you re-purchase the ability.
  • Portal: Coordinates are no longer shown to players who don’t have Navigation.
  • free_char(): Fixed a memory leak where characters with equipment or inventories who hit this point did not have those items extracted from the game.
  • Whois: Fixed a memory leak in freeing loaded characters. Whois now will also use the live version of a character instead of always loading from file.
  • Last login time and host: Failed password attempts and some other actions that load an offline player will no longer store a new last-login time or previous host.
  • Vnum: This immortal command now allows multiple keywords, and finds things matching ALL of those keywords.
  • Who: Hidden players are no longer hidden from the who-list.
  • No-Disrepair: Added a new flag that can be used to prevent buildings from decaying.
  • Swampwalks: These no longer accrue disrepair.
  • City auto-abandon: Cities which contain only no-disrepair buildings will still be auto-abandoned if the rest of the city is ruins.
  • Teleport: If you teleport onto a wall, you’ll now be able to move off the wall in any direction, instead of the game seeing the last direction you physically moved before teleporting, and only letting you go that way.
  • Findmaintenance: Clarified the error messages after noticing some players typing “find” for something else and not realizing they were hitting findmaintenance.
  • Manashield: No longer claims you need mana to deactivate it, which wasn’t true anyway.
  • Skillup rates: Raised the rates on Colorburst, Foresight, and most summons.
  • Towers of Souls: You can now chop, harvest, and plant on unclaimable land around the towers.
  • Drink containers: Fixed a small bug in drink container contents expiry. Also, pouring liquid from one container to another will now copy the timer. Also fixed a bug where the liquid timer wasn’t set properly when filling water (which does not expire).
  • Milk: Milk now goes bad after 3 days.

September 19, 2014

  • Workforce: Added the “no-work” option to workforce, which toggles whether or not they will work a given tile at all. If enabled, they will perform no chores on that tile at all. This info is displayed to empire members below the map. Abandoned tiles will lose their no-work flag.
  • Objsave: Fixed a pair of bugs where room object packs weren’t putting the final $ in the pack file, and then when the pack loader errored out, it wasn’t closing the pack file and the mud was getting too-many-open-files errors.
  • Refashion: A new Trade ability that works just like reforge, but for armor. Refactored the reforge code to handle refashion, too.
  • Reforge: Removed the Greatness boost from naming weapons.
  • Master Tailor: This ability is now gated behind Refashion instead of Dangerous Leathers.

September 18, 2014

  • Reforge: A new Trade ability that lets you restore weapons to their base condition, make them superior, and even name generic weapons!
  • Lightningbolt/Sunshock: Fixed a bug where these always reported as being on cooldown.
  • OLC: Changed how live objects are updated after the object editor is saved, due to recent changes to how items save for offline players.
  • Show rent: Wrote a new version of this function for the new rent file format.
  • Room object packs: Wrote a utility that deletes stale object packs, which accounted for more than 54,000 unnecessary files and nearly 3MB of space in the compressed backups.

September 17, 2014

  • Bash: Can no longer be used while affected by Disarm.
  • City Teleportation: Raised the skillup rate to 100% because the 15-minute cooldown means you already have to spend 150 minutes to get 10 skillups from it.
  • Corpses: Corpse names are now more specific and dynamic.
  • Workforce: Fixed a recent bug where workforce would not work on a chore if the empire had exactly zero of the resource it generates.
  • Objsave: Rewrote the entire rent/crash/obj save system for player inventories and items on the ground. It now stores as text files rather than binary, and can store any changed property. This means we can now store anonymous objects like mail, as well as re-string objects in the game.
  • Wealth: Fixed a bug where periodic autostore didn’t trigger a re-scan of the vault, so wealth wasn’t updating until any object was stored or retrieved.
  • Autostore: This immortal command now triggers a re-scan of the vault.

September 16, 2014

  • Purify: Added universal wait time.
  • Ready: Modified the “ready” command (e.g. ready fireball) to smoothly scale weapon damage, and reduced its wait time to the universal wait.
  • Ready fireball: Now does 4.64 base DPS at 100 Natural Magic, instead of 4.29.
  • Familiar: Now has universal wait time after use.
  • Hasten: Now has universal wait instead of buff wait.
  • Counterspell: Now has universal wait instead of buff wait.
  • Lightningbolt: Now has a cooldown of 9 seconds.
  • Skybrand: Now has a cooldown of 6 seconds and uses universal wait.
  • Entangle: Now has a cooldown of 30 seconds and uses universal wait.
  • Solar Power: Now scales with level, and at class level it works without sun.
  • Workforce/Skilled Labor: Workforce now caps at 200 of any given resource, and requires Skilled Labor for the 1000 cap.
  • Empire storage: Added a preliminary sorting function to clean up empire storage a little bit, and to resolve an issue where Summon Materials was sometimes unable to retrieve the item you’re trying to get.
  • Retrieve: Added support for #.name, e.g. “retrieve 2.L” for items with the same keywords.
  • Summon materials: Added support for #.name, e.g. “summon materials 20 2.stick” for items with the same keywords.

September 15, 2014

  • Heal: All three heal spells now scale with level and intelligence, and use the universal wait time of 1.5 seconds instead of the old heal wait time of 1 second. Heal party now heals slightly less than the other two, but otherwise uses the same formula.
  • Rejuvenate: Now scales with level and intelligence, and has a 15-second cooldown.
  • Eartharmor: Modified the base value and added an intelligence scale.
  • Teleportation: Home and city teleportation now each have separate 15-minute cooldowns. Random teleportation is unchanged.
  • Vigor: Now has the universal wait time of 1.5 seconds instead of the old buff wait time of 2 seconds.
  • Damage spells: Simple damage spells (lightningbolt, sunshock) now do more damage based on intelligence and skill level. Also added cooldown support to the generic code for this.
  • Sunshock: Now does only 2x damage to vampires, and has a 9-second cooldown.
  • Enervate: Now scales with level and has a 75-second cooldown (same as its duration).
  • Slow: Now scales with level and has a 75-second cooldown, which is the same as its duration at max level.
  • Siphon: Now scales with level, drains mana regen on the target, and has a 20-second cooldown.
  • Cleanse: Now has a 9-second cooldown and can remove the negative effects of siphon and sunshock.
  • Mirrorimage: Now has a 5-minute cooldown.
  • Lore: Fixed a bug where the “day” on character lore was off by 1 and could show as day 0 of a month.
  • Empire members: Fixed a bug in how offline members are loaded that was causing some empires to gain greatness from very idle members.
  • Empire members: Members who log in after a very long time away will now trigger an immediate re-read of empire techs when they log in, to correctly re-apply their abilities and prevent several related bugs.
  • Secondary stats and diminishing returns: Players now see only the un-diminished value of secondary stats like block and dodge, on the score screen. Immortals can see both diminished and un-diminished values using stat.
  • Manashield: Now scales better with level and intelligence.
  • Foresight: Now scales better with level.
  • Colorburst: Now scales better with level and intelligence, and has a 30-second cooldown.

September 14, 2014

  • Backups: Wrote a backup maker/manager that makes full backups every hour and keeps hourly backups for a day, daily backups for a week, and weekly backups for a year.
  • Diminishing returns: Applied diminishing returns to block, dodge, soak, and to-hit bonuses.
  • Reflexes: This ability now scales up with level.
  • Quick Block: This ability now scales up with level.
  • Disarm: This ability now lasts longer at higher levels, and now has a 30-second cooldown instead of a 4-second wait state.
  • Outrage: This ability now has a 9-second cooldown.
  • Rescue: This ability now has a 6-second cooldown.
  • Sparring: This ability now scales with level.
  • Kick: This ability no longer misses as a specialty skill, and deals twice as much damage as a class skill. It now has a cooldown of 6 seconds.
  • Bash: Same updates as kick, but 9-second cooldown.
  • Cut Deep: Now scales with level.
  • Stunning Blow: Now scales with level.
  • Finesse: Now scales with level.
  • Quick Draw: Now scales with level.
  • Big Game Hunter: Now scales with level.
  • Firstaid: Now scales with level.
  • Auto-scaling: Applied auto-scaling to all existing mobs, and tweaked its levels a little.

September 13, 2014

  • Auto-scaling: Wrote prototype code for auto-scaling mobs.
  • Consider: New command for comparing levels with a scalable mob.
  • Mobs: Moved title, prompt, poofin, poofout, and lastname into player data because they are never used by mobs; this will save a small amount of memory.
  • Players: Fixed a small memory leak that happened if a player logged in with no title or some other strings.
  • Object OLC: Live objects are now updated on save.
  • Objects: Removed the cost and cost_per_day properties from objects, as we never use these. This will save a little memory.

September 12, 2014

  • File saving: Added temp file saving to several more common file-saving functions that cause real problems if the mud crashes while writing.
  • Vampires: Mobs can be vampires now.
  • Show storage: A new immortal function to show which items can be stored in a given building or room type.
  • Storage: Fixed a small memory leak that occurred when the last of an item is retrieved from storage.
  • Storage: Rewrote the storage system so that storage location is configured on each object (in the prototype) rather than in a large code struct. Added storage locations to object OLC.

September 11, 2014

  • AFK System: Fixed a memory leak where afk messages were not freed if a player was extracted while afk or while messages were pending.
  • OLC: Updated object olc to use the new string processor from mobile olc.

September 10, 2014

  • Random encounters: Ensured the RANDOM-ENCOUNTER flag is set on any mob spawned this way.
  • free_char: Fixed an old bug where a mob without a prototype would trigger a crash when its short description was freed twice due to an incorrect macro.
  • OLC: Finished the mob editor.
  • Lore: Fixed a memory leak where lore was never freed when players logged off.
  • Mob movement: Added mob movement types which determine the movement messages, and greatly simplified the code that sends movement messages. Also removed the need to specify valid terrain types for each mob, and instead determine this procedurally from mob flags and movement type.
  • OLC: First parts of mob editing are in: abort, copy, delete, display, edit, and save. But no editor functions yet.
  • Macros: Cleaned up some code macros and added macros for mob properties that didn’t have them.

September 7, 2014

  • Stat mob: Mob interactions are now shown on stat.
  • OLC: Added functions to save the mob files.
  • Mobs: Converted mob types to mob flags, and converted the “flying” mob flag to just use the “fly” effect.
  • Mob interactions: Add quantity controls to the generic interaction system.
  • Mob loot: Merged loot tables into the generic interaction system.
  • Crafts: Sorted the recipes on all the basic craft commands (craft, forge, &c) by skill required and then alphabetically. Split the display lines for people on small screens.
  • Craft recipes: Added an in-development flag so that recipes may be developed without them being live for players.

September 6, 2014

  • Craft system: Crafts are now stored in db files (like objects) instead of read from a compiled code structure.
  • Vstat: This immortal command can now stat craft recipes.
  • Vnum: This immortal command can now find craft recipes.
  • OLC: New olc system for craft recipes.

September 5, 2014

  • OLC: Wrote extensive help files for the object editor and the olc system.
  • Harness: It’s now possible to have a cart that cannot have animals harnessed to it.
  • OLC: Added object delete feature.
  • Show arrowtypes: The immortal “show” command now provides a way to find out what items are already using which arrow types.
  • Toggle roomflags: Added the roomflags toggle, similar to the stock CircleMUD version, for immortals.
  • OLC: Added all remaining oedit functions, and tested.
  • Weapon speed: Missile weapons now benefit from SLOW/FAST properties on the item.

September 4, 2014

  • Bookedit/Library: Immortals can now use these commands anywhere.
  • Bookedit: The ID numbers of books are now shown to immortals on the bookedit list and the book editor.
  • OLC: Added several more edit features for objects.

September 3, 2014

  • search_block(): This function no longer modifies the original argument, and it is now case-insensitive.
  • OBJ macros: Added several macros for object properties that were usually accessed directly, and updated all code to use them.
  • OLC: Added several more edit features for objects.

September 2, 2014

  • Stat object: “Affections” is now called “Applies”.
  • OLC: New olc command added along with basic functions: abort, copy, display, edit, list, save
  • OLC: Added and tested loading objects into the editor and then saving them to data or aborting. Also tested creating new objects.
  • OLC: Wrote and tested code for saving objects to file, and saving the object index file.