mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-14 19:51:29 +00:00
Fix issue where size 0 NPC's would hop in and out of the ground because FixZ calculates the offset wrong by adding a default race size
This commit is contained in:
parent
a20615ea11
commit
7a7069959f
57
zone/mob.cpp
57
zone/mob.cpp
@ -6052,6 +6052,63 @@ void Mob::CommonBreakInvisible()
|
|||||||
CancelSneakHide();
|
CancelSneakHide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float Mob::GetDefaultRaceSize() const {
|
||||||
|
switch (race) {
|
||||||
|
case RACE_HUMAN_1:
|
||||||
|
return 6.0;
|
||||||
|
break;
|
||||||
|
case RACE_BARBARIAN_2:
|
||||||
|
return 7.0;
|
||||||
|
break;
|
||||||
|
case RACE_ERUDITE_3:
|
||||||
|
return 6.0;
|
||||||
|
break;
|
||||||
|
case RACE_WOOD_ELF_4:
|
||||||
|
return 5.0;
|
||||||
|
break;
|
||||||
|
case RACE_HIGH_ELF_5:
|
||||||
|
return 6.0;
|
||||||
|
break;
|
||||||
|
case RACE_DARK_ELF_6:
|
||||||
|
return 5.0;
|
||||||
|
break;
|
||||||
|
case RACE_HALF_ELF_7:
|
||||||
|
return 5.5;
|
||||||
|
break;
|
||||||
|
case RACE_DWARF_8:
|
||||||
|
return 4.0;
|
||||||
|
break;
|
||||||
|
case RACE_TROLL_9:
|
||||||
|
return 8.0;
|
||||||
|
break;
|
||||||
|
case RACE_OGRE_10:
|
||||||
|
return 9.0;
|
||||||
|
break;
|
||||||
|
case RACE_HALFLING_11:
|
||||||
|
return 3.5;
|
||||||
|
break;
|
||||||
|
case RACE_GNOME_12:
|
||||||
|
return 3.0;
|
||||||
|
break;
|
||||||
|
case RACE_IKSAR_128:
|
||||||
|
return 6.0;
|
||||||
|
break;
|
||||||
|
case RACE_VAH_SHIR_130:
|
||||||
|
return 7.0;
|
||||||
|
break;
|
||||||
|
case RACE_FROGLOK_330:
|
||||||
|
return 5.0;
|
||||||
|
break;
|
||||||
|
case RACE_DRAKKIN_522:
|
||||||
|
return 5.0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return 6.0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef BOTS
|
#ifdef BOTS
|
||||||
bool Mob::JoinHealRotationTargetPool(std::shared_ptr<HealRotation>* heal_rotation)
|
bool Mob::JoinHealRotationTargetPool(std::shared_ptr<HealRotation>* heal_rotation)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -537,7 +537,7 @@ public:
|
|||||||
inline const float GetTarVZ() const { return m_TargetV.z; }
|
inline const float GetTarVZ() const { return m_TargetV.z; }
|
||||||
inline const float GetTarVector() const { return tar_vector; }
|
inline const float GetTarVector() const { return tar_vector; }
|
||||||
inline const uint8 GetTarNDX() const { return tar_ndx; }
|
inline const uint8 GetTarNDX() const { return tar_ndx; }
|
||||||
inline const int8 GetFlyMode() const { return flymode; }
|
inline const int8 GetFlyMode() const { return static_cast<const int8>(flymode); }
|
||||||
bool IsBoat() const;
|
bool IsBoat() const;
|
||||||
|
|
||||||
//Group
|
//Group
|
||||||
@ -986,6 +986,7 @@ public:
|
|||||||
void SendTo(float new_x, float new_y, float new_z);
|
void SendTo(float new_x, float new_y, float new_z);
|
||||||
void SendToFixZ(float new_x, float new_y, float new_z);
|
void SendToFixZ(float new_x, float new_y, float new_z);
|
||||||
float GetZOffset() const;
|
float GetZOffset() const;
|
||||||
|
float GetDefaultRaceSize() const;
|
||||||
void FixZ(int32 z_find_offset = 5);
|
void FixZ(int32 z_find_offset = 5);
|
||||||
float GetFixedZ(glm::vec3 position, int32 z_find_offset = 5);
|
float GetFixedZ(glm::vec3 position, int32 z_find_offset = 5);
|
||||||
|
|
||||||
|
|||||||
@ -746,8 +746,7 @@ void Mob::SendToFixZ(float new_x, float new_y, float new_z) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float Mob::GetFixedZ(glm::vec3 dest, int32 z_find_offset)
|
float Mob::GetFixedZ(glm::vec3 dest, int32 z_find_offset) {
|
||||||
{
|
|
||||||
BenchTimer timer;
|
BenchTimer timer;
|
||||||
timer.reset();
|
timer.reset();
|
||||||
float new_z = dest.z;
|
float new_z = dest.z;
|
||||||
@ -806,110 +805,112 @@ void Mob::FixZ(int32 z_find_offset /*= 5*/) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
float Mob::GetZOffset() const {
|
float Mob::GetZOffset() const {
|
||||||
float offset = 3.125f;
|
float offset = 3.125f;
|
||||||
|
|
||||||
switch (race) {
|
switch (race) {
|
||||||
case 436:
|
case RACE_BASILISK_436:
|
||||||
offset = 0.577f;
|
offset = 0.577f;
|
||||||
break;
|
break;
|
||||||
case 430:
|
case RACE_DRAKE_430:
|
||||||
offset = 0.5f;
|
offset = 0.5f;
|
||||||
break;
|
break;
|
||||||
case 432:
|
case RACE_DRAKE_432:
|
||||||
offset = 1.9f;
|
offset = 1.9f;
|
||||||
break;
|
break;
|
||||||
case 435:
|
case RACE_DRAGON_435:
|
||||||
offset = 0.93f;
|
offset = 0.93f;
|
||||||
break;
|
break;
|
||||||
case 450:
|
case RACE_LAVA_SPIDER_450:
|
||||||
offset = 0.938f;
|
offset = 0.938f;
|
||||||
break;
|
break;
|
||||||
case 479:
|
case RACE_ALLIGATOR_479:
|
||||||
offset = 0.8f;
|
offset = 0.8f;
|
||||||
break;
|
break;
|
||||||
case 451:
|
case RACE_LAVA_SPIDER_QUEEN_451:
|
||||||
offset = 0.816f;
|
offset = 0.816f;
|
||||||
break;
|
break;
|
||||||
case 437:
|
case RACE_DRAGON_437:
|
||||||
offset = 0.527f;
|
offset = 0.527f;
|
||||||
break;
|
break;
|
||||||
case 439:
|
case RACE_PUMA_439:
|
||||||
offset = 1.536f;
|
offset = 1.536f;
|
||||||
break;
|
break;
|
||||||
case 415:
|
case RACE_RAT_415:
|
||||||
offset = 1.0f;
|
offset = 1.0f;
|
||||||
break;
|
break;
|
||||||
case 438:
|
case RACE_DRAGON_438:
|
||||||
offset = 0.776f;
|
offset = 0.776f;
|
||||||
break;
|
break;
|
||||||
case 452:
|
case RACE_DRAGON_452:
|
||||||
offset = 0.776f;
|
offset = 0.776f;
|
||||||
break;
|
break;
|
||||||
case 441:
|
case RACE_SPIDER_QUEEN_441:
|
||||||
offset = 0.816f;
|
offset = 0.816f;
|
||||||
break;
|
break;
|
||||||
case 440:
|
case RACE_SPIDER_440:
|
||||||
offset = 0.938f;
|
offset = 0.938f;
|
||||||
break;
|
break;
|
||||||
case 468:
|
case RACE_SNAKE_468:
|
||||||
offset = 1.0f;
|
offset = 1.0f;
|
||||||
break;
|
break;
|
||||||
case 459:
|
case RACE_CORATHUS_459:
|
||||||
offset = 1.0f;
|
offset = 1.0f;
|
||||||
break;
|
break;
|
||||||
case 462:
|
case RACE_DRACHNID_COCOON_462:
|
||||||
offset = 1.5f;
|
offset = 1.5f;
|
||||||
break;
|
break;
|
||||||
case 530:
|
case RACE_DRAGON_530:
|
||||||
offset = 1.2f;
|
offset = 1.2f;
|
||||||
break;
|
break;
|
||||||
case 549:
|
case RACE_GOO_549:
|
||||||
offset = 0.5f;
|
offset = 0.5f;
|
||||||
break;
|
break;
|
||||||
case 548:
|
case RACE_GOO_548:
|
||||||
offset = 0.5f;
|
offset = 0.5f;
|
||||||
break;
|
break;
|
||||||
case 547:
|
case RACE_GOO_547:
|
||||||
offset = 0.5f;
|
offset = 0.5f;
|
||||||
break;
|
break;
|
||||||
case 604:
|
case RACE_DRACOLICH_604:
|
||||||
offset = 1.2f;
|
offset = 1.2f;
|
||||||
break;
|
break;
|
||||||
case 653:
|
case RACE_TELMIRA_653:
|
||||||
offset = 5.9f;
|
offset = 5.9f;
|
||||||
break;
|
break;
|
||||||
case 658:
|
case RACE_MORELL_THULE_658:
|
||||||
offset = 4.0f;
|
offset = 4.0f;
|
||||||
break;
|
break;
|
||||||
case 323:
|
case RACE_ARMOR_OF_MARR_323:
|
||||||
offset = 5.0f;
|
offset = 5.0f;
|
||||||
break;
|
break;
|
||||||
case 663:
|
case RACE_AMYGDALAN_663:
|
||||||
offset = 5.0f;
|
offset = 5.0f;
|
||||||
break;
|
break;
|
||||||
case 664:
|
case RACE_SANDMAN_664:
|
||||||
offset = 4.0f;
|
offset = 4.0f;
|
||||||
break;
|
break;
|
||||||
case 703:
|
case RACE_ALARAN_SENTRY_STONE_703:
|
||||||
offset = 9.0f;
|
offset = 9.0f;
|
||||||
break;
|
break;
|
||||||
case 688:
|
case RACE_RABBIT_668:
|
||||||
offset = 5.0f;
|
offset = 5.0f;
|
||||||
break;
|
break;
|
||||||
case 669:
|
case RACE_BLIND_DREAMER_669:
|
||||||
offset = 7.0f;
|
offset = 7.0f;
|
||||||
break;
|
break;
|
||||||
case 687:
|
case RACE_GORAL_687:
|
||||||
offset = 2.0f;
|
offset = 2.0f;
|
||||||
break;
|
break;
|
||||||
case 686:
|
case RACE_SELYRAH_686:
|
||||||
offset = 2.0f;
|
offset = 2.0f;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
offset = 3.125f;
|
offset = 3.125f;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0.2 * GetSize() * offset;
|
float mob_size = (GetSize() > 0 ? GetSize() : GetDefaultRaceSize());
|
||||||
|
|
||||||
|
return static_cast<float>(0.2 * mob_size * offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function will try to move the mob along the relative angle a set distance
|
// This function will try to move the mob along the relative angle a set distance
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user