Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
KamiliaBlow committed Jan 2, 2025
2 parents 1316183 + 887fcbc commit 290ee4f
Show file tree
Hide file tree
Showing 14 changed files with 120 additions and 127 deletions.
15 changes: 15 additions & 0 deletions sql/updates/world/master/2025_01_01_00_world.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
DELETE FROM `spell_script_names` WHERE `spell_id` = 267211;
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(267211, 'spell_warl_bilescourge_bombers');

DELETE FROM `areatrigger_create_properties` WHERE (`IsCustom`=0 AND `Id` IN (13045,15141));
INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `TimeToTarget`, `TimeToTargetScale`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `VerifiedBuild`) VALUES
(13045, 0, 17676, 0, 0, 0, 0, 0, 0, -1, 0, 0, NULL, 0, 5760, 4, 8, 8, 10, 10, 0.300000011920928955, 0.300000011920928955, 0, 0, 58238), -- Spell: 267211 (Bilescourge Bombers)
(15141, 0, 19764, 0, 0, 0, 0, 0, 0, -1, 0, 0, NULL, 0, 5760, 0, 1, 1, 0, 0, 0, 0, 0, 0, 58238); -- Spell: 282248 (Bilescourge Bombers)

DELETE FROM `areatrigger_template` WHERE (`IsCustom`=0 AND `Id` IN (17676, 19764));
INSERT INTO `areatrigger_template` (`Id`, `IsCustom`, `Flags`, `VerifiedBuild`) VALUES
(17676, 0, 0, 58238),
(19764, 0, 0, 58238);

UPDATE `areatrigger_create_properties` SET `ScriptName`='at_warl_bilescourge_bombers' WHERE `Id`=15141 AND `IsCustom`=0;
1 change: 1 addition & 0 deletions sql/updates/world/master/2025_01_01_01_world.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_brewfest_relay_race_intro_force_player_to_throw','spell_silithus_summon_cultist_periodic','spell_hor_quel_delars_will','spell_kaelthas_remove_weapons');
5 changes: 4 additions & 1 deletion src/server/game/Entities/Item/enuminfo_ItemDefines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,12 +161,13 @@ TC_API_EXPORT EnumText EnumUtils<InventoryResult>::ToString(InventoryResult valu
case EQUIP_ERR_CANT_DELETE_IN_ACCOUNT_BANK: return { "EQUIP_ERR_CANT_DELETE_IN_ACCOUNT_BANK", "EQUIP_ERR_CANT_DELETE_IN_ACCOUNT_BANK", "Items must be moved out of the Warband Bank to be deleted." };
case EQUIP_ERR_BANK_NOT_ACCESSIBLE: return { "EQUIP_ERR_BANK_NOT_ACCESSIBLE", "EQUIP_ERR_BANK_NOT_ACCESSIBLE", "This character does not have access to this bank." };
case EQUIP_ERR_CANT_TRADE_ACCOUNT_ITEM: return { "EQUIP_ERR_CANT_TRADE_ACCOUNT_ITEM", "EQUIP_ERR_CANT_TRADE_ACCOUNT_ITEM", "You can't trade an item from the Warband bank." };
case EQUIP_ERR_ACCOUNT_MONEY_LOCKED: return { "EQUIP_ERR_ACCOUNT_MONEY_LOCKED", "EQUIP_ERR_ACCOUNT_MONEY_LOCKED", "You cannot withdraw or deposit gold from the warband bank currently; please try again later." };
default: throw std::out_of_range("value");
}
}

template <>
TC_API_EXPORT size_t EnumUtils<InventoryResult>::Count() { return 130; }
TC_API_EXPORT size_t EnumUtils<InventoryResult>::Count() { return 131; }

template <>
TC_API_EXPORT InventoryResult EnumUtils<InventoryResult>::FromIndex(size_t index)
Expand Down Expand Up @@ -303,6 +304,7 @@ TC_API_EXPORT InventoryResult EnumUtils<InventoryResult>::FromIndex(size_t index
case 127: return EQUIP_ERR_CANT_DELETE_IN_ACCOUNT_BANK;
case 128: return EQUIP_ERR_BANK_NOT_ACCESSIBLE;
case 129: return EQUIP_ERR_CANT_TRADE_ACCOUNT_ITEM;
case 130: return EQUIP_ERR_ACCOUNT_MONEY_LOCKED;
default: throw std::out_of_range("index");
}
}
Expand Down Expand Up @@ -442,6 +444,7 @@ TC_API_EXPORT size_t EnumUtils<InventoryResult>::ToIndex(InventoryResult value)
case EQUIP_ERR_CANT_DELETE_IN_ACCOUNT_BANK: return 127;
case EQUIP_ERR_BANK_NOT_ACCESSIBLE: return 128;
case EQUIP_ERR_CANT_TRADE_ACCOUNT_ITEM: return 129;
case EQUIP_ERR_ACCOUNT_MONEY_LOCKED: return 130;
default: throw std::out_of_range("value");
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/server/game/Miscellaneous/SharedDefines.h
Original file line number Diff line number Diff line change
Expand Up @@ -659,7 +659,7 @@ enum SpellAttr6 : uint32
SPELL_ATTR6_NOT_AN_ATTACK = 0x00000004, /*NYI*/ // TITLE Not an Attack
SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC = 0x00000008, // TITLE Can Assist Immune PC
SPELL_ATTR6_IGNORE_FOR_MOD_TIME_RATE = 0x00000010, /*NYI, time rate not implemented*/ // TITLE Ignore For Mod Time Rate
SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES = 0x00000020, // TITLE Do Not Consume Resources
SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES = 0x00000020, // TITLE Do Not Consume Resources DESCRIPTION Requires power/reagents to cast but doesn't consume them
SPELL_ATTR6_FLOATING_COMBAT_TEXT_ON_CAST = 0x00000040, // TITLE Floating Combat Text On Cast (client only)
SPELL_ATTR6_AURA_IS_WEAPON_PROC = 0x00000080, // TITLE Aura Is Weapon Proc
SPELL_ATTR6_DO_NOT_CHAIN_TO_CROWD_CONTROLLED_TARGETS = 0x00000100, // TITLE Do Not Chain To Crowd-Controlled Targets DESCRIPTION Implicit targeting (chaining and area targeting) will not impact crowd controlled targets
Expand Down
2 changes: 1 addition & 1 deletion src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1053,7 +1053,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr6>::ToString(SpellAttr6 value)
case SPELL_ATTR6_NOT_AN_ATTACK: return { "SPELL_ATTR6_NOT_AN_ATTACK", "Not an Attack", "" };
case SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC: return { "SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC", "Can Assist Immune PC", "" };
case SPELL_ATTR6_IGNORE_FOR_MOD_TIME_RATE: return { "SPELL_ATTR6_IGNORE_FOR_MOD_TIME_RATE", "Ignore For Mod Time Rate", "" };
case SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES: return { "SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES", "Do Not Consume Resources", "" };
case SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES: return { "SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES", "Do Not Consume Resources", "Requires power/reagents to cast but doesn't consume them" };
case SPELL_ATTR6_FLOATING_COMBAT_TEXT_ON_CAST: return { "SPELL_ATTR6_FLOATING_COMBAT_TEXT_ON_CAST", "Floating Combat Text On Cast (client only)", "" };
case SPELL_ATTR6_AURA_IS_WEAPON_PROC: return { "SPELL_ATTR6_AURA_IS_WEAPON_PROC", "Aura Is Weapon Proc", "" };
case SPELL_ATTR6_DO_NOT_CHAIN_TO_CROWD_CONTROLLED_TARGETS: return { "SPELL_ATTR6_DO_NOT_CHAIN_TO_CROWD_CONTROLLED_TARGETS", "Do Not Chain To Crowd-Controlled Targets", "Implicit targeting (chaining and area targeting) will not impact crowd controlled targets" };
Expand Down
12 changes: 9 additions & 3 deletions src/server/game/Spells/Auras/SpellAuraEffects.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5574,8 +5574,10 @@ void AuraEffect::HandlePeriodicTriggerSpellAuraTick(Unit* target, Unit* caster)
if (Eluna* e = caster->GetEluna())
e->OnDummyEffect(triggerCaster, GetId(), SpellEffIndex(GetEffIndex()), c);
#endif

triggerCaster->CastSpell(target, triggerSpellId, this);
triggerCaster->CastSpell(target, triggerSpellId, CastSpellExtraArgsInit{
.TriggerFlags = TRIGGERED_FULL_MASK & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_REAGENT_COST),
.TriggeringAura = this
});
TC_LOG_DEBUG("spells.aura.effect", "AuraEffect::HandlePeriodicTriggerSpellAuraTick: Spell {} Trigger {}", GetId(), triggeredSpellInfo->Id);
}
}
Expand All @@ -5597,6 +5599,7 @@ void AuraEffect::HandlePeriodicTriggerSpellWithValueAuraTick(Unit* target, Unit*
if (Unit* triggerCaster = triggeredSpellInfo->NeedsToBeTriggeredByCaster(m_spellInfo) ? caster : target)
{
CastSpellExtraArgs args(this);
args.SetTriggerFlags(TRIGGERED_FULL_MASK & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_REAGENT_COST));
for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), GetAmount());
triggerCaster->CastSpell(target, triggerSpellId, args);
Expand Down Expand Up @@ -6153,7 +6156,9 @@ void AuraEffect::HandleProcTriggerSpellAuraProc(AuraApplication* aurApp, ProcEve
if (SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(triggerSpellId, GetBase()->GetCastDifficulty()))
{
TC_LOG_DEBUG("spells.aura.effect", "AuraEffect::HandleProcTriggerSpellAuraProc: Triggering spell {} from aura {} proc", triggeredSpellInfo->Id, GetId());
triggerCaster->CastSpell(triggerTarget, triggeredSpellInfo->Id, CastSpellExtraArgs(this).SetTriggeringSpell(eventInfo.GetProcSpell()));
triggerCaster->CastSpell(triggerTarget, triggeredSpellInfo->Id, CastSpellExtraArgs(this)
.SetTriggeringSpell(eventInfo.GetProcSpell())
.SetTriggerFlags(TRIGGERED_FULL_MASK & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_REAGENT_COST)));
}
else if (triggerSpellId && GetAuraType() != SPELL_AURA_DUMMY)
TC_LOG_ERROR("spells.aura.effect.nospell","AuraEffect::HandleProcTriggerSpellAuraProc: Spell {} has non-existent spell {} in EffectTriggered[{}] and is therefore not triggered.", GetId(), triggerSpellId, GetEffIndex());
Expand All @@ -6176,6 +6181,7 @@ void AuraEffect::HandleProcTriggerSpellWithValueAuraProc(AuraApplication* aurApp
if (SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(triggerSpellId, GetBase()->GetCastDifficulty()))
{
CastSpellExtraArgs args(this);
args.SetTriggerFlags(TRIGGERED_FULL_MASK & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_REAGENT_COST));
args.SetTriggeringSpell(eventInfo.GetProcSpell());
args.AddSpellMod(SPELLVALUE_BASE_POINT0, GetAmount());
triggerCaster->CastSpell(triggerTarget, triggerSpellId, args);
Expand Down
13 changes: 8 additions & 5 deletions src/server/game/Spells/Auras/SpellAuras.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -464,12 +464,15 @@ m_isRemoved(false), m_isSingleTarget(false), m_isUsingCharges(false), m_dropEven
m_procCooldown(TimePoint::min()),
m_lastProcAttemptTime(GameTime::Now() - Seconds(10)), m_lastProcSuccessTime(GameTime::Now() - Seconds(120)), m_scriptRef(this, NoopAuraDeleter())
{
for (SpellPowerEntry const* power : m_spellInfo->PowerCosts)
if (power && (power->ManaPerSecond != 0 || power->PowerPctPerSecond > 0.0f))
m_periodicCosts.push_back(power);
if (!m_spellInfo->HasAttribute(SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES))
{
for (SpellPowerEntry const* power : m_spellInfo->PowerCosts)
if (power && (power->ManaPerSecond != 0 || power->PowerPctPerSecond > 0.0f))
m_periodicCosts.push_back(power);

if (!m_periodicCosts.empty())
m_timeCla = 1 * IN_MILLISECONDS;
if (!m_periodicCosts.empty())
m_timeCla = 1 * IN_MILLISECONDS;
}

m_maxDuration = CalcMaxDuration(createInfo.Caster);
m_duration = m_maxDuration;
Expand Down
6 changes: 3 additions & 3 deletions src/server/game/Spells/Spell.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5559,7 +5559,7 @@ void Spell::TakePower()
if (!unitCaster)
return;

if (m_CastItem || m_triggeredByAuraSpell)
if (m_CastItem || m_spellInfo->HasAttribute(SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES))
return;

//Don't take power if the spell is cast while .cheat power is enabled.
Expand Down Expand Up @@ -5616,7 +5616,7 @@ void Spell::RefundPower()
if (!unitCaster)
return;

if (m_CastItem || m_triggeredByAuraSpell)
if (m_CastItem || m_spellInfo->HasAttribute(SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES))
return;

//Don't take power if the spell is cast while .cheat power is enabled.
Expand Down Expand Up @@ -5718,7 +5718,7 @@ void Spell::TakeReagents()
return;

// do not take reagents for these item casts
if (m_CastItem && m_CastItem->GetTemplate()->HasFlag(ITEM_FLAG_NO_REAGENT_COST))
if ((m_CastItem && m_CastItem->GetTemplate()->HasFlag(ITEM_FLAG_NO_REAGENT_COST)) || m_spellInfo->HasAttribute(SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES))
return;

Player* p_caster = m_caster->ToPlayer();
Expand Down
6 changes: 3 additions & 3 deletions src/server/game/Spells/SpellEffects.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -725,7 +725,7 @@ void Spell::EffectTriggerSpell()
targets.Update(caster); // refresh pointers stored in targets

// original caster guid only for GO cast
CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
CastSpellExtraArgs args(TRIGGERED_FULL_MASK & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_REAGENT_COST));
args.SetOriginalCaster(originalCaster);
args.OriginalCastId = originalCastId;
args.OriginalCastItemLevel = itemLevel;
Expand Down Expand Up @@ -794,7 +794,7 @@ void Spell::EffectTriggerMissileSpell()
targets.SetGOTarget(go);
}

CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
CastSpellExtraArgs args(TRIGGERED_FULL_MASK & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_REAGENT_COST));
args.SetOriginalCaster(m_originalCasterGUID);
args.SetTriggeringSpell(this);
args.SetCustomArg(m_customArg);
Expand Down Expand Up @@ -868,7 +868,7 @@ void Spell::EffectForceCast()
return;
}

CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
CastSpellExtraArgs args(TRIGGERED_FULL_MASK & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_REAGENT_COST));
args.SetTriggeringSpell(this);
if (effectInfo->Effect == SPELL_EFFECT_FORCE_CAST_WITH_VALUE)
for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
Expand Down
18 changes: 0 additions & 18 deletions src/server/scripts/Events/brewfest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,23 +205,6 @@ class spell_brewfest_exhausted_ram : public AuraScript
}
};

// 43714 - Brewfest - Relay Race - Intro - Force - Player to throw- DND
class spell_brewfest_relay_race_intro_force_player_to_throw : public SpellScript
{
void HandleForceCast(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex);
// All this spells trigger a spell that requires reagents; if the
// triggered spell is cast as "triggered", reagents are not consumed
GetHitUnit()->CastSpell(nullptr, GetEffectInfo().TriggerSpell, TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_REAGENT_COST);
}

void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_brewfest_relay_race_intro_force_player_to_throw::HandleForceCast, EFFECT_0, SPELL_EFFECT_FORCE_CAST);
}
};

// 43755 - Brewfest - Daily - Relay Race - Player - Increase Mount Duration - DND
class spell_brewfest_relay_race_turn_in : public SpellScript
{
Expand Down Expand Up @@ -634,7 +617,6 @@ void AddSC_event_brewfest()
RegisterSpellScript(spell_brewfest_ram_fatigue);
RegisterSpellScript(spell_brewfest_apple_trap);
RegisterSpellScript(spell_brewfest_exhausted_ram);
RegisterSpellScript(spell_brewfest_relay_race_intro_force_player_to_throw);
RegisterSpellScript(spell_brewfest_relay_race_turn_in);
RegisterSpellScript(spell_brewfest_dismount_ram);
RegisterSpellScript(spell_brewfest_barker_bunny);
Expand Down
41 changes: 0 additions & 41 deletions src/server/scripts/Kalimdor/zone_silithus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,6 @@ EndContentData */
#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
#include "TemporarySummon.h"

/*#####
Expand Down Expand Up @@ -1430,50 +1428,11 @@ class go_wind_stone : public GameObjectScript
}
};

// 24745 - Summon Templar, Trigger
// 24747 - Summon Templar Fire, Trigger
// 24757 - Summon Templar Air, Trigger
// 24759 - Summon Templar Earth, Trigger
// 24761 - Summon Templar Water, Trigger
// 24762 - Summon Duke, Trigger
// 24766 - Summon Duke Fire, Trigger
// 24769 - Summon Duke Air, Trigger
// 24771 - Summon Duke Earth, Trigger
// 24773 - Summon Duke Water, Trigger
// 24785 - Summon Royal, Trigger
// 24787 - Summon Royal Fire, Trigger
// 24791 - Summon Royal Air, Trigger
// 24792 - Summon Royal Earth, Trigger
// 24793 - Summon Royal Water, Trigger
// 46595 - Summon Ice Stone Lieutenant, Trigger
class spell_silithus_summon_cultist_periodic : public AuraScript
{
bool Validate(SpellInfo const* spellInfo) override
{
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_0).TriggerSpell });
}

void PeriodicTick(AuraEffect const* aurEff)
{
PreventDefaultAction();

// All these spells trigger a spell that requires reagents; if the
// triggered spell is cast as "triggered", reagents are not consumed
GetTarget()->CastSpell(nullptr, aurEff->GetSpellEffectInfo().TriggerSpell, CastSpellExtraArgs(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_REAGENT_COST).SetTriggeringAura(aurEff));
}

void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_silithus_summon_cultist_periodic::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
}
};

void AddSC_silithus()
{
new go_crystalline_tear();
new npc_anachronos_quest_trigger();
new npc_anachronos_the_ancient();
new npc_qiraj_war_spawn();
new go_wind_stone();
RegisterSpellScript(spell_silithus_summon_cultist_periodic);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2829,28 +2829,6 @@ class spell_hor_gunship_cannon_fire : public SpellScriptLoader
}
};

// 70698 - Quel'Delar's Will
class spell_hor_quel_delars_will : public SpellScript
{
bool Validate(SpellInfo const* spellInfo) override
{
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_0).TriggerSpell });
}

void HandleReagent(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex);

// dummy spell consumes reagent, don't ignore it
GetHitUnit()->CastSpell(GetCaster(), GetEffectInfo().TriggerSpell, TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_REAGENT_COST);
}

void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_hor_quel_delars_will::HandleReagent, EFFECT_0, SPELL_EFFECT_FORCE_CAST);
}
};

void AddSC_halls_of_reflection()
{
new at_hor_intro_start();
Expand All @@ -2877,5 +2855,4 @@ void AddSC_halls_of_reflection()
new spell_hor_start_halls_of_reflection_quest_ae();
new spell_hor_evasion();
new spell_hor_gunship_cannon_fire();
RegisterSpellScript(spell_hor_quel_delars_will);
}
28 changes: 0 additions & 28 deletions src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -280,12 +280,6 @@ constexpr uint32 SummonWeaponsSpells[] =
SPELL_SUMMON_WEAPONE, SPELL_SUMMON_WEAPONF, SPELL_SUMMON_WEAPONG
};

constexpr uint32 RemoveWeaponsSpells[] =
{
SPELL_REMOVE_WEAPONA, SPELL_REMOVE_WEAPONB, SPELL_REMOVE_WEAPONC, SPELL_REMOVE_WEAPOND,
SPELL_REMOVE_WEAPONE, SPELL_REMOVE_WEAPONF, SPELL_REMOVE_WEAPONG
};

constexpr uint32 GravityLapseSpells[] =
{
SPELL_GRAVITY_LAPSE_TELE_FRONT,
Expand Down Expand Up @@ -1383,27 +1377,6 @@ class spell_kaelthas_summon_weapons : public SpellScript
}
};

// 39497 - Remove Enchanted Weapons
class spell_kaelthas_remove_weapons : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo(RemoveWeaponsSpells);
}

void HandleScript(SpellEffIndex /*effIndex*/)
{
if (Player* player = GetHitPlayer())
for (uint32 spells : RemoveWeaponsSpells)
player->CastSpell(player, spells, TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_REAGENT_COST);
}

void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_kaelthas_remove_weapons::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};

void AddSC_boss_kaelthas()
{
RegisterTheEyeCreatureAI(boss_kaelthas);
Expand All @@ -1417,5 +1390,4 @@ void AddSC_boss_kaelthas()
RegisterSpellScript(spell_kael_gravity_lapse);
RegisterSpellScript(spell_kaelthas_flame_strike);
RegisterSpellScript(spell_kaelthas_summon_weapons);
RegisterSpellScript(spell_kaelthas_remove_weapons);
}
Loading

0 comments on commit 290ee4f

Please sign in to comment.