EmpireMUD 2.0 beta Change Log

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

== 2.0 b5 (June 5, 2017) ==

Abilities:
- Ablate: New Battlemage spell with direct damage and a resist-physical debuff.
- Acidblast: New Alchemist spell with direct damage and a resist-magical debuff.
- Archery: Fixed a bug where losing this ability did not immediately unequip
the player's bow.
- Arclight: New Archmage spell with high direct damage.
- Astralclaw: New Werewolf spell with direct damage and a physical DoT.
- Backstab: Can no longer fail if the mob is incapacitated or can't see you.
- Barde: Fixed a minor bug where barded mobs inherited the wrong instance id.
- Basic Buildings: New zero-level ability in Empire containing buildings that
did not previously require any ability and used to give Empire experience
directly. Added 'familygravesite', an in-city-only tomb.
- Basic Crafts: Added a raft made from desert wood, so players do not get
trapped on desert islands.
- Bite: Ensured that mobs killed by 'bite' have the correct level and loot
bindings.
- Bite: New low-level Vampire ability that allows you to bite enemies to gain
blood and gain Vampire experience at low levels.
- Bloodsword: This ability is now called "Ready Blood Weapons". It now gains
experience while fighting and uses the "ready" command instead of its own
command. Five different blood weapons are now available under this same
ability: stabbing, jabbing, slashing, pounding, and a staff.
- Chores: New zero-level ability in Empire which gains experience from
chopping, sawing, milling, and other tasks that used to give Empire experience
directly.
- Chronoblast: New Artificer spell with direct damage and a slow effect.
- Command: Mobs that cannot be attacked can no longer be commanded either.
- Confer: Updated to prevent abuse by logging one character out until the timer
expires.
- Cook: New zero-level ability in Trade that now contains all the basic food
recipes. Most of these cooked foods also gained small buffs and had their
'fullness' values adjusted.
- Customize Building: Now causes normal ability-length command lag, to reduce
the rate at which you can spam it.
- Darkness: Reconciled the duration on Darkness with its help file — the effect
is shorter than it was, but the duration listed in the help file is now longer
than THAT was.
- Deathtouch: New Necromancer spell with a low cooldown and direct damage.
- Devastation Ritual: Fixed a bug where crops were giving up to 4x too many
items.
- Disguise: You can now disguise yourself as another disguised player (but not
an undisguised player). This prevents 'disguise' from being used to detect who
is or is not a real NPC.
- Dispirit: New Shadow Wolf spell with direct damage and a Wits debuff.
- Eartharmor: Can now be cast while resting.
- Earthmeld: Now works in open buildings. Earthmelded players now begin
stacking DoT damage if someone is digging or excavating above them. Players no
longer get the "sleeping" regen bonus while using Earthmeld (this was an
error).
- Equipment abilities: Fixed a bug where automatically removing gear due to
losing abilities did not adjust the player's gear level immediately.
- Erode: New Luminary spell with direct damage and a DoT effect.
- Evasion: New zero-level ability in Battle which gains experience when you
are attacked.
- Exarch Crafts: Workforce now correctly gives Skilled Labor experience when
crafting nexus crystals.
- Familiar: Fixed the messaging on the owl shadow familiar. Vampires can no
longer drink blood from familiars. Also applied the missing !RESCALE flag to
the familiars. The buff/debuff familiars received better scripts and scaling
improvements.
- Fish: You can now change directions without interrupting fishing (the tim
er will still reset). You can also now fish while sitting (e.g. in a canoe).
- Forage: Can no longer be used while performing a timed action (such as
chopping).
- Foresight: Fixed a bug in the requirements for gaining experience from this
ability.
- Hasten: Can now be cast while resting.
- Heal Party: No longer allows you to cast it with no effect when not in a
party (Awkens).
- Hone: Fixed a bug where players without Hone could use honed gear.
- Infiltrate: You can no longer infiltrate buildings belonging to immortals.
- Lightningbolt: Improved damage and cost based on level, role, and traits.
- Master Survivalist: Fixed a bug where this ability was not triggering skill
gain for the user.
- Mirror Image: Fixed a bug that allowed mirror images to be healed during
battle in some cases. Mirror images now have more health (based on caster
level). They no longer count as familiars (they were never really familiars).
People attacking the caster no longer see the mirrorimage activation message
(everyone else sees it and is not fooled). Mirror images can no longer be
healed (directly), no longer attack, and are no longer animals for some
reason. It now costs 20% of your max mana. You can no longer drink blood from
mirror images. Improved gender detection in the mirror to match the player's
gender at the time of using the ability (e.g. when disguised). Improved mirror
image long descriptions.
- No Trace: Changed how this ability works, which was not quite as-described in
the help file. It now correctly functions on tiles that are not buildings or
roads. It no longer works inside adventure zones at all.
- Pickpocket: Fixed a serious bug where failing to pickpocket a mob from your
empire would still charge your empire the coins, but nobody would get those
coins. Now checks your "stealthable" toggle to prevent accidental empire
distrust. Rearranged the logic in this ability slightly, to allow repeatable
pickpocket triggers. Previously, a mob that had been pickpocketed already would
not reach the ability triggers stage. You can no longer pickpocket mobs who are
unattackable (unless they have their own pickpocket lists). This prevents an
exploit for training pickpocket on generic mobs who won't attack you.
- Poisons/Deadly Poisons: Fixed an issue where all poisons only required the
basic Poisons ability. Some now correctly require Deadly Poisons.
- Primitive Crafts: New zero-level ability in Trade containing things that
previously didn't require an ability and used to give Trade experience
directly.
- Prospect: This ability is now instant (with command lag) if your empire was
the last one to prospect the tile this year.
- Ready *: Rewrote the "ready" command to support other cost types (like
blood), and to scale the item instead of just changing its damage. Updated the
fireball item to reflect this (it now does slightly more damage at level 100).
Scaling on readied weapons now includes levels you got from the weapon you were
using, if it was a permanent weapon (rather than a single-use weapon).
- Refashion/reforge: Now preserves the "keep" flag.
- Ride: If you are somewhere that doesn't allow mounts, the game will now
auto-dismount you.
- Ride: Players can now have more than one mount, and can switch their active
mount at any stable. You will now automatically dismount if you're mounted on
a water tile without a valid mount.
- Ritual of Teleportation: You can no longer teleport home if your home is
parked in someone else's territory and you don't at least have guest access
there. This also applies to home trinkets. You can now teleport home while
riding.
- Scavenging: New zero-level ability in Survival which gives experience for
digging, gathering, and picking.
- Scour: New Exarch spell with direct damage and a DoT.
- Search and Sense Life Ritual: Now reveals hidden people even if you can
already see them due to immortal flags like HOLYLIGHT, and more reliably
removes HIDE effects. They also now both detect Earthmeld.
- Shadowlash: New Occultist spell with direct damage, a DoT, and blind effect.
- Shadowstep: Improved the targeting on shadowstep to better find the closest
character.
- Skybrand: Increased the raw damage on skybrand based on level and added
bonus-magical damage to its DoT. Cost is now based on damage.
- Sneak: Fixed a bug where sneak always had a command lag of 1 second, instead
of adding 1 second to however much command lag the player incurred from
movement.
- Soulchain: New Lich spell with direct damage and an Intelligence debuff.
- Stablemaster: New ability allows players to release their mount as a mob (for
trading with other players), and lets them swap mounts anywhere.
- Starstrike: New Feral spell with high direct damage.
- Summon Animals: Now uses Charisma instead of Wits.
- Summon Thug: Reworked this ability to function better as a distraction.
Thugs are now summoned one at a time (the cooldown was reduced) and do not
follow the summoner. Thugs belong to the empire that owns the tile on which
they were summoned.
- Sunshock: Improved main damage and cost based on level, role, and traits.
Now only gets 1.5x damage against vampires, but this does not factor into the
cost.
- Taste Blood: No longer shows age for non-players.
- Thornlash: New Theurge spell with direct damage and a poison DoT.
- Unseen Passing: Changed this ability similar to No Trace. It now correctly
functions in all buildings, on roads, and all claimed city tiles. It also no
longer works inside adventure zones.
- Various: Updated backstab, bash, kick, and damage spells (lightingbolt, et
al) to start combat meters early, so that they track damage from the opening
hit.
- Weaken: Now drains both Strength and Intelligence.
- Weapon Proficiency: New zero-level ability in Battle which gains experience
when you attack with weapons.
- Worm: Can now see the map from an open building tile. Worming players now
begin taking stacking DoT damage while under a closed building.

Adventures:
- 52 Tutorial Quests: Now requires the quest to enter the Soulstream,
hopefully reducing confusion. Soulstream mobs now have the !EXP flag so they
can't be used for easy experience gain. Updated the Tower of Souls, the
adventure description, and the portal into the Soulstream to help newbies
figure out how to start the tutorials.
- 100 Magiterranean: The Grove: Changed how this adventure appears on the map.
The archdruid will now always appear, instead of sometimes not being present.
- 101 Magiterranean: The Hidden Garden: Updated the token combine trigger to
account for the "keep" flag and to stop blocking the normal combine command.
- 102 Magiterranean: Interdimensional Whirlwind: Changed mushrooms' trigger to
a food buff. Crops from this adventure should now also give their plantable
seed item when harvested. Fixed level caps on several crafted items so they can
be used at level 100. Fixed object text. Fixed the scaling level on the
dragonstooth sceptre. Gemfruits no longer produce gems when held by NPCs; 
updated the decay message on them. Pickthorn is now storable. The spade-axe and
pick-and-pan can both now be used in the "hold" slot. Some of the craft recipes
are now mentioned on more item descriptions. Updated the dragonstooth sceptre
so that it can only be used in your own territory.
- 103 Magiterranean: Monsoon Rift: New 75-100 adventure with multiple
skill-based solutions and map attack mobs.
- 104 Magiterranean: Permafrost: New adventure for levels 75-125.
- 121 The Swamp Hag: Fixed the swamp hag's skill reward.
- 122 Ruins: Three Banditos: The hound-summoning should no longer continually
summon dog clones.
- 123 Ruins: Thieves: Added missing description to the talismanic shiv. Removed
the DPS flag from the extra thief.
- 125 Ruins: The Goblin Challenge: New scripts control how Filk/Walts spawn so
that if one of them is blind, it doesn't spawn extra copies of the other.
- 126 Mountain Cave: Flame Dragon: Fixed typo in dragonweave stockings. Updated
scorched sectors with new evolution chances.
- 128 Colossal Red Dragon: New adventure (levels 250-300) replaces adventure
120 with many updates. This adventure also adds abilities to several Trade
classes. De-activated (but didn't remove) the old version.
- 129 A Gigantic Nest: New repeatable solo adventure in the 100-125 range, with
crafting patterns up to level 150.
- 130 Volcano: A new non-venture that spews lava onto the map from random
mountain locations.
- 140 The Sewer: Ratskins: Reworked the despawn script for the rare thief. It
should now be more reliable. Updated the stealth guildmaster to be in the level
range of the adventure and have a more distinct name. Changed how mini-bosses
spawn to ensure there's always exactly 1. Also fixed the skill reward from the
rare thief. Vial of sewage now has proper scaling. Noskill now correctly
prevents the stealth skill gain. Fixed the rare thief spawn trigger.
- 141 The Sewer: Goblin Outpost: Updated crafted item levels to be 25 higher
than the adventure (like all other adventure crafts).
- 160 The Tower Skycleave: Fixed a bug in the pixy race script. The shop now
sells an item that teleports you to Skycleave. Added missing sign description.
- 161 Portal to the Primeval: Added an explicit error message for "chop". Fixed
flee trigger. The King now loads the tree he knocks over into the room, rather
than trying to carry it in his tiny tiny arms.
- 170 Hamlet of the Undead: Fiendclaw is now made from bone instead of wood.
Renamed the trash spawners so they give a better echo when they appear during
a reset.
- 180 Misplaced Mother Goose: Jill now resumes following Jack after a reboot.
- 181 Goblin Mines: A new goblin now sells a coffin which can be used to build
instant, temporary gravesites with a 6-hour cooldown. Another new goblin now
sells a raft. The other mobs in this adventure had their old emote scripts
moved to custom messages. This adventure now resets after 10 minutes, if empty
and incomplete, to respawn spiders. Adjusted the difficulty on the widow spider
boss.
- 18200 The Guild of Adventurers, Part 1: A new faction of NPCs who celebrate
everything adventure-related. Seek out the roaming guildhall to get started.
This includes only tier 1 attunements and daily quests, along with the Esteemed
reputation rewards.
- 18300 Pyramid: Hidden Chamber of Neferkare: New level 250-300 short combat
adventure for 2-4 players.
- 18450 That Dammed River: A new non-venture where beavers dam up the rivers.
- 18460 Unstable Portal: A new non-venture (semi-venture) with fun places to
visit and adorably contagious new mini-pets to collect. See your local Tower of
Sorcery.
- 18500 The Lost Temple: A new adventure in the jungle.
- 190 Winter Wonderland: New updates to this seasonal adventure, from Yvain.
Added storage to the chestnuts so that workforce will work them. Fixed the
snowman script.
- 200 Burrow Canyons: Added component flags to the harvested and foraged crop
items. Script error fixes from Yvain.
- 201 The Cursed Chalice of Mill Manor: Added INFRA flag to mobs so they can
aggro at night. Changed the butcher chances on the yew berries, to help groups
where someone with low Survival skill has an auto-butcher trigger. Fixed the
name of the dorsal spine mace. Titanaconda jacket now gives resist-physical
instead of max-health.
- 281 Mountain Valley: Molten Fiend: Added a shop for trading in unwanted
items. Typo fixes.
- 282 Goblin Logging Camp: Fixed an issue where killing the goblins was not
loading the despawner for the instance.
- All: Applied the new Player-in-Room type modifier to all scripts that needed
it.
- Cleanup: Updated how adventure instances are deleted to correctly relocate
players who are in vehicles inside adventures.
- Decay: Buildings added by adventures will no longer decay.
- Destruction: If the tile an adventure is linked to gets destroyed (siege,
terraform, etc) it will now delete the instance immediately, instead of just
setting the instance as completed. This will trigger immediate cleanup of
instance mobs.
- EMPTY-RESET-ONLY: New adventure flag prevents instances from resetting while
players are inside.
- Entrance: Buildings that are entrances to adventure will now have a colored
room title based on the adventure difficulty, just like the adventure itself
has, in most cases.
- Functions: Room templates in adventures now support the 'function' flags that
regular buildings use, expanding what players can do in them.
- Instancer: Now checks the first room of an adventure for exits before
choosing a direction to face the instance. Also updated how exits are added
when an instance is constructed, to fix a bug where certain configurations can
result in illogical exits when three rooms have random exits in a chain.
- Mob counts: Changed how mobs are counted in an instance, as used by the
spawn-limiting system. Counts are now maintained as mobs are loaded and purged,
rather than counting mobs on-request. This allows instances to track mobs who
have left the instance entirely.
- Rotatable: Adventures that support whole-zone-rotation now match the building
direction if they link to a new or existing building that has a direction.
- Scaling constraints: Fixed a bug where an item with incomplete scaling
constraints could use either its own min- or max-level, but inherit the other
from the room, leading to items that scale much higher or lower than intended.
Also applied this fix to mobs.
- Startup: The game now checks for bad adventure instances (e.g. rare cases
like world file reversion) on startup, and deletes them.
- Stock adventures: Many objects that have command triggers (such as trinkets
and mirrors) were updated to allow the "#.name" syntax on their trigger
commands.
- Summon: You can now adventure-summon someone to the room/tile where the
adventure is linked, in addition to the "inside".
- Timed-out empires: Adventures will no longer spawn on tiles owned by empires
that are timed out.
- Tutorials: Added a note on dropping the repeatable quests (The Perfect Rock,
See Hugo For Advice) if you pass above 15 skill.
- Various: Added the !drink-blood flag to NPCs that have no blood. Added the
desert, temperate, and tropical component flags to all fruits and vegetables.
Boss enrage scripts were updated. Fixed small typoes. Fixed how some loot
replacement triggers bind to players. Updated the minipet whistle script.
Converted most emotive triggers to mob custom strings. Enrage timer resets now
%restore% the mob. Changed mkill to %aggro% in many combat scripts. Mount and
mini-pet summoning scripts were updated to ensure the mob they summon doesn't
get cleaned up if it was summoned inside an adventure. Quests were updated with
new grouping flags on their tasks and pre-requisites, where necessary. Some
clothing items received new custom long descriptions. Text updates to fix
typoes. Updated craft recipes with new abilities. Updated crops with new
harvest quantities. Updates to building and vehicle health and maintenance
lists. Updated how loot-replacement objects (e.g. Permafrost high-difficulty
boss loot) set their binding, to allow group-binding. Also updated 'trinket'-
type items to be distractable. Mount whistles now give the name of the mount
when summoning it.

Affects:
- DISTRACTED: A new affect type that interrupts timed actions until it wears
off.

Approval:
- Approval: Updated the old EmpireMUD 1.0 authorization system to allow
EmpireMUDs to require player approval.
- Command: The approve and unapprove commands toggle player approval.
- Configs: Implementors can "config approval -v" to see available
configurations. Approval can be configured as per-account or per-character, and
various commands can be turned on and off.
- Login message: config.c contains a string that is displayed to players who
log in while unapproved.
- Various commands: Updated commands that need to check new approval configs.

Archetypes:
- Attributes: Archetypes now add to existing attributes, instead of SETTING the
value of attributes. This allows them to stack.
- Hobbies: New types of archetypes that give 5 bonus skills.
- Origins: Existing archetypes were all labeled with the Origins category.
- Skills: Archetypes now add to existing skills, instead of SETTING the value
of skills. This allows them to stack.
- Types: EmpireMUD now supports multiple "types" of archetypes. Players choose
one of each during character creation.

Buildings:
- !RUINS: New building flag that leaves no corpse when the building decays.
- Artisans: Fixed a bug where building artisans could despawn and fail to
respawn due to precise timing. Artisans can now spawn even if their spawn timer
isn't up.
- Carpenter: Updated commands list to indicate you can store and retrieve.
- Chameleon: Improved how chameleon buildings are hidden to some users.
- Damage: Maintaining a building now removes damage.
- Dismantle: Starting to dismantle a building now stops all the room-based
player/npc chores.
- Disrepair: Buildings no longer use the 'disrepair' attribute. Instead, they
take damage each year (based on configs, default 10% max damage per year,
doubled if unfinished).
- Hitpoints: All buildings got updated hitpoints to bring them in line with
scaled damage from siege vehicles and rituals. Some buildings have less than 10
hitpoints and can now decay in less than 10 years. Building hitpoints are now
stored with decimal values to make decay rates more reliable when they take 10%
of max health each year.
- IN-CITY-ONLY: Added this new flag for buildings, which blocks their normal
function if the building is not in an established city. Many code functions
received updates to accommodate this.
- Incomplete bridges: Incomplete water buildings no longer block sailing on
rivers.
- Informative view: Now shows when a building is damaged instead of showing the
old 'disrepair' attribute.
- Maintenance: Building maintenance now uses (basic lumber) and (basic nails)
components, to prevent it from accidentally using magewood or other future
premium components. Workforce maintenance also got this update.
- Ruins: Buildings now have a 50% chance to fall into ruins each year when at
full damage. They will be abandoned at that point even if they don't become
ruins (making empire decay more consistent). Empires now receive logs when a
building is abandoned or ruined due to decay. Ruins are now called Small,
Large, or Flooded Ruins (rather than Ruins Open, Ruins Closed, and Ruins
Flooded). Small ruins has a new set of random icons. Ruins will also now
receive custom names based on which building they used to be.
- Study: This designatable room now uses a script instead of code to add/remove
its board.
- Walls: Walls marked "unclaimable" now behave like claimed walls, where you
cannot move onto the wall tile. (Immortals using ".map passwalls" can still
enter.)
- Yearly maintenance: Buildings now have their own maintenance lists instead of
all requiring 1 lumber and 1 nails per year.

Characters:
- Lore: Some types of lore will now overwrite themselves if you gain them in a
short amount of time, reducing the amount of junk in players' lore. Also added
some more places where lore is removed if it's no longer relevant.
- Saving: Fixed a major bug where, in the right circumstances, saving your
character (manually or automatically) would trigger a near-full heal (as well
as moves/mana).
- Targeting: Overhauled the code responsible for name-based targeting, moving
it from a slurry of macros, to a proper function. It now accounts for
disguise/morph and recognizability. A person who is not in your group and
empire will no longer be able to target you by your real name while in a
disguise or an animal morph. Non-animal morphs do not hide your real name. Be
on the lookout for cases where you can't target a disguised/morphed player.

Cities:
- Auto-abandon: Fixed a bug in the automatic "abandon as ruins" code that
ignored buildings that were directly north, south, east, or west of the city
center. It was only counting buildings not on those two lines when checking for
non-ruined buildings inside the city.

Classes:
- Auto-verify: Missing abilities are no longer considered fatal errors and will
no longer result in the class being deactivated.

Code Changes:
- Book editor: Fixed a crash bug caused by buffer overflows from too many
paragraphs.
- fill_words: Added "into" to the list of fill words (words ignored by most
commands, e.g. "put the hat into the chest").
- Game sleep: Disabled the CircleMUD feature that puts the MUD to sleep while
no players are connected. This feature prevents workforce and map updates when
no players are connected.
- IS_WATER_SECT(): This macro, which was slightly different from WATER_SECT(),
has been removed. All by 1 of its locations have been changed to use
WATER_SECT(); the other also needed a check for shallow water (swamp/oasis).
- Input overflow: Fixed a crash bug when the player overloads the input buffer.
It now correctly truncates the text, outputs it to the player, and flushes the
rest of the input buffer.
- Map Rotations: Added diagonal rotation data, specifically for adventure
instances. (The map still only rotates north-south-east-west.)
- Quests: Rearranged the order of operations for removing items at the end of
a quest, to prevent certain errors caused by removing them at the wrong time.
- Sector indexing: Map sector types now have linked lists of all world
locations using that type so they can be iterated individually. Portions of the
code related to changing sectors or base sectors were updated for this.
- String editor: Added an option to restore a prototype's pointer when a player
aborts the text editor. This is currently used only for custom vehicle
descriptions.
- Workforce: Fixed a spot where old workforce code was stripping quotes off of
island names incorrectly.
- Writing: Removed the (writing) tag, also called PLR_WRITING, which still
appeared in the code despite being set nowhere and having no function since the
new string editor in late alpha.
- Xnames: The forbidden name list (lib/misc/xnames) now supports both
substrings (like before) and whole-name matches (for words like "someone" or
"who"). Substring matches must now begin with %.
- any_one_word: Fixed a bug in this function where it couldn't handle "" or ()
with nothing in between.
- byte: Changed the typedef to 'typedef signed char byte'. CircleMUD originally
provided it as 'typedef char byte', but the code strongly assumes this type is
signed (it isn't signed on some compilers).
- extract_char_final: Prevented a rare case where it can try to access a 
character after freeing them.
- parse_direction: Passing a character is now optional.
- send_to_outdoor(): Added 'weather' parameter to indicate that a global
message is weather-related.

Combat:
- Allies/Enemies: Attempted improvements to the ally/enemy detection, including
cases where you are following the mob you're fighting.
- Auto-assist: Fixed the timing on auto-assist (it was checking way too often)
and also fixed a bug it will attempt to auto-assist even if it can't succeed
(e.g. target can't be attacked). Mobs no longer auto-assist merely because they
are in the same party (this was a bug). Charmed mobs and city guards will still
assist like normal. Updated the engage_combat() function, which guarantees two
people are fighting each other (if possible). It no longer fails if either
party is an immortal (I'm not sure why it was set that way in the first place).
- Autokill: Fixed a bug where, if an attack or special ability put a mob
directly into the "incapacitated" state, no-autokill would fail and the player
would automatically kill the mob. Mobs that are following players (e.g.
familiars) should now respect their master's autokill settings. Improved the
removal of DoTs when autokill is off, which only sometimes happened correctly
before.
- Bonus-Physical/Magical: These now apply to the average speed of 2.0, and are
adjusted based on attacks being faster/slower than that. This means Bonus-* is
now worth 0.5 DPS for all attacks.
- Champions: Mobs that have the champion flag, such as some familiars, will no
longer do a plain auto-assist when they can't rescue. Instead, they will wait
to join combat until they can rescue. (You can order them to attack if you want
them to join sooner.)
- Coins: When a mob drops coins on its corpse, these now drop last (are at the
top of the list) so they pick up before other loot items.
- DPS: Strength/intelligence now add to DPS rather than base damage. Wits and
other speed modifiers now also modify damage bonuses (strength, bonus-physical,
etc.) so that speeding up will correctly give more damage. Slow effects will
lower those bonuses.
- Death: Updated the code to ensure that players have negative health while
dead.
- DoTs: Damage dealt by DoTs is now dealt "by the caster" if they are present,
rather than "dealt by self". This should fix an issue with autokill. You will
no longer regenerate health while you are still being damaged by a DoT effect
after combat ends.
- Dodge: Fixed a bug where negative dodge could make a mob unhittable.
- Experience: More things now count as combat rounds for the purposes of
gaining experience.
- Fmessages: New command lets you toggle some combat messages on and off.
- Follow: If you damage another character, you will now automatically stop
following them. (This already happened if you damaged someone who was following
you.)
- Gear: While in combat, you will no longer automatically stop using gear if
your attributes drop too low to use it. It will wait until combat ends to
unequip.
- Meters: Fights now track combat data including hits, misses, damage, and
heals.
- Pointless fights: The game now periodically checks for mobs locked in
pointless combat, for example where no party can attack, and cancels combat.
- Ranged combat: When you are the first one to run into melee range after
ranged combat, you now receive a half-round bonus on your next swing time,
instead of waiting the full time for your next swing.
- Resist-Physical/Magical: Resistance now has penalties when it is negative,
causing an increase in damage taken. There is also no longer a minimum
resistance to be effective, and resistance is a measure of the percentage of
the cap you have.
- Rounds: If the mud is lagging, it will now only process 1 combat round when
it resumes, instead of making up every lost round. Player attacks have been
changed to use last-swing-time to ensure everyone gets a hit when it resumes,
rather than checking for specific timed pulses.
- Siege: Fixed a problem in all siege systems where you could only siege a
building through its entrance, not from the side (this bug was probably live
since the vehicle overhaul).
- Start of combat: Since combat auto-attacks are now based on the time of the
last swing rather than an internal counter, timing of attacks at the beginning
of combat is no longer pre-determined. Now, after the attacker gets their free
initial hit (or spell — the thing that starts combat), they will get their next
auto-attack after their normal combat speed (as seen in the score). The victim
(if they weren't already in combat) will get their first auto-attack based on
HALF their combat speed, essentially putting their attack half a round after
they were hit.

Commands:
- +: Fixed a bug where using '+' to insert a command at the head of your
command queue would result in an unexpected reversal of commands if you sent
more than one command at a time, even if only the first one had the '+'.
- Abandon: Can now be used remotely. Also gives you better output information
when abandoning remotely.
- Ablate/abandon: Fixed command priority on abandon, which was suspiciously low
in the "a" section.
- Accept: Prevented a bug in accepting resurrection while inside a player-
limited adventure (in general, players themselves no longer count against the
player limit for whether or not they can enter an adventure).
- Aliases: Fixed a bug where the first letter of an alias was case-sensitive.
Using an alias like "kick $1" will now correctly target your current opponent
if typed without an argument.
- Alt import: You can now import aliases and preferences from one alt to
another.
- Alternate: The "alt list" and "alt import" commands now work even if you're
sleeping or dead. Also rearranged some of the error messages into a more useful
order.
- Ask: Now uses the 'say' recolor and shows up in sayhistory.
- Autodismount: Now triggers on more sector types, such as mountains and ocean.
- Bite: If you drain someone's blood with autokill off, it now gives back 1
blood point so they don't die immediately after the bite ends anyway. Mobs will
no longer regenerate and stand up while you are biting them.
- Build: Fixed a bug where building recipes worked different than other crafts
when requiring an item to use the recipe; it was failing to find the correct
recipe if two had the same name but different item requirements. Build now
gives an error message if you type it with an argument in an incomplete
building, and better error messages in other types of buildings.
- Cede: Can no longer be used remotely. Fixed an ancient and rare bug in cede
that could cause the game to crash when certain arguments were given.
- Circle: Fixed a bug where some valid targets were only circle-able in one
direction (Awkens).
- Circle: Now immediately cancels actions that don't allow movement, such as
chop. Also now gives movement-based ability experience (e.g. Ride).
- Clearmeters: This command can be used to clear them at any time. There is now
a "clearmeters" toggle that restores the old behavior.
- Customize: Can now be used to name islands. Island names must be
alphanumeric, will be auto-capped, and auto-trimmed.
- Darkness: Being in a dark room now prevents the following commands: build,
chip, chop, craft (forge, etc.), dismantle, escape, fish, forage, harvest,
maintain, mine, mint, pan, quarry, repair, saw, scrape, tan, track.
- Dig: No longer auto-cancels when you find nothing useful (because it can be
used to damage earthmelded players). Now works in most outdoor tiles. Fixed a
bug where NPCs could be ordered to dig (although it wouldn't do anything
useful).
- Dismantle: Now gives an error message if you type an argument, in case you
were trying to 'dismantle boat' or similar, and ended up dismantling the room.
You can no longer assist in a dismantle without permission to use the tile, as
this would result in the empire's resources going to your own inventory.
- Drag: Now works on shallow water tiles (such as oasis).
- Draw: No longer requires an argument if you only have one weapon sheathed.
When you draw a weapon from a sheath, it will now put your previous weapon into
that sheath rather than into your inventory.
- Drink: You can now drink from containers that are in the room, if you have
permission to use the room.
- Drive/sail/pilot: Improved the error message when you use an invalid
argument.
- Efind: No longer requires you to be standing to use.
- Einventory: Now takes precedence on the 'ei' abbreviation again.
- Emote: You can no longer use the $O symbol in emotes, which could reveal the
real name of morphed or disguised players.
- Estats: New command that gets short info on an empire (defaults to your own).
- Excavate: Now only needs guest permissions to assist, instead of member/ally.
Still requires member permissions to start a fresh excavation. You can now only
excavate on claimed land.
- Feed: Vampires can no longer feed themselves from themselves (Awkens).
- Fillin: There is now a 1-minute waiting period before filling in a finished
river tile, to reduce fillin-trolling. Trenches no longer automatically fillin
each year if the tile is claimed. Fillin only requires guest permissions to
assist, but member permissions to start. You can now only fillin on claimed
land.
- Findmaintenance: Now finds any building that is damaged, in addition to ones
that need maintenance. It can also now target a location or island to show you
the resources needed for maintenance there.
- Group: Rearranged the errors so that not being leader of the group is more
important than other reasons you can't invite someone to a group.
- Harvest: Fixed a previously unknown crash bug related to logging out while
harvesting.
- Helpsearch: Now accepts quotes to search for a "whole phrase". Now supports
multiple search terms, for a more refined search.
- Herd: You can no longer herd mobs onto a wall tile. You can no longer herd
mobs that are unconscious, sitting, or tied up.
- History commands: The various chat history commands now save between logins
and reboots.
- Home set: Rearranged the error messages because some circumstances led to the
wrong message.
- Identify: You can now identify while resting or sitting. Other players are
now notified when you identify something.
- Ignore: You can no longer ignore yourself, no matter how hard you try. You
can now un-ignore by abbreviation rather than re-adding people repeatedly.
- Inventory: You can now filter your inventory with various argument.
- Islands: This command now tells how many tiles you have claimed on the
island.
- Lead: You can no longer lead animals out of other people's territory.
- Maintain: Now happens over time like building, instead of instantly. It also
repairs damage (when complete), in addition to yearly decay.
- Meters: Shows your combat meters.
- Mount: Added "mount list", "mount swap", and "mount release".
- Nearby: Cleaned up the output on nearby, and added the ability to filter by
"cities", "adventures", and "starting locations".
- Pan: Fixed a typo in the default gold panning chance, which was 0.05% instead
of 5%.
- Pick: You can no longer pick anything in an incomplete building.
- Plant: Rearranged error messages to give more useful output (Awkens).
- Portal: Now immediately cancels actions that don't allow movement, such as
chop.
- Pour: Now warns you when trying to pour into a full container.
- Quarry: Now correctly requires that the quarry is complete.
- Quit: You can now quit while the RP flag is on.
- Recipes: No longer shows ALL recipes when used on non-prototyped objects like
letters.
- Redesignate: Now removes NPCs who lived in the room that was redesignated.
- Roll: Your rolls will now show on sayhistory.
- Roster: Now filters out players who are timed out, unless you use
"roster -a".
- Say: Fixed a bug that made 'say' immune to 'ignore'.
- Scan: No longer shows chameleon tiles if you're out of range.
- Slash-channels: Fixed a bug where a leading '/' would be deleted from things
you tried to say on slash-channels.
- Socials: Fixed a bug where the first letter of socials were case-sensitive.
Vampires can no longer use socials while feeding on someone (or vice versa).
- Summary: You no longer have to be standing/fighting to use this command.
- Throw: You can no longer throw quest items. Throwing also now checks room
capacity.
- Title: Now trims extra spaces from the title.
- Toggle autodismount: New toggle will let you enter buildings without having
to type dismount.
- Warehouse store: Fixed a big where trying to store 1 item resulted in
storing all of that item.
- Warehouse: You can now check warehouse inventory while sleeping/dead.
- Whisper: Now uses the 'say' recolor and shows up in sayhistory.
- Workforce where: You can now add the 'here' argument to see only workers on
your current island (from Awkens). Fixed a bug where numbers larger
than maxint resulted in negative limits. You can now copy settings from one
island to another using "workforce copy" (Awkens).
- build/craft: All crafting commands that support the "craft info <recipe>"
syntax now allow you to get info while sleeping.

Config changes:
- New (all default to 1/true): build_approval, chat_approval, craft_approval,
gather_approval, join_empire_approval, manage_empire_approval, quest_approval,
skill_gain_approval, tell_approval, terraform_approval, title_approval,
travel_approval, write_approval
- New default: default_interior 1, a new room added for ".map 
- New default: disrepair_major 60 (is now a percent)
- New default: disrepair_minor 20 (is now a percent)
- New: approve_per_character 0
- New: auto_approve 1
- New: dailies_per_day 5
- New: hostile_login_delay 30
- New: max_map_while_moving 5
- New: naturalize_newbie_islands 0
- New: naturalize_unclaimable 1
- New: need_approval_string You must be approved before you can do that.
- New: newyear_message The ground under you shakes violently!
- New: skill_swap_allowed 1
- New: skill_swap_min_level 100
- Removed: require_auth — not used by the new approval system.exit".

Crafts:
- Jams: The jam recipes no longer require jars. Instead, they require the
glassblowing tech in the empire.
- Overburdened: You can no longer begin a craft while overburdened.
- Unskilled crafts: Most crafts (and buildings) that formerly required no
abilities now require zero-level abilities like Primitive Crafts and Basic
Buildings. This is part of the change to low-level skill gains.
- Vehicles: Players can now assist building vehicles they don't know the
recipes for. Players can also resume a vehicle once started, even if the
required object was consumed.

Crops:
- Component flags: Added the desert, temperate, and tropical flags to all
fruits and vegetables.
- Flags: Added NEWBIE-ONLY and !NEWBIE flags for wild crops.
- Harvest: Changed how harvest works to allow crops to give out more than one
item per harvest. Harvest now better respects the number given by the
interaction, and Master Farmer always doubles it. All existing crops had their
quantities updated.
- Hops: Now has a forage item (handful of grain).
- Lettuce: Added a new crop for newbie islands, to ensure there's something
harvestable (i.e. not just orchards) for the tutorials.

Data:
- New system: Added a new generic data-storage system that can save simple,
arbitrary data between mud uptimes.
- Experience cycle: Moved the daily experience reset cycle to this system.
- Game time: Moved the game's time data to this system (which keeps game time
consistent).
- Max Players Today: The player count on the "who" display now saves between
uptimes.
- New year: Added code to ensure the game doesn't miss any new years, using
this system. The whole world now saves during a new year update, to help ensure
this data doesn't become out-of-sync if the game crashes.

Displays:
- !SEE: This flag now also automatically includes sneak.
- /join: Improved the error message if you don't type a channel.
- /who: Darkness no longer affects who you can see on /who. Now ignores
darkness when showing players' names.
- Adventure summon: Added missing linebreak on the summon message. Now always
shows the name of the summoner.
- Affect wear-off: Added the option to show a wear-off message to all the
functions that remove affects from characters. Losing an ability that gave you
an affect will now show the wear-off message.
- Alternate: Improved the error message when you try to alternate to yourself.
- Annual map update: Fixed a bug where no prompt appears after the earthquake
message.
- Archetype info: Will no longer show the attributes or skills sections if
empty.
- Bad password: Typoing your password no longer results in double-echoes on
clients that have local echo and no typing buffer.
- Binding: Added missing commas to the list of who an item is bound to.
- Blindness: Things that ignore darkness now also ignore blindness (e.g.
slash-channels).
- Boards: Players now receive a confirmation message after saving a post on a
bulletin board. Removed double message to the room when someone looks at a
board.
- Build/maintain: Fixed a bug where it was possible to be stuck in a loop of
"You complete the maintenance" displays (Awkens).
- Channel joins: Players will no longer see a double message when joining
slash-channels. They will see either the join announcement, or a "you join"
message if there is no announcement to them.
- Chop: Changed the message for swinging back your axe. It no longer attempts
to modify the short description (leading to gibberish like "You swing back your
else's axe").
- City Teleportation: Added a better error message when you try to teleport to
a city without this ability.
- Colors: The basic colors (red, blue, green, yellow, magenta, cyan) now send
shorter standard ANSI codes, rather than the longer codes used by extended
colors. This fixes an issue where MUD clients wouldn't let you change those
colors (most clients let you change the ANSI colors). Fixed a bug in the color-
code-reducer where the combination of foreground, background, and underline
would sometimes skip the background if repeated.
- Combat messages: Fixed several messages that used the words "him" and "he"
rather than the tokens "$m" and "$e".
- Commands: The "commands" and "wizhelp" commands now correctly show abilities
from grants.
- Confirm: Added an error message if you confirm with no upcoming reboot.
- Consider: Fixed a bug where players who were under 100 skill level, but over
100 composite level, saw the wrong level difference on consider.
- Craft info: Now shows whether an attribute on crafter gear will be positive
or negative (Awkens).
- Custom long descriptions: Equipment that gives custom long-descs for male
players will now also work for gender-neutral players (under the theory that
the male version of the description is more likely to fit than a female
description would).
- Custom object messages: Objects will no longer show their custom messages
when used in the sheath or share slots.
- Dig: Removed a double completion message when the ground runs out of rocks.
- Disguise: Improved how fake empire names show up on disguised players.
- Display: This command will no longer double any dollar signs you type.
- Drunk: Fixed an issue where the map-rotation was triggering at a different
level of drunkenness than other drunk indicators.
- Echo: Immortal echoes no longer recolor like emotes.
- Einventory: Using "einv all" will now also include items that are being
shipped but are not in storage anywhere.
- Empires: The empire list now paginates (Awkens).
- Entry: Characters now walk "in from" directions when indoors (but still "up
from" directions when outside).
- Esay: Fixed a bug in the double_percents() function that caused, among other
things, strange behavior when using esay with a % at the end of the string.
- Excavate: Now displays a message when someone resumes excavating.
- Etalk: Fixed a bug where the color code was inserted incorrectly in the
message to other players when using the #rank syntax .
- Forest: The "build on forest" requirement is now called "full forest" to
avoid naming confusion.
- Gender: Certain logs and messages will now show a character's real male/
female/neuter gender rather than the one they are morphed/disguised as.
Examples include empire logs, certain invitations, and any action string where
a $e follows an $o instead of an $n.
- Group: Inviting a player to join a group no longer shows you his/her real
name while disguised/morphed.
- Gsay: Fixed an issue where the speaker would see a double $$ if they typed
one.
- Hide: It will now indicate that a person is hidden, if you can see them in
the room.
- Identify: No longer lists liquid quantities in "ounces" (this was the only
place that did that).
- Identify: Will now show an item's level in more cases. Identifying the corpse
of a named citizen no longer says "Corpse of feller #n" — it now replaces the
#n/#e/#a codes with placeholders.
- Info: Updated the basic info command.
- Instance reset: Hidden mobs will no longer show "Someone arrives." when they
respawn.
- Island names: The default island name now includes a number so the Unexplored
Islands can be differentiated (on new EmpireMUDS; existing ones will not get
this update automatically).
- Islands: No longer shows empty islands. No longer shows "No Island" in the
list.
- Load: Fixed an error where it showed the wrong vehicle name when failing to
load one vehicle onto another.
- Long descriptions: Modified how player long descriptions are displayed to
accommodate custom long descriptions from equipment.
- Long strings: The game will no longer drop letters from very-long-strings it
reads from files.
- Look at character: Changed how empires display slightly, and colored the
banner.
- MOTD: Using MXP will no longer cause you to bypass the MOTD.
- Mapsize: When moving very fast on the map, your mapsize will now
automatically start to decrease (to save processing time rendering a lot of
huge maps in a short period of time). This effect diminishes over time, or can
be reset by manually typing 'look' or 'scan'.
- Mortlog: Players will no longer see a double mortlog when a new player joins
the game while public_logins is on (Awkens).
- Mount: Fixed a typo in one error message.
- Namelists: Fixed the capitalization on "EAmon".
- New Year: Added a newline before the annual new year message, so it won't
show up on the same line as somebody's prompt. This message is now also
configurable.
- Pick: Fixed a typo where quantities were listed as (d#) instead of (x#).
- Prompt: Increased the space for the prompt to ensure there's enough room to
display long prompts, which could (rarely) exceed the limit.
- Purify: Permissions error now correctly says "toggle bother" rather than
"nobother".
- Screenreader: Having this toggle on no longer shuts off color codes, for
sighted players who sometimes use screenreader mode for various reasons.
- Sit: Trying to sit while mounted now gives a clearer error message.
- Skin: Added a missing question mark to "What would you like to skin."
- Strings of Unusual Length: Fixed a bug where it was possible to see no output
from certain commands if the string was a specific length. This fix includes
two changes: 1. If the mud would send too-long output, it truncates it and adds
the **OVERFLOW** text similar to what it did before the KaVir's Protocol
Snippet was added. And 2. It now accounts for color codes when determining if a
string is too long for the 'scrolling' preference, and sends the output to the
pager instead.
- Summon materials: Now tells you if you didn't summon as many as you
requested.
- Survey: If an island has been renamed by the empire, Survey will now show
both names.
- Tips: Revised and added some more tips.
- Toggle: Typing a bad argument with 'toggle' now gives an error message
instead of the list of toggles.
- Trade check: Fixed a bug where the number of coins to collect did not show
up.
- Various: Minor text updates and corrections throughout.
- Wall coloring: Changed the &V "special color code" for wall coloring, to &#.
The 'V' conflicted with the violet color code and made it impossible to use
violet in map tiles. One stock building that used this code was updated.
- Wall linking: Fixed a bug where where chameleon buildings were revealed by
linked walls on adjacent tiles, and another bug where very specific wall
conditions could result in a full crash (Awkens).
- Warehouse inventory: Now shows scale level and relevant flags on the item.
- Weapon damage: Now shows as: Damage: 123 (Strength+30.75 dps) due to strength
being added to DPS rather than base damage.
- Whereami: No longer displays coordinates if you are in a !LOCATION room.
- Who: The "who -s" display now correctly puts people into columns, and shows
the (i5) invis indicator next to the name instead of way off to the right. It
will also now show (inc) when an immortal is incognito.
- Workforce: Screenreader users will now get workforce output on separate lines
instead of in columns. Workforce now better displays the on/off/part status
based on claims on an island.

Documentation:
- Changelog: Updated the changelog with all of the b4.x patchnotes.
- Crashing: Added a doc file for how to deal with crashes.
- Getting-Started: Added a doc file for setting up a new EmpireMUD.
- Updating: Wrote a document about updating from b4 to b5.
- Version number: Updated the code comments and displays to beta5.

Empires:
- Auto-distrust: Fixed a bug where one-shotting a mob with a special ability
(rather than regular attack) would not trigger auto-distrust.
- Banner: The mud now tracks if an empire's banner has an underline, in order
to better terminate the underline code and prevent leaks.
- Cede: You can no longer cede land to players who have 'bother' toggled off.
- Change leader: The old leader now receives lore when the leader is changed.
- Cities: All cities are now checked for ruins during the new year earthquake
and are auto-abandoned if they contain no claimed buildings.
- Cities: You can now found a city on a shallow water tile like an oasis due to
the WATER_SECT change.
- Coins: Empire coins are now stored to 1 decimal place. Depositing small
amounts of money with low exchange rates now preserves this decimal value.
Import and export rules can now have decimal costs. Taking away empire coins to
give to a mob for pickpocket/loot now correctly triggers a save of the empire.
- Distrust: Fighting/killing an NPC will no longer trigger distrust with its
empire if you are fighting it on a tile your empire owns, e.g. if a hostile
scout wanders onto your land and aggros you.
- Eedit: Editing the description or motd now correctly triggers an empire save.
Improved error messages when setting the name/adjective. It also now warns that
you're trying to set it to the same thing, rather than allowing you to keep
renaming the empire to the same thing.
- Eidentify: New command allows you to identify items in your einv and also see
what islands they are stored on.
- Empire inventory: An empire's workforce will now organize (sort) the empire's
inventory to make it easier to find the component they have the most of, so all
chores will prefer resources you have more of. Inventory is sorted at the start
of the chore cycle.
- Enroll: Fixed a bug where very specific circumstances could cause the game to
crash while enrolling a character in an empire.
- Esay: No longer leaks an underline color code from the banner.
- Fame and Military: Fixed a bug where these two attributes weren't resetting
and would increase each time the empire is re-scanned. Also changed the startup
order to ensure accurate empire stats at startup. Fixed a bug where these fame
and military numbers could be zeroed out by inadvertently skipping part of the
re-scan after modifying a city.
- Follow: You can no longer get into a room without permission by following an
NPC.
- Guard towers: Increased the damage on guard towers slightly, as a temporary
measure until empire progress and guard tower scaling can be designed and
implemented. Players will now also be slowed briefly after being hit by a guard
tower. Players who are hit by guard towers will now also cancel any action they
were performing. Guard towers also apply the DISTRACTED effect, briefly.
- Homes: Removing the private owner on a home will now reset the autostore
timers of items inside it, so they don't auto-junk right away.
- Hostile territory: Players who log in on claimed land that isn't public now
have a short delay before they can act. Also improved how the game detects
hostile players for quit/alternate to include rogue-flagged players who have no
empire.
- Island names: Empires may now name any island where they have an established
city. If the island was not named before, or if they are the only empire with a
city on the island, their name will become the island's "official" name during
the MUD's "new year" update.
- Members: Fixed how the game re-reads empire members while running, to allow
it to detect whole-empire timeouts as well as changes to immortal members (this
is required due to level changes in this patch). Improved the MUD's ability to
detect a re-activated member when an empire has been timed out (preventing
members=0 with players online).
- Merging: Updated empire merging so that it attempts to estimate the new
member count before transferring cities and territory, to prevent losing cities
that there will be enough points for after the merge. When two empires merge,
they will now copy workforce settings from any island that the old empire had
settings for, but the new one didn't.
- NPC Population: Split out the code that handles NPCs populating buildings,
and cleaned it up slightly.
- Names: Empire names must begin with a letter.
- Naming: Added "misc", "miscellaneous", and "other" to the list of reserved
words, blocking them from being used as empire names/adjectives (they interfere
with coins). Also fixed a problem where empire names weren't checking the
fill/reserve word lists. Improved the functions that guarantee empires have
unique names. They also now require unique adjectives. When a new player gets
an automatic empire, that name is also now guaranteed to be unique.
- Population: Mobs living on ships now never count toward island population
(they were counting for the island they were on when the empire last updated).
- Saving: Added a delayed-save mechanism to reduce lag from functions that save
empires repeatedly, such as spammy elogs.
- Ships: Fixed a bug where ships counted against territory on startup (they
were fixed by the first re-scan but could result in territory loss first).
- Stealing: The game now tracks who the original owner of stolen items was.
Players can now pick up items that were stolen from their empire, even on
claimed land. Items now lose their stolen status if someone from the original
empire picks them up. Stolen items can no longer be stored until their "stolen"
flag wears off. Also fixed a major bug that caused unpredictable and horrific
behavior when a player died with stolen items on their person.
- Storage: The game will now automatically remove non-storable items from the
einventory on startup, to clean up data that is no longer any good.
- Territory: Completely overhauled how territory is counted and tracked. It now
updates as territory changes, rather than requiring a world re-scan for most
changes. All code related to changing ownership was updated. This should reduce
game lag. Changed which function adds/removes a tile to an empire's workable-
territory-list to fix an issue where tiles could sometimes get out of sync,
resulting in workers spawning on tiles that are not workable. The game 
now keeps track of an empire's claimed tiles on each island, in addition to a
total for the whole empire.
- Toggle no-empire: New toggle prevents you from automatically creating an
empire from commands like claim, cede, and build.
- Trading: Imports now prefer trading partners with lower costs (ties go to the
highest-ranked empire). This involved a full rewrite of the import handler.
- War: Players can no longer respawn at a burning tomb (Awkens).
- War: You can no longer rename your empire while at war. This prevents
misleading exploits.
- Workforce Maintenance: Now works over time at a rate of 1 resource per hour,
like building.
- Workforce Oilmaking: Fixed a bug where oilmaking had a strict skill
requirement and was not making any oil.
- Workforce: Fixed a bug where many chores could process resources that are not
storable. Dismantle will now also skip non-storable items. Fixed a bug where
milling was unable to mill any items since the recent low-level skill update.
Fixed a bug where workers weren't able to perform repairs on vehicles if those
repairs were basic (free) actions. If a player finishes mining a tile,
workforce will also now correctly stop themselves from mining it. Rewrote the
Farming chore to fix several bugs including farming going at double-speed if
there are two harvestable items from the tile. Workforce will now automatically
deactivate itself when terrain type is changed in most ways (e.g. by immortals,
by lay road, by chant of nature, etc.) instead of getting stuck.

Factions:
- Aggro: Mobs with the AGGR flag will ignore players who are at least Liked by
the mob's faction (if any).
- Command: Players can type 'factions [name]' to view faction reputations and
info.
- Look at character: Mobs will show their faction on 'look <name>'.
- OLC: Full editor suite for factions and for assigning mobs to factions.
- Quests: Faction reputation can now appear as quest tasks, prereqs, and
rewards.
- Scripting: Added %ch.allegiance()%, %ch.faction_name%,
%ch.gain_reputation()%, and %ch.has_reputation()%.
- Set faction: Immortals can change a player's faction levels.
- Show factions: Immortals can view player faction levels (filterable).

Globals:
- Choose-Last: Added a new flag that causes a global to work as a "failsafe"
only if no other global is chosen. This will be used e.g. to make sure iron is
the last mine type, and allows other mine types to be added regardless of vnum
ordering.

Help files:
- Actions: Added speed boost notes to the help files for timed actions, and
updated the timed action help file.
- Attributes: Each attribute now has its own help file.
- Crops: Added lettuce.
- Distracted: Added help for this effect.
- Drunk: Added a new help file for people looking for ways to sober up faster.
- History: Added a help file that lists chat history commands.
- Hone: Clarified that you must have the ability to use honed gear.
- Immortals: Added help files explaining how to make mount and mini-pet
whistles.
- Room triggers: Added the %room% variable to help files for room-specific
triggers.
- Shadowcage: Removed a duplicate Shadowcage help file that had incorrect
numbers but was taking precedence over the correct one.
- Sorting: Changed how help files are sorted so that immortal helps like 'load'
aren't blocked by mortal helps like 'load'.
- Speech triggers: Added notes on how to use a wildcard.
- Stun: Added a help file explaining stuns and stun immunity.
- Utility shed: Clarified which tools store here.
- Various: Fixes, updates, typo corrections, and minor updates. Some OLC help
files were updated to contain lists such as object materials.
- Workforce: Split the no-work and "workforce where" options into their own
help files.
- Yvain: Special thanks for many help file updates.

Immortals:
- Addnotes: Fixed a bug where addnotes didn't force an account save.
- Alternate: When a player switches to an alt, immortals who are in-game and
connected will have their "reply" command updated automatically if they were
talking to that player. Immortals can now always alternate TO their immortal
character despite their cooldown, rather than not gaining a cooldown when
alternating FROM an immortal character.
- Autonotes: New toggle causes an immortal to see player notes automatically on
login.
- Breakreply: New immortal command that cancels players' reply-to data, e.g. if
the immortal wants to go invisible and be undisturbed.
- Buildings: Stat building and the building editor now correctly show icons
whose color codes include &?.
- Class: Added a new 'Immortal' class that only immortal players will qualify
for, so they don't all say 'Duke'.
- Delete logs: A player's correct level is now shown on the log when they
self-delete.
- Drop: Now logs abuse when an immortal drops an item on a claimed tile.
- Eedit: Editing other people's empires now triggers a syslog.
- Forgive: Fixed a typo in the forgive message.
- Goto: Can no longer goto a wizhide immortal if you're not also wizhide or
invisible.
- Hostile territory: Immortals are now affected by hostile-territory checks for
commands like quitting.
- Incognito: Now blocks you from channel join/leave announcements.
- Invis level: Fixed a bug where immortals can stay invisible above their own
access level if they end up that way in the first place.
- Island flags: Islands may now be set !CUSTOMIZE in order to prevent players
from renaming them.
- Island list: Can now filter the island list by keywords.
- Load: Now logs abuse when an immortal loads a mob or vehicle around a mortal
or claimed tile.
- Mobs: You can now see mob hit/dodge/damage on "stat <mob>".
- Nocustomize: New account setting prevents a player from using any 'customize'
command.
- Portal: Immortals now require the "transfer" grant (or CIMPL level) in order
to use immortal-style portals.
- Purge: Fixed an issue where purging a player could duplicate their items by
leaving a copy on the ground.
- Put: Added abuse logs when an immortal puts something into a container of
vehicle that belongs to a mortal empire.
- Random encounters: Immortals using wizinvis or wizhide are now immune to
random encounters.
- Reboot: Changing from a scheduled 'shutdown' to a 'reboot' no longer keeps
the pause/die command associated with the shutdown.
- Referrals: Player referrals are now shown on their own syslog line during
creation, and can now be up to 80 characters long.
- Reload: Now has a syslog.
- Remember/naturalize: You can now remember/naturalize unclaimable tiles if the
naturalize_unclaimable config is on.
- Reply: When a player logs in, his/her reply-to person will be cleared if that
person is online, immortal, and invisible/incognito.
- Restore: Changed the order of operations in the restore command so that
restoring an immortal will correctly fill their pools after they acquire
abilities that increase the size of pools like mana or blood, rather than
before. Now only grants all abilities on the first of the two skill sets (see
skill swap).
- Reward mini-pets: Added two typo-based reward mini-pets to the 9900 block.
- Score: This command will no longer attempt to target NPCs only to tell you
that you can't use it on an NPC.
- Set account: Immortals can no longer add/remove players to/from accounts if
any character on the account has a higher access level than them.
- Set name: Fixed a bug where changing a player's name did not cause an account
save.
- Set skill: No longer clears abilities when used to lower someone's skill
level. It now only sells back abilities that are out of the new range, similar
to "skill drop".
- Set skill: Updated how abilities are removed when skill level goes down.
- Set: Added some missing periods to the log/confirmation messages from the set
command.
- Show skills: Added an optional "swap" argument for seeing a player's second
set of abilities.
- Show stats: Added additional stats.
- Show variables: Fixed a bug where offline players were not loading variables.
- Shutdown: No longer says "Rebooting momentarily…" when doing a
"shutdown now".
- Siege damage: Immortals no longer have a chance to die from siege damage.
- Skill resets: Typing "skill reset" will no longer show immortals that they
have resets available in every skill, but they can still reset skills for free
at any time. (This reconciles other places where no resets were shown.)
- Skill sell: Fixed an issue where "skill sell" could change empire techs
incorrectly.
- Snoop: Fixed an issue where snooping some clients resulted in a LOT of
empty-line spam.
- Stat room: Now lists vehicles in the room. Now shows instance name, location,
and flags. Now shows natural sector type on the map.
- Stat: The "stat mob <name>" syntax now ignores players.
- Switch: Fixed a bug where typing "score" while switched into a mob that has
empire loyalty would crash the game.
- Throw: Now triggers an abuse log when used by an immortal.
- Util: Added the 'yearly' tool to run a full map update.
- Where: Now shows room vnums to immortals.
- Wizhide: Now protects against 'where' and location-targeting abilities such
as goto and at.

Map:
- Naturalize: Fixed a bug where crop data was retained if a tile was
naturalized from crop to non-crop.
- Output: Fixed a bug where sectors that are not crops could sometimes still
show as crops on the graphical map output, if there was stray crop data
attached to them.

Mobiles:
- !ATTACK: Mobs that cannot be attacked are no longer prevented from using
skill commands like 'cleanse' in the same way a player would be.
- !Drink-Blood: New affect flag prevents vampires from biting/siring. Some
existing mobs were upgraded with this feature, and the wandering vampire NPC
will not bite anybody who has it.
- !rescale: New flag prevents mobs from rescaling once scaled.
- 612 Bunny: Fixed a major flaw in the trigger that was duplicating bunnies
until there were so many tens of thousands of them that the server locked up
and then crashed.
- Blood: Added the no-drink-blood to several arthropods that were missing it.
- Catch-up: Mobs will no longer run multiple activity cycles (moves, aggros,
etc) when the mud is catching up from lag. They will run just 1 cycle no matter
how long the lag was.
- Cats: Can no longer be herded effectively.
- Custom messages: Added new custom message fields to mobs. Custom echoes are
periodically echoed to players in the room with the mob, and custom says work
similarly. These two types replace the use of scripts for normal mob animation,
which should reduce lag caused by a large number of scripts in the world.
- Disarm: Updated the list of attack types that are disarmable on mobs. Mobs
that cannot be disarmed will deal 30% less damage automatically.
- Echoes: Fixed a bug where mob custom strings were firing incorrectly, and
generally failing.
- Healing: Mobs will now automatically stand up if they are healed from the
incapacitated state.
- Health: Raised scaled mob health to go with higher player DPS.
- Level-locking: When a level-locking adventure (e.g. Goblin Challenge) locks,
it will now attempt to force mobs inside to scale, even if they were already
scaled.
- Llama: This animal can now be sheared (shorn?).
- Map animals: Converted the rest of the environmental triggers to custom
messages.
- Messages: Fixed a bug where $ tokens were not processed correctly.
- Miller's daughter: Removed "girl" from keyword list.
- Move types: Added shuffles and marches.
- Movement: Added "leaves" move type.
- Pursuit: Ensured mobs don't wander randomly while they should be pursuing. If
a mob is pursuing you and becomes incapacitated, then you heal it, it will stop
pursuing you (instead of attacking you immediately).
- Reset: Mobs that are not from locked adventures will now reset their scaling
if they are out of combat long enough.
- SILENT: New flag prevents echoing custom messages.
- Scaling: Fixed a bug where a chain of "NPC following player, who is following
an NPC" could result in incorrect scaled levels in certain rare cases. Fixed a
second bug where mobs who are not missing any health/moves/mana would also not
de-scale or de-tag when out of combat. Fixed an issue where familiars and
script-scaled mobs could still rescale if out of combat. Lowered mob health
scaling. Made small tweaks to the tank and dps flag scaling values. Mobs that
aren't part of an instance are no longer affected by its scaling constraints
(this was affecting familiars in some cases). More tweaks to mob scaling
including higher damage from the dps/hard/group flags, and more health from the
tank/hard/group flags.
- Scripts: Some mobs that had environmental/animation scripts now have custom
messages instead. The old scripts are still included with the game, but were
updated to mention they are unassigned.
- Sheep: Fixed a typo in the sheep's custom messages.
- Spawn time: Ensured all mobs have spawn time set, regardless of how they
spawned.
- Tie: Mobs that are tied up (bound and gagged) no longer run events like
aggro.
- Vampires: Removed automatic blood loss for vampire NPCs.
- Wandering vampire: Updated stock mob trigger.

Morphs:
- Fastmorph: Added the !FASTMORPH flag. Some forms no longer allow fastmorph,
for game balance reasons. Some morphs were not considered when fastmorph was
added.

MSDP:
- Button 3: Fixed an issue where button 3 was labeled Score but sent "help".
- Location: The COORDS property no longer gets data when you're in a room with
no location (e.g. certain adventures).
- New variables: OPPONENT_FOCUS_HEALTH, OPPONENT_FOCUS_HEALTH_MAX,
OPPONENT_FOCUS_NAME (Awkens).
- Room VNUMs: No longer shows room VNUMs to non-immortal players.
- Room data: Now updates on login, not just when you move. It also now updates
when a vehicle moves with players inside.
- Snoop: MSDP data will no longer be sent to someone who is snooping a player.
This fixes both spammy blank snoop output, and also a bug where the snooper's
MSDP data is replaced by what he gets from the snoopee.

Natural Magic:
- Chant of Nature: Added chant text.

Objects:
- Affects: Fixed a bug where items that granted affect flags were not doing so
if they did not also have attribute applies.
- Applies: Added new apply types that will only appear on an item if it has
matching superior/hard/group flags when scaled.
- Auto-updater: Now correctly inherits a new 'timer' if the prototype had its
timer changed to/from unlimited. Previously it would always keep its old timer.
- Bows: Updated the look description to match modern ranged combat systems.
- Canoe: Added better usage notes to the description of the canoe.
- Chemist's cleansing cap: Updated the recipe name to match the item name.
- Cloth: The cloth items are now made from cloth instead of flesh.
- Coif: Now has correct material type.
- Coin mill: Removed the confusing adjective 'heavy'.
- Crafter items: Added tier 3 crafter items, which drop from level 275-374
"group" mobs. Tier 2's range was updated to 175-274/group. Added missing BoE
flags to the tier 2 patterns.
- Custom messages: Objects can now give players a custom long description when
worn (including male-only and female-only options).
- Drinks: Added a "mead" liquid type.
- Dyes: The orange and violet dyes are no longer needed for any craft recipes.
These were part of a system that never got used much, and never provided
anything interesting.
- Free crafts: Candles, flasks, and other free crafts are no longer storable.
- Gold Bracelet: Now gives charisma.
- Grave Marker: The graves are now burnable.
- Inventory: Players who reach 2x their inventory capacity will now auto-junk
older items in their inventory.
- Llama wool: Added missing storage.
- Magewood: Now has a custom fire type when lit.
- Overburden: Will now attempt to drop items when severely overburdened, rather
than junk them. The game now remembers the largest inventory size you ever had,
and only auto-drops when you go over 2x that amount.
- Plum: Fixed the combine interaction quantity on plums.
- Quest items: You can no longer give quest items to random NPCs.
- Quests: Items marked (quest) no longer require any inventory space.
- Scaler: Fixed a major bug in how point costs are computed in the object
scaler. This was causing some items to scale lower when they had higher-quality
loot flags.
- Scaling: Added missing scaling to 'retrieve' and 'mine'.
- Sinking: Items without the TAKE flag will no longer sink or drift.
- Spear: The basic spear now has a fixed level of 1.
- Staves: Added missing STAFF flag to some staves.
- Stock objects: Many objects that have command triggers (such as trinkets and
mirrors) were updated to allow the "#.name" syntax on their trigger commands.
- Stolen: You can no longer junk or sacrifice stolen items until the stolen
timer expires.
- Stout: New liquid type.
- Torch: The basic torch is now wieldable.
- Trinkets: Added "appears" messages that were missing on the trinkets.
- Unique: New object flag that prevents you from using two copies at once.
- Wax: Now has a custom decay message.

OLC:
- .map naturalize: New map tool that can be used to return a tile, island, or
whole world to its natural state.
- .map populate: New map OLC command forces an NPC to attempt to move into the
current building or room.
- .map remember: New map tool that stores the current sector of a room (or
island) as its "natural" sector, e.g. allowing immortals to make permanent
changes on newbie islands.
- .mapedit decay: New map editor that causes 1 year of decay on a tile.
- .mapedit maintain: Instantly maintains a building.
- .oedit damage: You can now set damage from -10000 to 10000, rather than
-100 to 100.
- .removeindev: This command now warns if someone has an open editor with an
IN-DEV flag in that range.
- .trigger fullsearch: Now correctly distinguishes between trigger types on
mob/obj/wld/veh triggers.
- Book editor: Immortals are no longer constrained by the item name length
limits.
- Book objects: Changed the object editor's ".book" field to ".text" because it
conflicted with the ".book" editor.
- Cascade: Added a new command (.adv cascade) that copies the adventure's
min/max level to all of its mobs and items.
- Class editor: Rearranged maxmove and maxmana since the ".maxm" hits them
alphabetically.
- Copy: Smart-copiers for things like interactions now correctly copy multiple
items with different percents (and other traits) even if they have the same
vnums. Previously, some items would fail to copy if they were partial-
duplicates but not identical.
- Corpses: You can now create real mob corpses in OLC, with the new <corpseof>
field.
- Crop/Sector editor: The .icons field now supports "copy".
- Custom messages: Fixed a bug in changing custom messages where the $ was
duplicated.
- Deleteroom: Now messages people when players appear after being transferred
from a room deleted by map OLC..
- Fullsearch: Added fullsearch options for objects and triggers, for easier
lookups.
- Icons: Fixed a bug in the icon-validator where it miscounted @ signs if they
weren't part of special icon codes.
- Mobs: Fixed a bug in .search/.delete where buildings' artisans were not
checked for the mob.
- Object editor: Viewing the 'type' menu will no longer clear object values
unless you change the type.
- Object values: Changed "value1, value2, value3" to "value0, value1, value2"
in the object editor, to match its use in both scripting and in the code.
Previously, this was extremely ambiguous and made it hard to write scripts.
- Objects: Fixed a small bug in deleting an object that's used in the
maintenance list for a vehicle that is currently being edited. Storage
locations now show a vnum in the editor.
- Quest list: Now shows (daily) flag.
- Quest prereqs: Fixed a bug where you could copy tasks but not prereqs.
- Requirements: Added two new types of requirements: wearing, and
wearing-or-has. This allows quests (and socials) to require equipped items.
Requirements also now support "or" conditions, so quests/socials can have
different items or tasks that all qualify a player for that quest/social.
- Resources: Fixed a strange error where commands like ".res add obj 1 foo"
resulted in adding 1x "bug".
- Sectors: Inverted the SECTORS olc control flag to !SECTORS to match most of
the other flags. Builders can now edit sectors by default.
- Skill trees: Ability names in the tree editor can now be in "quotes".
- Social editor: Now allows "none" to remove messages.
- Socials: Improved the social auditor.
- Spawns: The <spawn> tag no longer has a partial command list next to it.
- Trigger editor: Fixed a buffer overflow issue where long scripts could cause
the trigger editor to be way too long. Changed how live triggers are updated
when a trigger is saved. The game now detaches any live copies of the trigger,
and re-attaches fresh copies in the same positions in the script lists. This
will cancel any trigger currently firing, but will ensure better updating when
a trigger is saved.
- Triggers: Now searches adventure scripts during a trigger search/delete.
- Uncascade: new command (.adv uncascade) that removes min/max levels from all
mobs/objs in the adventure whose levels are the same as the adventure's own
level limits.

PHP:
- map-viewer.php: Fixed the city location math so that cities appear in the
correct place when the map is scaled down. Fixed a minor issue where the name
variables at the top were not used correctly in the file.

Players:
- Accounts: Trying to log in two characters from the same account will now
disconnect the first one, rather than bouncing the second one. (For people who
don't have the MULTI-CHAR account flag.)
- Affects: Fixed a bug triggered by affects being read out of the playerfile
before things they were affecting, sometimes causing attributes like age to
change permanently if you logged out with an age-modifying affect.
- Base level: Updated the definition of "level 1" to "35 skill points", since
new "Hobby" archetypes raised the number of starting skills.
- Bonus Pools: The health/move/mana pool bonus traits now give significantly
larger bonuses.
- Bonus Regens: The health/move/mana-regen bonus traits now give considerably
more regen bonus.
- Daily bonus experience: If players have gained extra bonus exp and are over
their normal daily amount, they will no longer lose this overage when it
resets.
- Drunkenness: Sleeping will now cause your drunk level to go down faster.
- Frozen: Players who are frozen can no longer trigger command triggers
(whoops).
- Half-Death: Fixed a bug where dying players could, rarely, get stuck in a
state where they were bleeding out very slowly, unable to move for 15 minutes
or more.
- Idling: Fixed a bug where link-dead players would not idle out while also
regular-dead.
- Last login: If a player idles out during their first login, the game no
longer loses their connection info.
- Timed actions: When the mud experiences lag, timed actions will no longer do
multiple update cycles as the lag resolves.
- Xnames: Added "import" and a few other terms to the list of forbidden names
(lib/misc/xnames).

Quests:
- %quest%: Added the 'untrigger' option so scripts can cancel a triggered
condition on a quest.
- City dailies: Added some daily quests which appear in buildings around player
cities. To try the new dailies and give feedback, visit the Mill (Empire),
Stable (Trade), Tavern (Stealth), Tower of Sorcery (High Sorcery), Pigeon Post
(requires Alchemist, Forge, and Tower of Sorcery).
- Color: Quests available from the room you are in, are now colored to make
them distinguishable from the room description.
- Dailies: New type of quest with a max-per-day limit. Players automatically
fail remaining 'daily' quests when they hit their limit or when the daily cycle
resets. Daily quests also have special 'repeat' rules.  Added a new 'daily
cycle' field to quests, allowing a group of daily quests to share the same
cycle, where only one of those quests is available each day, at random.
- Deleted quests: Updated the code that removes deleted quests from a player's
list of completed quest, and from their current quests, to be more reliable.
- Empire-only: New quest flag restricts the quest to the same empire as the
quest-giver.
- Level limits: You can no longer start a quest that is more than 50 levels
above you.
- Morphs/Disguise: Expanded the list of conditions that prevent you from
starting/finishing quests to include invulnerable morphs and all disguises.
- No-Guests: New flag changes the room requirement from "guests allowed" to
"members only" on start/finishing quests.
- Permissions: Players must now have at least "guest" permission in a room to
start/finish quests there (if it is claimed). Quests starting from objects now
also check the Empire-Only flag if the object is not carried by the player.
- Prerequisites/tasks: Made the quest task data a generic type so that it could
be used for requirements on other systems (such as socials).
- Quest finish: Improved the error message when no argument is typed. You can
no longer finish quests in an animal form.
- Quest givers: Added "quest" as a type for the starts-/ends-at data, strictly
to make it easier to look up where you acquire a quest.
- Quest info: Improved the error message when no argument is typed.
- Quest start: Removed the 'quest check' command; typing 'quest start' with no
arguments will list quests available. You can no longer start quests in an
animal form.
- Quest tracker: Improved how incomplete objectives are displayed.
- Repeats-per-instance: Updated this flag to better support the has-completed
and not-completed quest tasks.
- Room templates: Fixed a bug where you could see, but not start, quests
available from the room you are in.
- Turn in at: Added code to replace #n, #e, and #a in mob names for the
turn-in-at section of quest info.

Resources:
- 200-300 resources: Added new sectors, items, crafts, mobs, and abilities to
introduce a new tier of cloth, metal, leather, wood, and gems in the 200-300
level range.
- Actions: Resource lists (maintenance, building costs, etc) can now include
"actions". These take a normal build/maintain tick, and show a message, but
cost nothing.
- Basic: Added the "basic" component flag and assigned it to all the tier-1
resources (ordinary lumber, metal, nails, etc.).
- Blocks: Removed the "large" flag from all blocks/bricks, to (hopefully) make
this resource less confusing. All items and recipes were updated.
- Cloth: The basic cloths gained the 'mundane' component flag, to distinguish
them from magic cloth.
- Enchanted Forest: These tiles no longer allow chant of nature to regrow trees
once chopped.
- Resources: Fixed a set of bugs where the same item could count for multiple
requirements in a resource list (such as a craft), leading to the mud requiring
fewer items than expected (although it would usually still take enough items if
you had them). It now finds/takes specific items before components.

Rooms:
- !Teleport: Added a new room affect flag blocking teleport.
- !Weather: Added a new flag that suppresses weather messages and the weather
command.
- Deletion: Fixed a bug where deleting a room which contains a vehicle that
contains a player would cause a crash, as the player was not relocated in time.
- Functions: Room templates (for adventures) now have function flags. Converted
two old RMT flags on existing rooms.

Scripting:
- %adventurecomplete%: Improved how this command detects the correct instance
to complete.
- %aggro%: New mob command for smart-aggroing a group, even if the leader is
immune.
- %build%: New script command for adding/removing buildings.
- %ch.can_enter_instance(room)% – New script function to determine if a player
can enter the instance a room is in, e.g. due to player limits.
- %char.can_start_quest(vnum)%: New variable to determine whether a person can
start a quest or not. (%quest% can still override this.)
- %char.disabled%: Now checks if the character is in the 'extracted' state,
which should definitely count as disabled.
- %char.unlink_instance%: New character operator for removing the mob-instance
associate that would cause a mob to be cleaned up when the adventure completes.
- %damage%: Using this command to heal an incapacitated character now correctly
un-incapacitates them.
- %door%: Now accepts alternate direction names ("ne" for "northeast").
- %instance%: Fixed a bug where this variable did not work correctly without a
%instance.field% (field). Now gives an error message if an invalid field like
%instance.foo% is called.
- %instance.*%: Made the instance variable available to quest start/finish
triggers that are run outside the instance.
- %instance.mob(vnum)%: Fixed a bug where this could return purged mobs, thus
getting stuck in a loop if it tried to purge multiple mobs this way.
- %instance.nearest_rmt(vnum)% – New script function to locate the nearest
available copy of a room template.
- %load%: Now supports a room as an argument (either "room" to target the room
the script is running in, or "%room%" to target a specific one).
- %mob.movetype%: Getter for the mob's move verb (also gives walks/flies for
players).
- %obj.val0%: You can now change the three object values by passing an argument
like %obj.val0(15)%.
- %own%: Fixed a bug where you could not target things directly with a %var%
reference unless you also provided a type (%own% vehicle %veh% %emp% — instead
of: %own% %veh% %emp%).
- %purge%: Added "%purge% instance mob <vnum>" syntax for purging all mobs of a
given vnum from the instance. Also added an optional [message] argument to all
%purge% options, which echoes the message each time it purges something.
- %quest%: Can no longer operate on IN-DEV quests.
- %regionecho%: Fixed a bug where !LOCATION rooms were seeing region echoes.
- %restore%: New script command that fixes health, damage, DoTs, negative
effects, burning, and maintenance.
- %scale%: Can now rescale an instance.
- Adventure cleanup scripts: Changed the order these run in so that they still
have access to the building/instance as they run.
- Adventure cleanup: Fixed a bug where cleanup scripts didn't run correctly.
- Buildings: Fixed a bug where buildings/rooms could only get 1 script attached
to them, ignoring scripts after the first. Buildings now reliably remove their
scripts when they change or are removed.
- Coins: Fixed a problem with dropping coins where a script that returns 0
resulted in the coins being extracted, even if the script purged them. This
will no longer crash but can result in a situation where the coins end up as an
item in a player's inventory if the script cancels the drop but doesn't purge
the coins.
- Command triggers: Added the ability for 1 trigger to take multiple commands
(e.g. ritual and rite) using space-separated strings for the trigger ("ritual
rite"). Prevented command triggers from firing twice if you typed out the full
command (not abbreviated) and the script returned 0.
- Commands: Fixed a bug where a mob's script commands would un-hide the mob,
like normal commands do.
- Consume trigger: Objects that are required for a build/craft recipe (such as
an armor pattern or a tent) now fire Consume triggers before allowing the
craft/building to start, and can prevent it.
- Context: Fixed a bug where both "unset" and "global" were ignoring context,
e.g. if two variables had the same name but different context.
- Damage: Fixed a bug where script damage with no character source would cause
a crash when tallying damage meters. Scripts will scale both the scripted mob
and the victim before dealing damage. People with !ATTACK affects (earthmeld,
hidden mobs, etc) are now immune to script damage.
- Destroy vehicle trigger: Automatically return 0 if the vehicle is purged.
- Enemy detection: Fixed a bug where attacking something that isn't attacking
you back would not count it as an enemy, for scripting.
- Entry triggers: Portal entry can now be blocked correctly by scripts.
- Finish-Quest trigger: No longer needs a percent argument.
- IDs: Mobs, objects, and vehicles now delay when they get their script IDs,
until the first time the ID is requested. This should prevent (or greatly
delay) map-spawning mobs from overrunning the ID space when a lot of players
are moving around on the map.
- Messages: Now skips color codes when capitalizing script messages like %send%
and %echo%.
- Mini-pets: The generic mini-pet script now automatically adds the !EXP flag
to prevent certain exploitive experience gains.
- Mobs: Can no longer run random triggers while dead, stunned, incapacitated,
tied, etc.
- Mount whistle trigger: Updated targeting on this commonly-used trigger to
support the "2.whistle" syntax.
- Object auditor: Now checks for TWO-HANDED + HOLD on items.
- Object binding: Scripts can now copy an object's binding list directly, for
loot replacement.
- Object lookups: Added a way to suppress the error log when looking up an
object by UID. This prevents a common case where an object doesn't exist but
it's not an error if not.
- Objects: Added %obj.bind(person)% to bind/unbind items via script. Added
%obj.level% var to get the current scaled level.
- Order of Operations: Corrected the DG Scripts version of "order of
operations" to properly handle mathematical expressions. You would not believe
how wrong this code was.
- Player-in-Room: New trigger type (modifier) that applies random triggers ONLY
if someone is present. Updated all the stock scripts that need this flag.
- Random triggers: Rewrote the system that runs random triggers. The game now
keeps a list of trigger instances that are random, and iterates over that list
only, rather than iterating over the lists of mobs, objects, vehicles, and
rooms. This should speed this system, and now allows triggers on map rooms to
fire just as often, rather than only 1/6 of the time.
- Reboot: Added a new trigger type that is called when the mud starts up,
allowing complex adventures to repair any setup that wouldn't survive a reboot.
- Remote variables: Fixed a bug where new players had no SCRIPT() property and
so could not receive remote variables until they had logged out at least one
time.
- Room people: The %room.people% and %char.next_in_room% fields now ignore
players who have the !TARGET or !SEE-IN-ROOM flags (e.g. earthmeld, hidden
spawner mobs, etc).
- Room vars: Added %room.bld_flagged()% and %room.rmt_flagged()% getters. Added
the %room.aff_flagged()% getter.
- Start-Quest trigger: No longer needs a percent argument.
- Targeting: Added three character vars: %char.obj_target(name)% and
%char.obj_target_inv(name)% help detect if the character is targeting an object
in command triggers. %char.char_target(name)% detects a visible character being
targeted in the room.
- Terraform/terracrop: Now removes more depletions on the tile.
- Variables: Rooms, mobs, items, and vehicles now all correctly store global
variables from their triggers through a reboot.
- Wizinvis/Wizhide: The following triggers now ignore immortals who are
invisible: enter, great, leave, memory.
- can_build: Added %room.can_build(FLAGS)% for checking if a map location is
buildable.
- dg_affect: Clarified how this can be used to remove affects, and improved the
syntax.
- dg_affect: No longer affects dead people (which was causing a problem).
- dg_affect_room: New script command for applying an affect to a room.
- parse_dir: Added a new character variable that checks their
Navigation/alcohol status.
- wdoor: Fixed a bug where new exits could only be added by vnum (other
versions of %door% did not have this bug).

Sectors:
- Evolutions: Changed evolutions to run on 1/24th of the sectors per game hour,
iterating only over the sector's tile list. This should alleviate the lag from
evolutions, which were running all at once. All stock sectors had evolutions
updated based on the new 30-minute timer (formerly 7.5).
- Evolutions: Changed how sector evolutions are done, again, to balance
evolvable tiles over the number of game hours.
- Overgrown Forest: Base movement cost reduced from 6 to 5.

Skills:
- Ability points: Added an additional ability point at level 75, raising the
total to 16.
- Drop: Updated how abilities are removed when a skill is dropped to a lower
level.
- High Sorcery: Removed the hard-coded 'study' action. It has been replaced
with a trigger that gives you a book to read, and that book grants level 1
High Sorcery. This only works on enchanted copies of the book. While you CAN
shelve the book, it's no longer magic if you make a copy of it from your own
library.
- Level zero abilities: Skills can now have abilities at level 0, which are
given to all players regardless of level. These do not count as purchases and
cannot be dropped.
- Low-level gains: Skills can no longer be raised without using abilities,
which was previously possible up to level 15 in about half the stock skills.
They now behave consistently at all levels. Some skills can be started using
zero-level abilities.
- Max Level: Skills can now have a max level between 1 and 100, allowing "minor
skills" with a lower cap.
- Min Drop Level: Skills can now have a minimum "drop" level other than zero,
including 100 to make them undroppable.
- Skill Drop: Fixed a bug where players who were at level 100 and spent all
ability points on low-level abilities, could skill drop to 50 or 75 and have
too many abilities.
- Swap: Players over level 100 can now have 2 full sets of ability purchases,
and alternate between them using "skill swap".
- Trees: Rearranged low-level abilities in skill trees to accommodate
zero-level abilities and low-level skill gain changes.

Socials:
- Color: Fixed an issue with custom colors bleeding over to additional lines
when certain socials are used.
- Commands: Rewrote the social-handling commands and functions.
- Converter: Imported old socials into the new system in the 100-299 vnum
block.
- Data: Socials now have a hash table and dynamic data, and can be added and
removed from within the game.
- Editor: Added the missing minimum-position fields to the editor. Fixed a bug
where dollar signs were duplicated.
- Highfive: New social from Yvain.
- List: Updated what's shown on the detailed ".social list" for immortals.
- OLC: Socials now have a full-featured editor.
- Requirements: Added the ability to have requirements on a social, e.g. a
'tip' social that requires a tophat. When choosing a social, the game now
prefers one that has requirements over one that doesn't, so a "smile" attached
to a mask would override a normal "smile" social.

Text Editor:
- Color codes: Accounted for longer strings in the code that makes color codes
visible.
- Empty strings: Some strings are now allowed to be null/empty instead of
always adding a "Nothing."
- Formatting: The /f and /fi formatters should no longer add a blank line at
the end when the final line is long.
- Length: Fixed a bug where unusually long strings could lead to crashes if
the /n code was used.
- Triggers: Fixed an issue where the maximum script length was longer than the
maximum string length.

Vampires:
- Definition: Players are now vampires when their Vampire skill is above 0.
It no longer uses a flag separate from skill level.
- Drop: Can no longer be manually dropped below 1.
- Noskill: Siring a person who has noskilled Vampire will now simply kill them.
- Purify: Now drops the Vampire skill.
- Sunny: Corrected the definition of "sunny" room to include "outdoor"
adventure rooms during the day time. This also affects Solar Power.

Vehicles:
- Autostore: Fixed a bug where items could autostore very fast if they were put
into a vehicle which hasn't moved recently.
- Canoe: Fixed the long description so it no longer lies on its side. No longer
requires items for maintenance.
- Carrack: Can no longer be used for shipping. Can now be set as a home.
- Cede: You can no longer attempt to cede the interior room(s) of a vehicle.
- Custom Description: Now properly restores the prototype's description if you
abort the editor.
- Customize: Adding a custom name to a vehicle will now automatically add it to
the long description, if the long description hasn't been changed yet. This
averts a problem where players can forget what they named their ship if they
didn't also set a long description. Vehicles will also now retain their "main
keyword" when renamed. Also improved the syntax display. Fixed an issue where
customizing vehicles that don't have look-descriptions could have caused a
crash.
- Drive/sail: You can no longer drive/sail one tile on a vehicle you couldn't
otherwise move. Drunk players will now find themselves driving/sailing in
circles based on random map rotation.
- Flags: Vehicles now only save a subset of their vehicle flags to data files,
so that the rest of the flags can be updated in OLC.
- Hitpoints: Some vehicles got updated hitpoints to balance them differently
now that the system has been live for a while, and also due to building
hitpoint changes. Some vehicles have less than 10 hitpoints and can now decay
in less than 10 years. Hitpoints are now stored with decimal values to make
decay rates more reliable when they take 10% of max health each year.
- Home set: It is now possible to set vehicles as your home, with the same
requirements as houses (that they have at least 1 citizen slot).
- Hulk: Typo fix.
- Interior: You can now "look in <vehicle>" and "identify <vehicle>" from
inside (this already worked for other look commands). The triggers that set up
vehicle interiors now remove themselves when done.
- Look: The vehicle name is now displayed when you look at the vehicle.
- No-work: Setting the interior of a vehicle as "workforce no-work" will no
longer block the repair-vehicles or fire-brigade chores on that vehicle.
- Sit: You can no longer sit in/on a vehicle (or furniture) without the correct
permissions.
- Visibility: A player can now always see a vehicle if he is in/on it, leading
it, or driving it.
- Visible-in-Dark: New vehicle flag makes some vehicles visible even without a
light. Many existing vehicles received this flag.

World:
- Newbie islands: When the annual earthquake resets the world, it will now
fully restore the newbie islands to nature if the "naturalize_newbie_islands"
config is on. Any unclaimed tiles will be returned to their original state.

Miscellaneous:
- Coordinates: Location-targeting commands like portal will now accept a space
in a set of coordinates such as ( 450, 100), which fixes a copy-paste issue
where some commands format the X-coordinate to 4 digits and copying their
output led to an invalid target.
- Earthquake: You will now auto-dismount if you are knocked to the ground
during the annual earthquake.
- Lore: Fixed a small possible issue where some lore functions
(e.g. remove_lore) did not ensure the player was fully loaded from file before
trying to remove the lore.
- Mob ranks: Gave mobs a default empire rank of 1 because of the occasional bug
where some code incorrectly tries to get name of the empire rank of a mob, and
crashes.
- Preferences: Removed some "is npc" checks on preferences that resulted in
unsual behavior (e.g. immortals who switched into NPCs lost their "compact"
preference).
- is_number: Fixed a bug where empty strings were considered to be numbers.
- skills.h: Removed some unused structs.

== end of 2.0 b5 ==

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

== 2.0 b4 (May 3, 2016) ==

Abilities:
- Advanced Woodworking: Now requires Trade 55.
- Animal Forms: Added 6 additional animal morphs (two per climate).
- Armor skills: Fixed a small bug where items in non-used positions could
(potentially) trigger skill gains.
- Astral Werewolf Form: New class ability for werewolf casters.
- Barde: You can now use any common metal to barde.
- Block Arrows: No longer gains experience when no shield is equipped.
- Boost: Now boosts the three active attributes, and can no longer boost
Dexterity.
- Chant of Illusions: New class ability allows you to cast the chameleon effect
on road tiles.
- Chant of Nature: Now resets forage and pick depletions whenever it grows
something on a tile.
- Chants: Merged chants into the code that controls rituals. Instead of
repeating action spam and a random chance of success, chants now have a
pre-determined length and placeholders for hand-written text (coming soon).
Updated all magic-growth evolutions on sectors.
- Command: For the 25-level threshold on commanding mobs, it now uses the
higher of the player's composite level or Vampire skill level.
- Disenchant: Now only removes the applies that were added by enchantments.
- Elder Crafts: Added an ability to the Elder class to hold future crafts.
- Enchant: Now able to target items in the share slot. No longer targets items
on the ground.
- Exquisite Woodworking: Added a new top-tier woodworking ability to
accommodate loot-dropped recipes in the future. Added a caravan vehicle to it.
- Familiar: Fixed a bug where champion mobs with no-attack (such as the
tortoise familiar) were no longer joining combat or rescuing. Fixed a small bug
in familiar scaling where crossing the level 125 threshold would lead to
lower-scaled familiars until level 149. Familiar: Fixed bugs where familiars
would not always assist or activate scripts. All familiars now have the !EXP
flag.
- Family Recipes: New Trade 75 ability allows the player to cook buff foods for
him/herself.
- Firstaid: Fixed a bug where firstaid could not previously be used to remove a
DoT effect if the target was at full health.
- Fish: Rivers, oceans, lakes, and swamps each now have their own fishing loot
lists. You must now specify a direction to fish a tile other than the one
you're standing on. Fishing now uses a room interaction instead of a hard-coded
array of items, allowing content builders to add fishing locations and data.
- Forage: Fixed a bug where players could forage on claimed land where they
have no permission, which allowed people to borrow crops from other empires.
Seeded field tiles now automatically deplete their pick and forage items when
planted (they are still un-depleted when the crop finishes growing), preventing
people from immediately foraging crops that have just been planted.
- Forge: Can now make nocturnium spikes.
- Gourmet Chef: New Trade 100 ability allows the player to cook buff foods that
are not BoP.
- Heal: Added support for the Solo class role at different levels.
- Healing Boost: Renamed the "Healer" ability so its purpose would be clearer,
and added a help file.
- Heals/Rejuvenate: Lowered the amount healed (over level 100) and raised the
heal cost of healing abilities for players not in the Healer class role.
- Hone: New Trade ability allows players with 75+ Trade skill to add bonuses to
some of their own equipment.
- Lay roads: Roads now use any type of rock.
- Locksmithing: Now ticks up experience slowly over time, as well as on
infiltration.
- Moonrise: No longer works on your own alts.
- Purify: Now works on NPCs, so long as they aren't flagged HARD/GROUP. The
immune-to-natural-magic effect also now prevents purify.
- Reforge/Refashion: These abilities can now target players using the "shared"
slot.
- Rejuvenate: Added support for the Solo class role at different levels.
- Resurrect: No longer works on your own alts.
- Ride: Players are now unable to mount while sneaking.
- Ritual of Defense: No longer allows you to waste resources by casting it on a
tile that already has the enchantment. Wall attachment icons now also display
the enchanted color if the wall tile they attach to is enchanted.
- Roads: You can now lay roads in forests and groves.
- Search: Fixed a bug where a hidden target with Cling to Shadow would result
in the searcher permanently gaining the Sense Hide affect (fix submitted by
joshuaj). This patch also contains an auto-repair function that fixes players
who experienced this bug on live EmpireMUDs.
- Siege Ritual: Updated this ritual with new messages and targeting.
- Siegeworks: Can now forge heavy shot. Also now requires Trade 75.
- Solo role: The following abilities have been updated to work in the solo
role: Ancestral Healing, Blood Fortitude, Bloodsweat, Crucial Jab, Diversion,
Dread Blood Form, Dual-Wield, Familiars (all), Horrid Form, Howl, Noble
Bearing, Sage Werewolf Form, Savage Werewolf Form, Shadow Jab, Shadow Kick,
Shadowcage, Stagger Jab, Towering Werewolf Form, Ward Against Magic.
- Stagger Jab: Fixed a bug where this triggered when the player DOESN'T have
the ability instead of when they do.
- Summon Bodyguard: Removed the level cap on the bodyguard; they now scale like
a familiar. Also added the "fly" effect, like a familiar.
- Summons: All NPCs from summon abilities now have the !EXP flag.
- Werewolf Form: New class ability for werewolf classes which has solo/pvp
bonuses rather than role-specific ones.
- Whisperstride: A new Stealth class ability that allows a person to move
silently for 30 seconds (by Yvain).
- Wolf Form: Added coyote and ocelot morphs (for disguise in more climates).

Adventures:
- 102 Magiterranean: Interdimensional Whirlwind: Added a cooldown display to
the Dragonstooth Sceptre. Added missing chop data to the pudding figs crop.
Added a unique pillar object to the giant beanstalk crop in place of the tree
it used to give. Added missing level cap to the spade-axe. Nerfed the gemfruit
to make the number of gems they put out slightly less absurd. Corrected recipe
info for the dragonstooth sceptre. Fixed the scaling level on the thorn pick.
Corrected flags on ironbread recipe.
- 125 Ruins: The Goblin Challenge: Fixed the number of goblin arrows.
- 140 The Sewer: Ratskins: Updated the Ratskins quest so that multiple players
can complete it in the same instance. Small update to how the sewer exit
triggers move players, to prevent loss of charmed mobs.
- 160 The Tower Skycleave: Updated skystones to use interactions instead of
triggers to combine/separate.
- 180 Misplaced Mother Goose: A new adventure for newbies involving world drops
from low-level mobs and non-combat quest mobs roaming fixed locations.
Implementors should read the adventure description for installation notes;
adventure 180 is turned off by default.
- 181 Goblin Mines: A new adventure for newbies, set to spawn on a newbie
island. Implementors should read the adventure description for installation
notes, as it won't be able to spawn if you aren't using newbie islands, and its
limit should be increased to the number of newbie islands with mountains on
them.
- 190 Winter Wonderland: Added a new holiday mini-adventure.
- 200 Burrow Canyons: Added missing chop data to the pears crop. Fixed typoes
in craft recipe requirements. Small fixes to greet/aggro triggers and triggers
that require you to finish mobs before progressing in the zone. This adventure
received a large update with a new level range, gear, and mob locations.
Updated the hermit quest trigger. Multiple players can now complete the
hermit's objective in the same adventure instance.
- 201 The Cursed Chalice of Mill Manor: Removed room flags requiring swim/fly
inside the adventure.
- 282 Goblin Logging Camp: Fixed triggers and added missing triggers.
- 50: Tutorial: Royal Planning Office (new)
- 51: Tutorial: Museum of Early Man (new)
- 52 Tutorial Quests (new)
- Adventure summon: No longer works on linkdead characters or your own alts.
- Cooking fire: Added a flag that lets adventure rooms have cooking fires.
- Dragonguard: The dragonguard adventure reward will now correctly join your
empire when summoned, and act as a cityguard.
- Dragonstooth Sceptre: The summoned mob now correctly joins your empire.
- Flags: Added a new NO-MOB-CLEANUP flag for adventures, which prevents mobs
who escaped the adventure from despawning when the adventure completes.
- Instancer: Changed the order of some of the room validator checks to reduce
work. The instancer also now purges mobs when spawning an instance. Fixed a
small bug in the instance linker that was not correctly detecting locations for
adventures that link to existing buildings. Updated parts of the instancer to
work on the new world_map data instead of live rooms, and sped up parts of it
by rearranging the logic.
- Many adventures: Updated many craft recipes to use components instead of
specific items. Replaced some copies of core triggers by just using the core
triggers.
- Mini-pets: Improved the pet's self-limitation and added the CHARM flag so the
pet behaves like a charmie.
- Pigeon post: Added a flag that lets adventure rooms function as post offices.
- Room titles: The titles of adventure rooms are now colored based on your
level compared to the adventure's level, indicating difficulty.
- Scripts: Updated how adventure cleanup scripts work to be cleaner.
- Stock adventures: Several adventures got updates to items that have the
ENCHANTED flag on them. Added combine/separate interactions to some adventure
crops. Changed storage locations (or added them) on many useful adventure items
to the new curio/trophy locations.
- Unclaimable: This flag no longer prevents adventures from spawning.

Archetypes:
- Archetypes: Added a new data type with file storage (lib/world/arch/).
- Confirmation: Added a confirm-archetype character creation step.
- Name lookups: Fixed a bug where partial matches were reverse-alphabetical for
archetypes.
- OLC: Added a full suite of OLC tools for archetypes.
- Options: Added several additional archetypes on the full list.

Augments:
- Augments: Added a new data type with file storage (lib/world/aug/).
- Enchant: Imported all existing enchantments as augments, and replaced the old
enchant command with do_gen_augment.
- Hone: Imported the existing hone options as augments, and replaced the old
hone command with do_gen_augment.
- Name lookups: Fixed a bug in do_gen_augment and another in
find_augment_by_name that were both causing, for example, "manaspring"
enchantment to take priority over "mana".
- OLC: Added a full suite of OLC tools for augments.
- do_gen_augment: New generic command for handling augment abilities.

Books:
- Naming: Player-made books now have a list of keywords that must be used in
the book's "item name" in order to prevent abuse such as players naming the
book item "a gold bar".

Bugs:
- Auto-assist: Mobs flagged or affected with no-attack will no longer try to
assist.
- Buildings: Fixed a bug in how buildings with missing data are cleaned up.
- Cancel action: Added explicit scaling on items refunded by canceling actions.
- Empire deletion: Fixed a possible infinite loop (causing a lockup then crash)
in territory NPC freeing.
- Exits: Prevented an infinite loop in look/exits that occurs when a map
building tile has missing data.
- Extractions: Fixed an issue where a character could be marked for extraction
multiple times, leading to an inaccurate extractions_pending.
- OLC crash: Fixed an issue where repeatedly saving an object or mobile that
has triggers would cause a crash if there was an instance of it in the world
that had been saved through a reboot or logout. This was caused by patch b2.11,
which inadvertently resulted in some objects and mobs sharing the prototype's
linked list of script vnums, rather than having their own copies or having
none.
- Objects: Fixed an issue where non-scalable items would have their current
scale level changed when picked up.
- Player lookups: Fixed a probable bug where characters that are mid-extraction
could be found by the is_playing() function, leading to misleading results.
- Pledge: Fixed an issue where the pledge-to-empire data wasn't saving to a
player's file if they are already in an empire. This caused an issue with
trying to enroll the offline leader of another empire after they pledged to
you.
- Text editor: Fixed a crash bug caused by using the insert command with
certain invalid arguments.
- Timeouts and last-login: Fixed a major bug where certain auto-updates, as
well as commands, could reset a player's last login time and empire timeout.
- Workforce: Fixed a small bug where the "building" chore would not load
properly on reboot, and empires would have building set to "off" afterwards.

Buildings:
- Bedroom: Fixed a bug where bedrooms were giving additional regen even if not
sleeping.
- Cabinet of Curiosities: A new building that stores miscellaneous adventure
items.
- Chameleon: This flag now only works on finished buildings, not incomplete or
dismantling ones. Previously, this rule was only applied in some cases.
- Components: Virtually all buildings were updated to use generic component
requirements instead of specific items. Component requirements are shown in
parentheses like: 4x (lumber), 1x (nails).
- Custom names: Buildings that have customized names now indicate their actual
building type in several places, as do designated rooms.
- Designate: "Complete" building triggers now run when a room is designated or
re-designated.
- Dismantle: Fixed a bug (apparently added in late alpha) where upgraded
buildings were refunding too few resources on upgraded buildings.
- Drainage: New building (from Elder Crafts) allows removal of natural oases,
similar to the swamp platform.
- Flags / Functions: Split building flags into two sets; the new set are called
function flags and are the flags that determine what chores, actions, and techs
happen at the building. Existing stock buildings that used old flags were
updated. Several things that were still keyed off of building vnums got
converted to function flags.
- Kitchen: Fixed command list.
- Mill: Removed the oil description from the mill.
- Oilmaker: Added a new Artisan building and associated mob.
- Shipyard: New flag to interact with the craft system.
- Stable: Buildings flagged STABLE now only prevent animal mobs from
despawning, and will no longer affect Workforce laborers or other humans.
- Trophy Room: A new designated room that stores miscellaneous adventure items.
- Upgraded: New flag to interact with the craft system.

Chop:
- *: Rewrote the chop system to use a combination of sector evolution and
interactions. This allows rooms to be made choppable even in adventure zones.
- Adventures: It is now possible for adventure rooms to have chop interactions,
although they won't change to new room types. The number of times a person can
chop in a room is determined by the chop_depletion config.
- Deserts: The desert grove now gives rough wood, which can be sawed into rough
lumber and sticks. Players can now create columns from lumber and sticks using
Basic Crafts, to replace logs in the desert.
- Devastation Ritual: Updated how this ritual processes trees to use the new
chop interaction.
- Jungle: The jungle now gives fine exotic trees and lumber, which are
otherwise functionally identical to the temperate version except that scraping
them gives no sticks.
- Orchards: Crops that are orchards will still be choppable, but will no longer
give trees unless they have a chop interaction. Added a chop interaction for
all current orchards.
- Workforce: Updated the chopping workforce chore.

Cities:
- Find-by-name: Added a preference for exact matches (over abbreviations) to
the find-city-by-name lookup. This fixed a bug where it was possible to pick
the wrong city if one city's name is an abbreviation of another.

Code updates:
- Abilities: Moved ability data and class/skill assignments from code
structures to data files, and added an OLC suite for them. Moved player
abilities from an array to a small hash table. This includes updates to every
function that uses player ability data.
- Administrative flags: Moved the following player flags to account flags:
frozen, muted, siteok, notitle, and multiok.
- Aliases: Now stored in the player file instead of in supplemental files.
- Building: Fixed a small memory leak in process_build().
- Character targeting: Updated how disguises and morphs are targeted by
character-targeting functions.
- Characters: Rearranged the char_special_data and player_special_data structs
for the new player data, as the way these things are saved has changed.
- Classes: Moved class data from code structures to data files, and added an
OLC suite for them. Classes now all allow any role, whether or not they have
abilities for it.
- Color codes: Added better functions for counting color codes and for
determining the visible length of a string that contains color codes.
- Complex data: Not having a building or room template will no longer cause
rooms to lose their complex data. Also fixed a small issue where non-building
tiles could accrue disrepair if they had complex data.
- Components: Moved code related to displaying components into a central
function.
- Descriptors: Fixed several memory leaks in descriptor data.
- Flags: Updated the asciiflag_conv() and bitv_to_alpha() functions to be able
to support 64 bit flags; previously they supported 52 (stock code has no bit
higher than 45).
- Inventory timeouts: Updated the code that deletes old player inventories so
that it can also be disabled via the config command.
- Lore: Player lore is now stored in the player files instead of separate
files. It now stores a string instead of a value number.
- Mail: Replaced the old mail binary file with mail stored in the individual
player files.
- Mine data: Moved the mine data from hard-coded structs to a new global type.
Players should see things working basically the same as before. The minimum
size on mines has changed slightly for iron and copper, which were the only two
that didn't have 50% of their maximum as their minimum capacity.
- Multi-ok: Replaced the multiok player flag with two accounts flags: multi-ip
(allows more than one account per IP) and multi-char (allows more than one
character per account and IP).
- Object utilities: Removed purgedir, purgeobjs, and searchfor in the
lib/plrobjs directory, as they are no longer relevant or useful.
- Players: Fixed possible (but unlikely) memory leaks in player/mob freeing.
- Players: Replaced a huge amount of code related to players, accounts, player
files, player loading, and player creation. Players are now stored in
individual ascii files instead of one large binary file. Part of the player
file is now delay-loaded, to speed up multiple player loads. Also fixed several
memory leaks in player data.
- Resources: Replaced the old "Resource" array data type with the "struct
resource_data" linked list. These are used for crafts and various building
commands, as well as augments.
- Resources: You can no longer build or craft with items present that you can't
see.
- Rooms: Fixed small memory leaks in freeing room extra data.
- Script variables: Merged the saving of script vars into the main player file
instead of their own files.
- Skills: Added three-letter abbreviations to skills, and applied them in
several lists that were showing the full name. Moved player skills from an
array to a small hash table. This includes updates to every function that uses
player skill data. Moved skill data from code structures to data files, and
added an OLC suite for them.
- Timed actions: gen_craft actions can now have additional ACTF_x flags to
speed up specific crafting types (cook, smelt).
- Wear data: Added a simple name field to the wear_data array.
- act(): This function now supports vehicles as the vict_obj arg ($V). It also
supports vehicles as the obj arg ($v) IF the flag ACT_VEHICLE_OBJ is passed as
part of the targeting.
- automaint: Removed this shell script, which ran utilities that are gone.
Replaced it with a built-in function that deletes inactive/invalid players
after a configurable amount of time (unless the -q flag is passed at startup).
Inactive player deletion defaults to off.
- autowiz: Moved the CircleMUD autowiz.c utility into an in-engine tool that
builds the wizlist and godlist files from the player index.
- check_triggers(): Triggers on all the things are validated during startup.
- cryptpasswd: New utility that generates the encrypted form of a password, if
you are editing passwords directly in a player file.
- find_or_load_player(): This function, used by many immortal and empire
commands, will now accept an abbreviated name if the player is in-game and the
abbreviation is not an exact match for any player.
- generic_find(): Added another argument to support finding vehicles.
- get_char_world(): Fixed a bug where '0.name' correctly detected it was
looking for a player, but could never find one.
- mudpasswd: Removed this supplemental utility, which is no longer useful with
ascii playerfiles.
- prettier_sprintbit: Function will no longer display empty entries (sprintbit
already does this).
- purgeplay: Removed this supplemental utility, as stale-player-deleting is now
handled by the mud itself.
- showplay: Removed this supplemental utility, as the player files are now
human-readable anyway.
- utlist.h: Added the utlist.h header file for simpler linked list handling.

Combat:
- Auto-assist: Fixed a bug where characters could auto-assist while feeding
from (or being fed on by) other characters.
- To-Hit: Changed the formula for how To-Hit is compared to Dodge for players
who are attacking, to make the system more forgiving on low levels of To-Hit.
The old formula is still used if the attacker is a mob, in order to make the
Dodge cap predictable for tanks. The To-Hit cap remains the same.

Commands:
- *: All of the crafting commands (build, craft, cook, etc.) now support the
syntax "craft info <item>" to show the resource cost and other basic info about
the craft.
- Abandon: Fixed an issue where abandon had no position requirement. Now works
only when standing, sitting, or resting.
- Catapult: This command has been replaced by "fire".
- Chip: Rewrote the chip action to use an object interaction rather than a
hard-coded set of things that chip into other things.
- Claim: Now also works when resting or sitting.
- Combine: Added an interaction that allows an item to be combined with itself
to create a group item.
- Cook: Nows goes faster with the faster-chores bonus trait.
- Dispatch: New command allows you to send ships to other islands (using the
shipping system), even if those ships are empty.
- Drive/pilot/sail: Fixed a bug in showing coordinates to the driver.
- Enter: Charmed followers can no longer be ordered to enter a portal and leave
their master. Rearranged the logic for how portal entry is validated for
players, followers, and dragging.
- Excavate: Fixed a bug where you could excavate in animal form (it now works
like other chores).
- Hit/kill: Fixed a bug where a charmed mob with no master could lead to a
crash.
- Import/export: Non-storable items can no longer be targeted for import/export
or analyze. Players can now use the analyze command even without trade
permissions.
- Kill: The kill/hit command will no longer automatically execute
low-max-health mobs when autokill is turned off.
- Library: Fixed a bug where "shelve" and "burn" had their arguments in the
wrong order so it was incorrectly requiring an open editor.
- Look: Fixed a bug when looking at a room in screenreader view without
Navigation. It now always displays the directions in the normal order,
preventing players from being able to tell which way is true north using this
view.
- Maintain: Now requires generic (lumber) and (nails) components instead of
specific items.
- Pan: You must now specify a direction to pan a tile other than the one you're
standing on. Pan now uses a room interaction to specify item rewards, allowing
panning in adventures and additional tile types.
- Press: Split oils off from "mill" to a new "press" command.
- Quarry: Changed quarry to use a room interaction instead of a hard-coded
stone block. Also updated the workforce chore.
- Recipes: Now shows augments (enchant, hone) in addition to crafts.
- Scrap: Can no longer be abbreviated, giving abbreviations back to "scrape".
- Scrape: Added missing Empire experience from last patch.
- Separate: Added an interaction that splits one item into several copies of
another.
- Share: New command allows you to expose an item for another player to
enchant.
- Shoot: Fixed a bug where a charmed mob with no master could lead to a crash.
- Slash-channels: Commands like /join will now ignore leading slashes if you
type them before the channel name, e.g. "/join /dev" to allow channels to be
joined with or without the slash. (Previously, it required you to omit the
slash.)
- Smelt: Moved smelting into the gen_craft system, meaning it now works more
like craft and forge. Smelting still goes faster with the faster-chores bonus
trait. Dividing bars into ingots for crafting now uses "separate" instead of
smelt.
- Tan: Skin to leather tanning no longer uses a hard-coded array of data.
Instead, it uses an object interaction. The effect for the player is the same.
Workforce now uses the generic interaction chore.
- Tips: The "tip" command now also accepts "tips".
- Title: Fixed a small bug where blank titles ended up with a single space.
- Unshare: New command that's the opposite of share.

Configs:
- Changed default: room_item_limit 5
- New: chop_depletion 4
- New: default_class_abbrev Advn
- New: default_class_name Adventurer
- New: delete_inactive_players_after 0
- New: delete_invalid_players_after 30
- New: exp_level_difference 50
- New: max_sleeping_regen_time 60
- New: mutual_war_only 0
- New: vehicle_siege_time 30
- Removed: obj_file_timeout 365
- Removed: smelt_timer

Crafts:
- Bld-Upgraded: New craft flag requires a building that is flagged upgraded.
- Shipyard: New craft flag requires a shipyard building.
- Soups: Raised the maximum volume a soup craft can make.
- Unskilled: Removed the "requires object" trait from several unskilled crafts
so that "craft info" will work on them without the item in your inventory. The
recipes are otherwise unchanged.
- Vehicles: Crafts now have full support for making vehicles.
- Vnum: The immortal vnum command no longer searches crafts by the name of the
item they create. It now only searches by the name of the craft.

Crops:
- Depletions: Fixed an issue where crop growth wasn't resetting the forage
depletion on a tile, and a similar issue where scripted %terracrop% commands
were not resetting forage or pick depletions.
- Gourds: Added missing spawn info.
- More wild crops: Added 13 new wild crops (thanks go to Jeff) and set
plantains to a wild spawn point. Jeff was kind enough to also include recipes
for some of these crops. New crops are: tomatoes, blueberries, grapes, plums,
potatoes, oats, strawberries, coffee, bananas, watermelons, mangoes, coconuts,
and hot peppers. Plantains, which were included with the code but not spawned,
will now also spawn as well.
- Olives: Added missing spawn info.
- Peas: Added missing spawn info.

Displays:
- Alt list: Added level, class, and timeout info to alt list.
- Bite: Fixed and improved the stops-feeding messages.
- Board: Sneaking players no longer emit a message when boarding a vehicle.
- Chameleon: Fixed a bug where hidden buildings were still visible to
screenreader users, and a second bug where chameleon buildings didn't show on
informative view for screenreader users.
- Chip: Fixed the chip message that's echoed to the room, which had a huge
typo.
- City command: Corrected usage.
- Class role: The roles on the 'class' command are now colored, and your
current role is indicated.
- Craft info: The "info" modifier on the crafting commands can now display a
broader range of recipes, including ones you don't know.
- Craft times: Fixed an issue where craft times were showing as 2x their actual
duration in OLC and stat. Also cleaned up the code related to action timers a
bit.
- Crafting level: Added a missing space from the crafting level on "score" and
added it to "stat player", where it was missing entirely.
- Disembark: Fixed a typo in one of the disembark messages. Sneaking characters
no longer emit disembark messages.
- Graphical world map: Chameleon buildings are now hidden on the world map
output.
- Identify: Now shows climate type for plantable items. Also fixed a bug where
non-food plantables did not indicate what they plant. Also now shows when an
item can be combined or separated.
- Immortal-build: Fixed a small typo in the output of the ".map build" command.
- Informative: Now indicates no-work rooms.
- Leaderboards: Fixed a bug in the leaderboards which was introduced in b2.12.
- Logout statistics: Fixed the spacing on the "Total Empires" logout statistic.
- Lore: Deaths from sources other than players no longer record lore. Some lore
types now show slightly different strings. Lore now records strings like empire
name and can show empire names even if the empire is defunct.
- Mobs: Fixed a bug with how mobs in positions other than standing are shown in
the room.
- Morphs: When losing an ability causes you to un-morph, it will now send a
message too.
- Mounts: Flying mounts will now indicate this trait explicitly on the
"mounted" display line on "look".
- Move types: Added additional options for move types (mobs, morphs, vehicles).
- Nearby: Now shows owner of adventure tiles, if any.
- Players on map: Non-screenreader-using players can now see the names of
players at range even when aboard a ship or using "look out", just as
screenreader users always could. (The list of people on the map now appears
immediately after the map instead of later in the room sequence.)
- Political/informative: Improved the function that strips color from map tiles
in order to recolor them for the political and informative views. This support
is needed in order to correctly display multiple consecutive ampersands (&) on
political view, which should start appearing before the next full patch.
- Portals: Fixed a color leak when looking into portals.
- Prospect: Fixed an a/an typo.
- Quit: Fixed semi-ellipsis.
- Skills: Fixed an issue where abilities earned at level 100 of a skill showed
as [100-0].
- Sleep: Changed "lay" to "lie".
- Stealing: Changed the order on some error messages for taking items that
aren't yours, to make more sense.
- Vampire siring: Fixed a typo in the sire message.
- Vehicles: Fixed the message that said "<Vehicle> stops piloting." when the
vehicle stopped.
- Warehouse: Fixed "Retreive".

Empires:
- Battle: Added the option to mutually agree upon war, at no cost.
- Building techs: Fixed a bug where where buildings in the "dismantling" state
could, rarely, still count for techs.
- Diplomacy: Fixed an issue where trade relations would not show up on the
empire detail if they were the only relations you have with an empire. Fixed a
bug where some offers were not un-offered upon being accepted, and would still
show up in the offers list. Rewrote the diplomacy command to be more
procedural. Actual function is not changed in any significant way.
- Empire details: Timed out empires are no longer shown in the diplomatic
relations list.
- Homes: Fixed a bug that was allowing all empire members into private homes.
- Interaction chores: Workforce chores like scrape and saw, which trigger off
of object interactions, will now prefer items you have more of over ones you
have less of.
- Islands: Rewrote how empires store island techs and added more data per
island. NPC population is also counted per-island now.
- Last login time: Fixed a bug where an empire's last login time isn't reset
each time members are updated. If an empire was past the timeout period (2
weeks) and 1 member logged in and then defected, the empire would still have
that member's login time as the empire's last-login until a reboot, even though
no current members had logged in.
- Lore: Players now receive lore upon being promoted (or demoted), when the
empire merges with another empire, when the empire name is changed, when a rank
name changes, or when a player becomes leader of an empire.
- Maintain: Performing building maintenance manually will now trigger despawns
for workforce citizens that were trying to do it.
- Mutual War: EmpireMUD administrators can now disable non-mutual war with
'config war mutual_war_only'.
- NPCS: Fixed a small memory leak when empire NPCs are killed.
- Nailmaking: Workforce will now use any common metal to make nails.
- Oilmaking: Oils are now made by the new oilmaking workforce task instead of
milling.
- Public: Being at war with an empire, or hostile+unaligned, will now prevent
you from using a public building or room.
- Ranks: Fixed a minor display issue where the underline color code bled from
ranks in some places.
- Sawing: Fixed the location for the sawing workforce chore.
- Warehouse: Items with decay timers can no longer be stored in
warehouses/vaults at all.
- Workforce: Added dashes to the herb-gardening and nexus-crystals chore names.
Fixed a bug in abandon-farmed: the farming chore was checking abandon-chopped
instead. Fixed a bug where incapacitated and sleeping mobs could perform
Workforce chores. Fixed an issue where shutting off certain non-worker chores
could trigger a despawn on workers of specific other chores (although those
workers would respawn on the next hour anyway). Improved workforce's worker
tracking for chores that use obj/room interactions, to prevent worker
over-spawning. Will no longer work tiles that have adventure instances
attached. However, Fire Brigade will now work locations marked no-work or which
have attached instances. The farming chore will no longer spawn workers on
tiles that don't give a storable resource.

Globals:
- Newbie Gear: Added a new global table type for newbie gear that all
archetypes get. Moved the food, water, and accessories that newbies receive
from hard-coded item loads to new globals.

Help files:
- Bookedit license: Filled in empty help file.
- Canoe: Updated the help file for the vehicle system.
- Chores: Added a help file on chores and timed actions.
- Crops: Added new wild crops to the help file.
- Hasten: Added potion notes.
- In-Development: Added a help file specifically for this flag.
- Misc: Typo fixes.
- Triggers: Overhauled, appended, rewrote, and corrected all of the DG Scripts
help files.
- Various: Updates and fixes from Yvain.

Immortals:
- /who: Immortals can now check the /who of slash-channels they are not on.
- Coins: Added missing abuse logs for giving/dropping coins to mortals.
- Create: Added a safety limit to the create command.
- Incognito: Fixed a bug where incognito immortals showed up on /who
(slash-channels).
- Instance: Using "instance list" with no argument will now list adventures
that have live instances with their vnums and instance counts, rather than
listing all existing instances until it runs out of buffer space.
- Notes: Admin notes are now attached to accounts instead of players. You can
add, edit, and show notes by either account id, or the name of any player on
the account.
- Notitle: The notitle account flag now also prevents a player from changing
the empire's name, adjective, or rank names.
- Quit: Immortals can now quit on claimed land.
- Restore: Now also restores hunger/thirst on mortals.
- Score/stat: Fixed a bug where the target would see attribute and skill output
when an immortal uses "score" or "stat" on another player.
- Set lastname: Fixed a typo in the output/log message.
- Set: Changed the set option for bonus traits to "bonustraits" and added
"bonusexp" for setting daily bonus experience.
- Show terrain: Fixed an error in the statistics code that led to long lag when
the "show terrain" command was used.
- Show variables: Moved script variables from "stat character" to "show
variables".
- Show: Fixed a bug where arguments to "show" subcommands could not be more
than one word.
- Stat book: Fixed color code leaks.
- Stat character: Fixed a small bug where mobs were trying to get skill level
in order to determine how to color the crafting level (mobs don't have a skill
level trait). Now shows disguise, morph, and mob move type.
- Stat craft: Added missing line break. Crafts no longer show their duration
time on stat, if they don't have one.
- Stat object: Now shows planting data on non-food items.
- Statistics: Fixed how crops are counted for statistics.
- Syslogs: Added the "empire" syslog which currently only shows diplomacy
changes. All diplomacy changes now store permanently in the "file diplomacy"
log after reboots.
- Toggle: Command triggers can no longer override the toggle command for
immortals, even if they override everything else.
- Util rescan: Added a new utility that forces a re-scan of members and
territory for any/all empires.
- Util resetbuildingtriggers: Added this util command, which is to be used if
script changes are made to buildings and live copies should be updated.
- Wizhide: Now blocks follow and stop-follow messages. Fixed bugs where wizhide
players still showed up on "look <direction>" and in the distance on the map.

Islands:
- Names: Island names may no longer contain quotation marks.

Mobiles:
- !EXP: Added a new flag that blocks mobs from granting experience to players.
- Aggro: Fixed a bug where aggro mobs in adventures would not attack if on a
newbie island.
- Dynamic names: Fixed a small memory leak (albeit one that has never come up
in practice) in setup_generic_npc() that occurs when it's called on a mob whose
name strings contain #a/#e/#n but where those strings aren't from the
prototype. Updated the function so that it can be called repeatedly on mobs to
re-rename them.
- Global Interactions: Global mob interactions now support the requires-ability
and percent chance arguments.
- Leading: If you are separated from a mob you're leading, you will now stop
leading it. The game will also attempt to keep you from separating from it.
- Loot: Mob loot no longer binds to players who are not present.
- Map NPCs: Made large adjustments to the levels on map NPCs including animals
and people, largely undoing level increases that were made in late alpha, and
bringing the combat level of these animals into a more reasonable range for
players.
- Pursuit: Mobs will no longer pursue immortals. Also, mobs will now forget
their pursuits if they fail to find them, preventing strange pursue loops.
- Ships: Map NPCs are no longer prevented from despawning on ships.
- Stock mobs: Added loot drops to some of the random map spawn mobs, such as
the highwayman.
- Stun: Fixed a bug where mobs heal but don't un-stun.
- Tagging: Mobs no longer tag to linkdead players.
- Wanderer: Added a new vampire map spawn.

Morphs:
- Affects: Morphs now add their traits as character affects, rather than
changing traits in their own way.
- General: Morphs now have data that is stored to files instead of being
hard-coded.
- Look at character: Updated how the system shows characters to better
accommodate morphs and disguises.
- Mobs: It is now possible for mobs to be morphed.
- Morphs: Existing morphs were updated to work in the new system. Additional
morphs were added to fill gaps left by role-specific morphs.
- OLC: Added a full suite of OLC tools for morphs.
- Scripting: Added the %morph% command and %char.morph% variable.

Objects:
- Applies: Changed how applies are stored for objects (formerly the affected[]
array). Applies also now have an "apply type" that indicates which applies came
from an enchantment.
- BoE: The bind-on-equip flag now also binds on use for craft patterns, books,
and drink containers.
- Boat: Fully removed the BOAT item type.
- Bottle: Added a new newbie water bottle, as the new system needs one that
comes pre-filled.
- Carry limit: The contents of items now also count toward the number of items
a player can carry, so carrying corpses full of items does not let you carry
more than your carry limit.
- Carts/Ships: Deprecated the CART and SHIP item types, although they are still
in the system because they're needed by the converters.
- Chair: Removed the CHAIR item flag. You can no longer sit on items. Vehicles
now cover this functionality.
- Clay: Removed the code that causes clay to override normal dig interactions
near water. Instead, clay is now found as a normal result of digging in many of
the temperate sector types, as well as the irrigated terrains, and clay pits.
Desert and jungle tiles do not provide clay.
- Coins: You can now pick up coins even if your inventory is full.
- Crafted staves: Removed the ENCHANTED flag from crafted staves so players can
enchant them with real enchantments.
- Custom messages: Objects now support custom wear and remove messages.
- Equipping: Removed the "too weak" and on-equip-script checks for gear slots
that don't count toward stats (e.g. sheath, share).
- Food: Players can now receive buffs from eating food items that have them.
Applies and affects are transferred from the food to the player, for a number
of hours equal to the hours of fullness. Players can still eat 24 hours' worth
of food even if full, if that food gives buffs. Buff food can only be eaten for
24 hours at a time. The "well fed" buff does not stack, so only one food can be
active at a time. This buff will wear off if the person becomes hungry.
Additionally, the "fullness" value of food items is no longer scalable (no
stock food items ever scaled anyway). Players can no longer eat items that are
bound to other people. Eating part of a BoE/BoP food item will bind it to the
player.
- Fruits: Added combine/separate interactions to many of the base crops,
especially fruits.
- Full inventory: Changed some (but not all) actions that put items in the room
if your inventory is too full. In many cases, it will now prefer to overfill
the inventory. Only certain chore actions still drop items in the room instead.
- Gold and Silver: The "disc" level of these metals is now called "ingot" to
match the other metals. Craft recipes that use silver and gold now use ingots
(some costs were adjusted). The wealth value of the ingot level was reduced so
that only the bar level of these metals has a better wealth score.
- Grog: Added a new type of alcohol to the liquid list.
- Lightning stone: Fixed the order of the dig interaction for Irrigated Plains,
which had lightning stones as a dig result but incorrectly after another item
with a 100% result in the same exclusion set. Added lightning stones to the dig
lists for the other irrigated terrains, too.
- Loader: Rearranged the inventory/room object loader for speed.
- Loading: Fixed a bug that could cause a crash during object loading, if an
item in someone's inventory was deleted while they were logged out.
- Logs: Sawing logs now gives 1 lumber instead of 2.
- Mini-pets: Fixed a bug where mini-pets were not dismissible.
- Raw meat: Added a simple cooking recipe for meat.
- Restored statuette: Changed name from lucky statuette.
- Saw: Updated saw to use object interactions instead of hard-coded items. Also
updated workforce sawing to use these interactions, instead of the older style
of workforce craft recipes. Workforce will now saw all sawable things,
including logs.
- Scrape: Updated scrape to use object interactions instead of hard-coded
items. Updated workforce scraping to use this interaction.
- Tree: Added a custom craft message.
- Unskilled crafts: Added a min/max level to some unskilled crafts including
the stone hammer, to prevent them from receiving levels outside the newbie
range (since they aren't flagged SCALABLE, this does not affect their stats).
- Wool: The "some wool" resource item is now called "a bag of wool" to give it
a keyword that is not also on "a bolt of wool cloth".

OLC:
- Adventure editor: Added a "change" option to the linking rule editor.
- Augedit, Cedit, Gedit: The "ability" option was renamed "requiresability" to
avoid name collisions.
- Buildings: Added vehicles to the ".building search" list (for interior home
room vnum) and the set of things to clean up when a a building is deleted.
Fixed building delete to also account for the upgrades of other buildings, and
object storage.
- Craft flags: Adding or removing the SOUP or VEHICLE flags will clear the
quantity and creates/liquid values — which are definitely invalid after that.
- Crafts: Add lowercase name to auditor.
- Crops: Added a full auditor.
- Editors: Removed editor display lines that just say "none" to help the
editors fit in 1 page.
- Globals editor: Globals now support a requires-ability and a percent chance
(which may be per-global or cumulative). Globals also now support 3
miscellaneous values whose use differs by type. Also now supports the Mine Data
global type.
- Map editor: Added the '.map build' command for adding buildings which don't
have craft recipes.
- Objects: Added object interactions to the list of places to check when
deleting an object. Added CREATABLE flag to auditor. Added vehicles to the .obj
search and delete functions, where they were missing. Deleting an object will
now remove it from any live resource lists, and correctly complete buildings or
vehicles if they no longer require any components. Fixed a small issue where
the ".object delete" option did not check globals currently being edited.
- Room template list: Added some flags to the -d version of the list.
- Room templates: Added vehicles as an option for room template spawns.
- Setflags: No longer logs or saves the target if no flags are changed.

PHP Tools:
- Help Viewer: Added a simple web-based interface for help files.
- Map Viewer: Added a city overlay option to the map viewer.

Players:
- Actions: Auto-recall (and other things that send you home instead of where
you were on login) now automatically stop any action you were performing.
- Class roles: Added a Solo class role. This role may have more abilities than
the group-specific roles, but they only function while the player is solo (not
accompanied by other players).
- Cooldowns: Tweaked cooldown removal to ensure players get the wears-off
message (they were sometimes hitting the mob cooldown remover, which sends no
message).
- Experience: Added a level limit where players stop being able to gain
experience from using many targeted abilities on much-lower-level targets.
- Map marks: Now save correctly through logouts and reboots.
- Slash-channels: Removed some code that was causing the order of a player's
slash channels to flip on every login.
- Sleeping: Players now regenerate health/move/mana to full in at most 60
seconds (30 in a room flagged BEDROOM) while sleeping, unless
hungry/thirsty/starving.
- Solo role: Updated the function that checks whether a player in the solo role
is really "solo". It now ignores players who are hidden (or otherwise
invisible) to the solo player, so that it can't be used to detect hidden
players. Darkness is ignored for this check.
- Timed actions: Fixed a bug where actions that should allow you to move
without canceling, weren't working since the b2.9 rewrite of the action
handler. Hunger, thirst, starvation (low blood), and the "slow" effect now make
timed actions take twice as long.
- Timeouts: Changed when the "prev_logon" is updated so that logging in a
previously-timed-out character properly fixes empire techs.

Quests:
- Command: Players can now use the quest command to interact with quests.
- Data: Added the quest_data type with file saving and loading.
- Display: People, places, and things now indicate if you can get quests from
them, or turn quests in to them.
- Group: Added the "quest group" command, which shows quests you have in common
with your groupmates, as well as their progress on those quests.
- Name: Quest names now show in color based on the player's level in some
lists.
- OLC: Added the .quest editor with all features.
- Objects: Added a requiresquest field to items. Quest items cannot be dropped
while on the quest, and cannot be obtained while not on the quest.
- Scripting: Added the %quest% command and the following character vars:
%char.completed_quest(vnum)%, %char.on_quest(vnum)%,
%char.quest_finished(vnum)%, and %char.quest_triggered(vnum)%. Also added the
Start Quest and Finish Quest triggers for all types.
- Share: Added the "quest share" command to offer quests to group members who
are in the same room with you.
- Show quests: New immortal show option to view players' quest lists and quest
trackers.
- Unquest: New immortal command that removes a quest from a player's current-
and completed-quests lists.

Resources:
- Buildings: Virtually all buildings got updates to use generic components in
their construction instead of specific items.
- Code: Merged uses of building_resource_type into the resource_data type.
Rewrote all functions that handle resources to support additional resource
types. All data storage is backwards-compatible.
- Coins: Crafts can now require coins to complete them.
- Components: Added new object fields: component type, component flags. Objects
can now be generic components, and crafts can now have component requirements.
An object matches the component requirement if it has the same component type
and all the required flags.
- Crafts: Virtually all craft patterns got updates to use generic components
instead of specific items.
- Keep: Items marked (keep) will no longer be used for crafting or building.
- Liquids: Crafts can now require quantities of specific liquids, as opposed to
just water.
- Objects: All basic resource objects — from apples to wood — got updated with
new component data.
- Pools: Crafts can now require health, move, mana, and blood points.
- Refunding: Buildings and crafting actions now store the real list of
resources used to build them, for more accurate refunding (including scale
level) if the building is dismantled or the crafting action is canceled.
Buildings only refund objects (never pools, etc) used to build them. Crafting
actions will refund the entire cost if canceled. Since this data doesn't exist
for buildings built prior to this patch, the game will attempt to give the
correct resources when you dismantle older buildings on long-running
EmpireMUDs.
- Show components: Added "show components" for immortals to look up objects by
component type, and "show uses" for immortals to look up crafts (and vehicles,
etc) by component type used.
- Type: Resource list entries now have a "type", to allow them to hold more
than just specific objects. Also added a 'misc' field with multiple uses
depending on type.
- Vehicles: Most vehicles got updates to their maintenance, to require generic
components instead of specific items.

Rooms:
- Crops: Changed how crop data is stored for rooms, to allow crop rooms to be
removed from RAM with their data stored in the world_map.
- Exits: Added a count of how many complex exits link to any given room. This
data is used to speed up room deletion and help detect when a room can be
un-loaded from memory.
- Extra data: Changed how room extra data is stored from a linked list to a
small hash, which will speed up lookups.
- Interior: Changed the interior rooms hash table to a simple linked list,
saving some memory.
- Island numbering: Rewrote the function that numbers the islands to avoid
crashes due to high levels of recursion. Rooms no longer store their own island
numbers; these are stored in the map_data.
- Map data: Added a layer of map data in an array called world_map[][] and a
linked list named land_map. This data is saved to file, and is used to store
sector and island data, separate from the .wld files and the world_table hash.
- Player-Made: Removed this room affect. Its function in allowing player-made
rivers to be filled in is replaced by checking the natural sector.
- World table: Simplified the hash handle (from the UTHash system) to use more
generic macros.

Scripting:
- %char.name%: Fixed a bug where the wrong description was used for this
variable sometimes.
- %load%: Fixed a bug where load triggers and scaling both fired incorrectly
when a vehicle loaded another vehicle. Fixed how invalid vnums are checked.
Also allowed the first argument to be typed to any length.
- %own%: Added a command for changing ownership in scripts.
- %regionecho%: Fixed a bug in the obj and vehicle versions of %regionecho%.
- %siege%: New script command to deal siege damage to rooms or vehicles.
- %vehicleecho%: Send a message to people in/on a vehicle.
- mmove: Added a new command that triggers normal mob movement.
- Add rooms: Scripts can now add rooms to buildings and vehicles (but not to
adventures).
- Buildings: Added script attachments for adding room triggers to buildings.
Added the option to attach scripts to building prototypes. The four existing
buildings that had special completion logic have been converted to use triggers
for this.
- Character getters: Added %char.bonus_*% fields. Fixed %char.block%,
%char.dodge%, %char.tohit%.
- Character vars: Added %ch.carrying%, %ch.maxcarrying%, and
%ch.vampire(on/off)%. Added %char.bonus_exp(amt)%, in addition to the quest
vars, above. Added %char.firstname% and %char.lastname% vars. Added
%char.noskill()% to check if a skill is shut off.
- Charmed: Changed the 'Fight-Charmed' script flag to 'Charmed'; it now
modifies several types of triggers including: Fight, Random, Memory, Greet,
Entry, Command, Speech, Act, Hitprcnt, Receive, Death, Bribe, Ability, Leave,
and Door.
- Cleanup: Improved detection for when a script's owner is purged, to prevent
crashes from poorly-written scripts.
- Commands: Cleaned up how the %command% syntax is parsed.
- Complete: Added a new trigger type that is called when buildings are
finished.
- Consume: Books now fire off consume triggers when you try to read them.
- Copying: Changed how trigger proto lists are copied, to be cleaner and
simpler.
- Damage: Fixed a bug where scripts could damage the dead, triggering repeat
logs.
- Directions: Scripting now supports the fore/aft/port/starboard directions.
- Empires: Added full script variable support for empires (HELP EMPIRE VARS).
Added empire getters like %char.empire% and %room.empire%.
- File saving: Changed how trigger proto lists are written/parsed in data
files.
- Finish: Added a new trigger type that fires when you finish reading a book.
- Freeing: Changed how trigger proto lists are freed.
- Load trigger: Rooms now fire the load trigger.
- OLC: Adding or removing the Global or Charmed flag to types will no longer
reset all arguments on the trigger type. Added a text warning when you do make
a change that removes the args.
- Object getters: Added %obj.size%.
- Players: Fixed a minor issues where triggers fired on login BEFORE the player
was in lookup tables.
- Reattachment: Fixed a bug where the mud would crash during startup if a saved
mob had attachment data for a trigger that was deleted while the mud was down.
- Room vars: Added %room.enter_dir%, %room.exit_dir%, %room.bld_dir()%
variables for buildings. Added %room.in_vehicle% variable, which fetches the
vehicle a room is a part of (if any). Added %room.complete% var to determine if
building is done.
- Variables: Fixed several incorrect character variables that could cause
crashes (but weren't used in any stock content).

Sectors:
- Base sector: Renamed the ROOM_ORIGINAL_SECT() property to BASE_SECT(), as the
middle type in a set of three sectors available for each map location.
- Evolutions: Changed how map rooms are evolved. Evolutions are now run on the
world_map data instead of rooms, since rooms aren't all in memory.
- Natural sector: Added a third sector value for map rooms called the natural
sector type, which is the type the tile had when the map was generated.
- Swamp: Removed the "gather" command from the commands list.

Text:
- Map generator: Updated the instructions for generating a map.
- Readme: Added a note about re-generating maps for live muds.

Tools:
- Converter: Added a playerfile converter to upgrade to tagged playerfiles.
- Map generator: The map generator will now generate crops in the jungle.

Vampires:
- Blood Upkeep: Revamped how blood upkeep is handled. It is now an apply type,
meaning it is added via affects and gear.
- Skill: Made a small change to how the Vampire skill does the change from
level 0 to 1 upon becoming a vampire, to ensure it accounts for noskill or
inability to get a new skill.

Vehicles:
- NEW: Added a new vehicle data type with full OLC.
- Auto-updater: For live EmpireMUDs, procedurally converted existing canoes,
carts, catapults, and ships to vehicles.
- Autostore: Items inside vehicles will use the vehicle's last-move-time as
their autostore timer, and will not store items if a player is present in the
room with the vehicle, in any room inside the vehicle, or is somehow not
present but leading/driving/riding it.
- Board: Updated this command to work with vehicles.
- Claim: Can now target vehicles. The inside of ships no longer ever counts
toward the empire claim cap.
- Custom messages: Crafting vehicles supports the new craft-to-char and
craft-to-room messages and the $V parameter.
- Customize: Added vehicles to the customize command.
- Decay: Some vehicles will decay each year, requiring maintenance. They have
custom maintenance lists.
- Designate: Now works in vehicles, using shipward directions (fore, aft, etc).
You can also no longer redesignate in a room that doesn't match the building's
designate flag list, preventing players from redesignating certain default
rooms. Added a new set of ship rooms to designate.
- Disembark: Updated this command to work with vehicles.
- Douse: You can now douse vehicles either targeting them in the room, or by
being inside them. Also fixed a messaging error in douse where the to-room
message was sent to the character instead.
- Drag: New command for moving some vehicles, such as canoes.
- Efind: Now also finds vehicles belonging to the empire.
- Escape: Updated escape's messages for some types of vehicles.
- Fire: Formerly "catapult", this command is used to fire a vehicle that has
siege weapons, using heavy shot.
- Get: You can now get items out of certain vehicles.
- Goto: The immortal goto command can now target vehicles, as can other
commands that use similar targeting.
- Harness: Mobs now despawn when harnessed to vehicles. Harness no longer
requires rope. Split out the unharness command as it is now substantially
different from harness and can't share code paths.
- Identify: Now also works on vehicles.
- Interiors: Ships and caravans now have default interiors created by scripts.
Updated how vehicles with interior rooms are tracked so that it doesn't rely on
a specific building vnum.
- Lead: Players can now lead vehicles, in addition to mobs (but not at the same
time). If a vehicle can't move with the player, the player is prevented from
moving. If the player is separated from the vehicle, he will stop leading it.
Some vehicles can be led through portals.
- Light: It is now possible to light vehicles on fire if you own them, if they
are unowned, or if you are at war with the owner.
- Load: The command for loading ships (formerly also called "boatload", now
also called "loadvehicle" for immortals) now loads mobs or vehicle into/onto
other vehicles. Items can't be loaded this way (use put).
- Load: The immortal load command now supports the "v" argument, as does the
scripting command %load%.
- Look: Vehicles now appear in the room, in their own list of long descriptions
between objects and characters. Looking at vehicles will show their look
description. Looking in vehicles will show their contents, if they have the
container flag. Examine will do both — exactly how it works for objects.
Looking in a direction will show vehicles (in addition to characters) in that
direction.
- Manufacture: Added the shipbuilding command "manufacture" to gen_craft, and
added portions of gen_craft that work on vehicle craft recipes, which build
over time more like buildings.
- Purge: The immortal purge command will purge vehicles when targeting them,
but does not purge them when purging the whole room.
- Put: You can now put items in certain vehicles.
- Repair: New command for fixing damage and decay on vehicles.
- Saving: Vehicles in the world now save in the obj .pack files, with room
objects.
- Scan: Now only works from inside vehicles if the room is flagged LOOK-OUT.
- Scrap: New command cancels a vehicle that's partially-built.
- Scripting: Added full support for vehicle scripting including vehicle
triggers and vehicle variables.
- Shipping: The shipping system now uses vehicles instead of ship objects,
triggered by the SHIPPING vehicle flag and the vehicle's capacity. Vehicles no
longer require an interior to function for this.
- Siege Ritual: Now also able to target vehicles.
- Siege: Vehicles can take siege damage. Their health pool is shared with their
maintenance, so vehicles can be destroyed by a combination of damage and decay.
Fully maintaining a vehicle restores its health.
- Sit: You can now sit in/on certain vehicles, including furniture.
- Stats: Vehicles now appear on stats displays.
- Transfer: The immortal transfer command can now move vehicles.
- Unload: Rewrote the unload command to remove mobs and vehicles from inside of
vehicles.
- Where: The immortal version of the "where" command can find vehicles.
- Workforce: The "fire brigade" chore now works on vehicles. Added a
"repair-vehicles" chore. Vehicle chores will trigger when in range of
workforce, not on water, and not on land belonging to someone else (except an
ally).
- ships.c: Removed now-empty code file that supported the old ship system.

== end of 2.0 b4 ==

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

== 2.0 b3 (October 20, 2015) ==

Abilities:
- Alchemist Crafts: New ability to put crafts in for this class.
- Antiquarian Crafts: New ability to put crafts in for this class.
- Artificer Crafts: New ability to put crafts in for this class.
- Bloodsword: Fixed a rare issue where a vampire's level prevents him from
using his own bloodsword.
- Butcher: No longer works on corpses bound to someone else.
- Cleanse: Changed how cleanse detects that an effect is a penalty (and thus
can't be cleansed). Instead of a blocklist of affect types, it now considers
something a penalty if it was cast by the person it is on.
- Confer: Now detects when the same effect is conferred by different people,
and does not stack it or reset its duration if so.
- Crafting: Added a new player trait, Crafting level, which determines the
level of all crafts (forge, sew, etc). This replaces total/composite level for
this function.
- Disarm: People using caster weapons will now get a mana blast attack instead
of a hit attack when disarmed.
- Disenchant: No longer works on items bound to other people.
- Disguise: You can no longer disguise while morphed, and morphing breaks
disguise.
- Enchanting: Now uses the higher of your gear level or crafting level.
- Exarch Buildings: New ability to put buildings in for this class.
- Familiar: Now uses parent skill level (Natural Magic) to determine what you
can summon again, instead of total skill level. Base Familiar ability now gives
a giant tortoise tank. Moved griffin to a class familiar. Added familiars to
each Natural Magic class; these don't require the base Familiar ability to use.
Familiars now scale to 25 levels below the player (over level 125) and continue
to scale up as the player levels up (but must be re-summoned to get a new level
familiar).
- Firstaid: Fixed a bug where firstaid could not previously be used to remove a
DoT effect if the target was at full health.
- Foresight: Fixed a bug where this ability did not gain experience while
fighting NPCs.
- Guildsman Crafts: New ability to put crafts in for this class.
- Hide: No longer works in combat (used to work, but poorly).
- Mirror Image: Fixed how the mirror scales to the player like a familiar.
- Passive/triggered combat abilities: Doubled the experience gain on all the
passive and triggered combat-round abilities and skills (such as Battle,
Reflexes, Claws, Ready Fireball, etc.) which previously gave 1% or 2%
experience gains (with bonus exp).
- Pickpocket: Stunned victims will no longer resist pickpocket in normal cases.
Added a 50-levels-under limit to pickpocket. If the target is too far over your
level, they'll even wake up to stop you.
- Portal Magic: This ability now also causes you to get only 4 minutes of
portal sickness instead of 5.
- Reforge/renew: Will no longer use items on the ground in places you don't
have permission to use.
- Smuggler Crafts: New ability to put crafts in for this class.
- Sneak: No longer sets off 'greet' triggers (but will still set off 'greet
all' triggers).
- Soulmask: Selling the soulmask ability now shuts off its effect.
- Soulsight: Removed the command lag from this ability; it's now instant.
- Steal: You can no longer steal from a building which was ceded to an empire
but never used by that empire.
- Steelsmith Crafts: New ability to put crafts in for this class.
- Summon Swift: Corrected the attack type on the stag and serpent from 'claw'
to 'gore' and 'whip'.
- Tinker Crafts: New ability to put crafts in for this class.
- Workforce: Fixed a bug where incapacitated and sleeping mobs could perform
Workforce chores.

Adventures:
- 100 Magiterranean: The Grove: Removed a duplicate trigger on one room
template.
- 102 Magiterranean: Interdimensional Whirlwind: A new non-adventure that
spawns fanciful crops on the map each month.
- 121 The Swamp Hag: Fixed a typo in the swamp rat combat trigger.
- 122 Ruins: Three Banditos: Changed how mobs spawn in this adventure to
prevent empty adventures. This uses an item from adventure 123. Fixed a typo in
a trigger name.
- 123 Ruins: Thieves: Changed how mobs spawn in this adventure to prevent empty
adventures. Updated the loot for all thieves. Changed the level range to 25-75
(from 5-100). The mobs are no longer flagged HARD. Raised the vnum cap on the
adventure to make room for future updates and for the new spawner items. This
low-level adventure now shows up on 'nearby'.
- 126 Mountain Cave: Flame Dragon: A new map-based adventure for levels
100-150.
- 127 Abandoned Dragon Nest: A new adventure that spawns a 125-175 dragon on
the map.
- 140 The Sewer: Ratskins: Added two exit triggers from zone 141 to make the
sewer exit slightly easier to use.
- 141 The Sewer: Goblin Outpost: A new adventure zone that sells unique new
crafting patterns and buildings. It also provides a level 50-100 solo combat
adventure.
- 281 Mountain Valley: Molten Fiend: Reduced the area and spam on the world
announcement. It is no longer possible to flee from the fiend.
- 282 Goblin Logging Camp: A new low-level, map-based resource/flavor
adventure.
- Cooking fire: Added a flag that lets adventure rooms have cooking fires.
- First mob healing: Fixed a bug where lock-level-on-combat adventures locked
AFTER the first hit if you opened combat with an ability instead of a normal
attack, causing the mob to heal after the first damage. Adventures now lock on
damage, not just hit.
- Instancer: Changed the order of some of the room validator checks to reduce
work. The instancer also now purges mobs when spawning an instance. Improved
how the instancer chooses locations when it has unusual constraints, such as "a
road, only in a city". It now also chooses a linking rule at random and
attempts it. Code related to instance-spawning was reworked for this. Will no
longer link instances to incomplete buildings.
- Look out: Flagged many adventure buildings and rooms so players can use "look
out" to see outside of them.
- Newbies: Added a configurable maximum min-level for adventures that can spawn
on newbie islands (default: 25). Also adding !NEWBIE and NEWBIE-ONLY adventure
flags.
- Pigeon post: Added a flag that lets adventure rooms function as post offices.
- Unclaimable: This flag no longer prevents adventures from spawning.
- Various: Fixed small scripting issues.

Books:
- Bookedit: Completely replaced the book editor with an interface that doesn't
take the player out of the game, using the OLC system.
- OLC: Added an immortal book editor.

Buildings:
- Astral Nexus: A new building that can be used to summon players.
- Bridges: You can now build other buildings facing bridges. You cannot
dismantle a bridge while it is the entrance for another building. This also
applies to any other open buildings that are built on water.
- Building flags: Added a summon-players building flag for buildings that allow
players to summon each other.
- City Centers: The game will now automatically remove city center buildings if
they become abandoned. The game will also now audit for bad city centers at
startup.
- Docks: Can no longer be built facing player-made water tiles.
- Flooded Ruins: Added the missing dismantle craft for this ruins type.
- Look out: Flagged many buildings and designated rooms so players can use
"look out" to see the map from inside them.
- Oasis: Now counts as an "open building" for the purposes of things built
facing open buildings.
- Portals: Building a portal now requires 20 nexus crystals, in addition to the
other materials. You can no longer enter a portal if you the other end of it is
owned by someone else (and not public) so that you can't enter a portal if you
wouldn't be able to return from the other side. As before, you can get around
this restriction by following a member of the empire, or by having Infiltrate.
- Roads: Unclaimed roads now decay over time. Roads still do not require
maintenance.
- Ruins: Buildings built on water now have their own ruins type.
- Trenches: Unfinished trenches will now lose progress each year until they
collapse completely.
- Tunnel: Fixed an issue where starting a tunnel did not add it to an empire's
territory list, so workforce wouldn't spawn to build it until another tile was
claimed or abandoned.

Cities:
- City claim: Now correctly checks corner boundaries. Also now supports an
"all" argument after the city name/number in order to claim all tiles, not just
built tiles.
- Delay time: Cities now have a delay until they count as cities for certain
buildings, abilities, and other systems. This is controlled by the config
"minutes_to_full_city", with a default of 60 minutes. Many uses of find_city()
and IS_IN_CITY() were replaced by is_in_city_for_empire().
- Find-by-name: Added a preference for exact matches (over abbreviations) to
the find-city-by-name lookup. This fixed a bug where it was possible to pick
the wrong city if one city's name is an abbreviation of another.
- In-city: Changed the COUNTS-AS-CITY flag to LARGE-CITY-RADIUS. Instead of a
building or road counting as in-city anywhere in the game, they now count as
in-city when within 3x the normal city radius.
- Newbie islands: Players can no longer found cities on newbie islands (this is
configurable).

Classes:
- Utility: Added the 'utility' class role to Empire and Trade classes, in part
so that people who are non-combat characters aren't sorted with other class
roles on the 'who' list. It will also allow crafters and leaders to be more
apparent.

Code updates:
- Converter: Added a b2.x ->b3.0 playerfile converter.
- Global tables: Added new global data tables. These are currently used for
global mob interactions, but will support additional uses. These reside in the
lib/world/glb/ directory.
- Permissions: Split the can_use_room() function out so that it can be checked
with an empire rather than just a character, in the form of emp_can_use_room().
- Pickpocket: All pickpocket data is now controlled by mob interactions.
- Scripting: Cleaned up the char/obj/room script variable parser, especially
the room directions.
- Slow IP lookups: Added the ability to do partial matches on IP addresses in
the "slow_nameserver_ips" list.
- Version Checking: EmpireMUD now stores the version of its last full startup,
and uses this to detect new versions and automatically apply updates to the
game.
- appear(): This function now attempts to remove affects that are causing
hide/invisible instead of merely removing the affect flags.

Combat:
- Auto-assist: Fixed a bug where characters could auto-assist while feeding
from (or being fed on by) other characters. Stunned, staked, or tied-up
characters will no longer try to auto-assist.
- Mana blast: A new attack type used primarily by disarmed casters. It has the
same speed as the basic "hit", but is a magical attack and uses Intelligence
instead of Strength.
- Slow death: Fixed a bug where players who were at 0 HP but had no health
regen (usually due to hunger/thirst) would neither heal nor die. Now they will
die.

Commands:
- Accept: A new command for accepting generic offers, or listing offers.
- Adventure: Added a new function, 'adventure summon', to the adventure
command. Players who are summoned to adventures will be returned to their
previous location if they leave for any reason (unless they trinket or teleport
away).
- Alternate: You can no longer alternate while snooping or OLC-editing.
Alternate also no longer updates the reply-to info for other players (it still
keeps your own reply-to).
- Bite: Staked or injured victims no longer resist bite.
- Catapult: Can now use rocks from the ground so long as you have permission to
use the room they're in.
- Cede: Now only targets players, not NPCs.
- Circle: Fixed a bug where NPCs were requiring and using movement points for
"circle"; they normally do not use move points to move.
- Crafting: Various craft commands will now work in rooms you don't otherwise
have permission to use, but you won't be able to use items on the ground.
- Dig: When you finish depleting a room using dig, it will now tell you so
instead of stopping silently. Will no longer find clay in quarries.
- Dismantle: Rearranged error messages to make no sense when a permissions
error and a nodismantle error happen at the same time.
- Drop: Having an undroppable bound item will no longer stop further items
during a "drop all".
- Enter: Charmed followers can no longer be ordered to enter a portal and leave
their master. Entering player-created portals now causes portal sickness. You
can portal again if you have 1 minute or less remaining on the portal sickness
cooldown. It causes 1 minute if you have no portal sickness already, or 5
minutes if you already have portal sickness. You get 2 minutes instead of 5 if
the portal is city-to-city.
- Fill: No longer requires the 2nd argument of "water" or "river"; it will
check those automatically if you are somewhere that provides water and omit the
second argument.
- Helpsearch: No longer doubles a dollar sign ($) in the user argument.
- Herd: Changed the error message received when you try to herd animals inside
adventures to "You can't herd anything in an adventure." Fixed a bug where
herding a mob you are following resulted in moving past it.
- Home set: Fixed a bug where setting a building as your home, when it was
already someone else's home, caused additional chests to appear. You can no
longer home-set while adventure-summoned.
- Home: Improved the error message if you try to home-set a home that is
already yours.
- Islands: New command to see what islands your empire has territory on.
- Load (boat): Display an error if there was nothing to load.
- Look: Added "look out", which allows you to see the map from certain interior
rooms. Immortals can use this from any room to see the surrounding map.
- Maintain: Changed the order of the error messages so you can't use it to
determine if another empire's buildings require maintenance.
- Movement: Fixed a bug where it was sometimes possible to walk away in combat,
after killing one of multiple enemies. Removed the movement delay when indoors,
which was inadvertently added in a beta 1 patch.
- Nearby: Now able to be prevented by the !LOCATION room template flag.
- Pan: A pan tool now works from either hand.
- Portal: Portaling no longer costs nexus crystals. Instead, there is a 50-tile
limit if both ends are not in a city. The "all" portal list will only show
portals in range. The normal portal list will indicate if portals are out of
range.
- Quarry: Now checks that you can still quarry each tick, so quitting and
re-entering the game does not allow you to quarry a block from a dismantled
quarry.
- Read: Added an explicit error message for read with no argument.
- Reject: A new command for rejecting generic offers.
- Retrieve: Fixed the error message when you don't have permission to withdraw.
- Ride: When attempting to ride in bat form, now gives the morph error message
instead of the flying error message, as this makes more sense.
- Roll: Added a 1000-dice-at-a-time cap.
- Roster: Now indicates class role via color or text.
- Sacrifice: Can no longer be used on items that are bound to someone else.
- Sail: Now starts/stops sailing, instead of being spammed to sail.
- Scan: This command can now target nearby tiles by name, rather than just
scanning directions.
- Ship: Added a new system for scheduling and shipping goods between islands.
It requires docks on both islands, plus a ship to move between them. Shipping
time is based on distance, and ships arrive/leave at 7am and 7pm.
- Sire: Improved the error message when trying to sire a vampire.
- Skin: Can no longer be used on corpses that are bound to someone else.
- Socials: You can no longer use socials while stunned, staked, or tied.
- Summon player: A new command that allows two players to summon a third, to an
Astral Nexus.
- Summon: Now scales the summoned npc like a familiar.
- Tavern: Using the tavern command in an incomplete tavern will now function
like using it outside of a tavern, instead of letting you change the tavern
type.
- Throw: Can no longer be used in animal form. Can no longer throw bound items
onto territory owned by others.
- Tie/Untie: These no longer work on players who are already dead.
- Toggle: Added mutual exclusions to the political, informative, and map-color
toggles. Turning on any one of those (or turning off, in the case of map-color)
should turn off the others.
- Tomb: You can no longer tomb-set while adventure-summoned.
- Tunnel: The open ends of tunnels may now face roads and open buildings.
- Unload: Will now tell you if the boat was empty.
- Where: The mortal version of this command will now find the closest valid
match, and will no longer find characters you can't see. It will also now show
the direction and distance to the target. Where will not locate characters who
are in a !NEARBY-flagged adventure unless you are also in that adventure. It
will also not work into or out of an adventure room with the !LOCATION flag.

Config changes:
- Changed default: max_map_size 12
- New (empty strings): mud_contact, mud_created, mud_hostname, mud_icon,
mud_ip, mud_location, mud_minimum_age, mud_website
- New: allow_extended_color_codes 0
- New: cities_on_newbie_islands 0
- New: hiring_builders 0
- New: hiring_coders 0
- New: max_capitals_in_name 2
- New: max_out_of_city_portal 50
- New: minutes_to_full_city 60
- New: mud_name EmpireMUD
- New: mud_status Live
- New: newbie_adventure_cap 25
- New: offer_time 75
- New: redesignate_time 60
- Removed: auto_balance_per_cycle
- Strings: Can now be empty without losing the variable.

Crafts:
- Required level: Crafts can now have a level requirement.

Displays:
- Aliases: No longer parsing color codes on the alias list.
- Bug/idea/typo: The syslog from these commands now shows color codes instead
of parsing them.
- City list: Now shows what island the city is on.
- Class role: The roles on the 'class' command are now colored, and your
current role is indicated.
- Colors: Added 7 additional basic colors: azure, jade, lime, orange, tan,
pink, and violet. Rewrote the code that reduces color codes sent to the client.
It now more reliably removes color codes that wouldn't be displayed before
sending an overriding color code. It also now handles background colors and
underlines correctly.
- Communications: Changed the color codes used in the communications code
(chats, tells, etc.) to use internal-only codes provided by KaVir's protocol
snippet (below) so that player text can't interfere with color terminators.
- Coordinates: Many places that show coordinates will now show (unknown) if
something is in a location that isn't associated with a map location.
- Emote: Fixed a double-message issue when you emote @self.
- Etalk: Prevent color leaks using internal color codes.
- Gear rating: The decimal rating of items is no longer referred to as the
item's "gear level"; it is now consistently called "gear rating".
- Get/Stealing: Using 'get' to take items off of someone else's claimed land
now checks your 'stealthable' toggle first.
- Group member death: Removed an extra CRLF after the group member death
announcement.
- Group: No longer shows coordinates if you don't have Navigation, or if the
group member is not in a room with a map location. Players who don't have
Navigation will not have their coordinates show up to group members on the
'group' status display. The !LOCATION room template flag now prevents
coordinates from appearing on a group member in the list.
- Import/export: Added the empire's mid-shipment items to the import/export
calculations.
- Inventory: Using inventory in storage buildings will now show the correct
totals including items mid-shipment.
- Islands: Increased the max line length on the islands display.
- Leaderboards: Timed out empires no longer show on the leaderboards. Also
updated how timeouts are detected and how the leaderboards are built.
- Login sequence: Fixed an issue where the number of bad password attempts did
not show if you got to the MOTD via an alternate route such as having to choose
a new bonus trait. Simplified how the login sequence is displayed to prevent
other similar issues in the future.
- Long strings: Raised the MAX_SOCK_BUF size to allow longer strings.
- Look direction: Improved the string formatter when you look in a direction so
that mobs with a comma in their name don't result in funny text like "You see
Zelkab and goblin bruiser."
- Map: Players will no longer appear on the 'political' and 'informative' ASCII
maps, where they blocked the information on the tile they were covering.
- Mapsize: If you set your mapsize to "auto", the game will now attempt to
detect the correct map size from your client. This is only relevant for the
graphical map, and does not apply to the screenreader view (which isn't
dependent upon screen size).e
- Movement: The 'fly' affect will no longer override a mob's normal movement
type.
- Poisons: Poison type will now show on identify and stat.
- Political view: Fixed a bug where large-city-radius tiles not owned by the
empire were highlighted when out of the normal city radius.
- Prompt: Moved afk and pvp to the %c conditions code, instead of defaulting
them at the beginning (idle is still forced at the beginning). Added %d for
blood-as-text. Updated the default prompts.
- Recolor: Fixed a color leak in recolored emote/socials and recolored empire
chat. Fixed the color code display.
- Resurrect: Now shows the target's real (unmorphed) name so that it will
always match the name of the corpse. Previously it might show the morphed name
instead of the name on the corpse.
- Score: Added crafting level to score display.
- Ship status: Added a missing CRLF on the "nothing" on an empty "ship status".
- Ships: You will now always see the ship icon on the ASCII map if you are on
board the ship, even if it otherwise wouldn't be shown on that tile.
- Slash channels: The player now gets an explicit join/leave message on slash
channels, in case they can't see the channel join/leave announcements.
- Stealing: Changed the order on some error messages for taking items that
aren't yours, to make more sense.
- Tavern: Giving an invalid tavern type will now give a better error message.
- Text editor: Now displays color codes in /r replacement strings, instead of
evaluating them.
- Toggles: Immortal-only toggles now highlight in yellow. Also improved
screen-reader display for toggles: they now each display on their own line in
the format "name: on/off".
- Trade: The trading post displays now show an item's scaled level instead of
its gear rating.
- Who: Now indicates class role via color or text. The who list also now sorts
by role and level. AFK is now indicated in parentheses instead of brackets, to
be consistent with other flags and so it can't be faked by a title.

Empires:
- Adjective: Fixed a bug where the adjective could have an ampersand at the
end, causing it to eat color codes.
- Auto-abandon: Split this workforce chore into three different options, for
the three chores that auto-abandon.
- Auto-balance: Removed this workforce chore; it is superceded by the shipping
system (which requires ships and docks but not workforce).
- Banner: Stricter checking on color codes in banners to avoid certain rare
issues.
- Banners: Added additional banner colors.
- Designate: Fixed a bug where designating a new room did not immediately add
it to an empire's territory list.
- Einventory: Items currently being shipped are now included in the "total"
section of einventory.
- Elog: Fixed the "elog shipping" option.
- Etalk: Fixed a bug with how the # argument targets ranks. You no longer need
to type the color codes into the rank name.
- Homes privilege: Empires can now restrict lower ranks from setting homes.
- Last login time: Fixed a bug where an empire's last login time isn't reset
each time members are updated. If an empire was past the timeout period (2
weeks) and 1 member logged in and then defected, the empire would still have
that member's login time as the empire's last-login until a reboot, even though
no current members had logged in.
- Milling: Added a workforce milling chore, which will turn any millable grains
into flours at the Mill building.
- Name: Fixed a bug where the name could have an ampersand at the end, causing
it to eat color codes.
- Newbie islands: Empires are now allowed to keep one claimed newbie-island
tile per starting location (if there are 3 starting locations, an empire can
have 3 claims on newbie islands). Empires less than 1 week old can still keep
additional claims. Additionally, the newbie island claim check is now done
every 12 real hours, not just on reboot.
- Political world map: Light and dark colors are now different on the political
graphical map. Rewrote the code that generates the map output by banner color.
- Ranks: Added a format check to ranks to ensure they terminate underline
characters.
- Redesignate: Added a 60 minute timer on redesignate.
- Secondary Territory: New building flag that marks a room as a certain type of
territory. This is applied to ships so they don't count as out-of-city
territory. Secondary territory also auto-abandons if the empire times out.
- Storage privilege: Empires can now restrict lower ranks from retrieving or
summoning materials from the einventory.
- Storage: The order of empire storage is now preserved through reboots so that
the order of some displays doesn't change.
- Territory overages: Fixed a small bug in the code that removes
outside-of-city territory when an empire is over its maximum. It was not
correctly finding the most distant tile to abandon first.
- Timeout: Added a minimum playtime to count as an empire member.
- Warehouse privilege: Empires can now restrict lower ranks from retrieving
unique items from the warehouse.
- Workforce: Added a new workforce chore: dismantle-mines. Also re-ordered some
code in the regular dismantle chore processor so that it doesn't show as
"Someone finishes dismantling" when the mob despawns before the message is
sent. Fixed a memory leak in chores. Fixed a bug in how workforce counts
resources in the shipping queue, which was blocking it from using the 25-item
limit in some cases. Workforce will no longer farm non-storable crops. Replaced
the system which the Workforce system uses to check if an empire has a resource
overage. The new system reduces the number of times an empire's resources must
be counted, and also reduces over-spawning workers when the empire is close to
its cap.

Help files:
- Binding: Updated claimed land note with correct info.
- Buff: New help file.
- Debuff: New help file.
- Douse: Added information on the fire brigade.
- File: Fixed outdated information on log parsing.
- Find Shelter: Added a list of buildable shelters.
- Inspire: Added durations.
- Light: Added more information on fire-building.
- Master Blacksmith: Clarified how this ability works.
- Master Tailor: Clarified how this ability works and removed some outdated
information.
- Mgoto: Fixed all help files that claim you can use %goto% as a script
command; this was never true.
- Ride: Added more information on the benefits of mounts, and removed some
outdated information.
- Scalable Crafts: Updated information and see also.
- See Also: Updated many see-also sections of help files.
- Superior: Added more information on how the superior flag works.
- Tabs: Removed some stray tab characters from help files, which interpret them
as the start of color codes.
- Various: Typo fixes.
- Various: Updates and contributions from Yvain.
- Wait: Removed this keyword from the command queue help, as it blocked an
important OLC help.

Immortals:
- Addnotes: New command adds a line to player notes without going into an
editor.
- Alternate: Removed the alternate cooldown for immortals.
- Error logs: Fixed a typo in the path shown in "bad index entry" error
messages.
- File: This command now shows raw color codes instead of parsing them.
- Incognito: Added a toggle that removes an immortal from the 'who' list
without making them invisible to tells, chats, and in the room.
- Movement: Fixed a bug where immortals were checked for enough movement points
to make a move, but not charged the cost of it. Immortals no longer require
movement points at all.
- Oset: New grantable immortal command can modify flags, strings, and timers of
live items.
- Prompt: Moved invis and wizlock to the new %C prompt code, which also shows
incognito and wizhide.
- Rescale: Improved how traits are preserved when an immortal rescales an item,
and merged this functionality with the code that updates items on login.
- Restore: Now removes DoT effects.
- Slay: Now ensures a mob is scaled before being slain. Also removes Phoenix
Rite from the target first.
- Stat object: Added book vnum info to the "stat" info for book objects.
- Stealing: Immortals stealing from other empires will now trigger a 'steal'
abuse log.
- Visible: This command now also removes incognito and wizhide.
- Vnum: Added books to the vnum command.
- Vstat: Added books to the vstat command.
- Wizhide: Added a toggle that allows an immortal to not appear on 'look' or
for in-room functions, but the immortal is not otherwise invisible.
- Wizlock: Removed an extra CRLF that was appended to the wizlock message when
set by an immortal, by adding one when it is displayed to new connections
instead.

Instances:
- Saving: Instance data now only saves when the world files are saved, as it's
meaningless without the associated world data.
- Unlinking bug: Fixed an issue where the home room of instances which link to
interior rooms (e.g. Primeval) would lose its HAS_INSTANCE room affect flag on
reboot. This flag is set on the home room to prevent claiming (etc).

Islands:
- Names: Island names may no longer contain quotation marks.

Major bugs:
- Ally detection: Fixed a bug where abilities like Outrage would hit your
familiar if you're not in combat already.
- Cleanse: Fixed an off-by-one error that was causing cleanse to remove the
haste affect, which is usually considered beneficial. It would also not remove
certain negative affects as a result.
- Crops: Planting crops will now preserve the original tile sector in the
ROOM_ORIGINAL_SECT field, and this is preserved through crop growth. When a
crop is harvested, chopped, or devastated, it will return to its original
sector. Previously, it always reverted to the default sector for its climate,
which prevented multiple tile types from being plantable in the same climate.
- Daily bonus experience: When the mud is down more than 24 hours, it will no
longer reset the daily experience cycle every 75 seconds for a number of
iterations equal to the number of days it was down. Instead, it will only
update once.
- DoT Effects: Fixed an issue where saving the character (even manually) was
removing all DoT effects.
- Efind: Fixed an overflow bug that crashed the game, with proper length
checking.
- Help files: Fixed a bug where no help file was found if the "best match" help
file is above the user's level. This was causing some immortal help files to
mask certain keywords on mortal help files.
- Home set: Fixed a bug where removing the NPCs from a home when you set it as
your own was causing odd memory corruption as it tried to set a value on a
non-existent territory-npc to null. This was resulting in the elog for that
home-set to be truncated, and may have reached additional memory as well.
- Import/export: Fixed a bug where items in the shipping queue were not being
counted when determining how much to import.
- Iron mines: Moved the code that calculates the 1/101 chance of gold in iron
mines. Its old location was interfering with workforce limits in a way that
caused iron miners to spawn and despawn erratically without ever mining iron
(in empires with full iron but not full gold).
- Login location: Fixed a bug where logging out on a ship (or otherwise losing
your stored location) would result in respawning at a tomb on the wrong island,
especially on a ship that has moved.
- MXP: Moved up the MXP version request in order to fix an issue where
connections sometimes didn't have the correct color code before their first
"look".
- Manufacture: Fixed an error in the order of error checks which led to a crash
if the ship was missing (hotfixed September 5).
- Newbie empire timeout: Fixed a bug where creating an empire then quitting and
logging back in while under 1 hour of playtime would show your empire as having
zero members and unable to claim land.
- OLC: Fixed a bug in the icon editor that caused a full game crash when
removing all icons.
- Resistance: Fixed an issue where the Resist Physical and Resist Magical
traits could reduce 100% of damage, not the intended 25%.
- Script damage: Damage from mob scripts including %damage% and %aoe% had a
major bug where the multiplier was applied twice. This meant healing scripts
did not work (modifier was negative) and damage scaled too low or high (25% was
effectively 6%).
- Shipping: Fixed a bug where incomplete ships could be pulled for shipping
(hotfixed September 5).
- Shipping: One ship can no longer have multiple destination islands.
- Ships: Fixed a bug where ships were never abandoned even if an empire was
very stale and long gone. They now abandon after outside territory but before
in-city territory, when the empire has timed out. Also fixed an issue where
ships sometimes counted as out-of-city territory.
- Text editor: Fixed a crash bug triggered by repeatedly trying to add text
when a string buffer is full.
- Unique storage: Fixed a bug where warehouse/vault unique storage would be
lost by an empire which merged into another empire. Also fixed a small memory
leak where deleting an empire did not free its unique storage.
- char_to_store: Fixed an issue in the error reporting on
too-many-affects-to-save.

Major changes:
- Actions: Instead of 5-second "timed action" intervals where some abilities
give you more chops/builds per tick, actions have been reworked to have
5-second timers with multiple things that can shorten the timers.
- Affects: Now tracking the caster id of all affects and DoTs.
- DoTs: DoTs will now stack per caster, rather than all players contributing to
the same stack.
- Fast-Chores, Finder, Haste, Shovel: Instead of chopping/building an extra
item per tick, these will now shorten the time interval between chops/builds.
- Haste: Now also affects dig, harvest, music (play), picking, planting, and
quarrying. (This includes haste effects from any source.)
- KaVir's Protocol Snippet: I have ported KaVir's protocol snippet to
EmpireMUD. This supports several protocols, such as MXP and MSDP (see HELP MSDP
in-game). It also supports some additional features which we are not enabling
by default, such as extended color codes. Fixed some small issues in the color
parsing portion.
- Sailing: This is now a timed action instead of a spam-directions command.

Minor bugs:
- Abandon: Abandoning a building now clears its private home owner, if it has
one, and removes the chest.
- Arson: Players with no empire can now burn down buildings that are not
claimed.
- MXP: Added MXP tags to reconnect and to two alternate login paths, to ensure
everyone gets one.
- Users: Prevent two users from having the same descriptor number on the
'users' list when the number rolls over.

Map:
- Irrigation: Irrigating desert using rivers will now create a temporary plains
type which will automatically revert to desert over time if the river is
removed. It has its own forest and jungle types, which also automatically
revert. On existing EmpireMUDs, this will only apply to tiles that irrigate
after this patch goes live. Existing tiles have the old plains type.
- Sector evolutions: Map tiles that serve as the entrance for other tiles will
no longer evolve — they are considered "managed" by the tile they are the
entrance for.

Mobiles:
- Aggro: Mobs with the aggro flag will not longer attack human NPCs inside
adventures (they will continue to attack them on the map).
- Familiars: Added the giant tortoise, dire wolf, moon rabbit, spirit wolf,
manticore, phoenix, scorpion shadow, owl shadow, basilisk, salamander, skeletal
hulk, and banshee familiars (with triggers).
- NPC spawns: Fixed a bug where interior rooms of some buildings were never
hitting the spawn-npcs code because the buildings themselves had no spawn
lists. This was preventing many homes from spawning citizens in their extra
bedrooms, although the citizens did technically live there and could be called
for workforce chores. They just never spawned at home.
- No-Attack: Added a new mob flag which indicates the mob can join combat and
run fight triggers, but will never deal a normal hit.
- Ordered: Added a new aff flag, ORDERED, that prevents some scripting commands
that were previously prevented by CHARM. This allows familiars and other pets
to have certain triggers fire even though they are charmed, without allowing
them to be ordered to do it.
- Overburdened: Mobs no longer become overburdened (but players still can't
overfill mob inventories with 'give').
- Scaling: When a mob re-scales, it will now preserve any lost
health/mana/moves, preventing mobs from healing spontaneously mid-combat if
they somehow re-scale.
- Stun: Fixed a bug where mobs heal but don't un-stun.

Objects:
- Attributes: Changed how primary attributes are checked when equipping an item
so that something with both -1 Strength and +2 Strength can still be equipped
with a net gain of +1 Strength, instead of being told you're too weak due to
the -1 Strength.
- Corpses: Now marked as 'junk' to prevent storage and trading of corpses.
- Crafter items: Added the first tier of crafter items (clockwork goggles,
guildmaster tunic, utility belt, steel multitool), bringing craft level to 200.
Also added a 2nd tier of crafter items pushing crafter level to 300.
- Crafting: Added a new item trait, +CRAFTING, which affects character crafting
level. Finishing or canceling a craft will now always give the resulting
item(s) to the character if they are take-able, rather than putting them in the
room if the character is overburdened.
- Gear level requirements: A player's highest-ever level is now stored,
allowing them to use items as if they still had that level. This fixes the
"gear cascade" where removing one item leads to more and more items fall off
every 15 minutes until you're too low level to use any of them.
- Get: Items that can't be picked up will no longer block "get all" from
continuing past them.
- Junk: You can no longer store items flagged "junk" in warehouses.
- Level requirement: Items now require that you be no more than 25 levels below
their level to use them (50 for BoP items). This applies to items over level
100, while retaining the skill level check against the 50/75/100 ranges for
low-level items. This uses highest-recent-level, so removing your gear and then
re-equipping it within 15 minutes should not prevent the re-equip.
- Low attributes: If your attributes drop too low to use some of your gear, but
you are morphed, it will no longer fall off right away. Morphs still need the
strength to use additional items, but won't automatically stop using existing
ones.
- Nexus crystals: This item now stores in the Tower of Sorcery instead of the
Portal.
- Rescaling/refreshing: Items no longer lose custom strings when rescaled or
refreshed by the object loader.
- Saddles: The find-best-saddle algorithm now prefers saddles bound to the
player over ones that are similar in level but not bound.
- Scaled level: All items now receive a scaled level based on what mob dropped
them or which crafter made them. This includes items whose stats are not scaled
(items which lack the SCALABLE flag).
- Sealskin leggings: Corrected a typo.
- Shipping: The shipping system should now better-detect if a ship is already
full, to prevent it from blocking other ships.
- Ships: Now have capacities for use with the storage system. Items on ships
will not despawn while mid-shipment.
- Shovel: Now works from the sheath slot, if the shovel can be sheathed.
- Steel multitool: Corrected the craft type in its description.
- Stock items: Added a set of "miscellaneous reward" items in the 9900 block.
- Tier 2 crafting patterns: These patterns are now dropped by any group (or
boss) mob in the 175-250 level range, using a global loot table.
- Trading Post: You can no longer post items for sale if they have the 'junk'
flag or if they have a decay timer (e.g. lights).
- Trinkets: Updated the trinket scripts with handling for 'adventure summon'.

OLC:
- !LOCATION: New room template flag for adventures that are not associated to
their map tile. This flag hides coordinates and changes how 'nearby' and
'where' perform.
- Adventures: These now have scripts, but they only support the Adventure
Cleanup room trigger type.
- Apply: Added the ".apply change" option to objects.
- Auditors: Added auditors for adventures, buildings, and room templates. Also
added sub-auditors for spawns, interactions, and extra descriptions. Improved
the existing craft, mobile, and object auditors.
- Build crafts: Added a "not player made" build-on flag that blocks building on
player-made rivers, etc.
- Buildings: Added a NEED-BOAT flag for buildings.
- Custom messages: Added the ".custom change" option to objects.
- Evolutions: Added NOT-ADJACENT and NOT-NEAR-SECTOR evolution types. Added the
".evolution change" option to sectors.
- Extra descriptions: Updated extra descs to use ".extra change" to be
consistent with all other options.
- Global tables: Added a full OLC suite for new global interaction tables.
- Icons: Added the ".icons change" option. Fixed a bug in how icon lengths are
counted based on counting color codes. This also affected how icons are
displayed when they contain &&&&.
- Interactions: Fixed a small bug where the interaction percent would accept
"0.1" but not ".1".
- Lists: Added the -d detail option to the .list command.
- Map editor: Added the '.map build' command for adding buildings which don't
have craft recipes.
- Map output colors: Added additional color options for sector/crop output
color.
- Object auditor: Now checks for multiple bind flags as well as any loot
quality flags.
- Room template list: Added some flags to the -d version of the list.
- Ruins: Added '.map ruin' to instantly ruin a building.
- Sector editor: Fixed bug where lower-level builders could not edit sectors
even when flagged with permission.
- Setflags: No longer logs or saves the target if no flags are changed.
- Spawns: Added the ".spawns change" option.
- Special icons: Added the @. special icon code to represent the roadside icon
for the base sector of the current tile.
- Storage: Added the ".storage change" option to objects.

PHP utilities:
- map.php: Added support for additional colors.

Players:
- Gear level: Changed the calculation for player gear level. Instead of using
the sum of the gear ratings of items, it now computes the average scaled level
of equipped items (some slots count as more, others as less), with a bonus for
superior/hard/group items. The gear level is 50 higher than this average, minus
100 so that total level comes out to 50 higher than the average equipped item.
- Levels: Players now store highest-known-level and last-known-level instead of
highest-recent-level and recent-level-time. The who and whois commands now
always show current level instead of highest-recent-level. Highest-known-level
is only used to determine whether gear can be used or not. Existing EmpireMUDs
will not have last-known-level data for existing players until they log in
again, so zeroes on roster and show-account are normal until then.
- Names: Added a config option that restricts the number of capital letters
that can be in a name. This defaults to 2.
- Offers: Added a new system where players can have generic short-lived offers
processed by the accept and reject commands. Offers only exist while the player
is in-game and expire on logout.
- Timed actions: Fixed a bug where actions that should allow you to move
without canceling, weren't working since the b2.9 rewrite of the action
handler.

Scripting:
- %actor.is_name(str)%: New character name matching function.
- %dot%: Fixed a bug in the object trigger version of %dot% where the argument
order was wrong, leading to unpredictable results. Also added support for a
"max stacks" parameter.
- %echoneither%: Added a new script command that sends a message to all but two
people.
- %instance.mob()%: Added a new way to look up an instance's copy of a mob.
- %item.is_name(str)%: Changed how item names are matched to match other code
functions.
- %regionecho%: Now auto-capitalizes the line like other script echo commands.
- %room.building% – New getter for building name of a map or interior room.
- %room.crop% – New getter for crop name of a map room.
- %room.direction(target)% – New getter for the direction from one location to
another.
- %room.distance(target)% – New getter for map distance between two locations.
- %terracrop% – New script command for terraforming to a crop type.
- %terraform%: Added a new script command that changes map tiles.
- // – Added remainder operator (can't use % because it's used by variables)
- Adventure Cleanup: A new room trigger type that is called on a room after an
adventure is removed from it.
- Command triggers: Improved how command triggers process to better hit
abbreviations without blocking the wrong command.
- Crafting level: Added %actor.crafting_level% variable.
- Damage: Fixed a bug where scripts could damage the dead, triggering repeat
logs.
- Instance variables: Added %instance.start% and %instance.location% variables.
- Mob script commands: These commands are now prevented by the ORDERED effect
instead of CHARM.
- Room owner: Added %room.empire_adjective%, %room.empire_id%, and
%room.empire_name% getters.
- Trigger saving: Triggers now properly save to their items, mobs, rooms, etc.
— instead of needing to be re-attached after every reboot.
- Triggers: Added a Fight-Charmed mob trigger type that will fire in combat
even if the mob is charmed.
- cancel_adventure_summon: New character command to prevent a player from being
teleported back to their previous location, e.g. after trinketing.
- ~=: Fixed a bug in the ~= operator.

Sectors:
- Desert: Updated the desert-to-grove evolutions to create less grove-dense
deserts.

== end of 2.0 b3 ==

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

== 2.0 b2 (July 21, 2015) ==

Abilities:
- Ancestral Healing: A new Luminary class ability which adds your Greatness to
your Bonus-Healing.
- Blood Fortitude: Changed damage computation for 10% damage reduction from
being floored to being rounded.
- Bloodsweat: New Reaper class ability removes poisons.
- Bloodsword: Raised the cost on this ability. It now scales better with the
level of the player.
- Cleanse: Added a blocklist of affects that cannot be Cleansed, because it was
able to remove certain penalties and effects: Manashield, Vigor, Mummify,
Deathshroud, death penalty, and war delay.
- Colorburst: Updated the to-hit penalty from Colorburst. The cost now also
scales with level.
- Confer: A new Werewolf class ability that lets the user temporarily sacrifice
Strength to give himself or others a buff.
- Crucial Jab: New Bandit class ability adds a debuff to jab.
- Cut Deep: Raised per-proc experience from 1 to 10 (with bonus exp).
- Daywalking: Now skills up any time you are outdoors, not just out on the map.
- Diversion: New Smuggler class ability. This is an AoE debuff.
- Dragonriding: A new ability on all Empire classes that allows the use of
flying mounts.
- Earthmeld: Added a cooldown starting when the player un-melds.
- Enchant: Now prefers exact name matches over partial matches.
- Enchant Armor: Added enchantments for dexterity, resist-magical, and to-hit.
- Enchant Weapons: Added a dodge/parry weapon enchantment.
- Endurance: Now doubles only the first 1000 health, then gives +25% of the
remaining health.
- Familiar: Rewrote this ability to allow players to choose which familiar to
summon.
- Fastcasting: A new ability on all healer classes which lowers command lag on
non-combat spells (including heals) by 0.1 second per 3 Wits. It also removes
the combat speed bonus from Wits (so you can't have both effects at once).
- Find Shelter: The mountainshelter can now be built facing mountains.
- Finder: Now skills up at the end of abilities instead of at the beginning.
- Fly: Players who have both Fly and Ride can now use flying mounts without
All-Terrain Riding.
- Foresight: Updated the dodge bonus on Foresight. Raised the cost to 30.
- Heal: Raised the amount healed by level, and tied the cost to the amount.
Heal also now tells you how much you healed and how much health your target has
now.
- Heavy Armor: Lowered to level 75 to reduce the firm need for Battle on
tanking classes, if people want to get creative. No longer has pre-requisites.
- Howl: New Shadow Wolf class ability. This is an AoE debuff.
- Infiltrate: Now allows you to enter portals (using the 'enter' command) even
if you don't have permission to use the room they are in.
- Inspire: Updated the inspire options and their levels, which now scale with
Greatness. You can now inspire yourself for half-effectiveness. Inspire now
lasts 30 minutes on empire-mates and 5 minutes on everyone else.
- Light Armor: Renamed from Leather armor. No longer has a pre-requisite.
- Mage Armor: Renamed from Cloth armor.
- Master Craftsman: Renamed "Master Potter" and applied Master Craftsman as the
mastery ability for the Woodworking branch, in addition to the Pottery branch.
- Master Survivalist: No longer requires that you can see the attacker.
- Medium Armor: Lowered to level 50. Medium armor is now a hybrid dps/tank set
that's also good for PVP. No longer has pre-requisites.
- Mirrorimage: Fixed a bug where mirror images can heal up to huge health
pools, as only their current health was lowered on creation. Raised their
maximum health to 100 but prevented overhealing.
- Noble Bearing: New class ability for Dukes reduces damage by an amount equal
to Greatness.
- Quick Block: Now gives +10 or +10% of level, whichever is better (at class
level only; at lower levels it still only gives +10).
- Refashion/Reforge: Fixed a bug where these commands could remove object
bindings.
- Reflexes: Now provides +5% Dodge as a specialty ability and +10% Dodge as a
class ability, with a +10 (flat) Dodge minimum at all levels.
- Resist Poison: Now causes your physical damage resistance to be applied to
poison damage, rather than causing a 50% reduction in poison damage.
- Reward: Now gives +5 bonus exp instead of +1 skill point.
- Ride: If a player loses All-Terrain Riding, they will no longer be able to
mount a flying mount they had already stored.
- Ritual of Burdens: When you lose this ability, it will now wear off
immediately.
- Sage Werewolf Form: Added +1 Strength to this form, to be used with Confer.
- Sap: No longer able to target people who are already stunned.
- Savage Werewolf Form: Removed the health bonus and increased the mana penalty
in this form.
- Shadow Jab: New Shade class ability adds a debuff to jab.
- Shadow Kick: New Assassin class ability adds a damage debuff to kick.
- Shadowcage: New Occultist class ability. This is an AoE debuff.
- Shadowstep: Changed how targets are validated so that this command can't be
used to check for the existence of mobs anywhere at no cost. Players can no
longer shadowstep to an NPC who belongs to another empire, or who is on land
belonging to another empire. Now checks the stealthable flag and empire stealth
permission. Also fixed a bug where you could shadowstep out of no-teleport
rooms.
- Siege Ritual: Now triggers hostile status. Now able to target open buildings
as well as closed ones.
- Sparring: Now provides +5% To-Hit as a specialty ability and +10% To-Hit as a
class ability, with a +10 (flat) To-Hit minimum at all levels.
- Stagger Jab: New Powerbroker class ability adds a debuff to jab.
- Steal: You can no longer steal from your own empire.
- Stunning Blow: Raised per-proc experience from 1 to 10 (with bonus exp).
- Taste Blood: Removed the animal/human info. It now only mentions if the
target is a vampire. The animal/human info was unpredictable and usually
confusing.
- Terrify: No longer blocked by the mob being blind. Replaced this ability's
stun with a debuff to physical and magical damage.
- Towering Werewolf Form: Added +1 Strength to this form, to allow it to use an
additional piece of -Strength gear. Increased the mana penalty in this form.
- Ward Against Magic: New class ability for Barbarians and Reapers allows them
to block magical attacks at 50% of their normal block rating.

Adventures:
- 101 Magiterranean: The Hidden Garden: A new craft/crop adventure with no
combat and 4 unique items.
- 120 Red Dragon: Fixed a typo in the charm's look description.
- 122 Three Banditos: Fixed two kill scripts.
- 125 The Goblin Challenge: Fixed typo in keywords on Zelkab's gauntlets.
Changed the timepiece and necklace generic drops from BoP to BoE. All BoE items
in this adventure also gained the GENERIC loot flag. Removed the built-in
(superior) flags on loot items. This is replaced by the drop-scaling change
below. Fixed the long description on the goblin champion. Added an
%adventurecomplete% command to the warg spawn death trigger, to fix an issue
where spawning the warg prevents completion.
- 140 The Sewers: Ratskins: Fixed a typo in the waste that flows slowly past.
- 160 The Tower Skycleave: Fixed a typo in Celiya's trigger text. Fixed a
script typo that lead to error logs. Updated another script, which used the
now-outdated SOAK affect type. Corrected the word 'otherworldy' in the long
description. Corrected a typo in the Goblin Cages (2) room description. Fixed
the buy message at the shop. Added a missing keyword to the experimental
handrwaps. Lowered the payout on the pixy races to prevent an infinite money
exploit. Fixed two kill scripts. Fixed the name of the iris reagent in the
shop.
- 161 Portal to the Primeval: A new adventure for levels 75-100 with hunting,
tracking, skinning, and crafting. This adds several new craftable items in the
100-125 level range.
- 170 Hamlet of the Undead: New 175-225 adventure.
- 200 Burrow Canyons: Applied missing INFRA flags to mobs. Fixed the keywords
on the pears, which had "tree" but not "juicy".
- 201 Mill Manor: Added missing keywords to the caretaker. Updated the text in
the mage's journal (book id 24) to correct some typoes and to add a hint for
the reminder text. Also fixed keywords on the dorsal spine mace. Added missing
bind flags to items. Also fixed the wear locations and added missing -1 Wits on
the Titanaconda scale trousers. Also fixed an issue in its linking rule that
resulted in it blocking off its own exit.
- 281 Mountain Valley: Molten Fiend - A new, short group adventure for the
200-250 level range.
- All stock adventures: Updated most armor and any items that used to give
+soak with new stats. Updated the loot drop rates and loot exclusion sets on
many NPCs with the new interaction exclusion system, generally raising overall
loot drop chance slightly.
- Confusing random exits: Added an adventure option that prevents the instancer
from trying to logically match random exits.
- Instancing: The instance linker will now check if it needs a certain
direction inside, before picking that direction for the building to face. This
keeps instances from blocking their own exits. Fixed an off-by-one error in the
instancing code where the first valid location for an adventure could not be
picked, and adventures with only one valid link point could not spawn.
- Must-Fight Triggers: All stock adventures with must-fight triggers on mobs
have been updated to ignore invisibility and blindness using Leave-All
triggers.
- Not-near-self: New adventure linking option prevents adventures from spawning
too close to other copies of the same adventure. Applied this option to all
included adventures except 100 The Grove.
- Player limits: Resurrecting someone from a corpse now correctly checks
instance limits.

Buildings:
- Apiary: No longer lists storage commands in its commands line.
- Critters: Reduced the spawn locations for small critter mobs.
- Damage: Incomplete buildings now have only 50% the hitpoints of finished
ones. Damage is now reset on incomplete buildings by adding more resources to
them.
- !delete: New building flag prevents auto-deletion during homeroom check on
startup.
- Dock: Added 'unload' to list of commands.
- Experience: The build action now grants experience per resource added plus a
little bit at the end, rather than only a lump sum at the end.
- High Temple: Updated the description, which came from a time when all temples
faced North, and which really misused the word 'magnanimous'. Added HALL and
TUNNEL designate flags, as it had none.
- Smokehouse: Can no longer be burnt down when you light a fire inside to make
smoked foods. Also now has a cooking fire of its own.
- Quarries: Workforce was incorrectly using the wrong, higher depletion limit
on quarries.
- Stable: No more than two of each type of NPC will now stay in a stable.
- Training Yard: Changed the build recipe from 'training yard' to
'trainingyard' to be consistent with all other buildings.

Code cleanup:
- Affects: Added data for storage of a caster id for affects, for future
development.
- Command lag: Replaced inline use of WAIT_STATE() in most places to the new
command_lag() function, which takes a "lag type" to allow abilities to modify
the lag time on some types of commands. Also removed all remaining uses of the
deprecated WAIT_STATE() macro in favor of GET_WAIT_STATE().
- Converter: Added a playerfile converter program specifically for b1.x -> b2.0
updates.
- is_fighting: Provided a new function that determines if a character is being
attacked, in addition to whether or not he is attacking.
- Playerfile spares: Moved spares used in b1.* to permanent locations.
- Shear: Rewrote shear to use an INTERACTION_FUNC.
- skills.c: Moved two functions that were in the wrong section of the file, and
ordered the switch statement for abilities. These appeared to have been missed
in the alpha cleanup.
- Skin: Rewrote skin to use an INTERACTION_FUNC.
- util: Fixed the order of libs in the util Makefile.in because some systems
are pickier about argument order to the compiler.

Combat:
- Autokill: When fighting a hard/group/boss mob, it's no longer possible to
incapacitate them by shutting off autokill.
- Blind: Now applies a flat -50 to Block, Dodge and To-Hit if you can't see
your target.
- Block: Removed diminishing returns and reworked block to have a predictable
cap based on the mob's level. Block also has an absolute maximum chance of 50%.
Removed the 5% base block chance (block now relies more on gear).
- Dexterity: Reduced the hit/dodge modifier for Dexterity from 10 to 5; the
to-hit and dodge traits now make up a larger portion of hit chance.
- Dodge: Reworked the entire dodge formula to create a real Dodge cap. Updated
the help file to explain better.
- Hit chance: There is now an absolute minimum to-hit chance of 5% so long as
the character is at least equal to the victim in level.
- Hostile flag: Attacking a person who is PVP-flagged or marked as hostile will
no longer mark you as hostile as well.
- No-attack: If a person gains an !ATTACK flag mid-combat, it should now remove
them from combat.
- PVP flag: Attacking a familiar will no longer result in empire hostility when
the master is PVP-flagged. Guards will no longer auto-assist players who are
using the PVP toggle for consensual player-vs-player combat.
- Resist-Magical, Resist-Physical: Added physical resistance, which reduces
physical and fire damage by up to 25% based on the amount of this trait, with
the cap based on the level of the attacker. Magical resistance works the same
but for magical damage.
- Siege Attacks: You can no longer besiege a starting location (e.g. with a
catapult).
- Soak: Removed the soak trait.
- To-Hit: Reworked the entire to-hit formula to create a real Hit cap. Updated
the help file to explain better. There is now a minimum 5% chance to-hit for
players and 25% chance to-hit for mobs, so long as they are within 50 levels of
the victim.

Commands:
- Alternate: Now echoes a "Name has left the game" to the room when it removes
the old alt.
- Bathe: No longer allows NPCs to attempt to bathe.
- Bite: Will no longer allow you to bite dead people.
- Build: You can no longer work on building when the building is burning. When
a building catches fire, it will stop building progress.
- Butcher: Now shows the room what you got from butchering.
- Catapult: Now triggers hostile status.
- /check: You can now see which slash-channels another player is on with you.
- Chop and mine: Now both use weapon dps, not raw damage, as modifiers on chore
speed. This slows both chores down slightly.
- Chop: Increased the chop speed contribution from weapon damage. Chop now has
members-only permissions, rather than guest permissions. This means you can't
chop on an allied or public tile.
- Circle: Now has normal movement lag, and correctly checks if the player is
overburdened.
- City: Clarified the invalid-terrain error for founding a city.
- City found: Added a list of sector flags which block city found, fixing a bug
in founding a city on a crop.
- Command lag: Changed the base command lag from 1.1 seconds to 1.25 seconds,
to allow for abilities that lower it (e.g. Fastcasting).
- Confirm: Now correctly shows "shutdown" or "reboot" based on which type is
scheduled.
- Demote: No longer allows you to demote someone who is above your rank.
- Designate: Removed armor storage, which was outdated.
- Dismantle: You can no longer dismantle burning buildings. When a building
catches fire, it will stop dismantle progress.
- Dismiss: Can now be used with the syntax "dismiss familiar" to dismiss yours
anywhere in the world.
- Drop: Fixed a double-error message on "drop all.item" when you have no
matches.
- Eedit rank: Now accepts - and ' as valid rank characters.
- Einv: Rewrote the einv command completely because the previous version did
not correctly handle cases where an empire had storage on more than two
islands.
- Enter: Entering portals now has normal movement lag. You can no longer enter
a portal if you don't have permission to use the room it's in.
- Exchange: No longer shows the same coin amount twice, instead of the correct
amounts.
- Exits: Now acts the same in an open building as it does anywhere else on the
map.
- /f: Updated the string formatter to ignore color codes when determining line
length.
- Feed: Vampires can no longer feed blood to players who are dead.
- Godhistory: Fixed minimum level requirement, although this command was
useless to mortals anyway.
- Grants: Fixed the order of grants in constants.c because some grants were
misaligned.
- Herd: No longer works on mobs marked aggressive, group, or hard.
- Identify: Fixed an incorrect stat on food, where hours of fullness was
divided by 15.
- Import analyze: Now shows all empires, not just trading partners.
- /join: You can no longer join a slash-channel with no name.
- Junk: Fixed a bug where junk was checking some 'drop' limitations like
bound-items-in-claimed-rooms and room capacities.
- Keep, unkeep: Added a way to prevent items from being included in "all" and
"all.name" commands like drop, put, give, sacrifice, junk, and store.
- /m: New version of /l in the string editor gives the current buffer with
parsed color codes (default is to show the raw codes).
- Mine: Increased the mine speed contribution from weapon damage.
- Mint: The mint command will correctly cancel the minting action if you're
already doing it, rather than just saying it cancels it.
- Pledge: Fixed the argument parser, which dropped fill words like 'the' and
incorrectly only took 1-word arguments.
- Portal: Portals over 50 map tiles in distance now cost 1 nexus crystal per 75
tiles, rounded up. No longer shows incomplete portal buildings on the list.
- Rescale: Now preserved "keep" flags.
- Sacrifice: No longer works on no-take items.
- Sail: Added the missing "from" in the ship-sails message.
- Sayhistory: Fixed an issue where socials were adding extra linebreaks.
- Scan: Now works on ships.
- Show: The 'show islands' option now includes the islands' names.
- Slay: Now correctly accepts the 'slay' grant.
- Specialize: This command no longer grants an additional skill reset.
- Toggles: No longer allow NPCs to use toggles.
- Toggle stealthable: This new preference blocks you from accidentally
stealing.
- Tomb: Can now be used to unset your tomb while dead.
- Trade: The trading post no longer allows you to post stolen items.
- Trade list: Rearranged where coins are displayed so it's "actual (exchange)
empire" rather than "actual empire (exchange)" and added an indicator if you
cannot use the item.
- Warehouse: You can no longer warehouse store stolen items.
- Wear all: Fixed a bug where gear slots that have more than one slot, like
neck, weren't cascading when a player typed 'wear all'.
- Weave: Will now show "nothing" when you can't weave anything.
- Who: Allow the who command to target by empire name, show invis level even on
the shortlist, and updated its help file and syntax.
- Workforce: Added the "workforce where" option to see how many chore NPCs are
working.

Core changes:
- !AGGRO Islands: New island flag allows full disabling of guard towers and
aggro mobs.
- Interactions: Replaced the 'exclusive' interaction bit with an interaction
exclusion set identifier (char). Exclusion sets now use a cumulative roll,
rather than rolling for each interaction in the set. Only one interaction from
each exclusion set can fire. The file format does not change; interactions
previously marked exclusive are now part of exclusion set 'X'. Updated
interactions that required it for this system. The run_interactions() and
run_room_interactions() functions were changed to support this. Rooms that run
any successful interaction from one source (e.g. sector, crop) will no longer
run any other sets.
- Islands: EmpireMUD now stores meta-data about islands including names, and
computes their locations.
- Newbie Islands: Empires over 1 week old(configurable) cannot maintain claims
on newbie islands through reboots. Auto-abandons from this will show up on the
elog.
- Stuns: When a character enters combat, all stun effects will break
immediately. This does not apply if the character was already in combat when he
became stunned.

Crops:
- Plantains: Added plantains as a base crop for jungles, as the code supports
jungle crops but had none live. These won't spawn in the wild using the current
version of the map generator, but the code requires at least one valid crop for
each location.

Displays:
- Abilities: Moved up the "you must purchase the ability" message ahead of
other errors. Fixed the plural in the "not enough energy" message for
abilities, which showed on "forage" as "You need 1 move points..."
- Auto-assist: Corrected the word "aid", which was written "aide".
- Biting: The message shown to the room no longer says "she has his fangs...".
- Consider: Added more clear level and difficulty info, and added notes if
hit/dodge are too low. Consider now also scales the mob first to get a better
measure of its power.
- Daily skill points: This feature has been renamed "daily bonus experience
points" to help make it less confusing for new players.
- Death: Fixed the death message when a person dies on his own rather than from
a killer. Tweaked the death message slightly to make it more apparent what has
happened.
- Diplomacy: Fixed a typo in a diplomacy empire log.
- Disarm: Corrected capitalization in an error message.
- Dispel: Fixed target of the no-affliction error message's gender.
- Distrust: Automatic distrust now logs the name of the player who triggered
it, to that player's empire only (the enemy doesn't see which player it was).
- Ellipses: Found all remaining places where ".." is used either as an ellipsis
or a typo, and fixed them.
- Empire: Privileges are now shown on the top empire rank, just like all the
others, on your own empire's detail.
- Empire population: Fixed a bug where killing an empire NPC would not update
the population count right away.
- Familiar: Added missing linebreak to the list, and added a note in the
unlikely event the person has no available familiars.
- Heal: Removed double-error messages in heal friend and heal party, when you
haven't purchased the correct ability.
- Incapacitation: Fixed a typo in the incapacitation message.
- Info: Fixed note on regen, which said it was per-hour. Also fixed the /newbie
channel info.
- Logins: No longer show slash-channel joins on logins.
- Look at character: Long description now automatically has a color terminator.
- Map PCs: Fixed a display error when two players from different empires are in
a room together on the visible map; the wrong character in the <oo> was being
colored for the second player.
- Newbies: Added a mortlog indicating a player is new to the game.
- No-Dismantle: Now appears on the 'look' display even when the location is not
claimed.
- Oasis: No longer shows 'fillin' on its command list.
- Order: Fixed a misspelling of schizophrenia.
- Pickpocket: Removed extra line break in two pickpocket messages.
- Pour: Fixed a typo when the container is empty. Also fixed a case where the
typed-in argument is used instead of the short description.
- Prompt: Added the %r prompt code for immortals to see the template/sector
vnum they are in. Added a trailing space to the default prompts. Removed a
trailing space that was added to some, but not all generated prompts.
- Public logins: Added a config option that changes the mortlogs on
login/out/alternate into empire logs, allowing more privacy for logins and
logouts. The "switch" message for alternate is only shown if both alts are in
the same empire.
- Rejuvenate: Fixed a typo in the to-character message.
- Roster: Fixed a bug where the (online) tag was applied if the member's name
is an abbreviation of someone who is online. Also loading live data for level
and class where possible, rather than using outdated saved data.
- Score: To-hit and dodge now include all available modifiers instead of only
showing value from gear/affects. Now shows skill level in parentheses after the
total level.
- Score: Fixed the length of the bottom divider.
- Show player: Now shows the host a user created from.
- Show stats: Added account stats (total, active, this week) to show stats.
- Socials: Worked on the custom color coding issue and cleaned up some color
code sends, but there is still a bug where an extra line is added to
sayhistory.
- Stat character: Fixed a display bug where the wrong person's dexterity was
subtracted from dodge rating. Now shows the host a user created from.
- Stolen items: The tag (STOLEN) now appears next to stolen items in lists,
until their stolen timer expires.
- Summon Humans: Changed the order of error messages to make more sense.
- Survey: Now indicates which island you are one.
- Stroke: Fixed a $s that should have been $S in this social.
- Weather: Typo fix.
- Weave: Added missing linebreak when you don't know how to weave anything.
- Who: When using the 'who' command with no visible players, an uninitialized
string was displaying. Now shows max players today and max players this uptime.
- Whole source update: Thing has been gracious enough to go through all of the
help files, readmes, combat messages, and code. He has fixed a large number of
typoes, some going back as far as the CircleMUD base.

Empires:
- Changeleader: New eedit option allows the current leader (or an immortal,
administratively) to change the empire leader. The old leader keeps his/her
rank but the new leader is always promoted to top rank.
- Rogue: Players who perform hostile/stealth actions while not a member of any
empire will now gain the 'rogue' flag. This flag is visible on the who list and
lasts longer than 'hostile'. It is otherwise identical in function.
- Ruined cities: Added an elog when a city is abandoned as ruins, due to having
no non-ruined buildings inside of it.
- Traits: Updated how empire trait changes log to the empire log.
- War: It now costs coins to go to war with another empire, with the cost based
on the difference in composite empire score, rising parabolically until it hits
a score difference of 50. Minimum and maximum costs are set in configs
war_cost_min and war_cost_max. Players can view the cost to go to war on the
empire detail page.
- Workforce: Added a maximum resource cap for workforce that is not
island-dependent, but instead related to the number of players in the empire.

Game Balance:
- Blind/Darkness: Being unable to see your opponent no longer negates dodge and
block. Instead, you now get a 33% block, dodge, and to-hit penalty when you
cannot see your opponent.

Help Files:
- Ancient/Alchemist: Fixed a keyword issue between these two class help files.
- Attributes: Added maximum level. Added help files for the bonus physical,
magical, and healing attributes.
- Barbarian: Corrected "Battle + Stealth" to "Battle + Survival"
- Block: New help file for the block trait.
- Blood: Removed an invalid # line that was blocking the blood points help
file.
- Boost: Mentioned the bonus boost at high levels.
- Buildings: Added building costs to all building help files. Added notes to
the help files of buildings that always count as in-city territory.
- Catapult: Corrected help file.
- Channels: Added notes on the default slash-channels.
- CHAR-VAR: Removed outdated exp() variable.
- Chop: Updated help file with info on how to chop faster.
- Circle: Updated information.
- Cities: Added information about city auto-abandonment to the city help.
- City: Fixed bad color code.
- Class: Fixed Smuggler class in main class help file.
- Colors: Updated the keywords to include ampersand (&).
- Command: Added a note on more powerful mobs.
- Commerce: Updated building help files from the Commerce ability to show
resource costs.
- Cooking Fire: Improved the help file and gave it the FIRE keyword.
- Crypt: Added to special rooms list for Great Hall and Portcullis.
- Debuff types: Added notes to many abilities to indicate which debuff
immunities affect them.
- Demote/Promote: Changed the word 'level' to 'rank' in these helps.
- Designate: Corrected 'storage' to 'store room'. Added castle annotation for
crypt.
- Devastation Ritual: Added better information on what happens to the
resources, and added keywords.
- dg_affect: Updated help file with more relevant examples.
- Diplomacy: Removed outdated info from the help file.
- Draw: Rewrote out-of-date help file.
- Dodge: New help file for the dodge trait.
- Eartharmor: Updated the help file with more information.
- Excavate: Added info on desert trenches.
- Guard Towers: Removed outdated information on forests, and cleaned up the
last few paragraphs.
- Guides: Added more references to the various help guides, from related help
files.
- Finesse: Added more info to help file.
- Forge: Corrected item costs.
- Forts: Removed several outdated reference to forts.
- Great Monuments: Updated building icons.
- Health, mana, and move: Updated the help files on these pools to give more,
better information about how they grow over time.
- Info: Added "consider" and "identify" to the info page.
- Infra: Added a help file for the INFRA effect, which appears on items and
spells.
- Inspire: Clarified move cost.
- Jewelry: Clarified costs.
- Leatherworking: Fixed the name of the shoes craft.
- Level controls: Fixed the #e level help file level control to mean 'gods'
rather than 'approved players' and added #f for approved players. #e was
already used on help files meant for gods and no help files are currently
restricted to approved players.
- Levels: Updated the skill level information. Removed conflicting keyword on
HELP SKILL LEVELS.
- Load: Corrected argument order on boat load help.
- Maintain: Added decay notes.
- Manashield: Updated info on things that modify the size of the effect.
- Mine: Updated help file with more info.
- Mkill: Fixed ambiguous help file.
- Mob attacks: Added a proper list of mob attack types.
- Mortlog: Fixed usage syntax.
- Powerful staves: Removed outdated stats from help file.
- Pyramid: Fixed color code and removed erroneous room count.
- Quick Draw: Added more info to help file.
- Regenerate: Fixed blood costs.
- Resurrect: Removed conflicting information on corpses.
- Ritual of Sense Life: Added missing alias to help file.
- Ritual of Teleportation: Updated help file with a note saying you can't use
it on claimed land that you don't have permission to use.
- Rivergate: Clarified the behavior described.
- Ruins: Added decay notes.
- Scripting: Updated character variables with some missing options.
- See also: Updated the see-also for some helps.
- Shear: Corrected cooldown time and added 'shearing' keyword.
- Show: Added usage notes and cleaned up help file.
- Solar Power: Added a note about how it improves with level.
- Spacing: Standardized the spacing on the usage/command lines of help files.
- Statue: Fixed paste error in resource line.
- Summon Humans: Added blood cost.
- Summon Materials: Added text describing the vault restriction.
- %teleport%: Removed 'portals' from the keyword list for this help.
- Territory: Split the territory help file into two helps, as it had two
concepts crammed into it. Also clarified the section about outside territory.
- Tips: Added some new tips to the list.
- To-Hit: New help file for the to-hit trait.
- Toggles: Fixed a typo in the hassle section.
- Tower of Sorcery: Added missing designate note for skybridges.
- Trees: Added better notes on tree depletion and growth.
- Triggers: Updated several help files that needed correct ampersand escaping.
- Typoes: Fixed various typoes in help files.
- Various: Typo fixes.
- Wake: Added a note that it can be used to wake other players.
- Wolf Form: Fixed a typo in the help file.

Immortals:
- Abuse: The immortal abuse log for dropping items for mortals now also
mentions which mortal is present.
- Create: Immortals can no longer use the god 'create' command for free unless
they have the 'load' grant or are Co-Implementor level.
- Drop: Added location to the drop abuse logs.
- Editnotes: Now syslogs when an imm saves notes.
- Eedit: Fixed a bug where imms with global eedit access were getting
rank-checked against the empire they were trying to edit.
- Empire detail: Immortals can now see the empire creation timestamp.
- Forgive: New immortal command cures hostile flag, pvp cooldown, rogue flag,
and defect timer.
- Hostile: New immortal command marks a player as hostile.
- Instances: Fixed a typo in the "instance nearby" immortal command.
- Island: New immortal command lists and manages islands.
- Restore: Immortal restore now correctly sets skill level.
- Screenreader flag: Fixed a typo in the immortal stats display for
screenreader, which marked it SRCNRDR.
- Set skill: Now correctly clears abilities when the new skill is lower than
the old skill, rather than higher.
- Stat object: An object's look/action description now shows on the immortal
'stat' command. Now shows interactions.
- Stat room: Now shows island name.
- Util clearroles: Added an immortal utility that clears all class roles and
class abilities, to make it easier for players to get class updates.
- Util islandsize: New immortal utility command that shows the tile counts of
all islands.

Items:
- Applies: Fixed a bug where the MAX-MOVE apply was adding to the user's
current move pool twice.
- Arctic crafts: Added missing BOE flags on craftable arctic items.
- Armbands of Power: Fixed typo in look description.
- Armor: Updated virtually all armor items in the game with corrected stats
based on the current armor paradigm. Lowered item scaling bonuses from armor
types.
- Autostore: Unique items left on the ground will now autostore to warehouse
storage, if possible, rather than staying as clutter. Added a new !AUTOSTORE
item flag that causes some items to be ignored by autostore. Applied this to
furniture.
- Auto-updates: Added a configurable option that will cause items in player
inventory, empire inventory, room packs, and on the trading post to auto-update
when loaded if the version is changed. Existing .obj files are
backwards-compatible.
- Barley: Can now be created by the gods.
- Block: Altered the amount of BLOCK that appears on scaled items. This will
allow for block on more items overall, instead of stacking high block values at
low gear levels.
- Blood: Drinking blood no longer makes you less hungry.
- Bloodsword: Added a look description.
- Bound items: When left on the ground outside a private house, bound items
will now be destroyed after one week (real time). They will no longer preserve
on the ground forever.
- Cabin Tent: Fixed a typo in the building description.
- can_wear_item: Fixed an off-by-one error where it was saying "You must be
skill level 50 to use this" when <= 50.
- Carts: Fixed a bug where a cart (or other pullable) could be teleported to
the animal that was pulling it if they got separated.
- City mob drops: Applied correct max levels on some items dropped by city
mobs, so that players don't receive over-scaled versions of common items.
- Cotton: Replaced the "coming soon" description.
- Custom eat messages: Added support for custom strings on food items.
- Decay: When an item decays while it contains coins and is in a player's
inventory (or equipment), the coins will now process properly instead of going
to the inventory as an item.
- Dodge: Raised dodge scaling level on items slightly.
- Dragon scale: Fixed a typo in the short description of the dragon scale item
from the Red Dragon adventure.
- Foods: Added about a dozen new food items and recipes from the builder port.
Added kitchen and larder storage locations for foods that were missing them.
- Iron Blades: Added iron versions of the shovel and hammer.
- Flint stone: Updated the description to have the correct command for making
the flint set.
- Gear score: Adjusted the raw value of gear score on items across the board.
This is a change to the reported gear level, not to scaled attribute values.
- Grave marker: Added its impermanence to its look description. Fixed the build
recipe, which required the wrong object.
- Health: Raised max-health scaling on items slightly.
- Intelligence potion: Fixed a typo in the long description.
- Letheian icon: A new Master Pottery item that grants a skill reset.
- Lightning staff: Fixed the "lighting" typo in three kill and miss messages.
- Magic Frost damage: Fixed a typo where the 'magic frost' damage type's normal
speed was 3.3, not 4.3 (its fast is 4.1 and slow is 4.5).
- Nexus crystal: New item crafted from any of the four colored magical gems,
using Portal Magic. This item is stored at portal buildings and is used to open
portals.
- Overburdened: Instead of automatically dropping items when overburdened,
characters are now prevented from moving (simple move, enter, board,
disembark). Removing equipment no longer drops it to the room if your inventory
is full.
- Pan: Added the TOOL-PAN obj flag and converted the panning system to use this
flag instead of a vnum. Updated the stock pan.
- Ram's shield: Corrected the look description, which appeared to have been
copied from the kite shield.
- Rocks: Corrected the list of functions in the look description.
- Saddles: This gear slot no longer affects player's gear level.
- Scaling: Added new HARD-DROP and GROUP-DROP flags which boost item scaling by
1.2x and 1.4x, respectively (combined, 1.68x). These flags are set
automatically when an item is dropped as loot by a hard/group mob. Also added
GENERIC-DROP flag to block those other two flags on generic loot.
- Sealskin: Removed the keyword 'large' because this item was conflicting with
the regular large skin on both keywords.
- Sealskin leggings: Updated the craft name to correctly match the item.
- Sharp tools and hammers: Commands that require a sharp tool or hammer now
check wield, hold, and both sheaths.
- Shovel: Added the TOOL-SHOVEL obj flag and converted dig/excavate code to
check for flag instead of vnum. Updated stock shovels.
- Soak: Updated all items that gave Soak bonuses.
- Splint Vambraces: Corrected a typo in the long description.
- Stone hammer: Raised damage slightly, as it's a non-scalable item. Was
incorrectly requiring Basic Crafts. Also fixed a bug where it scaled too high
(it should not have been scaling).
- Stake: Now storable in the utility shed again.
- Trinkets: Now require that you be standing, not sleeping.
- Uncollected loot: Added a new object flag that will cause loot from dead
creatures to decay even on claimed land, if it is never picked up by a player.
- Wear cascade: Added wear location cascade data to the wear_data array and
converted the wear code to use it.
- Wheat: Fixed the line that said it could be milled into "flower".
- Wolverine fur cap: Now correctly scales.

Major bugs:
- Alternate: Was not checking the account ID correctly on characters not on any
account. You can no longer alternate while editing text.
- Build: Barriers were counting as open spaces for building entrances.
- Burning: Buildings with players inside when they burned down were triggered
infinite loops due to late extraction.
- Chant of Druids: Noskilling Natural Magic will now block this chant from
rewarding skill.
- City Found: Stopped several chore actions in the room when a city is founded,
as this may be the source of actions processing on rooms that don't have valid
results for them.
- Class abilities: Changed how class abilities are applied and removed so that
players do not end up with an outdated set of class abilities, or a class
ability that should have been removed.
- Coins: Fixed a crash bug when the game attempts to charge misc coins to a
player who only has empire coins.
- Distrust from stealth/hostility: Fixed an issue where an empire could become
distrustful with itself, although this had no real meaning.
- Divide by zero: Fixed several places where health/move/mana having a max of 0
would trigger a divide-by-zero segfault.
- Docks: Fixed a bug where players without swim could not enter an unfinished
Docks (or other land-based water building).
- Earthmeld: Some parts of a character were visible in the room when using a
no-see-in-room effect like Earthmeld, due to an improperly placed return.
- Editnotes: Fixed a crash bug in aborting editnotes.
- empty_obj_before_extract: Fixed a bug where a carried item that was emptied
(e.g. by Butcher) called the wrong property and triggered a full crash.
- Follower limits: Players were able to override the NPC follower limit in
several ways. NPCs over the limit will now attack their master.
- Hammers: Fixed a crash bug in the b1.8 hammer change.
- Heal-per-5: Moved the code to the correct place after affect wear-off to
prevent a bonus tick on this affect.
- Health, Move, Mana: Fixed an issue where people able to class below skill
level 75 were seeing huge health/move/mana pools until 75, then dropping back
to 50/100/50.
- Helpsearch: Fixed an overflow issue that really easily crashed the game.
- History: Fixed a crash bug triggered by specific items in the history. Also
fixed its CRLF detection.
- Homes: Deleting a character who had a private home no longer results in a
permanently claimed home marked "someone".
- Infiltrate: Fixed a bug where some players could avoid the members-online and
other stealth checks.
- Interactions: Fixed a bug in b1.8 where non-exclusive interactions were being
treated as mutually exclusive.
- Interactions: Room interactions were always running on the room the character
is in, which was causing a bug in using Devastation Ritual to harvest crops.
- Mob tagging: Fixed a bug where logging off at the right time could result in
untagging a mob.
- Names: Fixed the name validator, which was incorrectly checking for invalid
names.
- Nameserver lookups: Added an option to disable hostname lookups on a per-IP
basis in order to prevent the need to turn off hostname lookup due to one slow
nameserver lagging out the mud.
- Ocean pool: Removed the ocean pool system entirely. It was the cause of a
memory leak which is easily fixed, but that also means the mud has been running
well without the ocean pool functioning.
- OLC: Fixed an issue where low-level immortals trying to edit adventures in a
particular way would cause a full crash.
- Permissions: Fixed a bug where allies could sometimes qualify for
members-only permissions.
- Room templates: Fixed a crash bug caused by null room template descriptions.
- Scripting: Noskill will now block scripts from granting skill gains or
setting skill higher.
- Scripting: Raised the size of the ID space for mobs and rooms in the
scripting system by 10x in order to delay the major fallout that occurs when
they run out of IDs. This will need a larger fix, but on the beta server at
least, 1m IDs took 2-3 days to run out, so 10m should be good for over a week
even on a busy game.
- Slash-channels: Prevented non-alphanumeric and unprintable characters from
being used in slash-channel names.
- Steal: Fixed a bug where some players could avoid the members-online and
other stealth checks.
- Study: Noskilling High Sorcery will now block study from rewarding skill.
- Trade: Fixed a bug where the cancel and check 'trade' subcommands could cause
a crash in the event that there is a purchased-but-uncollected item in the
list.
- Workforce: Finishing chopping, mining, building, or dismantling for a
workforce mob will no longer block it from despawning.

Miscellaneous:
- Shutdowns: The SIGHUP, SIGINT, and SIGTERM signals now trigger a graceful
shutdown instead of a rapid exit.
- Socials: Large number of text fixes in socials, mostly from Steel.

Mobs:
- Aggressive: Mobs flagged AGGRO will now correctly attack citizens (and, in
fact, will attack any human NPC that isn't also aggressive).
- Aquatic: Mobs with the aquatic flag can no longer move on land (unless they
are flying).
- Auto-herd: Mobs who are tied up or incapacitated will no longer auto-herd.
- Autokill: Mobs flagged HARD or GROUP will now autokill (animals usually
don't).
- Blood: Very low-level mobs now have much lower blood pools.
- Bodyguard: Added infravision so bodyguards can assist in dark rooms.
- Charm: Players may no longer give items to charmed NPCs. Charmed mobs can no
longer pick up items.
- Chimpanzees: Are no longer flagged as HUMAN.
- Critters: Added despawn triggers to tiny critters like mice and spiders.
- Emperor of Penguins: Corrected this mob's gender.
- Fin Whale: Corrected typo in long description.
- Gorillas: Are no longer flagged as HUMAN.
- Ground squirrel: Removed hyphen in name.
- Harnessed animals: Fixed a bug where it was possible to move a two-animal
cart while the second animal is in combat; the animal would break combat and
move.
- Loot: Fixed the 'exclusive' interaction flag for loot, which was ignoring it.
- !LOOT flag: This flag now also blocks pickpocket.
- !NPC building flag: This flag no longer functions if the building is
incomplete.
- Scaling: Raised scaled attributes, damage, and health on high-level mobs in
general. Raised to-hit on DPS mobs and dodge on tank mobs. Lowered mob dodge
overall.
- Summoned mobs: No longer able to drop any loot.
- Tagging: Group members who aren't present will no longer automatically tag a
mob. This prevents items from binding to group members who aren't present in
order to bypass the BoP system.
- Wolf: Fixed a typo in the wolf's environmental trigger.
- Workforce: Fixed an issue where the brickmaking chore might spawn a mob when
there is no work to do, in rare cases.

New configs:
- auto_update_items 1
- bound_item_junk_time  10080
- long_autostore: Reduced default to 720 minutes, from 3 days.
- max_chore_resource_over_total 25
- newbie_island_day_limit 7
- npc_follower_limit 6
- num_duplicates_in_stable 2
- public_logins 0
- rogue_flag_time 1440
- summon_npc_limit 5
- war_cost_max 50000
- war_cost_min 5000

OLC:
- Exits: Added a 'change' option for the room template exit editor.
- Interactions: Added a 'change' option for the interaction interface. Fixed a
display bug in adding interactions.
- .map terrain: Removed the extra comma at the start of the terrain list.
- Objects: Fixed a bug in the object auditor where poisons were dropping
through to book audits.
- .removeindev: Added a new OLC command that removes all in-development flags
from a zone or vnum range.
- Resources: Added a 'change' option for the resource list in the craft editor.
- Room template spawns: Added a 'change' option.
- Storage: Object storage locations will now preserve their list order when
opening an object editor. They were inverting the order each time, causing
meaningless changes to the files.

Optimization:
- Instancer: Adjusted the limits on the instancing code in order to prevent
crippling lag.
- Room saving: Skip island lookup on boat rooms, which do not require an island
id anyway.

PHP:
- map-viewer.php: Added 'p' and 'g' shortcut keys to the map viewer page, for
toggling political mode and the grid.

Players:
- Deficits: Added a deficit system for health, mana, and move. This prevents
them from going negative and the deficit will decay as the player regenerates
normally. If they re-equip items while the deficit is present, they will not
get the full boost to their current h/v/m. However, this feature is disabled in
2.0b2 for further testing and fixes with morphed players.
- Health, Move, Mana: Adjusted the way these traits rise with level so that
players start gaining them as soon as they pass skill level 75, with a class.
Previously, they might take several levels more to start rising.
- Promo codes: New characters are now prompted for promo codes when they
create, to help track ads and traffic sources.
- Skill level: Replaced the skill level computation completely. Players are now
considered skill level 100 when they have two level-100 skills and one level-75
skill. All lower levels are now based on percentage of progress to that.

Scripting:
- Blood: Added %actor.blood()% which returns current blood or adds/removes
blood.
- Character variables: Added is_god and is_immortal.
- Color codes: Fixed an issue where color codes starting with ampersands were
getting eaten by the script parser.
- Counterspell: Added %actor.trigger_counterspell%.
- Damage: Raised scripting damage.
- Leave-All: Added a new mob trigger type that ignores inability to see the
player.
- %load%: Added the instance_obj_setup step to the %load% command to ensure
portals loaded by scripts get the correct target.
- Messages: Script messages will no longer be sent to sleeping players.
- Poisons: Added %actor.resist_poison% and %actor.poison_immunity% getters.
- Position: Added %actor.position% getter for character position.
- Resources: Added a 'change' option for the resource list in the craft editor.
- Room template spawns: Added a 'change' option.
- Rooms: Added a room template vnum getter, %room.template%.
- Skill names: Added %skill.name()% to get the full name of an abbreviated
skill.
- Skill resets: Added %actor.give_skill_reset()% function.
- Skill validation: Added %skill.validate()% for verifying user input.
- Text parsing: Fixed an issue where some scripts could miss text parsing and
be unable to use the %str.car% and %str.cdr% in some cases.

== end of 2.0 b2 ==

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
