*Implement spell aura 177.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-06-07 23:32:35 -05:00
parent 5e7d184734
commit a328728cb8
7 changed files with 31 additions and 15 deletions
+1 -3
View File
@@ -7472,9 +7472,7 @@ bool ChatHandler::HandleUnPossessCommand(const char* args)
Unit* pUnit = getSelectedUnit(); Unit* pUnit = getSelectedUnit();
if(!pUnit) pUnit = m_session->GetPlayer(); if(!pUnit) pUnit = m_session->GetPlayer();
pUnit->RemoveAurasByType(SPELL_AURA_MOD_CHARM); pUnit->RemoveCharmAuras();
pUnit->RemoveAurasByType(SPELL_AURA_MOD_POSSESS_PET);
pUnit->RemoveAurasByType(SPELL_AURA_MOD_POSSESS);
return true; return true;
} }
+1 -5
View File
@@ -16729,11 +16729,7 @@ void Player::StopCastingCharm()
ExitVehicle(); ExitVehicle();
} }
if(GetCharmGUID()) if(GetCharmGUID())
{ charm->RemoveCharmAuras();
charm->RemoveAurasByType(SPELL_AURA_MOD_CHARM);
charm->RemoveAurasByType(SPELL_AURA_MOD_POSSESS_PET);
charm->RemoveAurasByType(SPELL_AURA_MOD_POSSESS);
}
if(GetCharmGUID()) if(GetCharmGUID())
{ {
+22 -7
View File
@@ -229,7 +229,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
&AuraEffect::HandleModSpellDamagePercentFromStat, //174 SPELL_AURA_MOD_SPELL_DAMAGE_OF_STAT_PERCENT implemented in Unit::SpellBaseDamageBonus &AuraEffect::HandleModSpellDamagePercentFromStat, //174 SPELL_AURA_MOD_SPELL_DAMAGE_OF_STAT_PERCENT implemented in Unit::SpellBaseDamageBonus
&AuraEffect::HandleModSpellHealingPercentFromStat, //175 SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT implemented in Unit::SpellBaseHealingBonus &AuraEffect::HandleModSpellHealingPercentFromStat, //175 SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT implemented in Unit::SpellBaseHealingBonus
&AuraEffect::HandleSpiritOfRedemption, //176 SPELL_AURA_SPIRIT_OF_REDEMPTION only for Spirit of Redemption spell, die at aura end &AuraEffect::HandleSpiritOfRedemption, //176 SPELL_AURA_SPIRIT_OF_REDEMPTION only for Spirit of Redemption spell, die at aura end
&AuraEffect::HandleNULL, //177 SPELL_AURA_AOE_CHARM &AuraEffect::HandleCharmConvert, //177 SPELL_AURA_AOE_CHARM
&AuraEffect::HandleNoImmediateEffect, //178 SPELL_AURA_MOD_DEBUFF_RESISTANCE implemented in Unit::MagicSpellHitResult &AuraEffect::HandleNoImmediateEffect, //178 SPELL_AURA_MOD_DEBUFF_RESISTANCE implemented in Unit::MagicSpellHitResult
&AuraEffect::HandleNoImmediateEffect, //179 SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE implemented in Unit::SpellCriticalBonus &AuraEffect::HandleNoImmediateEffect, //179 SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE implemented in Unit::SpellCriticalBonus
&AuraEffect::HandleNoImmediateEffect, //180 SPELL_AURA_MOD_FLAT_SPELL_DAMAGE_VERSUS implemented in Unit::SpellDamageBonus &AuraEffect::HandleNoImmediateEffect, //180 SPELL_AURA_MOD_FLAT_SPELL_DAMAGE_VERSUS implemented in Unit::SpellDamageBonus
@@ -1794,19 +1794,16 @@ void AuraEffect::TriggerSpell()
// case 27747: break; // case 27747: break;
// Frost Blast // Frost Blast
case 27808: case 27808:
caster->CastCustomSpell(29879, SPELLVALUE_BASE_POINT0, target->GetMaxHealth()*0.26f, m_target, true, NULL, this); caster->CastCustomSpell(29879, SPELLVALUE_BASE_POINT0, (float)m_target->GetMaxHealth()*0.26f, m_target, true, NULL, this);
return; return;
// Detonate Mana // Detonate Mana
case 27819: case 27819:
{ if(int32 mana = (int32)(m_target->GetMaxPower(POWER_MANA) / 4))
int32 mana = (uint32)m_target->GetMaxPower(POWER_MANA)*0.25f;
if(mana)
{ {
mana = m_target->ModifyPower(POWER_MANA, -mana); mana = m_target->ModifyPower(POWER_MANA, -mana);
m_target->CastCustomSpell(27820, SPELLVALUE_BASE_POINT0, -mana*4, NULL, true, NULL, this, caster->GetGUID()); m_target->CastCustomSpell(27820, SPELLVALUE_BASE_POINT0, -mana*4, NULL, true, NULL, this, caster->GetGUID());
} }
return; return;
}
// // Controller Timer // // Controller Timer
// case 28095: break; // case 28095: break;
// // Stalagg Chain // // Stalagg Chain
@@ -7067,7 +7064,7 @@ void AuraEffect::HandleModCharm(bool apply, bool Real, bool /*changeAmount*/)
if(apply) if(apply)
{ {
if(int32(m_target->getLevel()) > m_amount) if(m_amount && int32(m_target->getLevel()) > m_amount)
return; return;
m_target->SetCharmedBy(caster, CHARM_TYPE_CHARM); m_target->SetCharmedBy(caster, CHARM_TYPE_CHARM);
@@ -7076,6 +7073,24 @@ void AuraEffect::HandleModCharm(bool apply, bool Real, bool /*changeAmount*/)
m_target->RemoveCharmedBy(caster); m_target->RemoveCharmedBy(caster);
} }
void AuraEffect::HandleCharmConvert(bool apply, bool Real, bool /*changeAmount*/)
{
if(!Real)
return;
Unit* caster = GetCaster();
if(apply)
{
if(m_amount && int32(m_target->getLevel()) > m_amount)
return;
m_target->SetCharmedBy(caster, CHARM_TYPE_CONVERT);
}
else
m_target->RemoveCharmedBy(caster);
}
void AuraEffect::HandlePhase(bool apply, bool Real, bool /*changeAmount*/) void AuraEffect::HandlePhase(bool apply, bool Real, bool /*changeAmount*/)
{ {
if(!Real) if(!Real)
+1
View File
@@ -330,6 +330,7 @@ class TRINITY_DLL_SPEC AuraEffect
void HandleNoReagentUseAura(bool Apply, bool Real, bool changeAmount); void HandleNoReagentUseAura(bool Apply, bool Real, bool changeAmount);
void HandlePhase(bool Apply, bool Real, bool changeAmount); void HandlePhase(bool Apply, bool Real, bool changeAmount);
void HandleAuraAllowOnlyAbility(bool apply, bool Real, bool changeAmount); void HandleAuraAllowOnlyAbility(bool apply, bool Real, bool changeAmount);
void HandleCharmConvert(bool apply, bool Real, bool changeAmount);
// add/remove SPELL_AURA_MOD_SHAPESHIFT (36) linked auras // add/remove SPELL_AURA_MOD_SHAPESHIFT (36) linked auras
void HandleShapeshiftBoosts(bool apply); void HandleShapeshiftBoosts(bool apply);
+2
View File
@@ -477,6 +477,7 @@ SpellSpecific GetSpellSpecific(uint32 spellId)
case SPELL_AURA_MOD_CHARM: case SPELL_AURA_MOD_CHARM:
case SPELL_AURA_MOD_POSSESS_PET: case SPELL_AURA_MOD_POSSESS_PET:
case SPELL_AURA_MOD_POSSESS: case SPELL_AURA_MOD_POSSESS:
case SPELL_AURA_AOE_CHARM:
return SPELL_CHARM; return SPELL_CHARM;
case SPELL_AURA_TRACK_CREATURES: case SPELL_AURA_TRACK_CREATURES:
case SPELL_AURA_TRACK_RESOURCES: case SPELL_AURA_TRACK_RESOURCES:
@@ -3310,6 +3311,7 @@ void SpellMgr::LoadSpellCustomAttr()
case SPELL_AURA_MOD_POSSESS: case SPELL_AURA_MOD_POSSESS:
case SPELL_AURA_MOD_CONFUSE: case SPELL_AURA_MOD_CONFUSE:
case SPELL_AURA_MOD_CHARM: case SPELL_AURA_MOD_CHARM:
case SPELL_AURA_AOE_CHARM:
case SPELL_AURA_MOD_FEAR: case SPELL_AURA_MOD_FEAR:
case SPELL_AURA_MOD_STUN: case SPELL_AURA_MOD_STUN:
mSpellCustomAttr[i] |= SPELL_ATTR_CU_AURA_CC; mSpellCustomAttr[i] |= SPELL_ATTR_CU_AURA_CC;
+3
View File
@@ -8711,6 +8711,7 @@ void Unit::RemoveCharmAuras()
RemoveAurasByType(SPELL_AURA_MOD_CHARM); RemoveAurasByType(SPELL_AURA_MOD_CHARM);
RemoveAurasByType(SPELL_AURA_MOD_POSSESS_PET); RemoveAurasByType(SPELL_AURA_MOD_POSSESS_PET);
RemoveAurasByType(SPELL_AURA_MOD_POSSESS); RemoveAurasByType(SPELL_AURA_MOD_POSSESS);
RemoveAurasByType(SPELL_AURA_AOE_CHARM);
} }
void Unit::UnsummonAllTotems() void Unit::UnsummonAllTotems()
@@ -13673,6 +13674,7 @@ void Unit::SetCharmedBy(Unit* charmer, CharmType type)
((Player*)charmer)->CharmSpellInitialize(); ((Player*)charmer)->CharmSpellInitialize();
break; break;
default: default:
case CHARM_TYPE_CONVERT:
break; break;
} }
} }
@@ -13762,6 +13764,7 @@ void Unit::RemoveCharmedBy(Unit *charmer)
} }
break; break;
default: default:
case CHARM_TYPE_CONVERT:
break; break;
} }
} }
+1
View File
@@ -890,6 +890,7 @@ enum CharmType
CHARM_TYPE_CHARM, CHARM_TYPE_CHARM,
CHARM_TYPE_POSSESS, CHARM_TYPE_POSSESS,
CHARM_TYPE_VEHICLE, CHARM_TYPE_VEHICLE,
CHARM_TYPE_CONVERT,
}; };
enum ActionBarIndex enum ActionBarIndex