From e4be94461bb999c41e5d91826e1b64e245829ba6 Mon Sep 17 00:00:00 2001 From: "shadowu@mail.bg" Date: Tue, 16 Dec 2008 09:39:33 +0200 Subject: [PATCH] *Creature Groups - additional checks added.(hope it fix the crash). VC71 VC80 updated. --HG-- branch : trunk --- src/game/Creature.h | 2 +- src/game/Traveller.h | 5 +++-- src/game/Unit.cpp | 3 ++- win/VC71/game.vcproj | 6 ++++++ win/VC80/game.vcproj | 8 ++++++++ 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/game/Creature.h b/src/game/Creature.h index f35c833d4d..abffa6c710 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -627,7 +627,7 @@ class TRINITY_DLL_SPEC Creature : public Unit void UpdateWaypointID(uint32 wpID){m_waypointID = wpID;} void SearchFormation(); - bool IsFormationLeader() {return GetDBTableGUIDLow() == m_formationID;} + bool IsFormationLeader() {return (GetDBTableGUIDLow() && GetDBTableGUIDLow() == m_formationID);} uint32 GetFormationID(){return m_formationID;} protected: diff --git a/src/game/Traveller.h b/src/game/Traveller.h index 9611f2ea6e..0ac136ff67 100644 --- a/src/game/Traveller.h +++ b/src/game/Traveller.h @@ -80,8 +80,9 @@ template<> inline void Traveller::MoveTo(float x, float y, float z, uint32 t) { //Call for creature group update - if(i_traveller.IsFormationLeader() && !i_traveller.isInCombat()) - CreatureGroupHolder[i_traveller.GetFormationID()]->LeaderMovedInEvade(); + if(i_traveller.IsFormationLeader() && !i_traveller.isInCombat() && + CreatureGroupHolder.find(i_traveller.GetFormationID()) != CreatureGroupHolder.end()) + CreatureGroupHolder[i_traveller.GetFormationID()]->LeaderMovedInEvade(); i_traveller.AI_SendMoveToPacket(x, y, z, t, i_traveller.GetUnitMovementFlags(), 0); } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 6dcc96500c..19ea4029cf 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9688,7 +9688,8 @@ void Unit::CombatStart(Unit* target) target->SetStandState(PLAYER_STATE_NONE); //Call creature group update - if(GetTypeId()==TYPEID_UNIT && ((Creature *)this)->GetFormationID()) + if(GetTypeId()==TYPEID_UNIT && ((Creature *)this)->GetFormationID() && + CreatureGroupHolder.find(((Creature *)this)->GetFormationID()) != CreatureGroupHolder.end()) CreatureGroupHolder[((Creature *)this)->GetFormationID()]->MemberHasAttacked(((Creature *)this)); if(!target->isInCombat() && target->GetTypeId() != TYPEID_PLAYER diff --git a/win/VC71/game.vcproj b/win/VC71/game.vcproj index 722300b9e8..923845a761 100644 --- a/win/VC71/game.vcproj +++ b/win/VC71/game.vcproj @@ -592,6 +592,12 @@ + + + + diff --git a/win/VC80/game.vcproj b/win/VC80/game.vcproj index d8bd6bf726..e456ebbf23 100644 --- a/win/VC80/game.vcproj +++ b/win/VC80/game.vcproj @@ -946,6 +946,14 @@ RelativePath="..\..\src\game\CreatureAISelector.h" > + + + +