ACEmulator Monthly Report – June 1, 2019 – July 1, 2019

ACEmulator / ACE:
8 authors have pushed 121 commits to master
149 files have changed
6,523 additions
2,185 deletions
View Pulse

Notable Changes:

  • Fix issue with converting books from JSON to SQL.
  • Adjusted some debug output.
  • Add overridden properties for region encounter generators.
  • override_encounter_spawn_rates
  • encounter_regen_interval
  • encounter_delay
  • Allow camp generators to despawn
  • When a full “camp” is wiped, if the camp has a parent generator, destroy it so the parent generator can roll the slot again.
  • Added data error protection for treasure data in generator profiles.
  • Renamed Envoy references to Sentinel
  • Updated Knight’s Stash, and some other generator profiles
  • Fixed a bug with handing equipped items to Town Criers
  • Clean up issue with Weenie Cache corruption via admin commands/player creation.
  • Fixed some bugs for PKLite
  • Fix issue with invisible Acid hotspot
  • Add quest flags, update emote tables to allow reentry/reuse of Gatekeeper crystals. This is not retroactive to those who have already completed it. Turning in those required items will fix it for those characters going forward.
  • Update Water and Flame Guardian npcs
  • Fix clothingbase/palette template for appearances
  • Fixed various inventory stack bugs
  • Fixed issue with Recipe Manager “CopyFromSourceToResult” not using the player as the source.
  • Fixed a bug with corpse/chest inventory closing when trying to loot from magic combat mode
  • Log cleanup
  • Additional network fixes
  • Updated CommandParser for better handling of multiple arguments with spaces
  • Fixed a bug where irresistible spells could be resisted
  • Indexing biota_wcid db column, improved mansion/villa basement loading speed
  • Vissidal flagging quest
  • Fix give chests spamming server logs about MaxGeneratedObjects being less than InitGeneratedObjects
  • Update Tibri the Cavedweller and Peng-Ya
  • Add missing MaterialType to Foolproof Salvage
  • Added multi-homed internet support
  • Fixed item proc sources and messages
  • Fixed edge case for equipping thrown weapon w/ dual weapon wielded
  • Added defense spec bonuses
  • Update GetCachedInstancesByLandblock for external exporting
  • Fix issue of weenie cache corruption, setting the weenie’s weenietype instead of biota’s weenietype
  • Ensure subbed combatpets are always melee-ing by not spawning any inventory/weapons.
  • Generator system tweaks
  • Carry over Delay from profile template correctly.
  • Update RemoveQueue info in GeneratorDump.
  • Adjust CurrentCreate to be calculated to prevent out-of-sync issues.
  • Fixed a bug where stamina/mana kits could not be used at full health (was performing wrong vital checks)
  • Additional refactoring for healing kits
  • Updated Nullify Item Magic scroll drop
  • Expand qst command.
  • Code fix for out of order emote sets.
  • Fix issue with food consumables ObjectDescriptionFlag.
  • Fix issue with certain doors.
  • Updating outdoor house references for unloaded landblocks
  • Generator system revamp
  • Add Landblock_Tick_GeneratorRegeneration
  • Split up Generator Regeneration and Heartbeats
  • Notify Geneator of Pickup of Landblock Stackable
  • Add RegenerationTimestamp and GeneratedTreasureItem properties
  • Add InitializeGenerator
  • Remove IsLinked
  • Change SelectProfilesInit to use GetMaxObjects
  • Change SelectProfilesMax to use GetMaxObjects
  • Update GetMaxObjects
  • -1 MaxCreate == Fill up all slots
  • Renamed HandleStatus to HandleStatusStaged
  • Restore previous HandleStatus
  • Update StartGenerator
  • GeneratorInitialDelay > 0: offset NextGeneratorRegenerationTime
  • else if InitCreate > 0: Regen
  • Add GetNextRegenerationTime
  • If generator isn’t previously loaded, skip delay
  • Update DisableGenerator
  • Add ProcessGeneratorDestructionDirective
  • Support GeneratorDestructionType and GeneratorEndDestructionType
  • Update AddGeneratorLinks
  • Increment InitCreate and MaxCreate per profile template spec (placeholder), per each link added
  • Update Generator_HeartBeat
  • Starts/Stops Generator, checks event status
  • Add Generator_Regeneration
  • Queues for Respawn and/or/both Spawns objects
  • Add ResetGenerator
  • Update GetSpawnTime to always return UtcNow
  • Update Spawn
  • If TreasureGenerator is used, set GeneratedTreasureItem
  • If profile PaletteId and/or/both Shade have value, use it
  • Wire up @regen command
  • Add @generatordump command
  • Change EmoteType.Generate to use Generator_Regeneration
  • Update OnDeath to call OnGeneratorDeath for Generators
  • Update OnActivate
  • Move default action to last action to allow other actions to start before
  • Change OnGenerate to use Generator_Regeneration
  • Update Chests
  • Remove ResetGenerator
  • If Locked disable timed regen of contents
  • Update Reset
  • Override ResetGenerator
  • Update ResetInterval resetting
  • Rename Generator to GeneratorProfile
  • Rename Generator.cs to GeneratorProfile.cs
  • Update WorldObject_Generators.cs
  • Skip PlaceHolder object profiles
  • Change ProcessGeneratorDestructionDirective to not affect dead/dying creatures
  • Update WorldObject_Generators.cs
  • Bad data protection
  • Code fix for linkitemgen2minutes
  • Bad Init/Max for this linkable
  • Add GeneratorUpdateTimestamp
  • GeneratorHeartbeat renamed to GeneratorUpdate
  • This matches property found in enum
  • Stop saving Gateway portals to Shard DB
  • Add IsGateway to Portal
  • Add default sound to Pressure Plates
  • Update Corpse Decay Logging
  • Do not change default icon unless Shade or Palette was defined
  • Add NpcInteractsSilently handling for EmoteType.Give
  • Wire up trophies command
  • Fixed highframe bug for level 6 spellcasts
  • Fixed some vitae bugs
  • Prevent allegiance passup xp from reducing vitae
  • Refactored drop item
  • Added PK timers
  • Improved item magic code
  • Fire EmoteManager.OnDrop when an item is dropped to landblock. (Clutch of Kings (Rehir))
  • Added Morgluuk Linvak event
  • Fixed a bug with house payments for offline allegiances
  • Added code to use the Setup of a piece of clothing to visually equip it if no ClothingBase exists. This specifically applies to Ursuin Guise, WCID 32155, but may apply to others in the future.
  • Prevent using Hookers if house isn’t owned or is closed and player isn’t on guestlist.
  • Fix gems that cast recall spells.
  • Fixed doubled up spawns in Matron Hive East
  • Minor changes to Destroyed Portals
  • Fixing fellowship proportional xp sharing
  • ConnectionListener: Add NetworkReset error handling
  • Added Revitalize Other VI and Nullify Item Magic to loot system scroll drops
  • Recipe updates / additions:
  • Retired old Barbed Crop and Sharpened Virindi Scalpel in favor of updated recipes using MoA skill checks
  • Added Foolproof salvage recipes
  • Added Ancient Armor dye recipe
  • Adding ExperienceHandlingType, ShareType for xp classification
  • Updated fellowship quest bonus to match retail, with additional config options
  • Refactored consumables
  • Update Vendor Buy/Sell to validate item amounts before creation
  • Prevent using Hookers if they aren’t hooked.
  • Updated Olthoi Hunter
  • Updated fellowship kill tasks to match retail by default, with additional config options
  • More busy state checks during teleport
  • Updating allegiance chat channel when breaking from vassals
  • Some changes to Tomb of Adhorix
  • Improved support for Phantom weapons
  • Added missile reload anim speed modifier
  • Added burden modifier
  • Fixed a bug where Oak Salvage couldn’t be applied to melee weapon
  • Added support for swearing allegiance to lower level characters
  • ConfirmationManager refactoring
  • Updated chess pieces so that drudges are white team
  • Added GameEventAllegianceLoginNotification packet
  • Updated Allegiance panel for online/offline status
  • Added more info to /debugdamage
  • Fix prismatic ammunition
  • Continue to add UCoN content and quests
  • Fix Dire Mattekar Kill Task quest
  • More descriptive exceptions in ConnectionListener
  • Added ActionChain performance measurement
  • ObjectGuid.ToString() cleanup
  • Added /additemspell command for devs/admins – add a spell to an existing item
  • Added multiple wield requirement checks
  • Landblock decay code cleanup
  • Updated Physics.WeenieObj to WeakReference
  • NetworkSession.cachedPackets pruning
  • Added Sandstone Salvage for new items, updated existing Sandstone Salvage bags
  • Prevent using contained Container (R keybind).
  • Add Do nothing stub to Generic weenie class.
  • Add requirecomps command.
  • Add SpellComponentsRequired property.
  • Add HasComponentsForSpell.
  • Add HasComponentsForSpell checks to Player.CreatePlayerSpell for targeted and untargeted spells.
  • Fix issue with certain createlist profiles.
  • Additional cleanup for ignoremagic*
  • Added Sandstone Salvage to RecipeManager
  • Add LightSource Weenie class.
  • Added lock resistance enchantments
  • Added /verify-skill-credits
  • More refactoring for hollow missile damage
  • Fixed a bug with item enchantments not ticking in side containers
  • Added /god admin command
  • Added more info to /debugdamage
  • Wire up EmoteType.CreateTreasure.
  • Adjust ItemMagic/SpellType.PortalSummon to use spell.Link instead of spell.Name.
  • Add Laurana to her Cavern home in Glenden Wood; currently using texture update properties to craft the NPC’s correct look, until SedgeMail Leather armor is added to the game; will require ACE PR 1968 to make accessible
  • Add Lightning Longbow that is wielded by NPCs only
  • Add Invitation to Master Fletchers “portal gem”
  • Remove few spawns from Glenden Wood due to changes in town, such as doors in the air from a burned out structure
  • Correct Sho Pathwarden Chest to hand out correct racial Pathwarden Robe
  • Update Pathwardens to have the remaining WS5 granite and WS5 steel salvage at 33% reward on Pathwarden gear turn in
  • Add the two Salvage bag items used for the Pathwarden gear turn in
  • Add more Under Cover of Night patch weenies
  • Wire up EmoteType.TeleportTarget
  • Adjust appraisal code for better NpcLooksLikeObject handling.
  • Start adding Under Cover of Night content, including some initial weenies and landblock spawns
  • Added retained message for sandstone salvage
  • Updated crafting chance of success dialog
  • Fixed some issues with ivory and leather salvage
  • Fixed hollow damage for chorizite missile weapons
  • Fixed some issues with emote table RNG
  • Made a small adjustment to the GetPaletteID function that was, in certain circumstances, returning the wrong palette.
  • Move network/packet work from WorldManager to NetworkManager
  • Remove unused code from GameActionPacket
  • /auditobjectmaint
  • add /allstats, make /delete safer
  • Fixed tailoring for pauldrons
  • Fixed some gaps in house abandon / eviction for unloaded landblocks
  • Disable players putting or merging items into corpses. You can only pull from not push to.
  • Update logging for decay of corpses.
  • Changed Landblock.Tick to not decay on first tick.

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!

Welcome to our new site!

Thanks due in no small part to Miach, we’re excited to announce the opening of ACEmulator’s new home on the web!

Initially, our goals for the website are to use it to host monthly progress reports of our activities as well as any announcements along the way.

As we near closer to stable releases we might expand out the site’s scope a bit to include documentation or how-to’s on installing, configuring and administration of ACEmulator servers, but as we’re mostly not web-devs, we’re going to start small and go from there!

Please pardon the dust as we get settled in and up to speed!

Handy links to the website are: and

P.S. If you’ve got experience working with WordPress based sites and would like to contribute to ours, we absolutely would welcome help in this arena as most of our time is taken up by coding the emulator. Join or stop by our Discord server and message us your interest today! ——————>

Gone but not forgotten…

Sadly, it’s been one year since Asheron’s Call was shut down by Warner Brothers and Turbine but at the same time, it’s also been one year since the community banded together to ensure the game continues to exist in some form or another for as long as the internet continues to have life.

We may have temporarily lost access to our original characters but the future for Dereth is bright and continues to improve day by day and week by week!

Join us in helping keep Dereth alive for decades to come by visiting our Discord and GitHub today!

To the data collectors…

I want to sincerely thank each of you for all your efforts this past month to collect the data we need to rebuild Asheron’s Call… It’s been a massive undertaking and we’ve already collected so much of the data that represented the heart and soul of what we’ve all enjoyed over these past 18 years. You’ve all done a truly phenomenal job thus far and I look forward to continue working with those already here now, and those yet to find us, as we undertake perhaps Asheron’s most difficult quest yet… Returning to Dereth!