Core/Spells: Added AttributesEx15 for serverside spells (#30632)

This commit is contained in:
Meji
2025-01-23 21:06:44 +01:00
committed by GitHub
parent ee5383615f
commit c9456ce826
2 changed files with 82 additions and 67 deletions
@@ -0,0 +1,14 @@
DELIMITER ;;
CREATE PROCEDURE serverside_spell_2025_01_23_00() BEGIN
IF NOT EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema`=SCHEMA() AND `table_name`='serverside_spell' AND `column_name`='AttributesEx15') THEN
ALTER TABLE `serverside_spell`
ADD COLUMN `AttributesEx15` int unsigned NOT NULL DEFAULT '0' AFTER `AttributesEx14`;
END IF;
END;;
DELIMITER ;
CALL serverside_spell_2025_01_23_00();
DROP PROCEDURE IF EXISTS serverside_spell_2025_01_23_00;
+68 -67
View File
@@ -2861,21 +2861,21 @@ void SpellMgr::LoadSpellInfoServerside()
QueryResult spellsResult = WorldDatabase.Query("SELECT Id, DifficultyID, CategoryId, Dispel, Mechanic, Attributes, AttributesEx, AttributesEx2, AttributesEx3, " QueryResult spellsResult = WorldDatabase.Query("SELECT Id, DifficultyID, CategoryId, Dispel, Mechanic, Attributes, AttributesEx, AttributesEx2, AttributesEx3, "
// 9 10 11 12 13 14 15 16 17 18 // 9 10 11 12 13 14 15 16 17 18
"AttributesEx4, AttributesEx5, AttributesEx6, AttributesEx7, AttributesEx8, AttributesEx9, AttributesEx10, AttributesEx11, AttributesEx12, AttributesEx13, " "AttributesEx4, AttributesEx5, AttributesEx6, AttributesEx7, AttributesEx8, AttributesEx9, AttributesEx10, AttributesEx11, AttributesEx12, AttributesEx13, "
// 19 20 21 22 23 24 25 26 27 // 19 20 21 22 23 24 25 26 27 28
"AttributesEx14, Stances, StancesNot, Targets, TargetCreatureType, RequiresSpellFocus, FacingCasterFlags, CasterAuraState, TargetAuraState, " "AttributesEx14, AttributesEx15, Stances, StancesNot, Targets, TargetCreatureType, RequiresSpellFocus, FacingCasterFlags, CasterAuraState, TargetAuraState, "
// 28 29 30 31 32 33 // 29 30 31 32 33 34
"ExcludeCasterAuraState, ExcludeTargetAuraState, CasterAuraSpell, TargetAuraSpell, ExcludeCasterAuraSpell, ExcludeTargetAuraSpell, " "ExcludeCasterAuraState, ExcludeTargetAuraState, CasterAuraSpell, TargetAuraSpell, ExcludeCasterAuraSpell, ExcludeTargetAuraSpell, "
// 34 35 36 37 38 // 35 36 37 38 39
"CasterAuraType, TargetAuraType, ExcludeCasterAuraType, ExcludeTargetAuraType, CastingTimeIndex, " "CasterAuraType, TargetAuraType, ExcludeCasterAuraType, ExcludeTargetAuraType, CastingTimeIndex, "
// 39 40 41 42 43 44 45 // 40 41 42 43 44 45 46
"RecoveryTime, CategoryRecoveryTime, StartRecoveryCategory, StartRecoveryTime, InterruptFlags, AuraInterruptFlags1, AuraInterruptFlags2, " "RecoveryTime, CategoryRecoveryTime, StartRecoveryCategory, StartRecoveryTime, InterruptFlags, AuraInterruptFlags1, AuraInterruptFlags2, "
// 46 47 48 49 50 51 52 53 54 55 56 // 47 48 49 50 51 52 53 54 55 56 57
"ChannelInterruptFlags1, ChannelInterruptFlags2, ProcFlags, ProcFlags2, ProcChance, ProcCharges, ProcCooldown, ProcBasePPM, MaxLevel, BaseLevel, SpellLevel, " "ChannelInterruptFlags1, ChannelInterruptFlags2, ProcFlags, ProcFlags2, ProcChance, ProcCharges, ProcCooldown, ProcBasePPM, MaxLevel, BaseLevel, SpellLevel, "
// 57 58 59 60 61 62 63 64 65 // 58 59 60 61 62 63 64 65 66
"DurationIndex, RangeIndex, Speed, LaunchDelay, StackAmount, EquippedItemClass, EquippedItemSubClassMask, EquippedItemInventoryTypeMask, ContentTuningId, " "DurationIndex, RangeIndex, Speed, LaunchDelay, StackAmount, EquippedItemClass, EquippedItemSubClassMask, EquippedItemInventoryTypeMask, ContentTuningId, "
// 66 67 68 69 70 71 72 73 74 75 // 67 68 69 70 71 72 73 74 75 76
"SpellName, ConeAngle, ConeWidth, MaxTargetLevel, MaxAffectedTargets, SpellFamilyName, SpellFamilyFlags1, SpellFamilyFlags2, SpellFamilyFlags3, SpellFamilyFlags4, " "SpellName, ConeAngle, ConeWidth, MaxTargetLevel, MaxAffectedTargets, SpellFamilyName, SpellFamilyFlags1, SpellFamilyFlags2, SpellFamilyFlags3, SpellFamilyFlags4, "
// 76 77 78 79 80 // 77 78 79 80 81
"DmgClass, PreventionType, AreaGroupId, SchoolMask, ChargeCategoryId FROM serverside_spell"); "DmgClass, PreventionType, AreaGroupId, SchoolMask, ChargeCategoryId FROM serverside_spell");
if (spellsResult) if (spellsResult)
{ {
@@ -2893,7 +2893,7 @@ void SpellMgr::LoadSpellInfoServerside()
continue; continue;
} }
mServersideSpellNames.emplace_back(spellId, fields[66].GetString()); mServersideSpellNames.emplace_back(spellId, fields[67].GetString());
SpellInfo& spellInfo = const_cast<SpellInfo&>(*mSpellInfoMap.emplace(&mServersideSpellNames.back().Name, difficulty, spellEffects[{ spellId, difficulty }]).first); SpellInfo& spellInfo = const_cast<SpellInfo&>(*mSpellInfoMap.emplace(&mServersideSpellNames.back().Name, difficulty, spellEffects[{ spellId, difficulty }]).first);
spellInfo.CategoryId = fields[2].GetUInt32(); spellInfo.CategoryId = fields[2].GetUInt32();
@@ -2914,63 +2914,64 @@ void SpellMgr::LoadSpellInfoServerside()
spellInfo.AttributesEx12 = fields[17].GetUInt32(); spellInfo.AttributesEx12 = fields[17].GetUInt32();
spellInfo.AttributesEx13 = fields[18].GetUInt32(); spellInfo.AttributesEx13 = fields[18].GetUInt32();
spellInfo.AttributesEx14 = fields[19].GetUInt32(); spellInfo.AttributesEx14 = fields[19].GetUInt32();
spellInfo.Stances = fields[20].GetUInt64(); spellInfo.AttributesEx15 = fields[20].GetUInt32();
spellInfo.StancesNot = fields[21].GetUInt64(); spellInfo.Stances = fields[21].GetUInt64();
spellInfo.Targets = fields[22].GetUInt32(); spellInfo.StancesNot = fields[22].GetUInt64();
spellInfo.TargetCreatureType = fields[23].GetUInt32(); spellInfo.Targets = fields[23].GetUInt32();
spellInfo.RequiresSpellFocus = fields[24].GetUInt32(); spellInfo.TargetCreatureType = fields[24].GetUInt32();
spellInfo.FacingCasterFlags = fields[25].GetUInt32(); spellInfo.RequiresSpellFocus = fields[25].GetUInt32();
spellInfo.CasterAuraState = fields[26].GetUInt32(); spellInfo.FacingCasterFlags = fields[26].GetUInt32();
spellInfo.TargetAuraState = fields[27].GetUInt32(); spellInfo.CasterAuraState = fields[27].GetUInt32();
spellInfo.ExcludeCasterAuraState = fields[28].GetUInt32(); spellInfo.TargetAuraState = fields[28].GetUInt32();
spellInfo.ExcludeTargetAuraState = fields[29].GetUInt32(); spellInfo.ExcludeCasterAuraState = fields[29].GetUInt32();
spellInfo.CasterAuraSpell = fields[30].GetUInt32(); spellInfo.ExcludeTargetAuraState = fields[30].GetUInt32();
spellInfo.TargetAuraSpell = fields[31].GetUInt32(); spellInfo.CasterAuraSpell = fields[31].GetUInt32();
spellInfo.ExcludeCasterAuraSpell = fields[32].GetUInt32(); spellInfo.TargetAuraSpell = fields[32].GetUInt32();
spellInfo.ExcludeTargetAuraSpell = fields[33].GetUInt32(); spellInfo.ExcludeCasterAuraSpell = fields[33].GetUInt32();
spellInfo.CasterAuraType = AuraType(fields[34].GetInt32()); spellInfo.ExcludeTargetAuraSpell = fields[34].GetUInt32();
spellInfo.TargetAuraType = AuraType(fields[35].GetInt32()); spellInfo.CasterAuraType = AuraType(fields[35].GetInt32());
spellInfo.ExcludeCasterAuraType = AuraType(fields[36].GetInt32()); spellInfo.TargetAuraType = AuraType(fields[36].GetInt32());
spellInfo.ExcludeTargetAuraType = AuraType(fields[37].GetInt32()); spellInfo.ExcludeCasterAuraType = AuraType(fields[37].GetInt32());
spellInfo.CastTimeEntry = sSpellCastTimesStore.LookupEntry(fields[38].GetUInt32()); spellInfo.ExcludeTargetAuraType = AuraType(fields[38].GetInt32());
spellInfo.RecoveryTime = fields[39].GetUInt32(); spellInfo.CastTimeEntry = sSpellCastTimesStore.LookupEntry(fields[39].GetUInt32());
spellInfo.CategoryRecoveryTime = fields[40].GetUInt32(); spellInfo.RecoveryTime = fields[40].GetUInt32();
spellInfo.StartRecoveryCategory = fields[41].GetUInt32(); spellInfo.CategoryRecoveryTime = fields[41].GetUInt32();
spellInfo.StartRecoveryTime = fields[42].GetUInt32(); spellInfo.StartRecoveryCategory = fields[42].GetUInt32();
spellInfo.InterruptFlags = SpellInterruptFlags(fields[43].GetUInt32()); spellInfo.StartRecoveryTime = fields[43].GetUInt32();
spellInfo.AuraInterruptFlags = SpellAuraInterruptFlags(fields[44].GetUInt32()); spellInfo.InterruptFlags = SpellInterruptFlags(fields[44].GetUInt32());
spellInfo.AuraInterruptFlags2 = SpellAuraInterruptFlags2(fields[45].GetUInt32()); spellInfo.AuraInterruptFlags = SpellAuraInterruptFlags(fields[45].GetUInt32());
spellInfo.ChannelInterruptFlags = SpellAuraInterruptFlags(fields[46].GetUInt32()); spellInfo.AuraInterruptFlags2 = SpellAuraInterruptFlags2(fields[46].GetUInt32());
spellInfo.ChannelInterruptFlags2 = SpellAuraInterruptFlags2(fields[47].GetUInt32()); spellInfo.ChannelInterruptFlags = SpellAuraInterruptFlags(fields[47].GetUInt32());
spellInfo.ProcFlags[0] = fields[48].GetUInt32(); spellInfo.ChannelInterruptFlags2 = SpellAuraInterruptFlags2(fields[48].GetUInt32());
spellInfo.ProcFlags[1] = fields[49].GetUInt32(); spellInfo.ProcFlags[0] = fields[49].GetUInt32();
spellInfo.ProcChance = fields[50].GetUInt32(); spellInfo.ProcFlags[1] = fields[50].GetUInt32();
spellInfo.ProcCharges = fields[51].GetUInt32(); spellInfo.ProcChance = fields[51].GetUInt32();
spellInfo.ProcCooldown = fields[52].GetUInt32(); spellInfo.ProcCharges = fields[52].GetUInt32();
spellInfo.ProcBasePPM = fields[53].GetFloat(); spellInfo.ProcCooldown = fields[53].GetUInt32();
spellInfo.MaxLevel = fields[54].GetUInt32(); spellInfo.ProcBasePPM = fields[54].GetFloat();
spellInfo.BaseLevel = fields[55].GetUInt32(); spellInfo.MaxLevel = fields[55].GetUInt32();
spellInfo.SpellLevel = fields[56].GetUInt32(); spellInfo.BaseLevel = fields[56].GetUInt32();
spellInfo.DurationEntry = sSpellDurationStore.LookupEntry(fields[57].GetUInt32()); spellInfo.SpellLevel = fields[57].GetUInt32();
spellInfo.RangeEntry = sSpellRangeStore.LookupEntry(fields[58].GetUInt32()); spellInfo.DurationEntry = sSpellDurationStore.LookupEntry(fields[58].GetUInt32());
spellInfo.Speed = fields[59].GetFloat(); spellInfo.RangeEntry = sSpellRangeStore.LookupEntry(fields[59].GetUInt32());
spellInfo.LaunchDelay = fields[60].GetFloat(); spellInfo.Speed = fields[60].GetFloat();
spellInfo.StackAmount = fields[61].GetUInt32(); spellInfo.LaunchDelay = fields[61].GetFloat();
spellInfo.EquippedItemClass = fields[62].GetInt32(); spellInfo.StackAmount = fields[62].GetUInt32();
spellInfo.EquippedItemSubClassMask = fields[63].GetInt32(); spellInfo.EquippedItemClass = fields[63].GetInt32();
spellInfo.EquippedItemInventoryTypeMask = fields[64].GetInt32(); spellInfo.EquippedItemSubClassMask = fields[64].GetInt32();
spellInfo.ContentTuningId = fields[65].GetUInt32(); spellInfo.EquippedItemInventoryTypeMask = fields[65].GetInt32();
spellInfo.ConeAngle = fields[67].GetFloat(); spellInfo.ContentTuningId = fields[66].GetUInt32();
spellInfo.Width = fields[68].GetFloat(); spellInfo.ConeAngle = fields[68].GetFloat();
spellInfo.MaxTargetLevel = fields[69].GetUInt32(); spellInfo.Width = fields[69].GetFloat();
spellInfo.MaxAffectedTargets = fields[70].GetUInt32(); spellInfo.MaxTargetLevel = fields[70].GetUInt32();
spellInfo.SpellFamilyName = fields[71].GetUInt32(); spellInfo.MaxAffectedTargets = fields[71].GetUInt32();
spellInfo.SpellFamilyFlags = flag128(fields[72].GetUInt32(), fields[73].GetUInt32(), fields[74].GetUInt32(), fields[75].GetUInt32()); spellInfo.SpellFamilyName = fields[72].GetUInt32();
spellInfo.DmgClass = fields[76].GetUInt32(); spellInfo.SpellFamilyFlags = flag128(fields[73].GetUInt32(), fields[74].GetUInt32(), fields[75].GetUInt32(), fields[76].GetUInt32());
spellInfo.PreventionType = fields[77].GetUInt32(); spellInfo.DmgClass = fields[77].GetUInt32();
spellInfo.RequiredAreasID = fields[78].GetInt32(); spellInfo.PreventionType = fields[78].GetUInt32();
spellInfo.SchoolMask = fields[79].GetUInt32(); spellInfo.RequiredAreasID = fields[79].GetInt32();
spellInfo.ChargeCategoryId = fields[80].GetUInt32(); spellInfo.SchoolMask = fields[80].GetUInt32();
spellInfo.ChargeCategoryId = fields[81].GetUInt32();
} while (spellsResult->NextRow()); } while (spellsResult->NextRow());
} }