Make some cleanup.

My thank goes to Az@zel for the code analysis.

--HG--
branch : trunk
This commit is contained in:
Anubisss
2010-12-16 18:08:23 +01:00
parent bb7bd9ef45
commit 6d9029c12e
14 changed files with 56 additions and 95 deletions
@@ -188,7 +188,6 @@ Battleground::Battleground()
m_TeamScores[BG_TEAM_HORDE] = 0; m_TeamScores[BG_TEAM_HORDE] = 0;
m_PrematureCountDown = false; m_PrematureCountDown = false;
m_PrematureCountDown = 0;
m_HonorMode = BG_NORMAL; m_HonorMode = BG_NORMAL;
@@ -911,19 +911,15 @@ void GameObject::TriggeringLinkedGameObject(uint32 trapEntry, Unit* target)
if (!trapSpell) // checked at load already if (!trapSpell) // checked at load already
return; return;
/*** FIXME: this maybe not correct ***/
float range; float range;
SpellRangeEntry const * srentry = sSpellRangeStore.LookupEntry(trapSpell->rangeIndex); SpellRangeEntry const * srentry = sSpellRangeStore.LookupEntry(trapSpell->rangeIndex);
//get owner to check hostility of GameObject //get owner to check hostility of GameObject
if (GetSpellMaxRangeForHostile(srentry) == GetSpellMaxRangeForHostile(srentry))
range = GetSpellMaxRangeForHostile(srentry);
else
{
if (Unit *owner = GetOwner()) if (Unit *owner = GetOwner())
range = (float)owner->GetSpellMaxRangeForTarget(target, srentry); range = (float)owner->GetSpellMaxRangeForTarget(target, srentry);
else else
//if no owner assume that object is hostile to target //if no owner assume that object is hostile to target
range = GetSpellMaxRangeForHostile(srentry); range = GetSpellMaxRangeForHostile(srentry);
}
// search nearest linked GO // search nearest linked GO
GameObject* trapGO = NULL; GameObject* trapGO = NULL;
@@ -1509,15 +1505,15 @@ void GameObject::Use(Unit* user)
{ {
case 179785: // Silverwing Flag case 179785: // Silverwing Flag
// check if it's correct bg // check if it's correct bg
if (bg->GetTypeID(true) == BATTLEGROUND_WS) if (bg->IsRandom() ? bg->GetTypeID(true) : bg->GetTypeID(false) == BATTLEGROUND_WS)
bg->EventPlayerClickedOnFlag(player, this); bg->EventPlayerClickedOnFlag(player, this);
break; break;
case 179786: // Warsong Flag case 179786: // Warsong Flag
if (bg->GetTypeID(true) == BATTLEGROUND_WS) if (bg->IsRandom() ? bg->GetTypeID(true) : bg->GetTypeID(false) == BATTLEGROUND_WS)
bg->EventPlayerClickedOnFlag(player, this); bg->EventPlayerClickedOnFlag(player, this);
break; break;
case 184142: // Netherstorm Flag case 184142: // Netherstorm Flag
if (bg->GetTypeID(true) == BATTLEGROUND_EY) if (bg->IsRandom() ? bg->GetTypeID(true) : bg->GetTypeID(false) == BATTLEGROUND_EY)
bg->EventPlayerClickedOnFlag(player, this); bg->EventPlayerClickedOnFlag(player, this);
break; break;
} }
@@ -471,7 +471,6 @@ bool Transport::GenerateWaypoints(uint32 pathid, std::set<uint32> &mapids)
// sLog.outDetail(" Generated %lu waypoints, total time %u.", (unsigned long)m_WayPoints.size(), timer); // sLog.outDetail(" Generated %lu waypoints, total time %u.", (unsigned long)m_WayPoints.size(), timer);
m_curr = m_WayPoints.begin(); m_curr = m_WayPoints.begin();
m_curr = GetNextWayPoint();
m_next = GetNextWayPoint(); m_next = GetNextWayPoint();
m_pathTime = timer; m_pathTime = timer;
@@ -26,8 +26,7 @@ IdleMovementGenerator si_idleMovement;
// But it should not be sent otherwise there are many redundent packets // But it should not be sent otherwise there are many redundent packets
void IdleMovementGenerator::Initialize(Unit &owner) void IdleMovementGenerator::Initialize(Unit &owner)
{ {
if (owner.hasUnitState(UNIT_STAT_MOVE)) Reset(owner);
owner.StopMoving();
} }
void void
@@ -283,13 +283,8 @@ void WorldSession::HandleChannelAnnouncements(WorldPacket& recvPacket)
void WorldSession::HandleChannelDisplayListQuery(WorldPacket &recvPacket) void WorldSession::HandleChannelDisplayListQuery(WorldPacket &recvPacket)
{ {
sLog.outDebug("Opcode %u", recvPacket.GetOpcode()); // this should be OK because the 2 function _were_ the same
//recvPacket.hexlike(); HandleChannelList(recvPacket);
std::string channelname;
recvPacket >> channelname;
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if (Channel *chn = cMgr->GetChannel(channelname, _player))
chn->List(_player);
} }
void WorldSession::HandleGetChannelMemberCount(WorldPacket &recvPacket) void WorldSession::HandleGetChannelMemberCount(WorldPacket &recvPacket)
@@ -4223,14 +4223,9 @@ void AuraEffect::HandleAuraModIncreaseSpeed(AuraApplication const * aurApp, uint
target->UpdateSpeed(MOVE_RUN, true); target->UpdateSpeed(MOVE_RUN, true);
} }
void AuraEffect::HandleAuraModIncreaseMountedSpeed(AuraApplication const * aurApp, uint8 mode, bool /*apply*/) const void AuraEffect::HandleAuraModIncreaseMountedSpeed(AuraApplication const * aurApp, uint8 mode, bool apply) const
{ {
if (!(mode & AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK)) HandleAuraModIncreaseSpeed(aurApp, mode, apply);
return;
Unit * target = aurApp->GetTarget();
target->UpdateSpeed(MOVE_RUN, true);
} }
void AuraEffect::HandleAuraModIncreaseFlightSpeed(AuraApplication const * aurApp, uint8 mode, bool apply) const void AuraEffect::HandleAuraModIncreaseFlightSpeed(AuraApplication const * aurApp, uint8 mode, bool apply) const
@@ -4868,20 +4863,9 @@ void AuraEffect::HandleModPowerRegen(AuraApplication const * aurApp, uint8 mode,
// other powers are not immediate effects - implemented in Player::Regenerate, Creature::Regenerate // other powers are not immediate effects - implemented in Player::Regenerate, Creature::Regenerate
} }
void AuraEffect::HandleModPowerRegenPCT(AuraApplication const * aurApp, uint8 mode, bool /*apply*/) const void AuraEffect::HandleModPowerRegenPCT(AuraApplication const * aurApp, uint8 mode, bool apply) const
{ {
if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) HandleModPowerRegen(aurApp, mode, apply);
return;
Unit * target = aurApp->GetTarget();
if (target->GetTypeId() != TYPEID_PLAYER)
return;
// Update manaregen value
if (GetMiscValue() == POWER_MANA)
target->ToPlayer()->UpdateManaRegen();
// other powers are not immediate effects - implemented in Player::Regenerate, Creature::Regenerate
} }
void AuraEffect::HandleModManaRegen(AuraApplication const * aurApp, uint8 mode, bool /*apply*/) const void AuraEffect::HandleModManaRegen(AuraApplication const * aurApp, uint8 mode, bool /*apply*/) const
@@ -5055,17 +5039,9 @@ void AuraEffect::HandleAuraModBlockPercent(AuraApplication const * aurApp, uint8
target->ToPlayer()->UpdateBlockPercentage(); target->ToPlayer()->UpdateBlockPercentage();
} }
void AuraEffect::HandleAuraModRegenInterrupt(AuraApplication const * aurApp, uint8 mode, bool /*apply*/) const void AuraEffect::HandleAuraModRegenInterrupt(AuraApplication const * aurApp, uint8 mode, bool apply) const
{ {
if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) HandleModManaRegen(aurApp, mode, apply);
return;
Unit * target = aurApp->GetTarget();
if (target->GetTypeId() != TYPEID_PLAYER)
return;
target->ToPlayer()->UpdateManaRegen();
} }
void AuraEffect::HandleAuraModWeaponCritPercent(AuraApplication const * aurApp, uint8 mode, bool apply) const void AuraEffect::HandleAuraModWeaponCritPercent(AuraApplication const * aurApp, uint8 mode, bool apply) const
@@ -5362,16 +5338,9 @@ void AuraEffect::HandleAuraModRangedAttackPowerOfStatPercent(AuraApplication con
target->ToPlayer()->UpdateAttackPowerAndDamage(true); target->ToPlayer()->UpdateAttackPowerAndDamage(true);
} }
void AuraEffect::HandleAuraModAttackPowerOfStatPercent(AuraApplication const * aurApp, uint8 mode, bool /*apply*/) const void AuraEffect::HandleAuraModAttackPowerOfStatPercent(AuraApplication const * aurApp, uint8 mode, bool apply) const
{ {
if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) HandleAuraModAttackPowerOfArmor(aurApp, mode, apply);
return;
Unit * target = aurApp->GetTarget();
// Recalculate bonus
if (target->GetTypeId() == TYPEID_PLAYER)
target->ToPlayer()->UpdateAttackPowerAndDamage(false);
} }
void AuraEffect::HandleAuraModAttackPowerOfArmor(AuraApplication const * aurApp, uint8 mode, bool /*apply*/) const void AuraEffect::HandleAuraModAttackPowerOfArmor(AuraApplication const * aurApp, uint8 mode, bool /*apply*/) const
+2 -2
View File
@@ -3228,10 +3228,10 @@ void Spell::EffectDualWield(SpellEffIndex /*effIndex*/)
unitTarget->ToCreature()->UpdateDamagePhysical(OFF_ATTACK); unitTarget->ToCreature()->UpdateDamagePhysical(OFF_ATTACK);
} }
void Spell::EffectPull(SpellEffIndex /*effIndex*/) void Spell::EffectPull(SpellEffIndex effIndex)
{ {
// TODO: create a proper pull towards distract spell center for distract // TODO: create a proper pull towards distract spell center for distract
sLog.outDebug("WORLD: Spell Effect DUMMY"); EffectNULL(effIndex);
} }
void Spell::EffectDistract(SpellEffIndex /*effIndex*/) void Spell::EffectDistract(SpellEffIndex /*effIndex*/)
@@ -184,7 +184,7 @@ public:
void Reset() void Reset()
{ {
summons.DespawnAll(); DespawnAllImp();
} }
void JustSummoned(Creature* summon) void JustSummoned(Creature* summon)
@@ -125,7 +125,9 @@ public:
DrainLifeTimer = 3000 + rand()%4000; DrainLifeTimer = 3000 + rand()%4000;
DrainManaTimer = DrainLifeTimer + 5000; DrainManaTimer = DrainLifeTimer + 5000;
FelExplosionTimer = 2100; FelExplosionTimer = 2100;
if (IsHeroic())
DrainCrystalTimer = 10000 + rand()%5000; DrainCrystalTimer = 10000 + rand()%5000;
else
DrainCrystalTimer = 20000 + rand()%5000; DrainCrystalTimer = 20000 + rand()%5000;
EmpowerTimer = 10000; EmpowerTimer = 10000;
@@ -104,17 +104,17 @@ public:
ai->Reset(); ai->Reset();
ai->EnterEvadeMode(); ai->EnterEvadeMode();
ai->Spell[0].SpellId = SPELL_BLIZZARD; ai->Spells[0].SpellId = SPELL_BLIZZARD;
ai->Spell[0].Cooldown = 15000 + rand()%20000; ai->Spells[0].Cooldown = 15000 + rand()%20000;
ai->Spell[0].TargetType = TARGETTYPE_RANDOM; ai->Spells[0].TargetType = TARGETTYPE_RANDOM;
ai->Spell[1].SpellId = SPELL_PYROBLAST; ai->Spells[1].SpellId = SPELL_PYROBLAST;
ai->Spell[1].Cooldown = 5500 + rand()%4000; ai->Spells[1].Cooldown = 5500 + rand()%4000;
ai->Spell[1].TargetType = TARGETTYPE_RANDOM; ai->Spells[1].TargetType = TARGETTYPE_RANDOM;
ai->Spell[2].SpellId = SPELL_SUMMON_ELEMENTALS; ai->Spells[2].SpellId = SPELL_SUMMON_ELEMENTALS;
ai->Spell[2].Cooldown = 15000 + rand()%30000; ai->Spells[2].Cooldown = 15000 + rand()%30000;
ai->Spell[2].TargetType = TARGETTYPE_SELF; ai->Spells[2].TargetType = TARGETTYPE_SELF;
return ai; return ai;
} }
@@ -188,13 +188,13 @@ public:
ai->Reset(); ai->Reset();
ai->EnterEvadeMode(); ai->EnterEvadeMode();
ai->Spell[0].SpellId = SPELL_CHAIN_LIGHTNING; ai->Spells[0].SpellId = SPELL_CHAIN_LIGHTNING;
ai->Spell[0].Cooldown = 3000 + rand()%5000; ai->Spells[0].Cooldown = 3000 + rand()%5000;
ai->Spell[0].TargetType = TARGETTYPE_VICTIM; ai->Spells[0].TargetType = TARGETTYPE_VICTIM;
ai->Spell[1].SpellId = SPELL_SUMMON_DIRE_WOLF; ai->Spells[1].SpellId = SPELL_SUMMON_DIRE_WOLF;
ai->Spell[1].Cooldown = 6000 + rand()%35000; ai->Spells[1].Cooldown = 6000 + rand()%35000;
ai->Spell[1].TargetType = TARGETTYPE_RANDOM; ai->Spells[1].TargetType = TARGETTYPE_RANDOM;
return ai; return ai;
} }
@@ -389,7 +389,7 @@ void hyjalAI::Reset()
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
//Initialize spells //Initialize spells
memset(Spell, 0, sizeof(Spell)); memset(Spells, 0, sizeof(Spell) * HYJAL_AI_MAX_SPELLS);
//Reset Instance Data for trash count //Reset Instance Data for trash count
if (pInstance) if (pInstance)
@@ -425,9 +425,9 @@ void hyjalAI::EnterEvadeMode()
void hyjalAI::EnterCombat(Unit * /*who*/) void hyjalAI::EnterCombat(Unit * /*who*/)
{ {
if (IsDummy)return; if (IsDummy)return;
for (uint8 i = 0; i < 3; ++i) for (uint8 i = 0; i < HYJAL_AI_MAX_SPELLS; ++i)
if (Spell[i].Cooldown) if (Spells[i].Cooldown)
SpellTimer[i] = Spell[i].Cooldown; SpellTimer[i] = Spells[i].Cooldown;
Talk(ATTACKED); Talk(ATTACKED);
} }
@@ -881,9 +881,9 @@ void hyjalAI::UpdateAI(const uint32 diff)
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
for (uint8 i = 0; i < 3; ++i) for (uint8 i = 0; i < HYJAL_AI_MAX_SPELLS; ++i)
{ {
if (Spell[i].SpellId) if (Spells[i].SpellId)
{ {
if (SpellTimer[i] <= diff) if (SpellTimer[i] <= diff)
{ {
@@ -892,7 +892,7 @@ void hyjalAI::UpdateAI(const uint32 diff)
Unit *pTarget = NULL; Unit *pTarget = NULL;
switch(Spell[i].TargetType) switch(Spells[i].TargetType)
{ {
case TARGETTYPE_SELF: pTarget = me; break; case TARGETTYPE_SELF: pTarget = me; break;
case TARGETTYPE_RANDOM: pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0); break; case TARGETTYPE_RANDOM: pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0); break;
@@ -901,8 +901,8 @@ void hyjalAI::UpdateAI(const uint32 diff)
if (pTarget && pTarget->isAlive()) if (pTarget && pTarget->isAlive())
{ {
DoCast(pTarget, Spell[i].SpellId); DoCast(pTarget, Spells[i].SpellId);
SpellTimer[i] = Spell[i].Cooldown; SpellTimer[i] = Spells[i].Cooldown;
} }
} else SpellTimer[i] -= diff; } else SpellTimer[i] -= diff;
} }
@@ -22,6 +22,8 @@
#include "hyjal.h" #include "hyjal.h"
#include "ScriptedEscortAI.h" #include "ScriptedEscortAI.h"
#define HYJAL_AI_MAX_SPELLS 3
// Trash Mobs summoned in waves // Trash Mobs summoned in waves
#define NECROMANCER 17899//done #define NECROMANCER 17899//done
#define ABOMINATION 17898//done #define ABOMINATION 17898//done
@@ -252,7 +254,7 @@ struct hyjalAI : public npc_escortAI
uint32 SpellId; uint32 SpellId;
uint32 Cooldown; uint32 Cooldown;
uint32 TargetType; uint32 TargetType;
}Spell[3]; } Spells[HYJAL_AI_MAX_SPELLS];
private: private:
uint32 SpellTimer[3]; uint32 SpellTimer[3];
@@ -79,7 +79,7 @@ public:
case 0: RandX = 0.0f - Rand; break; case 0: RandX = 0.0f - Rand; break;
case 1: RandX = 0.0f + Rand; break; case 1: RandX = 0.0f + Rand; break;
} }
Rand = 0;
Rand = 10 + (rand()%10); Rand = 10 + (rand()%10);
switch (rand()%2) switch (rand()%2)
{ {
@@ -1194,7 +1194,7 @@ public:
m_uiShadowBreathTimer -= uiDiff; m_uiShadowBreathTimer -= uiDiff;
// Don't attack current target if he's not visible for us. // Don't attack current target if he's not visible for us.
if(me->getVictim() && me->getVictim() && me->getVictim()->HasAura(57874, 0)) if(me->getVictim() && me->getVictim()->HasAura(57874, 0))
me->getThreatManager().modifyThreatPercent(me->getVictim(), -100); me->getThreatManager().modifyThreatPercent(me->getVictim(), -100);
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();