ACEmulator Monthly Report – September 1, 2019 – January 1, 2020

ACEmulator / ACE:
12 authors have pushed 298 commits to master
View Pulse
Changelog

Notable Changes:

  • Merged fastcast branch into master: Advanced player movement and spellcasting techniques are now available
  • Added Network improvements
  • Added logging to HousePortal nulls
  • Added magic absorption for missile/magic weapons
  • Added some missing shield cantrips
  • Added support for Overpower and OverpowerResist
  • Added Additional checks for CombatMode
  • Added support for neutral casters and missile launchers to be tailored onto weapons with DamageType
  • Added support for PropertyBool.AffectsAis
  • Added support for PropertyBool.AiImmobile
  • Added support for PropertyBool.OpensAnyLock
  • Added support for PropertyBool.PortalIgnoresPkAttackTimer
  • Added support for monsters with PropertyBool.NonProjectileMagicImmune
  • Added support for SpellSets for Items that don’t level
  • Added support for luminance award on kills
  • Added support for luminance sharing in fellowships
  • Added luminance award message for quest turn-ins
  • Added server option for Aetheria healing over time message color
  • Added support for monster casting untargeted spells (ie. ring spells)
  • Added item give sound local boadcasting to match retail
  • Added item_dispel server config option to fix end of retail bug
  • Added support for Dark Idol recipe DataId mods
  • Added support for purging of deleted characters from database
  • Added support to limit the number of accepted connections per IP Address
  • Added DestinationType.Wield to corpse object selection
  • Added different pickup animations based on source/target height
  • Added /damagehistory developer command
  • Added protection and logging for house basements w/ missing location data
  • Added server option for create_list DestinationType.Wield items dropping to corpse
  • Added T6 rares for two-handed weapons
  • Added defense imbues to effective defense calculations
  • Added valid skills hashset, check valid skills upon entering god mode
  • Added support for WeaponMissileDefense and WeaponMagicDefense
  • Added debug logging for failed player transitions
  • Added some missing calls to allegiance house boot
  • Added preliminary version of pickup busy state handling
  • Added developer commands to test the loot generator
  • Added /resist-info developer command
  • Added player /config command
  • Added /addenc command for content creators to add encounters
  • Added support for RelativeDestination on portals
  • Added support for emote branching with events
  • Added support for Creature.QuestManager
  • Added server option for adjusting quest timers
  • Added support for ‘confirm use of rare gems’ player option
  • Added server option to include viewer name in ‘container already opened’ message
  • Added post-windup range check to spellcasting
  • Added support for ‘FirstEnterWorldDone’ on players
  • Added RecipeManager verifications for source and target usability flags
  • Added lifestone_broadcast_death server option, clamping to local broadcast range
  • Added PetClass commenting to SQLWriter
  • Added missing function for physics @ plateau
  • Added support for creeping mobs
  • Added verify console commands for admins
  • Added LootFactory simulator
  • Added support for ‘no drop on death’ landblocks
  • Added ShardDatabaseWithoutCaching
  • Added support for dual-wielding mobs
  • Added support for EmoteManager.CastSpell untargeted spell projectiles
  • Added more EoR spells to Player_AllowedSpellIDs
  • Added PurgeOrphanedBiotas
  • Added verifications for RecipeManager
  • Added CurrentLandblock checks to Slumlord
  • Added checks for /verify-skill
  • Added IsDead checks for magic casting
  • Added verifications for DamageHistory.CheckInternal()
  • Added fix-biota-emote-delay server console command
  • Added PlayerFactory improvements
  • Added PlayerManager GetOnlineCount() and GetOfflineCount()
  • Added checks for IsDead
  • Added ResistanceMod check to never go below 0
  • Added rotation checks for EmoteType.Move
  • Added verifications for ‘item in trade window’
  • Added transferCap to both srcVital and destVital for life transfer spells
  • Added pcap properties
  • Added ManaConversionMod tweaks
  • Added Minor math optimization for CRC verification
  • Added support for standard and non-standard usage of %tqt and custom %CDtime
  • Improved handling for monster spell.IsResistable
  • Improved handling for attack sequences
  • Improved monster position sync and corpse sync
  • Improved /teledungeon name search
  • Improved multithreaded landblock group ticking (non-physics)
  • Improved accuracy for XP divvy
  • Improved test loot generator commands
  • Improved AI for missile combat mobs
  • Improved RunRate handling for players
  • Improved PK/PKLite top damager detection
  • Improved handling for overages for house payments
  • Improved speed for /import-json all content dev command
  • Improved NaN handling for projectiles
  • Improved monster combat maneuvers table
  • Improved corpse positioning for creeping mobs
  • Improved handling of json weenie metadata
  • Improved usage of body part quadrants for physical attacks
  • Improved /targetloc
  • Improved handling of house permissions
  • Improved magic defense and missile defense bonuses in loot generator
  • Improved spell projectiles
  • Improved raise attribute/vita/skill
  • Improved scope for generator wipe conditions
  • Updated EmoteType.AwardLuminance to use HeroXP64
  • Updated ApproachVendor to track last spent alt-currency better
  • Updated monster spellbook probabilities
  • Updated Killed by misadventure conditions
  • Updated Logging messages
  • Updated test loot generator
  • Updated setups for creature dressup
  • Updated ACE.Adapter to support spawn maps
  • Updated house storage chests to remain open while being viewed (no auto-close timer)
  • Updated EmoteType.DeleteSelf
  • Updated GameEventInscriptionResponse
  • Updated DamageMod enchantments from multiplicative to additive (ie., Eye of the Hunter)
  • Updated spell projectiles to use more spell / weenie data
  • Updated AugmentationDevice to use WeenieErrorWithString
  • Updated House.OnProperty() HasDungeon boot condition
  • Updated /generatordump information
  • Updated Pets and PetDevices for Summoning
  • Updated Enlightenment vitality formula for max health
  • Updated loot generator for missile and casting weapons to better match retail
  • Updated EmoteManager AddDelaySeconds() only when > 0
  • Updated drop rates in loot generator for better alignment to retail
  • Updated Obsidian Chittick spines to do DamageType.Undef as per PY16 data
  • Updated Move emotes to use default WalkRunThreshold
  • Updated DoT ticks to match with retail heartbeats
  • Updated target resistance check to use ItemSpellCraft when casting spells built into wands
  • Updated Clutch of the Miser augmentation to not apply to PvP deaths
  • Updated Lifespan to use RealTime instead of GameTime
  • Updated NetherDotDamageRating to only apply to direct damage
  • Updated Tailoring to not copy UIEffects to the destination item
  • Fixed bug with pickup/merge into a full container
  • Fixed some gaps with nested emote chains and EmoteManager.IsBusy
  • Fixed a bug with material probability
  • Fixed buy issue with AltCurrency Vendors
  • Fixed monster idle emote update sync
  • Fixed some gaps with PK logout timer
  • Fixed a bug where atlatl/thrown weaps were using power instead of accuracy bar
  • Fixed issue with EmoteType.Give handling stackable/nonstackable items
  • Fixed a bug with player missile defense
  • Fixed issue with opening empty hooks
  • Fixed issue with AlternateSetup for certain non-human models
  • Fixed issue with Umbraen Males and Female crown options
  • Fixed Hook Visibility Control in Basements
  • Fixed issue on Hook Appraisal
  • Fixed some gaps for DST
  • Fixed items that proc to cast untargeted spells
  • Fixed CharacterOption enum to match PlayerOption ordering in acclient
  • Fixed a bug where Critical Strike bonus wasn’t applying to life projectiles
  • Fixed EmoteType.AwardLevelProportionalXP when Max64==0
  • Fixed an issue with Sphere.FindPlacementPos
  • Fixed generator respawn retries
  • Fixed boost variance for life transfer spells
  • Fixed mobs casting flame wave
  • Fixed monster special attack fx
  • Fixed caster damage modifier to use appropriate PvP modifier
  • Fixed a bug that occurs when client sends only a cleartext CRC NAK
  • Fixed armor tailoring intermediate kit TargetType
  • Fixed scatter generators for Neftet plateaus
  • Fixed an issue with loot generator creating melee weapons with overcapped damage
  • Fixed client hourglass for applying encapsulated essence while in busy state
  • Fixed some minor issues with AwardSkillXP emotes
  • Fixed a possible system-dependent state crash in EnvCell constructor
  • Fixed ThreadSafeTeleportOnDeath -> SetLifestoneProtection
  • Fixed stance swap state thrashing
  • Fixed 2 tailoring bugs
  • Fixed death items for players < level 35 Fixed monster resleep -> wakeup cycle for combat mode
  • Fixed /buff for life spells
  • Fixed a double message bug for archers
  • Fixed a NullReferenceException with CurrentMovementData.Invalid
  • Fixed a DamageHistory static bug
  • Fixed a NullReferenceException in EnchantmentManagerWithCaching
  • Fixed a possible lockup in physical combat when repeat attacks is disabled
  • Fixed spell IDs for CreateRandomScroll
  • Fixed issues with nulls in EmoteManager.Replace
  • Fixed issues with shield tailoring
  • Fixed issues with CharacterExporter
  • Fixed no-delay emotes to execute immediately
  • Fixed issue with broadcasting incorrect RunRate for overburdened players
  • Removed PKTimer for Bael’Zharon battles
  • Removed non-retail vital regen cantrips
  • Removed some incorrect log / chat messages for SpellComponentsRequired
  • Removed Player.Rotate during looting that wasn’t in retail
  • Removed a bugged rare crystal
  • Removed unused pattern from CryptoSystem for slightly better performance
  • Cleanup ActOnUse for Ammo and move to debug only alert
  • Ensure that Impen spell is present on magical Covenant Armor
  • Backported hotspot accuracy from PR 1991
  • Refactored GetProjectileSpellType
  • Updated /ungod resiliency
  • Adjusted the way SpendCurrency spends currency
  • Re-order operations in GiveObjectToNPC
  • Adjust Split StackSize Checks
  • Sync HouseHooksVisible to root house object
  • Generate Random Faces for CreatureType.Empyrean NPCs
  • Validate int data for GenerateNewFace
  • Rebased SQL scripts, archived previous batch for legacy servers
  • Turned on Guid Recycling
  • Notify Generator of spawn failure for regen retry
  • Ensure level 8 item self spells take precedence over level 8 item other spells
  • Switch ThreadSafeRandom from lock to ThreadLocal
  • Pre-validating EnvCell transitions
  • Setting default CultureInfo to en_US
  • Moved UpdatePlayerPhysics to Player_Tick.cs
  • PlayScript cleanup
  • ThreadSafeRandom cleanup
  • Misc Housing Cleanup
  • Ensuring HealingOverTime does not tick up health for dead creatures
  • Moved ThreadSafeTeleport to WorldManager
  • Handle special case for PKType deaths + Enduring Enchantment + DoTs
  • WorldObject_Weapon / imbue refactoring
  • Minimized DamageHistory.WeakReferences
  • Send updates to Monarch ID over network

Packet Captures

A PCAP (Packet Capture) is network data collected during an active client session to provide more concrete information for the developers to track and squash bugs

PCAPs are an invaluable tool to see behind the graphics in to what is actually occurring.

Download ACLog https://github.com/ACEmulator/aclog/releases/download/1.0.0/msxml4.dll

  • Make a copy of your Asheron’s Call folder next to your existing folder (not inside)
  • Place the msxml4.dll in the new folder
  • Open Thwarglauncher and click Open User File
  • Find the specific account for the server you’re testing
  • Add a LaunchPath pointing to the new acclient location – The top of the UserFile details the LaunchPath syntax

If you do not do the above the packet logger will open for every single client/world you log in to, causing a mess of packet logs in your main folder.

When you come across a bug in game while the packet logger is running, please type in chat “PCAP BUG” so the timeframe can be narrowed down.

Either exit the client or hit Stop on the packet logger and a new file will be created in the AC folder with the format “pkt_YYYY-MM-DD_TIMESTAMP”

Provide this file along with your bug report.

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: https://emulator.ac and https://emu.ac

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! ——————>

ACEmulator News! Entity Framework + New Discord + Physics!

Hey everyone, thanks for your support and continued efforts over the past year. We’ve made some great progress and are more committed than ever to bring to the community an open source emulator.

Firstly, we’ve moved to a new discord. Any new emulator/development discussion from the core team will be handled there: https://discord.gg/C2WzhP9

Additionally, we’ve made some great improvements with our code base. The new code should be much more developer friendly. We realized there were significant performance issues with the previous code. In addition, the complexity was over burdensome for new developers to participate in.

We’ve switched to .net core 2.0.

  • Performance increases.
  • Improved cross-platform support.
  • Exposes developers to the newest .net technologies that they may find in the real world.

We’ve switched our database model to Entity Framework Core 2.0.

  • Switches ACEmulator to popular, well documented ORM framework.
  • Significant performance improvements.
  • Scaffolding support greatly reduces the burden of adding tables/fields to the database.

Physics!

If you’ve been following our commit history, you’ll notice that gmriggs has taken it upon himself to implement the physics model for ACEmulator. The goal is to have a physics engine that very closely represents what the client is doing/expecting. So far his progress has been amazing!

ACLogView has been overhauled.

ACLogView, originally developed by tfarley, is the invaluable tool we use to view pcap data collected during the massive ACEmulator community effort in December 2016 – January 2017. Slushnas has spent a great deal of time improving ACLogView, it’s parsing accuracy as well as included documentation to make it easier than ever to bring back the world of Dereth.

We’ve made a lot of progress over the last year and hope to continue that momentum!

We’re always looking for new developers. With the recent changes to our code base, it should be easier than ever for new developers to get involved!

ACEmulator Core Goals

  • Reproduce Asherons Call as it existed as of January 2017.
  • Produce an emulator engine that is both performant, but easy to understand and develop for.
  • Encourage community participation and involvement in the project.
  • Use patterns/practices/technologies that developers may find themselves exposed to in the real world.

Thanks for the support!

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!