*Implement spell aura 177.
--HG-- branch : trunk
This commit is contained in:
+1
-3
@@ -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
@@ -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
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user