From 0f150881a12e7c7936e9672dc1a7b25778a65589 Mon Sep 17 00:00:00 2001 From: megamage Date: Fri, 16 Jan 2009 19:34:49 -0600 Subject: *Do not let target get in combat until hit by attacker. --HG-- branch : trunk --- src/game/Unit.cpp | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'src/game/Unit.cpp') diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 900c7526fad..734182fa4cf 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9697,23 +9697,12 @@ void Unit::CombatStart(Unit* target) if(!target->IsStandState()/* && !target->hasUnitState(UNIT_STAT_STUNNED)*/) target->SetStandState(PLAYER_STATE_NONE); - //Call creature group update - 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 && !((Creature*)target)->HasReactState(REACT_PASSIVE) && ((Creature*)target)->AI()) - { - SetInCombatWith(target); - target->SetInCombatWith(this); ((Creature*)target)->AI()->AttackStart(this); - } - else - { - SetInCombatWith(target); - target->SetInCombatWith(this); - } + + SetInCombatWith(target); + target->SetInCombatWith(this); Unit *who = target->GetCharmerOrOwnerOrSelf(); if(who->GetTypeId() == TYPEID_PLAYER) @@ -9727,6 +9716,14 @@ void Unit::CombatStart(Unit* target) me->UpdatePvP(true); me->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT); } + + //Call creature group update + if(GetTypeId()==TYPEID_UNIT && ((Creature*)this)->GetFormationID()) + { + CreatureGroupHolderType::iterator itr = CreatureGroupHolder.find(((Creature*)this)->GetFormationID()); + if(itr != CreatureGroupHolder.end()) + itr->second->MemberHasAttacked(((Creature*)this)); + } } void Unit::SetInCombatState(bool PvP) -- cgit v1.2.3 From f017b964adbce89b7f898beb39b19b55ffa9a5dd Mon Sep 17 00:00:00 2001 From: megamage Date: Fri, 16 Jan 2009 19:37:47 -0600 Subject: *Only let aggressive creature search new target before enterevademode. --HG-- branch : trunk --- src/game/Unit.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/game/Unit.cpp') diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 734182fa4cf..28a34dd7dea 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -10411,12 +10411,15 @@ bool Unit::SelectHostilTarget() } // search nearby enemy before enter evade mode - if(Unit *target = ((Creature*)this)->SelectNearestTarget()) + if(((Creature*)target)->HasReactState(REACT_AGGRESSIVE)) { - if(!((Creature*)this)->IsOutOfThreatArea(target)) + if(Unit *target = ((Creature*)this)->SelectNearestTarget()) { - ((Creature*)this)->AI()->AttackStart(target); - return true; + if(!((Creature*)this)->IsOutOfThreatArea(target)) + { + ((Creature*)this)->AI()->AttackStart(target); + return true; + } } } -- cgit v1.2.3 From 660263ed1bbe1ce8d085e591c2947ca0bb2e76ce Mon Sep 17 00:00:00 2001 From: megamage Date: Fri, 16 Jan 2009 22:54:50 -0600 Subject: *Fix a typo that causes crash. Do not use 867! --HG-- branch : trunk --- src/game/Unit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/game/Unit.cpp') diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 28a34dd7dea..370a94bd93f 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -10411,7 +10411,7 @@ bool Unit::SelectHostilTarget() } // search nearby enemy before enter evade mode - if(((Creature*)target)->HasReactState(REACT_AGGRESSIVE)) + if(((Creature*)this)->HasReactState(REACT_AGGRESSIVE)) { if(Unit *target = ((Creature*)this)->SelectNearestTarget()) { -- cgit v1.2.3