mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Handlers: Spell handler no longer downranks otherwise-negative spells because they have a potentially-positive aura effect. Closes #22153.
This commit is contained in:
@@ -404,14 +404,16 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
|
||||
}
|
||||
|
||||
// auto-selection buff level base at target level (in spellInfo)
|
||||
if (targets.GetUnitTarget())
|
||||
{
|
||||
SpellInfo const* actualSpellInfo = spellInfo->GetAuraRankForLevel(targets.GetUnitTarget()->getLevel());
|
||||
// TODO: is this even necessary? client already seems to send correct rank for "standard" buffs
|
||||
if (spellInfo->IsPositive())
|
||||
if (Unit* target = targets.GetUnitTarget())
|
||||
{
|
||||
SpellInfo const* actualSpellInfo = spellInfo->GetAuraRankForLevel(target->getLevel());
|
||||
|
||||
// if rank not found then function return NULL but in explicit cast case original spell can be cast and later failed with appropriate error message
|
||||
if (actualSpellInfo)
|
||||
spellInfo = actualSpellInfo;
|
||||
}
|
||||
// if rank not found then function return NULL but in explicit cast case original spell can be cast and later failed with appropriate error message
|
||||
if (actualSpellInfo)
|
||||
spellInfo = actualSpellInfo;
|
||||
}
|
||||
|
||||
Spell* spell = new Spell(caster, spellInfo, TRIGGERED_NONE);
|
||||
spell->m_cast_count = castCount; // set count of casts
|
||||
|
||||
@@ -1034,7 +1034,7 @@ private:
|
||||
// Wait for the current build job to finish, if the job finishes in time
|
||||
// evaluate it and continue with the next one.
|
||||
if (_build_job->GetProcess()->GetFutureResult().
|
||||
wait_for(0s) == std::future_status::ready)
|
||||
wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
ProcessReadyBuildJob();
|
||||
else
|
||||
return; // Return when the job didn't finish in time
|
||||
|
||||
@@ -1107,11 +1107,11 @@ void WorldSession::ProcessQueryCallbacks()
|
||||
{
|
||||
_queryProcessor.ProcessReadyQueries();
|
||||
|
||||
if (_realmAccountLoginCallback.valid() && _realmAccountLoginCallback.wait_for(0s) == std::future_status::ready)
|
||||
if (_realmAccountLoginCallback.valid() && _realmAccountLoginCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
InitializeSessionCallback(_realmAccountLoginCallback.get());
|
||||
|
||||
//! HandlePlayerLoginOpcode
|
||||
if (_charLoginCallback.valid() && _charLoginCallback.wait_for(0s) == std::future_status::ready)
|
||||
if (_charLoginCallback.valid() && _charLoginCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
|
||||
HandlePlayerLogin(reinterpret_cast<LoginQueryHolder*>(_charLoginCallback.get()));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user