[9409] Use SpellEffectIndex as arg type for spell effect handlers.

This commit is contained in:
VladimirMangos 2010-02-19 01:05:05 +03:00
parent ff8d494ed4
commit 11b84d27c2
4 changed files with 358 additions and 357 deletions

View file

@ -1163,7 +1163,7 @@ void Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask)
{ {
if (effectMask & (1 << effectNumber)) if (effectMask & (1 << effectNumber))
{ {
HandleEffects(unit, NULL, NULL, effectNumber, m_damageMultipliers[effectNumber]); HandleEffects(unit, NULL, NULL, SpellEffectIndex(effectNumber), m_damageMultipliers[effectNumber]);
if ( m_applyMultiplierMask & (1 << effectNumber) ) if ( m_applyMultiplierMask & (1 << effectNumber) )
{ {
// Get multiplier // Get multiplier
@ -1194,7 +1194,7 @@ void Spell::DoAllEffectOnTarget(GOTargetInfo *target)
for(int effectNumber = 0; effectNumber < MAX_EFFECT_INDEX; ++effectNumber) for(int effectNumber = 0; effectNumber < MAX_EFFECT_INDEX; ++effectNumber)
if (effectMask & (1 << effectNumber)) if (effectMask & (1 << effectNumber))
HandleEffects(NULL, NULL, go, effectNumber); HandleEffects(NULL, NULL, go, SpellEffectIndex(effectNumber));
// cast at creature (or GO) quest objectives update at successful cast finished (+channel finished) // cast at creature (or GO) quest objectives update at successful cast finished (+channel finished)
// ignore autorepeat/melee casts for speed (not exist quest for spells (hm... ) // ignore autorepeat/melee casts for speed (not exist quest for spells (hm... )
@ -1213,7 +1213,7 @@ void Spell::DoAllEffectOnTarget(ItemTargetInfo *target)
for(int effectNumber = 0; effectNumber < MAX_EFFECT_INDEX; ++effectNumber) for(int effectNumber = 0; effectNumber < MAX_EFFECT_INDEX; ++effectNumber)
if (effectMask & (1 << effectNumber)) if (effectMask & (1 << effectNumber))
HandleEffects(NULL, target->item, NULL, effectNumber); HandleEffects(NULL, target->item, NULL, SpellEffectIndex(effectNumber));
} }
bool Spell::IsAliveUnitPresentInTargetList() bool Spell::IsAliveUnitPresentInTargetList()
@ -2820,7 +2820,7 @@ void Spell::_handle_immediate_phase()
// apply Send Event effect to ground in case empty target lists // apply Send Event effect to ground in case empty target lists
if( m_spellInfo->Effect[j] == SPELL_EFFECT_SEND_EVENT && !HaveTargetsForEffect(j) ) if( m_spellInfo->Effect[j] == SPELL_EFFECT_SEND_EVENT && !HaveTargetsForEffect(j) )
{ {
HandleEffects(NULL, NULL, NULL, j); HandleEffects(NULL, NULL, NULL, SpellEffectIndex(j));
continue; continue;
} }
@ -2853,7 +2853,7 @@ void Spell::_handle_immediate_phase()
{ {
// persistent area auras target only the ground // persistent area auras target only the ground
if(m_spellInfo->Effect[j] == SPELL_EFFECT_PERSISTENT_AREA_AURA) if(m_spellInfo->Effect[j] == SPELL_EFFECT_PERSISTENT_AREA_AURA)
HandleEffects(NULL, NULL, NULL, j); HandleEffects(NULL, NULL, NULL, SpellEffectIndex(j));
} }
} }
@ -3895,7 +3895,7 @@ void Spell::HandleThreatSpells(uint32 spellId)
DEBUG_LOG("Spell %u, rank %u, added an additional %i threat", spellId, sSpellMgr.GetSpellRank(spellId), threat); DEBUG_LOG("Spell %u, rank %u, added an additional %i threat", spellId, sSpellMgr.GetSpellRank(spellId), threat);
} }
void Spell::HandleEffects(Unit *pUnitTarget,Item *pItemTarget,GameObject *pGOTarget,uint32 i, float DamageMultiplier) void Spell::HandleEffects(Unit *pUnitTarget,Item *pItemTarget,GameObject *pGOTarget,SpellEffectIndex i, float DamageMultiplier)
{ {
unitTarget = pUnitTarget; unitTarget = pUnitTarget;
itemTarget = pItemTarget; itemTarget = pItemTarget;

View file

@ -216,120 +216,115 @@ class Spell
friend void Unit::SetCurrentCastedSpell( Spell * pSpell ); friend void Unit::SetCurrentCastedSpell( Spell * pSpell );
public: public:
void EffectNULL(uint32 ); void EffectNULL(SpellEffectIndex eff_idx);
void EffectUnused(uint32 ); void EffectUnused(SpellEffectIndex eff_idx);
void EffectDistract(uint32 i); void EffectDistract(SpellEffectIndex eff_idx);
void EffectPull(uint32 i); void EffectPull(SpellEffectIndex eff_idx);
void EffectSchoolDMG(uint32 i); void EffectSchoolDMG(SpellEffectIndex eff_idx);
void EffectEnvironmentalDMG(uint32 i); void EffectEnvironmentalDMG(SpellEffectIndex eff_idx);
void EffectInstaKill(uint32 i); void EffectInstaKill(SpellEffectIndex eff_idx);
void EffectDummy(uint32 i); void EffectDummy(SpellEffectIndex eff_idx);
void EffectTeleportUnits(uint32 i); void EffectTeleportUnits(SpellEffectIndex eff_idx);
void EffectApplyAura(uint32 i); void EffectApplyAura(SpellEffectIndex eff_idx);
void EffectSendEvent(uint32 i); void EffectSendEvent(SpellEffectIndex eff_idx);
void EffectPowerBurn(uint32 i); void EffectPowerBurn(SpellEffectIndex eff_idx);
void EffectPowerDrain(uint32 i); void EffectPowerDrain(SpellEffectIndex eff_idx);
void EffectHeal(uint32 i); void EffectHeal(SpellEffectIndex eff_idx);
void EffectHealthLeech(uint32 i); void EffectHealthLeech(SpellEffectIndex eff_idx);
void EffectQuestComplete(uint32 i); void EffectQuestComplete(SpellEffectIndex eff_idx);
void EffectCreateItem(uint32 i); void EffectCreateItem(SpellEffectIndex eff_idx);
void EffectCreateItem2(uint32 i); void EffectCreateItem2(SpellEffectIndex eff_idx);
void EffectCreateRandomItem(uint32 i); void EffectCreateRandomItem(SpellEffectIndex eff_idx);
void EffectPersistentAA(uint32 i); void EffectPersistentAA(SpellEffectIndex eff_idx);
void EffectEnergize(uint32 i); void EffectEnergize(SpellEffectIndex eff_idx);
void EffectOpenLock(uint32 i); void EffectOpenLock(SpellEffectIndex eff_idx);
void EffectSummonChangeItem(uint32 i); void EffectSummonChangeItem(SpellEffectIndex eff_idx);
void EffectProficiency(uint32 i); void EffectProficiency(SpellEffectIndex eff_idx);
void EffectApplyAreaAura(uint32 i); void EffectApplyAreaAura(SpellEffectIndex eff_idx);
void EffectSummonType(uint32 i); void EffectSummonType(SpellEffectIndex eff_idx);
void EffectSummon(uint32 i); void EffectLearnSpell(SpellEffectIndex eff_idx);
void EffectLearnSpell(uint32 i); void EffectDispel(SpellEffectIndex eff_idx);
void EffectDispel(uint32 i); void EffectDualWield(SpellEffectIndex eff_idx);
void EffectDualWield(uint32 i); void EffectPickPocket(SpellEffectIndex eff_idx);
void EffectPickPocket(uint32 i); void EffectAddFarsight(SpellEffectIndex eff_idx);
void EffectAddFarsight(uint32 i); void EffectHealMechanical(SpellEffectIndex eff_idx);
void EffectSummonWild(uint32 i, uint32 forceFaction = 0); void EffectJump(SpellEffectIndex eff_idx);
void EffectSummonGuardian(uint32 i, uint32 forceFaction = 0); void EffectTeleUnitsFaceCaster(SpellEffectIndex eff_idx);
void EffectHealMechanical(uint32 i); void EffectLearnSkill(SpellEffectIndex eff_idx);
void EffectJump(uint32 i); void EffectAddHonor(SpellEffectIndex eff_idx);
void EffectTeleUnitsFaceCaster(uint32 i); void EffectTradeSkill(SpellEffectIndex eff_idx);
void EffectLearnSkill(uint32 i); void EffectEnchantItemPerm(SpellEffectIndex eff_idx);
void EffectAddHonor(uint32 i); void EffectEnchantItemTmp(SpellEffectIndex eff_idx);
void EffectTradeSkill(uint32 i); void EffectTameCreature(SpellEffectIndex eff_idx);
void EffectEnchantItemPerm(uint32 i); void EffectSummonPet(SpellEffectIndex eff_idx);
void EffectEnchantItemTmp(uint32 i); void EffectLearnPetSpell(SpellEffectIndex eff_idx);
void EffectTameCreature(uint32 i); void EffectWeaponDmg(SpellEffectIndex eff_idx);
void EffectSummonPet(uint32 i); void EffectForceCast(SpellEffectIndex eff_idx);
void EffectLearnPetSpell(uint32 i); void EffectTriggerSpell(SpellEffectIndex eff_idx);
void EffectWeaponDmg(uint32 i); void EffectTriggerMissileSpell(SpellEffectIndex eff_idx);
void EffectForceCast(uint32 i); void EffectThreat(SpellEffectIndex eff_idx);
void EffectTriggerSpell(uint32 i); void EffectHealMaxHealth(SpellEffectIndex eff_idx);
void EffectTriggerMissileSpell(uint32 i); void EffectInterruptCast(SpellEffectIndex eff_idx);
void EffectThreat(uint32 i); void EffectSummonObjectWild(SpellEffectIndex eff_idx);
void EffectHealMaxHealth(uint32 i); void EffectScriptEffect(SpellEffectIndex eff_idx);
void EffectInterruptCast(uint32 i); void EffectSanctuary(SpellEffectIndex eff_idx);
void EffectSummonObjectWild(uint32 i); void EffectAddComboPoints(SpellEffectIndex eff_idx);
void EffectScriptEffect(uint32 i); void EffectDuel(SpellEffectIndex eff_idx);
void EffectSanctuary(uint32 i); void EffectStuck(SpellEffectIndex eff_idx);
void EffectAddComboPoints(uint32 i); void EffectSummonPlayer(SpellEffectIndex eff_idx);
void EffectDuel(uint32 i); void EffectActivateObject(SpellEffectIndex eff_idx);
void EffectStuck(uint32 i); void EffectApplyGlyph(SpellEffectIndex eff_idx);
void EffectSummonPlayer(uint32 i); void EffectEnchantHeldItem(SpellEffectIndex eff_idx);
void EffectActivateObject(uint32 i); void EffectSummonObject(SpellEffectIndex eff_idx);
void EffectApplyGlyph(uint32 i); void EffectResurrect(SpellEffectIndex eff_idx);
void EffectSummonTotem(uint32 i, uint8 slot = 0); void EffectParry(SpellEffectIndex eff_idx);
void EffectEnchantHeldItem(uint32 i); void EffectBlock(SpellEffectIndex eff_idx);
void EffectSummonObject(uint32 i); void EffectLeapForward(SpellEffectIndex eff_idx);
void EffectResurrect(uint32 i); void EffectLeapBack(SpellEffectIndex eff_idx);
void EffectParry(uint32 i); void EffectTransmitted(SpellEffectIndex eff_idx);
void EffectBlock(uint32 i); void EffectDisEnchant(SpellEffectIndex eff_idx);
void EffectLeapForward(uint32 i); void EffectInebriate(SpellEffectIndex eff_idx);
void EffectLeapBack(uint32 i); void EffectFeedPet(SpellEffectIndex eff_idx);
void EffectTransmitted(uint32 i); void EffectDismissPet(SpellEffectIndex eff_idx);
void EffectDisEnchant(uint32 i); void EffectReputation(SpellEffectIndex eff_idx);
void EffectInebriate(uint32 i); void EffectSelfResurrect(SpellEffectIndex eff_idx);
void EffectFeedPet(uint32 i); void EffectSkinning(SpellEffectIndex eff_idx);
void EffectDismissPet(uint32 i); void EffectCharge(SpellEffectIndex eff_idx);
void EffectReputation(uint32 i); void EffectCharge2(SpellEffectIndex eff_idx);
void EffectSelfResurrect(uint32 i); void EffectProspecting(SpellEffectIndex eff_idx);
void EffectSkinning(uint32 i); void EffectMilling(SpellEffectIndex eff_idx);
void EffectCharge(uint32 i); void EffectRenamePet(SpellEffectIndex eff_idx);
void EffectCharge2(uint32 i); void EffectSendTaxi(SpellEffectIndex eff_idx);
void EffectProspecting(uint32 i); void EffectKnockBack(SpellEffectIndex eff_idx);
void EffectMilling(uint32 i); void EffectPlayerPull(SpellEffectIndex eff_idx);
void EffectRenamePet(uint32 i); void EffectDispelMechanic(SpellEffectIndex eff_idx);
void EffectSendTaxi(uint32 i); void EffectSummonDeadPet(SpellEffectIndex eff_idx);
void EffectSummonCritter(uint32 i, uint32 forceFaction = 0); void EffectSummonAllTotems(SpellEffectIndex eff_idx);
void EffectKnockBack(uint32 i); void EffectDestroyAllTotems(SpellEffectIndex eff_idx);
void EffectPlayerPull(uint32 i); void EffectDurabilityDamage(SpellEffectIndex eff_idx);
void EffectDispelMechanic(uint32 i); void EffectSkill(SpellEffectIndex eff_idx);
void EffectSummonDeadPet(uint32 i); void EffectTaunt(SpellEffectIndex eff_idx);
void EffectSummonAllTotems(uint32 i); void EffectDurabilityDamagePCT(SpellEffectIndex eff_idx);
void EffectDestroyAllTotems(uint32 i); void EffectModifyThreatPercent(SpellEffectIndex eff_idx);
void EffectDurabilityDamage(uint32 i); void EffectResurrectNew(SpellEffectIndex eff_idx);
void EffectSkill(uint32 i); void EffectAddExtraAttacks(SpellEffectIndex eff_idx);
void EffectTaunt(uint32 i); void EffectSpiritHeal(SpellEffectIndex eff_idx);
void EffectDurabilityDamagePCT(uint32 i); void EffectSkinPlayerCorpse(SpellEffectIndex eff_idx);
void EffectModifyThreatPercent(uint32 i); void EffectStealBeneficialBuff(SpellEffectIndex eff_idx);
void EffectResurrectNew(uint32 i); void EffectUnlearnSpecialization(SpellEffectIndex eff_idx);
void EffectAddExtraAttacks(uint32 i); void EffectHealPct(SpellEffectIndex eff_idx);
void EffectSpiritHeal(uint32 i); void EffectEnergisePct(SpellEffectIndex eff_idx);
void EffectSkinPlayerCorpse(uint32 i); void EffectTriggerSpellWithValue(SpellEffectIndex eff_idx);
void EffectStealBeneficialBuff(uint32 i); void EffectTriggerRitualOfSummoning(SpellEffectIndex eff_idx);
void EffectUnlearnSpecialization(uint32 i); void EffectKillCreditPersonal(SpellEffectIndex eff_idx);
void EffectHealPct(uint32 i); void EffectKillCredit(SpellEffectIndex eff_idx);
void EffectEnergisePct(uint32 i); void EffectQuestFail(SpellEffectIndex eff_idx);
void EffectTriggerSpellWithValue(uint32 i); void EffectActivateRune(SpellEffectIndex eff_idx);
void EffectTriggerRitualOfSummoning(uint32 i); void EffectTitanGrip(SpellEffectIndex eff_idx);
void EffectKillCreditPersonal(uint32 i); void EffectEnchantItemPrismatic(SpellEffectIndex eff_idx);
void EffectKillCredit(uint32 i); void EffectPlayMusic(SpellEffectIndex eff_idx);
void EffectQuestFail(uint32 i); void EffectSpecCount(SpellEffectIndex eff_idx);
void EffectActivateRune(uint32 i); void EffectActivateSpec(SpellEffectIndex eff_idx);
void EffectTitanGrip(uint32 i);
void EffectEnchantItemPrismatic(uint32 i);
void EffectPlayMusic(uint32 i);
void EffectSpecCount(uint32 i);
void EffectActivateSpec(uint32 i);
Spell( Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID = 0, Spell** triggeringContainer = NULL ); Spell( Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID = 0, Spell** triggeringContainer = NULL );
~Spell(); ~Spell();
@ -368,7 +363,13 @@ class Spell
uint32 getState() const { return m_spellState; } uint32 getState() const { return m_spellState; }
void setState(uint32 state) { m_spellState = state; } void setState(uint32 state) { m_spellState = state; }
void DoCreateItem(uint32 i, uint32 itemtype); void DoCreateItem(SpellEffectIndex eff_idx, uint32 itemtype);
void DoSummon(SpellEffectIndex eff_idx);
void DoSummonWild(SpellEffectIndex eff_idx, uint32 forceFaction = 0);
void DoSummonGuardian(SpellEffectIndex eff_idx, uint32 forceFaction = 0);
void DoSummonTotem(SpellEffectIndex eff_idx, uint8 slot = 0);
void DoSummonCritter(SpellEffectIndex eff_idx, uint32 forceFaction = 0);
void WriteSpellGoTargets( WorldPacket * data ); void WriteSpellGoTargets( WorldPacket * data );
void WriteAmmoToPacket( WorldPacket * data ); void WriteAmmoToPacket( WorldPacket * data );
@ -398,7 +399,7 @@ class Spell
void SendResurrectRequest(Player* target); void SendResurrectRequest(Player* target);
void SendPlaySpellVisual(uint32 SpellID); void SendPlaySpellVisual(uint32 SpellID);
void HandleEffects(Unit *pUnitTarget,Item *pItemTarget,GameObject *pGOTarget,uint32 i, float DamageMultiplier = 1.0); void HandleEffects(Unit *pUnitTarget,Item *pItemTarget,GameObject *pGOTarget,SpellEffectIndex i, float DamageMultiplier = 1.0);
void HandleThreatSpells(uint32 spellId); void HandleThreatSpells(uint32 spellId);
//void HandleAddAura(Unit* Target); //void HandleAddAura(Unit* Target);
@ -769,7 +770,7 @@ namespace MaNGOS
#endif #endif
} }
typedef void(Spell::*pEffect)(uint32 i); typedef void(Spell::*pEffect)(SpellEffectIndex eff_idx);
class SpellEvent : public BasicEvent class SpellEvent : public BasicEvent
{ {

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "9408" #define REVISION_NR "9409"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__