A fan-based EverQuest Emulator Project

We've been working on a lot of maintenance related things lately, lots of code updates, server has gone done a few times. For your patience we are putting up Double EXP for the weekend. Happy grinding!
Changelog found here:

[22.44.5] - 2/12/2024
  • Fix issues where we're using the wrong database pointers @Akkadius 2024-02-13
[22.44.4] - 2/12/2024
[22.44.3] - 2/12/2024
[22.44.2] - 2/12/2024
  • Use explicit conversions for enum formatting (#4064) @hgtw 2024-02-12
  • Guard against crash condition (#4062) @neckkola 2024-02-11
[22.44.1] - 2/11/2024
  • Fix File::Exists(file_name) to be resilient to Chinese characters (#4058) @Akkadius 2024-02-11
[22.44.0] - 2/10/2024
Base Data
Bot Commands
  • Convert Quest Ornament Methods to Repositories (#4048) @kinglykrab 2024-02-10
  • Remove redundant check in Object::HandleCombine (#4041) @joligario 2024-02-03
Crash Reporting
  • Correct manifest migration entries that should be content (#4047) @Akkadius 2024-02-05
  • Remove script and ties to server (#4049) @Akkadius 2024-02-10
  • Add RoF2 Guild features (#3699) @neckkola 2024-02-10
  • Add optional is_forced parameter to Zone::Repop (#4046) @kinglykrab 2024-02-05
  • Add support to crosszone/worldwide spells to affect bot pets (#4036) @kinglykrab 2024-02-01
  • Classic Taunt (Pre 2006) style of taunt (#3942) @fryguy503 2024-02-10
  • Corpse Overhaul (#3938) @fryguy503 2024-02-08
GM Commands
  • Remove from shared memory, simplification (#3988) @Akkadius 2024-02-05
Quest API
  • Add GetAAEXPPercentage() and GetEXPPercentage() to Perl/Lua (#4044) @kinglykrab 2024-02-04
  • Avoid removing client tasks from memory on load (#4052) @hgtw 2024-02-10
  • Send active elements in task select packet (#4051) @hgtw 2024-02-10
[22.43.3] - 1/30/2024
Alternate Currency
  • Convert Load of Alternate Currencies to Repositories (#3993) @kinglykrab 2024-01-29
  • Convert Bot Database Methods to Repositories (#4023) @kinglykrab 2024-01-29
  • Missing boolean returns on DeletePetStats and SaveInspectMessage (#4031) @joligario 2024-01-30
Crash Fix
  • Fix NPC After Death Emotes (#4021) @kinglykrab 2024-01-29
  • Fix database loading routines (#4030) @Akkadius 2024-01-29
  • Fix issue in character_corpses Repository Query (#4029) @kinglykrab 2024-01-29
  • Limit Pet Taunt Distance (#4018) @fryguy503 2024-01-26
  • Limit Player Taunt Distance (#4019) @fryguy503 2024-01-26
  • Patch for recent change to DEATH (#4032) @noudess 2024-01-30
  • spawn_conditions map was being emptied by mistake (#4033) @noudess 2024-01-30
  • Convert Load of Pets Beastlord Data to Repositories (#3995) @kinglykrab 2024-01-29
  • Use separate variable for quest idle override. (#4026) @noudess 2024-01-27
  • Add rules for cross-zone/world-wide casts to affect Bots/Mercenaries/Pets (#4002) @kinglykrab 2024-01-29
[22.43.2] - 1/25/2024
  • ^mez command spell list fix (#3998) @dariusuknuis 2024-01-19
Crash Fix
  • Fix crash when creating Frogloks/Drakkin (#4016) @kinglykrab 2024-01-25
  • Reverting PR #3877 (#3997) @fryguy503 2024-01-17
  • Fix Mercenaries Buffs/Zoning Issues (#4000) @kinglykrab 2024-01-22
  • Fix zone database update manifest (#3972) @kinglykrab 2024-01-13
  • Fixes to zone idle while empty changes. (#4006) @noudess 2024-01-23
  • Reversed logic on InLiquid (#3979) @fryguy503 2024-01-14
  • Force Info category to be always on in file/console logs (#3990) @Akkadius 2024-01-22
  • Change database structure for merchant slots (#3974) @joligario 2024-01-14
  • Fix disciple message added by previous patch. (#3986) @noudess 2024-01-15
Quest API
  • QuestReward should now summon item to the inventory instead of the cursor. (#3996) @regneq 2024-01-22
  • Spawn condition value should default spawn_conditions value (#3980) @noudess 2024-01-14
  • Additional logs for zoning under instance checks (#3989) @Akkadius 2024-01-22
[22.43.1] - 1/14/2024
  • Revert #3976 - fix character corpses @Akkadius 2024-01-14
[22.43.0] - 1/14/2024
  • Change database structure for merchant slots (#3974) @joligario 2024-01-14
[22.42.1] - 1/13/2024
[22.42.0] - 1/13/2024
Crash Fix
  • Character Creation Class/Race out of Range. (#3920) @fryguy503 2024-01-09
  • Alt Sinister Strike Formula (#3921) @fryguy503 2024-01-09
  • Add Lore Item Trade Error (#3932) @fryguy503 2024-01-13
  • Rule: UseLiveBlockedMessage Bard Spam (#3933) @fryguy503 2024-01-09
  • Attack Corpse Skill Up Fix (#3924) @fryguy503 2024-01-09
  • Fix Issue with SetFlyMode() (#3961) @kinglykrab 2024-01-12
  • Harm Touch Critical Ratio (#3915) @fryguy503 2024-01-09
  • Increase Precision in CheckDoubleAttack (#3928) @fryguy503 2024-01-09
  • IsOfClientBotMerc() for Discipline Messages (#3940) @fryguy503 2024-01-09
  • Limit MeleeMitigationEffect to defender if only client. (#3918) @fryguy503 2024-01-09
  • Rampage Number of Hits Limit (#3929) @fryguy503 2024-01-09
  • Remove duplicate character_data repository in zonedb.cpp (#3935) @kinglykrab 2024-01-09
  • Undead Should Never Flee (#3926) @fryguy503 2024-01-09
Global Loot
Ground Spawns
Item Ticks
  • Convert Clear/Delete/Save of Temporary Merchant Lists to Repositories (#3945) @kinglykrab 2024-01-13
  • Add null integer column support, instance_list notes migration, regenerate repositories (#3969) @Akkadius 2024-01-13
  • Add rule for bard aggro cap (#3909) @fryguy503 2024-01-09
  • Allow GMs to silently summon (#3910) @fryguy503 2024-01-09
  • Bash Two Hander use Shoulders (#3925) @fryguy503 2024-01-09
  • Classic Spell Data SPA Calc variability (#3931) @fryguy503 2024-01-09
  • Classic Tracking Skillups (#3923) @fryguy503 2024-01-09
  • Separate Tradeskill Max Train from Research. (#3916) @fryguy503 2024-01-09
  • Add Support for Task Window Element Groups (#3902) @hgtw 2024-01-09
  • Convert Load of LDoN Traps/Trap Entries to Repositories (#3953) @kinglykrab 2024-01-13
[22.41.0] - 1/8/2024
  • DI Buff Fade (#3919) @fryguy503 2024-01-08
  • NPCs will now only proc on hit (#3913) @fryguy503 2024-01-08
  • Pets should not ignore Z axis (#3912) @fryguy503 2024-01-08
  • Disciplines should show when someone casts them. (#3901) @fryguy503 2024-01-08
  • Fix Typo in Character Skills loading (#3937) @kinglykrab 2024-01-09
  • Fix for HasLockoutByCharacterID (#3927) @fryguy503 2024-01-08
  • Harm Touch, Improved Harm Touch, and Unholy Touch (#3904) @fryguy503 2024-01-08
  • Legacy Manaburn should have hard cap. (#3905) @fryguy503 2024-01-08
  • TGB - Added logic to stop bard errors on group songs. (#3906) @fryguy503 2024-01-08
  • World Shutdown Filter (#3930) @fryguy503 2024-01-08
  • Adding textual feedback when trying to sell alt items back to … (#3917) @fryguy503 2024-01-08
  • Backstab Damage Modifier (#3908) @fryguy503 2024-01-08
  • Classic Tradeskill Skill Clamp (#3914) @fryguy503 2024-01-08
  • Classic Triple Attack (#3903) @fryguy503 2024-01-08
  • Ensure mana taps only effect NPC's that have mana. (#3907) @fryguy503 2024-01-08
  • Over Taunt Hate (#3900) @fryguy503 2024-01-08
  • Stun Chance Percent Rule (#3922) @fryguy503 2024-01-08
[22.40.0] - 1/7/2024
  • Resist Spell Fix (#3840) @dariusuknuis 2024-01-07
  • Negative Aggro Fix (#3866) @fryguy503 2024-01-07
  • Convert Clear/Delete/Get/Update of Character Item Recast to Repositories (#3857) @kinglykrab 2024-01-07
  • Convert Delete/Load/Remove/Save of Character AA to Repositories (#3849) @kinglykrab 2024-01-07
  • Convert Delete/Load/Save of Character Bandolier to Repositories (#3845) @kinglykrab 2024-01-07
  • Convert Delete/Load/Save of Character Disciplines to Repositories (#3850) @kinglykrab 2024-01-07
  • Convert Delete/Load/Save of Character Leadership Abilities to Repositories (#3847) @kinglykrab 2024-01-07
  • Convert Delete/Load/Save of Character Material to Repositories (#3846) @kinglykrab 2024-01-07
  • Convert Delete/Load/Save of Character Spells to Repositories (#3842) @kinglykrab 2024-01-07
  • Convert Delete/Save of Character Memmed Spells to Repositories (#3841) @kinglykrab 2024-01-07
  • Convert Load/Save of Character Bind to Repositories (#3851) @kinglykrab 2024-01-07
  • Convert Load/Save of Character Buffs to Repositories (#3855) @kinglykrab 2024-01-07
  • Convert Load/Save of Character Currency to Repositories (#3848) @kinglykrab 2024-01-07
  • Convert Load/Save of Character Data to Repositories (#3839) @kinglykrab 2024-01-07
  • Convert Load/Save of Character Potion Belt to Repositories (#3844) @kinglykrab 2024-01-07
  • Convert Load/Save of Character Skills to Repositories (#3843) @kinglykrab 2024-01-07
  • Convert Load/Update of Character Alternate Currencies to Repositories (#3856) @kinglykrab 2024-01-07
  • Convert NoRentExpired to Repositories (#3860) @kinglykrab 2024-01-07
  • Convert Load/Save of Character Auras to Repositories (#3854) @kinglykrab 2024-01-07
  • Fix crash where Raid invite could be accepted after forming group with the Raid invitor. (#3837) @Aeadoin 2024-01-06
  • Break Trader if moved (#3862) @fryguy503 2024-01-07
  • Formula Addition (40+ Harm Touch) (#3870) @fryguy503 2024-01-07
  • Legacy Fizzle Code (#3868) @fryguy503 2024-01-07
  • Legacy Manaburn Rule (#3872) @fryguy503 2024-01-07
  • Add locations where melee can be bound outside of a city. (#3887) @fryguy503 2024-01-07
  • Amplification should not benefit from instrument mods (#3898) @fryguy503 2024-01-07
  • Bard Caster Level Fixes (#3883) @fryguy503 2024-01-07
  • Buff Sync (#3896) @fryguy503 2024-01-07
  • Cancel Magic SE fix (#3890) @fryguy503 2024-01-07
  • Class Trainers dont steal your money! (#3864) @fryguy503 2024-01-07
  • Clear Ramp when Clearing hate (#3892) @fryguy503 2024-01-07
  • DI/Death Pact Fix (#3867) @fryguy503 2024-01-07
  • Depop Charm Pet and Detach Debuffs on Evacuate (#3888) @fryguy503 2024-01-07
  • Dire Charm Reset (#3875) @fryguy503 2024-01-07
  • Disciplines Getting Focuses Fix (#3884) @fryguy503 2024-01-07
  • Fix issue with 9th/10th inventory slot (#3835) @kinglykrab 2024-01-03
  • Fix typo on ZoneDatabase::LoadPetInfo (#3871) @kinglykrab 2024-01-07
  • Harm Touch Unholy Disc Type (#3874) @fryguy503 2024-01-07
  • Prevent QS Crashes (#3877) @fryguy503 2024-01-07
  • Rez Effects Stacking (#3882) @fryguy503 2024-01-07
  • Rez in zone clear aggro (#3895) @fryguy503 2024-01-07
  • Rune Invis Break (#3893) @fryguy503 2024-01-07
  • Snare and DOT Stacking (#3897) @fryguy503 2024-01-07
  • Swim Skillup and Underwater Fall Damage Fix (#3885) @fryguy503 2024-01-07
  • Swimming Rules Adjustment and Racial (#3889) @fryguy503 2024-01-07
  • Target Locked Pet Taunt (#3894) @fryguy503 2024-01-07
  • Vampiric Embrace Fixes (#3873) @fryguy503 2024-01-07
  • Casting Charm on over level = Aggro (#3886) @fryguy503 2024-01-07
  • Classic Invite Requires Target (#3878) @fryguy503 2024-01-07
  • Evac Aggro Wipe (#3880) @fryguy503 2024-01-07
  • Mounts will wear off on zone (#3865) @fryguy503 2024-01-07
  • PC Push and NPCtoNPC Push (#3879) @fryguy503 2024-01-07
  • RequireMnemonicRetention for Spells 9-12 Rule (#3876) @fryguy503 2024-01-07
  • Resist Softcap rules (#3863) @fryguy503 2024-01-07
  • Restrict Finishing Blow to only Fleeing NPC's. (#3869) @fryguy503 2024-01-07
  • Undead Aggro (#3881) @fryguy503 2024-01-07
  • FD and Sneak break when cast on adjustments. (#3861) @fryguy503 2024-01-07
Fixed an issue where if someone had an account created on and they changed their password in EQEmulator forums, will now link the new password
Changelog found here:

[22.39.0] - 12/27/2023
  • Fix character copier due to schema change (#3805) @Akkadius 2023-12-28
  • Disarm was not dropping item to ground due to bug (#3811) @noudess 2023-12-27
  • Remove "No objects to load for zone" error message (#3807) @Akkadius 2023-12-28
Player Events
[22.38.0] - 12/26/2023
  • Remove unnecessary error on SetItemReuse (#3795) @nytmyr 2023-12-20
  • Consolidate GetHateRandom(), GetHateRandomBot(), GetHateRandomClient(), and GetHateRandomNPC() (#3794) @kinglykrab 2023-12-25
  • Race constants refactor (#3782) @Akkadius 2023-12-23
  • Add a rule to disabled using common_food_ids from the list in forage.cpp. currently set to enabled. (#3796) @regneq 2023-12-22
  • Support for multiple emotes per type, emote variables (#3801) @regneq 2023-12-25
Quest API
  • Add GetHateTopBot(), GetHateTopClient(), and GetHateTopNPC() to Perl/Lua (#3793) @kinglykrab 2023-12-22
  • Add SummonItemIntoInventory() to Perl/Lua (#3797) @kinglykrab 2023-12-22
[22.37.0] - 12/18/2023
  • Add ScanCloseMobs support to fix AEs (#3786) @nytmyr 2023-12-18
  • Expand ^itemuse options (#3756) @nytmyr 2023-12-17
  • Fix ^defensive from checking aggressive disciplines. (#3787) @nytmyr 2023-12-18
  • Fix ^oo autodefend from sending bots/pets to invalid haters (#3772) @nytmyr 2023-12-16
  • Fix unnecessary failed to save timer error (#3788) @nytmyr 2023-12-18
  • [Quest API] Add ^clickitem, ^timer, fix GetBestBotSpellForCure (#3755) @nytmyr 2023-12-17
  • Switch to use clang for Linux builds (speed) (#3777) @Akkadius 2023-12-17
  • Use pre-compiled headers for Windows (speed) (#3778) @Akkadius 2023-12-18
  • Drop Invisibility when hit by traps (#3785) @kinglykrab 2023-12-18
  • Fix NPCs routing to 0.0, 0.0 on #summon (#3780) @kinglykrab 2023-12-18
  • Fix bad merge @Akkadius 2023-12-17
  • Fix issue with HOTBonusHealingSplitOverDuration Rule (#3776) @kinglykrab 2023-12-17
  • Fixed the discrepacy with time using command #time and in quests. (#3767) @regneq 2023-12-17
  • Send Entity ID in Death Events to resolve #3721 (#3779) @kinglykrab 2023-12-18
Quest API
  • Add EVENT_ALT_CURRENCY_GAIN and EVENT_ALT_CURRENCY_LOSS to Perl/Lua (#3734) @kinglykrab 2023-12-17
  • Add EVENT_CRYSTAL_GAIN and EVENT_CRYSTAL_LOSS to Perl/Lua (#3735) @kinglykrab 2023-12-17
  • Add EVENT_LDON_POINTS_GAIN and EVENT_LDON_POINTS_LOSS to Perl/Lua (#3742) @kinglykrab 2023-12-17
  • Add EVENT_LEVEL_UP and EVENT_LEVEL_DOWN to Bots (#3750) @kinglykrab 2023-12-17
  • Add EVENT_LOOT_ADDED to Perl/Lua (#3739) @kinglykrab 2023-12-17
  • Add GetNPCAggro() and SetNPCAggro() to Perl/Lua (#3781) @kinglykrab 2023-12-18
[22.36.0] - 12/16/2023
  • Add rule to toggle DT hitting owner (#3757) @nytmyr 2023-12-11
  • Enable auto-saving of bots. (#3758) @nytmyr 2023-12-13
  • Fix /corpse command regression from #3727 (#3770) @Akkadius 2023-12-16
  • Make it clearer to users that a database backup is occurring (#3769) @Akkadius 2023-12-16
  • When database version is greater than binary, we are up to date (#3771) @Akkadius 2023-12-16
  • Change empty object loading to warning (#3759) @nytmyr 2023-12-11
[22.35.0] - 12/10/2023
  • Add BotHealOnLevel to fully heal/mana on level. (#3745) @nytmyr 2023-12-08
  • Fix bots learning spells on level (#3744) @nytmyr 2023-12-08
  • Fix blocked spells regression from #3638 (#3753) @joligario 2023-12-11
  • PR 3638 Missed the blocked spells repository updates (#3748) @fryguy503 2023-12-08
  • Alliance line is only allowed 1 faction change at a time. (#3718) @noudess 2023-11-26
Quest API
  • Import items into items_new table instead of writing directly to the existing items table. (#3725) @joligario 2023-11-30
  • Revert database engine change from #3702. (#3736) @joligario 2023-12-03
  • Update 13th Floor Import Tool (#3702) @joligario 2023-11-26
[22.34.2] - 11/23/2023
  • Add "IgnoreLevelBasedHasteCaps" rule to GetHaste() (#3705) @jcr4990 2023-11-23
  • Fix bots/Mercenaries being removed from hatelist (#3708) @kinglykrab 2023-11-23
  • Fix some spell types failing IsValidSpellRange check (#3707) @nytmyr 2023-11-23
  • Update ticket login table structure (#3703) @KimLS 2023-11-22
[22.34.1] - 11/20/2023
Hotfix for world not spamming save messages by setting to detail level logging @Akkadius 2023-11-20
I will be doing some server housekeeping later tonight and servers will be going down for roughly an hour or two while I make a series of moves and upgrades. It could get done much faster but expect longer.
See changelog for details

[22.32.0] - 11/6/2023

  • Fix invalid races from being created (#3681) @nytmyr 2023-11-06
  • Fix crash on CentOS when forming a raid with PCs or BOTs (#3676) @neckkola 2023-11-06
  • Cleanup Spire Parsing for crosszonemoveplayerbycharid (#3674) @Kinglykrab 2023-11-04
  • Cleanup Spire Parsing for crosszonemoveplayerbyexpeditionid (#3671) @Kinglykrab 2023-11-04
  • Cleanup Spire Parsing for crosszonemoveplayerbygroupid (#3673) @Kinglykrab 2023-11-04
  • Cleanup Spire Parsing for crosszonemoveplayerbyguildid (#3672) @Kinglykrab 2023-11-04
Quest API
  • Add GetBaseRaceName() to Perl and Lua (#3668) @joligario 2023-11-01
  • Add details to Lua event dispatch errors (#3679) @hgtw 2023-11-06
  • Split spawn2 enabled into its own state table (#3664) @Akkadius 2023-11-06
  • Added IsNightTime() for Dance of the Fireflies (#3667) @regneq 2023-11-04
[22.31.3] - 10/31/2023

  • Revert " Fix spell in AESpell related to beacons " (#3659) @Akkadius 2023-10-31
  • Fix issue with blocked spells not loading properly @Akkadius 2023-10-31
[22.31.2] - 10/31/2023

  • Hotfix issue with beacon spells crashing @Akkadius 2023-10-31
[22.31.1] - 10/31/2023

  • Hotfix issue with blocked spells not loading properly @Akkadius 2023-10-31
[22.31.0] - 10/29/2023

  • Fix crash when client pointer does not exist during #hotfix (#3661) @Akkadius 2023-10-29
  • Fix spell in AESpell related to beacons (#3659) @Akkadius 2023-10-29
  • Revert " Reload perl quests on zone bootup " (#3648) @Akkadius 2023-10-26
[22.30.2] - 10/26/2023

Revert Perl regression in #3648 causing scripts to not reliably initialize on zone bootup. @Akkadius 2023-10-26

[22.30.1] - 10/24/2023

[22.30.0] - 10/23/2023

  • Implement eqemu-perl for Linux (#3652) @Akkadius 2023-10-24
  • Reload perl quests on zone bootup (#3648) @hgtw 2023-10-24
  • Disallow effect of alliance line when cast on pets. (#3650) @noudess 2023-10-24
[22.29.1] - 10/21/2023

[22.29.0] - 10/20/2023

  • Add Expansion and Content Flag support to Blocked Spells (#3638) @Kinglykrab 2023-10-20
  • Fix crash when checking Bot Group/Raid membership (#3641) @Aeadoin 2023-10-20
  • Add rule to configure max number of procs per round Combat:MaxProcs (#3640) @Akkadius 2023-10-20
[22.28.1] - 10/20/2023

  • Perl Linux build fix
[22.28.0] - 10/15/2023

Parser Fix
Quest API
  • Add GrantAllAAPoints() to Perl/Lua and Modify #grantaa (#3616) @Kinglykrab 2023-10-14
  • Add target ID and spell exports to events (#3620) @Kinglykrab 2023-10-15
[22.27.0] - 10/07/2023

  • Add Validation to #find, #set, and #show args (#3598) @Kinglykrab 2023-09-18
  • Ensure Linux builds report failures @Akkadius 2023-10-03
  • Fix #show group_info Popup (#3605) @Kinglykrab 2023-10-04
  • Fix swarm pet names to use '_' instead of ' ' (#3601) @noudess 2023-09-19
  • Invis vs. Undead/Animal Breaks Charm for Pets (#3587) @crdunwel 2023-09-19
  • Change pathing log messages from Error to Pathing. (#3604) @joligario 2023-09-29
Quest API
  • Add Caster ID Parameter to FindBuff in Perl/Lua (#3590) @Kinglykrab 2023-09-29
Get ready for the spooktacular season coming up!

Please report any bugs and we will fix them as soon as possible.
The Beginning


The Dragons of Norrath expansion was announced on January 11, 2005, and went live on February 15, 2005. The initial expansion announcement may be found here. The initial patch message may be found here.

Download < PEQ Patch Files v11 > HERE

What's Going On


  • A series of events has transpired across the world of Norrath and the familiar faces of Firiona Vie and her nemesis Lanys T`Vyl return to find themselves at the forefront of these events. Unbeknownst to them, a dark influence has seeped into the world of Norrath causing new tensions to arise and conflicts to intensify as the dawn of a new age emerges. The Age of War is upon the people of Norrath and heroes return in this ultimate, unending battle between good and evil.
  • A gnome mining expedition has managed to dig their way through the northern mountains in Lavastorm. They came upon the dragon nesting grounds, a previously unexplored part of northeastern Antonica which is full of Nest dragons, dragonkin and goblins; and thriving with wildlife.
What's New

  • The Guild Hall is your guild's own instanced zone, including guild bank, a portal to many druid/wizard destinations, and buff stoppage.
  • The Guild Lobby (now available to everyone) is a place for guilds to recruit and for players to summon their corpses.
  • New Models: Dragons, Stone Sentinels, Kirins, Drakes, Spiders, Pumas, Dervishes.
  • New AAs retrieved through Dragons of Norrath progression.
  • In order to progress through this expansion, you would be advised to pick a faction and stick with it. You have two to choose from: The good-aligned Norrath's Keepers or the evil-aligned Dark Reign. Neither faction has any effect on any other zones in EverQuest.
  • Both factions have camps set up in the network of caves in Lavastorm's north. In addition to these two camps, there is a group of Wayfarers to the south-southeast of the caves who also offer tasks.
  • Completing tasks (both groups and raids) yields X amount of Radiant Crystals or Ebon Crystals, which can be used to purchase items and augmentations from adventure merchants Tatsujiro the Serene (for the Norrath's Keepers) and Xeib Darkskies (for the Dark Reign).
  • Faction is gained by completing tasks and turning in the token you receive after each task. These tokens are LORE, so you need to make the turn-in after each task completed for maximum faction gains.


A Breakdown of Static Zones
  • Guild Lobby (all levels; entered through the Plane of Knowledge)
  • Guild Hall (all levels; entered through the Guild Lobby; must be guilded)
  • The Broodlands (40th-60th level; entered through the northern caves of Lavastorm)
  • Lavaspinner's Lair (45th-60th level; entered through the Broodlands)
  • Tirranun's Delve (45th-65th level; entered through Lavaspinner's Lair)
  • Stillmoon Temple (55th-65th level; entered through the Broodlands)
  • The Ascent (60th-70th level; entered through Stillmoon Temple)
  • Thundercrest Isles (60th-70th level; entered through the Broodlands)
  • The Accursed Nest (70th level; entered through the dropdown in the rocks centered in the Broodlands lake)
A Breakdown of Instanced Zones
  • Lavaspinner's Lair (instanced) (missions available for 60th-70th level; multiple entrances through the Broodlands)
  • Tirranun's Delve (instanced) (missions available for 60th-70th level; multiple entrances through the Broodlands)
  • Stillmoon Temple (instanced) (missions available for 60th-70th level; multiple entrances through the Broodlands)
  • The Ascent (instanced) (missions available for 60th-70th level; multiple entrances through the Broodlands)
  • Thundercrest Isles (instanced) (missions available for 60th-70th level; multiple entrances through the Broodlands)
  • The Accursed Nest (instanced) (missions available for 70th-75th level; multiple entrances through the Broodlands)
Travel to the Dragons of Norrath
  • The Broodlands are entered through the cave system in Lavastorm's north.
Above source Allakhazam

Developers Diary on Dragons of Norrath


It's here! Finally! After roughly 5 too long years of development, blockers, struggles, we eventually and finally accomplished what felt so massive and impossible when we started. The major blocker being a massive new system that needed to be implemented, Shared Tasks (amongst many other blockers and challenges). At the time PEQ didn't even have Dynamic Zones or Expeditions and used not so great workarounds to implement both. Today, we have Shared Tasks which also use Dynamic Zones, Expeditions also use Dynamic zones and a tremendous amount of time in effort went into all of them. Combined, the effort(s) were well over 1-2 years worth of work alone to implement all of the above said systems.

Content Framing

We also had a major obstacle of collecting base content for the making of the zones. Years ago Drogerin started by hand placing NPC's in the Nest. Manually setting their appearance, size, texture, movement etc. While Drogerin's work ethic was unreal and I had no doubt he would literally do all of the zone by hand, we needed a better way to frame the zones in. Same could be said for Huffin who were both working hard at making Dragons of Norrath happen even though the challenges ahead were monumental.

Content Collection

Historically, we framed zones through packet collection tools where we would at least capture NPC spawns, appearances, doors, objects and all of their respective locations. While data collection tools are a massive help for framing a zone, we still needed to do a LOT of work grooming the content. For example, grids still need to be groomed, loot needs to be done entirely manually, factions, quests, merchants, scripts, updates, task data, task implementation, respawn times, quest interaction, sequencing, flagging. None of that is talking about the major systems we needed to implement to bolt on-top of it all and the massive investments in tooling to make developing it all simple.

Content Import

We worked with Maudigan from to build a data collection tool using MQ2 cleverly called TakeADump which will dump doors, ground items, merchant lists, npcs, zone data, zone points to dumps which can then be translated using a tool we wrote called Monocle to import directly into our data models. You can see this video where I import dumps collected from both Drogerin and Huffin by going into every instance and task on live. This was already 4 years ago and this was our first major hurdle completed. The same tool was able to be used for other expansions and content as well.

After importing the roughly framed content, lots of work went into parsing by Drogerin and Huffin to tune major NPC encounters, loot, grids, framing the scripting for events independent of all of a major component, tasks. Shared Tasks were still the missing but giant elephant in the room that needed to be tackled. Years went on as various developers attempted to start an interpretation of the system, but got walled by its complexity and and enormity of the project and it sat, multiple times.

Shared Tasks

In 2021, I decided I was going to move a lot of my other projects to the background to start prioritizing getting Shared Tasks moving since it had lost all momentum multiple times by the several different folks who attempted it. I scoped out the project and started my plans for how I was going to tackle the behemoth. I put together a design doc which shaped the rough idea of how the project were to be executed and what was needed to be done. It also required heavy cleanup of the existing Task code to even consider how we were going to bolt on a wildly complex system on top of it and keep it simple and intuitive enough for other developers to maintain and content creators to consume.

After scoping out the project, it took some convincing but I was able to get @hg who was a massive help and co-contributor to making Shared Tasks possible. If you don't know HG he was a player on PEQ and one day decided to take a stab at Expeditions and Dynamic Zones and beautifully executed them. I really enjoyed working with someone so brilliant, easy to work with as we tackled the monstrosity that was Shared Tasks. We formulated our plans, iterated on them, learned from it, iterated our plans some more, went on code binges on each parts of our implementations and found ourselves burnt out many a time, only to pick ourselves back up to keep going. Hitting a project like this for as long as we did was a difficult, stale, lengthy process and having each other to keep synergy going was key.

ProjectEQ Expansions

There's been a lot of work behind the scenes over the years to enable the server technologically the capability of classifying content and data to be within an era. Classifying data is still an ongoing effort and whilst not perfect, we are and have been making massive strides in this area.

ProjectEQ is the foundational database that is used in every EverQuest Emulator server installation and is the open source "source of truth" for Live-like content. While being the defacto standard, that does not mean that it is perfect, in many ways is far from it. Many projects have forked from it and made significant improvements to various eras of the EverQuest experience. The emulator community as a whole continues to make lots of progress here, sometimes other projects have to take the foreground for a while until we can get back to certain workstreams.

Some servers have areas of content that is far true to era in ways and with the technology to more easily move a server between eras and content settings, it allows us to move between settings in a matter of small settings changes rather than huge one-way, non-reversible data changes which is how ProjectEQ and all servers have operated until recent years. We have strong members of the community who have been helping contribute back their changes into ProjectEQ content that is more true to era as we progress both forward in expansions and also backwards. We continue to improve our technology, tooling, processes here and we're finally starting to see the first major shift on the current PEQ Production server.

PEQ Server Era Changes

ProjectEQ has for the longest time been considered in no specific era or expansion. It is a mish-mash of current and past, with no sensible boundaries. We use an EverQuest client in the Rain of Fear era while most of the players are playing through Omens of War expansion. Some zones have items, spells, from an era far past Omens of War and even playable character races.

PEQ will be shifting from no expansion or (all expansions) into the current expansion context with the release of Dragons of Norrath. That means that while things won't be perfect, we can start to think of a lot of our data from the lens of the current era and make changes, tweaks from the perspective of the era. It also allows us to classify things in earlier expansions and later expansions which will make the ProjectEQ database more fluid for anyone who installs their own server to chose what experience they want to play on as we the project matures.

While we realize that making this change, it will inevitably take things away that players have been used to utilizing and benefiting from that is out of era. Taking things away is not fun from the player perspective and changes that do so should be attempted to be done as sensibly as we can. We are going to try our best to grandfather out of era features and things where it makes sense such as quality of life client features out of era and doesn't impact the experience tremendously.

Other servers that use PEQ can choose to be more strict about their era experiences while we will try to stay mostly true to form, we can certainly make small exclusions here and there where it does make sense. Some of that we will leave up to player feedback on the forums as to what should be done with things that may have been undecided on and we can make a call. It also doesn't mean that when PEQ has other variants of servers out for player use, some rule-sets can't be more stricter in some sense as well to be even truer to the era changes through progression.

In general, if players feel something should be changed. Please utilize the forums to report and make the case for what you feel should be changed.

Special Thanks

None of this would be possible if it wasn't for a ton of work by very few individuals.
  • @huffin for his unrelenting dedication to PEQ. PEQ most certainly wouldn't be what it is today without his help. Massive contributor to content. He is always tweaking, tuning, fixing, correcting silently behind the scenes and does so without much thanks. I and the community are forever grateful for his selfless contributions and incredible hard work.
  • @Drogerin for his huge contributions during the early phases of Dragons of Norrath. Drogerin was a huge help to the PEQ community helping out in all ways content. Huffin and Drogerin worked closely together on many things.
  • @huffin and @Drogerin worked together closely during the early days of Dragons of Norrath, collecting zones, tuning encounters, building boss event scripts, parsing, scaling zones, applying pathing.
  • @joligario for being a long-time champion of PEQ. Always helpful on the forums, being the sole maintainer of the PEQ editor enabling content developers to do more for the community, fixing broken scripts, helping players and so much more.
  • @hg for being the silent hero who if it weren't for him, I wouldn't be writing this right now. He was instrumental in building Expeditions, Dynamic Zones, Shared Tasks, building out all of the Dragons of Norrath progression, sequencing, framing in all of the tasks and all of the missions for Dragons of Norrath.
  • @robregen a long time PEQ veteran who went to build the The Al`kabor Project for years and is now coming back with all of his content learnings to help make PEQ better. Robregen is an amazing person who has selflessly helped so many people in the community.
  • @Trust for continuing to take his learnings from running Wayfarers Haven (a variant of The Al`Kabor Project) and continuing to give back and also make PEQ better. Trust has been a valuable member of the emulator community and has done many things to improve PEQ from his work on Wayfarers. I'm sure he will certainly help Dragons of Norrath as well once his project is exposed to the expansion as well

Changelog Notes

Era-Related Changes

  • Akkadius AA's are now era contextual. Only the AA's that were available during Dragons of Norrath will be loaded and available. There is no grandfathering here. Veteran AA's will remain as they were.
  • Huffin Spells acquired for Dragons of Norrath through the Plane of Knowledge library prior to the expansion will no longer be scribed on characters and will need to be acquired through the means of the expansion content.
Character Select

  • Akkadius Drakkins are no longer able to be created during character select. If you had a Drakkin created prior to this change you are grandfathered in and still will be able to play said character.
Guild Hall / Guild Lobby
  • Akkadius Consolidated Guild Hall versions to the current era. No longer will clients be bouncing between different versions. (Make sure you download patch files)
  • Akkadius Consolidated doors between Guild Hall and Guild Lobby to be consistent and not different based on client versions
Plane of Knowledge

  • Robregen Added the pre-SoD era Guardians and set the appropriate min and max expansion flag.
  • Robregen Added the pre-VoA era Spell Merchants and set the min and max expansion flag.
  • Robregen Aligned the Bazaar and Guild Lobby to set more appropriate to live and set those doors to appropriate min and max expansion flag.
  • Robregen Set the Crescent Portal to correct expansion.
  • Robregen Fixed headings to Class Tome Merchant NPC.
  • Akkadius No longer will players be able to zone to out of era zones. Zones that were not available during Dragons of Norrath will not be available to zone to regardless of the client you have. If there are challenges due to v1/v2 versions of zones that players run into, we will fix and come up with a remediation plan to address it. If you have spells that bring you to out of era zones, you will be prevented from zoning.
  • Akkadius If you are camped in a zone that is out of era, you will be brought in era.
  • Akkadius If you are bound in a zone that is out of era, you will be brought in era.
Feedback, Reporting Bugs

To provide feedback on Dragons of Norrath or anything content related. Feel free to use the forums, you also can use the new /bug functionality. We will be using /bug more to triage issues in-game.
See below for release notes in this server code update.

[22.21.2] - 07/19/2023

  • Fix rarer same bucket name scoping overlap issue (#3509) @Akkadius 2023-07-20
[22.21.1] - 07/18/2023

  • Show Petition and Show Petition_Info fix (#3503) @fryguy503 2023-07-18
  • Remove arbitrary teleport blocking in Tutorial and Load zones (#3506) @Valorith 2023-07-19
  • Fix issue with expired databuckets not being expired and returned properly (#3504) @Akkadius 2023-07-18
[22.21.0] - 07/18/2023

Data Buckets
  • Fix rule check and add rule for pickpocket command (#3492) @tuday2 2023-07-16
Quest API
Z Clipping
  • Don't issue zclip adjustments when NPC is not moving (#3499) @Akkadius 2023-07-16
[22.20.1] - 07/15/2023

  • Fix database manifest entry for #3443 @neckkola 2023-07-15
[22.20.0] - 07/15/2023

  • Remove orphaned commands related to botgroup (#3489) @tuday2 2023-07-09
  • Consolidate #set-like commands into a singular #set command (#3486) @kinglykrab 2023-07-15
  • Add Support for item textures higher than 65,535 (#3494) @kinglykrab 2023-07-14
  • Update raid features (#3443) @neckkola 2023-07-13
  • Fix Tradeskill Combines with augmented items (#3490) @kinglykrab 2023-07-15
  • Fix charmed pets to follow when charmed. (#3488) @noudess 2023-07-08
  • Update bot naming check and add more explanation (#3491) @tuday2 2023-07-13
Quest API
[22.19.0] - 07/08/2023

  • Add Pickpocket Command (#3484) @tuday2 2023-07-08
  • Move #find item summon links to front (#3483) @kinglykrab 2023-07-05
  • Remove LoadItemDBFieldNames() from common/misc.cpp and common/misc.h (#3473) @kinglykrab 2023-07-04
  • Fix _PutItem having a slot_id of -1 on mobs with no items (#3474) @kinglykrab 2023-07-04
  • Add Skills:TrivialTradeskillCombinesNoFail Rule (#3481) @JasXSL 2023-07-05
[22.18.0] - 07/04/2023

  • Add chatchannel_reserved_names to a new manifest (#3482) @kinglykrab 2023-07-04
  • Fix issue in zone store of returning reference to local variable (#3477) @kinglykrab 2023-07-04
[22.17.0] - 07/03/2023

  • Remove LoadItemDBFieldNames() from common/misc.cpp and common/misc.h (#3473) @kinglykrab 2023-07-04
  • Remove handle_npc_single_npc from zone/lua_parser_events.cpp and zone/lua_parser_events.h (#3467) @kinglykrab 2023-07-03
  • Set multi statements off when returning early (#3462) @Akkadius 2023-07-01
  • Add Strings::BeginsWith() and Strings::EndsWith() (#3471) @kinglykrab 2023-07-03
  • Add check for underscores in botcreate command (#3458) @tuday2 2023-06-29
  • EVENT_LANGUAGE_SKILL_UP in Lua was using EVENT_SKILL_UP logic (#3466) @kinglykrab 2023-07-03
  • Fix _PutItem having a slot_id of -1 on mobs with no items (#3474) @kinglykrab 2023-07-04
  • Fix data type of GetAggroCount() (#3470) @kinglykrab 2023-07-03
  • Fix logging crash when % are sent through query logs (#3461) @Akkadius 2023-07-01
Quest API
[22.16.0] - 06/27/2023

  • Fix database version checking edge case issue (#3428) @Akkadius 2023-06-22
  • Fix multi-statement error reporting (#3425) @Akkadius 2023-06-19
  • Implement native database migrations in server (#2857) @Akkadius 2023-06-19
  • Fix NPC Item Stat Bonuses (#3444) @kinglykrab 2023-06-26
  • Fix error in 023_01_21_bots_raid_members.sql (#3453) @mibastian 2023-06-28
  • Fix possible crash with #npcedit weapon (#3421) @kinglykrab 2023-06-19
  • Merchant Open Flag set only for regular Merchants (#3454) @kinglykrab 2023-06-27
[22.15.3] - 06/19/2023

[22.15.2] - 06/19/2023

[22.15.1] - 06/19/2023

  • Add chatchannel_reserved_names table to database_schema.h
[22.15.0] - 06/19/2023

  • Default skill type to Hand to Hand in #npcedit meleetype (#3422) @kinglykrab 2023-06-19
  • Implement native database migrations in server (#2857) @Akkadius 2023-06-19
[22.14.1] - 06/18/2023

  • Move world database:dump to use MySQL credentials file (#3410) @Akkadius 2023-06-17
  • Add support for static linking (portable) binaries (#3417) @Akkadius 2023-06-18
  • Add query multi statement execution support (#3414) @Akkadius 2023-06-17
  • Add Water Line of Sight Checks (#3408) @nytmyr 2023-06-17
  • Logging improvements, console silencing, terminal coloring (#3412) @Akkadius 2023-06-17
Quest API
  • Fix bug when using /tar on invalid target (#3407) @noudess 2023-06-17
  • Add cross zone/world wide cast and move functionality to Telnet (#3409) @kinglykrab 2023-06-17
[22.13.1] - 06/13/2023

[22.13.0] - 06/12/2023

  • Add GMFind_Struct to packet structures (#3402) @kinglykrab 2023-06-12
  • Remove CHECK_LOS_STEP from zone/common.h (#3398) @kinglykrab 2023-06-12
  • Remove CheckCoordLosNoZLeaps() from zone/entity.cpp and zone/entity.h (#3384) @kinglykrab 2023-06-12
  • Remove CountTempPets() from zone/entity.cpp and zone/entity.h (#3390) @kinglykrab 2023-06-12
  • Remove Evade() from zone/entity.cpp and zone/entity.h (#3394) @kinglykrab 2023-06-12
  • Remove GateAllClients() from zone/entity.cpp and zone/entity.h (#3391) @kinglykrab 2023-06-12
  • Remove GetClient(ip, port) from zone/entity.h (#3386) @kinglykrab 2023-06-12
  • Remove GetClientCount() from zone/entity.cpp and zone/entity.h (#3392) @kinglykrab 2023-06-12
  • Remove GetGroupByBot(), GetRaidByMob(), and GetRaidByLeaderName() from zone/entity.cpp and zone/entity.h (#3387) @kinglykrab 2023-06-12
  • Remove InteractiveChat() and TakenAction() from zone/npc.h (#3382) @kinglykrab 2023-06-12
  • Remove LimitCheckBoth() from zone/entity.cpp and zone/entity.h (#3393) @kinglykrab 2023-06-12
  • Remove NPC::AddCash() from npc.cpp/npc.h (#3380) @kinglykrab 2023-06-09
  • Remove RemoveMob() and RemoveRaid() from zone/entity.cpp and zone/entity.h (#3389) @kinglykrab 2023-06-12
  • Remove SPECIALIZE_MANA_REDUCE from zone/common.h (#3400) @kinglykrab 2023-06-12
  • Remove SendAATimer() from zone/entity.h (#3388) @kinglykrab 2023-06-12
  • Remove WriteEntityIDs() from zone/entity.cpp and zone/entity.h (#3395) @kinglykrab 2023-06-12
  • Remove _BECOMENPCPET() and _NPCPET() from zone/common.h (#3399) @kinglykrab 2023-06-12
  • Remove pDBAsyncWorkID from zone/entity.h (#3385) @kinglykrab 2023-06-12
  • Remove struct DynamicZoneSafeReturn from zone/entity.h (#3396) @kinglykrab 2023-06-12
  • Remove struct TradeEntity from zone/common.h (#3397) @kinglykrab 2023-06-12
  • RandomizeFeatures and SetGender were killing db texture (#3376) @noudess 2023-06-06
  • Fixed statements that logged incorrect data (#3381) @noudess 2023-06-07
Quest API
  • /tar should not untarget existing target (#3383) @noudess 2023-06-12
[22.12.0] - 05/29/2023

  • Intoxication setter/getter for source, getter for Perl/Lua (#3330) @JasXSL 2023-05-03
  • #augmentitem bypasses augment restrictions (#3332) @kinglykrab 2023-05-07
  • Fix Heroic INT/WIS Bonuses (#3341) @RekkasGit 2023-05-15
  • Fix duplicate messages in #npcedit (#3372) @kinglykrab 2023-05-21
  • Fix issue with Group Pointers/Member roles (#3374) @Aeadoin 2023-05-25
  • Fix mob item bonus calc (#3334) @Akkadius 2023-05-07
  • Fix typos in #zheader (#3370) @kinglykrab 2023-05-21
  • Mob scaling issue with min dmg set to zero while max dmg is not (#3351) @RekkasGit 2023-05-20
  • NPC Armor Upgrade to a slot not handled correctly (#3366) @noudess 2023-05-20
  • ReloadQuests() on Zone::Init() to avoid cached global quests/plugins (#3333) @kinglykrab 2023-05-07
  • Revert " ReloadQuests() on Zone::Init() to avoid cached global quests/plugins " (#3333) @Akkadius 2023-05-08
Memory Leak
  • Fix large memory leak introduced in CalcItemBonuses (#3331) @Akkadius 2023-05-07
  • Remove duplicate heal message for healing yourself (#3329) @noudess 2023-05-03
Quest API
  • Add GetHateListClosest(), GetHateListClosestBot(), GetHateListClosestClient(), and GetHateListClosestNPC() methods/overloads to Perl/Lua (#3359) @RekkasGit 2023-05-16
  • Add GetPet() to Perl (#3309) @kinglykrab 2023-05-08
  • Add Memorize and Scribe Spell Events to Perl/Lua (#3363) @kinglykrab 2023-05-25
  • Add zone data methods to Perl/Lua (#3342) @kinglykrab 2023-05-24
  • Cleanup The Darkened Sea Quest Methods Names (#3369) @kinglykrab 2023-05-21
  • Add World:MaximumQuestErrors Rule (#3349) @kinglykrab 2023-05-21
  • ResurrectionEffectBlock to prevent/allow/move buffs. (#3288) @nytmyr 2023-05-08
[22.11.0] - 04/29/2023

  • Add check for owner in quest::pausetimer() (#3304) @kinglykrab 2023-04-23
  • Add check for owner in quest::resumetimer() (#3305) @kinglykrab 2023-04-23
  • Add initiator/owner checks to various methods in questmgr.cpp (#3306) @kinglykrab 2023-04-23
  • Fix possible nullptr in quest::addloot() (#3303) @kinglykrab 2023-04-23
  • Remove GetClassHPFactor() from zone/client_mods.cpp and zone/client.h (#3313) @kinglykrab 2023-04-30
  • Remove GetClassHPFactor() from zone/merc.h (#3314) @kinglykrab 2023-04-30
  • Remove pDontCastBefore_casting_spell from zone/npc.h (#3311) @kinglykrab 2023-04-30
  • Remove unused code in zone/pets.cpp (#3310) @kinglykrab 2023-04-30
  • Remove unused methods in zone/bot.cpp and zone/bot.h (#3315) @kinglykrab 2023-04-30
  • Remove unused methods in zone/client.cpp and zone/client.h (#3312) @kinglykrab 2023-04-30
  • Remove unused variable in common/crash.cpp (#3308) @kinglykrab 2023-04-30
  • Use default ctor/dtor in oriented_bounding_box.h (#3307) @kinglykrab 2023-04-30
  • quest::createBot() unnecessary check against nullptr (#3302) @kinglykrab 2023-04-23
  • quest::setallskill() had always true condition. (#3301) @kinglykrab 2023-04-30
  • Fix UCS crash that occurs during log reloading (#3324) @Akkadius 2023-04-30
  • Fix possible dereference of nullptr in Client::CalcHPRegen (#3316) @Aeadoin 2023-04-23
  • Fix possible nullptr in Client::GetCharMaxLevelFromQGlobal() (#3317) @kinglykrab 2023-04-23
  • Add Discord webhook callback processing to world (#3322) @Akkadius 2023-04-30
  • Fix issue with NPCs no longer using some armor. (#3318) @noudess 2023-04-24
  • Fix issue with spawning Mercs (#3327) @Aeadoin 2023-04-29
  • Possible issues with SummonItem in Client::QuestReward() methods (#3325) @kinglykrab 2023-04-27
  • Update download with faster releases link (#3321) @Akkadius 2023-04-30
  • Remove duplicate you have lost a level message (#3323) @noudess 2023-04-25
Quest API
[22.10.0] - 04/22/2023

  • Only define row if we have results in Database::GetCharacterID() (#3199) @kinglykrab 2023-04-05
  • Add missing breaks and returns in bonuses.cpp (#3231) @kinglykrab 2023-04-05
  • Breaks in wrong spot in cases in spell_effects.cpp (#3297) @kinglykrab 2023-04-22
  • Cleanup always true/false statements in shareddb.cpp (#3189) @kinglykrab 2023-04-05
  • Cleanup cheap-to-copy reference to use value instead in eq_stream_ident.cpp/eq_stream_ident.h (#3209) @kinglykrab 2023-04-05
  • Cleanup discord.cpp and discord_manager.cpp (#3205) @kinglykrab 2023-04-05
  • Cleanup duplicate conditions in negate bonuses in bonuses.cpp (#3226) @kinglykrab 2023-04-05
  • Cleanup item_instance.cpp always true statements and reassigning of same values (#3187) @kinglykrab 2023-04-05
  • Cleanup macros in features.h (#3185) @kinglykrab 2023-04-05
  • Cleanup string -> char* -> string conversions in bot_command.cpp (#3252) @kinglykrab 2023-04-05
  • Cleanup unnecessary condition in Client::SendAlternateCurrencyValue() (#3266) @kinglykrab 2023-04-05
  • Cleanup zone/zoning.cpp (#3289) @kinglykrab 2023-04-14
  • Combine similar cases in Client::InitInnates() (#3260) @kinglykrab 2023-04-05
  • Convert equipable_slot_list to std::vector from std::list in bot_command.cpp (#3253) @kinglykrab 2023-04-05
  • Delete embxs.cpp/embxs.h (#3284) @kinglykrab 2023-04-14
  • Delete unused strings in bot_command.cpp (#3251) @kinglykrab 2023-04-05
  • Fix GetLastName() length check in Client::SendWindow() (#3263) @kinglykrab 2023-04-05
  • Fix always false conditions in Client::IncStats() (#3256) @kinglykrab 2023-04-05
  • Fix check for !this in Client::SendHPUpdateMarquee() (#3257) @kinglykrab 2023-04-05
  • Fix filter condition in attack.cpp (#3218) @kinglykrab 2023-04-05
  • Fix ornamentation augment icons in inspect requests (#3264) @kinglykrab 2023-04-05
  • Fix possible nullptr inst in GetSharedBank() (#3190) @kinglykrab 2023-04-08
  • Fix possible overflows in Client::AddPlatinum() and Client::TakePlatinum() (#3255) @kinglykrab 2023-04-05
  • Fix shared_tasks.cpp/shared_tasks.cpp variable named same as class member (#3192) @kinglykrab 2023-04-05
  • Fix skill_used being used as boolean in Mob::CommonDamage() (#3220) @kinglykrab 2023-04-05
  • Identical conditions right beside each other in aa.cpp (#3213) @kinglykrab 2023-04-05
  • Move unreachable code in ApplySpellsBonuses() (#3229) @kinglykrab 2023-04-05
  • Move variable definition to more relevant scope in DatabaseDumpService::Dump() (#3200) @kinglykrab 2023-04-05
  • Multiple cases with same outcome in GetDiscordPayloadFromEvent() (#3184) @kinglykrab 2023-04-05
  • Remove ExportVarComplex() from embparser.cpp/embparser.h (#3282) @kinglykrab 2023-04-14
  • Remove GetQGlobal() from qglobals.cpp/qglobals.h (#3285) @kinglykrab 2023-04-14
  • Remove IsFullHP from mob.cpp/mob.h (#3277) @kinglykrab 2023-04-14
  • Remove IsMeleeDmg() from skills.cpp/skills.h (#3279) @kinglykrab 2023-04-14
  • Remove _GetMovementSpeed() from mob.h (#3276) @kinglykrab 2023-04-14
  • Remove always true condition in Strings::Commify() (#3193) @kinglykrab 2023-04-05
  • Remove always true conditions and unreachable code in Client::SendMercPersonalInfo() (#3258) @kinglykrab 2023-04-05
  • Remove always true statement in say_link.cpp (#3188) @kinglykrab 2023-04-05
  • Remove always true statements in task_client_state.cpp (#3292) @kinglykrab 2023-04-14
  • Remove always true/false conditions from bot.cpp (#3237) @kinglykrab 2023-04-05
  • Remove bool return from GetSharedPlatinum() (#3191) @kinglykrab 2023-04-05
  • Remove extra assignment of current_endurance in Client ctor (#3261) @kinglykrab 2023-04-05
  • Remove extraneous check for NegateAttacks in SE_NegateAttacks (#3228) @kinglykrab 2023-04-05
  • Remove extraneous parentheses around math in Mob::ApplySpellsBonuses() (#3227) @kinglykrab 2023-04-05
  • Remove getd(), geti(), InUse(), lasterr(), my_get_sv(), and VarExists() in embperl.cpp/embperl.h (#3283) @kinglykrab 2023-04-15
  • Remove item_timers from questmgr.cpp/questmgr.h (#3286) @kinglykrab 2023-04-14
  • Remove pendinggroup from mob.h (#3278) @kinglykrab 2023-04-14
  • Remove position_same_update_count from client.cpp/client.h (#3280) @kinglykrab 2023-04-14
  • Remove unnecessary break in while loop in Mob::AddToHateList() (#3219) @kinglykrab 2023-04-05
  • Remove unnecessary check for IsStackable() in DeleteItem() (#3186) @kinglykrab 2023-04-05
  • Remove unnecessary condition and cleanup variable name in tasks.cpp (#3293) @kinglykrab 2023-04-14
  • Remove unnecessary conditions in Client::Consume() (#3265) @kinglykrab 2023-04-05
  • Remove unnecessary conditions in Client::FilteredMessageCheck() (#3262) @kinglykrab 2023-04-05
  • Remove unnecessary conditions in Client::SendFactionMessage() (#3267) @kinglykrab 2023-04-05
  • Remove unnecessary setting of reuse variable in Bot::DoClassAttacks() (#3233) @kinglykrab 2023-04-05
  • Remove unused SetConfigFile in common/eqemu_config.h (#3208) @kinglykrab 2023-04-05
  • Remove unused code in eq_packet.cpp/eq_packet.h (#3183) @kinglykrab 2023-04-05
  • Remove unused ctor and use default dtor in xtargetautohaters.h (#3290) @kinglykrab 2023-04-14
  • Remove unused macros in common/types.h (#3194) @kinglykrab 2023-04-05
  • Remove unused variable in Database::CopyCharacter() (#3197) @kinglykrab 2023-04-05
  • Remove unused variables and use reference in task_manager.cpp (#3291) @kinglykrab 2023-04-14
  • SE_AttackSpeed3 effect_value is always less than 0 (#3222) @kinglykrab 2023-04-05
  • SE_StrikeThrough and SE_StrikeThrough2 are the same in bonuses.cpp (#3223) @kinglykrab 2023-04-05
  • Set bonuses to use spell ID instead of boolean (#3230) @kinglykrab 2023-04-05
  • Use .clear() and .empty() instead of comparing to empty string or setting to empty string in CheckDatabaseConvertPPBlob() (#3201) @kinglykrab 2023-04-05
  • Use .clear() instead of setting string to empty in eqemu_command_handler.cpp (#3195) @kinglykrab 2023-04-05
  • Use .empty() in Client::ScribeSpells() and Client::LearnDisciplines() (#3259) @kinglykrab 2023-04-05
  • Use constant reference and check for empty string properly in dbcore.cpp (#3203) @kinglykrab 2023-04-05
  • Use default ctor instead of an empty ctor. (#3206) @kinglykrab 2023-04-05
  • Use default dtor instead of empty dtor for EQTime in eqtime.cpp/eqtime.h (#3210) @kinglykrab 2023-04-05
  • Use variable for c->GetTarget() instead of calling multiple times in bot_command.cpp (#3254) @kinglykrab 2023-04-05
  • Use variable for character instead of a loop (#3268) @kinglykrab 2023-04-05
  • Utilize .empty() instead of checking for an empty string in Database::ReserveName() (#3198) @kinglykrab 2023-04-05
  • Utilize IsTaunting(), SetPetPower(), SetPetType(), and SetTaunting() (#3275) @kinglykrab 2023-04-15
  • Validate for nullptrs in bot.cpp (#3232) @kinglykrab 2023-04-05
  • other is always defined in these cases in attack.cpp (#3217) @kinglykrab 2023-04-05
  • results variable is assigned but never used in SaveCharacterCreate() (#3180) @kinglykrab 2023-04-05
  • Add additional raid integrity checks on Bot Spawn. (#3295) @Aeadoin 2023-04-16
  • Fix crash with uninitialized item instance, and Bot timeout (#3296) @Aeadoin 2023-04-15
  • Resolve crash due to uninitialized pointer. (#3271) @Aeadoin 2023-04-08
  • Camping was causing player to leave raid, causing unexpected behavior (#3299) @Aeadoin 2023-04-22
  • Resolve loading of inventory (#3272) @Aeadoin 2023-04-08
Quest API
  • Optional summoning when already in melee range (#3204) @trentdm 2023-04-08
[22.9.1] - 04/03/2023

  • Add client pointer validation to Zone::GetClosestZonePoint() (#3173) @kinglykrab 2023-04-01
  • Change level to bot_level in Bot::DoClassAttacks() to not overlap member variable (#3239)...
Inktuta Revamp
  • DZ Based
  • Requires Cyno dead to request
  • 2 hour lockout on request
  • All fights revamped
  • Noqufiel is a completely re-written and different fight based on actual facts vs online guide garbage
  • Bonus Loot scripting functions (Can be looked up online how to specify the bonus loot item you want)
  • DZ's will lock at a specific point and prevent players from being added.
  • DZ requirements are Minimum 18 players, Maximum 54 players.

Uqua Revamp
  • DZ Based
  • Gas Chambers are re-written to be accurate and are very unforgiving, they work correctly per lives experience.
  • Anti Event skipping is in place (On live you cannot easily bypass doors as you can on the RoF2 and earlier clients)
  • Vrex fight has proper mechanics and flavor (including the npc's that act as the 3 minute timer by laying down in order each minute)
  • If you leave the construct up, and disregard the flavor warnings saying to make sure to kill it first, you will get a lockout time and no loot/key (This is live like)
  • DZ's will lock at a specific point and prevent players from being added.
  • This also includes a primals door update
  • DZ requirements are Minimum 18 players, Maximum 54 players.

The zone is still not 100% due to the inability to add proper entity based traps, but one that system is implemented I can resolve the last bit of inaccuracies.

  • Fix crash in CheckTradeskillLoreConflict (#3009) (Aeadoin) 2023-02-28
  • Account for bad data in Tradeskill Recipe Entries (#2991) (Aeadoin) 2023-02-25
  • Fix DoAnim quest method default speed (#3016) (Kinglykrab) 2023-03-01
  • Fix for Discipline Loading from Database causing issues with slot_ids (#3008) (Aeadoin) 2023-02-28
  • Fix for Lore Components where component is returned. (#3005) (Aeadoin) 2023-02-27
  • Fix issue where quest saylink responses would occur before the NPC's response (#3010) (Akkadius) 2023-03-01
  • Correct Mend reuse time and add reduction support. (#2972) (nytmyr) 2023-02-23
  • Fix Beneficial Target of Target procs (#2987) (Aeadoin) 2023-02-24
  • Fix for undefined MySQL library behavior. (#2834) (KimLS) 2023-02-25
  • Improve roambox logic (#2983) (Akkadius) 2023-02-24
  • More z-clip improvements, Wurm and Spectral Iksar race adjustments (#2988) (Akkadius) 2023-02-25
  • Smoother pathing z-correction (#2982) (Akkadius) 2023-02-24
Player Events
Quest API
  • Add IsAutoAttackEnabled() to Perl/Lua (#2979) (Kinglykrab) 2023-02-23
  • Add IsAutoFireEnabled() to Perl/Lua (#2978) (Kinglykrab) 2023-02-23
  • Fix EVENT_TIMER crash when entity is no longer available (#2986) (Akkadius) 2023-02-24
  • Add support for zone ID and instance version to NPC Scaling (#2968) (Kinglykrab) 2023-02-25
  • Improvements to general pathing
  • Mobs should clip into the ground far less
  • Recovery from clipping should also work much better
Mesh improvements to the following zones
  • Anguish
  • Ruined City of Dranik
  • Highkeep
  • Muramite Proving Grounds
  • Riftseekers
  • Tipt
  • Wall of Slaughter
  • Plane of Valor
To give you an idea of what "mesh improvements" means. NPC's adhere to a mesh when they make pathing decisions in a zone. When there are holes, it can lead to suboptimal routing and sometimes clipping to occur.

Below is Plane of Valor, before and after

Thanks for weathering the turbulence of updates recently. We appreciate you all

Double Experience through 2/27/2023