mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-31 01:23:47 +00:00
chore(Core/Auras): Clean up Aura::CanBeSaved() (#9343)
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1637861417456909900');
|
||||
|
||||
SET @flag := 268435456;
|
||||
|
||||
UPDATE `spell_custom_attr` SET `attributes` = 16777216 WHERE `spell_id` = (SELECT `spell_id` WHERE `attributes` & @flag = @flag);
|
||||
@@ -1062,7 +1062,7 @@ bool Aura::CanBeSaved() const
|
||||
return true;
|
||||
}
|
||||
|
||||
if (spellInfo->HasAttribute(SPELL_ATTR0_CU_REJECT_AURA_SAVING))
|
||||
if (spellInfo->HasAttribute(SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -1084,42 +1084,6 @@ bool Aura::CanBeSaved() const
|
||||
return false;
|
||||
}
|
||||
|
||||
// Xinef: Dont save control vehicle auras - caster may not exist
|
||||
if (HasEffectType(SPELL_AURA_CONTROL_VEHICLE))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Can't be saved - aura handler relies on calculated amount and changes it
|
||||
if (HasEffectType(SPELL_AURA_CONVERT_RUNE))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// No point in saving this, since the stable dialog can't be open on aura load anyway.
|
||||
if (HasEffectType(SPELL_AURA_OPEN_STABLE))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// xinef: do not save bind sight auras!
|
||||
if (HasEffectType(SPELL_AURA_BIND_SIGHT))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// xinef: no charming auras (taking direct control)
|
||||
if (HasEffectType(SPELL_AURA_MOD_POSSESS) || HasEffectType(SPELL_AURA_MOD_POSSESS_PET))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// xinef: no charming auras can be saved
|
||||
if (HasEffectType(SPELL_AURA_MOD_CHARM) || HasEffectType(SPELL_AURA_AOE_CHARM))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// don't save auras removed by proc system
|
||||
if (IsUsingCharges() && !GetCharges())
|
||||
{
|
||||
|
||||
@@ -197,12 +197,13 @@ enum SpellCustomAttributes
|
||||
SPELL_ATTR0_CU_NO_POSITIVE_TAKEN_BONUS = 0x00200000,
|
||||
SPELL_ATTR0_CU_SINGLE_AURA_STACK = 0x00400000, // pussywizard
|
||||
SPELL_ATTR0_CU_SCHOOLMASK_NORMAL_WITH_MAGIC = 0x00800000,
|
||||
SPELL_ATTR0_CU_ENCOUNTER_REWARD = 0x01000000, // pussywizard
|
||||
SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED = 0x01000000,
|
||||
SPELL_ATTR0_CU_POSITIVE_EFF0 = 0x02000000,
|
||||
SPELL_ATTR0_CU_POSITIVE_EFF1 = 0x04000000,
|
||||
SPELL_ATTR0_CU_POSITIVE_EFF2 = 0x08000000,
|
||||
SPELL_ATTR0_CU_REJECT_AURA_SAVING = 0x10000000,
|
||||
// unused = 0x10000000,
|
||||
SPELL_ATTR0_CU_FORCE_AURA_SAVING = 0x20000800,
|
||||
SPELL_ATTR0_CU_ENCOUNTER_REWARD = 0x40000000, // pussywizard
|
||||
|
||||
SPELL_ATTR0_CU_NEGATIVE = SPELL_ATTR0_CU_NEGATIVE_EFF0 | SPELL_ATTR0_CU_NEGATIVE_EFF1 | SPELL_ATTR0_CU_NEGATIVE_EFF2,
|
||||
SPELL_ATTR0_CU_POSITIVE = SPELL_ATTR0_CU_POSITIVE_EFF0 | SPELL_ATTR0_CU_POSITIVE_EFF1 | SPELL_ATTR0_CU_POSITIVE_EFF2,
|
||||
|
||||
@@ -2806,10 +2806,10 @@ void SpellMgr::LoadSpellCustomAttr()
|
||||
}
|
||||
}
|
||||
|
||||
if ((attributes & SPELL_ATTR0_CU_FORCE_AURA_SAVING) && (attributes & SPELL_ATTR0_CU_REJECT_AURA_SAVING))
|
||||
if ((attributes & SPELL_ATTR0_CU_FORCE_AURA_SAVING) && (attributes & SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED))
|
||||
{
|
||||
LOG_ERROR("sql.sql", "Table `spell_custom_attr` attribute1 field has attributes SPELL_ATTR1_CU_FORCE_AURA_SAVING and SPELL_ATTR1_CU_REJECT_AURA_SAVING which cannot stack for spell %u. Both attributes will get applied", spellId);
|
||||
attributes &= ~(SPELL_ATTR0_CU_FORCE_AURA_SAVING | SPELL_ATTR0_CU_REJECT_AURA_SAVING);
|
||||
LOG_ERROR("sql.sql", "Table `spell_custom_attr` attribute1 field has attributes SPELL_ATTR1_CU_FORCE_AURA_SAVING and SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED which cannot stack for spell %u. Both attributes will be ignored.", spellId);
|
||||
attributes &= ~(SPELL_ATTR0_CU_FORCE_AURA_SAVING | SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED);
|
||||
}
|
||||
|
||||
spellInfo->AttributesCu |= attributes;
|
||||
@@ -2878,6 +2878,23 @@ void SpellMgr::LoadSpellCustomAttr()
|
||||
break;
|
||||
}
|
||||
|
||||
switch (spellInfo->Effects[j].ApplyAuraName)
|
||||
{
|
||||
case SPELL_AURA_CONVERT_RUNE: // Can't be saved - aura handler relies on calculated amount and changes it
|
||||
case SPELL_AURA_OPEN_STABLE: // No point in saving this, since the stable dialog can't be open on aura load anyway.
|
||||
// Auras that require both caster & target to be in world cannot be saved
|
||||
case SPELL_AURA_CONTROL_VEHICLE:
|
||||
case SPELL_AURA_BIND_SIGHT:
|
||||
case SPELL_AURA_MOD_POSSESS:
|
||||
case SPELL_AURA_MOD_POSSESS_PET:
|
||||
case SPELL_AURA_MOD_CHARM:
|
||||
case SPELL_AURA_AOE_CHARM:
|
||||
spellInfo->AttributesCu |= SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (spellInfo->Effects[j].ApplyAuraName)
|
||||
{
|
||||
case SPELL_AURA_MOD_POSSESS:
|
||||
|
||||
Reference in New Issue
Block a user