diff options
author | megamage <none@none> | 2008-11-27 15:19:06 -0600 |
---|---|---|
committer | megamage <none@none> | 2008-11-27 15:19:06 -0600 |
commit | c72bf6e8c40e5b826c5d2d79bd19fae6386919e7 (patch) | |
tree | ffdbf0546ff8d05798497292474e0103e5a21732 | |
parent | 813b750b010e8db305c05fd8996631742ebbc896 (diff) |
*Fix the bug that gouge/scatter shot interrupt self.
*Fix the bug that spams setspeed errors.
*Clean up scripts to delete all lines which may cause crash by removing stealth aura.
--HG--
branch : trunk
27 files changed, 66 insertions, 271 deletions
diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp index 415ab7f9185..6061c15ec1b 100644 --- a/src/bindings/scripts/include/sc_creature.cpp +++ b/src/bindings/scripts/include/sc_creature.cpp @@ -799,7 +799,7 @@ std::list<Creature*> ScriptedAI::DoFindFriendlyMissingBuff(float range, uint32 s return pList; } -void Scripted_NoMovementAI::MoveInLineOfSight(Unit *who) +/*void Scripted_NoMovementAI::MoveInLineOfSight(Unit *who) { if( !m_creature->getVictim() && m_creature->canAttack(who) && ( m_creature->IsHostileTo( who )) && who->isInAccessiblePlaceFor(m_creature) ) { @@ -813,7 +813,7 @@ void Scripted_NoMovementAI::MoveInLineOfSight(Unit *who) AttackStart(who); } } -} +}*/ void Scripted_NoMovementAI::AttackStart(Unit* who) { diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h index c1d7f06f029..01f5df473c1 100644 --- a/src/bindings/scripts/include/sc_creature.h +++ b/src/bindings/scripts/include/sc_creature.h @@ -177,7 +177,7 @@ struct TRINITY_DLL_DECL Scripted_NoMovementAI : public ScriptedAI Scripted_NoMovementAI(Creature* creature) : ScriptedAI(creature) {} //Called if IsVisible(Unit *who) is true at each *who move - void MoveInLineOfSight(Unit *); + //void MoveInLineOfSight(Unit *); //Called at each attack of m_creature by any victim void AttackStart(Unit *); diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp index 0197fe24b29..a616fa809c7 100644 --- a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp +++ b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp @@ -60,35 +60,26 @@ void npc_escortAI::MoveInLineOfSight(Unit *who) if (IsBeingEscorted && !Attack) return; - if( !m_creature->getVictim() && who->isTargetableForAttack() && ( m_creature->IsHostileTo( who )) && who->isInAccessiblePlaceFor(m_creature) ) - { - if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = m_creature->GetAttackDistance(who); - if( m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who) ) - { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + if(m_creature->getVictim() || !m_creature->canStartAttack(who)) + return; - //Begin attack - if ( m_creature->Attack(who, true) ) - { - m_creature->GetMotionMaster()->MovementExpired(); - m_creature->GetMotionMaster()->MoveChase(who); - m_creature->AddThreat(who, 0.0f); - } + //Begin attack + if ( m_creature->Attack(who, true) ) + { + m_creature->GetMotionMaster()->MovementExpired(); + m_creature->GetMotionMaster()->MoveChase(who); + m_creature->AddThreat(who, 0.0f); + } - if (!InCombat) - { - InCombat = true; + if (!InCombat) + { + InCombat = true; - //Store last position - m_creature->GetPosition(LastPos.x, LastPos.y, LastPos.z); - debug_log("SD2: EscortAI has entered combat via LOS and stored last location"); + //Store last position + m_creature->GetPosition(LastPos.x, LastPos.y, LastPos.z); + debug_log("SD2: EscortAI has entered combat via LOS and stored last location"); - Aggro(who); - } - } + Aggro(who); } } diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_exarch_maladaar.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_exarch_maladaar.cpp index 810486aede7..7f0cc22121c 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_exarch_maladaar.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_exarch_maladaar.cpp @@ -186,7 +186,7 @@ struct TRINITY_DLL_DECL boss_exarch_maladaarAI : public ScriptedAI float attackRadius = m_creature->GetAttackDistance(who); if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } } diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp index a9589736784..5f3ce4d0358 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp @@ -92,7 +92,7 @@ struct TRINITY_DLL_DECL boss_nexusprince_shaffarAI : public ScriptedAI float attackRadius = m_creature->GetAttackDistance(who); if( m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who) ) { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } } diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp index be69ee79844..26b05e04def 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp @@ -102,7 +102,7 @@ struct TRINITY_DLL_DECL boss_talon_king_ikissAI : public ScriptedAI float attackRadius = m_creature->GetAttackDistance(who); if( m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who) ) { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } } diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp index ed7108ad3e7..12dbc0104f7 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp @@ -183,8 +183,8 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI float attackRadius = m_creature->GetAttackDistance(who); if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && m_creature->IsWithinLOSInMap(who)) { - if(who->HasStealthAura()) - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //if(who->HasStealthAura()) + // who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp index 8c5bdbc4a4a..da71688674b 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp @@ -187,29 +187,15 @@ struct TRINITY_DLL_DECL boss_reliquary_of_soulsAI : public ScriptedAI Timer = 0; } - void MoveInLineOfSight(Unit *who) + void AttackStart(Unit* who) { - if( !m_creature->getVictim() && who->isTargetableForAttack() && ( m_creature->IsHostileTo( who )) && who->isInAccessiblePlaceFor(m_creature) ) + if (!InCombat) { - if (m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = m_creature->GetAttackDistance(who); - if( m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who) ) - { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - - if (!InCombat) - { - Aggro(who); - InCombat = true; - } - } + Aggro(who); + InCombat = true; } } - void AttackStart(Unit*) {} - bool SummonSoul() { uint32 random = rand()%6; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp index 97fcde9265f..d212ec10f44 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp @@ -168,8 +168,8 @@ struct TRINITY_DLL_DECL mob_shadowy_constructAI : public ScriptedAI if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && m_creature->IsWithinLOSInMap(who)) { - if(who->HasStealthAura()) - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //if(who->HasStealthAura()) + // who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); m_creature->AddThreat(who, 1.0f); } @@ -282,8 +282,8 @@ struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && m_creature->IsWithinLOSInMap(who)) { - if(who->HasStealthAura()) - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //if(who->HasStealthAura()) + // who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); m_creature->AddThreat(who, 1.0f); } diff --git a/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp b/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp index c47153aed7a..c8acd8b65d0 100644 --- a/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp +++ b/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp @@ -286,18 +286,7 @@ struct TRINITY_DLL_DECL npc_daranelleAI : public ScriptedAI } } - if (!m_creature->getVictim() && who->isTargetableForAttack() && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who)) - { - if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = m_creature->GetAttackDistance(who); - if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) - { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - AttackStart(who); - } - } + ScriptedAI::MoveInLineOfSight(who); } }; diff --git a/src/bindings/scripts/scripts/zone/burning_steppes/burning_steppes.cpp b/src/bindings/scripts/scripts/zone/burning_steppes/burning_steppes.cpp index 7f0c2f45118..f845624c5d6 100644 --- a/src/bindings/scripts/scripts/zone/burning_steppes/burning_steppes.cpp +++ b/src/bindings/scripts/scripts/zone/burning_steppes/burning_steppes.cpp @@ -48,18 +48,7 @@ struct TRINITY_DLL_DECL npc_ragged_johnAI : public ScriptedAI } } - if( !m_creature->getVictim() && who->isTargetableForAttack() && ( m_creature->IsHostileTo( who )) && who->isInAccessiblePlaceFor(m_creature) ) - { - if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = m_creature->GetAttackDistance(who); - if( m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who) ) - { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - AttackStart(who); - } - } + ScriptedAI::MoveInLineOfSight(who); } void Aggro(Unit *who) {} diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp index 2dad8913576..b6f77f31c88 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp @@ -88,18 +88,7 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI } } - if (!m_creature->getVictim() && who->isTargetableForAttack() && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who)) - { - if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = m_creature->GetAttackDistance(who); - if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) - { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - AttackStart(who); - } - } + ScriptedAI::MoveInLineOfSight(who); } void UpdateAI(const uint32 diff) diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp index 232a828150c..ff6669b35a4 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp @@ -283,8 +283,8 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI float attackRadius = m_creature->GetAttackDistance(who); if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && m_creature->IsWithinLOSInMap(who)) { - if(who->HasStealthAura()) - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //if(who->HasStealthAura()) + // who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); if(Phase != 2) AttackStart(who); diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp index 70d4d6d2c56..571376bca4b 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp @@ -248,12 +248,6 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI if( m_creature->HasInArc(M_PI/2.0f, who) && m_creature->IsWithinLOSInMap(who) ) { AttackStart(who); - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - if (!InCombat) - { - Aggro(who); - InCombat = true; - } } } } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp index 900c3aad6d9..c5828c3977d 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp @@ -306,7 +306,7 @@ struct TRINITY_DLL_DECL mob_water_globuleAI : public ScriptedAI if (who->isTargetableForAttack() && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who)) { //no attack radius check - it attacks the first target that moves in his los - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } } diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp index b0e53373a2f..20fb7a00532 100644 --- a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp +++ b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp @@ -450,32 +450,7 @@ struct TRINITY_DLL_DECL boss_kiggler_the_crazedAI : public ScriptedAI ((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath(); } } - void MoveInLineOfSight(Unit *who) - { - if (!m_creature->getVictim() && who->isTargetableForAttack() && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who)) - { - if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = m_creature->GetAttackDistance(who); - if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) - { - if(who->HasStealthAura()) - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - - if(!InCombat) - { - AttackStart(who); - if(pInstance) - { - pInstance->SetData64(DATA_MAULGAREVENT_TANK, who->GetGUID()); - pInstance->SetData(DATA_MAULGAREVENT, IN_PROGRESS); - } - } - } - } - } - + void UpdateAI(const uint32 diff) { //Only if not incombat check if the event is started @@ -580,33 +555,7 @@ struct TRINITY_DLL_DECL boss_blindeye_the_seerAI : public ScriptedAI } } - void MoveInLineOfSight(Unit *who) - { - if (!m_creature->getVictim() && who->isTargetableForAttack() && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who)) - { - if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = m_creature->GetAttackDistance(who); - if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) - { - if(who->HasStealthAura()) - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - - if(!InCombat) - { - AttackStart(who); - if(pInstance) - { - pInstance->SetData64(DATA_MAULGAREVENT_TANK, who->GetGUID()); - pInstance->SetData(DATA_MAULGAREVENT, IN_PROGRESS); - } - } - } - } - } - - void UpdateAI(const uint32 diff) + void UpdateAI(const uint32 diff) { //Only if not incombat check if the event is started if(!InCombat && pInstance && pInstance->GetData(DATA_MAULGAREVENT)) @@ -694,31 +643,6 @@ struct TRINITY_DLL_DECL boss_krosh_firehandAI : public ScriptedAI ((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath(); } } - void MoveInLineOfSight(Unit *who) - { - if (!m_creature->getVictim() && who->isTargetableForAttack() && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who)) - { - if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = m_creature->GetAttackDistance(who); - if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) - { - if(who->HasStealthAura()) - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - - if(!InCombat) - { - AttackStart(who); - if(pInstance) - { - pInstance->SetData64(DATA_MAULGAREVENT_TANK, who->GetGUID()); - pInstance->SetData(DATA_MAULGAREVENT, IN_PROGRESS); - } - } - } - } - } void UpdateAI(const uint32 diff) { diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_watchkeeper_gargolmar.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_watchkeeper_gargolmar.cpp index 0d9e200c6e7..ab90c52ae4a 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_watchkeeper_gargolmar.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_watchkeeper_gargolmar.cpp @@ -85,7 +85,7 @@ struct TRINITY_DLL_DECL boss_watchkeeper_gargolmarAI : public ScriptedAI float attackRadius = m_creature->GetAttackDistance(who); if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } else if (!HasTaunted && m_creature->IsWithinDistInMap(who, 60.0f)) diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp index a2ceee461b5..d57e65280ab 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp @@ -207,7 +207,7 @@ struct TRINITY_DLL_DECL boss_grand_warlock_nethekurseAI : public ScriptedAI float attackRadius = m_creature->GetAttackDistance(who); if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who) ) { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } } diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp index 2b93e7828f9..63b05e77f70 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp @@ -126,7 +126,7 @@ struct TRINITY_DLL_DECL boss_anubrekhanAI : public ScriptedAI } } - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } else if (!HasTaunted && m_creature->IsWithinDistInMap(who, 60.0f)) diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp index dbcf72510aa..3766d725a9b 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp @@ -121,7 +121,7 @@ struct TRINITY_DLL_DECL boss_faerlinaAI : public ScriptedAI } } - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } else if (!HasTaunted && m_creature->IsWithinDistInMap(who, 60.0f)) diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp index 4f526041e35..10633d91529 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp @@ -42,28 +42,11 @@ struct TRINITY_DLL_DECL boss_timmy_the_cruelAI : public ScriptedAI void Aggro(Unit *who) { - } - - void MoveInLineOfSight(Unit *who) - { - if (!who || m_creature->getVictim()) - return; - - if (who->isTargetableForAttack() && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who)) - { - float attackRadius = m_creature->GetAttackDistance(who); - if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && m_creature->IsWithinLOSInMap(who)) - { if (!HasYelled) { DoYell(SAY_SPAWN,LANG_UNIVERSAL,NULL); HasYelled = true; } - - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - AttackStart(who); - } - } } void UpdateAI(const uint32 diff) diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp index b7e076b85d3..0bcd6a0eacf 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp @@ -427,9 +427,6 @@ struct TRINITY_DLL_DECL boss_alythessAI : public ScriptedAI float attackRadius = m_creature->GetAttackDistance(who); if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && m_creature->IsWithinLOSInMap(who)) { - if(who->HasStealthAura()) - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - if (!InCombat) { DoStartNoMovement(who); diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp index 0d357fe50a6..85cabd03cc4 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp @@ -114,42 +114,14 @@ struct TRINITY_DLL_DECL boss_harbinger_skyrissAI : public ScriptedAI void MoveInLineOfSight(Unit *who) { - if( !Intro ) - return; - - if( !m_creature->getVictim() && who->isTargetableForAttack() && ( m_creature->IsHostileTo( who )) && who->isInAccessiblePlaceFor(m_creature) ) - { - if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = m_creature->GetAttackDistance(who); - if( m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who) ) - { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - AttackStart(who); - } - } + if(Intro) + ScriptedAI::MoveInLineOfSight(who); } void AttackStart(Unit* who) { - if( !Intro ) - return; - - if (m_creature->Attack(who, true)) - { - m_creature->AddThreat(who, 0.0f); - m_creature->SetInCombatWith(who); - who->SetInCombatWith(m_creature); - - if (!InCombat) - { - InCombat = true; - Aggro(who); - } - - DoStartMovement(who); - } + if(!Intro) + ScriptedAI::AttackStart(who); } void Aggro(Unit *who) diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp index ca5d8dcf7dd..bf1ed32c937 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp @@ -202,39 +202,15 @@ struct TRINITY_DLL_DECL advisorbase_ai : public ScriptedAI if (!who || FakeDeath || m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) return; - if( !m_creature->getVictim() && who->isTargetableForAttack() && ( m_creature->IsHostileTo( who )) && who->isInAccessiblePlaceFor(m_creature) ) - { - if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = m_creature->GetAttackDistance(who); - if(m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who) ) - { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - AttackStart(who); - } - } + ScriptedAI::MoveInLineOfSight(who); } void AttackStart(Unit* who) { if (!who || FakeDeath || m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) return; - - if (m_creature->Attack(who, true)) - { - m_creature->AddThreat(who, 0.0f); - m_creature->SetInCombatWith(who); - who->SetInCombatWith(m_creature); - - if (!InCombat) - { - InCombat = true; - Aggro(who); - } - - DoStartMovement(who); - } + + ScriptedAI::AttackStart(who); } void Reset() @@ -503,7 +479,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI float attackRadius = m_creature->GetAttackDistance(who); if (Phase >= 4 && m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) { - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } else if(who->isAlive()) diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp index 93525ad7246..b9b37991629 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp @@ -352,8 +352,8 @@ struct TRINITY_DLL_DECL boss_twinemperorsAI : public ScriptedAI attackRadius = PULL_RANGE; if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->GetDistanceZ(who) <= /*CREATURE_Z_ATTACK_RANGE*/7 /*there are stairs*/) { - if(who->HasStealthAura()) - who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + //if(who->HasStealthAura()) + // who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 48651522734..c8c5689fce0 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -477,7 +477,7 @@ void Unit::RemoveSpellsCausingAura(AuraType auraType) } } -void Unit::RemoveAurasWithInterruptFlags(uint32 flag) +void Unit::RemoveAurasWithInterruptFlags(uint32 flag, uint32 except) { if(!(m_interruptMask & flag)) return; @@ -494,7 +494,7 @@ void Unit::RemoveAurasWithInterruptFlags(uint32 flag) { if((*iter)->IsInUse()) sLog.outError("Aura %u is trying to remove itself! Flag %u. May cause crash!", (*iter)->GetId(), flag); - else + else if(!except || (*iter)->GetId() != except) { RemoveAurasDueToSpell((*iter)->GetId()); if (!m_interruptableAuras.empty()) @@ -507,7 +507,9 @@ void Unit::RemoveAurasWithInterruptFlags(uint32 flag) // interrupt channeled spell if(Spell* spell = m_currentSpells[CURRENT_CHANNELED_SPELL]) - if(spell->getState() == SPELL_STATE_CASTING && (spell->m_spellInfo->ChannelInterruptFlags & flag)) + if(spell->getState() == SPELL_STATE_CASTING + && (spell->m_spellInfo->ChannelInterruptFlags & flag) + && spell->m_spellInfo->Id != except) InterruptNonMeleeSpells(false); } @@ -919,7 +921,7 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa if (damagetype != NODAMAGE && damage)// && pVictim->GetTypeId() == TYPEID_PLAYER) { - pVictim->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_DAMAGE); + pVictim->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_DAMAGE, spellProto ? spellProto->Id : 0); pVictim->RemoveSpellbyDamageTaken(damage, spellProto ? spellProto->Id : 0); /*const SpellEntry *se = i->second->GetSpellProto(); @@ -9736,8 +9738,11 @@ void Unit::SetInCombatState(bool PvP) if(GetTypeId() == TYPEID_PLAYER && GetPetGUID()) { if(Pet *pet = GetPet()) - for(int i = 0; i < MAX_MOVE_TYPE; ++i) - pet->UpdateSpeed(UnitMoveType(i), true); + { + pet->UpdateSpeed(MOVE_RUN, true); + pet->UpdateSpeed(MOVE_SWIM, true); + pet->UpdateSpeed(MOVE_FLY, true); + } } } diff --git a/src/game/Unit.h b/src/game/Unit.h index d0cdb24f57c..75861f12b4a 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1102,7 +1102,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject void RemoveSpellsCausingAura(AuraType auraType); void RemoveRankAurasDueToSpell(uint32 spellId); bool RemoveNoStackAurasDueToAura(Aura *Aur); - void RemoveAurasWithInterruptFlags(uint32 flags); + void RemoveAurasWithInterruptFlags(uint32 flags, uint32 except = 0); void RemoveAurasWithDispelType( DispelType type ); void RemoveAllAuras(); |