Merge branch 'master' into Playerbot
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
-- DB update 2025_03_21_00 -> 2025_03_22_00
|
||||
--
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` IN (45635, 45635, 45635, 45635, 45635, 45635, 45623, 45635, 45623, 45635, 45633, 45633, 45633, 45622, 45633, 45633, 45633, 45622, 45633, 45633, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45586, 45585, 45586, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585)) AND (`SourceId` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 23472) AND (`ConditionValue3` IN (54796, 54792, 54788, 54785, 54781, 54777, 54774, 54774, 54794, 54794, 54773, 54789, 54602, 54798, 54798, 54790, 54808, 54608, 54608, 54772, 54800, 54603, 54795, 54597, 54782, 54793, 54804, 54802, 54783, 54783, 54435, 54435, 54797, 54775, 54779, 54769, 54593, 54806, 54778, 54595, 54776, 54801, 54771, 54623, 54791, 54784, 54770));
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13, 1, 45585, 0, 0, 31, 0, 3, 23472, 54435, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 1, 31, 0, 3, 23472, 54593, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 2, 31, 0, 3, 23472, 54595, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 3, 31, 0, 3, 23472, 54597, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 4, 31, 0, 3, 23472, 54603, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 5, 31, 0, 3, 23472, 54623, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 6, 31, 0, 3, 23472, 54769, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 7, 31, 0, 3, 23472, 54770, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 8, 31, 0, 3, 23472, 54771, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 9, 31, 0, 3, 23472, 54775, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 10, 31, 0, 3, 23472, 54776, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 11, 31, 0, 3, 23472, 54778, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 12, 31, 0, 3, 23472, 54779, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 13, 31, 0, 3, 23472, 54782, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 14, 31, 0, 3, 23472, 54783, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 15, 31, 0, 3, 23472, 54784, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 16, 31, 0, 3, 23472, 54791, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 17, 31, 0, 3, 23472, 54793, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 18, 31, 0, 3, 23472, 54795, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 19, 31, 0, 3, 23472, 54797, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 20, 31, 0, 3, 23472, 54800, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 21, 31, 0, 3, 23472, 54801, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 22, 31, 0, 3, 23472, 54802, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 23, 31, 0, 3, 23472, 54804, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45585, 0, 24, 31, 0, 3, 23472, 54806, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '),
|
||||
(13, 1, 45586, 0, 0, 31, 0, 3, 23472, 54435, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Top) - target World Trigger '),
|
||||
(13, 1, 45586, 0, 1, 31, 0, 3, 23472, 54783, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Top) - target World Trigger '),
|
||||
(13, 1, 45622, 0, 0, 31, 0, 3, 23472, 54608, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Middle) - target World Trigger '),
|
||||
(13, 1, 45622, 0, 1, 31, 0, 3, 23472, 54798, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Middle) - target World Trigger '),
|
||||
(13, 1, 45623, 0, 0, 31, 0, 3, 23472, 54774, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Bottom) - target World Trigger '),
|
||||
(13, 1, 45623, 0, 1, 31, 0, 3, 23472, 54794, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Bottom) - target World Trigger '),
|
||||
(13, 1, 45633, 0, 0, 31, 0, 3, 23472, 54602, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '),
|
||||
(13, 1, 45633, 0, 1, 31, 0, 3, 23472, 54608, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '),
|
||||
(13, 1, 45633, 0, 2, 31, 0, 3, 23472, 54772, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '),
|
||||
(13, 1, 45633, 0, 3, 31, 0, 3, 23472, 54773, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '),
|
||||
(13, 1, 45633, 0, 4, 31, 0, 3, 23472, 54789, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '),
|
||||
(13, 1, 45633, 0, 5, 31, 0, 3, 23472, 54790, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '),
|
||||
(13, 1, 45633, 0, 6, 31, 0, 3, 23472, 54798, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '),
|
||||
(13, 1, 45633, 0, 7, 31, 0, 3, 23472, 54808, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '),
|
||||
(13, 1, 45635, 0, 0, 31, 0, 3, 23472, 54774, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '),
|
||||
(13, 1, 45635, 0, 1, 31, 0, 3, 23472, 54777, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '),
|
||||
(13, 1, 45635, 0, 2, 31, 0, 3, 23472, 54781, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '),
|
||||
(13, 1, 45635, 0, 3, 31, 0, 3, 23472, 54785, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '),
|
||||
(13, 1, 45635, 0, 4, 31, 0, 3, 23472, 54788, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '),
|
||||
(13, 1, 45635, 0, 5, 31, 0, 3, 23472, 54792, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '),
|
||||
(13, 1, 45635, 0, 6, 31, 0, 3, 23472, 54794, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '),
|
||||
(13, 1, 45635, 0, 7, 31, 0, 3, 23472, 54796, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger ');
|
||||
@@ -0,0 +1,21 @@
|
||||
-- DB update 2025_03_22_00 -> 2025_03_22_01
|
||||
|
||||
-- Pack after Eredar Twins
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 47607;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(47607, 47607, 0, 0, 3, 0, 0),
|
||||
(47607, 47313, 0, 0, 3, 0, 0),
|
||||
(47607, 47471, 0, 0, 3, 0, 0),
|
||||
(47607, 47768, 0, 0, 3, 0, 0),
|
||||
(47607, 47608, 0, 0, 3, 0, 0),
|
||||
(47607, 47769, 0, 0, 3, 0, 0);
|
||||
|
||||
-- Pack before M'uru
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 47470;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(47470, 47470, 0, 0, 3, 0, 0),
|
||||
(47470, 47475, 0, 0, 3, 0, 0),
|
||||
(47470, 47578, 0, 0, 3, 0, 0),
|
||||
(47470, 47875, 0, 0, 3, 0, 0),
|
||||
(47470, 47897, 0, 0, 3, 0, 0),
|
||||
(47470, 47884, 0, 0, 3, 0, 0);
|
||||
@@ -0,0 +1,15 @@
|
||||
-- DB update 2025_03_22_01 -> 2025_03_22_02
|
||||
|
||||
-- Update Comments and row 7 added.
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 25744;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 25744);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(25744, 0, 0, 1, 37, 0, 100, 512, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Initialize - Set Reactstate Passive'),
|
||||
(25744, 0, 1, 2, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 11, 45934, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Initialize - Cast \'Dark Fiend\''),
|
||||
(25744, 0, 2, 3, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 11, 45936, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Initialize - Cast \'Dark Fiend\''),
|
||||
(25744, 0, 3, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 42, 1, 100, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Initialize - Set Invincibility Hp 1'),
|
||||
(25744, 0, 4, 0, 60, 0, 100, 1, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 21, 50, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Update - Start Attacking (No Repeat)'),
|
||||
(25744, 0, 5, 6, 9, 0, 100, 1, 0, 0, 0, 0, 0, 4, 11, 45944, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - Within 0-4 Range - Cast \'Dark Fiend\' (No Repeat)'),
|
||||
(25744, 0, 6, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - Within 0-0 Range - Despawn Instant (No Repeat)'),
|
||||
(25744, 0, 7, 0, 23, 0, 100, 512, 45934, 0, 500, 500, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Aura \'Dark Fiend\' - Despawn Instant');
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2025_03_22_02 -> 2025_03_24_00
|
||||
--
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra` &~2147483648 WHERE `entry` = 25315;
|
||||
@@ -0,0 +1,4 @@
|
||||
-- DB update 2025_03_24_00 -> 2025_03_25_00
|
||||
|
||||
-- Taunt Immune
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra`|256 WHERE `entry` IN (25166, 25165);
|
||||
@@ -0,0 +1,9 @@
|
||||
-- DB update 2025_03_25_00 -> 2025_03_25_01
|
||||
-- Update Alumeth the Ascended 32300 to repeat around psychicscream ~20 sec
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32300;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 32300);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(32300, 0, 0, 0, 0, 0, 100, 0, 8000, 9000, 8000, 9000, 0, 0, 11, 60472, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Alumeth the Ascended - In Combat - Cast \'Mind Flay\''),
|
||||
(32300, 0, 1, 0, 0, 0, 100, 0, 8000, 10000, 18000, 22000, 0, 0, 11, 34322, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Alumeth the Ascended - In Combat - Cast \'Psychic Scream\''),
|
||||
(32300, 0, 2, 0, 0, 0, 100, 0, 9000, 12000, 9000, 12000, 0, 0, 11, 37978, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alumeth the Ascended - In Combat - Cast \'Renew\''),
|
||||
(32300, 0, 3, 0, 0, 0, 100, 0, 7000, 10000, 7000, 10000, 0, 0, 11, 34942, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Alumeth the Ascended - In Combat - Cast \'Shadow Word: Pain\'');
|
||||
@@ -0,0 +1,4 @@
|
||||
-- DB update 2025_03_25_01 -> 2025_03_27_00
|
||||
|
||||
-- Add Hard Reset Extra Flag
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra`|2147483648 WHERE `entry` IN (25741);
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2025_03_27_00 -> 2025_03_27_01
|
||||
-- Set Kirtonos the Herald level to 60
|
||||
UPDATE `creature_template` SET `minlevel` = 60, `maxlevel` = 60 WHERE (`entry` = 10506);
|
||||
@@ -0,0 +1,6 @@
|
||||
-- DB update 2025_03_27_01 -> 2025_03_28_00
|
||||
|
||||
-- Add Condition to use Scarlet Cannons
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 18) AND (`SourceGroup` = 28833) AND (`SourceEntry` = 52447) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 9) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 12701) AND (`ConditionValue2` = 0) AND (`ConditionValue3` = 0);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(18, 28833, 52447, 0, 0, 9, 0, 12701, 0, 0, 0, 0, 0, '', 'Scarlet Cannon spellclick require Massacre at Light’s Point quest taken');
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2025_03_28_00 -> 2025_03_29_00
|
||||
-- Matches the Heroic Faction to the base brann, Adds "Brann Bronzebeard" (1) [Heroic] to Heroic Version | 32'052 => 40'065 HP
|
||||
UPDATE `creature_template` SET `faction` = 1665, `difficulty_entry_1` = 31366 WHERE (`entry` = 28070);
|
||||
@@ -20474,10 +20474,10 @@ void Unit::PetSpellFail(SpellInfo const* spellInfo, Unit* target, uint32 result)
|
||||
}
|
||||
}
|
||||
|
||||
int32 Unit::CalculateAOEDamageReduction(int32 damage, uint32 schoolMask, Unit* caster) const
|
||||
int32 Unit::CalculateAOEDamageReduction(int32 damage, uint32 schoolMask, bool npcCaster) const
|
||||
{
|
||||
damage = int32(float(damage) * GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE, schoolMask));
|
||||
if (caster && caster->IsCreature())
|
||||
if (npcCaster)
|
||||
damage = int32(float(damage) * GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE, schoolMask));
|
||||
|
||||
return damage;
|
||||
|
||||
@@ -1187,7 +1187,7 @@ public:
|
||||
uint32 SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, uint32 pdamage, DamageEffectType damagetype, uint32 stack = 1);
|
||||
|
||||
// AOE damages
|
||||
int32 CalculateAOEDamageReduction(int32 damage, uint32 schoolMask, Unit* caster) const;
|
||||
int32 CalculateAOEDamageReduction(int32 damage, uint32 schoolMask, bool npcCaster) const;
|
||||
|
||||
// Armor reduction
|
||||
static bool IsDamageReducedByArmor(SpellSchoolMask damageSchoolMask, SpellInfo const* spellInfo = nullptr, uint8 effIndex = MAX_SPELL_EFFECTS);
|
||||
|
||||
@@ -6692,9 +6692,17 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const
|
||||
damage = Unit::SpellCriticalDamageBonus(caster, m_spellInfo, damage, target);
|
||||
|
||||
// Auras reducing damage from AOE spells
|
||||
if (GetSpellInfo()->Effects[GetEffIndex()].IsAreaAuraEffect() || GetSpellInfo()->Effects[GetEffIndex()].IsTargetingArea() || GetSpellInfo()->Effects[GetEffIndex()].Effect == SPELL_EFFECT_PERSISTENT_AREA_AURA) // some persistent area auras have targets like A=53 B=28
|
||||
if (!GetSpellInfo()->HasAttribute(SPELL_ATTR4_IGNORE_DAMAGE_TAKEN_MODIFIERS))
|
||||
{
|
||||
damage = target->CalculateAOEDamageReduction(damage, GetSpellInfo()->SchoolMask, caster);
|
||||
if (GetSpellInfo()->Effects[GetEffIndex()].IsAreaAuraEffect() ||
|
||||
GetSpellInfo()->Effects[GetEffIndex()].IsTargetingArea() ||
|
||||
GetSpellInfo()->Effects[GetEffIndex()].Effect == SPELL_EFFECT_PERSISTENT_AREA_AURA || // some persistent area auras have targets like A=53 B=28
|
||||
GetSpellInfo()->HasAttribute(SPELL_ATTR5_TREAT_AS_AREA_EFFECT) ||
|
||||
GetSpellInfo()->HasAttribute(SPELL_ATTR7_TREAT_AS_NPC_AOE))
|
||||
{
|
||||
bool npcCaster = (caster && !caster->IsControlledByPlayer()) || GetSpellInfo()->HasAttribute(SPELL_ATTR7_TREAT_AS_NPC_AOE);
|
||||
damage = target->CalculateAOEDamageReduction(damage, GetSpellInfo()->SchoolMask, npcCaster);
|
||||
}
|
||||
}
|
||||
|
||||
int32 dmg = damage;
|
||||
|
||||
@@ -8352,7 +8352,8 @@ void Spell::DoAllEffectOnLaunchTarget(TargetInfo& targetInfo, float* multiplier)
|
||||
// Xinef: Area Auras, AoE Targetting spells AND Chain Target spells (cleave etc.)
|
||||
if (m_spellInfo->Effects[i].IsAreaAuraEffect() || m_spellInfo->Effects[i].IsTargetingArea() || (m_spellInfo->Effects[i].ChainTarget > 1 && m_spellInfo->DmgClass != SPELL_DAMAGE_CLASS_MAGIC))
|
||||
{
|
||||
m_damage = unit->CalculateAOEDamageReduction(m_damage, m_spellInfo->SchoolMask, m_caster);
|
||||
bool npcCaster = (m_caster && !m_caster->IsControlledByPlayer()) || GetSpellInfo()->HasAttribute(SPELL_ATTR7_TREAT_AS_NPC_AOE);
|
||||
m_damage = unit->CalculateAOEDamageReduction(m_damage, m_spellInfo->SchoolMask, npcCaster);
|
||||
if (m_caster->IsPlayer())
|
||||
{
|
||||
uint32 targetAmount = m_UniqueTargetInfo.size();
|
||||
|
||||
@@ -4885,6 +4885,25 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->Effects[EFFECT_2].TargetA = SpellImplicitTargetInfo(TARGET_UNIT_TARGET_ENEMY);
|
||||
});
|
||||
|
||||
// Felmyst Strafe (Top)
|
||||
ApplySpellFix({ 45585 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->MaxAffectedTargets = 3;
|
||||
spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_70_YARDS);
|
||||
});
|
||||
|
||||
// Felmyst Strafe (Middle, Bottom)
|
||||
ApplySpellFix({ 45633, 45635 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_70_YARDS);
|
||||
});
|
||||
|
||||
// Encapsulate
|
||||
ApplySpellFix({ 45662 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->AttributesEx7 |= SPELL_ATTR7_TREAT_AS_NPC_AOE;
|
||||
});
|
||||
|
||||
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
|
||||
{
|
||||
SpellInfo* spellInfo = mSpellInfoMap[i];
|
||||
|
||||
@@ -50,6 +50,7 @@ enum Spells
|
||||
SPELL_ENRAGE = 46587,
|
||||
SPELL_EMPOWER = 45366,
|
||||
SPELL_DARK_FLAME = 45345,
|
||||
SPELL_FIREBLAST = 45232,
|
||||
|
||||
//Lady Sacrolash spells
|
||||
SPELL_SHADOWFORM = 45455,
|
||||
@@ -78,6 +79,21 @@ struct boss_sacrolash : public BossAI
|
||||
{
|
||||
boss_sacrolash(Creature* creature) : BossAI(creature, DATA_EREDAR_TWINS), _isSisterDead(false) {}
|
||||
|
||||
bool CheckInRoom() override
|
||||
{
|
||||
if (me->GetExactDist2d(me->GetHomePosition()) >= 50.f)
|
||||
{
|
||||
DoCastAOE(SPELL_FIREBLAST, true);
|
||||
|
||||
if (Creature* alythess = instance->GetCreature(DATA_ALYTHESS))
|
||||
alythess->AI()->DoCastAOE(SPELL_FIREBLAST, true);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
DoCastSelf(SPELL_SHADOWFORM, true);
|
||||
@@ -104,7 +120,11 @@ struct boss_sacrolash : public BossAI
|
||||
Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f);
|
||||
if (!target)
|
||||
target = me->GetVictim();
|
||||
me->CastSpell(target, SPELL_CONFLAGRATION, false);
|
||||
|
||||
DoCast(target, SPELL_CONFLAGRATION);
|
||||
|
||||
if (Creature* alythess = instance->GetCreature(DATA_ALYTHESS))
|
||||
alythess->AI()->Talk(EMOTE_CONFLAGRATION, target);
|
||||
}, 30s, 35s);
|
||||
}
|
||||
}
|
||||
@@ -190,6 +210,13 @@ struct boss_alythess : public BossAI
|
||||
sacrolash->Respawn(true);
|
||||
}
|
||||
|
||||
void AttackStart(Unit* who) override
|
||||
{
|
||||
if (who && who->isTargetableForAttack() && me->GetReactState() != REACT_PASSIVE)
|
||||
if (me->Attack(who, false))
|
||||
me->AddThreat(who, 0.0f);
|
||||
}
|
||||
|
||||
void DoAction(int32 param) override
|
||||
{
|
||||
if (param == ACTION_SISTER_DIED)
|
||||
@@ -200,12 +227,16 @@ struct boss_alythess : public BossAI
|
||||
me->CastSpell(me, SPELL_EMPOWER, true);
|
||||
|
||||
scheduler.CancelGroup(GROUP_SPECIAL_ABILITY);
|
||||
ScheduleTimedEvent(20s, [&] {
|
||||
ScheduleTimedEvent(20s, 26s, [&] {
|
||||
Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f);
|
||||
if (!target)
|
||||
target = me->GetVictim();
|
||||
DoCast(target, SPELL_SHADOW_NOVA);
|
||||
}, 30s, 35s);
|
||||
|
||||
if (Creature * sacrolash = instance->GetCreature(DATA_SACROLASH))
|
||||
sacrolash->AI()->Talk(EMOTE_SHADOW_NOVA, target);
|
||||
|
||||
}, 20s, 26s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,9 +257,9 @@ struct boss_alythess : public BossAI
|
||||
DoCastSelf(SPELL_PYROGENICS);
|
||||
}, 15s);
|
||||
|
||||
ScheduleTimedEvent(20s, [&] {
|
||||
me->CastCustomSpell(SPELL_FLAME_SEAR, SPELLVALUE_MAX_TARGETS, 5, me, TRIGGERED_NONE);
|
||||
}, 15s);
|
||||
ScheduleTimedEvent(10s, 15s, [&] {
|
||||
me->CastCustomSpell(SPELL_FLAME_SEAR, SPELLVALUE_MAX_TARGETS, urand(4, 5), me, TRIGGERED_NONE);
|
||||
}, 10s, 15s);
|
||||
|
||||
scheduler.Schedule(20s, GROUP_SPECIAL_ABILITY, [this](TaskContext context) {
|
||||
Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f);
|
||||
|
||||
@@ -49,6 +49,12 @@ enum Spells
|
||||
SPELL_ENCAPSULATE_CHANNEL = 45661,
|
||||
|
||||
//Flight phase
|
||||
SPELL_TRIGGER_TOP_STRAFE = 45586,
|
||||
SPELL_TRIGGER_MIDDLE_STRAFE = 45622,
|
||||
SPELL_TRIGGER_BOTTOM_STRAFE = 45623,
|
||||
SPELL_STRAFE_TOP = 45585,
|
||||
SPELL_STRAFE_MIDDLE = 45633,
|
||||
SPELL_STRAFE_BOTTOM = 45635,
|
||||
SPELL_SUMMON_DEMONIC_VAPOR = 45391,
|
||||
SPELL_DEMONIC_VAPOR_SPAWN_TRIGGER = 45388, // Triggers visual beam
|
||||
SPELL_DEMONIC_VAPOR_PERIODIC = 45411, // Spawns cloud and deals damage
|
||||
@@ -110,18 +116,17 @@ public:
|
||||
|
||||
bool Execute(uint64 /*execTime*/, uint32 /*diff*/) override
|
||||
{
|
||||
std::list<Creature*> creatureList;
|
||||
_caster->GetCreaturesWithEntryInRange(creatureList, 70.0f, NPC_FOG_TRIGGER);
|
||||
for (auto const& creature : creatureList)
|
||||
switch (_currentLane)
|
||||
{
|
||||
if (_caster->GetExactDist2d(creature) <= 11.0f)
|
||||
{
|
||||
creature->CastSpell(creature, SPELL_FOG_OF_CORRUPTION, true);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!_currentLane && creature->GetPositionX() > 1510.0f)
|
||||
creature->CastSpell(creature, SPELL_FOG_OF_CORRUPTION, true);
|
||||
case 0: // top
|
||||
_caster->CastSpell(_caster, SPELL_STRAFE_TOP, true);
|
||||
break;
|
||||
case 1: // middle
|
||||
_caster->CastSpell(_caster, SPELL_STRAFE_MIDDLE, true);
|
||||
break;
|
||||
case 2: // bottom
|
||||
_caster->CastSpell(_caster, SPELL_STRAFE_BOTTOM, true);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -183,6 +188,12 @@ struct boss_felmyst : public BossAI
|
||||
Talk(YELL_KILL);
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit* target, const SpellInfo* spell) override
|
||||
{
|
||||
if (spell->Id == SPELL_STRAFE_TOP || spell->Id == SPELL_STRAFE_MIDDLE || spell->Id == SPELL_STRAFE_BOTTOM)
|
||||
target->CastSpell(target, SPELL_FOG_OF_CORRUPTION, true);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer) override
|
||||
{
|
||||
BossAI::JustDied(killer);
|
||||
@@ -297,15 +308,8 @@ struct boss_felmyst : public BossAI
|
||||
case POINT_LANE:
|
||||
Talk(EMOTE_BREATH);
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(0));
|
||||
me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(500));
|
||||
me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(1000));
|
||||
me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(1500));
|
||||
me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(2000));
|
||||
me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(2500));
|
||||
me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(3000));
|
||||
me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(3500));
|
||||
me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(4000));
|
||||
for (uint8 i = 0; i < 16; ++i)
|
||||
me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(i*250));
|
||||
}, 5s);
|
||||
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
|
||||
@@ -450,6 +450,7 @@ struct boss_kiljaeden : public BossAI
|
||||
if (me->GetReactState() == REACT_PASSIVE)
|
||||
return;
|
||||
ScriptedAI::EnterEvadeMode(why);
|
||||
me->DespawnOrUnsummon();
|
||||
}
|
||||
|
||||
void AttackStart(Unit* who) override
|
||||
|
||||
@@ -293,7 +293,7 @@ class spell_entropius_void_zone_visual_aura : public AuraScript
|
||||
void Register() override
|
||||
{
|
||||
OnEffectApply += AuraEffectApplyFn(spell_entropius_void_zone_visual_aura::HandleApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_entropius_void_zone_visual_aura::HandleApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_entropius_void_zone_visual_aura::HandleRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -319,7 +319,7 @@ class spell_dk_death_and_decay : public SpellScript
|
||||
|
||||
// Xinef: include AOE damage reducing auras
|
||||
if (target)
|
||||
damage = target->CalculateAOEDamageReduction(damage, GetSpellInfo()->SchoolMask, caster);
|
||||
damage = target->CalculateAOEDamageReduction(damage, GetSpellInfo()->SchoolMask, false);
|
||||
|
||||
SetHitDamage(damage);
|
||||
}
|
||||
|
||||
@@ -664,7 +664,7 @@ enum SpellAttr7 : uint32
|
||||
SPELL_ATTR7_NO_ATTACK_DODGE = 0x00800000, // TITLE Spell cannot be dodged 23@Attr7 DESCRIPTION Motivate, Mutilate, Shattering Throw
|
||||
SPELL_ATTR7_NO_ATTACK_PARRY = 0x01000000, // TITLE Spell cannot be parried 24@Attr7 DESCRIPTION Motivate, Mutilate, Perform Speech, Shattering Throw
|
||||
SPELL_ATTR7_NO_ATTACK_MISS = 0x02000000, // TITLE Spell cannot be missed 25@Attr7
|
||||
SPELL_ATTR7_TREAT_AS_NPC_AOE = 0x04000000, // TITLE Unknown attribute 26@Attr7
|
||||
SPELL_ATTR7_TREAT_AS_NPC_AOE = 0x04000000, // TITLE Treat as NPC AoE
|
||||
SPELL_ATTR7_BYPASS_NO_RESURRECTION_AURA = 0x08000000, // TITLE Bypasses the prevent resurrection aura
|
||||
SPELL_ATTR7_DO_NOT_COUNT_FOR_PVP_SCOREBOARD = 0x10000000, // TITLE Consolidate in raid buff frame (client only)
|
||||
SPELL_ATTR7_REFLECTION_ONLY_DEFENDS = 0x20000000, // TITLE Unknown attribute 29@Attr7 DESCRIPTION only 69028, 71237
|
||||
|
||||
@@ -1087,7 +1087,7 @@ AC_API_EXPORT EnumText EnumUtils<SpellAttr7>::ToString(SpellAttr7 value)
|
||||
case SPELL_ATTR7_NO_ATTACK_DODGE: return { "SPELL_ATTR7_NO_ATTACK_DODGE", "Spell cannot be dodged 23@Attr7", "Motivate, Mutilate, Shattering Throw" };
|
||||
case SPELL_ATTR7_NO_ATTACK_PARRY: return { "SPELL_ATTR7_NO_ATTACK_PARRY", "Spell cannot be parried 24@Attr7", "Motivate, Mutilate, Perform Speech, Shattering Throw" };
|
||||
case SPELL_ATTR7_NO_ATTACK_MISS: return { "SPELL_ATTR7_NO_ATTACK_MISS", "Spell cannot be missed 25@Attr7", "" };
|
||||
case SPELL_ATTR7_TREAT_AS_NPC_AOE: return { "SPELL_ATTR7_TREAT_AS_NPC_AOE", "Unknown attribute 26@Attr7", "" };
|
||||
case SPELL_ATTR7_TREAT_AS_NPC_AOE: return { "SPELL_ATTR7_TREAT_AS_NPC_AOE", "Treat as NPC AoE", "" };
|
||||
case SPELL_ATTR7_BYPASS_NO_RESURRECTION_AURA: return { "SPELL_ATTR7_BYPASS_NO_RESURRECTION_AURA", "Bypasses the prevent resurrection aura", "" };
|
||||
case SPELL_ATTR7_DO_NOT_COUNT_FOR_PVP_SCOREBOARD: return { "SPELL_ATTR7_DO_NOT_COUNT_FOR_PVP_SCOREBOARD", "Consolidate in raid buff frame (client only)", "" };
|
||||
case SPELL_ATTR7_REFLECTION_ONLY_DEFENDS: return { "SPELL_ATTR7_REFLECTION_ONLY_DEFENDS", "Unknown attribute 29@Attr7", "only 69028, 71237" };
|
||||
|
||||
Reference in New Issue
Block a user