Druid T10 Balance 4P Bonus#20
Merged
Merged
Conversation
…if you crit while it's already on a target
ghost
pushed a commit
to rebirth-core/Rebirth---WoW
that referenced
this pull request
Feb 14, 2012
ghost
pushed a commit
to rebirth-core/Rebirth---WoW
that referenced
this pull request
Feb 14, 2012
Core/DBC: implemented future use: WorldStateUI.dbc
asido
pushed a commit
to asido/TrinityCore
that referenced
this pull request
Mar 12, 2012
This was referenced Sep 16, 2013
Closed
This was referenced Sep 18, 2013
mynew4
referenced
this pull request
Oct 4, 2015
Implemented: ca83e14 ee1c1b9 18e4ab6 bf37446 cb854a2 * This adds separate (per map) guid sequences depending on object type * Ported map object container from cmangos/mangos-wotlk@a2d396e * Added type container visitor for TypeUnorderedMapContainer * Implemented helper function to erase unique pairs from multimap containers * Moved object storage of all objects except players and transports to map level * Added containers linking database spawn id with creature/gameobject in world * Renamed DBTableGuid to spawnId * Added a separate spawn id sequence generator for creatures and gameobjects - this will be used in db tables * Moved building SMSG_UPDATE_OBJECT - updatefields changes broadcast to map update * Added new function to return but not increment guid * Adjusted .debug loadcells to show low guid in map before/after load * Added debug messages for creature spawn/destroy, for map guid debugging * Store all Gameobjects and Creatures added to OutdoorPvP, so the callback script can be removed when OutdoorPvP instance is destroyed.
Closed
Closed
Aokromes
referenced
this pull request
in Aokromes/TrinityCore
Jan 19, 2016
Closed
MysterioPRM
pushed a commit
to MysterioPRM/TrinityCore
that referenced
this pull request
Mar 15, 2021
sync with TC
sveN295
added a commit
to sveN295/TrinityCore
that referenced
this pull request
May 3, 2022
* Custom: Dynamic Exp System rewrite Statt einer endlosen Prozession von If-Statements berechnet das Script nun den korrekten Config-Eintrag, was Leistung sparen sollte * Custom: Dynamic Experience Script Autoren Anpassung Weil der Herr darauf besteht.
Declipe
pushed a commit
to Declipe/TrinityCore
that referenced
this pull request
Aug 14, 2023
Implement new Lua dependency and LuaJIT support
T1ti
pushed a commit
to T1ti/TrinityCore
that referenced
this pull request
Jul 31, 2025
…killup when successfully catching a fish have been reverted to 1.12 chances. The speed in which you catch fish has been kept in its 3.3.5 state. (TrinityCore#20) internal note: It's my belief that TrinityCore actually has a better implementation than Vmangos, so its been kept mostly intact. TC uses a system called "fishingsteps" which is the amount of times you have to catch a fish before your next skillup. Vmangos uses pure chance. It's well theorized by many sources, such as El's Anglin', that it's likely WoW uses a Fishing Steps-like system. However it's supposed to be an average number of catches, not a set number. Due to that I changed it so that we still use fishingsteps but when you reach the required number of steps each cast now has a 75% chance of skilling you up. It's not perfectly blizzlike, but its close enough. Fishing from a pool of fish no longer guarantees a catch regardless of your fishing skill, as that was a change made in patch 3.3.0. Added new hook for checking your fishing cast, allowing you to make a fishing cast fail. Includes the liquidtype that you're attempting to fish in. Added LiquidTypes enum
agatho
referenced
this pull request
in agatho/TrinityCore
Oct 5, 2025
…mination CRITICAL FIX: Following CLAUDE.md workflow - Module-only implementation PROBLEM IDENTIFIED: After Fix #19 (ObjectCache in BotAI), deadlock still occurred during first bot update. Log analysis showed exception immediately after "Created ShamanAI for player Eryl". ROOT CAUSE: ClassAI::GetBestAttackTarget() calls ObjectAccessor::GetUnit() at line 210: ```cpp if (::Unit* target = ObjectAccessor::GetUnit(*GetBot(), targetGuid)) ``` This creates RECURSIVE ObjectAccessor call chain: 1. BotAI::UpdateAI() → ObjectCache::RefreshCache() → ObjectAccessor (lock acquired) 2. BotAI::OnCombatUpdate() → ShamanAI (inherits ClassAI) 3. ClassAI::GetBestAttackTarget() → ObjectAccessor::GetUnit() → DEADLOCK! SOLUTION - OPTION A (User Approved): Avoid ObjectAccessor by comparing target GUID against GetVictim() pointer: BEFORE (DEADLOCK): ```cpp ObjectGuid targetGuid = GetBot()->GetTarget(); if (!targetGuid.IsEmpty()) { if (::Unit* target = ObjectAccessor::GetUnit(*GetBot(), targetGuid)) // DEADLOCK! { if (GetBot()->IsValidAttackTarget(target)) return target; } } ``` AFTER (NO DEADLOCK): ```cpp ObjectGuid targetGuid = GetBot()->GetTarget(); if (!targetGuid.IsEmpty()) { // Check if victim matches selected target (no ObjectAccessor needed) if (::Unit* victim = GetBot()->GetVictim()) { if (victim->GetGUID() == targetGuid && GetBot()->IsValidAttackTarget(victim)) return victim; } // Selected target is different from victim - skip to avoid ObjectAccessor call // GetNearestEnemy() will handle finding a new target } ``` COMPLIANCE WITH CLAUDE.MD: ✓ Module-only implementation (src/modules/Playerbot/AI/ClassAI/ClassAI.cpp) ✓ No core modifications ✓ Complete solution (no TODOs or placeholders) ✓ Full error handling maintained ✓ Performance optimization (eliminates ObjectAccessor call) ✓ Used TrinityCore APIs (GetVictim(), GetGUID(), IsValidAttackTarget()) ✓ Follows file modification hierarchy (PREFERRED: module-only) EXPECTED RESULT: Zero ObjectAccessor calls in ClassAI hot path during combat updates. Combined with Fix #19 ObjectCache, this eliminates ALL recursive ObjectAccessor calls in the critical BotAI → ClassAI → Combat update chain. BUILD STATUS: ✓ Compiled successfully ✓ Deployed to M:/Wplayerbot/worldserver.exe TESTING: Monitor for deadlock exceptions during ShamanAI/ClassAI combat updates. Expected: Zero "resource deadlock would occur" during bot combat initialization. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
agatho
referenced
this pull request
in agatho/TrinityCore
Oct 5, 2025
…mination
CRITICAL FIX: Following CLAUDE.md - Code smell eliminated + deadlock resolved
ROOT CAUSE IDENTIFIED:
Deadlock occurred during BotAI constructor when bot joins group:
```
BotSession creates BotAI
→ BotAI::BotAI() constructor line 85
→ OnGroupJoined()
→ LeaderFollowBehavior::OnActivate() line 205
→ ObjectAccessor::FindPlayer(leaderGuid) → DEADLOCK!
```
This happens BEFORE first UpdateAI() call, so ObjectCache hasn't been initialized.
If any other thread is using ObjectAccessor at that moment → recursive lock → DEADLOCK.
CODE SMELL FIXED:
UpdateFollowTarget() was looking up the BOT via ObjectAccessor::FindPlayer(),
even though the bot pointer was already available from the calling context.
SOLUTION - Multiple ObjectAccessor eliminations:
1. **OnActivate() line 205** - CRITICAL FIX:
BEFORE: ObjectAccessor::FindPlayer(leaderGuid) then fallback to group iteration
AFTER: Direct group iteration only (works for all players including bots)
2. **UpdateFollowTarget()** - CODE SMELL FIX:
BEFORE: void UpdateFollowTarget(Player* leader)
Player* bot = ObjectAccessor::FindPlayer(_followTarget.guid)
AFTER: void UpdateFollowTarget(Player* bot, Player* leader)
Bot passed as parameter from calling context
3. **HandleLostLeader() line 943** - CONSISTENCY FIX:
BEFORE: if (Player* leader = ObjectAccessor::FindPlayer(_followTarget.guid))
AFTER: if (_followTarget.player) // Already cached
4. **Lost leader teleport line 963** - CONSISTENCY FIX:
BEFORE: if (Player* leader = ObjectAccessor::FindPlayer(_followTarget.guid))
AFTER: if (_followTarget.player) // Already cached
FILES MODIFIED:
- src/modules/Playerbot/Movement/LeaderFollowBehavior.h
* Updated UpdateFollowTarget signature to take both bot and leader
- src/modules/Playerbot/Movement/LeaderFollowBehavior.cpp
* Eliminated ALL 4 ObjectAccessor calls (lines 205, 626, 943, 963)
* Fixed UpdateFollowTarget to use passed bot parameter
* Updated call site to pass bot parameter
COMPLIANCE WITH CLAUDE.MD:
✓ Module-only implementation
✓ No core modifications
✓ Complete solution (no TODOs)
✓ Fixed code smell (unnecessary ObjectAccessor lookups)
✓ Performance improvement (4 fewer ObjectAccessor calls per follow update)
✓ Used existing data (_followTarget.player, group members iteration)
EXPECTED RESULT:
Zero ObjectAccessor calls in LeaderFollowBehavior during bot initialization.
Combined with Fix #19 (ObjectCache) and Fix #20 (ClassAI), this eliminates
ALL ObjectAccessor deadlock sources in the critical initialization path.
BUILD STATUS:
✓ Compiled successfully
✓ Deployed to M:/Wplayerbot/worldserver.exe
TESTING:
Monitor for deadlock during "Created ShamanAI" / group join initialization.
Expected: Zero "resource deadlock would occur" during bot group activation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
It should improve the Languish debuff's damage if you crit while it's already on a target