Patch Notes

EmpireMUD 2.0 beta 5 patch notes

Skip to live patches…

Patch b5.5 (not live)

  • Abilities:
    • Toggles: Changed how abilities report success/failure and moved where they check cooldown/cost in order to allow toggle-off while the ability is on cooldown.

Live Patches:

Patch b5.4 (June 27, 2017)

  • Abilities:
    • Defend: New Battle ability increases dodge at the cost of to-hit.
    • Fletching: Added additional arrow types.
    • Frenzy: New Battle ability increases to-hit at the cost of dodge.
  • Ability System:
    • Buff abilities: Added the editor and logic for buff abilities to be built in OLC, for testing over the next couple of weeks.
    • Commands: Abilities can now have their own commands, set in the ability editor, which the mud finds and runs similar to socials.
    • Parameterized abilities: Ported CircleMUD’s generic spell handlers as part of an update that allows abilities to be designed and implemented in-game using OLC. The ability editor now has additional options for configuring abilities.
  • Adventures:
    • 104 Magiterranean: Permafrost: Minor fixes to Aquilo’s fight script.
    • 125 Ruins: The Goblin Challenge: Updates to the spawning script.
    • 180 Misplaced Mother Goose: Removed the ability to start the quests at the mob who turns them in, to reduce confusion. The quests now only start from the items.
  • Displays:
    • Damage messages: Fixed conjugation typoes in the new damage messages.
  • Help Files:
    • Equipment: Updated with notes on containers and inventory size.
    • Inventory: Updated with notes on containers, and reformatted the flag section to be clearer.
  • Immortals:
    • Abilities: Immortals can now ‘skill buy’ any ability regardless of whether it’s in a skill tree. (Immortals could already ‘skill sell’ any ability.)
  • Objects:
    • Containers: Fixed a bug where containers in inventory were not properly updating inventory size when items were added/removed. Containers now take up inventory size even if worn, as do the items inside them.
    • Player inventories: Fixed a bug where containers in players’ inventories would lose the items on login (since there aren’t many in the game, this long-lived bug had not come up before).
  • OLC:
    • Custom messages: Made a general custom message editor since 3 types now have them.
    • Scripting: Empty variables no longer save to file.

Patch b5.3 (June 20, 2017)

  • Abilities:
    • Backstab: Now works on opponents who are fighting at range, and forces melee afterwards.
    • Bowmaster: New Battle ability gives 50% more damage from ranged weapons.
    • Charge: New Battle ability immediately closes the distance in ranged combat.
    • Fletching: New Trade ability for making better arrows.
    • Kite: New Battle ability moves you back to ranged combat, or keeps you in ranged combat longer.
    • Melee abilities: More abilities now require melee range if used in combat, and some existing abilities that already required it were updated. These include: heartstop, disarm, kick, bash, weaken, jab, prick, bite, blind, lightningbolt, sunshock, ablate, acidblast, arclight, astralclaw, chronoblast, deathtouch, dispirit, erode, scour, shadowlash, soulchain, starstrike, thornlash, skybrand, entangle.
    • Rescue: Updated to ensure the rescuer is put in the correct fight mode.
    • Searing Poison: Removed the special-cased code for this poison. It now uses a consume trigger to apply its effect.
    • Trick Shots: New Battle ability adds additional effects to your ranged combat.
  • Adventures:
    • 125 Ruins: The Goblin Challenge: This adventure got a full update include new combat scripts, a difficulty selector, and a new set of loot.
    • Bows: All existing bows were updated as part of updates to ranged combat.
  • Code Updates:
    • Global buffers: Removed multiple uses of CircleMUD’s global buffers (buf, buf1, buf2) in core files including comm.c, handler.c, interpreter.c, limits.c, modify.c, and utils.c. This may fix a strange heisenbug where a trigger (especially the goblin lumberjacks) reports a script error that includes text from a script being edited, rather than text from its own script. But due to the nature of the heisenbug, it’s impossible to be sure.
  • Combat:
    • Messaging: Added a “noun” form of the weapon type instead of using the first-person message as a noun in the “your <slash>” message. This now allows for types that can’t be phrased that way, such as shoot/shot (“your shoot” wouldn’t work). Also changed the terms “singular and plural” to “first-person and third-person” in the code related to these messages.
    • Ranged weapons: Added 4 new weapon attack types: bow, crossbow, pistol, musket. These all use the verb “shoot”, but have different combat messages. Value 0 on ranged weapons now indicates attack type, rather than missile weapon speed. Missile weapons now use normal attack types. Arrows can now apply debuffs when they hit, and can fire scripts.
  • Commands:
    • Approach: Manually cancels ranged combat and moves into melee.
    • Hit/kill: Using this command to change focus in combat now also accounts for fight mode (melee, missile).
    • Shoot: Can now be used to change targets in ranged combat.
    • Use: You can now “use <arrows>” to set preferred ammunition.
  • Displays:
    • Attacks: Added more damage messages, going up to 125 damage.
    • Physical DoT: Fixed noun-pronoun agreement for the “wince” messages.
  • Mobs:
    • Global loot tables: Updated global loot tables so the ADVENTURE-ONLY flag now only applies to mobs that are linked to an adventure instance, not just mobs whose vnums come from one.
    • Scaling: Adjusted the values for mob health to create a smoother progression through hard/group/boss and tank modifiers.
    • Stables: Fixed a b5.1 bug where too many mobs despawned from stables, under certain circumstances.
  • Objects:
    • Ammo: The “arrows” object type is now called “ammo”.
    • Searing Poison: No longer storable. Now uses a trigger instead of special-cased code.
  • Scripting:
    • Consume triggers: Poisons and arrows can now fire consume triggers. Added an optional %target% variable to these triggers.

Patch b5.2 (June 13, 2017)

  • Adventures:
    • 104 Magiterranean: Permafrost: The quests now correctly give the token currency from b5.1 instead of the old token items.
    • 128 Colossal Red Dragon: The quests now correctly give the token currency from b5.1 instead of the old token items.
    • 129 A Gigantic Nest: The quests now correctly give the talon currency from b5.1 instead of the old talon items.
    • 18200 The Guild of Adventurers: The quests now correctly give the token currency from b5.1 instead of the old token items.
    • 18500 The Lost Temple: Fixed papaya harvest percent.
    • 19000 The Swamp Hag: A full upgrade of the old swamp hag adventure (121) that includes more loot, crafts, and a difficulty selector.
  • Code updates:
    • Auto-updater: The game will no longer run old auto-updaters on fresh new EmpireMUDs, which sometimes caused strange problems.
    • base_map file: Fixed several serious b5.1 bugs that occurred when loading the world without a base_map file.
    • get_building_by_name: Now prefers exact matches first.
    • Islands: Island pointer are now assigned earlier during startup.
    • Startup: Moved the scheduling of un-loading rooms to the end, and un-loaded as many rooms as possible first, to prevent very long startup times when a lot of rooms are loaded.
  • Commands:
    • Designate: Now only searches rooms you COULD designate where you are. This prevents conflicting names from rooms that can’t be designated.
    • Scan: Fixed a bug from b5.1 where scanning for a tile wasn’t working.
  • Content:
    • Heroic Boots of Seven Strides: Fixed level limits.
    • Heroic Caravan: Changed the room names to avoid conflicts with other room types.
  • Scripting:
    • Unusual error: Added a check to prevent a crash when a script runs without script data. This should never happen, and will now log an error instead of crashing.

Patch b5.1 (June 6, 2017)

  • Notes for Admins:
    • Makefile: There are several new files that must be added to the Makefile. Or, you can run the ‘configure’ script again to generate a new Makefile (if you haven’t made changes to yours).
    • Configs: When I updated my builder port copy, my game_configs file had a small conflict.
    • Cooldowns: When you apply this patch, you’ll see SYSERRs for invalid cooldowns on players. This is because cooldown numbers changed. All players will have their cooldowns refreshed when this patch is applied for the first time.
    • Long update: When you first boot your EmpireMUD with b5.1, expect it to take a long time to start up. It has a lot of things to auto-update.
  • Abilities:
    • Darkness: No longer randomly wears off in sunlight. This “feature” was not mentioned in the help file but previously triggered on hourly updates.
    • Owl/Scorpion Shadow Familiar: These familiars now hide when their master hides.
  • Adventures:
    • 104 Magiterranean: Permafrost: Added some random moves to the river-freezer’s load script, so he starts freezing as soon as a player activates the delayed-load on the adventure.
    • 160 The Tower Skycleave: Moved the tower announcer script from the interior to the building so it can run if the adventure isn’t loaded yet.
    • 18300 Pyramid: Hidden Chamber of Neferkare: Moved the spawn command for the wandering mummy to the difficulty selector so the mummy is now freed when you start the adventure.
    • 18500 Lost Temple: Changed how it detects whether the adventure was successfully completed, to allow delay-loading.
    • Craftables: Craft patterns from adventures have been updated to use the new recipe system. Players can now ‘learn’ the patterns permanently.
    • Delayed loading: Adventures now support delayed loading, where they don’t instantiate until a player arrives. This should reduce lag from unused mobs, rooms, and triggers in the world. The following adventures now use it: Grove, Hidden Gardens, Permafrost, Three Banditos, Thieves, Goblin Challenge, Ratskins, Goblin Outpost, Skycleave, Primeval, Hamlet, Winter Wonderland, Burrow Canyons, Mill Manor, Molten Fiend, Unstable Portal, Neferkare, and Lost Temple.
    • Mini-pets: You can now see minipet cooldowns on the ‘cooldown’ command. Some mini-pets received new echoes.
    • Shops: All adventure shops were converted from scripted behaviors to real shops.
    • Tokens: All adventure currencies, such as tokens, were converted to player currencies.
  • Buildings:
    • Siege damage: Fixed a bug where buildings without their own maintenance requirements were not getting the default repair requirement when damaged.
  • Code updates:
    • Annual map update: Rewrote and rearranged parts of this as part of updates to the world map and to room data.
    • Archetypes: The sorted archetype table is now sorted by type then name.
    • Burning buildings: Instead of hourly updates of burning buildings, these are now scheduled on a timer. All code related to burning buildings was updated.
    • Crop growth: Now happens on its own timer, rather than being updated by iterating over the world.
    • Events: Fixed a tiny memory leak in trigger wait events (6 bytes per wait).
    • fresh_copy_obj: Now copies script variables in addition to other properties.
    • Hide: Typing a command while hidden now attempts to remove any HIDE effect, not just ones from the ‘hide’ ability.
    • Island lookups: All rooms now store pointers to their islands, for faster lookups.
    • Map lookups: All rooms now store pointers to their map location, for faster lookups.
    • Room affects: Instead of a duration, these effects now have an expire time, and are scheduled as events.
    • Room extra data: Created generic versions of these functions so they can operate on map tiles as well as rooms. The old functions are now macros wrapping the new functions.
    • Warehouse: Now capable of storing/copying script variables.
    • World map: Moved more data from live rooms to the map data, so more rooms can be un-loaded from RAM.
    • World updates: Eliminated the world updates that happened on 30- and 75-second timers. This should reduce periodic lag significantly.
  • Combat:
    • Changing focus: Removed the free hit when you change focus in combat using hit/kill.
  • Commands:
    • Beckon: Invites a player (or room) to follow you.
    • Buy: Buys items in shops.
    • Cede: You can no longer cede land to a player who does not have the ‘claim’ privilege in their empire.
    • Coins: Now lists adventure currencies too.
    • Follow: No longer requires a target if someone has beckoned you to follow them.
    • Learn: Consumes a recipe item and stores the recipe for the player.
    • Learned: Lists/searches learned recipes.
    • List: Lists items in shops.
    • Messages: Shows recent/recurring messages.
  • Configs:
    • new: automessage_color &y
    • new: burn_down_time 600
    • new: trench_fill_time 43200
    • new default: planting_base_timer 9000
  • Crafts:
    • Global pattern drops: These items have been converted to learnable recipes.
    • Immortals: Can now set and show learned recipes on players.
    • Learnable recipes: Players can now permanently learn some craft recipes, using a ‘recipe’ item. This replaces the system where a player must keep recipe/pattern items in their inventory.
  • Currency:
    • Adventure currency: New generic type, to replace existing token systems.
    • Coins: This command now shows your adventure currencies, too.
    • Immortals: Can now set and show adventure currencies on players.
    • Quests: Currencies can be quest pre-requisites, tasks, and rewards.
    • Resources: Currencies can be in resource lists for crafts, buildings, etc.
  • Displays:
    • Quest finish: Changed the order of error messages because ‘You can’t turn that in here’ is not useful if it’s not complete.
    • Recognizing: You can now see who a disguised/morphed player is when you look at the room, IF you can recognize them (e.g. same empire or group).
  • Generics:
    • New data type for generic number/string data.
    • Affects: Converted all the ‘affect’ data to generics. Affect names and wear-off messages are now controlled in-game. Scripts can now pick specific affect types to apply.
    • Cooldowns: Converted all cooldowns to generics. They now have configurable wear-off messages (and the option for no message), and can also be set/read in scripts.
    • Liquids: Added a generic type for liquid data, which replaces hard-coded liquids. All existing liquids were converted to use this system.
    • OLC: Full editor suite for generics.
    • Resource actions: The resource actions (magic words, tidy up, dig) were moved to generics and can now be added in-game. Added an auto-updater to fix existing buildings, crafts, and vehicles, as well as any live copies of buildings and vehicles that have them.
  • Help Files:
    • Access level: New immortal help explains levels better.
    • Gods: New help file explains the old god system, and why it isn’t active.
  • Immortals:
    • Automessage: New command/system for automatically displaying messages to all players (on a timer, on login, or once per player).
    • Instance list: Will now show live adventures with zero instances.
    • Set access: Changed “set level” because some admins are using it while trying to change their skill/gear level.
    • Show stats: Fixed a display bug where the number of live triggers was only counting the local list from the first global trigger, not the full list of global triggers.
    • Stat trigger: Now correctly shows attachments for vehicle triggers.
  • Objects:
    • Craftables: Added a new tier of 20 craftable armor, helmets, armwear, and offhand items in the 100-200 level range, plus 5 miscellaneous items including new packs and shoes. The patterns for these items drop from any mob in the world in the 100-199 level range, with a higher chance from mobs with higher difficulty flags. Added another set for 200-299 as well.
    • Recipe: New item type with value 0 used for a craft vnum. Recipes are consumed by the ‘learn’ command.
    • Trinkets: You can now see trinket cooldowns on the ‘cooldown’ command.
  • OLC:
    • Globals: Now lists the type of global on the .list and vnum output.
    • .gen quickcooldown: Creates a quick cooldown generic for various things.
    • .o quickrecipe: New command creates a quick recipe item for a learnable craft.
    • .o search: Fixed a bug in how resource entries were searched for objects.
    • Triggers: Fixed a bug where the “obj location selector” option for trigger arguments also caused the <string> prompt to be displayed. Improved how triggers are copied, saved, and freed (including a memory leak where trigger command lists were not freed). This may fix a bug where editing (or saving) one trigger can cause an error to appear in another trigger that was already running, but this bug is difficult to reproduce and may be more involved.
  • Rooms:
    • Affects: Room affects now save through a reboot. Also added code to ensure the affects are correctly applied at startup.
    • Deleting: No longer check instances when deleting a room unless the room has an instance attached.
    • Oceans: Oceans are now un-depletable since they don’t save depletion data to file anyway.
    • Resets: Moved non-adventure-room resets to a periodic event rather than an iterator.
    • Saving: Combined the saving of world rooms and the world index, rather than iterating over the world twice.
    • Shared data: Map tiles and room objects now have “shared data” so that some of the same data is not updated in two places, and more data is stored to the map tile so the room can be un-loaded from memory. Ocean tiles all share 1 shared data object; all other tiles and interior rooms have a unique one.
    • Stored events: Rooms (and map tiles) now have a hash table and handlers for storing event pointers, so that events for those things can be managed/canceled.
    • Taverns: Moved tavern updates from an iterator to a timer.
  • Scripting:
    • Buy: New trigger type fires whenever someone tries to buy from a shop.
    • Conditions: Added %char.hunger%, %char.thirst%, and %char.drunk%, which can be used to get/change these player conditions.
    • Cooldowns: Added %char.cooldown(VNUM)%, %char.set_cooldown(VNUM, SECS)% and %cooldown.VNUM%.
    • Currencies: Added %char.currency(VNUM)%, %char.give_currency(VNUM, AMT)%, %char.charge_currency(VNUM, AMT)%, and %currency.VNUM(AMT)% variables.
    • dg_affect and dg_affect_room: Now support an optional first argument with a number sign and an affect vnum (#1234). Now also support a quick way to cancel all affects of a given type.
    • %dot%: Now support an optional first argument with a number sign and an affect vnum (#1234).
    • Instance vars: Added %instance.level%, %instance.level(lvl)%, %instance.load%, and %instance.loaded% variables.
    • Learned recipes: Added %char.learned(VNUM)%, %char.add_learned(VNUM)%, and %char.remove_learned(VNUM)%.
    • Memory: Added a delay system for freeing trigger memory, to fix a bug in DG Scripts where a trigger can actually detach and extract itself and then still try to reference some of its data (which only usually worked). Also fixed a memory leak where, in some cases, the command list for a trigger was never freed.
    • Object vars: Added %obj.quest%.
  • Shops:
    • New data type: Shops are no longer built tediously using triggers. They now have their own data type and full OLC suite.
    • Buy: New command to buy items from a shop.
    • List: New command to list items for sale in the room you’re in.
  • Tutorials:
    • Existing Tutorials: Turning off tutorials now blocks the intro quest for the Soulstream, Museum, and Planning Office tutorials (but not the quests inside).
    • Microtutorials: The following items now have single-quest tutorials: rock, chipped rock, flint stone, flint set, stick.
    • Toggle: Added a new quest flag, TUTORIAL, that is blocked by the new ‘toggle tutorials’. This will cause some quests to stop appearing.
  • Vehicles:
    • Captain’s Cabin: Fixed the room title, which said “Bunk Room”.

 

For patches prior to b5.1, check out the changelog on GitHub.