diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/scripts/scripts/npc/npc_escortAI.cpp | 68 | ||||
-rw-r--r-- | src/bindings/scripts/scripts/npc/npc_escortAI.h | 16 | ||||
-rw-r--r-- | src/game/Unit.cpp | 2 |
3 files changed, 13 insertions, 73 deletions
diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp index ea2f641a9d4..d464a369826 100644 --- a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp +++ b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp @@ -15,14 +15,6 @@ EndScriptData */ #define WP_LAST_POINT -1 extern std::list<PointMovement> PointMovementList; -bool npc_escortAI::IsVisible(Unit* who) const -{ - if (!who) - return false; - - return (m_creature->GetDistance(who) < VISIBLE_RANGE) && who->isVisibleForOrDetect(m_creature,true); -} - void npc_escortAI::AttackStart(Unit *who) { if (!who) @@ -33,10 +25,6 @@ void npc_escortAI::AttackStart(Unit *who) if(m_creature->Attack(who, true) ) { - m_creature->AddThreat(who, 0.0f); - m_creature->SetInCombatWith(who); - who->SetInCombatWith(m_creature); - if(CombatMovement) { m_creature->GetMotionMaster()->MovementExpired(); @@ -45,26 +33,12 @@ void npc_escortAI::AttackStart(Unit *who) } } -void npc_escortAI::EnterCombat(Unit *who) -{ - if (IsBeingEscorted) - { - //Store last position - m_creature->GetPosition(LastPos.x, LastPos.y, LastPos.z); - - debug_log("TSCR: EscortAI has entered combat and stored last location."); - } -} - void npc_escortAI::MoveInLineOfSight(Unit *who) { if (IsBeingEscorted && !Attack) return; - if(m_creature->getVictim() || !m_creature->canStartAttack(who)) - return; - - AttackStart(who); + ScriptedAI::MoveInLineOfSight(who); } void npc_escortAI::JustRespawned() @@ -83,26 +57,19 @@ void npc_escortAI::EnterEvadeMode() { m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); - m_creature->CombatStop(); + m_creature->CombatStop(true); m_creature->SetLootRecipient(NULL); if (IsBeingEscorted) { - debug_log("TSCR: EscortAI has left combat and is now returning to last point."); Returning = true; - m_creature->GetMotionMaster()->MovementExpired(); - - //if default is WAYPOINT_MOTION_TYPE, must MoveIdle to prevent from using - if(m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == WAYPOINT_MOTION_TYPE) - m_creature->GetMotionMaster()->MoveIdle(); - - m_creature->GetMotionMaster()->MovePoint(WP_LAST_POINT, LastPos.x, LastPos.y, LastPos.z); + float x, y, z, o; + m_creature->GetHomePosition(x, y, z, o); + m_creature->GetMotionMaster()->MovePoint(WP_LAST_POINT, x, y, z); + debug_log("TSCR: EscortAI has left combat and is now returning to last point %f %f %f.", x, y, z); } else - { - m_creature->GetMotionMaster()->MovementExpired(); m_creature->GetMotionMaster()->MoveTargetedHome(); - } Reset(); } @@ -208,22 +175,8 @@ void npc_escortAI::UpdateAI(const uint32 diff) }else PlayerTimer -= diff; } - if(CanMelee) - { - //Check if we have a current target - if( m_creature->isAlive() && UpdateVictim()) - { - //If we are within range melee the target - if( m_creature->IsWithinMeleeRange(m_creature->getVictim())) - { - if( m_creature->isAttackReady() ) - { - m_creature->AttackerStateUpdate(m_creature->getVictim()); - m_creature->resetAttackTimer(); - } - } - } - } + if(CanMelee && UpdateVictim()) + DoMeleeAttackIfReady(); } void npc_escortAI::MovementInform(uint32 type, uint32 id) @@ -261,6 +214,7 @@ void npc_escortAI::MovementInform(uint32 type, uint32 id) } } +/* void npc_escortAI::OnPossess(bool apply) { // We got possessed in the middle of being escorted, store the point @@ -277,8 +231,7 @@ void npc_escortAI::OnPossess(bool apply) } } } - - +*/ void npc_escortAI::AddWaypoint(uint32 id, float x, float y, float z, uint32 WaitTimeMs) { @@ -380,4 +333,3 @@ void npc_escortAI::Start(bool bAttack, bool bDefend, bool bRun, uint64 pGUID) IsOnHold = false; CombatMovement = true; } - diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.h b/src/bindings/scripts/scripts/npc/npc_escortAI.h index 362c7ed902a..6defa4413e1 100644 --- a/src/bindings/scripts/scripts/npc/npc_escortAI.h +++ b/src/bindings/scripts/scripts/npc/npc_escortAI.h @@ -35,11 +35,8 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI virtual void WaypointReached(uint32) = 0; // CreatureAI functions - npc_escortAI(Creature *c) : ScriptedAI(c), IsBeingEscorted(false), PlayerTimer(1000), MaxPlayerDistance(DEFAULT_MAX_PLAYER_DISTANCE), CanMelee(true), DespawnAtEnd(true), DespawnAtFar(true) {m_creature->GetPosition(LastPos.x, LastPos.y, LastPos.z);} - - bool IsVisible(Unit*) const; - - void EnterCombat(Unit *); + npc_escortAI(Creature *c) : ScriptedAI(c), IsBeingEscorted(false), PlayerTimer(1000), MaxPlayerDistance(DEFAULT_MAX_PLAYER_DISTANCE), CanMelee(true), DespawnAtEnd(true), DespawnAtFar(true) + {} void AttackStart(Unit*); @@ -53,8 +50,6 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI void MovementInform(uint32, uint32); - void OnPossess(bool apply); - // EscortAI functions void AddWaypoint(uint32 id, float x, float y, float z, uint32 WaitTimeMs = 0); @@ -83,13 +78,6 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI uint32 m_uiNpcFlags; float MaxPlayerDistance; - struct - { - float x; - float y; - float z; - }LastPos; - std::list<Escort_Waypoint> WaypointList; std::list<Escort_Waypoint>::iterator CurrentWP; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 7b6b65bbb5a..3835e822362 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -10081,7 +10081,7 @@ void Unit::SetInCombatState(bool PvP, Unit* enemy) if(GetTypeId() != TYPEID_PLAYER) { - if(GetMotionMaster()->GetMotionSlotType(MOTION_SLOT_IDLE) != IDLE_MOTION_TYPE) + //if(GetMotionMaster()->GetMotionSlotType(MOTION_SLOT_IDLE) != IDLE_MOTION_TYPE) ((Creature*)this)->SetHomePosition(GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation()); if(enemy) { |