Skip to content



  • Uleat Fixed the wear change issue where the server was not translating the SoF, SoD and UF clients' update request properly.
  • Uleat Fixed the non-clickable quest reward bug triggered when the item was in a container and the player traded the item or zoned.
  • Vaion RoF: Found Opcode for Item Previews. Made base packet support so that Item Preview (Alt+Right Click) works. Still a few issues to hash out.


  • Derision RoF: Added encode/decode for BlockedBuffs and OP_FindPerson. Added opcodes for FindPerson and RestState
  • Derision RoF: Found XP/AAXP in the PP. Updated OP_ExpUpdate/OP_LevelUpdate.


  • Derision RoF: Did some work on buffs & buff removal. OP_SetChatServer2 for UCS. Encode for OP_HPUpdate


  • Derision RoF: Added Leadership AA into the PP. Few opcodes to make Track work.
  • Derision RoF: Some spell related opcodes and PetCommands struct update.
  • Vaion RoF: Fixed OP_PetCommands and OP_TargetCommand to correct opcodes. Identified OP_Jump.
  • Vaion Fix for an issue with attuneable augments and an issue in guild bank.
  • Sorvani Fix for pets causing a crash. Do not set rule > 25!
  • Trevius RoF: Corrected wearchange packet structure.
  • Trevius RoF: Added new arguments to #wc ( #wc [wear slot] [material] [ [hero_forge_model] [elite_material] ] ) * Example: "#wc 1 5 6"
  • Trevius RoF: Hero's Forge Robes can now be used with #wc by using wear slot 7 * Example: "#wc 7 6 11"
  • Akkadius Guild Bank crash fix, checking for valid items before going through the iterator

REQUIRED SQL: utils/sql/queryserv/2340_required_maxbuffslotspet.sql


  • Derision RoF: Found GM and PVP flags in PP.
  • Derision RoF: Found endurance & some group/raid leadership stuff in PP.
  • Sorvani Restricted pet buffs to 25. could be made a rule when/if the extpp gets changed to handle it.
  • Sorvani Changed a few more VS2010 projects to build as $ProjectName


  • Sorvani Removed #PRAGMA statements around OP_CharacterCreate from patch files now that real problem with RuleI is resolved.
  • Derision RoF: Found more of the Spawn_Struct bitfield values.


  • Akkadius Fixed an issue where quest::createdoor would return a door id of 0 when doors exist with version -1 (All Zones)


  • Trevius RoF * Fixed the item struct so items can be loaded properly.
  • Trevius RoF * Added back all of the opcodes that were previously identified and a few more.
  • Derision RoF * Commented out lots of Guild opcodes that were causing crashes.
  • Derision RoF * Updated RequestClientZoneChange struct and encode. Altered default Bitfields setting to only apply tyo NPCs
  • Derision RoF * Updated RoF.cpp to remove all the warnings in a Linux compile


  • Secrets Fixed the x64 portability issue reported by Akkadius. No idea how long this has been broke but at least it's fixed.


  • Sorvani Items with zero charges remaining and located in a bag will no longer get set to MaxCharges when looted from a corpse. Round 2.
  • Sorvani (Hateborne) copy paste issue in Mob::TryDivineSave corrected
  • Trevius RoF * Fixed the Character Select Struct, which should prevent an error when trying to enter world on certain characters.
  • Trevius RoF * Character Creation is now functional.
  • Trevius RoF * Identified more fields in the Player Profile and added the correct checksum so the current packet should work (thanks Derision).
  • Trevius RoF * Added the opcode for max characters to allow up to 10 chars to be created per account instead of 0 (thanks Noport).
  • Trevius RoF * Fixed Drakkin Appearances at Character Select. Appears that all facial/body features are now perfectly aligned.
  • Uleat QueryServ player trade log code is now enabled. Set the rules_value to true to enable logging.

REQUIRED SQL: utils/sql/queryserv/2304_qs_playertradelog.sql


  • Akkadius Changed maxlevel default value and value for lootdrop_entries, this is a thing more affecting servers with higher than 127 so this doesn't affect many people.

OPTIONAL SQL: utils/sql/svn/2300_optional_loot_changes.sql


  • Trevius RoF * More work on RoF Structs and added the Client Version stuff.
  • Trevius RoF * Removed/Disabled most opcodes until we are further along and then I will add them all back in and populate the rest.
  • Trevius RoF * Added a new packet dealing with membership status, but it may need more work.
  • Uleat Added inspect message functionality for SoF+ clients.
  • Uleat Added bot command #bot setinspectmessage (use #bot setinspectmessage help)

REQUIRED SQL: utils/sql/svn/2299_required_inspectmessage_fields.sql


  • Lerxst Added the RoF.cpp files to the patches folder of the project for the vs2008 people.


  • Sorvani Added the RoF.cpp files to the patches folder of the project for the windows people.
  • Akkadius Added EntityList::GetDoorsByDoorID(int32 id) which is exported to Perl $entity_list->GetDoorsByDoorID
  • Akkadius Added Door Class object $Door->GetDoorID(); to return the obvious Door ID for the entity


  • Trevius Initial addition of the RoF client. Currently disabled by default. Uncomment the 2 RoF lines in common/patches/patches.cpp to enable the client.


  • Sorvani (Uleat) Player Inspect works for Titanium users again. Spell casting from a clicky effect checks that the item is still in the slot it was cast from before applying the affect and removing the charge (if applicable).


Secrets/ *Akkadius Implemented the customary ability to scale an NPC's spell damage or healing % by a modifier loaded from the npc data in npc_types This will allow an NPC to do for example 150% of the damage of their damage spells if spellscale is set to '150' 'healscale' field needs to be set to affect heals in a similar manner Both of these can also be accessed via ModifyNPCStat through 'healscale' and 'spellscale'

REQUIRED SQL: utils/sql/svn/2283_required_npc_changes.sql


  • Secrets Fixed OP_PVPStats in HoT to the proper opcode, OP_WebLink. You can use $client->SendWebLink("website"); in perl to use this functionality to pop open a web browser ingame.


  • Akkadius Ability to send signals through the Telnet console to character: signalcharbyname


  • Sorvani (Uleat) Update to inspect (SoF+) and corpses to related to handling power sources. Titanium inspect still broken.
  • Vaion Renamed the rule for targeting swarm pets so that it make sense with the code.

OPTIONAL SQL: utils/sql/svn/2280_optional_rule_targetableswarmpet-rename.sql


  • Vaion New rule created for handling whether swarm pets are targetable or not. Set to false for default to allow targeting swarm pets.

OPTIONAL SQL: utils/sql/svn/2278_optional_rule_targetableswarmpet.sql


  • Secrets Pets can no longer proc from any hand other than their primary hand. This fixes an issue where beastlord pets could proc two, three or four from dual wielding/double attacking pets (as well as a general mechanics fix).
  • Secrets NPCs will no longer attempt to heal through walls. There is now a LOS check for friendly NPC heals through walls. This was especially apparent in the PEQ database in Splitpaw, where you could have maybe 10 NPCs healing through walls at a time. I don't recall this ever happening on live past OoW. If this is incorrect revert it and make it a rule.


  • Vaion Swarm Pets are now untargetable. They still gain aggro, are attackable and can be casted on by NPCs, but clients cannot target them.
  • Sorvani Items with 0 charges will no longer get a free recharge when players die. Changed the TargetName property for all projects to be $(ProjectName). The only project that will have a new name is chatserver. It is now called ucs matching the linux build.


  • Sorvani fix for newly created items with unlmiited charges to actually be usable.
  • Sorvani (Uleat) Lore check is now made for items inside bags being trade before the trade completes.
  • Akkadius Started first works of implementing QueryServ for what it was meant to be used
  • Akkadius Moved QueryServ to it's own configuration block in the eqemu_config.xml (example):


  • Akkadius QueryServ can now be used on a separate server and can use an entirely separate database as it was meant to
  • Akkadius Added 'loottable_id to NPC::ModifyNPCStat which also changes quest::ModifyNPCStat(identifier, newValue); as well
  • Akkadius Fixed heap corruption in quest_globals that would occur if a value over 64 bytes was created
  • Akkadius Changed value size in qglobals from 64 bytes to 128 bytes
  • Akkadius Added #reloadworld * This command will reload every single zones Perl quests and repop them
  • Secrets Minor code fix for qglobals. Since we removed the id field from qglobals, I suppose we shouldn't use it in code.
  • Secrets Warning fix for a quest function.
  • Secrets Fixed a crash issue where player corpses did not exist at all in a function (ie; they were disabled) yet we are trying to use an invalid pointer
  • Secrets durp, i'm retarded. memleak fix.

Perl Changes:

  • Akkadius Added EVENT_DISCONNECT to * Event that triggers whenever a character disconnects from the world
  • Akkadius Added EVENT_CONNECT to * Event that triggers whenever a character connects to the world
  • Akkadius Added EVENT_TASK_UPDATE to * Event that triggers whenever a donecount is incremented in a task, exports variables: $donecount, $activity_id and $task_id
  • Akkadius Added EVENT_TASK_COMPLETE to * Event that triggers whenever a task is complete, this can sort of be checked in EVENT_TASK_STAGE_COMPLETED already but this is more finite, exports variables: $donecount, $activity_id and $task_id
  • Akkadius Added EVENT_TASK_FAIL to * Event that triggers whenever a task has failed, exports variables: $task_id
  • Akkadius Added \(client->SignalClient(\)data), it uses the client as the initiator and the client that gets sent the data, good for entity_list iterations through client
  • Akkadius Exported $client->AddAlternateCurrencyValue(currency_id, amount); originally created by KLS
  • Akkadius Added quest::gettaskactivitydonecount(task, activity); which obviously will get the amount done in a task based on task and activity
  • Akkadius Added cross zone client signalling capability by character ID: quest::crosszonesignalclientbycharid(char_id, data);
  • Akkadius Added cross zone client signalling capability by character Name: quest::crosszonesignalclientbyname(Name, data);
  • Akkadius Added cross zone client messaging capability by character Name: quest::crosszonemessageplayerbyname(Type, Name, Message);
  • Akkadius Added the ability to flow #commands through Perl, by flow meaning if the command doesn't process through the traditional command system, it will dump the output to EVENT_SAY in based on rule Chat:FlowCommandstoPerl_EVENT_SAY

QueryServ Changes:

  • I plan on adding much more logging to this server, but for now I've started with the following:
  • QueryServ requires rules to be enabled before packets get sent to QueryServ, otherwise World/Zone doesn't need to even craft the packets for logging
  • Akkadius Logging all player kills through QueryServ, you need to have QueryServ:PlayerLogNPCKills Rule Enabled, type: 0 = Solo, 1 = Group, 2 = Raid
  • Akkadius Player trades logging started but definitely not finished
  • Akkadius Removed the rules system from QueryServ, rules should only be read from World/Zone

REQUIRED SQL: utils/sql/queryserv/2268_QueryServ.sql

Database Changes:

  • Akkadius Added a field in character_ called firstlogon that will essentially be booled true when a player logs on, it handles a characters online status between world and zone and ultimately gets used in EVENT_CONNECT
  • Akkadius Completely dropped the id column in quest_globals, the (charid, npcid, zoneid, name) fields will act as the primary keys, tested and working fine. This solves capping out on ID's as they are unecessary.
  • Akkadius Changed value size of quest_globals field value from 64 bytes to 128 bytes
  • Akkadius Removed an AA that was causing heap corruption

REQUIRED SQL: utils/sql/svn/2268_required_updates.sql


  • JJ Initial fix for /MQZone detection to reduce false positives.
  • Sorvani Corrected Improved Familiar pre-req and commited Vaion's AA update to fix animation Empathy.

Required SQL: utils/sql/svn/2264_required_aa_updates.sql


  • Sorvani (Vaion) Added /pet no cast and /pet focus

Required SQL: utils/sql/svn/2262_required_pet_discipline_update.sql


  • cavedude (Tabasco) Re-added probability, setting it to 100 (default) effectively bypasses probability and no additional roll is made. Setting it to 0 prevents the table from being rolled at all, so you can disable the table but still keep the entries if needed.

Required SQL: utils/sql/svn/2260_probability.sql


  • Sorvani Tabasco sent in this bugfix: Ranged attack crash

It doesn't happen every time, but if an NPC is flagged for ranged attacks and they kill their target, the AIProcess function continues on under the assumption that the target is still available.

I just adjusted it to set a flag and do the actual attack at the end of the function. I haven't been able to reproduce the crash since.


  • Akkadius Added the ability to govern player max levels through the source per character. It will look for a qglobal named 'CharMaxLevel', type 5 qglobal, if the rule is enabled and the character flag is set, they will not be able to pass that level.

Optional SQL: utils/sql/svn/2243_optional_char_max_level_rule.sql


  • Lerxst2112 Fixed issue in AddMoneyToPP where the amount of silver was being added to copper instead of the leftover copper.


  • Sorvani Disabled optimization around the DECODE(OP_CharacterCreate) in all SoF+ patches to force character creation to validate correctly.


  • Sorvani A NPC that is immune to Mez, Slow, Fear, Charm, or Snare will now generate aggro based on the respective spell's normal aggro.


  • Sorvani SE_SummonCorpse will now work in raid groups.


  • Bad_Captain Bots* Changed #bot healrotation timer to allow decimal values.
  • Bad_Captain Bots* Rewrote bot AAs to load from DB.
  • Bad_Captain Bots* Synced bot code to client code for aabonuses, attack, spell casting, etc., as the result of the client aabonuses changes.


  • Kayen Fix for crippling blow chance, other minor fixes related to bonuses.


  • Kayen AA dbase table fixes * Archery Mastery, Fury of Magic.

REQUIRED SQL: utils/sql/svn/2215_required_aa_updates


  • KLS Faction mods (Race, Class, Deity) can now be added on the fly, without adding database columns or editing the code. Source in the database change, run utils/, and then drop the faction_list table to convert.

REQUIRED SQL: utils/sql/svn/2214_faction_list_mod.sql


REQUIRED SQL: utils/sql/svn/2213_loot_changes.sql


  • Kayen Implemented SE_HealFromMana changed to SE_HealGroupFromMana * now implemented correctly.


  • Kayen Implemented SE_CriticalHealRate * Focus that increase chance for heals cast on you to critical.
  • Kayen Implemented SE_IncreaseNumHits * Focus that can inceases max number of hits a buff can have before being removed.
  • Kayen Removed SE_Twinproc * This is not an actual spell effect, Twin proc is now correctly implemented as on live using SE_Twincast.
  • Kayen Implemented SE_TwoHandBluntBlock * Chance to block when using two hand blunt weapon (similiar to shield block).
  • Kayen SE_NegateEffect will now negate all AA, item and spell bonuses for the specified effects.
  • Kayen Added support to allow for certain bonuses to now properly be calculated when cast as debuffs (ie decrease chance to critical hit)
  • Kayen Implemented rule to allow certain bonuses to be calculated by adding together the value from each item, instead of taking the highest value.

*Ie. Add together all worn cleave effects, ferocity effects ect.

OPTIONAL SQL: utils/sql/svn/2209_optional_additive_bonus_rule.sql (disabled by default)


  • cavedude Uleat implemented the following changes:

The bandolier function should no longer CAUSE desyncs. Its use can still be affected by previous issues, just like any manual swap. Message cues have been temporarily added to certain procedures to indicate to the player that a possible desync condition exists and that they should zone or relog to correct the situation immediately.

The chance of player corpses becoming bugged should now be minimal. Corpse processing was changed to better emulate client behavior when 'RespawnFromHover' is set to true or false. Message cues and #commands were added to help determine whether a corpse is bugged. (Previously, queued cursor items were sent to the corpse..but, the packet builder did not include the 8000-series of items when a player looted their corpse.)

Tweaked several areas where item swaps were not handled properly, or at all, and the client-server inventories became desyncronized. Additional areas are still suspect for causing desync's. (A 'ResyncInventory' method is in-work to eliminate the need for item deletion...)

Client::SummonItem now limits the size of a summoned stack to the value of stacksize in the database. If you are using script to summon stacks greater than item->stacksize, this action was/is incorrect and you will need to modify your 'quest' to summon multiple stacks.

command changes:

#equipitem * modified partial stack movements..if a partial stack would be left on cursor, the action now fails.
#corpse * added subcommand 'InspectLoot' for client and npc corpses..additional information with client.
#peekinv * added stack size(charges) to report and modified the cursor depth reporting of bag slots.
#zopp * new command for troubleshooting..forces a client 'trade' or 'summon' to desync the client inventory.

references: CSD Support Patch __ CSD Bugged Corpse Patch * CSD Bandolier Patch

  • cavedude (mackal) Damage shields by default will no longer count towards EXP gain. (Rule also added to change this behaviour.)
  • cavedude (mackal) Extended targets should now clear when aggro is lost using skills.
  • cavedude (mackal) AAs with shorter reuse timers should now reset if the cast failed (interrupted.)
  • KLS Fixed a cause of raids disbanding on zoning.

OPTIONAL SQL: INSERT INTO rule_values VALUES (1, 'Combat:EXPFromDmgShield', 'false', 'Determine if damage from a damage shield counts for EXP gain.');


  • Kayen Implemented NPC Special Attack 'i'. Immune to Taunt.
  • Kayen Implemented: SOF+ live like stacking of AA's that belong to the same series in the AA window (Expection: AA's that use hot keys).
  • Kayen Implemented SE_SpellEffectResistChance * Increase chance to resist specific spell effects ie. Charm
  • Kayen Revision to how AA focus effects are handled to correclty utilize live AA data.
  • Kayen Almost all 'General' and most 'Archetype' AA's implemented through Underfoot.
  • Kayen aaID data (AA.h) updated through VoA expansion.

Following AA effects are now implemented as bonuses: You must update your 'aa_effects' table with 'required_aa_updates.sql' for these to work. MISC AA: Spell Casting Subtlety now implemented with bonus SE_ChangeAggro MISC AA: Many AA that are spell focus effects now implemented using live data. MISC AA: Finishing Blow ect, will now implemented using bonus, SE_FinishingBlow and SE_FinishingBlowLvl. ENC AA: Total Domination now implemented with bonus SE_CharmBreakChance. SK AA: Soul Abrasion now implemented with bonus SE_ImprovedDamage2. *Many fixes to previously implemented AA effects.

REQUIRED SQL: utils/sql/svn/2208_required_aa_updates OPTIONAL SQL: utils/sql/svn/2208_optional_aa_stacking_rule.sql (If false will disable AA stacking for all clients) OPTIONAL SQL: utils/sql/svn/2208_optional_EnableSoulAbrasionAA *If using an older server spell file (pre SOF), will need to run this to correctly populate the 'spellgroups' field.


  • Bad_Captain Bots* Fixed an issue where bots couldn't have spells with target type of ST_GroupClientAndPet cast on them.
  • Bad_Captain Bots* Added #bot healrotations command. Please see forums for more information.


  • cavedude Added NPC:UseMultiQuest rule to turn multiquest support on or off.

OPTIONAL SQL: INSERT INTO rule_values VALUES (1, 'NPC:UseMultiQuest', 'false', 'If true, NPC will remember items handed to them for classic multiquest support.');


  • Akkadius First set of efforts to clean up Windows compiling. See:

  • Cleaned up x64 compiles, x86 compiles coming right up
  • Removed pragma comments and forced them to be used under 'Additional Dependencies' (Windows)

  • Akkadius Fixed-up Release & Debug 32-bit compiles

  • Akkadius Uploading includes and libraries for both x64 and x86 so that VS2010 can automatically reference those libraries and requires no configuration
  • Akkadius All project types have had includes and libraries linked to the appropriate machine type
  • Akkadius Most project types have been set to /MP (Multiprocessor compile) and Warning Level 1 to filter most of the garbage
  • Akkadius Got the rest of the VS2010 compiles working on a fresh SVN:
  Debug x64|x64 = Debug x64|x64
  Debug|Win32 = Debug|Win32
  Debug|x64 = Debug|x64
  DebugBots x64|x64 = DebugBots x64|x64
  DebugBots|Win32 = DebugBots|Win32
  Release x64|x64 = Release x64|x64
  Release|Win32 = Release|Win32
  ReleaseBots x64|x64 = ReleaseBots x64|x64
  ReleaseBots|Win32 = ReleaseBots|Win32
  ReleaseBots|x64 = ReleaseBots|x64


  • cavedude (image) Added Classic Multiquest support.
  • cavedude Added quest::clearhandin and #clearquestitems so that multiquest can co-exist with out current system without issues.

REQUIRED plugin: utils/defaults/plugins/ (Or use PEQ quests repo)


  • Akkadius (Uleat) Temporary dupe fix until we can iron this out the way it should be (Not use signed ints in the blob). This should trap a majority of it to client saves.
  • Akkadius Account shared platinum field type change (signed to unsigned) to no longer allow negative values...

REQUIRED SQL: utils/sql/svn/2195_required_sharedplatupdates.sql


  • Kayen Taunt skill updated to work consistent with live.

*You can now taunt NPC's over the users level. (RULE: TauntOverLevel)

*Taunt success chance should be accurate to live. Penalty of not being at max skill lv can be adjusted with (RULE: Combat:TauntSkillFalloff)

*Live messages for taunt success and failure are now implemented. (Note: Only NPC races that can 'talk' will say the success message).

  • Bad_Captain Bots* Fixed an issue when with bot spell timers that could lead to a crash.
  • Kayen Fixed SQL files from rev2185+ that were not saved as .sql

OPTIONAL SQL: utils/sql/svn/2189_optional_taunt_rules OPTIONAL SQL: utils/sql/svn/2185_optional_NPCFlurryChance_rule (run this again)


  • Kayen Complete revision of the Death Save and Divine Save effects and related bonuses to be consistent with live. Death Save (Death Pact/DI) will no longer fire on death. It should only fire when less 15% HP but not killed. Death Save chance is determined soley by charisma of client with the buff. (RULE: DeathSaveCharismaMod) Divine Intervention baseline is now correctly set to 8000HP (from 50k) (RULE: DivineInterventionHeal) AA Touch of the Divine provides upon failure of first Death Save, a second roll and if successful will do a portion of the original heal value. (Ie DI=8000HP with ToTD-3(60%) your heal will be 8000_0.6 = 4800HP)_ Implemented functionality for later expansion Death Save effects (Divine Intercession ect) These can add heal value to the base heal which is limited by level (ie Heal 10,0000+8000 if client less then level 80)

Divine Save (AA Unfailing Divinity) only fire upon death of client with this effect and is independent of Death Save effect. Increased ranks of AA only increase the chance of firing upon death. Heal value does NOT increase with rank. *Upon firing you will still recieve the Divine Aura like buff, which now also correctly removes all determental effects.

  • Kayen Implemented: SE_Purify * Removes determental buffs. Value determines how many buffs are removed.
  • Kayen Added RULE MaxCastTimeReduction * Max percent your spell cast time can be reduced by spell haste(is/was 50%).

Following AA effects are now implemented as bonuses: You must update your 'aa_effects' table with 'required_aa_updates.sql' for these to work. MISC AA: Internal Metronome/Channeling Focus now implemented with bonus, SE_ChannelChanceSpells. MISC AA: Concentration now correctly implemented with bonus, SE_ChannelChanceItems. MISC AA: Pet Affinity now implemented with bonus, SE_GivePetGroupTarget. MISC AA: Spell Casting Expertise, Mastery of the Past ect will prevent fizzles from spells under certain level, SE_MasteryofPast. BRD AA: Extended Notes/Sionachie's Crescendo will increase ranage of songs with bonus, SE_SongRange. BRD AA: Jam Fest now implemented with bonus, SE_CastingLevel2. CLR AA: Unfailing Divinity now implemented with bonus SE_Unfailing Divinity. CLR AA: Touch of the Divine now implemented with bonus SE_DivineSave. DRU AA: Enchanted root/Viscid Root (was implemented completely wrong), now uses bonus SE_RootBreakChance. If a root is cast on the target and target has this AA it will decrease the chance for that root to break from any damage spells. The damage spells can be cast by any one, not just the client with the bonus. Added RULE: RootBreakFromSpells Baseline is/was set at 20% chance from nukes.

REQUIRED SQL: utils/sql/svn/2188_required_aa_updates OPTIONAL SQL: utils/sql/svn/2188_optional_miscspelleffect_rules


  • Kayen Update to how chance to hit bonuses are applied.

*Accuracy spell effect will now stack with Hit Chance spell effect. (Accuracy/15 = 1% chance to hit).

*Skill specific Hit Chance effects should stack correctly now.

*Accuracy/Hit Chance effects that DECREASE your chance to hit will now function.

  • Kayen Minor update to duel wield, chance bonuses will be correctly applied to baseline dw chance.
  • Kayen Implemented Perl MOB Quest Object SetFlurryChance(value) (ie 50 = 50% chance for NPC flurry if special atk "F")
  • Kayen Implemented Perl MOB Quest Object GetFlurryChance(value) returns flurry chance.
  • Kayen Added rule to adjust server wide flurry chance (Default = 20%) *Perl object will override this.

Following AA effects are now implemented as bonuses: You must update your 'aa_effects' table with 'required_aa_updates.sql' for these to work. MISC AA: Dead Aim, Precision of the Hunter, Scout's Efficiency will now calculate from bonus SE_Accuracy. MISC AA: Combat Agility line will now calculate from bonus SE_AvoidMeleeChance. (Now implemented through SoD) MISC AA: Combat Stability line will now calculate from bonus SE_CombatStability. (Now implemented through SoD) MISC AA: Double Riposte, Return Kick now calculated from bonus SE_GiveDoubleRiposte. (New AA's implemented that use this) MISC AA: Natural Durability, should be working correctly now from bonus SE_MaxHP. MISC AA: Ambidexterity will now apply properly to increase chance to duel wield from bonus SE_Ambidexterity. MISC AA: Flurry,Rapid Strikes will now properly be applied from bonus SE_Flurry. (New AA's implemented that use this) MISC AA: Pet AA's that give flurry chance will now be applied by bonus, SE_PetFlurry. MAG AA: Elemental Agility was incorrectly giving melee mitigation instead of avoidance, to now use SE_PetAvoidance. MAG AA: Elemental Durability will now add to pet max hp with bonus, SE_PetMaxHP.

REQUIRED SQL: utils/sql/svn/2185_required_aa_updates OPTIONAL SQL: utils/sql/svn/2185_optional_NPCFlurryChance_rule


  • Bad_Captain Fixed an issue when using bots where you would not get xp when your pet did most of the damage and you are not grouped.
  • Bad_Captain Added rule to enable receiving xp from bots not in your group. Defaults to false.

OPTIONAL SQL: utils/sql/svn/2183_optional_bot_xp_rule.sql


  • Kayen Updates to critical hit calcuations to be consistent with live.

*Baseline critical rate is determined by DEX stat (255 dex = 2%),this baseline is then modified by item,spell and AA critical chance bonuses.

*Pet critical baseline is determined by the rate from AA effects that give pets the ability to critical. (Can not crit w/o this effect)

  • Kayen Slay Undead effect will now be working consistent with live.

*Slay rate is no longer effected by critical hit rate, it uses it's own predetermined rates from the spell effect data.

*Damage modification will now be much closer to that of lives utilizing the spell effects damage modifier.

Example(AA Slay Undead I Rate: 225 (2.25%) Damage Mod: 680%)

*Note that that spell effects using Slay Undead (Holyforge) will stack with AA and increase the damage and the rate.

  • Kayen Crippling Blow's derived from spell effects will now be calculated consistent with live.

*Cippling blow chance is determined by modifying your critical hit chance.

Example (Savage Onslaught 200% chance to crippling blow) If you have a base chance to critical hit of 10%

and you score a critical hit, you will then have a 20% chance to crippling blow.

  • Kayen Fixed effect for AA 'War Cry' will now provide group fear immunity for duration.
  • Kayen Few new AA's added including shaman Ancestral Aid and Spirit Channeling.

Following AA effects are now implemented as bonuses: You must update your 'aa_effects' table with 'required_aa_updates.sql' for these to work. MISC AA: 'Combat Fury', 'Fury of the Ages' will now calculate from bonus SE_CriticalHitChance. MISC AA: 'Veteran's Wrath' will now calculate from bonus SE_CriticalDmgMod. MISC AA: All AA that give pet criticals will be calculated from SE_PetCriticalHit. PAL AA: 'Slay Undead', 'Vanquish Undead' will now calculate from bonus SE_SlayUndead. (Holyforge now works correctly)

REQUIRED SQL: utils/sql/svn/2178_required_aa_updates


  • Kayen Fixes to rev2176 * Double Attack, EndlessQuiver, Run Speed.

REQUIRED SQL: utils/sql/svn/2176_required_aa_updates will need to be applied again for Run Speed fix.


  • Kayen Complete revision of how double attack chance is calculate to be consistent with live.
  • Kayen Berserker 'Frenzy' skill attack will now function as it does on live. Gives a chance for 1-3 attacks using frenzy skill specific damage.

*Note: This will be a considerable nerf to bersekers because it was previously coded to give actual melee rounds using weapon damage.

  • Kayen Implemented a few miscellaneous new AA's, mostly from DODH. (These will show in OoW Window in Titanium)
  • Kayen Added almost all remaining spell effects into spdat.h (~90% defined).
  • Kayen Alternate Advancement Update: In the process of coverting most of the hard coded AA data out of the source and into the 'aa_effects' table

using live data. These effects are then reimplemented using the bonus system in the broadest possible way, most of these effects will

also be useable as regular spell/item effects. This will allow developers in the future to adjust,implement and customize AA effects

without requiring source changes. Beware in doing this, many AA effects that were previously either implemented incorrectly or with values

not consistent with live data will be adjusted to be as accurate as possible.

Following AA effects are now implemented as bonuses: You must update your 'aa_effects' table with 'required_aa_updates.sql' for these to work. MISC AA: All innate run speed AA's have been converted to use bonus SE_BaseMovementSpeed. MISC AA: All bind wound related AA have been converted to use bonuses, SE_ImprovedBindWound, SE_MaxBindWound. MISC AA: Shield Block will now be calculated using bonuses, SE_ShieldBlock. MISC AA: Sinister Strike will now correctly allow your off hand weapon to recieve a weapon damage bonus, SE_SecondaryDmgInc. MISC AA: Strengthened Strike/Vicious Smash/Kick Mastery will now accurately to live add skill damage to respective special abilities. MISC AA: StrikeThrough, Tactical Mastery will now be calculated from bonus, SE_Strikethrough2. MISC AA: Ferocity, Knight's Advantage ect will now be calculated from bonus SE_DoubleAttackChance. MISC AA: Harmonious Attacks, Bestial Frenzy will allow double attack chance using bonus SE_GiveDoubleAttack (any class can be given this) MISC AA: Weapon Affinity, will now use SE_ProcChance. MISC AA: PunishingBlade, SpeedoftheKnight will now allow an extra 2 Handed attack using bonus, SE_ExtraAttackChance. BRD AA: Fleet of Foot will now correctly allow bards to run over the speed cap using, SE_IncreaseRunSpeedCap. WAR AA: Previously non functional 'Stalwart Endurance' and 'Dauntless Preservence' now working using bonus, SE_FrontalStunResist MNK AA: HightenedAwareness Implemented using bonus, SE_BlockBehind. MNK AA: Technique of Master Wu Will now correclty use a random monk special attack, chance for double/triple attack as SE_DoubleSpecialAttack. MNK AA: Dragon Punch Implemented as now using bonus SE_SpecialAttackKBProc, (base1 = 100 [25% proc chance at 100] base2 = skill) RNG AA: Endless Quiver Implemented as SE_ConsumeProjectile which gives a percent chance NOT to consume an arrow. (EQ base1 = 100) RNG AA: Archery Mastery Implemented as SE_ArcheryDamageModifier which gives a percent increase to archery attacks. BER AA: Throwing Mastery Implemented using SE_DamageModifier. BER AA: Blur of Axes, Vicious Frenzy will now correctly add skill damage to 'Frenzy' skill attacks. ROG AA: Triple Backstab, SiezedOpportunity, Chaotic Stab * as bonus, SE_TripleBackstab, SE_FrontalBackstabChance,SE_FrontalBackstabMinDmg.

REQUIRED SQL: utils/sql/svn/2176_required_aa_updates Optional SQL: utils/sql/svn/2176_optional_FrenzyBonus_rule Optional SQL: utils/sql/svn/2176_optional_aa_expansion_sof_fix (Allow AA to show proper expansion in SOF+ clients)


  • Bad_Captain Fixed bot compile issue introduced in Rev 2171.
  • Bad_Captain Integrated Kayen's skill attack code with bots' code, as well as other changes from Rev 2171.


  • Akkadius (KLS) Fix for synchronization. There was an issue where certain subroutines were not passing as global


  • Kayen Fixed: SE_ImmuneFleeing * Will now disable fleeing if used after mob begins to run, will not effect fleeing from fear.
  • Kayen Implemented Perl MOB Quest Object SetDisableMelee(1=Disabled) * Prevents the ability to auto attack.
  • Kayen Implemented Perl MOB Quest Object IsMeleeDisabled()
  • Sorvani corrected build name for queryserv project in all the various build types.


  • Kayen Implemented: SE_HundredHands (incorrectly marked as already implemented) * Increases/Decrease actual weapon delay by % of value.
  • Kayen Implemented: Missing modifications from the Archery/Throw damage pathways.

*SkillAmount/SkillDamageTaken mods, ability to Block/Dodge/Parry ranged attacks (Can not riposte), other new focus/mod effects.

  • Kayen Fixed: aaThrowingMastery will no longer be applied 2x per throw.
  • Kayen Implemented: Damage bonus to skill attacks from specific armor slot AC (ie KICK from BOOT AC) can adjust with rule 'SpecialAttackACBonus'
  • Kayen SE_MinDamageModifier should now apply to skill specific effects and to special attacks.
  • Kayen Implemented: Complete revision of SE_SkillAttack. (+ required various fixes/adjustments to functions related to special attacks)

*This spell effect performs a physical attack from a specific skill with a set weapon damage value and chance to hit modifier.

*Attacks will now calculate correctly and use their actual respected pathways utilizing all skill specific mods/bonus.

  • Kayen Implemented Perl MOB Quest Object DoMeleeSkillAttackDmg(target, weapon_damage, skill, chance_mod, focus, CanRiposte)
  • Kayen Implemented Perl MOB Quest Object DoArcheryAttackDmg(target,NULL,NULL, weapon_damage, chance_mod, focus)
  • Kayen Implemented Perl MOB Quest Object DoThrowingAttackDmg(target,NULL,NULL, weapon_damage, chance_mod, focus)

Optional SQL: utils/sql/svn/2171_optional_SpecialAttackACBonus_rule


  • Kayen Implemented NPC Special Attack 'K'. Immune to Dispell.
  • Kayen Fixed SE_RangedProc to be applied after zoning, calculate proc rate correctly, utilize numhits.
  • Kayen Fixed a bug that would cause NPC procrates to be incorrectly effected by equipped weapon delay.
  • Kayen Modified functions related to obtaining proc chance to no longer recalculate the 'attack rate' every swing.

Instead it will use the already calculated attack timer values. (Not implement for BOTs, but should be no compile problems).

  • Kayen Fixed for buff issue with rev2167.


  • Kayen Implemented: SE_SpellProcChance, SE_CharmBreakChance, SE_BalanceMana, SE_DotCritDmgIncrease, SE_TripleAttackChance, SE_Taunt
      SE_BardSongRange, SE_ACv2, SE_ManaRegen_v2,    SE_SpellCriticalFocus, SE_AdditionalHeal2, SE_HealRate2,
      SE_CriticalHealOverTime2, SE_CriticalHealChance2, SE_SkillDamageAmount2, SE_LimitSpellSkill, SE_LimitClass
      SE_LimitExcludeSkill, SE_ShieldBlock, SE_BlockBehind
  • Kayen Implemented: SE_Empathy * A focus limited debuff which causes (spells/skill attacks) cast on target to do +X amount more damage.
      *This spell effect is often limited using SE_LimitSpellSkill.
      *(Ie. If empathy value is 1000 and limited to evocation, all nukes on target using evoc. will get +1000 damage)
  • Kayen Implemented: SE_SpellPowerIncrease * Can be used to apply a worn/buff focus effect with limits for...
      1) Additional bard instrument modifiers.
      2) Healing/Damage focus to bard songs. (Note: This is only effect that can do this).
      3) Increase effectiviess of casted/disc Skill Attacks.
      4) General use stackable Healing/Damage focus.
      5) Increase the value of melee runes by focus amount.
  • Kayen SE_HPtoMana will no longer drain your HP before the spell is finished casting. Effect now handled as a bonus using best value.
  • Kayen SE_SpellVulunerability will now correctly calculate and apply the highest value if target has mulitple effects.
  • Kayen Fixed an issue where DOTs cast by an NPC on another NPC would not generate hate per tick. Improved how we calc damage from DOTs.
  • Kayen SE_BlockSpellEffect was implemented incorrectly and has been revised to SE_NegateSpellEffect.
  *It is not meant to block buffs, rather it negates the specific spell bonuses or effects from buffs you already have.
  *Currently functional with any effect that is handled under bonuses, and focus effects.
  • Kayen Vastly improved how we handle melee/spell runes/partial mitigation runes ect. Should be significantly more efficient.
  *Melee/Spell Mitigation runes and ManaAbsorbPercentDamage effects will now use the best mitigation value if multiple effects.
  • Kayen Improved the process we use to get spell/item focus effects. An initial check if the client has a specific focusType

is done while checking for item/spell bonuses. GetFocusEffect will no longer check all inventory and buff slots every cast for the

focusType if that focusType doesn't exist on the client. This should improve performance since these checks are done 10-20x per cast/proc.


  • Secrets Fixed an issue with saylinks above 255 characters. If you do want to use saylinks above 255 characters, it is reccomended you adjust the varchar field in the saylinks table to a "TEXT" field, which supports up to 65535 characters.


  • Bad_Captain Fixed another bug that allowed pets to steal xp when using bots.
  • Bad_Captain Bots: Persisting spell & discipline timers.
  • Bad_Captain Bots: Bot pets will no longer continuously try to get behind a mob if they are tanking.
  • Bad_Captain Bots: Fixed potential duplicate lore item bug when trading with bots.
  • Bad_Captain Bots: Fixed bot compile issue from Rev 2160.
  • Bad_Captain Bots: Fixed multiple issues with #bot spawn and #bot botgroup load (c0ncrete).
  • Bad_Captain Bots: Implemented new #bot defensive command for Warriors and Knights. Includes most of the code required to implement disciplines for bots. Requires disc AI & disc lists.

Required SQL: utils/sql/svn/2164_require_bots_bottimers.sql


  • Kayen Fixed issue causing npc special attacks (kick/bash ect) to do extra damage.
  • Kayen Fixed major crash bug with rev2159.
  • cavedude AFTERDEATH npc_emote will now use emoteid instead of npcid.


  • Kayen Implemented: SE_SkillProc, SE_SkillProc2 which can be limited by SE_LimitToSkill * Procs an effect when a specific skill is used
 *Functional with all melee skills, special attacks, backstab, taunt, dodge,block,parry,riposte.
  • Kayen Added checks to attack process to prevent mob from performing certain actions after being killed (riposte, defensive proc ect).
  • Kayen Fixed bug where if client had delay death effect NPC would not be able to attack them if HP < -11, clients without delay death will now bleed again.
  • Kayen Implemented: SE_CastingLevel2, SE_ReduceHate
  • Kayen Fix to bug where some spell procs and defensive procs were not loading after zoning.
  • Kayen Updated spdat.h with many new live spell effects that were previously 'unused'.


  • Kayen Implemented: SE_Manaburn: Drains mana for damage/heal at a defined ratio up to a defined maximum amount of mana.
  • Kayen Implemented: SE_CastonNumHitFade: Casts a spell when a buff fades due to its numhits being depleted.
  • Kayen Implemented: support for all remaining live spell effects that use 'numhits'.
 Significantly optimized how all spell effects that utilize 'numhits' are handled throughout the source.
  • Kayen Fixed: SE_DefensiveProc Proc rate will now be calculated similiar to live. Spell specific rate modifcations will now work.
  • Kayen Added Rule: Combat:AvgDefProcsPerMinute (Default = 2.0) Determine defensive procs per minute.
  • Kayen Added Rule: Combat:DefProcPerMinAgiContrib (Default = 0.075) Determines how much agility effects proc rate.

Optional SQL: utils/sql/svn/2159_optional_defensiveproc_rules


  • Kayen Implemented Perl NPC Quest Object GetSlowMitigation()
  • Kayen Implemented Perl NPC Quest Object GetAttackSpeed()
  • Kayen Implemented Perl NPC Quest Object GetAccuracyRating()
  • Kayen Fixed: Slow Mitigation (was not loading from dbase),optimized its application in source and added lives slow mitigation messages.
  Slow mitigation Messages: 'slighty' 0.00 * 0.25 'partial' 0.25-0.75 'mostly' 0.75-1
  • Kayen Implemented: SE_AttackSpeed4: 'Inhibit Melee' effect works different then regular haste/slow effect
  1) If target is hasted (or no haste) Inhibit Melee will decrease attack speed by the Inhibit Melee value.
  2) If target is slowed Inhibit Melee is applied as a percent change to remaining attack speed after regular slow.
  ie. You cast 75% Slow (25 attack speed remains) then apply 25% Inhibit melee (18.75 attack speed remains): Final slow 81.75%
  • Kayen Added Rule: Spells:CharismaEffectiveness (Default = 10) Deterimes how much resist modification charisma applies to charm/pacify checks (10 CHA = -1 resist mod).
  • Kayen Added Rule: Spells:CharmBreakCheckChance (Default = 25) Determines percent chance for a charm break check to occur each buff tick.
  • Kayen Reworked code to that handles charm breaks/lull to be accurate to live and more functional in general.
  1) Each charm buff tick there is a default 25% [Rule.CharmBreakCheckChance] chance to trigger a spell resistance check.
  2) Spell resistance check then adds an additional bonus resist modification based casters Charisma at a default
     ratio of 10 CHA per -1 resist mod [Rule.CharismaEffectiveness]
  3) If resisted (ie Charm is to break) Total Domination AA is then applied to give another chance to maintain the charm.
  • Kayen Implemented: SE_AdditionalHeal: Focus Effect that adds an additional heal amount to the casted spell.
  • Kayen Implemented: SE_CastOnCure: Casts a spell on cured target.
  • Kayen Implemented: SE_CastOnCurer: Casts a spell on the curer of the target.
  • Kayen Modified: Mob::TryFadeEffect to avoid interaction wtih Twinproc effect.
  • cavedude (Uleat) Multiple changes and additions to doors, per the forums.

Optional SQL: utils/sql/svn/2156_optional_charm_break_rule.sql


  • Trevius Reviewed and Committed the below by *Kayen
  • Kayen Added Rule: AvgSpellProcsPerMinute (Default = 6.0) Determines proc rate of spells applied from sympathetic focus effect
  • Kayen Added Rule: ResistFalloff (Default = 67) Max that level that will adjust our resist chance based on level modifiers
  • Kayen Adjusted Mob::TrySpellOnKill()
  • Will now check AA, Items and Buffs for SE_SpellOnKill (Same logic problem as TrySpellOnDeath)
  • Level of the npc you killed and the spell_id used to kill it now both passed into the function.
  • SE_TrySpellOnKill will now correctly check if there is a min level of the npc required for the spell effect to work (max value in spelldat)
  • Kayen Implemented: SE_SpellOnKill2: For deterimental spells where landing the kill gives x% chance to give a buff.
  • Kayen Sympathetic proc now calculates chance to proc a sympathetic spell accurately like live using Procs per minute.
  • Kayen Adjusted Mob::TrySpellOnDeath() * Now checks all avialable effects and trys to use each one.
  • Kayen Fixed SE_TargetsTarget * Target's Target must be in CombatRange to recieve the effect (Verified from live)
  • Kayen Fixed TryApplyEffect * No longer incorrectly lands on the target's target's taget. (Example of spells that use this are Shaman Mending Couterbias)
  • Kayen Adjusted Twincast to now select the buff with the highest chance to Twincast and use that, it will also stack with item focus and AA (when implemented).
  • Kayen Removed the mana cost portion from twin casting a spell.
  • Kayen Fix for SE_SympatheticProc * The focus effect now checks all items/buffs for the focus effect and adds all returned proc spellid's to a list from which one is randomly selected.
  • Kayen Implemented SE_FF_Damage_Amount * Focus/Buff that adds damage to the casted spell. Usually found on spell group limited augments and stackable with SE_SpellDamage.
  • Kayen Adjusted SE_SpellDamage to be handled properly as a focus effect.
  • Kayen Extra damage from Focuses is now calculated correctly for DoTs
  • Kayen Implemented Perl NPC Quest Object SetSpellFocusDMG(focus amount) * Focus all npc direct/dot damage spells by value
  • Kayen Implemented Perl NPC Quest Object SetSpellFocusHeal(focus amount) * Focus all npc healing spells by value
  • Kayen Implemented Perl Mob Quest Object ModSkillDmgTaken(skill_num,value) * Set a weakness/bonus of weapon attacks to a Mob
  • Example: mob can be set to take 5% more damage from blunt weapons * ModSkillDmgTaken(0,5)
  • Stacks with spell/item bonuses * Setting skill to -1 will effect all skills
  • Kayen Implemented Perl Mob Quest Object GetModSkillDmgTaken(skill_num) * Returns only the quest skill mod for specified skill
  • Kayen Implemented Perl Mob Quest Object GetSkillDmgTaken(skill_num) * Returns the total skill damage taken mod for the specified skill (item+spell+quest_mod value)
  • Kayen Implemented Perl Mob Quest Object SetAllowBeneficial(false) * Allow a specific Mob to be healed/buffed by a client
  • Kayen Implemented Perl Mob Quest Object GetAllowBeneficial() * Returns SetAllowBeneficial flag
  • Kayen Implemented Perl Mob Quest Object IsBeneficialAllowed(target) * Returns if target can have beneficial spells cast on them
  • Kayen Implemented Perl Mob Quest Object ModVulnerability(resist type, value) * Set Spell Vulnerability of mob by resist type(0-9) ALL = -1
  • Example: mob can be set to take 5% more damage from Fire spells (2,5);
  • Applied effect will stack with spell buff effects.
  • If a resist type SPECIFIC and a resist type ALL mod are applied to the same MOB, the SPECIFIC value will be used if spell cast on MOB is the same resist type.
  • Kayen Implemented Perl Mob Quest Object GetModVulnerability(resist type) * Return the quest applied value for each resist (ALL = -1)

Optional SQL: utils/sql/svn/2154_optional_rule_spell_procs_resists_falloff.sql


  • Secrets (mackal) Spells now display to all clients and can be filtered as such.
  • Secrets Damage Shields now go to the proper filter, and do not show the non-melee damage to everyone.


  • Akkadius Added the ability to run a dual-stack with the existing that will run locally in quests/zone/ or quests/templates/
  • This allows the to be ran globally without interference of a local script (quests/zone/ OR quests/templates/
  • '' simply needs to be added to quests/templates/ to be parsed otherwise it will not be loaded
  • '' parses after the local
  • '' parses all of the same events a regular does and will work with any new subroutines added to it in the future
  • Thanks Derision for being a pair of eyes on a part of the diff for this


  • cavedude Exported quest::addldonwin(wins, theme); and quest::addldonloss(losses, theme);


  • Bad_Captain Fixed bug that allowed pets to steal xp when using bots.
  • Bad_Captain Bots: Fixed bug that allowed bots to sometimes cast HoT buffs during combat instead of HoT heals.
  • Bad_Captain Bots: Tweaked bard casting chances to restore twisting of multiple songs.
  • Bad_Captain Bots: Implemented Shaman cannibalization during combat.


  • cavedude Corrected the text merchants give when they refuse to sell to you.
  • cavedude The graveyard timer will now resume when a dynamic GY zone boots, instead of resetting.
  • cavedude When a corpse is moved to the graveyard, it will no longer attempt to use an instanced version of the zone.
  • cavedude Added the ability to load NPC emotes from the DB. Wiki entry for this will be at when I write it up.

REQUIRED SQL: utils/sql/svn/2142_emotes.sql


  • Akkadius Added the ability to load a script underneath quests/templates


  • Derision Fixed reference to freed memory in Mob::BardPulse, plus a couple of minor memory leaks in Load/SavePetInfo


  • Derision Corpses no longer appear in Extended Target Auto slots.


  • Derision Fixed some minor bugs with Extended Targeting (if the tank/assist/puller had a target before you allocated an XT slot to that function, you would not see the target unti they changed target).


  • Derision UF+: Support for the Extended Target window (aside from the Raid target types).
  • Derision Fixed Extended Target bugs where CurrentTargetPC targets were incorrectly cleared when leaving a group, and a CurrentTargetPC wasn't updating when they zoned in.

REQUIRED SQL: utils/sql/svn/2136_extended_targets.sql

Note: Default number of Extended Targets is 5. This is stored as a column in character_ GMs can increase a players slots by targetting them and typing #xtargets where n is between 5 and 20.


  • Trevius VoA * The AA Window now populated AAs. AA hotkeys can be created, but purchasing still needs work.


  • sorvani Bard AE DoTs should now be affected by mods correctly.


  • cavedude quest::buryplayercorpse will now despawn corpses in zones other than the client's current location, preventing dupes.
  • cavedude Added quest::summonallplayercorpses (same syntax as quest::summonburriedplayercorpse) which will depop and summon all of the player's corpses, buried or not.
  • cavedude Fixed a bug that caused some summoned corpses to use a static 5 minute decay timer.
  • cavedude Changed player_corpses_backup schema to match player_corpses. If the rule is enabled, corpse backups will now be created for players that are high enough level to drop items to their corpses.
  • cavedude Added a rule to determine whether or not to remove player corpse backups older than 2 weeks.
  • cavedude #corpse now has options to depop a single player corpse, or every corpse belonging to a single player.
  • cavedude You can now specify if a faction hit is temporary (is removed when player camps/zones) or whether or not to display the faction hit to the player in-game.

If temp in npc_faction_entries is set to:

0 (Default): Faction is permanent, player recieves a message. (Same functionality as we had previously.)

1: Faction is temporary, player does not recieve a message.

2: Faction is temporary, player recieves a message.

3: Faction is permanent, but player does not recieve a message.

  • cavedude Added an optional argument to quest::faction to utilize the functionality and values listed above.
  • cavedude Added minlevel and maxlevel to lootdrop_entries. The player credited with the kill (most hate) has their level checked against both columns, and if they are lower than the specified minlevel, or higer than the max, that item entry if it exists is removed from the NPC before it becomes a corpse.
  • cavedude You can now specify if a NPC automatically repops (rerolls against their spawngroup) or depops after the reverse spawn timer is up.

If despawn in spawngroup is set to:

0 (Default): Do not depop or repop, no depop timer is set. (Same functionality as we had previously.)

1: Despawn the current NPC and repop the spawngroup after the associated spawn2 timer is up (including variance.)

  • Repop, after the value specified in despawn_timer is up (also uses spawn2 variance.)

3: Depop the NPC after the spawn2 timer is up + variance.

  • Depop the NPC after despawn_timer is up + variance.

Example: Setting despawn to 1 will despawn the NPC and immediately respawn the spawngroup after it has been up for the length of its spawn2 timer + variance.

Example: Setting despawn to 4 and despawn_timer to 3600 will depop the NPC after it has been up for an hour + variance. It then will respawn after its normal respawn timer is up.

  • cavedude Fixed a crash in groups.cpp.

Required SQL: utils/sql/svn/2133_required_faction_loot_despawn.sql (Backup your data first!)


  • Bad_Captain Bots: Added Bot Group Messages and #bot groupmessages command to turn them on or off per bot or for all bots.
  • Bad_Captain Bots: Fixed bugs that allowed more bots to be spawned than specified in the Bots:SpawnBotCount rule, fixed bug that allowed more bots to be created than specified in the Bots:CreateBotCount rule, and fixed slow buffing bug.
  • Bad_Captain Bots: Various spell ai tweaks (including HoT spells should no longer block other heals from being cast in certain situations and hybrids should use less mana by healing less often).
  • Bad_Captain Bots: Removed client xp gain from bots outside the player's group.


  • Trevius Fixed inspect for SoF+ clients, which was broken by Rev2128.


  • Derision Added support for the 'Looking For Guild' window.

Required SQL: utils/sql/svn/2129_required_lfguild.sql


To use this feature, you must be running the querserv process. If you are not running queryserv, LFGuild will not work, but your server will run normally in all other respects.

Underfoot users can bring up the LFGuild Window by pressing the EQ buton and selecting Players/Looking For Guild.

I think all other clients can only access the feature by clicking on the notice boards in the Guild Lobby. To allow them to do this, you must add the following to the SUB EVENT_CLICKDOOR of your guildlobby/

if((\(doorid >= 5) && (\)doorid <= 38)) { $client->OpenLFGuildWindow(); }


  • Trevius VoA * Corrected a few alignment issues with the item struct and it should be fully aligned now.
  • Trevius VoA * Identified a few new item fields including: Prestige, SkillModMax, SkillModExtra, and Power
  • Trevius VoA * #summonitem and functions that summon items such as quests are now fixed.
  • Trevius VoA * Identified multiple Membership fields, which corrects multiple issues such as limited inventory slots, assigned AA limit, level limit, shared bank, and more.
  • Trevius Added packet length verification to all packet handling that was missing it.


  • Secrets VoA * Character Creation is now functional. Fixed creation request struct (opcodes were right), and membership is now sent (characters can now be created!)
  • Secrets VoA * Membership levels are now sent to the client via the SendMembership opcode. Hardcoded to be like older clients for now. Might need bag slots looked into; upon applying this, bag slots & items went missing.
  • Secrets Updated #race command to support races up to 714 (as per the 4/12/2012 client)
  • Trevius VoA * Items now display food/drink correctly and consuming them is now functional.
  • Trevius VoA * Items no longer display UKNOWN SKILL for skill mods on some items that don't have skill mods set.
  • Trevius VoA * Items no longer display Prestige on them.
  • Trevius VoA * Buying from merchants is now functional, though selling to merchants is not yet.
  • Trevius VoA * Disabled the Guild Member List temporarily to prevent guilded characters from crashing.


  • Trevius VoA * Casting Spells and Click Effects on items is now functional.


  • Trevius VoA * Corrected the Player Profile which should now be perfectly aligned.
  • Trevius VoA * More Opcode and Struct corrections/adjustments.


  • Trevius VoA * Identified/corrected some more opcodes and packet structures.
  • Trevius VoA * Merchants now display items for sale, but purchasing is not yet functional.
  • Trevius VoA * Added new packet for setting the max number of characters allowed to be created on an account (10 for now).


  • Trevius VoA * Identified/corrected some more opcodes.
  • Trevius VoA * Items can now be moved around through all slots.
  • Trevius VoA * Updated structs that use inventory slots to use the new format. Still need to verify some of the struct changes.


  • Trevius Initial addition of the VoA (March 21 2012) client. To enable, you must uncomment the VoA lines in /common/patches.
  • Trevius Many of the core systems are basically functional, but this client is still in an early development phase and not recommended for normal players yet.
  • Trevius Non-Player Race spawns will cause the client to crash, so it is recommended to test it in an empty zone.
  • Trevius Also, items in the bank will cause it to crash, but normal inventory seems to work fine so far.
  • Trevius You cannot create a character on this client yet, so you must use an existing character.
  • Derision VOA: Fixed zoning. Adjusted spawn encoding.


  • JJ Removed additional library and include directories from windows projects as they were not standard locations for all.


  • Sorvani Resurrections effects will again be applied to characters who are in a zone where combat is not allowed (GL, PoK etc) when they receive a rez.


  • Bad_Captain Bots: A few fixed for #bot stance command


  • Bad_Captain Bots: Implemented bot stances. See forum post.

Required SQL: utils/sql/svn/2107_required_bot_stances.sql


  • Bad_Captain Fixed potential crash in group roles code when a group member is removed.


  • Sorvani Added check for ST_AEBard song before sending spell SPELL_NO_HOLD
  • Bad_Captain Implemented Group Roles via UI (SoD+) Set group roles, maintains across zones, save/load grouprole sets (load doesn't appear to work on UF may be a client bug as client doesn't send request to the server for saved group roles as SoD client does)
  • Bad_Captain Fixed FindType to allow for spell effects > 127. Observed by bots trying to cure corruption (effectid 369) when client has a mount (summonhorse effectid 113: 369-128-128=113).
  • Bad_Captain Bots* fixed bot summoning of client corpses, fixed ability to spawn more bots than allowed via server rule (#bot botgroup load was not checking for SpawnBotCount rule), fixed bot issue with receiving buff with Group with Pets target type.

Required SQL: utils/sql/svn/2104_required_group_roles.sql


  • Secrets Fixed two more hanging issues introduced regardless of the item discovery feature was on or off.
  • Secrets Fixed a hanging issue introduced regardless of the item discovery feature was on or off. Keep in mind the item discovery feature still takes a reasonable amount of time to work, and this will be fixed in a future update.
  • Secrets Added OP_IncreaseStats for use with the #incstats command (and other things, in due time!)
  • Secrets Added QueryServ to the VS2008 project in preparation of moving eventlog, hackers, discovered items, and other non-essential database tasks over to it.


  • Trevius Added accout_status field to the discovered_items table to make it easier to remove accidental GM item discovery from the table.

Required SQL: utils/sql/sv/2099_required_discovered_items_account_status.sql


  • Trevius The version field in the zone_points table can now be set to -1 if you want all versions of the zone to inherit the same zone points.
  • Trevius Added extra option to the "#npcspawn create" command that will try to create the npc_type ID within the standard range for the current zone (zone_id * 1000). Usage: "#npcspawn create 1"

Required SQL: utils/sql/sv/2098_required_zonepoint_version_changes.sql


  • Trevius Added Grid ID to the #npstats command output.


  • Trevius Increased MAX_ITEM_ID to 200000 to match the new item ID max. This is only used for Min Status on items.


  • Trevius Fix for loading buffs on suspended pets.
  • Fixed GM Trainers, they should now work as intended.