Skip to content



  • Trevius Pets set to a petpower of -1 in the pets table will scale stats to the petpower like they used to.


  • Bad_Captain Fixed hatelist/aggro bug I introduced in rev 2087 causing NPCs to attack the closest client instead of the top of their hatelist.
  • Bad_Captain Updated some live opcodes for EQExtractor.


  • Leere Added IsFromSpell to Attack() to allow its use from spell effects. This allows the Rampage AA to actually hit mobs again.
  • Leere Added a rule for the minium hasted delay that can be reached for weapons. Default set to 400 based on best guesses from the Moss-Covered Twig tests posted on the net.
  • Congdar (ptarp)compile warnings in windows
  • Bad_Captain Fixed Enchanter's Mezmerization AA * it was extending buffs 35%, now extends mez spells by 1 tick / rank.
  • Bad_Captain Fixed NPC aabonuses issue(s) * NPCs were trying to access nonexistent aabonuses within combat code (hatemod as an example)
  • Bad_Captain Temporary Fix on crash due to non-player spell proc from Monster Summoning Pets until I can figure out the cause.
  • Bad_Captain Bot changes / fixes including maintaining HP & Mana after camp/zone/death, ability to maintain aggro over clients, taunting toggle command (#bot taunting [on|off]), delay death AA, and others. Please see for all Bot changes.

Required SQL: 2087_required_bots_hp_and_mana_and_spell_updates.sql


  • Trevius Crash fix for trying to zone into a flagged zone without having the flag.


  • Secrets Added QueryServ for VS2010 x86/x64. QueryServ allows queries to be sent to it for use on an external database, through the means of packets.

Currently, the only thing it logs is a #command input, but that will be expanded onto soon. A suggestion for our developers would be to move any statistic logging stuff (hackers table, eventlog, etc) over to it eventually

to save processing power on the main executable's machine. This will allow for things like discovered items to work a bit more better resource-wise.

  • Akkadius Added #advnpcspawn setversion (version#) * This will change the instance version in which the targeted NPC resides in
  • Akkadius Added #npcedit setanimation (stand, sit, crouch, dead, loot (0-4)) so that setting animations are much easier. This also makes animations much more reliable setting them with the spawn packet rather than through Perl.
  • Akkadius Added /MP switch to VS2008 so that it will compile with multiple processors
  • Akkadius Fixed compiles for VS2008 from the Queryserv commit
  • Secrets Added #qtest , which will populate the remote database through QueryServ with information as a test only. Requires 255 status by default.
  • Trevius LDoN points are now capped at 2,000,000,000 instead of ~16,000, and no longer roll back to 0 if they exceed the cap limit.

Reccomended SQL: (ON QueryServ's database, NOT the main db) utils/sql/queryserver/2079_queryserver.sql


  • Secrets v90 toolset bugs reported on forums. In order to use Perl 5.14, you MUST upgrade to VS2010 (preferrably ultimate), if you do not have vs2010, it will default to Perl 5.10 and you will be unable to use the much more stable Perl 5.14, an upgrade is reccomended.
  • Secrets Fixed Windows x64 rulesys bug where it would store them as an x64 version of an int (long long) and mess up the ordering of pointers, resulting in certain rules not loading properly.

NOTE: For those having issues compiling vs2010, there will be a guide up shortly to help you set up your dev environment. In the meantime, make sure your "Additional Include" and "Additional Library" paths

are correct and pointing at the right location. Failure to do so will result in mysql header/lib and perl header/lib issues. If you are looking for zlib x64, it's in SVN.


  • Secrets Implemented Visual Studio 11 and Visual Studio 10 project/sln files.
  • Secrets Added x64 configuration settings to VS11 and VS10 project files/SLN files.
  • Secrets Changed WIN32 define to _WINDOWS across the board. In the case where WIN32 is needed over WIN64 (ie; assembly references) there is still WIN32 defines and a new WIN64 define.
  • Secrets Upgraded ActiveState Perl lib define to 5.14 -* others still work but it is strongly reccomended to use 5.14 as it contains less memory leaks.
  • Secrets Added Zlib 1.2.3 x64 to the SVN for use with the windows solution files.
  • Secrets Fixed vs2008 project files to reflect the new _WINDOWS define
  • Secrets Perl 5.14 Compile Fix

NOTE: Since VS11 is in beta, I only set up the debug options. You should use Vs2010 Ultimate to compile in x64 mode. NOTE2: Perl 5.14 is stable, but if you absolutely need to use 5.10, ctrl f search for "perl514.lib" and replace it with "perl510.lib" NOTE3: A forum post will be made for help with compiling Windows x64 on, it is an experimental feature but has less issues than x64 linux, imo.


  • Leere Fixed a problem with no drop items inside of bags when trading with NPCs. Pets retain buff based procs through zoning now.


  • Leere NPCs now have the ability to ignore level limits for stuns. This ability can be turned off via rule. Also added a rule for what the base stun immunity level is for spells with a max level of 0.
  • Leere NPCs (and thus pets) are now able to equip items in non-visble slots. They will also look inside of bags that are traded to them for those items.

The pets table was expanded. It can now map to several npc IDs for the same pet type string, based on pet power. (This has replaced the old approach of letting pet power be a direct boost to NPC stats. The intention is to now have distinct npc_type table entries for the various pet power levels that a pet supports.) Pet naming and pet control was likewise moved out of code logic and to the pets table. (The default pet control is now petFamiliar rather than petOther.) Pets can now have items already equipped when summoned. The equipment sets used for that can be shared between pets and also be nested up to a depth of 5.

Pets are no longer stored as part of the profile blobs.

Pets (charmed and summoned) belonging to clients should no longer attempt to assist other NPCs if they hear a call for help.

Required SQL: utils/sql/sv/2069_required_pets.sql


  • Akkadius Implemented NPC Special Attack 'Z'. This will keep clients from being able to attack an NPC altogether similar to live.


  • Congdar Fix charms Platinum Disc and Gold Pin. You'll need updated items\ and \items\ once pushed to the quest repository.


  • Lerxst Fixed crash when calculating random focus effect from an augment when the base item had no focus effect.

Also added some bulletproofing in case that isn't the only place an invalid spell id might be passed.


  • Akkadius Added the ability to specify doors/objects/ground spawns to load for all versions of the same zone regardless by setting the value to -1.

This reduces serious redundancy of copying the same data over and over for instances.

Required SQL: utils/sql/svn/2062_required_version_changes.sql


  • Trevius Potential zone crash fix for Discovered Items pointed out by Congdar.


  • Trevius Fixes for issues caused by the extra SoF+ item click checks.


  • Trevius Added extra checks for SoF+ item clicks.


  • Trevius Added Discovered Items table to track who discovered an item for the first time and when.
  • Trevius Added new EVENT_DISCOVER_ITEM player event. It exports the item id to the $itemid variable.
  • Trevius Added Rule Character:EnableDiscoveredItems to make item discovery tracking optional.

Required SQL: utils/sql/svn/2057_required_discovered_items.sql

Optional SQL: utils/sql/svn/2058_optional_rule_discovered_items.sql


  • Leere Changed raid leadership ability costs to match client expectations.
  • Leere All stuns should now treat a max level of 0 as meaning level 55.


  • Akkadius Mysql CLI changes
  • Akkadius Preliminary work to some future additions, added int32 Database::GetGuildDBIDByCharID(int32 char_id)


  • Akkadius Another memory leak in parser.cpp, NewEventList never deallocated
  • Akkadius Reduced code checking redundancy in several places regarding functions that reference ExecWeaponProc, only valid invalid spells are checked and logged.
  • Akkadius (Lerxst/Akkadius) Approximately 8 memory leak fixes based on findings from 'cppcheck', some found in loot, popup windows and a few other places.
  • Akkadius (Lerxst) Various quest object fixes, sanity checks and initiator adjustments
  • Akkadius (Lerxst) Minor trading code adjustments
  • Akkadius (Lerxst) Logic fixes with bot code
  • Sorvani Critical hit filter should work again.
  • Secrets Reverted my changes.


  • Derision Underfoot: Extended Buffs should now last the correct time without needing to zone.


  • Derision Fixed rez bug.
  • Akkadius Fixed a spell crash that has been reported on The Hidden Forest with TryFadeEffect
  • Akkadius Fixed a spell crash with ExecWeaponProc when a spell or weapon procs a spell that does not exist, you can catch the invalid spells in your spells log if you have them enabled


  • Trevius Fix for Perl Doors GetID() command.
  • Akkadius Mysql #command CLI * Fixed an issue where the query string was being escaped
  • Akkadius Mysql #command CLI * Added switches -s and -h. Switch -s providing space between the select lines in a query, -h highlighting every other row to be more readable


  • KLS (lerxst2112) Client::Message memory leak
  • Trevius Potential crash fix for MoveTo() being used on an NPC that has a grid with wandertype 3.


  • Leere More than 6 members of a raid can now receive raid experience.
  • Sorvani Added AE Rampage message and filter


  • KLS Added Ebon/Radiant crystal reclaim for the clients I have.(Titanium/SoD/Underfoot)
  • KLS Seperated buffs from the player profile.
  • KLS Seperated buffs allowed me to fix the counters on buffs for the newer clients across zone lines, as well as melee and magic runes are no longer limited to 65k as they are no longer uint16s.
  • KLS Added ability to save variables to items. Via $client->SetCustomItemData(13, "SomeVariable", 1024); #give our mainhand some variable.
  • KLS Added ability to retrieve items from the inventory in perl with $client->GetItemInInventory(slot_id);
  • KLS Fixed Item::IsAugmentable() to return correctly if the first augment slot is not used.
  • KLS Updated for latest code and readded Derisions' cross-zone /inviting. I've been testing it for a while now and can't find any real issues with it so I readded it.
  • KLS Added class and race combo's into the database so they can be potentially changed; only SoF+ clients will correctly display this.
  • KLS Fixed a bug in WorldDatabase::GetCharSelectInfo.
  • KLS Changed internal faction values to go in order this change will break some quests in the short term but should be more intuitive in the long run.
  • KLS Changed loading slightly: it will now look for player quests in the following order: .\quests{zone}\player_v{instance_version}.pl, .\quests{zone}\, .\quests\templates\
  • KLS CanClassX functions are no longer hardcoded, they will now check the skillcaps data instead.
  • KLS EntityVariables are now identified with a string instead of an int ex: $npc->SetEntityVariable("SomeId", 5), this shouldn't break any existing quests.
  • KLS Fixed an issue where bard songs could get stuck in the on position even if the bard had turned singing off.
  • KLS Fixed an issue where merchants would load and send items more than once in cases where npcs had merchants that shared merchant_ids in a zone.


  • Akkadius Fixed an optional argument in client 'NukeItem'
  • Akkadius Added two #npcedit commands; armortint_id and alt_currency_id
  • Akkadius Exported $client->GetAggroCount();, this will get how many NPC's are aggroed on the client. This can also be used to determine when in combat.
  • Akkadius Mysql ingame basic CLI to run select queries or execute queries from in-game, default account access 250, be careful when using this.
  • Akkadius (Lerxst) Added a crash fix for spells that do not find a valid item in the database SE_SummonItem

Optional SQL: utils/sql/svn/2023_optional_mysqlcli.sql


  • Trevius Added Destructible Objects for Underfoot.


  • Derision Implemented Tune Of Pursuance AA.


  • JJ Added hacker entry for possible instant camp disconnects.


  • Trevius Destructible Objects now change damage states as they reach 75%, 50%, 25% and 0%.
  • Trevius Added Perl Mob quest object SendUntargetable(to_client, in) to toggle the ability to be targeted.


  • Trevius Initial implementation of Destructible Objects (SoD only for now). Most of the work was done by Derision.

To Create a Destructible Object, use the 'lastname' field in npc_types to set the model (ie. DEST_DEV_TENT1), and add "o" in the 'npcspecialatks' field.


  • Leere Damage shields should no longer break root spells.


  • Trevius New rule added to allow a cap for GM skill training on specializations (default is 50).
  • Trevius #maxskills will now only set specializations to 50 each to prevent them from all resetting to 1.
  • Trevius GM Trainers will no longer allow training more than 1 (or 2 if you have the AA) specializations above 50.
  • Bad_Captain Added rule for Bot AAs by expansion, bot bash fix (bots with bask/slam skill could bash regardless of weapon(s) or shield), various bot AA fixes, added a few bot AAs

Optional SQL: utils/sql/svn/2015_optional_specialization_training_rule.sql utils/sql/svn/2016_optional_rule_bot_aa_expansion.sql


  • Leere (Tabasco) Added a deque for signals received by an NPC.
  • Sorvani Various message type fixes, most notably NPC Flurry/Enrage/Rampage and Pet Flurry/Rampage.


  • Akkadius (Akkadius/Lerxst) Fixed Beastlord 1.5 and 2.0 pet clickies.


  • KLS Added working Alternate Currency system for SoD and SoF(Untested but hopefully works).
  • KLS Added two fields to merchantlist that allows one to filter which items are offered to players by minimum faction and minimum level.
  • KLS Max stacks on items increased from 254 to 32767.
  • Akkadius Modified items id cap to 200,000
  • Akkadius Changed Perl Client Object 'NukeItem' to use the new fields implemented by KLS's Alternate Currency revision:

$client->NukeItem(itemnum, [where_to_check, 1 = invWhereWorn, 2= invWherePersonal, 4 = invWhereBank, 8 = invWhereSharedBank, 16 = invWhereTrading, 32 = invWhereCursor]); Ex: $client->NukeItem(1001, 2);

  • Akkadius (Lerxst) Fixed Enduring Breath bot code, adjusted level requirements and added Beastlord class case.

Required SQL: utils/sql/svn/2004_charges_alt_currency.sql


  • Derision Spell resist messages now use the same MT as fizzles (for chat filter purposes).


  • Bad_Captain Rewrote Bot AAs to use aabonuses and GetAA(). Also added a few AAs.
  • Bad_Captain Fixed Bot chance to hit. (they never missed with their primary weapon attacks, and only missed ~5% with their offhand)
  • Bad_Captain Added WipeHateList to bot group attack, bot group follow, and bot group guard to allow target switching and keeps bots and their pets from attacking their target when you no longer want them to. (suggested by Criimson)


  • Trevius Exported to Perl Mob: SetDeltas(delta_x, delta_y, delta_z, delta_h), SetLD(value), SetTargetDestSteps(target_steps).
  • Trevius (SuperUserJD) SpellOnTarget fix for casting beneficial spells on group members while in a raid.


  • Derision Added rule to prevent looting corpses when a player has an item on the cursor (to prevent item loss using Loot All).
  • Derision Alcohol intoxication is maintained across zoning (can be turned off with a rule).
  • Derision Intoxication level affects STR/STA/DEX/AGI/WIS/INT.
  • Derision Added 'Update' button to #showstats window for SoD+ clients.

Optional SQL: utils/sql/svn/1998_optional_intoxication_and_looting_rules.sql


  • Leere Removed lore item from the restrictions for pick pocket.


  • Derision Player pets will now show their owners name. UF users can turn this off in options.
  • Derision SoD/UF: Beneficial Pet Buffs can be clicked off in the Pet Window.
  • Derision Underfoot: Can now click off buffs in the short buff box. Removed registraion of HoT in patches.cpp


  • Bad_Captain Fixed double class / race stats for bots.


  • Derision Underfoot: OP_ClearSurname


  • Akkadius Corrected a grammatical error with training disciplines.


  • Bad_Captain Updated Bot::MeleeMitigation to match mob version.


  • Trevius (Akkadius) Exported Freeze() and UnFreeze() to Perl Client.


  • Caryatis Added Special Attack 'p' (Makes mob immune to pacify)
  • Caryatis Added Special Attack 'j' (Tether * returns mob to spawn point if its distance away from spawn point is greater than its aggro range)
  • Caryatis Added Special Attack 'J' (Leash * same as Tether except heals mob to full, strips all buffs and wipes the hatelist as well)
  • Caryatis Fixed TGB(if you cast a group buff with a corpse or an npc thats not a client's pet as target, it will use your group instead)


  • Congdar redo world container check


  • Caryatis Added support for higher level invis and see invis(eg Ethereal Invisibility & Skylight Sagacity)
  • Congdar update check to world containers


  • Congdar (Criimson)Bot dyes (and tweaks)
  • Congdar (lerxst2112)Bot dyes (and tweaks)
  • Bad_Captain Fixed Bot GetAC() and GetATK() to work with #ShowStats


  • Congdar update check for Lore


  • Congdar (pfyon, Criimson)Various bot tweaks
  • Caryatis Updated My/Showstats window.

Required SQL: utils/sql/svn/1974_required_bot_spells_update


  • Trevius Exported AssignToInstance(instance_id) to Perl Client.


  • Caryatis Implemented the Extra Skill Damage itembonus(+bash, +kick dmg)

Optional SQL: utils/sql/svn/1972_optional_extradmg_item_cap.sql


  • Leere Fix for reading books in SoF and later clients.


  • Derision OP_DisciplineUpdate for SoF and Underfoot (expanded Disc struct in UF player profile, added encode for Disc update).


  • Caryatis Added Perl Object: $mob->SetBodyType(bodytype).
  • Caryatis Fixed issue with swarm(and wake the dead) pets where they would not despawn if they spawned as the target died.
  • Caryatis Changed when mobs enrage to 9%(from 14%) to match live, with a rule to customize the value if wanted.
  • Caryatis Added rule to allow matching of new live rules for enrage(it was removed from all non player-pet npcs).

Optional SQL: utils/sql/svn/1968_optional_enrage_rules.sql


  • erde FreeBSD compile fix for Rev1963 (no strncpy in FreeBSD).


  • Derision Underfoot * Support for /emote
  • Derision Underfoot * Support for Guild Creation via new window in Underfoot.
  • Derision SoD+ * Changing group leader should update Group Leadership AA to that of the new leader.
  • Caryatis Live like focus effect behaviour added(Improved Damage, Healing and Reduce Manacost focus effects will now be random if the spell contains both a min(effect_base_value) and max value(effect_limit_value)

Optional SQL:

utils/sql/svn/1962_optional_guild_creation_window_rules.sql utils/sql/svn/1963_optional_rule_live_like_focuses.sql


  • Derision Underfoot * Instrument modifiers / AAs should now improve runspeed.


  • Trevius Fix for EVENT_ITEM_CLICK_CAST bugging Titanium clients.


  • Trevius Fix for EVENT_ITEM_CLICK_CAST for SoF+ clients.
  • Trevius (Akkadius) Added new rule Console:SessionTimeOut for adjusting console session timeout.

Optional SQL: utils/sql/svn/1960_optional_console_timeout_rule.sql


  • JJ Split wander type 4 to allow depop with/without spawn timer. Type 4 is with, type 6 is without.


  • JJ Added functions to count all corpses, get corpse ids, and allow checking of items on player corpses


  • JJ (Leere) Fix for bards in reagent code


  • KLS Dest zone would buffer overflow if it was >= 16 characters, fixed.
  • KLS Comment clean up + added EntityList::FindDoor($doorid) to perlXS
  • KLS Fixed the PerlXS export for GetDoorByID and GetDoorByDBID
  • Sorvani Added door object perl functions GetKeyItem(), SetKeyItem([value]), GetNoKeyring(), SetNoKeyring([value]). Example Usage: my$doorobj = $entity_list->FindDoor(6); $doorbj->SetKeyItem(10615); $doorbj->SetNoKeyring(1);
  • JJ (Akkadius) Exported some task functions to perl.


  • JJ (Sorvani) Stop forcing client to tutorial when button not selected.


  • Trevius Added new Perl Mob quest object RemoveNimbusEffect(effectid) for removing permanent nimbus particle effects.
  • JJ EVENT_CLICKDOOR now passes the zone version to perl.


  • JJ Added message to client when using #instance destroy command.
  • JJ Altered doors index to include version to help bring door ids below 256 in zones with multiple versions. Required SQL provided.

Required SQL: utils/sql/svn/1946_doors.sql


  • JJ (Leere) Fixed reagent consumption oddities


  • JJ Depop with spawntimer reset option now works properly. Default use is changed to false.
  • KLS Added some minor stuff
  • KLS Added animation field to spawn2 that will control what the spawned npc will do at their guard point. 0 = eaStanding, etc etc
  • KLS Tweaked books in SoF+ as they weren't displaying right; it may still not be perfect though I haven't tested it with every book in the game. Required SQL Provided.


  • KLS Lowered resolution on QuestTimer process timer to actually allow you to use sub 1 second times.
  • KLS Added quest::settimerMS(timer, duration) to allow timers not in integer second intervals.
  • JJ Moved ENTERZONE event for items to execute before SCALE_CALC.


  • Secrets Modified the pound command #reloadstatic to respawn doors after it despawns them.
  • Secrets Made the default door dest zone be "NONE" for quest::createdoor's constructor
  • Secrets Added potential fix for UCS assertion error under windows after being up for so long.


  • Secrets Opcode to remove all doors.
  • Secrets Perl door support.
  • Secrets Perl objects added for Doors since first PerlDoors commit: SetSize, GetSize, SetIncline, GetIncline, GetOpenType, SetOpenType
  • Secrets Added quest::createdoor(model, x, y, z, h, [opentype], [size]) . This spawns a door similar to quest::creategroundobjectfrommodel, and can be manipulated in the same way as other doors. To save it, get the door object using $entity_list->GetDoorByID(id), as it returns an entity ID (and preliminary DBID/DoorID is stored on the object itself) upon creation of the door. otherwise the door is temporary, and does not save the stored DBID. $doorobj->CreateDatabaseEntry() saves it and its temporary DBID + DoorID.
  • Secrets Added door object perl functions GetLockpick() and SetLockpick([value]).


  • JJ Added more tables to remove entries from when deleting character.


  • Secrets Adjusted the default value for Character:SkillCapMaxLevel. It now defaults to 75 because PEQ only has skillcaps up to 75, and if the level is higher than 75 it will always return 0, breaking skills. (layer 8 issue fix)
  • Secrets Made stat cap adjustable via rules, Character:StatCap. The client won't be in sync but that's what #mystats is for. 0 = feature disabled, defaults to 0.


  • Derision Fixed /yell


  • Secrets Fixed pet HP resetting if the pet is above 32k when zoning.
  • Secrets Fixed player HP rollover bug (~495k hitpoints, rarely encountered) with AAs by temporarily casting it as a float.

NOTE: the client only displays 10 million hitpoints in titanium. Keep that in mind when designing items. Only issue is displaying them, unlike the rollover bug you won't die and it will show on show/mystats.

  • Secrets Fixed damage on weapons above 255. They only display on SoF+ clients, and Titanium will simply show a cosmetic issue (an incorrect value). You can set an item to any value up to the max for an uint32 and it will work.
  • Secrets Added rules for the low-level damage cap. There is a rule for the pre-10 cap, and one for the pre-20 cap. Defaults to 20 and 40 respectively.

REQUIRED: You will have to recompile sharedmem with this update. Items will fail to load otherwise.


  • Trevius Added EVENT_CLICK_OBJECT to player quest events. It exports variable $objectid which holds the entity id of the clicked object.


  • Secrets (Akkadius) Added quest::createguild(name, leader) for creating a brand new guild.


  • Trevius Added quest::getguildnamebyid(guild_id) for getting a guild name from the guild ID.


  • JJ Implemented Arcane Tongues research AA. Chance for research success increases for each rank (10, 25, 50).
  • JJ Implemented New Tanaan Crafting Mastery tradeskill AA. Each rank allows an additional tradeskill above 200.

Note: For servers with players who have tradeskills already above the limit without previously purchasing these AAs will freeze the chance to increase until they purchase the proper amount of NTCM AAs.


  • KLS Changed Mob::NPCSpecialAttacks(atk, perm) to Mob::NPCSpecialAttacks(atk, perm, [reset = 1], [remove = 0]).

This should allow one to add and remove flags individually without having to reset everything each time.


$npc->NPCSpecialAttacks(RQ, 0); //would enable the npc to rampage and quad.

$npc->NPCSpecialAttacks(S, 0, 0); //Would enable the NPC to summon as well as rampage and quad by telling it to set S but don't reset the earlier flags.

ex: $npc->NPCSpecialAttacks(RQS, 0); //would enable the npc to rampage, quad and summon. $npc->NPCSpecialAttacks(S, 0, 0, 1); //Would enable the NPC rampage and quad by telling it to set S but don't reset the earlier flags and also remove the flag being set.


  • JJ (Akkadius) Fixed camera shake usage output.


KLS and Co: -All liquid should count for skill ups. -Finished unified quest interface... this is fairly large and will probably have a few problems here and there; report them to me and ill fix them asap. The goal behind the system is to allow more than one scripting system to work at a time (though with limited interaction due to pre-existing implementation limitation). This was a feature requested by the Dalaya community as they plan to merge back to the eqemu codebase and clients but are stuck with an old parser and thousands of files that can't be realistically rewritten in a short time frame.


  • JJ Doubled buffer for tradeskill search when using experiment mode. Outputs message in error log when matches exceed buffer.


  • JJ Changed tradeskills to distinguish world containers in multiple recipe matches. Split invalid container vs. non-unique recipe error log entries. Allowed server to select first match for duplicate recipe contents.


  • JJ (Zothen) UCS message logic fix.
  • JJ (Zothen) Learning basics clean name fix.


  • KLS (lerxst2112) *nix compile fix.
  • KLS Added #picklock #sensetrap and #disarmtrap for LDoN traps since they still don't work quite right on the newer clients because we don't implement destructable objects yet.


  • Congdar (Timothy_nonax) Add Bot Command ( #bot pull )


  • Trevius (Vaion) Fix for focus effect decay over max level.
  • Trevius (Zothen) Crash fix for UCS.
  • Trevius Rule added for Skill Caps Max Level to resolve issues with servers that have Chars over level 75 after Rev1875.

Optional SQL: utils/sql/svn/1889_optional_skill_cap_rule.sql


  • Secrets Added OP_CameraEffect for Titanium.
  • Secrets Added *commands #reloadallrules, #reloadrulesworld, and #camerashake. These default to
  • Secrets Added optional "global" flag as item 5 in the $mob->CameraEffect() quest object. This does #camerashake, but in quest form.
  • Secrets #reloadallrules reloads rules in every single zone plus world. #reloadrulesworld reloads the rules in world only.
  • Secrets #camerashake shakes the camera in every zone with required args intensity and duration.


  • Trevius Added new Perl Mob quest objects GetItemHPBonuses() and GetSpellHPBonuses().


  • Secrets Converted PVP flags to be a variable, as there are other PVP rulesets embedded in the client. These will need code support to work properly. (IsAttackAllowed specifically.)
  • Secrets Enabled Firiona Vie ruleset as an option. This disables OOC, makes languages hard to understand between races (somehow), and disables no-drop. If set to 2, this rule will only affect GMs, allowing players to be traded no-drop items from GMs. Player-to-Player trades are still considered active hacks, and are still detected.
  • Secrets Made a rule to toggle the GM Petition Window in titanium. You will need the guide petition files for that client, and it still needs code support to work. (find these yourself.)
  • Secrets Added expansion settings to the rule_values table instead of the variables. The PVP settings will also be here now, too. (See Optional SQL with this update.)
  • Secrets Fixed an issue pointed out by Trevius in the previous commit.

Optional SQL: utils/sql/svn/1885_optional_rules_fv_pvp_expansions.sql


  • BadCaptain Bot spell update* Group Heals, debuff spells, spell recast timers, healing AI tweaked, bot bards can now have more than one song active

Optional SQL: utils/sql/svn/1884_optional_bot_spells_update.sql


  • Trevius The mana regen portion of bard songs is no longer affected by instrument mods.
  • Trevius (scruffy) Identified opcodes for /zone and petition queue on Titanium.


  • Derision Underfoot: Corrected OP_CompletedTasks.


  • Trevius Implemented spell formulas 1001 to 1998. They subtract/add values by increasing amounts each tick based on the formula * 1000 value.


  • JJ (Danyelle) Face fix for Iksar Beastlord pet.


  • JJ (Jaekob/Danyelle) Texture fix for Iksar Beastlord pet.


  • Trevius Skill caps now use the MaxLevel rule for deciding max level of skill caps instead of being hard capped at level 75.
  • Trevius All spells can be blocked in a zone by setting a spell id of 0 in the blocked_spells table.
  • Trevius If a zone has all spells blocked by setting spell id 0 in blocked_spells, any additional spells added for that zone will become exceptions and be allowed.
  • Trevius Reverted Sorvani's swarm pet change from Rev1872 due to some bugs it caused for normal pets.


  • Trevius Power Source slot can now be augmented.
  • Trevius Corrected spell formula 122 (Splurt) and implemented the reverse splurt (Ex. Corath Venom) where damage reduces each tic.


  • gaeorn (sorvani) fix to make swarm pets not be targetable as NPCs


  • Trevius Added variable export $slotid to EVENT_ITEM_CLICK and EVENT_ITEM_CLICK_CAST, which exports the slot id of the item that triggered the event.


  • Trevius Fixed a potential crash in TrySpellOnKill().
  • Derision Underfoot: Bard instrument modifiers now show (as focus effects) in the item stats window.
  • Derision Allowed fishing in 'VWater' (Region type 7) on the basis this is the only type of water in Sleeper and you can apparently fish there.


  • Derision Fixed bug in GetZoneForage where generally only the first three zone specific items could actually be foraged.
  • gaeorn (sorvani) fix for bard pacify songs


  • Trevius Finalized implementation of Item Faction Mods. The bonuses now remove if the item is unequiped.
  • Trevius Added Rule Character::ItemCastsUseFocus * If true, this allows item clickies to use focuses that have limited max levels on them
  • Derision Handle Spell duration formula 15 (for Distillate of Skinspikes).

Optional SQL: utils/sql/svn/1859_optional_item_casts_use_focus_rule.sql


  • Trevius Implemented item faction modifier stats (i.e. factionmod1, factionamt1).
  • Trevius Added Power Source slot to item stat (charm) scaling.
  • Derision SoD+: Fixed bug when looting items from last two inventory slots (commonly seen when using Loot All).
  • gaeorn only send hp/mana/endurance updates to group members when in raid instead of entire raid


  • JJ (c0ncrete) Fixed shared bank database query to match schema.


  • Trevius Replaced most uses of strncpy with strn0cpy for consistency and stability.
  • Trevius Increased zone name loading to 32 characters for doors.

Required SQL: utils/sql/svn/1847_required_doors_dest_zone_size_32.sql


  • Derision SoD/UF: /makeleader and changing Group Leader via Roles works.
  • Derision If the leader of a group of exactly 3 members quits, leadership should now be transferred to another member.


  • Caryatis Stability fixes for Mystats window.


  • Derision Support for door opentype 57 (instant intra-zone portals which don't require the client to click, such as in the bazaar).

Note: For opentype 57, the client automatically sends the click when the player moves onto the portal.

Optional SQL, to set the bazaar portal discs to type 57 (they are type 58 in the PEQ database, but collects show they should be type 57):

update doors set opentype = 57 where zone = 'bazaar' and name = 'PORTAL_DISC';


  • Trevius Exported GetFreeSpellBookSlot(start_slot=0) and GetSpellBookSlotBySpellID(spell_id) to Perl Client.
  • Trevius Fix for potential crash with EVENT_ITEM_CLICK.
  • Trevius (Secrets) Identified OP_SpellEffect for Titanium.
  • Congdar bad_captain: more Bot Updates / Fixes V 2.0


  • Congdar fix stack buffer overflow


  • Congdar bad_captain: Bot Updates / Fixes V 2.0


  • Trevius Changed Perl NPC AddItem(itemid, charges, slot = 0) to AddItem(itemid, charges = 0, equipitem = true) since slot was unused anyway.
  • Trevius Added equipitem option to quest::addloot(item_id, charges = 0, equipitem = true).


  • Caryatis Fix for Phantom line of discs not working.
  • Caryatis Fix for buffdurationformula 5(0 value results in a 3 tick spell, was set to 1 tick).
  • Caryatis Fix for discs(and AAs) setting a reuse timer if used while not able to(ie stunned)
  • Caryatis Implemented SE_VoiceGraft
  • Caryatis Added scaling for pet focus items based on the pet power in the spell file.


  • Caryatis Fix for fear effects not fading when the buff does, also added check so that a negative recast is not set with SE_ReduceReuse


  • Trevius (l0stmancd) Fix for invalid slot move warnings on SoF+ clients.
  • Trevius (l0stmancd) Fix for potential item loss issue while using an inventory augmentation sealer.
  • Trevius Adjustment to the augmentation code logic to remove potential issues.
  • Trevius Added updateclient option to Perl Client TakeMoneyFromPP(copper, updateclient=false).
  • Derision UF: Translated command code for /pet hold
  • Caryatis Implemented SE_ReduceReuseTimer(epic 1.5/2.0 focuses, sof type3), SE_BlockNextSpellFocus(chance to block next spell matching focus)
  • Caryatis Implemented SE_SetBodyType, SE_SpellOnDeath, SE_BlockSpellEffect, SE_Leap, SE_ImmuneFleeing, SE_AddMeleeProc
  • Caryatis Delay Death AA is now functional(optional sql).

Optional SQL: utils/sql/svn/1823_optional_delay_death.sql


  • JJ (Leere) Exported quest::LearnRecipe(recipe_id) to PERL


  • gaeorn possible fix for some short duration buffs (bard songs) fading one tick early
  • Caryatis Changed SE_NoCombatSkills to SE_CombatSkills(0 = spells only, 1 = discs only)
  • Caryatis Implemented SE_SpellDurationIncByTic(formerly SE_FocusCombatDurationMod), it adds tics to spells/discs
  • Caryatis Added support for Special Attack 'Y'(Ranged Attack), so when an NPC can't reach or summon his target, he will use range if able to
  • Caryatis Implemented SE_Forceful_Rejuv(refreshes spell gems), SE_HealFromMana, SE_ManaDrainWithDmg, SE_EndDrainWithDmg
  • Caryatis Implemented SE_LimitHPPercent, SE_LimitManaPercent, SE_LimitEndPercent(limit you to a certain % while you have the buff)
  • Caryatis Implemented SE_SwarmPetDuration(swarm pet focus)
  • Caryatis Res Timer changes have been reverted temporarily.

Optional SQL: utils/sql/svn/1817_optional_npc_archery_bonus_rule.sql


  • gaeorn fixed lull max level check to account for no max level
  • Caryatis Change to Doppelganger NPCID due to PEQ's next rev already using the IDs.
  • Trevius Added quest::stopalltimers() to allow stopping all current timers on an NPC at one time.
  • Trevius Added option to stop all timers when using #reloadquest by adding any argument after the command (ie. "#reloadquest 1"). Also added new #rq alias for the command.

Required SQL: utils/sql/svn/1813_required_doppelganger_npcid_change.sql


  • Caryatis Viral spells are now supported(field191 determines how many targets it will spread to and field 192 determines how often(in seconds)).
  • Caryatis Lull spells will now only work on the levels they were intended to.
  • Caryatis Corpses now have a res timer(like live). You may res a corpse as many times as you want however you will only recieve exp for the first.

Optional SQL: utils/sql/svn/1809_optional_rules.sql


  • Caryatis Implemented Target's Target(target type 46). Places effect on your target's target(ie cast with mob as target but spell lands on mob's target)


  • Trevius Changed xpreward field in the tasks table to be signed so it can display negative values for the level based experience rewards.
  • Trevius Tasks now show item links in Task Rewards correctly for all clients.
  • Trevius Tasks now reward any set Experience and/or Coin even if the rewardmethod is set to 2 (perl quest).
  • Caryatis Mobs now summon starting at 97%, not 94%(like live).
  • Caryatis Charmed pets can no longer summon mobs from out of their LoS while charmed.
  • Caryatis All fixed duration charm spells now have fixed duration instead of only 2 that were supported.
  • Caryatis SpinStun effects now work on mobs up to the max level that the spell denotes(previously limited to 55 regardless of spell info)
  • Caryatis SpinStun durations have been changed to be pulled from the effect_value, instead of buff duration(which stopped alot from working), also spins mobs now
  • Caryatis Implemented SE_Fearless(Valiant Companion), SE_AntiGate(Translocational Anchor), SE_DispelBeneficial(various spells and clicks)
  • Caryatis Implemented SE_IncreaseBlockChance, SE_CurrentEnduranceOnce, SE_CurrentManaOnce, SE_AEMelee(duration rampage)
  • Caryatis Persistent Casting AA is now functional(required sql)
  • Caryatis Rampage(-) and Destructive Force(+) have changed, the duration on both has been altered based on the live spell info(required sql)
  • Caryatis Flurry will no longer hit the highest on hatelist, it will hit the mobs current target like live(fixes rooted flurrying mobs).
  • Caryatis Updated spdat.h with current status of all spell effects
  • Caryatis Reorganized spell_effects.cpp to remove alot of the clutter of effects handled elsewhere

Required SQL: utils/sql/svn/1803_required_tasks_xpreward_signed.sql utils/sql/svn/1804_required_ae_melee_updates.sql


  • Trevius (l0stmancd) BagType 53 can now be used as an Augmentation Sealer from inventory.
  • Caryatis Implemented SE_Doppelganger(Doppelganger AA is now functional)

Required SQL: utils/sql/svn/1802_required_doppelganger.sql


  • Caryatis Implemented SE_GravityEffect(424)
  • Caryatis Added rule for endurance to be included in rest regeneration

Optional SQL: utils/sql/svn/1799_optional_rest_regen_endurance_rule.sql


  • LethalEncounter Added Archery in for pvp.
  • LethalEncounter Fixed a throw bug.
  • LethalEncounter Fixed char select colors not matching your colors in game.


  • Doodman Fixed zone crash in CheckCloseArrgo() during assist checking based on

flawed if logic.


  • LethalEncounter Fixed Stamina issues.


  • Trumpcard Lots of performance improvements to combat code/AI code. Streamlined several calls, and found and removed unneeded calls
 in MobAI that were causing serious bottlenecks.  Went through and caught a few memory leaks, and converted
 many deletes to safe deletes.