aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/GameObject
diff options
context:
space:
mode:
authorKittnz <Kittnz@users.noreply.github.com>2019-01-16 20:47:25 +0100
committerGitHub <noreply@github.com>2019-01-16 20:47:25 +0100
commitd1c3ee957962897a8b323e8ca40302fc5ff8c932 (patch)
tree3172d2e387de6b2728ba7eb2700351ba2ad6740d /src/server/game/Entities/GameObject
parent583eba3688c1ab8a4c5de38e00939bc491411960 (diff)
Core/Objects: increase sight range of objects & correct general default visibility distance (#22891)
This can be used for anything really. Note: This does not make the object active. #21111 #21681
Diffstat (limited to 'src/server/game/Entities/GameObject')
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp4
-rw-r--r--src/server/game/Entities/GameObject/GameObjectData.h16
2 files changed, 20 insertions, 0 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 8ae536497f4..bae468c329c 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -399,6 +399,10 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
delete linkedGO;
}
+ // Check if GameObject is Large
+ if (goinfo->IsLargeGameObject())
+ SetVisibilityDistanceOverride(VisibilityDistanceType::Large);
+
return true;
}
diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h
index b27e004289b..ecb5ba8e684 100644
--- a/src/server/game/Entities/GameObject/GameObjectData.h
+++ b/src/server/game/Entities/GameObject/GameObjectData.h
@@ -571,6 +571,22 @@ struct GameObjectTemplate
}
}
+ bool IsLargeGameObject() const
+ {
+ switch (type)
+ {
+ case GAMEOBJECT_TYPE_BUTTON: return button.large != 0;
+ case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.large != 0;
+ case GAMEOBJECT_TYPE_GENERIC: return _generic.large != 0;
+ case GAMEOBJECT_TYPE_TRAP: return trap.large != 0;
+ case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.large != 0;
+ case GAMEOBJECT_TYPE_GOOBER: return goober.large != 0;
+ case GAMEOBJECT_TYPE_SPELLCASTER: return spellcaster.large != 0;
+ case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.large != 0;
+ default: return false;
+ }
+ }
+
void InitializeQueryData();
WorldPacket BuildQueryData(LocaleConstant loc) const;
};