ACEmulator Monthly Report – March 1, 2019 – April 1, 2019

ACEmulator / ACE:
7 authors have pushed 131 commits to master
253 files have changed
22,358 additions
3,479 deletions
View Pulse

Notable Changes:

  • Added Chess. Much thanks and credit to Anahera for originally authoring this code!
  • Added Tailoring. Much thanks and credit to Phenyl for originally authoring this code!
  • Added support for Asherons’s Benediction and Augmented Understanding
  • Added support for Aetheria
  • Added support for Luminance augs
  • Added support for Enlightenment
  • Added preliminary content for Friend and Foe monthly patch
  • Added landblock spawns from Friend and Foe patch
  • Updated monster corpse looting permissions – after the top damager finishes looting, other players may loot
  • The fellowship ‘disband’ button when clicked by non-leaders no longer acts as a ‘leave’ button, as per retail
  • Added option to enable/disable DoT messages
  • Updated PKLite messages to match retail
  • Improved jump with low stamina
  • Updated War Magic spell projectile and resisted messages to match retail exactly (this was causing a delay in vtank between spellcasts)
  • Added Monarch/Patron/Vassal prefixes to allegiance login messages, updated colors
  • Added support for Encapsulated Spirit
  • Added alternate currency for vendors
  • Appraised items on housing hooks now show the details on the hooked item.
  • Ensure monsters have a targeting tactic
  • Updating burden from ammo / spell component usage
  • Support AdvocateItem changing/updating Radar Blip Color in similar fashion to retail servers.
  • Improved handling for edge cases for refreshing spells w/ augs
  • Additional ratings added to appraisal panel
  • Updated spell info, added spells for item sets
  • Added spell procs / cast on strike
  • Added support for item leveling
  • More visual updates for dye recipes
  • Updated barber shop
  • Additional checks for built-in weapon spells
  • Added rare timers
  • Added fellowship names to player appraisal panel
  • Ensure prior container is closed before opening a new one
  • Added Natural Resistances for players
  • Adjusted trained skill check for reading magic scrolls
  • Added the ability for player to use all Augmentation Gems
  • Cleaned up welcome message / server mtod
  • Added RNG ratings to Summoning essences
  • Disabled the portal messages to match retail
  • Added Void Magic scrolls and Summoning essences to loot generator
  • Added support for Magic Professors
  • Updated spellcasting / healing movement check messages to match retail
  • Updated salvaging result message


  • Network stability:
    fixed bug causing disconnects due to NAK requests being ignored.
    fixed bug causing session to enter an unspecified state after connect request packet sent to the client is corrupted in transit
    fixed bug during handshake causing defunct session to linger
    fixed bug whenever a bad handshake occurs causing crash
    added asynchronous verification of encrypted CRCs
    added checksum caching to ClientPacket
    added handling of trusted packet with ClientSentNetErrorDisconnect flag
    added parsing of optional “flow” header data
    added more network logging
    removed “generational ISAAC” debugging tools


  • Improved allegiance data sync
  • Added IsBusy checks to healing and recipe crafting for vtank
  • Change action that occurs for selling items to vendors so they appear in the buy window if they aren’t destroyed on sell.
  • Prevent selling objects (via drag-drop on vendor) that vendor doesn’t accept in its MerchandiseItemTypes field. These same items would red-circle using traditional drop into panel method.
  • Set minimum for hotspot cycles. Prevents hotspot of doom (HotspotCycleTime == 0)
  • Added /teledungeon command for Sentinels / Admins
  • Additional fixes for decal crashes when entering Portals, and around Holtburg
  • Added IOUs for EmoteType.Give w/ missing wcids
  • Emote skill check: ranks -> current
  • Updated Active flag and chest logic
  • Improved spell duration logic
  • Update Logout to include server population and limits when character list is resent.
  • Updated @acehelp and @acecommands to not be individual messages, so not to be broken up by other chat spew.
  • Added @pop command — Tells you how many players are online.
  • Added @telereturn — Teleport a character to their previous position saved when using @teletome.
  • Added @watchmen command — Displays accounts of a specific access level.
  • Added @finger command — Displays information about a character and/or account.
  • Better organization and restructuring for -Patches folders (now grouped by date)
  • Additional error messages for allegiance swearing
  • Added local broadcast range to spell words
  • Revised indoor fellowship distances
  • Continued refactoring of HandleUseOnTarget
  • Exclude Burden in CreateObject messages for Creatures.
  • Update Player Description Event to reflect WeenieType and HasHealth accurately and not hard-coded values.
  • AddWorldObjectInternal fix
  • Changed TrackObject to only send Selectable child objects wielded by their parents (No more oversending of everyone’s complete equipables)
  • Improved ‘out of missile ammo’ animation state / feedback
  • More consistency for create lists and moving items to corpses
  • Consolidated pyreals in death messages, added corpse_destroy_pyreals server option (defaults to true / end of retail)
  • Added some missing types / info to login
  • Enqueue action message cleanup
  • Cleaned up UseWithTarget and GameMessageInventoryRemoveObject
  • Changed the way Name property is handled with regards to + (Admin/Sentinel characters)
  • Set up basic path to support replicating accesslevel changes on to existing characters
  • Added @pk command
  • Revise @cloak command
  • Loot Generator refactoring / organizing
  • Added LanguageInfo to DatLoader (0x41 in client_local_English.dat)
  • Added improved feedback when issuing invalid console commands or using incorrect syntax
  • Exclude GamePiece from saving to Shard DB
  • Corrected DatDatabaseType values
  • Changed account authentication to use BCrypt
  • Added configurable BCrypt WorkFactor for password hashing
  • Update Shard DB Enchantment Registry composite key
  • Additional null checks for allegiances and fellowships
  • Added passwd and set-accountpassword commands for self-service password changing and admin-only override password changes
  • Added migration coding to support migrating from previous SHA512 Hash/Salt method to BCrypt
  • Script for Updating Auth database added to default passwords to BCrypt
  • Added /teletome command for admins
  • Added substates to initial player broadcasts
  • Added system for reusing dynamic guids. The database is now queried for guid fragmentation on startup, with support for recycling guids during the game


  • Fixed some issues with CombatPet aggro
  • Fixed a bug with vitae not expiring
  • Fixed a salvaging bug with Green Garnet and Mahogany items
  • Fixed Gear Knights being literal buttheads. (Their abdomen was being swapped with their heads)
  • Fixed CharGen issue for Dual Wield characters. 2x Melee Weapons are created if Dual Wield is trained or specialized
  • Fixed a bug where crafting components were being removed from the shortcut bar on usage
  • Fixed a bug where players could cast spells from inside portal space
  • Fixed Holtburg sentries running in circles
  • Fixed chests stuck in open state
  • Fixed Cow Tipping Quest
  • Fixed scroll usage in vtank
  • Fixed a bug with items in chests sometimes appearing incorrectly in client
  • Fixed an outdoor->indoor visibility bug
  • Fixed a bug with run backwards state / jump frozen bug
  • Fixed a bug with spell trap durations
  • Fixed a bug where enchantments from items were being cleared on death
  • Fixed vendors to handle 0 value items properly in buy/sell
  • Fixed an invisible player bug when players re-enter visibility to an unmoving player
  • Fixed a bug with dropping items from scatter generators


To contribute to bug reports or simply check out the progress, log in to Coldeve via Thwarglauncher.

Join the Coldeve discord –

ACEmulator Monthly Report – February 1, 2019 – March 1, 2019

ACEmulator / ACE:
5 authors have pushed 77 commits to master
243 files have changed
19,134 additions
16,737 deletions
View Pulse

Notable Changes:

  • All ToD Updates from Lifestoned are now in
  • Added Linux installation instructions
  • Added house deeds
  • Added house purchase requirements w/ config options
  • Added checks to ensure monsters can damage target
  • Added no-log landblocks
  • Added logic for locked doors openable from behind
  • Added heritage augs
  • Fix wield issue with TwoHanded weapons.
  • Updated item dispel
  • Pack space is checked before selling items at a vendor
  • Improved CoinValue property
  • Improved EncumbranceVal and Value properties
  • Added enchantments for items wielded by monsters / NPCs
  • Updated allegiance rank, config properties
  • Added house maintenance + config options
  • Adjusted augs and slots armor
  • Added magic-absorbing shields
  • Add functionality to support Mana Forge Chests in the LootGenerationFactory
  • Adjusted imbue chance of success
  • Housing permissions sync improvements
  • Added squelches
  • Changed GetMaxDamage() for better scaling of damage levels for tier increases and weapon types
  • Changed GetArmorLevel() to GetArmorLevelModifier() for better scaling of armor increases, based upon the default armor level from the armor item weenie, for loot tier increases
  • Items added to the world via the admin command /create no longer decay
  • Updated ClothingPriority, create list selection
  • Updated CoverageMask
  • Added RNG create lists
  • Landblocks load their resources async again
  • Improved the FindByObject() function to include objects WieldedByOther
  • Added caching to a couple more WorldDB housing functions
  • Cleaned up the WorldObject OnLoad, OnAddItem, OnRemoveItem code and flow
  • Changed GenerateTreasure to check for null DeathTreasure and de-duped generate code so that items weren’t generated twice upon death.
  • Monsters now Destroy() on death, removing them from the database if they persisted (possibly from /create)
  • Added centralized damage calculation function
  • Start refactoring LootGenerationFactory.cs code
  • Add support for spawning Treasure pile corpses when data indicates it should.
  • Enable basic functionality for InqOwnItems in EmoteManager
  • Update EmoteType.DirectBroadcast to support “@You must wait %CDtime to collect the again.”
  • Modify LootGenerationFactory to support the TOD updated weenies
  • Added synchronized ServerObject loading for non-adjacents
  • Improved handling for offline houses
  • Write locks on WorldObject property dictionaries are only taken when the property is actually set
  • Introduce ObjectGuid recycling into ACE
  • Added jsminify for config commenting
  • Added server logic for the remaining player-configurable options
  • Fixed an exception for PropertyManager when requesting the value of a property that didn’t exist in the database
  • Fixed array indexing in LootHelper ( array indexes begin with 0 )
  • Fixed exceptions in LootGenerationFactory
  • Fixed an issue with TOD monsters spawning with low health
  • Fixed Shadow Armor quest
  • Fixed an infinite loop when using a mana stone that didn’t have enough mana to fill up all the items in need
  • Fixed a bug where splitting/merging stacks modified the StackSize in the wrong direction

ACEmulator Monthly Report – January 1, 2019 – February 1, 2019

ACEmulator / ACE:
5 authors have pushed 127 commits to master
366 files have changed
44,716 additions
9,061 deletions
View Pulse

Notable Changes:

  • Completed the remainder of the Training Academy! This includes quests, special vendor, NPCs, and granted items.
  • Added remaining Allegiance features:
    • TeleToMansion
    • Allegiance chat channels
    • Allegiance mansion / villa permissions
    • Bindstones
    • Allegiance names
    • Allegiance officers / titles
    • Allegiance message of the day
  •  Major Inventory Refactor
  • Updated EmoteManager to support Kill Task type quests
  • Added all of the Epic/Legendary cantrip spells
  • Added messages for unaffected PK targets
  • Added shop generators for vendor
  • Improved enchantment layering, and refreshing for item spells
  • Improved cooldown interface
  • Added heritage damage ratings
  • Added TOD spells: Augmented Understanding, Facility Hub Recall
  • Added FailProgressCount support for monster logic
  • Added cooldown enchantments
  • Added /hslist (housetype) to show list of available houses.
  • Improved generator heartbeats
  • Removed Burden field from portal appraisal
  • Added Shade/Palette to Vendor ItemProfiles
  • Improved corpse looting permissions data storage
  • Allow rot for generated items
  • Ensure monsters spawn on walkable slopes
  • Improved scatter generators
  • Added support for swapping dual weapons between hands
  • Improved handling of unknown spell ids
  • Separated out magical, non magical, and mundane items from loot generation.
  • Corrected some quest items that were appearing in random loot.
  • Corrected Spells ID’s in spell tables.
  • Updated chests so that it would cast their spell if they have a spell DID.
  • Added falling impact damage
  • Added text message for mana pool usage
  • Added player movement checks for spellcasting
  • Added scribing abilities
  • Added monster targeting tactics
  • Improved chest generators
  • Improved built-in spells for casters
  • Refactored the core object ticking architecture for improved performance
  • Updated EmoteManager for support for TOD data
  • Added LastUnlocker for chests
  • Added dot_duration to spell table
  • Added fellowship spells
  • Added vendor services, and vendors casting spells
  • Added summoned portal ties
  • Added server persistence for spellbook filters
  • Added physics simulation for corpses. This fixes corpses getting stuck in walls
  • Improving portal recall
  • Added /fillcomps persistence to server
  • Added instant vital updates for fellowships
  • Improved allegiance XP passup
  • Added adapters to convert between different data formats (json)
  • Added loot sharing to fellowship system
  • Improved monster navigation between indoors / outdoors
  • Refactored the salvaging system
  • Improved EmoteManager timing
  • Switching to NonCombat when dequipping / swapping ammo
  • Added Pathwarden chests
  • Added gem activation requirements, and cooldowns
  • Added enchantments for Hermetic Link / Void, Spirit Drinker / Loather
  • Added the remaining wield requirement checks
  • Added cantrip imbues
  • Added vendor handling for unsellable items
  • Added max missile range
  • Added proper handling of KillTaunts
  • Added imbues to damage formulas: Critical Strike, Crippling Blow, Armor Rending, Resistance Rending
  • Changed the way recall/summon portal magics work
  • Updated EmoteManager to use TryCastSpell and differentiate between CastSpell (with windup motion) and CastSpellInstant (without windup motion)
  • Updated Portal to process Portal emotes post teleport (successful portal)
  • Added Blackmoor’s Favor gem
  • Updated base Atlan Weapons
  • Added summoning XP, refactoring XP granting for consistency / common methods
  • Added built-in spells to casting items
  • Added handler for EmoteSet.Refuse for NPCs
  • Added LocalBroadcastRange for chat messages
  • Improved monster CombatManeuvers w/ multistrike weapons
  • Porting AllegianceManager to use the new PlayerManager interface
  • Massive cleanup of ObjectGuid usage through the system
  • Improved enchantment layering
  • Removing deception check from assessing NPCs
  • Added handlers for drop/destroy-on-death items
  • Added Buy/Sell/Close vendor emotes
  • Improved monsters returning to home position
  • Updated Readme for additional clarity w/ installation instructions


  • Fixed a bug where many players were crashing around Holtburg / Town Network
  • Fixed Asuger Temple for Elysa’s Favor Quest
  • Fixed prices for vendor trade notes
  • Fixed a bug where Mattekars couldn’t be hit with high attacks
  • Fixed armor coverage in slots inventory
  • Fixed monsters alerting unattackable friends
  • Fixed house permissions w/ basements
  • Fixed a bug where Mattekars couldn’t be hit with high attacks
  • Fixed some issues with auras cast from multiple sources
  • Fixed Oswald’s Dirk Quest
  • Fixed spell projectiles not working in Black Dominion dungeon
  • Fixing monster corpse spawn bug
  • Fixed an issue when trying to pick up a stackable that you already have a partial stack of
  • Fixed an issue with ConsumeFromInventory not consuming 1 item
  • Fixing monsters with thrown weapons and shield
  • Fixed double-linked trapdoor switches

ACEmulator Monthly Report – December 1, 2018 – January 1, 2019

ACEmulator / ACE:
5 authors have pushed 85 commits to master
312 files have changed
11,064 additions
4,275 deletions
View Pulse

Notable Changes:

  • The emulator now has 100% of the player skills available!
  • Added complete Summoning player skill system!
  • Added full set of Essences. These are currently linking to existing monsters in the game
  • Added support for monsters fighting other monsters
  • Added support for different aggro profiles for mobs
  • Added ACE.Adapter project for supporting Lifestoned json data importing
  • Adding initial reload animation to atlatl combat
  • Upgraded RecipeManager, added Tinkering and Imbues to crafting system
  • Adding house portals / dungeons
  • Added support for mansions
  • Updated food consumables for spellcasting
  • Improved healing other target distances and animations
  • Improved item spell handling for NPKs and monsters
  • Added skill checks for assess person / creature
  • Added support for monsters using multistrike weapons (properly)
  • Removed EdgeSlide property from monsters. Now they will jump down from ledges to chase the player
  • Added complete PKLite system
  • Added config option for PK-only servers
  • Server admins can change the PK status of the server via /modifybool pk_server true|false
  • Added hollow weapons, and unenchantable items
  • Added house guest and storage permissions, open/closed, hook visibility, and boot system
  • Improved monster AI for ranged spellcasting and sending alerts to nearby friends
  • Monsters will now return to their starting positions if they wander too far away from home
  • Added ‘Aura Other’ spells to 16PY-Patches
  • Updated LootGenerationFactory with item updates
  • Improved per-animation attack frame timing for players and monsters
  • Added lifestone protection system
  • Added instant updates to player health bar changes for selected target
  • Adding sticky melee distance to charge attacks
  • Added full PVP damage formulas / calculations for physical combat
  • Improved corpse system, added /corpse, /permit, /consent
  • Improved corpse looting permissions system – now adds player /permits
  • Improved housing system
  • Improved /tele <mapcoords> and minimap click teleporting
  • Added SetMaxVitals to Player on level up
  • Updated LootGenerationFactory for standardized RNG methods
  • Improved resiliency for Command parser
  • Added melee charging attacks
  • Added CreateList to monster inventories
  • Adjusted IsExhausted attack penalty to minimum power/accuracy bar, as per retail
  • Re-adding physics initial update system
  • Omitting spellbook from creature appraisal. This should avoid a lot of the spam with certain decal plugins
  • Added spell component burning system
  • Improved graceful handling for logout and session drops
  • Improved network architecture for WAN connections
  • Improved network security by using CRNG init vectors for the CRC stream ciphers
  • Improved player logout, save, and session drop flows
  • Fixing heritage group skill cost overrides during character creation
  • Performance improvements from profiling
  • Various improvements resulting from excessive load testing
  • Added RNG treasure generation for loot chests
  • Added PlayerManager architecture. This manages both online and offline players, and enables various subsystems to access data for offline players in a consistent manner
  • Integrated Friends and Allegiance system with new PlayerManager
  • Updated DATLoader to use base DatDatabase for loading Highres and Language data
  • Improved DAT loader performance and memory usage


  • Fixed an issue with /telepoi command
  • Fixed PK death message broadcasts
  • Fixed a bug where ServerPackets could be built with too many fragments, exceeding the MTU
  • Fixed vendor prices for stacks. Players no longer get ripped off (as much)
  • Fixed a bug where item buffs could be cast on monster-wielded items
  • Fixed a bug where monsters could wield shield with bow equipped
  • Fixed a bug where monsters could slash with non-slash weapons, and pierce with non-pierce weapons
  • Fixed the elusive monster stuck / falling bug
  • Fixed the elusive null position bug, once and for all
  • Fixed some NPCs not returning to default MotionStance
  • Fixed a bug with InboundMessageManager displaying the wrong opcodes for GameActionType
  • Fixed a bug with some enchantments not being registered properly
  • Fixed a bug where monsters were being incorrectly reported as ‘Killed by misadventure.’
  • Fixed a bug with vendors not sending network updates
  • Fixed a bug where server wasn’t reporting back to ThwargLauncher correctly
  • Fixed corpse looting in vtank
  • Fixed various issues with some objects not spawning properly
  • Fixed a bug where Fellowship XP wasn’t being calculated correctly for some distances
  • Fixed a bug where hooks/storage were not immediately available for player
  • Fixed a walk / run movement speed bug in multiplayer
  • Additional bug fixes for some objects not spawning in indoor environments

ACEmulator Monthly Report – November 1, 2018 – December 1, 2018

ACEmulator / ACE:
7 authors have pushed 28 commits to master
167 files have changed
6,608 additions
1,593 deletions
View Pulse

Notable Changes:

  • Improved design and performance for SequenceManager
  • Added RenderTexture, String and Font to DatLoader.FileTypes
  • Added scrolls to loot profiles
  • Added caching system for scrolls
  • Added stream support to audio export
  • Fixed a long-standing network bug with lost/corrupted packets dropping clients
    • Fixed a bug causing AcknowledgeSequence packets to increment the LastReceivedPacketSequence, causing the Sequence to break and never recover for that Session
    • Fixed a bug causing RequestTransmit packets to be ignored
    • Improved server resiliency against malformed packets
    • Changed the C2S RequestForRetransmit to per-request packet, instead of sequence
    • Added developer network debug commands
    • Added a generational feature to ISAAC development of network layer
    • Adding pre-processor definition NETDIAG + directives to ACE.Common and ACE.Server to help development by preserving troubleshooting tools, without interference with the optimal solution
  • Updated client lib with features useful for third-party apps
    • Added outdoor landscape texture blending system (ImgTex, TexMerge, LandSurf)
    • Updated LandblockStruct to optionally generated texture UV coordinates for landscape textures. Defaults to off for server environments
    • Added animation-only updates to physics engine
  • Added instructions for installing with VS Community Edition
  • Added more RNG treasure generation for chests
  • Improved DatLoader for third-party apps
    • Fixed a bug where Unicode string lengths weren’t being read as compressed
    • Added optional flag for caller to select whether or not to load the cell.dat.
    • Fixed a bug where Animation framecounts were being read as uint instead of int
    • Added more enum flags, as per client definitions
  • Added more DAT fletypes: EnumMapper, StringTable, DIDMapper, DualDIDMapper
  • Fixed an issue with door and chest appraisal with respect to lockpick chances
  • keepOpen option added to DatDatabase FileStream – improves DatLoader performance
  • Added Property dictionary system – reduces CPU needed for handling properties by about 80%
  • Removed ActionQueue.Dequeue architecture, as it was unused. This change reduces the CPU ActionQueues require by half.
  • Make StackSize an int instead of ushort
    • This fixes the housing prices to match retail
  • Changed format of ServerStatus, Total CPU Time to match server runtime
  • Streamline attributes and vitals
  • Cleanup LoadAllLandblocks status output, and improved comments
  • Profiling-based performance improvements:
    • Landblock LoadMeshes summary improved
    • Added thread safety to LScape.get_landblock()
    • Improved WorldObject.ObjectGuid creation
  • Added caching subsystem to EnchantmentManager
  • With these recent changes, 50+ active players have been tested and running smoothly
  • Improved ShadowPart performance
  • Fixed a bug with using certain mana pools
  • Update EmoteManager and WorldObject Generator with fixes for Anniversary event emotes.

Meet Our Newest App, ACViewer

ACViewer is currently a work-in-progress, multipurpose DAT file viewer for Asheron’s Call portal and cell DAT files.

With this tool today, you can view many of the objects contained within those files, including object models, particle effects, textures, images, sound files, and landblocks which include over-world landscape and dungeons.

The above pictures represent only a sample of what you can view with this application right now and there are plans for many more features to come. Eventually moving towards DAT modification and even a full-on WorldBuilder like functionally for new content development!

Click Here to download ACViewer! 

Visit the GitHub website to download this tool and explore Dereth in new ways today! You can also click on the Discord link to the left to keep up with our changes to this new app as well as our other projects. Progress is made nearly every day on all things Asheron’s Call emulation.

Stay tuned for future announcements about our first downloadable releases of ACEmulator server software, in addition to the source code repo downloads!

Happy 19th Anniversary, Asheron’s Call!

November 2nd, 1999 – November 2nd, 2018…

Nearly two years after shutdown, ACEmulator is still going strong, making progress and improving week to week! Today we mark the 19th anniversary of the portals opening to Dereth with a few minor “events” in our emulated worlds.

Make sure you download the latest version of the world database and update your local copy to experience some of the “classic” moments of past anniversaries, but don’t wait too long as these events are time limited!

ACEmulator Monthly Report – October 1, 2018 – November 1, 2018

ACEmulator / ACE:
6 authors have pushed 45 commits to master
250 files have changed
9,998 additions
5,852 deletions
6 issues closed
View Pulse

Notable Changes:

  • Complex quests such as Aerlinthe and Gaerlan’s Citadel are now fully tested and completed
  • Added 2-handed weapons, and cleaving damage system
  • Lugian animation / stance improvements
  • Added fishing
  • Added dispels and pressure plates
  • Improved death messages for PK battles
  • Added all death messages for players dying to monsters
  • Added character titles
  • Added complete set of level 8 player spells
  • Added server support for all level 8 spells
  • Added multistrike weapons
  • Improved dual weapons stat combinations from both weapons
  • Improved weapon swing animation timings for melee combat
  • Added particle emitters and animation to physics system
  • Improved performance of physics entity cache system
  • Added landblock preloading / permaload system
  • DBObj boxing/unboxing performance improvements
  • Improved performance of physics landblock loading / async – 30% faster landblock loading
  • Improved server shutdown for db consistency
  • Improved object decayable system
  • Improved object database persistence system
  • Improved monster animation sync between server and client
  • Improved performance of GfxObjCache
  • Massive refactoring to the movement and animation systems
  • Adjusted use radius for some objects to match retail
  • Refactored EmoteManager to better handle NPCs in busy state
  • Added more emotes to support the quest system
  • VitalHeartbeat performance optimizations
  • Improved player movement when using items (corpses/chests/doors)
  • Improved animation timing when using consumables (food/drink)
  • Improved performance with weenie precaching
  • Improved performance of landblock loading – portal collision -> portal space -> landblock speed improvements


  • Fixed a bug with corpses decaying a Corpse.EmptyDecayTime after they were looted
  • Fixed a bug where items given to NPCs reappeared back in player inventory
  • Fixed a bug where landblocks were loading equipped items as objects owned by the landblock
  • Fixed a possible crash if invalid object added to landblock
  • Fixed a bug with some monsters getting stuck if they wakeup during idle emote
  • Fixed a bug where Olthoi Swarm Eviscerator would spawn a quarter staff in its inventory, and attempt to wield it
  • Fixed a bug where some linkable generators were not being classified correctly, and not spawning all of their objects
  • Fixed a bug where ‘/adminvision on’ would not take effect immediately
  • Fixed a bug where larger monsters were not being detected as within melee range of player
  • Fixed a bug where recipe items could be combined with themselves
  • Fixed a bug where monsters would continually attack players while still materializing at the lifestone
  • Fixed a bug where spell projectiles weren’t triggering the possible critical death messages
  • Fixed a bug where player would switch to Peace mode to open containers
  • Fixed a bug where player would return to an open container for closing
  • Fixed a bug with arbitrary delays for using / rotating towards items (0.5s/1.0s)
  • Fixed a bug where NPCs were running Actions before completing rotation towards player
  • Fixed various bugs with player switching to Peace mode to perform various actions, instead of using the current stance
  • Fixed a bug where level 8 spells had their minimum power set to 350 instead of 400
  • Fixed a bug where level 8 spell effects were too small
  • Fixed a bug where no death message was displayed for death blows from DamageType.Health (harm, drain, life projectiles)
  • Fixed a bug where item enchantments were having their ticks applied twice
  • Fixed a bug where mages would cast spells before rotating completely to target
  • Fixed a bug where players would windup / fizzle if they didn’t have enough mana
  • Fixed a bug where life projectiles were getting the target stats instead of the source stats
  • Fixed various bugs with generators spawning too many objects, RNG selecting the wrong items, and missing various RNG selection formulas
  • Fixed a bug where resisted spells weren’t alerting monsters


ACEmulator Monthly Report – September 1, 2018 – October 1, 2018

ACEmulator / ACE:
7 authors have pushed 49 commits to master
249 files have changed
10,861 additions
4,963 deletions
View Pulse

Notable Changes:

  • Improved landblock multithreading
  • Added more robust logic for animation timing while switching combat stances, for both players and creatures
  • Added randomized stack size variances to mob projectiles, based on WieldedTreasure tables
  • Usage of DateTime/PhysicsTimer cleaned up across the board
  • Improved timing for all monster animation transitions (combat stance, missile launches, spellcasting)
  • Improved monster timing / server animation sync
  • Added randomized variance to monster melee attack delay (0.5-2s)
  • Major refactoring to game code that uses SpellBase and Spell
  • Added complete Void Magic system w/ all spells
  • Added both server and client formulas for determining spell levels
  • Added proper spellcasting wind-up animations based on spell formula scarabs
  • Improved the spellcasting wind-up animations to use the exact animation timings
  • Improved the damage over time system
  • Added Damage Rating and Damage Resistance Rating to all damage formulas (physical and magic combat)
  • Added Dirty Fighting, Sneak Attack, and Recklessness skills to combat
  • Added weapon speed modifiers
  • Added accuracy modifier for missile weapons
  • Added missile launcher Elemental damage modifier
  • Additional chat channels added (admin, advocate, sentinel, fellow, patron, vassals, allegiance)
  • Added proficiency points / character points, and skills increasing through usage
  • Added TreasureWielded randomized armor/clothing for monsters
  • Implemented skill redistribution functionality
  • Added the ability for players to buy houses
  • Added the ability to place and save items on floor/wall/ceiling hooks
  • Added housing storage chests
  • Added house portals
  • Added secure trade system for players


  • Fixed a bug where monsters selected combat maneuvers that didn’t exist in their motion table
  • Fixed a bug where monsters would sometimes walk instead of run, when re-chasing targets
  • Fixed a bug where CreateObject network messages would be re-sent when monsters swapped inventory items
  • Fixed a bug where monsters would start moving while they were still transitioning from sleep->wakeup
  • Fixed a bug where projectiles wouldn’t trigger environment collisions for some objects
  • Fixed a bug where player’s trade status was not evaluated properly when entering combat
  • Fixed a bug that allowed players to pick up containers on the landscape that were being viewed by other players
  • Fixed a bug where picking up an open pack caused it to remain locked and unusable
  • Fixed a bug with player options not persisting on login

ACEmulator Monthly Report – August 1, 2018 – September 1, 2018

ACEmulator / ACE:
9 authors have pushed 85 commits to master
278 files have changed
12,321 additions
8,617 deletions
5 Issues closed
View Pulse

Notable Changes:

  • Added thrown weapons for players and monsters
  • Added atlatls for players and monsters
  • Added monster wielded weapons
  • Implemented monster inventory / weapon switching
  • Monster projectiles are now dodgeable
  • Added pre-MoA skill conversion to wielded item requirements
  • Added enchantments that directly modify vitals / secondary attributes
  • Added weapon offense bonuses
  • Fixed the appraisal fields for ammunition
  • Added DamageMod for missile launchers
  • Adding max broadcast range for some chat emotes (Act)
  • Adding proper object spawning / initial placement system
  • Adding monster combat maneuvers / special attacks
  • Added support for Volley spells
  • Added support for untargeted war spells
  • Added max spell range support for ring spells
  • Updated magic casting range checks to match retail servers / client
  • Added war spell projectiles: rings, walls, and blast spells
  • Improved system for players giving items to other players
  • Refactored PK checks for magic system
  • Added support for linking to portals
  • Added dual wield combat
  • Added weapon swapping between hands
  • Added player stamina usage on melee / missile attack
  • Refactored the death system
  • Improved player exhaustion system. Both players and monsters now receive attack and defense penalties when stamina = 0
  • Added attribute mod to monster damage. Some monsters now deal significantly more damage, so beware!
  • Updated shield effective angle to match retail
  • Updated Life Magic code to properly utilize the DamageHistory for tracking damage through harm/drain/heals
  • Refactored spell resistance to common method for all creatures (players / monsters)
  • Spell level now determined by Scarab instead of PowerLevel, as per retail servers and client
  • Added support for weapon bonuses: Melee Defense, Mana Conversion, Biting Strike, Crushing Blow, Resistance Cleaving, Elemental Damage modifier for casters, and Slayer bonuses


  • Threading improvement for WorldManager
  • ActionChain AddDelaySeconds cleanup
  • Added ShardDbContext caching system
  • Improved /buff Player command with auras, imp, and banes
  • Added /fellowbuff command
  • EnchantmentRegistry improvements
  • Added a system for finding the correct cell when spawning new items
  • Migrate Character tables over to new caching / threading model
  • Shard Biota & Threading Model Rework
  • Added database performance tests
  • Fixing PhysicsDesc bitflags – monsters are now recognized by vtank
  • Improved network resiliency, recovery from socket exceptions
  • Complete rewrite of player visibility / broadcast system
  • Refactored generators
  • Improved SQL writers w/ additional comments
  • Significantly improved GetBiota performance from the shard by using flags to indicate populated collections.
  • Also added Parallel.ForEach support for Shard GetPlayerBiotas.
  • Adding dungeon position adjustments system. This fixes dungeons where cells have been relocated since PY16 (ie. Burial Temple, North Glenden Prison, and Nuhmudira’s Dungeon)
  • Adding physics entity caching system. This provides massive improvements with reduced memory usage, especially over the course of a lifetime for long-running servers.
    Shard schema changed to remove foreign key link between Character and Biota.
  • This also significantly changes the relationship of Session/Player/Character objects.
  • Change from .NET Core 2.0 to .NET Core 2.1. This requires .NET Core 2.1 x64 SDK.
  • Major schema refactoring + changes for World and Shard.
  • New PY16 format required
  • Refactored PhysicsState
  • Added Damage History system to track damage and healing sources for corpse looting rights
  • Fixed a bug with monster transitions between some landblocks
  • Fixed a bug with Admin and Sentinel players in the PK targeting system
  • Fixed a bug where portaling could keep the player at original location
  • Fixed a bug with player not appearing as pink bubbles on login/portal
  • Fixed a bug with monsters running away from players
  • Fixed a bug with AmmoType not being enumerated as Flags
  • Fixed a bug with generators not respawning items
  • Fixed a bug with generators not spawning items in containers
  • Fixed a bug with generators spawning the wrong items
  • Fixed a bug where players/monsters were granted Melee Defense bonus for missile attacks
  • Fixed a bug where player death was removing enchantments on the client only
  • Fixed a bug where a player autoattack could occur after death
  • Fixed a bug where attributes could be debuffed below 10
  • Fixed a bug with casting spells on items wielded by other players and creatures
  • Fixed a bug with MaxVital calculation with vitae