Scripts/Item: Fix Nitro Boosts to only fail in flyable areas. Also, it's called nitro _boosts_. Not _boots_. Nitro _boosts_.

This commit is contained in:
Aokromes
2017-07-18 14:19:41 +02:00
parent a8ffd57b23
commit 8a2526cd94
3 changed files with 19 additions and 14 deletions

View File

@@ -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";

View File

@@ -316,7 +316,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

View File

@@ -3329,20 +3329,20 @@ class spell_item_brewfest_mount_transformation : public SpellScriptLoader
}
};
enum NitroBoots
enum NitroBoosts
{
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
{
@@ -3353,7 +3353,7 @@ class spell_item_nitro_boots : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
if (!sSpellMgr->GetSpellInfo(SPELL_NITRO_BOOTS_SUCCESS) || !sSpellMgr->GetSpellInfo(SPELL_NITRO_BOOTS_BACKFIRE))
if (!sSpellMgr->GetSpellInfo(SPELL_NITRO_BOOSTS_SUCCESS) || !sSpellMgr->GetSpellInfo(SPELL_NITRO_BOOSTS_BACKFIRE ))
return false;
return true;
}
@@ -3361,19 +3361,22 @@ class spell_item_nitro_boots : public SpellScriptLoader
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 4.3.4
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();
}
};
@@ -4704,7 +4707,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();
new spell_item_teach_language();
new spell_item_rocket_boots();
new spell_item_pygmy_oil();