mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-02 10:33:46 +00:00
fix(Scripts/Spells): Brewfest Hops (#22998)
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
--
|
||||||
|
DELETE FROM `spell_script_names` WHERE `spell_id` IN (66050, 62062, 66052) AND `ScriptName` = 'spell_item_brewfest_hops';
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(66050, 'spell_item_brewfest_hops'),
|
||||||
|
(62062, 'spell_item_brewfest_hops'),
|
||||||
|
(66052, 'spell_item_brewfest_hops');
|
||||||
@@ -3147,6 +3147,7 @@ enum BrewfestMountTransformation
|
|||||||
SPELL_MOUNT_KODO_60 = 49378,
|
SPELL_MOUNT_KODO_60 = 49378,
|
||||||
SPELL_BREWFEST_MOUNT_TRANSFORM = 49357,
|
SPELL_BREWFEST_MOUNT_TRANSFORM = 49357,
|
||||||
SPELL_BREWFEST_MOUNT_TRANSFORM_REVERSE = 52845,
|
SPELL_BREWFEST_MOUNT_TRANSFORM_REVERSE = 52845,
|
||||||
|
SPELL_FRESH_DWARVEN_HOPS = 66050,
|
||||||
};
|
};
|
||||||
|
|
||||||
class spell_item_brewfest_mount_transformation : public SpellScript
|
class spell_item_brewfest_mount_transformation : public SpellScript
|
||||||
@@ -3169,25 +3170,26 @@ class spell_item_brewfest_mount_transformation : public SpellScript
|
|||||||
Player* caster = GetCaster()->ToPlayer();
|
Player* caster = GetCaster()->ToPlayer();
|
||||||
|
|
||||||
if (!caster)
|
if (!caster)
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
if (caster->HasMountedAura())
|
if (caster->HasMountedAura())
|
||||||
{
|
{
|
||||||
|
float speed = caster->GetSpeedRate(MOVE_RUN);
|
||||||
|
|
||||||
caster->RemoveAurasByType(SPELL_AURA_MOUNTED);
|
caster->RemoveAurasByType(SPELL_AURA_MOUNTED);
|
||||||
|
|
||||||
uint32 spell_id;
|
uint32 spell_id;
|
||||||
|
|
||||||
switch (GetSpellInfo()->Id)
|
switch (GetSpellInfo()->Id)
|
||||||
{
|
{
|
||||||
case SPELL_BREWFEST_MOUNT_TRANSFORM:
|
case SPELL_BREWFEST_MOUNT_TRANSFORM:
|
||||||
if (caster->GetSpeedRate(MOVE_RUN) >= 2.0f)
|
if (speed >= 2.0f)
|
||||||
spell_id = caster->GetTeamId() == TEAM_ALLIANCE ? SPELL_MOUNT_RAM_100 : SPELL_MOUNT_KODO_100;
|
spell_id = caster->GetTeamId() == TEAM_ALLIANCE ? SPELL_MOUNT_RAM_100 : SPELL_MOUNT_KODO_100;
|
||||||
else
|
else
|
||||||
spell_id = caster->GetTeamId() == TEAM_ALLIANCE ? SPELL_MOUNT_RAM_60 : SPELL_MOUNT_KODO_60;
|
spell_id = caster->GetTeamId() == TEAM_ALLIANCE ? SPELL_MOUNT_RAM_60 : SPELL_MOUNT_KODO_60;
|
||||||
break;
|
break;
|
||||||
case SPELL_BREWFEST_MOUNT_TRANSFORM_REVERSE:
|
case SPELL_BREWFEST_MOUNT_TRANSFORM_REVERSE:
|
||||||
if (caster->GetSpeedRate(MOVE_RUN) >= 2.0f)
|
if (speed >= 2.0f)
|
||||||
spell_id = caster->GetTeamId() == TEAM_HORDE ? SPELL_MOUNT_RAM_100 : SPELL_MOUNT_KODO_100;
|
spell_id = caster->GetTeamId() == TEAM_HORDE ? SPELL_MOUNT_RAM_100 : SPELL_MOUNT_KODO_100;
|
||||||
else
|
else
|
||||||
spell_id = caster->GetTeamId() == TEAM_HORDE ? SPELL_MOUNT_RAM_60 : SPELL_MOUNT_KODO_60;
|
spell_id = caster->GetTeamId() == TEAM_HORDE ? SPELL_MOUNT_RAM_60 : SPELL_MOUNT_KODO_60;
|
||||||
@@ -3205,6 +3207,48 @@ class spell_item_brewfest_mount_transformation : public SpellScript
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class spell_item_brewfest_hops : public AuraScript
|
||||||
|
{
|
||||||
|
PrepareAuraScript(spell_item_brewfest_hops);
|
||||||
|
|
||||||
|
bool Validate(SpellInfo const* /*spell*/) override
|
||||||
|
{
|
||||||
|
return ValidateSpellInfo(
|
||||||
|
{
|
||||||
|
SPELL_BREWFEST_MOUNT_TRANSFORM,
|
||||||
|
SPELL_BREWFEST_MOUNT_TRANSFORM_REVERSE,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Load() override
|
||||||
|
{
|
||||||
|
_spell_id = GetSpellInfo()->Id == SPELL_FRESH_DWARVEN_HOPS ? SPELL_BREWFEST_MOUNT_TRANSFORM_REVERSE : SPELL_BREWFEST_MOUNT_TRANSFORM;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CalcPeriodic(AuraEffect const* /*effect*/, bool& isPeriodic, int32& amplitude)
|
||||||
|
{
|
||||||
|
isPeriodic = true;
|
||||||
|
amplitude = 3 * IN_MILLISECONDS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update(AuraEffect* /*effect*/)
|
||||||
|
{
|
||||||
|
Unit* caster = GetCaster();
|
||||||
|
if (!caster || caster->HasAnyAuras(SPELL_MOUNT_RAM_100, SPELL_MOUNT_RAM_60, SPELL_MOUNT_KODO_100, SPELL_MOUNT_KODO_60))
|
||||||
|
return;
|
||||||
|
caster->CastSpell(caster, _spell_id, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_item_brewfest_hops::CalcPeriodic, EFFECT_0, SPELL_AURA_DUMMY);
|
||||||
|
OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_item_brewfest_hops::Update, EFFECT_0, SPELL_AURA_DUMMY);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
uint32 _spell_id;
|
||||||
|
};
|
||||||
|
|
||||||
enum NitroBoots
|
enum NitroBoots
|
||||||
{
|
{
|
||||||
SPELL_NITRO_BOOTS_SUCCESS = 54861,
|
SPELL_NITRO_BOOTS_SUCCESS = 54861,
|
||||||
@@ -4338,4 +4382,5 @@ void AddSC_item_spell_scripts()
|
|||||||
RegisterSpellScript(spell_item_spell_reflectors);
|
RegisterSpellScript(spell_item_spell_reflectors);
|
||||||
RegisterSpellScript(spell_item_multiphase_goggles);
|
RegisterSpellScript(spell_item_multiphase_goggles);
|
||||||
RegisterSpellScript(spell_item_bloodsail_admiral_hat);
|
RegisterSpellScript(spell_item_bloodsail_admiral_hat);
|
||||||
|
RegisterSpellScript(spell_item_brewfest_hops);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user