mackal Added classes_required to merchantlist (same bitmask as items)
Secrets (Akkadius): Perl $client->SilentMessage("Message"); addition, this is a pre-req for a Perl plugin I've shared with EQEmu. This function essentially mimics a player speaking with an NPC * which is used in popup window responses
Secrets Added functionality to Perl for $client->PlayMP3("name of file").
Usage varies, but typically you can place an MP3/WAV/XMI in the EQDir//sounds, pfs, s3d, or root client folder and it will play through this Perl function. Example, $client->PlayMP3("combattheme1.mp3") or $client->PlayMP3("TUTBTrade1.mp3")
All clients except Secrets of Faydwer and 6.2 have their opcodes identified for this function. The struct + supported params is the same throughout versions.
Use $client->PlayMP3 with an invalid sound file to stop playback or simply wait for it to end.
KLS Added functionality to Lua for Client:PlayMP3(filename)
KLS Added functionality to Lua for Client:SendMarqueeMessage(type, priority/opacity, fade_in_time_ms, fade_out_time_ms, duration_ms, msg)
Kayen Implemented SE_ArcheryDoubleAttack (Chance to do an extra archery attack)
Kayen Implemented SE_ShieldEquipDmgMod (Increase damage in primary hand if shield equiped)
Kayen Implemented SE_ShieldEquipHateMod (Increase hate generated if shield equiped)
Kayen Implemented SE_TriggerOnAmountValue (Trigger spell if HP/Mana/End bellow X value or num pet on target)
Kayen Fix to SE_BlockNextSpellFocus to make it functional again.
mackal Moved the blocked buff check down so we get spell effects like on live
Kayen Implemented SE_ReduceHealing (Reduces amount of healing on target by X amount)
Kayen Implemented SE_CastonFocusEffect (Triggers spell as part of a focus, when that focus effect is used)
Kayen Implemented SE_IncreaseHitDmgTaken (Effect is triggered when X amount of damage is taken)
Kayen More fixes for various spell triggers/procs to now properly use their resist modifier.
mackal Blocked buffs shouldn't fail, they should just not be applied.
JJ Changed enable/disable recipe to confirm change made.
Kayen Implemented additional functionality for SE_CurrentHP utilizing base2 values. (ie limit to body type)
Kayen Implemented SE_MitigateMeleeDamageSP (Partial Melee Rune that only is lowered if melee hits are over X amount of damage)
Kayen Implemented SE_SpellOnAmtDmgTaken (Effect is triggered when X amount of damage is taken)
Kayen Fix for various spell triggers/procs to now properly use their resist modifier.
Kayen Fix to mob->ModSkillDmgTaken(skill_num, value), setting value to -1 will now properly effect all skills.
mackal Fixed issue with crippling blow from berserker frenzy not actually doing anything
mackal Fix haste caps
mackal Fixed SpellType_Charm case in AICastSpell
mackal Added #showspellslist to view a mobs spell list
mackal Fix procing off of unattackable things
JJ Bandaid fix to CopyCharacter function.
mackal Stacking issues should be resolved now, probably could be optimized more, but went from 3 loops that do stuff to 3 where only 2 really does stuff and one breaks early in most cases, so slightly better
Secrets Fixed an issue related to a zone crash where the count of the abilities in an AA was 0, leading to a size 0 buffer issue.
Secrets Fixed an issue with two zone crashes reported on PEQ related to the buff restrictions code and AAs.
mackal Partially make use of dot_stacking_exempt (case when it's 1 is implemented, -1 case isn't)
mackal Added assistradius to npc_types, defaults to aggroradius if set to 0 (old behaviour)
Sorvani fixed leash and tether special abilities to use the specified range correctly.
mackal Rewrote the Mob::_GetMovementSpeed fix an issue that arose from the change on 11/11
Added the rule Character:BaseRunSpeedCap (default 158) so people can customize what their runspeed cap is. Hardcapped to 225 so stuff doesn't get too crazy.
Leere Fixed the drinking message for auto-consume, it will again correctly show up for forced consumption instead.
mackal Added Mob::DoCastingChecks() which will check for various fail conditions while the casting bar is up. This is called after Mob::DoCastSpell() starts the casting and before it returns.
mackal Fixed Mob::CalcFocusEffect()'s SE_LimitEffect
Leere Fixed a stacking issue for SE_StackingCommand_Block
mackal Implemented bard song effect cap. You can set the base cap with the rule Character:BaseInstrumentSoftCap, defaults to 36 or "3.6" as it is sometimes referred to.
mackal Fix Echo of Taelosia and Ayonae's Tutelage to increase the mod cap instead of further improving the instrument mod
mackal Implemented Singing/Instrument Mastery as an AA bonus.
mackal Changed the way walk speed is calculated to allow mobs to have their walk speed equal a 100% movement reduction
Leere Fixed Bard mana regen, they now only are affected by items and AA.
KLS Added a system to use the BaseData system in the client.
KLS Added an optional utility to import spells, skill caps and base data (will import from ./import and export to ./export).
Be sure to source the SQL and run shared_memory.
JJ (Kingly_Krab) Fix for #npcedit qglobal command.
JJ Added in-game commands to enable/disable tradeskill recipes
-Commands: #enablerecipe recipe_id, #disablerecipe recipe_id
-Perl: quest::enablerecipe(recipe_id), quest::disablerecipe(recipe_id)
-Lua: eq.enable_recipe(recipe_id), eq.disable_recipe(recipe_id)
Leere Add the ability to disable a tradeskill recipe
Uleat Client patch prep work for extending usable skill range (no apparent issues with Ti through RoF[12-10-2012] testing * i.e., clients showed proper skills and they didn't crash)
Uleat This final patch aligns the existing server PlayerProfile_Struct with the previous changes. The pp_struct, as well as the character 'pp' blob, remains unchanged in size and alignment. The only difference is that the first trailing 100 bytes of the unknown array have been re-assigned to the skills array, and the unknown array decreased by the same amount.
The existing configuration will allow the use of any new skills up to 99
Due to this new segment of the blob having never been written to properly, we may have erratic data there that needs to be cleared before use
None of the new skills are coded to use these 'new' skill slots
A per-client method will still need to be observed when coding for the new skill uses
Uleat Attempted fix for high level (12) debug compile failures
Explicit Windows vs. Linux code was not changed due to my inability to compile Linux code
Only CMake accessible flags were corrected if adding the 'std' namespace did not correct the issue
the tag [CODEBUG] was added to failed code identifed by the above note
If you are having compile issues after this patch is committed, look to the changes here first
Uleat Changed riposte fail check to proper failure criteria * (x
mackal Fix some memory leaks in Mob::SpellOnTarget
mackal Changed GetMinLevel return 0 for more cases that EQ uses for some reason ...
mackal Added buff level restrictions, set the Spells:BuffLevelRestrictions to false to have the old behavior.
Uleat Expanded the 'Bag Type' enumeration to include all known values. Also, set in place additional 'Bag Type' to 'Skill Type' conversions. Some of these will need to be verified before activation.
Uleat Cleaned up some unused enumerations to show a move towards standardization. More to come...
mackal Allow Titanium and lower clients to enter Tutorial zone from character select
Bad_Captain Fixed merc crash issue by updating special_abilities & vwMercNpcTypes (Sorvani).
Bad_Captain Bots* added out of combat bard songs & #bot bardoutofcombat on|off command to turn them on/off.
JJ (mackal) Allow use of Go Home button when Tutorial still selected in RoF.
Secrets Fixed zone shutdown (or #reloadqst) reinitalization of Perl. This should allow for Perl 5.14 and later to work on Windows under the new quest system.
mackal Beneficial single target buffs shouldn't have their mana/timers set if they fail to cast after the Mob::SpellOnTarget call in Mob::SpellFinished
JJ Revert change to EnterWorldPacket introduced on 22 April 2013 to fix inability to enter Tutorial or Go Home from character select screen.
mackal Fixed some more instances of the AA timer being eaten
mackal Added IsBuffSpell(spell_id) that will return true if the spell has a duration, so would end up in effects/song/discs etc windows on the client
mackal Replaced instances of using CalcBuffDuration to determine if a spell was a buff with IsBuffSpell
mackal Removed Mob::HasBuffIcon since it was doing what IsBuffSpell does in a more convoluted way with a rather misleading name
mackal Fixed issues that arose from the 10/03/2013 change
Sorvani fixed issue with stackable items being created with 0 charges cause by fix to SummonItems
mackal Fix when the random +1 tick is added to nerf extension focus effects to where they should be
Sorvani Changed SummonItem to only summon an item with max charges when said default value is present and not on zero charges
mackal Fixed issue with #showstats showing your level for a bunch of values
mackal Add support for /pet hold on and /pet hold off (UF and RoF)
KLS Removed Common Profiler and Zone Profiler. They're well past outdated status and are just code bloat.
KLS Fix for reported issue on forums with skills that could potentially be trained before a player achieved the level to train.
Uleat Fix for bot pet spell buff corruption (existing db issues will correct themselves through pet death attrition)
KLS Fix for crash in special_abilities code due to existing use of some dangerous code we didn't catch before.
Sorvani fix for lua_general.cpp funtion get_spawn_condition
Uleat added non-extensioned wildcard filter to \...\dependencies.gitignore to fix tortoisegit inclusion errors (fixes commit and display overlay issues.)
KLS Added packet class and helper functions to Lua.
KLS Added quest event: event_unhandled_opcode
KLS Added a few lua functions.
KLS Redid the npcspecialatk system with a new system that is more flexible but a little more complicated (this will break any 3rd party tools that deal with them).
Instead of a string such as "ERS" to denote "Enrage Rampage Summon" abilities are indexed by their ability number, level and params separated by '^'. It is stored in the following format: ability,level[,param0,param1,param2,param3,param4,param5,param6,param7] Params will be read until there are 8 total or a '^' is reached. Eg: 'ERS' -> '2,1^3,1^1,1
Levels allow us to dictate how abilities behave that may be different even though they're the same ability. Params allow us to further refine behaviors on a case by case basis. Passing 0 as a param will use the default value.
NOTE: Be sure to source 2013_07_11_NPC_Special_Abilities.sql. Also due to the large impact this has on a database it is very HIGHLY SUGGESTED to BACKUP YOUR DATABASE FIRST.
The following are the special abilities currently in the game as well as their levels and parameters currently in use:
SPECATK_SUMMON = 1 Level 1: Summon target to NPC Level 2: Summon NPC to target Param0: Cooldown in ms (default: 6000) Param1: HP ratio required to summon (default: 97)
SPECATK_ENRAGE = 2 Param0: HP ratio required to enrage (default: rule NPC:StartEnrageValue) Param1: Enrage duration in ms (default: 10000) Param2: Enrage cooldown in ms (default: 360000)
SPECATK_RAMPAGE = 3 Param0: Proc chance (default: 20) Param1: Rampage target count (default: rule Combat:MaxRampageTargets) Param2: Percent of a normal attack damage to deal (default: 100) Param3: Flat damage bonus to add to the rampage attack (default: 0) Param4: Ignore % armor for this attack (default 0) Param5: Ignore flat armor for this attack (default 0) Param6: Percent of npc's natual crit that can go toward this rampage (default: 100) Param7: Flat crit bonus on top of npc's natual crit that can go toward this attack (default 0)
SPECATK_AREA_RAMPAGE = 4 Param0: Proc chance (default: 20) Param1: Rampage target count (default: 1) Param2: Percent of a normal attack damage to deal (default: 100) Param3: Flat damage bonus to add to the rampage attack (default: 0) Param4: Ignore % armor for this attack (default 0) Param5: Ignore flat armor for this attack (default 0) Param6: Percent of npc's natual crit that can go toward this rampage (default: 100) Param7: Flat crit bonus on top of npc's natual crit that can go toward this attack (default 0)
SPECATK_FLURRY = 5 Param0: Proc chance (default: rule Combat:NPCFlurryChance) Param1: Flurry attack count (default: rule Combat:MaxFlurryHits) Param2: Percent of a normal attack damage to deal (default: 100) Param3: Flat damage bonus to add to the flurry attack (default: 0) Param4: Ignore % armor for this attack (default 0) Param5: Ignore flat armor for this attack (default 0) Param6: Percent of npc's natual crit that can go toward this attack (default: 100) Param7: Flat crit bonus on top of npc's natual crit that can go toward this attack (default 0)
Ex: Normal Flurry with 25% proc rate and 100% crit chance that ignores 500 armor. 5,1,25,0,0,0,0,500,0,100
SPECATK_TRIPLE = 6 SPECATK_QUAD = 7 SPECATK_INNATE_DW = 8 SPECATK_BANE = 9 SPECATK_MAGICAL = 10 SPECATK_RANGED_ATK = 11 UNSLOWABLE = 12 UNMEZABLE = 13 UNCHARMABLE = 14 UNSTUNABLE = 15 UNSNAREABLE = 16 UNFEARABLE = 17 UNDISPELLABLE = 18 IMMUNE_MELEE = 19 IMMUNE_MAGIC = 20 IMMUNE_FLEEING = 21 IMMUNE_MELEE_EXCEPT_BANE = 22 IMMUNE_MELEE_NONMAGICAL = 23 IMMUNE_AGGRO = 24 IMMUNE_AGGRO_ON = 25 IMMUNE_CASTING_FROM_RANGE = 26 IMMUNE_FEIGN_DEATH = 27 IMMUNE_TAUNT = 28
NPC_TUNNELVISION = 29 Param0: Aggro modifier on non-tanks (default: rule Aggro:TunnelVisionAggroMod)
NPC_NO_BUFFHEAL_FRIENDS = 30 IMMUNE_PACIFY = 31
LEASH = 32 Param0: Range (default: aggro range * aggro range)
TETHER = 33 Param0: Range (default: aggro range * aggro range)
DESTRUCTIBLE_OBJECT = 34 NO_HARM_FROM_CLIENT = 35
The following Lua API functions were added to deal with the new system: Integer GetSpecialAbility(Integer ability); Integer GetSpecialAbilityParam(Integer ability, Integer param); Void SetSpecialAbility(Integer ability, Integer level); Void SetSpecialAbilityParam(Integer ability, Integer param, Integer value); Void ClearSpecialAbilities(); Void ProcessSpecialAbilities(String str);
The old API functions that worked with letters still exist for backwards compatibility reasons but wont be updated further.
Secrets Cleanup of some log functions that did not have an 'off' function.**
Secrets Unknown opcode messages only show on EQDEBUG* >= 5 or higher now. (including the dumped packet)
NOTE: We recommend for debugging and feature development that you keep EQDEBUG to 5 or higher. For production environments, we recommend 1 to help with CPU performance on windows machines and disk I/O on all platforms. *Affected filters: NETERROR NETDEBUG
KLS Added some lua functions
KLS Fixed some lua functions
KLS Perl now will (like lua) keep track of the values you return from EVENT_*. This allows perl to use the extra behavior in things like EVENT_DEATH. Now generally the perl system is now considered deprecated (in favor of lua in the long term) I felt this was too big a change to pass up adding when I got it working.
KLS Exported eq.follow(entity_id, [distance]) and eq.stop_follow() to lua.
mackal Fix Monster Summoning related to giants/cyclops
mackal Prevent Monster Summoning from summoning a portal in bothunder
KLS Merge of lua branch to master
See: http://www.eqemulator.org/forums/showthread.php?t=37008 for more detailed information on what is added.
-'templates' quest folder needs to be renamed 'global'
-'items' quest folder needs to be moved into the 'global' folder
-'spells' quest folder needs to be moved into the 'global' folder
-EVENT_PROXIMITY_SAY needs to be enabled via quest before it will work, calling quest::enable_proximity_say() in EVENT_SPAWN will suffice.
-quest::handleturnin, quest::completehandin, quest::resethandin, and quest::clearhandin have been removed. Take a look at https://code.google.com/p/projecteqquests/source/browse/trunk/quests/plugins/check_handin.pl plugin::mq_process_items, plugin::check_mq_handin, plugin::clear_mq_handin for MQ viable replacements.
-Some spell quests that overwrote the effects from the spell they were cast on no longer function properly on perl, it's suggested you make the spells empty or rewrite the broken quests in lua and return a non-zero value.
-Some item quests have changed in a subtle way, though it's unlikely any quests are impacted and the thread has more information if you found any of your quests broke. As far as I know for example: PEQ didn't have to update any of its nearly 70 item quests.
-Cazic Touch (982) no longer shouts the name of the thing it is targeting without a script.
-EVENT_DEATH now triggers before the death is complete. For the old functionality you may use EVENT_DEATH_COMPLETE. It might be a good idea to replace all EVENT_DEATH with EVENT_DEATH_COMPLETE in existing spells.
We sought to minimize changes required but it's still a bit disruptive so take a few minutes when upgrading to make sure everything is correct. Most notably quest::clearhandin was used in some popular plugins to avoid a dupe involved with its code and now that it's gone those will not function if fixes are not applied.
Secrets Fixed an issue with RoF items and Req/Rec level above 100 appearing yellow. Recommended to enable the #iteminfo command for items that have a req/rec above 100 to display proper information regarding the info.
KLS (image) Potentially could bypass some spell checks by passing a specially crafted spell slot. This has been addressed.
KLS Merge Hateborne's hp cap stuff
KLS We haven't updated changelog in a while but there's been:
-Some string stuff
-A lot of fixes to things like caps.
-More work on custom mod stuff (including examples)
-Fix for login not bailing out if it cant connect to a db
-Quite a few warning changes.
Uleat (Updated: 06/12/2013) Fixed a few observed bot issues and an beneficial AE casting bug:
Added missing Bot primary weapon proc call (secondary and ranged already exist)
Added Bard Bot instrumentation bonuses
Added checks to avoid AE Buff casting on enemy mobs
Fixed a few typos in 'Vah Shir'-related code
(Please post any discrepancies as bugs)
Tabasco Added EVENT_ITEM_TICK for interactive item quest scripts. (See https://github.com/josheb/quests_dc/blob/master/items/12204.pl)
Added simple account flags. Would this work better as an additional qglobal category?
Added SendMessage to EQW, useful for using CURL to broadcast to the server.
Added WorldShutDown to EQW for timed world shutdowns, also updated console worldshutdown command to optionally use timed behavior.
Added numerous modding hooks and mod_functions.cpp for easy custom formulas or future lua integration.
Added various rules for monk AC bonus weight, archery bonuses, kick/bash stuns and mob stun levels.
required SQL: 2013_05_05_Account_Flags.sql
required SQL: 2013_05_05_Item_Tick.sql
PiB Implement CRC16 using CRC32.
PiB Verify OP_Ack size & fix crash in BasePacket::build_raw_header_dump due to uninitialised timestamp.
Derision Verify minimum size of OP_Packet, OP_Fragment and OP_OutOfOrderAck.
Bad_Captain Fixed a couple of merc stat issues.
Bad_Captain Removed unneeded bot pet AI.
Bad_Captain Fixed a few bot aggro issues. (Uleat)
JJ Fixed rare case where heals from buffs could go negative.
Derision Moved entity_list.Clear() prior to destruction of Perl objects in zone shutdown as I was seeing a segfault due to attempts to call EVENT_HATE_LIST as mobs were being destroyed.
mackal Realized I was an idiot, changed salvage script to be better
optional SQL: 2013_04_09_SalvageCleanOld.sql * run if ran old script
mackal Implemented Salvage AA
required SQL: 2013_04_08_Salvage.sql
script: generate_salvage.py * will generate the entries for some exceptions for salvage returns.
mackal Implemented SE_ForageAdditionalItems as a bonus
required SQL: 2013_04_04_NaturesBounty.sql
mackal Overloaded Mob::Say_StringID with the option to provide a message type
mackal Switched rest of the Pet Messages to MT_PetResponse (Leader commands intentionally left the old way)
Bad_Captain Fixed Merc lack of use of heal over time spells (causing excessive healing).
Bad_Captain Fixed pet mitigation/AC issues.
mackal AA reuse timers now start when you hit the button and are reset upon failure
mackal Instant Cast bard AAs can now be used while singing a song
mackal Fixed most of the pet talking, all use StringIDs now. Pet now informs you when it taunts.
mackal Fix issues with escape not always working and fixed SE_FadingMemories to have the message since the message isn't part of the spell data.
Escape now uses just the spell and not the AA Actoin
Fading Memories now only uses the AA Action to eat mana
Bad_Captain Fixed merc buffing bugs.
Bad_Captain Added checks before dismissing merc to prevent possible bugged mercs.
Bad_Captain Merged in Secret's merc memory leak fixes.
mackal Fixed stacking issues with SE_Limit* (ex. Unholy Aura Discipline and Aura of Reverence)
Bad_Captain Fixed zone crash due to merc focus effects & tribute.
Bad_Captain Fixed merc aggro issues when client in melee range & spell recast timers.
Bad_Captain Added melee DPS spells/disciplines & support.
Secrets Fixed that pesky merc memleak.
Secrets Bit of code cleanup regarding mercs.
Derision RoF: Added ENCODE for Resurrect_struct (Accepting a rez should now work).
Derision Fixed a couple of memory leaks in Rez code.
JJ (NatedogEZ) Fix for hate list random never selecting last member of hate list.
Bad_Captain Fixed Merc spell recast timers.
Bad_Captain Changed how Mercs add mobs to their hate lists (should prevent IsEngaged() issues).
Bad_Captain Initial Caster DPS Merc spell casting AI, including initial Merc stance implementation.
Bad_Captain Mercs now suspend when their owner dies to prevent them being bugged (until it can be fixed).
OPTIONAL SQL: 2013_03_14_Merc_Spells.sql
Zaela_S Stop mobs aggroing on dead players when using RespawnFromHover.
Derision Removed _log message from zone/CatchSignal on Linux as it can deadlock on shutdown if another signal is received while the _log call is being processed.
Derision Added some error logging into ZoneDatabase::NPCSpawnDB for #npcspawn create.
af4t Melee tomes with names beginning "Skill:" (e.g. RNG Warder's Wrath, etc) can be memorized now, by hand-in-to-guildmaster or right-click-from-inventory.
af4t Stop NPCs aggroing each other with buffs/beneficial spells.
Bad_Captain Fixed Merc depop bug.
Bad_Captain Added merc rest regen.
Bad_Captain Fixed merc group spell casting bug where mercs would continue to try to cast group buffs on pets of caster who didn't have Pet Affinity AA.
Bad_Captain Fixed Merc duplicate save bug.
Bad_Captain Focus items, spell_scale and heal_scale now work implemented and new merc equipment (with focus items).
Bad_Captain Added checks during merc hire, unsuspend, & timer update for states where a merc can't be hired, unsuspended, or can't be retained due to insufficient funds, no room in group, in raid, invalid merc data, etc, and give appropriate feedback.
Bad_Captain Added rules for charging of merc purchase and upkeep costs.
REQUIRED SQL: 2013_03_1_Merc_Rules_and_Equipment.sql
KLS Changed how shared memory works: Instead of System V/windows pagefile shared memory we now have shared memory that's backed by the filesystem. What that means is basically instead of EMuSharedMem(shared library) we now have shared_memory(executable), shared memory will be persistent between runs until you delete or reload it using the shared_memory executable.
STEPS FOR PEOPLE WHO CAN'T BE BOTHERED TO FIGURE IT OUT: 1) Create a directory in the place you run world/zone named shared and make sure files can write there. 2) Run the shared_memory executable from the same place you run world/zone (it's basically doing the loading we would do on startup so will take a moment). 3) Run world/zone/whatever
af4t Add Touch of the Wicked AA redux to SK Improved Harm Touch and Leech Touch.
mackal Mobs will now be removed from XTargets when they get back to their way point, should be last instance of XTarget mobs not clearing when they are not aggroed anymore
Derision World should no longer crash if the start_zone query fails at character creation.
Bad_Captain Moved merc save to merc table, save merc buffs, added cure and rez spells to healer merc.
JJ Chat garbled for drunk characters.
Derision Charmed pets should no longer be targettable with F8. Charmed pets no longer get a surname of Soandso's Pet.
mackal Added potionbelt tool tip
KLS Added EVENT_DEATH to Player Quests
REQUIRED SQL: 2013_02_18_Merc_Rules_and_Tables.sql OPTIONAL SQL: 2013_02_18_Merc_Spells.sql
Derision Added optional guildid and minstatus parameters to quest::gmsay(, [color], [toworld], [guildid], [minstatus])
Derision Client version is now returned by the stream proxy as a number.
Derision Fixed bug where BecomeTrader packets were only being sent to the Trader, not all other clients in the bazaar.
mackal Fix AA reuse timer calc
mackal Remove old filters and change all remaining old to new (Also fix Auction filtering out OOC as well due to incorrect define)
Kayen AA fix
REQUIRED SQL: utils/sql/svn/2504_required_aa_updates.sql
Derision RoF: Added ENCODE for OP_BeginCast (fixes no sound during spell casting). Corrected OP_DeleteSpell.
JJ (mackal) Language skill up should use proper function.
JJ SetLanguageSkill now updates client immediately. Both functions do proper limit checks.
Added two missing languages. Skill level 0 in a spoken language now shows 'in an unknown tongue'.
JJ Initial implementation of a GarbleMessage function and implemented for languages. Can be shared with drunk speaking.
KLS Was pointed out to me that we're in violation of ActiveState Licensing terms for their perl distribution.
To rectify this we have removed the Windows perl binaries from the source.
Uleat Changed conversion of bot armor colors from long to unsigned long. Conversion error led to #FFFFFFFF for all returns.
cavedude00 Added heading to start_zones
Uleat Fixed the 'nude' bot issue. Mob::texture was not set to the appropriate value and forcing an unclad body model.
Uleat Fixed the show/hide helm feature. Added rebroadcast of packet so that changes take place immediately instead of after zoning.
KLS Addressed several (completely stupid and inexcusable) bugs in the avoidance code that made it impossible to dodge and parry in certain situations.
As a note: please don't touch the avoidance code if you don't know what you're doing, seriously.
Required SQL: utils/sql/svn/2482_required_start_zones.sql
Trevius RoF: More work on Bazaar Traders.
Sorvani Items with more than 1 charge should be purchased at max charges again. This does not fix players recharging by sell/buyback method. That will come in the future.
Trevius RoF: Fixed some opcodes related to surnames and traders. Surnames can now be cleared.
JJ Fix to #spawn: Automatically truncate name if too long so spawn will happen as expected rather than a NameTooLong NPC.
JJ Fix to #spawn: Output actual NPC result after creation rather than projected result before.
Trevius RoF: Loading Spell Sets now unmems spells before meming the new set.
Trevius RoF: Turning on Trader mode in bazaar now works, but no further trader functionality is available yet.
Akkadius Fixed an issue where global_npc.pl was not initializing (initially)
cavedude00 (mackal) Rune aggro fix
cavedude00 (Drajor) Tradeskill skillneeded fix.
Kayen Various AA fixes, mostly related to SOF display issues.
REQUIRED SQL: utils/sql/svn/2471_required_aa_updates.sql
Secrets Another attempt to fix this bot/merc group crash on zoning.
cavedude Added $client->GetInstanceID() Perl export.
Secrets Fixed a crash issue involving invalid buff slots in SpellEffect code. (Crash fix.)
Secrets QuestParserCollection no longer processes EventPlayer in the case that a player zones and the group is still valid via linkdeath. (Crash fix.)
Secrets Added the command #augmentitem. Does the same thing that the #bot augmentitem command does but without the bot command needing to be active. Default 250 status.
JJ Added quest::depop_withtimer() which will depop NPC and start spawn timer (a replacement for $npc->Depop(1) code if desired)
Trevius Fixed a bug introduced in Rev2448 that caused some spell casting to use all of a player's mana.
Trevius Mercenary buffs now display in the Target Buffs window.
Trevius RoF: Populated a couple more bit fields in the spawn struct.
Trevius Mercenaries are no longer targetable with NPC targeting hotkeys.
Derision RoF: Updated spell buffs in the PP to account for instrument_mod/bard_modifier.
Sorvani Missed a spot on the stun proc aggro change.
Trevius Fixed Mercenary Upkeep Timers and Stances again for UF and SoD.
Trevius Fixed Mercenary Upkeep Timers to properly restart after the timer is up for all clients.
Bad_Captain Mercs * Initial spell casting AI committed.
KLS Added crash logging for Windows builds.
Trevius Mercenaries now despawn when a player camps out or disconnects in any way.
Trevius Players with a Mercenary spawned can now be invited to and join another group with their mercenary.
Sorvani (mackal): Moved stunproc rule implmentation to catch all cases
OPTIONAL SQL: utils/sql/svn/mercs.sql -* rerun for updated merc stats & merc spell lists
Sorvani Implemented max aggro from stun proc set to 400. It is rule based set rule to -1 for unlimited.
Derision RoF: Should fix x10 Buff bug.
Trevius Reworked some of the code dealing with Mercenary packets and spawning them. There is still some work to be done, but the basics are more solid now.
Trevius Mercenaries function much more consistently now for Hiring, Suspending, Unsuspending, Dismissing.
Trevius Mercenaries no longer fail to group up after being hired, unsuspended or after zoning/logging in.
Trevius RoF: The #fixmob command can now go up to race 724 when cycling through races.
Trevius RoF: The #npcstats command no longer truncates itemlinks.
Trevius RoF: Corrected multiple opcodes.
Trevius RoF: Apply Poison is now functional.
Trevius RoF: /getguildmotd is working.
Trevius RoF: GM commands /changename, /summon, /emotezone, and /emoteworld are working.
Trevius RoF: Sense Traps is now working.
Trevius RoF: Potion Belt is now functional.
Trevius RoF: /who and /who all now display the correct player counts.
Akkadius Should have fixed some scenarios where the global_npc.pl script wasn't unloading correctly
Trevius RoF: Alternate Currencies now display correctly in the inventory window.
Trevius Changed one of the mercenary data packets to use the same packet Live does instead of the Merchant packet.
Uleat RoF: Aligned the extended client slots back into slottype 0. Previously, corpse looting stopped after looting the ninth slot. (There's still an issue addressing slots 31 and 32..this cannot be efficiently corrected until an inventory rework is performed.)
Uleat Fixed a corpse looting issue where the power source item (slot 9999) was being omitted from the corpse inventory. A previous oversight on my part. Also refined message reporting. (RoF: increased corpse slot limit to 34)
Uleat Power Source items will now report in 'worn' instead of 'inv' when using #peekinv.
KLS intN types have changed to more closely reflect C99 and C++11 types:
intN was an unsigned int of N bits -> it is now a signed int of N bits.
sintN was a signed int of N bits -> it has been removed in favor of intN.
uintN is still unsigned.
The existing types in the code have been changed automatically(intN -> uintN, sintN -> intN), but keep this in mind when developing in the future.
Akkadius Implemented global_npc.pl, this is very similar to global_player.pl where any normal NPC script will run dual-stack or in tandem with the global_npc.pl located in the templates folder
Akkadius Implemented the ability to modify EXP and AAEXP modifiers per Level, these are loaded from an optional table (level_exp_mods) that is attached to the commit, you MUST enable the rule first!
Akkadius Added #reloadlevelmods * which will reload level mods from the
Derision RoF: Guild name now appears in the Guild Management window and over player's heads. /guildstatus now works. Guild members status now updates in the GMW.
Uleat Corrected the BulkSendInventory process for incomplete item trade returns resulting from a server crash. Previous code used an external reference and items were never moved..and hence, lost once a new trade occurred.
Uleat Added mlog messages to existing BulkSendInventory code to report hidden item movements and deletions. All BSI and helper processes now log movements/deletions.
Uleat Added two new client pre-entry inventory validation methods * RemoveDuplicateLore and MoveSlotNotAllowed. Duplicate lore was not checked and IsSlotAllowed failures were not handled. Both were causes of persistent desyncs.
Uleat Corrected a bug in ItemInst::IsSlotAllowed that 'passed' PowerSource slot checks regardless of ItemInst::Slots value.
Uleat [Client-Server Inventory Desyncronization] Most CSD bugs should now be corrected, or at least, compensated for. Please post any desync issues as a new bug post or pm a Dev or GM if it involves an exploit.
Optional SQL: \utils\sql\svn\2428_optional_levelbasedexpmods.sql
Akkadius Fixed an size value of hp_regen_rate for NPC's so values don't roll over into negative values
KLS EQEmu has been setup to use CMake, this is mandatory.
Visit http://www.eqemulator.net/wiki/wikka.php?wakka=CMake for instructions on Windows/GCC.
Uleat Added opcode handlers for OpenInventory(SoF and SoD) and OpenContainer(SoF, SoD, UF and RoF). Both still need slot translators.
Uleat Changed internal SwapItem method from void to bool return. Added appropriate code to handle returns.
Uleat Added an abbreviated form of the resync code * SwapItemResync. Handles failed item swaps on a case-by-case basis.
Uleat Fixed a bug that allowed duplication of non-stackable, charged items..lore or otherwise. (Sorry cheaters...)
Derision RoF: Updated OP_LogServer encode based on a live packet in order to enable 'Enter Tutorial from character select.
Secrets Added five new functions to perl for clients: GetBindX, GetBindY, GetBindZ, GetBindHeading, and GetBindZoneID. They all have an optional parameter of index of playerprofile's bindpoint.
Secrets Added an optional parameter to GetBind for index.
Derision RoF: Added Encode for OP_TaskDescription and removed RoF specific code for it from tasks.cpp
Derision Fixed some compiler warnings.
Trevius RoF: Varlinks and Saylinks now display properly for RoF.
Trevius RoF: Started work on Mercenaries. They are partially functional but need more work.
Trevius RoF: Started work on Guilds. The guild window can now display members, but the guild name does not yet display.
Derision RoF: Fixed bug that was causing only one task to show in the Active Task window.
Derision Fixed potential crash in QuestManager::varlink. Removed some unused variables that gcc was warning about.
Derision RoF: Encoded OP_TaskHistoryReply and added temporary handling for short OP_TaskActivity packets until encode is down for that.
Derision Deleted Anniversary/HoT/VoA and Live patches.
Derision Updated StaticGetZoneName with all zones currently in the PEQ database.
Trevius RoF: Disciplines now update without zoning.
Derision RoF: Personal Tribute and the Pet Buff Window now work.
Derision Fixed potential crash in SendPetBuffsToClient.
Derision RoF: Accounted for the fact the Duplicate Lore item message now includes the item's name.
Trevius RoF: The Task Selector Window is now functional.
JJ Added rule check to zone * no need to load Merc Templates if Mercs aren't allowed.
Trevius RoF: Corrected multiple opcodes.
Trevius RoF: #finditem now displays itemlinks correctly.
Trevius RoF: Started work/testing to get Tasks functioning. Don't click tasks in the history tab or client will freeze.
Trevius Added some possible crash fixes.
Bad_Captain Mercs * temp fix for possible crash when dying with RespawnFromHover on, fixed infinite stats (buffs continually adding to stats).
Derision RoF: Corrected LDoN merchant opcodes, added encode for OP_AdventureMerchantSell. Updated PP with available LDoN points.
Bad_Captain Mercs * removed debug messages, fixed regen.
Derision RoF: Marked position of Monk 'Mend' skill cooldown timer in PP. Fixed a typo.
Bad_Captain Mercs * Merged from branch. Initial merc commit to trunk with semi-functional tank mercs.
Uleat RoF: Changed opcode so that is handled properly. (Was writing to the log about twice-per-second.)
Trevius RoF: Death no longer crashes players and the respawn window is now functional.
Trevius RoF: More work on slot conversions. This time for the cursor buffer.
Trevius RoF: Some work on Guild Master Training packets, but still only seeing languages displayed.
REQUIRED SQL: utils/sql/svn/2383_required_group_ismerc.sql - adds ismerc column to group_id table OPTIONAL SQL: utils/sql/svn/2380_optional_merc_rules.sql - Contains rules for mercs including rule to enable mercs OPTIONAL SQL: utils/sql/svn/2380_optional_merc_merchant_npctypes_update.sql - Contains npc_types & spawn updates for merc merchants in PoK OPTIONAL SQL: utils/sql/svn/2380_optional_merc_data.sql - Contains basic merc data, template info, & merc merchant entries OPTIONAL SQL: utils/sql/svn/mercs.sql - Contains merc stats & armor to be replaced as needed with updated stats, spells, etc. Allows a complete resourcing of file
Trevius RoF: /who and /who all now function properly.
Trevius RoF: Adjusted/corrected some of the slot conversion functions.
Kayen Various AA Fixes including a critical crash bug.
REQUIRED SQL: utils/sql/svn/2376_required_aa_updates.sql
Kayen Fix for missing and incorrect Healing Adept AA values.
Trevius RoF: Possible crash fix for logging in on some server builds.
Trevius RoF: Added VoA to the #cvs command output.
Derision RoF: Short buffs should appear in the song/short buff box.
Lerxst/ *Hateborne Updated Mob::TryDivineSave to allow someone to be saved even if there are no additional effects to be cast and rearranged the buff fading so the spell effect isn't lost before it can be cast.
REQUIRED SQL: utils/sql/svn/2370_required_aa_updates.sql
Trevius RoF: Tradeskill combines (auto-combine and experiment) are now functional.
Trevius RoF: The Popup Message window is now functional.
Trevius RoF: Increased the max race id for #race to 724 (the max for RoF).
Trevius RoF: Corrected the opcode for Augmenting Items and adjusted the struct, but it looks like it may require considerable work to implement the new augment system.
Akkadius Trap Zone Crash issue where message is empty
Akkadius Fixed a warning regarding AC
Vaion RoF: Books now work properly.
Trevius RoF: Looting items and loot all are now functional.
Trevius RoF: Trading to NPCs and Players is now functional.
Trevius RoF: AA Purchases are now functional.
Trevius RoF: Opening Tradeskill Objects is now possible.
Trevius RoF: Moving items into Tradeskill Objects is now possible, but combines will bug the client.
Uleat QS: Added 4 additional logging options [MerchantLogTransactions], [PlayerLogDeletes], [PlayerLogHandins], [PlayerLogMoves]
Uleat QS: PlayerLogHandins is partially enabled..currently logs NPCtypeID and Client-side trade information only.
Uleat QS: Renamed 1 existing source files to maintain logging name continuity [PlayerLogTrades].
Uleat Fixed minor issue that was causing armor glitches with RoF clients from UF and lower clients.
Uleat Fixed minor bug in the #iteminfo command where the material value reported 0x20xx.
REQUIRED SQL: utils/sql/svn/2361_required_qs_rule_values.sql REQUIRED SQL: utils/sql/queryserv/2361_QueryServ.sql REQUIRED SQL: utils/sql/queryserv/2304_QueryServ.sql (rename '2304_qs_playertradelog.sql' * Does not need to be re-sourced)
Trevius RoF: Fixed slot conversion issues for Bank and Shared Bank
Trevius RoF: Normal Merchants are now fully functional for buy/sell
Trevius RoF: Item Links now display item stats when clicked, but the links are still truncated.
Trevius RoF: Corrected the Illusion Struct and corrected some opcodes.
Trevius RoF: Updated the DeleteSpawn struct and added an encode for it.
Trevius RoF: Hopefully fixed Consuming food/drink.
Vaion RoF: Crash prevention for Item Preview window.
Trevius RoF: Finished identifying basically all of the remaining RoF opcodes.
Akkadius Fix for Guild Crash again...