fix(Scripts/ScarletMonastery): Scarlet Monastery Forgiveness Spell Visual (#26454)

This commit is contained in:
daobashun
2026-07-26 03:47:25 +08:00
committed by GitHub
parent f7eae55ebd
commit 7069d99dca
2 changed files with 72 additions and 12 deletions

View File

@@ -0,0 +1,13 @@
-- SPELL_TRANSFORM_GHOST and SPELL_FORGIVENESS
DELETE FROM `spell_script_names` WHERE `spell_id` IN (28443, 28697);
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(28443, 'spell_transform_ghost_visual'),
(28697, 'spell_forgiveness_dummy_visual');
-- Smartscript
-- Deleted 28 due to SPELL_FORGIVENESS attack death
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 3976) AND (`source_type` = 0) AND (`id` IN (24, 28, 29));
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
(3976, 0, 24, 28, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Commander Mograine - On Reached Point 1 - Start Attacking'),-- Change link 29 to 28
(3976, 0, 28, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Commander Mograine - On Reached Point 1 - Enable Evade');-- Change id 29 to 28

View File

@@ -18,6 +18,8 @@
#include "InstanceMapScript.h"
#include "scarletmonastery.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
enum AshbringerEventMisc
{
@@ -39,17 +41,6 @@ enum AshbringerEventMisc
GO_HIGH_INQUISITOR_DOOR = 104600
};
enum AshbringerSpell
{
//Highlord Mograine Spells
//Needs Fix: Increased the visual effect of spells on hit
SPELL_FORGIVENESS = 28697,
//High Inquisitor Fairbanks
//Needs Fix: Increased the visual effect of spells on hit
SPELL_TRANSFORM_GHOST = 28443
};
enum DataTypes
{
TYPE_MOGRAINE_AND_WHITE_EVENT = 1,
@@ -66,7 +57,7 @@ enum DataTypes
GAMEOBJECT_PUMPKIN_SHRINE = 10
};
float const CATHEDRAL_PULL_RANGE = 80.0f; // Distance from the Cathedral doors to where Mograine is standing
float constexpr CATHEDRAL_PULL_RANGE = 80.0f; // Distance from the Cathedral doors to where Mograine is standing
class instance_scarlet_monastery : public InstanceMapScript
{
@@ -271,7 +262,63 @@ public:
};
};
enum AshbringerSpell
{
SPELL_FORGIVENESS = 28697,
SPELL_FORGIVENESS_IMPACTKIT = 317,
SPELL_TRANSFORM_GHOST = 28443,
SPELL_TRANSFORM_IMPACTKIT=500
};
// SPELL_FORGIVENESS = 28697
class spell_forgiveness_dummy_visual : public SpellScript
{
PrepareSpellScript(spell_forgiveness_dummy_visual);
void HandleDummy(SpellEffIndex /*effIndex*/)
{
Unit* target = GetHitUnit();
if (!target)
return;
target->SendPlaySpellVisual(SPELL_FORGIVENESS_IMPACTKIT);//SPELL_FORGIVENESS IMPACTKIT 317 SpellVisualEntry.ImpactKit can't be used
//Delay death to prevent the death of the creature from interrupting the animation display
target->m_Events.AddEventAtOffset([target]() -> void
{
target->KillSelf();
}, 500ms);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_forgiveness_dummy_visual::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
// SPELL_TRANSFORM_GHOST = 28443
class spell_transform_ghost_visual: public SpellScript
{
PrepareSpellScript(spell_transform_ghost_visual);
void HandleAfterHit()
{
Unit* target = GetHitUnit();
if (!target)
return;
target->SendPlaySpellVisual(SPELL_TRANSFORM_IMPACTKIT); //SPELL_TRANSFORM_GHOST IMPACTKIT 500
}
void Register() override
{
AfterHit += SpellHitFn(spell_transform_ghost_visual::HandleAfterHit);
}
};
void AddSC_instance_scarlet_monastery()
{
new instance_scarlet_monastery();
RegisterSpellScript(spell_forgiveness_dummy_visual);
RegisterSpellScript(spell_transform_ghost_visual);
}