Changeset 143
- Timestamp:
- 11/19/08 13:40:10 (17 years ago)
- Location:
- trunk/src/game
- Files:
-
- 4 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/game/ObjectMgr.cpp
r135 r143 959 959 sLog.outString( ">> Loaded %u creature model based info", sCreatureModelStorage.RecordCount ); 960 960 sLog.outString(); 961 962 // check if combat_reach is valid 963 for(uint32 i = 1; i < sCreatureModelStorage.MaxEntry; ++i) 964 { 965 CreatureModelInfo const* mInfo = sCreatureModelStorage.LookupEntry<CreatureModelInfo>(i); 966 if(!mInfo) 967 continue; 968 969 if(mInfo->combat_reach < 0.5f) 970 { 971 sLog.outErrorDb("Creature model (Entry: %u) has invalid combat reach (%f), setting it to 0.5", mInfo->modelid, mInfo->combat_reach); 972 const_cast<CreatureModelInfo*>(mInfo)->combat_reach = 0.5f; 973 } 974 } 961 975 } 962 976 -
trunk/src/game/TargetedMovementGenerator.cpp
r141 r143 165 165 i_destinationHolder.ResetUpdate(50); 166 166 167 float dist = owner.Get FloatValue(UNIT_FIELD_COMBATREACH) + i_target.getTarget()->GetFloatValue(UNIT_FIELD_COMBATREACH) + sWorld.getRate(RATE_TARGET_POS_RECALCULATION_RANGE);167 float dist = owner.GetCombatReach() + i_target.getTarget()->GetCombatReach() + sWorld.getRate(RATE_TARGET_POS_RECALCULATION_RANGE); 168 168 169 169 //More distance let have better performance, less distance let have more sensitive reaction at target move. -
trunk/src/game/Unit.cpp
r142 r143 406 406 { 407 407 assert(pVictim); 408 float reach = GetFloatValue(UNIT_FIELD_COMBATREACH); 409 if( reach <= 0.0f ) 410 reach = 1.0f; 411 return IsWithinDistInMap(pVictim, reach); 408 return IsWithinDistInMap(pVictim, GetCombatReach()); 412 409 } 413 410 … … 421 418 float distsq = dx*dx + dy*dy + dz*dz; 422 419 //not sure here, or combatreach + combatreach? 423 float sizefactor = Get FloatValue(UNIT_FIELD_COMBATREACH) + obj->GetFloatValue(UNIT_FIELD_COMBATREACH);420 float sizefactor = GetCombatReach() + obj->GetCombatReach(); 424 421 float maxdist = dist2compare + sizefactor; 425 422 … … 431 428 uint32 attacker_number = getAttackers().size(); 432 429 if(attacker_number > 0) --attacker_number; 433 GetNearPoint(obj,x,y,z,obj->Get FloatValue(UNIT_FIELD_COMBATREACH),distance2dMin+(distance2dMax-distance2dMin)*rand_norm()434 , GetAngle(obj) + (attacker_number ? (M_PI/2 - M_PI * rand_norm()) * (float)attacker_number / Get FloatValue(UNIT_FIELD_COMBATREACH) / 3 : 0));430 GetNearPoint(obj,x,y,z,obj->GetCombatReach(), distance2dMin+(distance2dMax-distance2dMin)*rand_norm() 431 , GetAngle(obj) + (attacker_number ? (M_PI/2 - M_PI * rand_norm()) * (float)attacker_number / GetCombatReach() / 3 : 0)); 435 432 } 436 433 -
trunk/src/game/Unit.h
r142 r143 722 722 void SetCanDualWield(bool value) { m_canDualWield = value; } 723 723 bool canReachWithAttack(Unit *pVictim) const; 724 float GetCombatReach() const { return m_floatValues[UNIT_FIELD_COMBATREACH]; } 724 725 bool IsWithinCombatDist(Unit *obj, float dist2compare) const; 725 726 void GetRandomContactPoint( const Unit* target, float &x, float &y, float &z, float distance2dMin, float distance2dMax ) const;