mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 13:37:00 +00:00
[c12584] Implement spells 68987 and 69012
This commit is contained in:
parent
cda8f44cad
commit
e8006b50e3
4 changed files with 81 additions and 32 deletions
|
|
@ -7931,8 +7931,9 @@ void Spell::GetSpellRangeAndRadius(SpellEffectEntry const* spellEffect, float& r
|
|||
case 67296: // Touch of Light (Mode 1)
|
||||
case 67297: // Touch of Light (Mode 2)
|
||||
case 67298: // Touch of Light (Mode 3)
|
||||
case 68950: // Fear (FoS)
|
||||
case 68912: // Wailing Souls (FoS)
|
||||
case 68950: // Fear (FoS)
|
||||
case 68987: // Pursuit (PoS)
|
||||
case 69048: // Mirrored Soul (FoS)
|
||||
case 69057: // Bone Spike Graveyard (Icecrown Citadel, Lord Marrowgar) 10 man
|
||||
case 72088:
|
||||
|
|
|
|||
|
|
@ -1804,6 +1804,20 @@ void Aura::TriggerSpell()
|
|||
// case 65422: break;
|
||||
// // Rolling Throw
|
||||
// case 67546: break;
|
||||
case 69012: // Explosive Barrage
|
||||
{
|
||||
// Summon an Exploding Orb for each player in combat with the caster
|
||||
ThreatList const& threatList = target->getThreatManager().getThreatList();
|
||||
for (ThreatList::const_iterator itr = threatList.begin(); itr != threatList.end(); ++itr)
|
||||
{
|
||||
if (Unit* expectedTarget = target->GetMap()->GetUnit((*itr)->getUnitGuid()))
|
||||
{
|
||||
if (expectedTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
target->CastSpell(expectedTarget, 69015, true);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
// // Gunship Cannon Fire
|
||||
// case 70017: break;
|
||||
// // Ice Tomb
|
||||
|
|
@ -3116,6 +3130,19 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
|
|||
target->PlayDirectSound(14972, (Player*)target);
|
||||
}
|
||||
return;
|
||||
case 68987: // Pursuit
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (!caster || target->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
if (apply)
|
||||
caster->FixateTarget(target);
|
||||
else if (target->GetObjectGuid() == caster->GetFixateTargetGuid())
|
||||
caster->FixateTarget(NULL);
|
||||
|
||||
return;
|
||||
}
|
||||
case 27978:
|
||||
case 40131:
|
||||
if (apply)
|
||||
|
|
|
|||
|
|
@ -122,7 +122,8 @@ enum SpellModOp
|
|||
// spellmod 25 unused
|
||||
SPELLMOD_FREQUENCY_OF_SUCCESS = 26, // Only used with SPELL_AURA_ADD_PCT_MODIFIER and affects used on proc spells
|
||||
SPELLMOD_MULTIPLE_VALUE = 27,
|
||||
SPELLMOD_RESIST_DISPEL_CHANCE = 28
|
||||
SPELLMOD_RESIST_DISPEL_CHANCE = 28,
|
||||
SPELLMOD_SPELL_COST_REFUND_ON_FAIL = 30,
|
||||
};
|
||||
|
||||
#define MAX_SPELLMOD 32
|
||||
|
|
@ -178,7 +179,7 @@ enum UnitBytes1_Flags
|
|||
UNIT_BYTE1_FLAG_ALL = 0xFF
|
||||
};
|
||||
|
||||
// byte value (UNIT_FIELD_BYTES_2,0)
|
||||
// byte value (UNIT_FIELD_BYTES_2,0) // TODO - solve conflicting with SharedDefines.h enum SheathTypes
|
||||
enum SheathState
|
||||
{
|
||||
SHEATH_STATE_UNARMED = 0, // non prepared weapon
|
||||
|
|
@ -210,7 +211,7 @@ enum UnitRename
|
|||
|
||||
// byte flags value (UNIT_FIELD_BYTES_2,3) See enum ShapeshiftForm in SharedDefines.h
|
||||
|
||||
#define CREATURE_MAX_SPELLS 4
|
||||
#define CREATURE_MAX_SPELLS 10
|
||||
|
||||
enum Swing
|
||||
{
|
||||
|
|
@ -325,7 +326,7 @@ enum AuraRemoveMode
|
|||
AURA_REMOVE_BY_DELETE, // use for speedup and prevent unexpected effects at player logout/pet unsummon (must be used _only_ after save), delete.
|
||||
AURA_REMOVE_BY_SHIELD_BREAK, // when absorb shield is removed by damage, heal absorb debuf
|
||||
AURA_REMOVE_BY_EXPIRE, // at duration end
|
||||
|
||||
AURA_REMOVE_BY_TRACKING, // aura is removed because of a conflicting tracked aura
|
||||
};
|
||||
|
||||
enum UnitMods
|
||||
|
|
@ -426,7 +427,14 @@ enum UnitState
|
|||
UNIT_STAT_FOLLOW_MOVE = 0x00010000,
|
||||
UNIT_STAT_FLEEING = 0x00020000, // FleeMovementGenerator/TimedFleeingMovementGenerator active/onstack
|
||||
UNIT_STAT_FLEEING_MOVE = 0x00040000,
|
||||
UNIT_STAT_IGNORE_PATHFINDING = 0x00080000, // do not use pathfinding in any MovementGenerator
|
||||
// More room for other MMGens
|
||||
|
||||
// High-Level states (usually only with Creatures)
|
||||
UNIT_STAT_NO_COMBAT_MOVEMENT = 0x01000000, // Combat Movement for MoveChase stopped
|
||||
UNIT_STAT_RUNNING = 0x02000000, // SetRun for waypoints and such
|
||||
UNIT_STAT_WAYPOINT_PAUSED = 0x04000000, // Waypoint-Movement paused genericly (ie by script)
|
||||
|
||||
UNIT_STAT_IGNORE_PATHFINDING = 0x10000000, // do not use pathfinding in any MovementGenerator
|
||||
|
||||
// masks (only for check)
|
||||
|
||||
|
|
@ -457,6 +465,8 @@ enum UnitState
|
|||
// for real move using movegen check and stop (except unstoppable flight)
|
||||
UNIT_STAT_MOVING = UNIT_STAT_ROAMING_MOVE | UNIT_STAT_CHASE_MOVE | UNIT_STAT_FOLLOW_MOVE | UNIT_STAT_FLEEING_MOVE,
|
||||
|
||||
UNIT_STAT_RUNNING_STATE = UNIT_STAT_CHASE_MOVE | UNIT_STAT_FLEEING_MOVE | UNIT_STAT_RUNNING,
|
||||
|
||||
UNIT_STAT_ALL_STATE = 0xFFFFFFFF
|
||||
};
|
||||
|
||||
|
|
@ -522,7 +532,7 @@ enum UnitVisibility
|
|||
VISIBILITY_GROUP_STEALTH = 2, // detect chance, seen and can see group members
|
||||
VISIBILITY_GROUP_INVISIBILITY = 3, // invisibility, can see and can be seen only another invisible unit or invisible detection unit, set only if not stealthed, and in checks not used (mask used instead)
|
||||
VISIBILITY_GROUP_NO_DETECT = 4, // state just at stealth apply for update Grid state. Don't remove, otherwise stealth spells will break
|
||||
VISIBILITY_RESPAWN = 5 // special totally not detectable visibility for force delete object at respawn command
|
||||
VISIBILITY_REMOVE_CORPSE = 5 // special totally not detectable visibility for force delete object while removing a corpse
|
||||
};
|
||||
|
||||
// Value masks for UNIT_FIELD_FLAGS
|
||||
|
|
@ -611,6 +621,7 @@ enum NPCFlags
|
|||
UNIT_NPC_FLAG_STABLEMASTER = 0x00400000, // 100%
|
||||
UNIT_NPC_FLAG_GUILD_BANKER = 0x00800000, // cause client to send 997 opcode
|
||||
UNIT_NPC_FLAG_SPELLCLICK = 0x01000000, // cause client to send 1015 opcode (spell click), dynamic, set at loading and don't must be set in DB
|
||||
UNIT_NPC_FLAG_PLAYER_VEHICLE = 0x02000000, // players with mounts that have vehicle data should have it set
|
||||
};
|
||||
|
||||
// used in most movement packets (send and received), 30 bits in client
|
||||
|
|
@ -1044,6 +1055,7 @@ struct CharmInfo
|
|||
ReactStates GetReactState() { return m_reactState; }
|
||||
bool HasReactState(ReactStates state) { return (m_reactState == state); }
|
||||
|
||||
void InitVehicleCreateSpells();
|
||||
void InitPossessCreateSpells();
|
||||
void InitCharmCreateSpells();
|
||||
void InitPetActionBar();
|
||||
|
|
@ -1113,8 +1125,9 @@ enum IgnoreUnitState
|
|||
#define MAX_CREATURE_ATTACK_RADIUS 45.0f // max distance for creature aggro (use with CONFIG_FLOAT_RATE_CREATURE_AGGRO)
|
||||
|
||||
// Regeneration defines
|
||||
#define REGEN_TIME_FULL 2000 // For this time difference is computed regen value
|
||||
#define REGEN_TIME_FULL 2000 // This determines how often regen value is computed
|
||||
#define REGEN_TIME_PRECISE 500 // Used in Spell::CheckPower for precise regeneration in spell cast time
|
||||
#define REGEN_TIME_HOLY_POWER 10000 // This determines how often holy power regen is processed
|
||||
|
||||
struct SpellProcEventEntry; // used only privately
|
||||
|
||||
|
|
@ -1122,15 +1135,15 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
{
|
||||
public:
|
||||
typedef std::set<Unit*> AttackerSet;
|
||||
typedef std::multimap< uint32, SpellAuraHolder*> SpellAuraHolderMap;
|
||||
typedef std::multimap<uint32 /*spellId*/, SpellAuraHolder*> SpellAuraHolderMap;
|
||||
typedef std::pair<SpellAuraHolderMap::iterator, SpellAuraHolderMap::iterator> SpellAuraHolderBounds;
|
||||
typedef std::pair<SpellAuraHolderMap::const_iterator, SpellAuraHolderMap::const_iterator> SpellAuraHolderConstBounds;
|
||||
typedef std::list<SpellAuraHolder*> SpellAuraHolderList;
|
||||
typedef std::list<Aura*> AuraList;
|
||||
typedef std::list<DiminishingReturn> Diminishing;
|
||||
typedef std::set<uint32> ComboPointHolderSet;
|
||||
typedef std::map<uint8, SpellAuraHolder*> VisibleAuraMap;
|
||||
typedef std::map<SpellEntry const*, ObjectGuid> SingleCastSpellTargetMap;
|
||||
typedef std::set<uint32 /*playerGuidLow*/> ComboPointHolderSet;
|
||||
typedef std::map<uint8 /*slot*/, SpellAuraHolder* /*spellId*/> VisibleAuraMap;
|
||||
typedef std::map<SpellEntry const*, ObjectGuid /*targetGuid*/> TrackedAuraTargetMap;
|
||||
|
||||
virtual ~Unit();
|
||||
|
||||
|
|
@ -1260,6 +1273,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
int32 ModifyPower(Powers power, int32 val);
|
||||
void ApplyPowerMod(Powers power, uint32 val, bool apply);
|
||||
void ApplyMaxPowerMod(Powers power, uint32 val, bool apply);
|
||||
void ResetHolyPowerRegenTimer() { m_holyPowerRegenTimer = REGEN_TIME_HOLY_POWER; }
|
||||
|
||||
static uint32 GetPowerIndexByClass(Powers power, uint32 classId);
|
||||
static Powers GetPowerTypeByIndex(uint32 index, uint32 classId);
|
||||
|
|
@ -1315,7 +1329,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
|
||||
VehicleInfo* GetVehicleInfo() { return m_vehicleInfo; }
|
||||
bool IsVehicle() const { return m_vehicleInfo != NULL; }
|
||||
void SetVehicleId(uint32 entry);
|
||||
void SetVehicleId(uint32 entry, uint32 overwriteNpcEntry);
|
||||
|
||||
uint16 GetMaxSkillValueForLevel(Unit const* target = NULL) const { return (target ? GetLevelForTarget(target) : getLevel()) * 5; }
|
||||
void DealDamageMods(Unit* pVictim, uint32& damage, uint32* absorb);
|
||||
|
|
@ -1567,12 +1581,12 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
// removing specific aura stacks by diff reasons and selections
|
||||
void RemoveAurasDueToSpell(uint32 spellId, SpellAuraHolder* except = NULL, AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
void RemoveAurasDueToItemSpell(Item* castItem, uint32 spellId);
|
||||
void RemoveAurasByCasterSpell(uint32 spellId, ObjectGuid casterGuid);
|
||||
void RemoveAurasByCasterSpell(uint32 spellId, ObjectGuid casterGuid, AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
void RemoveAurasDueToSpellBySteal(uint32 spellId, ObjectGuid casterGuid, Unit* stealer);
|
||||
void RemoveAurasDueToSpellByCancel(uint32 spellId);
|
||||
|
||||
// removing unknown aura stacks by diff reasons and selections
|
||||
void RemoveNotOwnSingleTargetAuras(uint32 newPhase = 0x0);
|
||||
void RemoveNotOwnTrackedTargetAuras(uint32 newPhase = 0x0);
|
||||
void RemoveAurasAtMechanicImmunity(uint32 mechMask, uint32 exceptSpellId, bool non_positive = false);
|
||||
void RemoveSpellsCausingAura(AuraType auraType);
|
||||
void RemoveSpellsCausingAura(AuraType auraType, SpellAuraHolder* except);
|
||||
|
|
@ -1585,6 +1599,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
void RemoveAllAuras(AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
void RemoveArenaAuras(bool onleave = false);
|
||||
void RemoveAllAurasOnDeath();
|
||||
void RemoveAllAurasOnEvade();
|
||||
|
||||
// removing specific aura FROM stack by diff reasons and selections
|
||||
void RemoveAuraHolderFromStack(uint32 spellId, uint32 stackAmount = 1, ObjectGuid casterGuid = ObjectGuid(), AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
|
|
@ -1613,6 +1628,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
void SetCreateMana(uint32 val) { SetUInt32Value(UNIT_FIELD_BASE_MANA, val); }
|
||||
uint32 GetCreateMana() const { return GetUInt32Value(UNIT_FIELD_BASE_MANA); }
|
||||
uint32 GetCreatePowers(Powers power) const;
|
||||
uint32 GetCreateMaxPowers(Powers power) const;
|
||||
float GetPosStat(Stats stat) const { return GetFloatValue(UNIT_FIELD_POSSTAT0 + stat); }
|
||||
float GetNegStat(Stats stat) const { return GetFloatValue(UNIT_FIELD_NEGSTAT0 + stat); }
|
||||
float GetCreateStat(Stats stat) const { return m_createStats[stat]; }
|
||||
|
|
@ -1707,12 +1723,12 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
virtual bool IsVisibleInGridForPlayer(Player* pl) const = 0;
|
||||
bool isInvisibleForAlive() const;
|
||||
|
||||
SingleCastSpellTargetMap& GetSingleCastSpellTargets() { return m_singleCastSpellTargets; }
|
||||
SingleCastSpellTargetMap const& GetSingleCastSpellTargets() const { return m_singleCastSpellTargets; }
|
||||
TrackedAuraTargetMap& GetTrackedAuraTargets(TrackedAuraType type) { return m_trackedAuraTargets[type]; }
|
||||
TrackedAuraTargetMap const& GetTrackedAuraTargets(TrackedAuraType type) const { return m_trackedAuraTargets[type]; }
|
||||
SpellImmuneList m_spellImmune[MAX_SPELL_IMMUNITY];
|
||||
|
||||
// Threat related methods
|
||||
bool CanHaveThreatList() const;
|
||||
bool CanHaveThreatList(bool ignoreAliveState = false) const;
|
||||
void AddThreat(Unit* pVictim, float threat = 0.0f, bool crit = false, SpellSchoolMask schoolMask = SPELL_SCHOOL_MASK_NONE, SpellEntry const* threatSpell = NULL);
|
||||
float ApplyTotalThreatModifier(float threat, SpellSchoolMask schoolMask = SPELL_SCHOOL_MASK_NORMAL);
|
||||
void DeleteThreatList();
|
||||
|
|
@ -1720,6 +1736,8 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
bool SelectHostileTarget();
|
||||
void TauntApply(Unit* pVictim);
|
||||
void TauntFadeOut(Unit* taunter);
|
||||
void FixateTarget(Unit* pVictim);
|
||||
ObjectGuid GetFixateTargetGuid() const { return m_fixateTargetGuid; }
|
||||
ThreatManager& getThreatManager() { return m_ThreatManager; }
|
||||
ThreatManager const& getThreatManager() const { return m_ThreatManager; }
|
||||
void addHatedBy(HostileReference* pHostileReference) { m_HostileRefManager.insertFirst(pHostileReference); };
|
||||
|
|
@ -1745,6 +1763,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
|
||||
Aura* GetAura(uint32 spellId, SpellEffectIndex effindex);
|
||||
Aura* GetAura(AuraType type, SpellFamily family, uint64 familyFlag, uint32 familyFlag2 = 0, ObjectGuid casterGuid = ObjectGuid());
|
||||
Aura* GetTriggeredByClientAura(uint32 spellId) const;
|
||||
SpellAuraHolder* GetSpellAuraHolder(uint32 spellid) const;
|
||||
SpellAuraHolder* GetSpellAuraHolder(uint32 spellid, ObjectGuid casterGUID) const;
|
||||
|
||||
|
|
@ -1863,11 +1882,9 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
|
||||
void ApplySpellImmune(uint32 spellId, uint32 op, uint32 type, bool apply);
|
||||
void ApplySpellDispelImmunity(const SpellEntry* spellProto, DispelType type, bool apply);
|
||||
virtual bool IsImmuneToSpell(SpellEntry const* spellInfo);
|
||||
// redefined in Creature
|
||||
virtual bool IsImmuneToSpell(SpellEntry const* spellInfo, bool castOnSelf);
|
||||
bool IsImmunedToDamage(SpellSchoolMask meleeSchoolMask);
|
||||
virtual bool IsImmuneToSpellEffect(SpellEntry const* spellInfo, SpellEffectIndex index) const;
|
||||
// redefined in Creature
|
||||
virtual bool IsImmuneToSpellEffect(SpellEntry const* spellInfo, SpellEffectIndex index, bool castOnSelf) const;
|
||||
|
||||
uint32 CalcArmorReducedDamage(Unit* pVictim, const uint32 damage);
|
||||
void CalculateDamageAbsorbAndResist(Unit* pCaster, SpellSchoolMask schoolMask, DamageEffectType damagetype, const uint32 damage, uint32* absorb, uint32* resist, bool canReflect = false);
|
||||
|
|
@ -1889,7 +1906,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
|
||||
uint32 CalcNotIgnoreAbsorbDamage(uint32 damage, SpellSchoolMask damageSchoolMask, SpellEntry const* spellInfo = NULL);
|
||||
uint32 CalcNotIgnoreDamageReduction(uint32 damage, SpellSchoolMask damageSchoolMask);
|
||||
int32 CalculateAuraDuration(SpellEntry const* spellProto, uint32 effectMask, int32 duration, Unit const* caster);
|
||||
int32 CalculateAuraDuration(SpellEntry const* spellProto, uint32 effectMask, int32 duration, Unit const* caster, Spell const* spell = NULL);
|
||||
|
||||
float CalculateLevelPenalty(SpellEntry const* spellProto) const;
|
||||
|
||||
|
|
@ -1910,7 +1927,6 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
void ClearComboPointHolders();
|
||||
|
||||
///----------Pet responses methods-----------------
|
||||
void SendPetCastFail(uint32 spellid, SpellCastResult msg);
|
||||
void SendPetActionFeedback(uint8 msg);
|
||||
void SendPetTalk(uint32 pettalk);
|
||||
void SendPetAIReaction();
|
||||
|
|
@ -1946,12 +1962,14 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
bool IsSplineEnabled() const;
|
||||
|
||||
bool IsInWorgenForm(bool inPermanent = false) const;
|
||||
bool HasWorgenForm() const;
|
||||
|
||||
// Packet builders
|
||||
void BuildForceMoveRootPacket(WorldPacket* data, bool apply, uint32 value);
|
||||
void BuildMoveWaterWalkPacket(WorldPacket* data, bool apply, uint32 value);
|
||||
void BuildSendPlayVisualPacket(WorldPacket* data, uint32 value, bool impact);
|
||||
void BuildMoveSetCanFlyPacket(WorldPacket* data, bool apply, uint32 value);
|
||||
void BuildMoveFeatherFallPacket(WorldPacket* data, bool apply, uint32 value);
|
||||
|
||||
protected:
|
||||
explicit Unit();
|
||||
|
|
@ -1973,7 +1991,8 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
AuraList m_deletedAuras; // auras removed while in ApplyModifier and waiting deleted
|
||||
SpellAuraHolderList m_deletedHolders;
|
||||
|
||||
SingleCastSpellTargetMap m_singleCastSpellTargets; // casted by unit single per-caster auras
|
||||
// Store Auras for which the target must be tracked
|
||||
TrackedAuraTargetMap m_trackedAuraTargets[MAX_TRACKED_AURA_TYPES];
|
||||
|
||||
GuidList m_dynObjGUIDs;
|
||||
|
||||
|
|
@ -2001,6 +2020,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
|
||||
uint32 m_reactiveTimer[MAX_REACTIVE];
|
||||
uint32 m_regenTimer;
|
||||
uint32 m_holyPowerRegenTimer;
|
||||
|
||||
VehicleInfo* m_vehicleInfo;
|
||||
void DisableSpline();
|
||||
|
|
@ -2018,7 +2038,8 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
Unit* _GetTotem(TotemSlot slot) const; // for templated function without include need
|
||||
Pet* _GetPet(ObjectGuid guid) const; // for templated function without include need
|
||||
|
||||
void JustKilledCreature(Creature* victim); // Wrapper called by DealDamage when a creature is killed
|
||||
// Wrapper called by DealDamage when a creature is killed
|
||||
void JustKilledCreature(Creature* victim, Player* responsiblePlayer);
|
||||
|
||||
uint32 m_state; // Even derived shouldn't modify
|
||||
uint32 m_CombatTimer;
|
||||
|
|
@ -2045,6 +2066,8 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
|
||||
ObjectGuid m_TotemSlot[MAX_TOTEM_SLOT];
|
||||
|
||||
ObjectGuid m_fixateTargetGuid; //< Stores the Guid of a fixated target
|
||||
|
||||
private: // Error traps for some wrong args using
|
||||
// this will catch and prevent build for any cases when all optional args skipped and instead triggered used non boolean type
|
||||
// no bodies expected for this declarations
|
||||
|
|
@ -2070,7 +2093,7 @@ void Unit::CallForAllControlledUnits(Func const& func, uint32 controlledMask)
|
|||
func(pet);
|
||||
|
||||
if (controlledMask & CONTROLLED_MINIPET)
|
||||
if (Unit* mini = GetMiniPet())
|
||||
if (Pet* mini = GetMiniPet())
|
||||
func(mini);
|
||||
|
||||
if (controlledMask & CONTROLLED_GUARDIANS)
|
||||
|
|
@ -2092,7 +2115,6 @@ void Unit::CallForAllControlledUnits(Func const& func, uint32 controlledMask)
|
|||
func(charm);
|
||||
}
|
||||
|
||||
|
||||
template<typename Func>
|
||||
bool Unit::CheckAllControlledUnits(Func const& func, uint32 controlledMask) const
|
||||
{
|
||||
|
|
@ -2102,7 +2124,7 @@ bool Unit::CheckAllControlledUnits(Func const& func, uint32 controlledMask) cons
|
|||
return true;
|
||||
|
||||
if (controlledMask & CONTROLLED_MINIPET)
|
||||
if (Unit const* mini = GetMiniPet())
|
||||
if (Pet const* mini = GetMiniPet())
|
||||
if (func(mini))
|
||||
return true;
|
||||
|
||||
|
|
@ -2112,7 +2134,6 @@ bool Unit::CheckAllControlledUnits(Func const& func, uint32 controlledMask) cons
|
|||
if (Pet const* guardian = _GetPet(*(itr++)))
|
||||
if (func(guardian))
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
if (controlledMask & CONTROLLED_TOTEMS)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "12583"
|
||||
#define REVISION_NR "12584"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue