Skip to content

Commit 766eb59

Browse files
committed
Scripts/Spells: implement some eject passenger spells
1 parent 5cee106 commit 766eb59

2 files changed

Lines changed: 52 additions & 0 deletions

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
DELETE FROM `spell_script_names` WHERE `spell_id` IN (62539,64614,64629,64630,64631,64632,64633,64634,64635,64636,67393);
2+
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
3+
(62539,'spell_gen_eject_passenger'),
4+
(64614,'spell_gen_eject_passenger'),
5+
(64629,'spell_gen_eject_passenger'),
6+
(64630,'spell_gen_eject_passenger'),
7+
(64631,'spell_gen_eject_passenger'),
8+
(64632,'spell_gen_eject_passenger'),
9+
(64633,'spell_gen_eject_passenger'),
10+
(64634,'spell_gen_eject_passenger'),
11+
(64635,'spell_gen_eject_passenger'),
12+
(64636,'spell_gen_eject_passenger'),
13+
(67393,'spell_gen_eject_passenger');

src/server/scripts/Spells/spell_generic.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3622,6 +3622,44 @@ class spell_gen_eject_all_passengers : public SpellScriptLoader
36223622
}
36233623
};
36243624

3625+
class spell_gen_eject_passenger : public SpellScriptLoader
3626+
{
3627+
public:
3628+
spell_gen_eject_passenger() : SpellScriptLoader("spell_gen_eject_passenger") { }
3629+
3630+
class spell_gen_eject_passenger_SpellScript : public SpellScript
3631+
{
3632+
PrepareSpellScript(spell_gen_eject_passenger_SpellScript);
3633+
3634+
bool Validate(SpellInfo const* spellInfo) override
3635+
{
3636+
SpellEffectInfo const* effect = spellInfo->GetEffect(EFFECT_0);
3637+
if (!effect || effect->CalcValue() < 1)
3638+
return false;
3639+
return true;
3640+
}
3641+
3642+
void EjectPassenger(SpellEffIndex /*effIndex*/)
3643+
{
3644+
if (Vehicle* vehicle = GetHitUnit()->GetVehicleKit())
3645+
{
3646+
if (Unit* passenger = vehicle->GetPassenger(GetEffectValue() - 1))
3647+
passenger->ExitVehicle();
3648+
}
3649+
}
3650+
3651+
void Register() override
3652+
{
3653+
OnEffectHitTarget += SpellEffectFn(spell_gen_eject_passenger_SpellScript::EjectPassenger, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
3654+
}
3655+
};
3656+
3657+
SpellScript* GetSpellScript() const override
3658+
{
3659+
return new spell_gen_eject_passenger_SpellScript();
3660+
}
3661+
};
3662+
36253663
enum GMFreeze
36263664
{
36273665
SPELL_GM_FREEZE = 9454
@@ -4116,6 +4154,7 @@ void AddSC_generic_spell_scripts()
41164154
new spell_gen_wg_water();
41174155
new spell_gen_whisper_gulch_yogg_saron_whisper();
41184156
new spell_gen_eject_all_passengers();
4157+
new spell_gen_eject_passenger();
41194158
new spell_gen_gm_freeze();
41204159
new spell_gen_stand();
41214160
new spell_gen_mixology_bonus();

0 commit comments

Comments
 (0)