Fix Gnomish Ray Shrink.

- Not all possible side-effects implemented
This commit is contained in:
H0zen 2016-02-08 03:13:48 +02:00
parent 3cc509f558
commit 0fd23fb680
2 changed files with 40 additions and 0 deletions

View File

@ -676,6 +676,16 @@ bool IsExplicitNegativeTarget(uint32 targetA)
bool IsPositiveEffect(SpellEntry const* spellproto, SpellEffectIndex effIndex)
{
//fast returns in some special cases
switch (spellproto->Id)
{
case 13003:
case 13010:
return false;
default:
break;
}
switch (spellproto->Effect[effIndex])
{
case SPELL_EFFECT_DUMMY:

View File

@ -508,6 +508,36 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx)
m_caster->CastSpell(unitTarget, spell_id, true, NULL);
return;
}
case 13006: // Gnomish Shrink Ray
{
if (!unitTarget)
{ return; }
uint32 roll = urand(0,99);
uint32 inner_roll = urand(1,3);
if (roll < 5) // 5% negative backfire
{
switch (inner_roll)
{
case 1:
m_caster->CastSpell(m_caster, 13003, true, m_CastItem); // -250 AP + shrink caster
break;
case 2:
m_caster->CastSpell(m_caster, 13010, true, m_CastItem); // -250AP + shrink all caster's party
break;
default:
unitTarget->CastSpell(unitTarget, 13004, true, NULL); // +250AP + grow victim
break;
}
}
else if (roll < 25) // 20% positive backfire
{ m_caster->CastSpell(m_caster, 13004, true, m_CastItem); } // +250AP + grow caster's party
else
{ m_caster->CastSpell(unitTarget, 13003, true, m_CastItem); } // -250AP + shrink victim
return;
}
case 13180: // Gnomish mind control cap
{
if (!unitTarget)