mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 17:27:36 +01:00
Scripts/Item: Fix Nitro Boosts to only fail in flyable areas. Also, it's called nitro _boosts_. Not _boots_. Nitro _boosts_.
(cherry picked from commit f953d85960)
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
-- correct typo in script name
|
||||
UPDATE `spell_script_names` SET `ScriptName`="spell_item_nitro_boosts" WHERE `ScriptName`="spell_item_nitro_boots";
|
||||
@@ -103,6 +103,17 @@ struct AreaTableEntry
|
||||
return true;
|
||||
return (Flags[0] & AREA_FLAG_SANCTUARY) != 0;
|
||||
}
|
||||
|
||||
bool IsFlyable() const
|
||||
{
|
||||
if (Flags[0] & AREA_FLAG_OUTLAND)
|
||||
{
|
||||
if (!(Flags[0] & AREA_FLAG_NO_FLY_ZONE))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
struct AreaTriggerEntry
|
||||
|
||||
@@ -109,7 +109,7 @@ enum AreaFlags
|
||||
AREA_FLAG_SNOW = 0x00000001, // snow (only Dun Morogh, Naxxramas, Razorfen Downs and Winterspring)
|
||||
AREA_FLAG_UNK1 = 0x00000002, // Razorfen Downs, Naxxramas and Acherus: The Ebon Hold (3.3.5a)
|
||||
AREA_FLAG_UNK2 = 0x00000004, // Only used for areas on map 571 (development before)
|
||||
AREA_FLAG_SLAVE_CAPITAL = 0x00000008, // city and city subsones
|
||||
AREA_FLAG_SLAVE_CAPITAL = 0x00000008, // city and city subzones
|
||||
AREA_FLAG_UNK3 = 0x00000010, // can't find common meaning
|
||||
AREA_FLAG_SLAVE_CAPITAL2 = 0x00000020, // slave capital city flag?
|
||||
AREA_FLAG_ALLOW_DUELS = 0x00000040, // allow to duel here
|
||||
|
||||
@@ -3305,18 +3305,18 @@ class spell_item_brewfest_mount_transformation : public SpellScriptLoader
|
||||
|
||||
enum NitroBoots
|
||||
{
|
||||
SPELL_NITRO_BOOTS_SUCCESS = 54861,
|
||||
SPELL_NITRO_BOOTS_BACKFIRE = 46014,
|
||||
SPELL_NITRO_BOOSTS_SUCCESS = 54861,
|
||||
SPELL_NITRO_BOOSTS_BACKFIRE = 46014,
|
||||
};
|
||||
|
||||
class spell_item_nitro_boots : public SpellScriptLoader
|
||||
class spell_item_nitro_boosts : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_item_nitro_boots() : SpellScriptLoader("spell_item_nitro_boots") { }
|
||||
spell_item_nitro_boosts() : SpellScriptLoader("spell_item_nitro_boosts") { }
|
||||
|
||||
class spell_item_nitro_boots_SpellScript : public SpellScript
|
||||
class spell_item_nitro_boosts_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_item_nitro_boots_SpellScript);
|
||||
PrepareSpellScript(spell_item_nitro_boosts_SpellScript);
|
||||
|
||||
bool Load() override
|
||||
{
|
||||
@@ -3327,25 +3327,28 @@ class spell_item_nitro_boots : public SpellScriptLoader
|
||||
|
||||
bool Validate(SpellInfo const* /*spell*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_NITRO_BOOTS_SUCCESS, SPELL_NITRO_BOOTS_BACKFIRE });
|
||||
return ValidateSpellInfo({ SPELL_NITRO_BOOSTS_SUCCESS, SPELL_NITRO_BOOSTS_BACKFIRE });
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
bool success = caster->GetMap()->IsDungeon() || roll_chance_i(95);
|
||||
caster->CastSpell(caster, success ? SPELL_NITRO_BOOTS_SUCCESS : SPELL_NITRO_BOOTS_BACKFIRE, true, GetCastItem());
|
||||
AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(caster->GetAreaId());
|
||||
bool success = true;
|
||||
if (areaEntry && areaEntry->IsFlyable() && !caster->GetMap()->IsDungeon())
|
||||
success = roll_chance_i(95); // nitro boosts can only fail in flying-enabled locations on 3.3.5
|
||||
caster->CastSpell(caster, success ? SPELL_NITRO_BOOSTS_SUCCESS : SPELL_NITRO_BOOSTS_BACKFIRE, true, GetCastItem());
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_item_nitro_boots_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_item_nitro_boosts_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_item_nitro_boots_SpellScript();
|
||||
return new spell_item_nitro_boosts_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4924,7 +4927,7 @@ void AddSC_item_spell_scripts()
|
||||
new spell_item_complete_raptor_capture();
|
||||
new spell_item_impale_leviroth();
|
||||
new spell_item_brewfest_mount_transformation();
|
||||
new spell_item_nitro_boots();
|
||||
new spell_item_nitro_boosts();
|
||||
RegisterSpellScript(spell_item_teach_language);
|
||||
new spell_item_rocket_boots();
|
||||
new spell_item_pygmy_oil();
|
||||
|
||||
Reference in New Issue
Block a user