Changeset 69
- Timestamp:
- 11/19/08 13:31:22 (17 years ago)
- Location:
- trunk/src
- Files:
-
- 5 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bindings/scripts/include/sc_creature.cpp
r44 r69 134 134 { 135 135 //If we are within range melee the target 136 if( m_creature->IsWithin DistInMap(m_creature->getVictim(), ATTACK_DISTANCE))136 if( m_creature->IsWithinCombatDist(m_creature->getVictim(), ATTACK_DISTANCE)) 137 137 { 138 138 m_creature->AttackerStateUpdate(m_creature->getVictim()); -
trunk/src/game/Player.cpp
r44 r69 1057 1057 if (isAttackReady(BASE_ATTACK)) 1058 1058 { 1059 if(!IsWithin DistInMap(pVictim, pldistance))1059 if(!IsWithinCombatDist(pVictim, pldistance)) 1060 1060 { 1061 1061 setAttackTimer(BASE_ATTACK,100); … … 1094 1094 if ( haveOffhandWeapon() && isAttackReady(OFF_ATTACK)) 1095 1095 { 1096 if(!IsWithin DistInMap(pVictim, pldistance))1096 if(!IsWithinCombatDist(pVictim, pldistance)) 1097 1097 { 1098 1098 setAttackTimer(OFF_ATTACK,100); -
trunk/src/game/Spell.cpp
r55 r69 4338 4338 { 4339 4339 // distance from target center in checks 4340 float dist = m_caster->GetDistance(target->GetPositionX(),target->GetPositionY(),target->GetPositionZ()); 4341 if(dist > max_range) 4340 if(!m_caster->IsWithinCombatDist(target, max_range)) 4342 4341 return SPELL_FAILED_OUT_OF_RANGE; //0x5A; 4343 if( dist < min_range)4342 if(min_range && m_caster->IsWithinCombatDist(target, min_range)) // skip this check if min_range = 0 4344 4343 return SPELL_FAILED_TOO_CLOSE; 4345 4344 if( m_caster->GetTypeId() == TYPEID_PLAYER && -
trunk/src/game/Unit.cpp
r63 r69 407 407 reach = 1.0f; 408 408 return IsWithinDistInMap(pVictim, reach); 409 } 410 411 bool Unit::IsWithinCombatDist(Unit *obj, float dist2compare) const 412 { 413 if (!obj || !IsInMap(obj)) return false; 414 415 float dx = GetPositionX() - obj->GetPositionX(); 416 float dy = GetPositionY() - obj->GetPositionY(); 417 float dz = GetPositionZ() - obj->GetPositionZ(); 418 float distsq = dx*dx + dy*dy + dz*dz; 419 //not sure here, or combatreach + combatreach? 420 float sizefactor = GetObjectSize() + obj->GetFloatValue(UNIT_FIELD_COMBATREACH); 421 float maxdist = dist2compare + sizefactor; 422 423 return distsq < maxdist * maxdist; 409 424 } 410 425 -
trunk/src/game/Unit.h
r61 r69 719 719 bool haveOffhandWeapon() const; 720 720 bool canReachWithAttack(Unit *pVictim) const; 721 bool IsWithinCombatDist(Unit *obj, float dist2compare) const; 721 722 uint32 m_extraAttacks; 722 723