mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 00:08:01 +00:00
fix(Core/SpellMgr): Add cooldown to some vehicle spells (#4300)
* fix(Core/SpellMgr): Add cooldown to some spells * author and spellscript Co-Authored-By: Wyrserth <43747507+Wyrserth@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1610824463901751500');
|
||||||
|
|
||||||
|
DELETE FROM `spell_script_names` WHERE `ScriptName`="spell_gen_charmed_unit_spell_cooldown";
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(37727, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(37851, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(37917, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(37918, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(37919, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(47911, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(48620, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(51748, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(51752, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(51756, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(54996, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(54997, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(56513, "spell_gen_charmed_unit_spell_cooldown"),
|
||||||
|
(56524, "spell_gen_charmed_unit_spell_cooldown");
|
||||||
@@ -6766,10 +6766,58 @@ void SpellMgr::LoadDbcDataCorrections()
|
|||||||
spellInfo->EffectBasePoints[0] = 1; // corrects seat id (points - 1 = seatId)
|
spellInfo->EffectBasePoints[0] = 1; // corrects seat id (points - 1 = seatId)
|
||||||
});
|
});
|
||||||
|
|
||||||
// The Iron Colossus
|
// Jormungar Strike
|
||||||
ApplySpellFix({ 56513, 56524 }, [](SpellEntry* spellInfo)
|
ApplySpellFix({ 56513 }, [](SpellEntry* spellInfo)
|
||||||
{
|
{
|
||||||
spellInfo->RecoveryTime = (spellInfo->Id == 56524 ? 6000 : 2000);
|
spellInfo->RecoveryTime = 2000;
|
||||||
|
});
|
||||||
|
|
||||||
|
ApplySpellFix({
|
||||||
|
37851, // Tag Greater Felfire Diemetradon
|
||||||
|
37918 // Arcano-pince
|
||||||
|
}, [](SpellEntry* spellInfo)
|
||||||
|
{
|
||||||
|
spellInfo->RecoveryTime = 3000;
|
||||||
|
});
|
||||||
|
|
||||||
|
ApplySpellFix({
|
||||||
|
54997, // Cast Net (tooltip says 10s but sniffs say 6s)
|
||||||
|
56524 // Acid Breath
|
||||||
|
}, [](SpellEntry* spellInfo)
|
||||||
|
{
|
||||||
|
spellInfo->RecoveryTime = 6000;
|
||||||
|
});
|
||||||
|
|
||||||
|
ApplySpellFix({
|
||||||
|
47911, // EMP
|
||||||
|
48620, // Wing Buffet
|
||||||
|
51752 // Stampy's Stompy-Stomp
|
||||||
|
}, [](SpellEntry* spellInfo)
|
||||||
|
{
|
||||||
|
spellInfo->RecoveryTime = 10000;
|
||||||
|
});
|
||||||
|
|
||||||
|
ApplySpellFix({
|
||||||
|
37727, // Touch of Darkness
|
||||||
|
54996 // Ice Slick (tooltip says 20s but sniffs say 12s)
|
||||||
|
}, [](SpellEntry* spellInfo)
|
||||||
|
{
|
||||||
|
spellInfo->RecoveryTime = 12000;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Signal Helmet to Attack
|
||||||
|
ApplySpellFix({ 51748 }, [](SpellEntry* spellInfo)
|
||||||
|
{
|
||||||
|
spellInfo->RecoveryTime = 15000;
|
||||||
|
});
|
||||||
|
|
||||||
|
ApplySpellFix({
|
||||||
|
51756, // Charge
|
||||||
|
37919, //Arcano-dismantle
|
||||||
|
37917 //Arcano-Cloak
|
||||||
|
}, [](SpellEntry* spellInfo)
|
||||||
|
{
|
||||||
|
spellInfo->RecoveryTime = 20000;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Kaw the Mammoth Destroyer
|
// Kaw the Mammoth Destroyer
|
||||||
|
|||||||
@@ -5043,6 +5043,39 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Used for some spells cast by vehicles or charmed creatures that do not send a cooldown event on their own
|
||||||
|
class spell_gen_charmed_unit_spell_cooldown : public SpellScriptLoader
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
spell_gen_charmed_unit_spell_cooldown() : SpellScriptLoader("spell_gen_charmed_unit_spell_cooldown") { }
|
||||||
|
|
||||||
|
class spell_gen_charmed_unit_spell_cooldown_SpellScript : public SpellScript
|
||||||
|
{
|
||||||
|
PrepareSpellScript(spell_gen_charmed_unit_spell_cooldown_SpellScript);
|
||||||
|
|
||||||
|
void HandleCast()
|
||||||
|
{
|
||||||
|
Unit* caster = GetCaster();
|
||||||
|
if (Player* owner = caster->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||||
|
{
|
||||||
|
WorldPacket data;
|
||||||
|
caster->BuildCooldownPacket(data, SPELL_COOLDOWN_FLAG_NONE, GetSpellInfo()->Id, GetSpellInfo()->RecoveryTime);
|
||||||
|
owner->SendDirectMessage(&data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
OnCast += SpellCastFn(spell_gen_charmed_unit_spell_cooldown_SpellScript::HandleCast);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SpellScript* GetSpellScript() const override
|
||||||
|
{
|
||||||
|
return new spell_gen_charmed_unit_spell_cooldown_SpellScript();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void AddSC_generic_spell_scripts()
|
void AddSC_generic_spell_scripts()
|
||||||
{
|
{
|
||||||
// ours:
|
// ours:
|
||||||
@@ -5171,4 +5204,5 @@ void AddSC_generic_spell_scripts()
|
|||||||
new spell_gen_whisper_gulch_yogg_saron_whisper();
|
new spell_gen_whisper_gulch_yogg_saron_whisper();
|
||||||
new spell_gen_eject_all_passengers();
|
new spell_gen_eject_all_passengers();
|
||||||
new spell_gen_eject_passenger();
|
new spell_gen_eject_passenger();
|
||||||
|
new spell_gen_charmed_unit_spell_cooldown();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user