Transcription ArgusCore lot 6 : fondations engine

- Aura 373 (MOD_SPEED_NO_CONTROL) implementee dans UpdateSpeed : vitesse
  verrouillee des dash (Roulade moine x2.75/x3.75, Fel Rush) au lieu d un
  comportement non cape [aa54261d]
- AuraScript::_Validate accepte SPELL_EFFECT_APPLY_AURA_ON_PET dans les
  7 verifications d effets d aura [d308bf0b]
Methodologie : 7 commits engine analyses, 5 N/A justifies (systemes absents
ou deja presents chez nous).
This commit is contained in:
SylvaniaCore deploy
2026-08-09 20:03:51 +00:00
parent 33a013f87a
commit 4dfe00ae33
3 changed files with 17 additions and 9 deletions
+9 -1
View File
@@ -8783,8 +8783,16 @@ void Unit::UpdateSpeed(UnitMoveType mtype)
if (mtype == MOVE_RUN)
{
// aura 373 SPELL_AURA_MOD_SPEED_NO_CONTROL : deplacement force (charge/dash),
// remplace entierement la vitesse dirigee par le joueur (ne fait pas que la plancher).
// Montant en POURCENTAGE (cf. Roll moine 107427/109131 : 175/275 -> x2.75/x3.75),
// contrairement a l aura 437 dont le montant est une valeur absolue en yards/s.
// Prioritaire sur le plancher 437 (sinon rien ne capait l acceleration joueur
// pendant un dash type Fel Rush). [porte d ArgusCore aa54261d]
if (int32 lockedSpeedMod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_SPEED_NO_CONTROL))
speed = 1.0f + lockedSpeedMod / 100.0f;
// force minimum speed rate @ aura 437 SPELL_AURA_MOD_MINIMUM_SPEED_RATE
if (int32 minSpeedMod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_MINIMUM_SPEED_RATE))
else if (int32 minSpeedMod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_MINIMUM_SPEED_RATE))
{
float minSpeed = minSpeedMod / (IsControlledByPlayer() ? playerBaseMoveSpeed[mtype] : baseMoveSpeed[mtype]);
if (speed < minSpeed)
@@ -449,7 +449,7 @@ enum AuraType : uint32
SPELL_AURA_SET_FAIR_FAR_CLIP = 370, // Overrides client's View Distance setting to max("Fair", current_setting)
SPELL_AURA_371 = 371,
SPELL_AURA_MOUNTED_VISUAL = 372,
SPELL_AURA_MOD_SPEED_NO_CONTROL = 373, // NYI
SPELL_AURA_MOD_SPEED_NO_CONTROL = 373,
SPELL_AURA_MODIFY_FALL_DAMAGE_PCT = 374,
SPELL_AURA_375 = 375, // Not used in 7.3.5
SPELL_AURA_MOD_CURRENCY_GAIN_FROM_SOURCE = 376, // Not used in 7.3.5
+7 -7
View File
@@ -754,15 +754,15 @@ SpellEffectInfo const* SpellScript::GetEffectInfo(SpellEffIndex effIndex) const
bool AuraScript::_Validate(SpellInfo const* entry)
{
for (auto itr = DoCheckAreaTarget.begin(); itr != DoCheckAreaTarget.end(); ++itr)
if (!entry->HasAreaAuraEffect() && !entry->HasEffect(SPELL_EFFECT_PERSISTENT_AREA_AURA) && !entry->HasEffect(SPELL_EFFECT_APPLY_AURA))
if (!entry->HasAreaAuraEffect() && !entry->HasEffect(SPELL_EFFECT_PERSISTENT_AREA_AURA) && !entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasEffect(SPELL_EFFECT_APPLY_AURA_ON_PET))
TC_LOG_ERROR("scripts", "Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `DoCheckAreaTarget` of AuraScript won't be executed", entry->Id, m_scriptName->c_str());
for (auto itr = OnDispel.begin(); itr != OnDispel.end(); ++itr)
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasAreaAuraEffect())
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasEffect(SPELL_EFFECT_APPLY_AURA_ON_PET) && !entry->HasAreaAuraEffect())
TC_LOG_ERROR("scripts", "Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `OnDispel` of AuraScript won't be executed", entry->Id, m_scriptName->c_str());
for (auto itr = AfterDispel.begin(); itr != AfterDispel.end(); ++itr)
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasAreaAuraEffect())
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasEffect(SPELL_EFFECT_APPLY_AURA_ON_PET) && !entry->HasAreaAuraEffect())
TC_LOG_ERROR("scripts", "Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `AfterDispel` of AuraScript won't be executed", entry->Id, m_scriptName->c_str());
for (auto itr = OnEffectApply.begin(); itr != OnEffectApply.end(); ++itr)
@@ -826,7 +826,7 @@ bool AuraScript::_Validate(SpellInfo const* entry)
TC_LOG_ERROR("scripts", "Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectSplit` of AuraScript won't be executed", entry->Id, itr->ToString().c_str(), m_scriptName->c_str());
for (auto itr = DoCheckProc.begin(); itr != DoCheckProc.end(); ++itr)
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasAreaAuraEffect())
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasEffect(SPELL_EFFECT_APPLY_AURA_ON_PET) && !entry->HasAreaAuraEffect())
TC_LOG_ERROR("scripts", "Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `DoCheckProc` of AuraScript won't be executed", entry->Id, m_scriptName->c_str());
for (auto itr = DoCheckEffectProc.begin(); itr != DoCheckEffectProc.end(); ++itr)
@@ -834,15 +834,15 @@ bool AuraScript::_Validate(SpellInfo const* entry)
TC_LOG_ERROR("scripts", "Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `DoCheckEffectProc` of AuraScript won't be executed", entry->Id, itr->ToString().c_str(), m_scriptName->c_str());
for (auto itr = DoPrepareProc.begin(); itr != DoPrepareProc.end(); ++itr)
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasAreaAuraEffect())
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasEffect(SPELL_EFFECT_APPLY_AURA_ON_PET) && !entry->HasAreaAuraEffect())
TC_LOG_ERROR("scripts", "Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `DoPrepareProc` of AuraScript won't be executed", entry->Id, m_scriptName->c_str());
for (auto itr = OnProc.begin(); itr != OnProc.end(); ++itr)
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasAreaAuraEffect())
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasEffect(SPELL_EFFECT_APPLY_AURA_ON_PET) && !entry->HasAreaAuraEffect())
TC_LOG_ERROR("scripts", "Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `OnProc` of AuraScript won't be executed", entry->Id, m_scriptName->c_str());
for (auto itr = AfterProc.begin(); itr != AfterProc.end(); ++itr)
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasAreaAuraEffect())
if (!entry->HasEffect(SPELL_EFFECT_APPLY_AURA) && !entry->HasEffect(SPELL_EFFECT_APPLY_AURA_ON_PET) && !entry->HasAreaAuraEffect())
TC_LOG_ERROR("scripts", "Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `AfterProc` of AuraScript won't be executed", entry->Id, m_scriptName->c_str());
for (auto itr = OnEffectProc.begin(); itr != OnEffectProc.end(); ++itr)