January 2015 Changelog

EmpireMUD 2.0 alpha Change Log

January 31, 2015

  • OLC: Fixed a bug where negative applies did not work on objects.
  • OLC: Changed the trigger default values.
  • OLC: Relaxed the limits on food objects.
  • Scripting: Added the %regionecho% command to echo to a large map region.
  • Scripting: Added more room variables.
  • Ride: Flying mounts now require the All-Terrain Riding ability.
  • Liquids: Added coffee, green tea, red wine, and white wine.

January 30, 2015

  • Pick: Allowed adventures to use the HARVEST interaction to add non-herb picking.
  • Scan: Fixed a bug where scan worked off the map.
  • Cleanse: Rewrote cleanse to remove bad effects, not just specific spells.
  • Scripting: Added %room% default var for all world triggers.
  • Instance: Added a ‘reset’ option to the immortal instance command.
  • Adventures: Fixed a bug in “outdoor” detection. Fixed an issue where animals could not move in adventures.
  • Mobs: Removed the can-see-in-dark restriction on mob movement.
  • Instance scaling: Fixed a bug in scale_instance_to_level that was overrunning data and crashing upon entering instances of lock-level-on-enter adventures that are larger than 1 room.
  • Trigger editor: Show color codes in editor.
  • Scripting: Added %dot% and %aoe% functions for scaled damage-over-time and scaled area-of-effect damage.
  • Vnum: Added triggers to the vnum command.

January 29, 2015

  • Scripting: Added several new scripting functions and fixed a bug in dg_affect. Also disabled the &var shortcut because it conflicts with color codes.
  • OLC: Fixed a bug in crop edit permissions.
  • OLC: OLC copy now always adds restriction flags for crops, adventures, and adventures.
  • Generic mob naming: Retooled mob renaming to avoid a possible buffer overflow.
  • Instances: Fixed several bugs related to instance saving and spawning.
  • OLC: Added additional info on the search and list functions.
  • has_resources: Modified this function to be able to suppress messages.
  • Scripting: Added set_skill function.
  • OLC: Changed trigger OLC defaults.
  • OLC: Fixed a bug where triggers could overwrite each others’ vnums on save.

January 28, 2015

  • Triggers: Moved the zone reset triggers to before spawns, rather than after.
  • Mob moves: Added the “scurries” and “skitters” movement types.
  • OLC Search: Fixed a bug where mobs weren’t correctly checking room template spawns during a search.
  • Room templates: Fixed a bug where script lists were freed when they shouldn’t be, causing crashes.
  • Adventures: Added the ROTATABLE flag for adventures, and the CITY-ONLY and !CITY linking flags.

January 27, 2015

  • OLC: Fixed a bug where exit keywords weren’t copied, so they were often freed early.
  • Scripting: Changed the mdamage/odamage/wdamage functions to deal scaled damage/healing.
  • OLC: Fixed a bug where you could trigger the wrong olc editor’s commands and crash the game.
  • Scripting: Added the ability to target rooms in an instance by template id.
  • Adventures: Set it to not lock instance levels if an immortal triggers the lock.
  • Adventures: Fixed a bug in the DARK flag in adventure rooms, which was overriding torches.
  • Skills: Updated abilities in Stealth, Trade, and Vampire so that mob can use some of them.
  • Stealth: Applied cooldowns to some Stealth abilities and lowered their command lag.
  • Vampire: Applied cooldowns to some Vamprie abilities and lowered their command lag.

January 26, 2015

  • Hostile: Changed the “thief” flag to “hostile”; you can now also gain it by attacking another empire’s NPCs. Like stealth, this type of hostility will trigger distrust.
  • NPCs: You can no longer attack the NPCs of an empire you are allied with or have a non-aggression pact with. You CAN still attack your own empire’s NPCs.
  • Loot: Mobs now drop coins. Empire mobs drop coins from the empire’s own vault. Non-empire mobs drop generic coins.
  • Pickpocket: Mobs now have coins in their pockets. Like loot, these come from the vault.
  • Skills: Updated abilities in the Battle, Empire, Natural Magic, and Sorcery trees so that mobs can use them.
  • Code cleanup: Moved some natural magic abilities to naturalmagic.c.
  • OLC: Added copy commands for interactions, scripts, live spawns, and template spawns.
  • Adventures: Mounts are now allowed in outdoor portions of adventures.
  • Adventures: Room templates can now have room interactions such as dig and forage.

January 25, 2015

  • OLC search: Added a new command (e.g. .o search <vnum>) to find places a thing is used.
  • Text editor: Made text-entry mode the default and /, to switch to command mode. This is the opposite of how it was.
  • Text editor: Fixed a bug in the /r command where instead of /r ‘a’ ‘b’, it was /r ‘a’b’.
  • Tdetach: Fixed syntax, target processing, and mob permissions.
  • Tattach: Fixed target processing in trigger attachment.
  • Death trigger: Fixed a bug where this trigger wouldn’t fire in some cases.
  • Room templates: Fixed a bug in reading template flags on live rooms.
  • Trigger OLC: Added contextual options to replace the generic ones.

January 24, 2015

  • OLC: Usability updates in olc editors.
  • Need-boat flag: Added another room template flag.
  • Portals: Added support for portals in adventure zones and changed how portal targeting is set in OLC.
  • Library saves: Library saves now log in the log file.
  • Show player: Now gives average playtime.
  • OLC: Now checks for an open text editor before allowing you to save or abort an OLC editor.
  • OLC: Now correctly deletes prototyped occurrences of a thing if you delete the thing with OLC.
  • Craft resources: Converted craft resources-required to a pointer instead of an array (small difference in pass-ability between functions).

January 23, 2015

  • Nearby: Now lists some adventure zones in the area.
  • Instance: This immortal command now also provides a nearby feature.
  • Adventure: Added a command to get adventure info for players.
  • Moveeinv: Added an immortal command to relocate an empire’s einv to a different island, and fix bugs when it’s on no island.

January 22, 2015

  • Delete room: Fixed an infinite loop bug caused by the change to character extraction. This bug was live several months, but it’s extremely rare to delete a room with a character in it.
  • Mobs: Fixed a bug where an unscaled mob could have 0 maxhealth, triggering a /0 error.
  • Adventure Zones: Added the instance-builder, instance command (for imms), and management system.
  • Object scaling: Tweaked the scaling algorithm.

January 21, 2015

  • Statistics: Created a new file, statistics.c, and added global stats for sector, crop, and building counts, with a periodic update timer. Converted “show terrain” to use these; they will also be used in the instance-builder. Future stats will also be housed in this file.
  • Home-room: The stored “home room” value of a building-room is now an rnum, not vnum. It is saved to file as a vnum and converted in renum_world. This should speed up things that had to do real_room() calls — sometimes more than once.
  • Taste: Fixed a crash bug introduced by a recent change to the taste command.
  • OLC: Added some automatic deletes to keep out junk data in the adventure system.
  • Generic mob naming: Decoupled the #n, #a, #e mob name replacements from the empire system and caused them to save through reboots. Generic name replacement is now done virtually any time a mob is loaded. These names (and dynamic genders) now save through reboots, for non-empire mobs (empire mobs do not save).

January 20, 2015

  • Mailing: The (mailing) tag is no longer shown on the who list when a player is mailing.
  • Statskills: Added skill experience to display.
  • OLC: Changed ‘name’ to ‘shortdescription’ in mobs and objects, to avoid confusion.
  • Blood: A message is now displayed indicating your victim is below 20% blood while you are drinking from them.
  • Text editing: Most text editors no longer take you out of the game, and now use the comma (,) to indicate text entry.
  • OLC: Types and flags whose names begin with * can no longer be added via OLC.
  • Empire scores: The empire’s playtime score is no longer based on “highest playtime per account” — there was no reason to account-restrict this.
  • Exits: We are now saving the full exit_info bits rather than only is-door.
  • Directions: Fixed several issues where the new directions should not have been valid targets for commands like catapult, siege ritual, throw, sail, look, etc.
  • Vstat: Added stat displays for adventure zones and room templates.
  • Taste Blood: Fixed a bug where the taste failed silently if NO triggers blocked it (rather than if ANY triggers blocked it).
  • OLC: Added a .matchexits for room templates, which creates back-exits for you.

January 19, 2015

  • Exits: Changed how room exits are handled from an array of pointers, to a linked list. Added several new directions.
  • Ships: The new directions fore, aft, starboard, and port are now used for ships.
  • Ships: Fixed a bug where a ship object whose interior room was deleted, would cause a crash on startup.
  • Pledge: Fixed a bug where the leader of the empire could no longer pledge to other empires.
  • OLC: Fixed a bug where saving a trigger would later result in freeing freed memory.
  • Adventure zones: Added data, library functions, and OLC suite for adventure zones and room templates.

January 18, 2015

  • OLC: Added and tested trigger assignment via olc.
  • Show account: Fixed a bug where players who aren’t attached to an account would not indicate that they had alts on other accounts.
  • OLC .list: Fixed a buffer overrun bug.

January 17, 2015

  • Mob scaling: Added a function that returns the approximate level of a player or NPC, where unscaled mobs return their lowest valid level.
  • Abilities: Added new functions can_use_ability() and get_ability_level() to help the upcoming refactor of abilities to allow NPCs to use them. The IS_CLASS_ABILITY() and IS_CLASS_SKILL() macros have been updated to apply to NPCs, too.
  • Code cleanup: Changed the ‘top_of_trigt’ global variable to be what its name implies, instead of actually being the total number of triggers.
  • Code cleanup: Replaced all 1200 instances of pointer->in_room with the IN_ROOM(pointer) macro.
  • Skill gain: Skill gain is slightly less random now, using a new system where skills gain experience and chance to level is based on cumulative experience.
  • OLC: Added trigger editor suite for the .olc system.
  • Default data: Updated some data to default to the -1/NOTHING state rather than assuming 0 is an invalid id number.
  • Skills: Changed how skill data is stored in order to add room for skill experience.
  • Skill resets: You can now accrue up to 10 free resets in each skill (although only 5 are granted through normal play), rather than only having one available in a skill at a time.
  • Player convert: Updated the player file with a new structure and cleaned up some data.

January 16, 2015

  • Double: Converted all uses of the “float” data type in the code to double.
  • Bite: Scalable mobs now scale before checking their health for a bite.
  • Deleted objects: Changed how deleted objects are loaded on characters (and rooms) that had them before the deletion.
  • Triggers: Added support functions for trigger OLC.

January 15, 2015

  • Auto-store: Fixed a bug where objects’ auto-store timers were not saved through reboots, so objects could stay much much longer without auto-storing.
  • Set: Fixed a bug where the “set vampire off” command turned off the vampire flag for the immortal using set, not for the target player.
  • Vstat: Added triggers to vstat.
  • .list: Added triggers to olc .list

January 14, 2015

  • OLC: Moved the .room commands to .map so that .room can be used for the room component of adventure zones, as a full editor.
  • Objects: Added a check to ensure that objects have keywords, short description, and long description when loading them from file — based on two strange crash cores that indicate an anonymous object with no short desc.
  • Show rent: Fixed a bug where the last item in the rent file was not shown unless it had a custom description.
  • extract_pending_chars: Rearranged a block of code so that players are removed from the character list before they are extracted. There was a rare case where a character idling out could be searched for in-game after being extracted but before being removed from the character list.

January 13, 2015

  • Default channels: Fixed a bug where new players were not added to the default channels correctly on their first log-in (but were on their second).
  • Sun: Fixed a bug where open rooms were considered not-sunny and closed rooms were sunny.
  • Prominence: This technology no longer affects empire rank directly (it still affects whether you show on the “empires” command with no arguments).
  • Score: Changed how score is displayed on the empire detail page.
  • Summon materials: Changed the error message to better indicate nothing is stored locally (rather than not stored at all).
  • Cities: When two empires merge, any cities lost will no longer be fully abandoned. Added a “downgrade” city command that lowers a city by 1 level, or removes it entirely without abandoning it.
  • City overages: Empires that are using double their available city points and have more than 1 city will now see their cities lose city status until they no longer have a double-overage.
  • Stale empires: Empires whose members have all timed out will now lose territory at a rate of 1 tile, at random, per real hour, starting without outside-of-city territory, until none is left.
  • VERY stale empires: Empires now fully delete themselves after 2 real years of inactivity.
  • Mudstats: Added this new command, currently with its only option “mudstats empires”, which shows the averages used in empire scoring.
  • Einventory: Fixed a duplication error on certain uses of einventory.
  • Techs: Fixed a crash bug due to incorrect variable use in tech-reading.

January 12, 2015

  • Empire scores: Tweaked the score formula to make 10s harder to achieve.

January 11, 2015

  • Title: Fixed a bug where titles of exactly 80 characters would overrun their buffer and append the user’s description on re-login. This was the first EmpireMUD 1.0 bug I’ve found in a long time.
  • Building flags: Changed many code instances of BLD_FLAGGED to ROOM_BLD_FLAGGED so that they affect only the part of the building they are applied to.
  • Einventory: Fixed a bug where you couldn’t see item totals for things not on your current island using einv.
  • Dig: Fixed a bug where dig would auto-repeat even if there were none left.
  • Show player: Added year to dates shown.
  • Auto-balance: Dockworkers will now attempt to unload a full 400 items per cycle, rather than only getting 1 type of item and sometimes only getting 1 item in the whole cycle because another workforce has just made it.
  • Empires: Members now timeout after a variable number of days ranging from 1 week to 4 months, depending on their playtime. This means that getting a new player to join your empire, only to have them play for an hour and never return, is no longer a way to raise membership for a full 4 months.
  • Tavern/Drink: Restricted these two building flags to the room they are set on, not the whole building if the entrance has them.
  • Auto-balance: Tweaked the formula used for the auto-balance workforce chore.
  • Redesignate: Fixed a bug where this command would say it worked, but fail.

January 10, 2015

  • Empire list: Added new functions to assign all empires a score, which is used as the primary method of sorting the empire list. Empire score is visible on the empire list.
  • Reboots: Muted the channel-join spam after reboots, when players are re-added to slash-channels.
  • Workforce: Added the ‘auto-balance’ workforce chore (Skilled Labor), which will cause your citizens to automatically shuffle einventories between your different islands until they are balanced.
  • Technologies: The Apiaries, Glassblowing, and Seaport technology are now tracked per-island and will not function on other islands.
  • Command interpreter: Cleaned up some code to attempt to speed up the command interpreter.
  • Warning: Items left in ships will now last longer before being auto-stored, but if the ship is at sea (not in a docks) when auto-store hits, the items will be lost at sea. Presumably to pirate ninjas.
  • Elog: Fixed a bug where the privilege was not checked properly.
  • Main Island: Added a function that determines an empire’s main island. This is the island with the largest city, when possible, or any island the empire has territory on.
  • Storage: Raised the cap on any one stored item to 1 million, from 100,000.
  • Storage: Empire storage is now by-island rather than global. You can only store or retrieve to the inventory of the island you’re on. Existing einventory is stored on the empire’s main island.
  • Trade: Exports now come out of any available island’s einventory. Imports go to the empire’s “main island”.
  • Workforce: Skilled Labor now has a resource cap of 750, but resource caps are now per-island. Workers must have the appropriate buildings and einventory on their current island to work their task. Citizens will not travel to other islands to work, even if they are otherwise in-range.
  • Summon Materials: No longer works on the ocean. Now summons materials only from the island you’re currently on.
  • Buildings: Added a LONG-AUTOSTORE flag for rooms that hold items longer. Added a ITEM-LIMIT flag for rooms that can’t hold as many items.
  • Bedrooms: Now have LONG-AUTOSTORE and ITEM-LIMIT.
  • Ships: Now have LONG-AUTOSTORE and ITEM-LIMIT.
  • Estuary garden: This building is now built on river facing ocean, rather than ocean facing river.
  • Island counting: Changed the way islands are numbered and saved this data to disk instead of re-detecting on every run.

January 9, 2015

  • Gossip: Removed this channel entirely.
  • Player conversions: Added an in-game function that can make adjustments to all players without taking the mud down and running an external program, for changes like turning off a preference flag on all players (but not changes to the size or structure of the player file).
  • Slash-channels: Added the /ooc and /newbie channels to all existing players.
  • OOC: Removed this channel. New players will now auto-join /ooc.
  • NEWBIE: Removed this channel. New players will now auto-join /newbie.
  • History: Removed this command — slash-channels have their own histories.
  • Godhistory/ghist: Added a new history command for the god channels.
  • Shout: Moved shout history to the sayhistory command.
  • Map-wrap: Updated the code to allow map edge-wrapping to be shut off in either (or both) the north/south and east/west directions.

January 8, 2015

  • City list: Updated the city list to show how many city points your empire is using, and how many total it has earned.

January 7, 2015

  • Code cleanup: Some more code cleanup including replacing some instances of “< 0” in the code with the correct values, as well as some “> 0” instances and similar. Fixed a few minor bugs while doing so.
  • Set: Fixed an issue in “set password” where the new password was syslogged.
  • Guard towers: Fixed a bug where towers were shooting dead players, causing even more death.
  • Die: Fixed a bug where dead players could die, deleting their inventory/equipment file by overwriting it with an empty one.

January 6, 2015

  • Empires: Decoupled empire ids from leader player ids and changed all empire ids to the empire_vnum data type. Added a function for getting a new vnum upon creation, and rewrote the functions related to creating an empire.
  • Crops: Removed the random chance of field becoming crop, lowered the crop rate on deserts to 0.01%, and lowered the grove-to-desert rate to 0.05%. Crops are basically overrunning the world.
  • Code cleanup: Removed additional instances of -1 from the code. Fewer than 400 -1s appear in the code now; most of those that remain are deliberate rather than magic numbers.

January 5, 2015

  • Code cleanup: Replaced many (but not all) instances of -1 in the code with the appropriate const. Also fixed places where int was used instead of empire_rnum.
  • Data types: Changed “Object” to “obj_data *” to remove the hidden pointer, to be more compatible with CircleMUD code, and to be simpler for future EmpireMUD programmers. Also changed “Room” to “room_data *” and cleaned up the code related to all these data types for consistency.

January 4, 2015

  • Data types: Changed the “Creature” data type, which was “struct char_data*”; the code now uses “char_data *” for character data, which no longer hides the fact that it’s a pointer (which was pointless).
  • Item scaling: Added an auto-scaling system for items, which we will be testing and using on adventure content.
  • Temperaments/Traits: Changed the empire temperament system to a “traits” system that can be set up per-city using “city traits”, and for non-city locations using “eedit frontiertraits” (feel free to abbreviate that). Currently the only trait available is Distrustful.
  • any_one_word: Fixed a bug where this function didn’t work correctly with quotation marks. Then reviewed use of the one_word() function and changed it to any_one_word() in several places.

January 3, 2015

  • Building: Fixed a bug where barriers (e.g. wall) could be built in front of entrances.
  • Empire logging: Empire log messages are now saved for 30 days.
  • elog: Added a new command for viewing empire logs.
  • Import/Export: Fixed a typo on the list.
  • Tanning: Fixed a bug that may have contributed to bugs in einventory.