mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
[Fix] Boats should never get FixZ'd (#2246)
* Boats should never get FixZ'd * Use member variable to avoid repetitive checks * Resolve comments from review * Fix return type
This commit is contained in:
parent
15113f4056
commit
3936b2b882
@ -512,6 +512,8 @@ Mob::Mob(
|
||||
mob_close_scan_timer.Trigger();
|
||||
|
||||
SetCanOpenDoors(true);
|
||||
|
||||
is_boat = IsBoat();
|
||||
}
|
||||
|
||||
Mob::~Mob()
|
||||
@ -3741,7 +3743,7 @@ bool Mob::HateSummon() {
|
||||
|
||||
void Mob::FaceTarget(Mob* mob_to_face /*= 0*/) {
|
||||
|
||||
if (IsBoat()) {
|
||||
if (GetIsBoat()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -630,7 +630,9 @@ public:
|
||||
inline const float GetSize() const { return size; }
|
||||
inline const float GetBaseSize() const { return base_size; }
|
||||
inline const GravityBehavior GetFlyMode() const { return flymode; }
|
||||
bool IsBoat() const;
|
||||
bool IsBoat() const; // Checks races - used on mob instantiation
|
||||
bool GetIsBoat() const { return is_boat; } // Set on instantiation for speed
|
||||
void SetIsBoat(bool boat) { is_boat = boat; }
|
||||
bool IsControllableBoat() const;
|
||||
inline const bool AlwaysAggro() const { return always_aggro; }
|
||||
|
||||
@ -1664,6 +1666,7 @@ protected:
|
||||
bool endur_upkeep;
|
||||
bool degenerating_effects; // true if we have a buff that needs to be recalced every tick
|
||||
bool spawned_in_water;
|
||||
bool is_boat;
|
||||
|
||||
CombatRecord combat_record{};
|
||||
|
||||
|
||||
@ -1075,7 +1075,7 @@ void MobMovementManager::UpdatePath(Mob *who, float x, float y, float z, MobMove
|
||||
return;
|
||||
}
|
||||
|
||||
if (who->IsBoat()) {
|
||||
if (who->GetIsBoat()) {
|
||||
UpdatePathBoat(who, x, y, z, mob_movement_mode);
|
||||
}
|
||||
else if (who->IsUnderwaterOnly()) {
|
||||
|
||||
@ -236,7 +236,7 @@ NPC::NPC(const NPCType *npc_type_data, Spawn2 *in_respawn, const glm::vec4 &posi
|
||||
if (npc_type_data->flymode >= 0) {
|
||||
flymode = static_cast<GravityBehavior>(npc_type_data->flymode);
|
||||
}
|
||||
else if (IsBoat()) {
|
||||
else if (GetIsBoat()) {
|
||||
flymode = GravityBehavior::Floating;
|
||||
}
|
||||
|
||||
|
||||
@ -809,6 +809,10 @@ void Mob::FixZ(int32 z_find_offset /*= 5*/, bool fix_client_z /*= false*/) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetIsBoat()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (flymode == GravityBehavior::Flying) {
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user