mirror of
https://github.com/EQEmu/Server.git
synced 2026-01-06 01:03:52 +00:00
This adds the `dz_switch_id` field to doors and dynamic_zones. It will allow for compasses to be automatically added to dz entrances and will support moving clients to the dz on use without needing to script it. These can be imported for switches/doors from live packet dumps. Also removes compass packet encoders (same struct in all clients)
99 lines
2.9 KiB
C++
99 lines
2.9 KiB
C++
#ifndef DOORS_H
|
|
#define DOORS_H
|
|
|
|
#include "mob.h"
|
|
#include "../common/repositories/doors_repository.h"
|
|
|
|
class Client;
|
|
class Mob;
|
|
class NPC;
|
|
struct Door;
|
|
|
|
class Doors : public Entity
|
|
{
|
|
public:
|
|
~Doors();
|
|
|
|
Doors(const char *model, const glm::vec4& position, uint8 open_type = 58, uint16 size = 100);
|
|
Doors(const DoorsRepository::Doors& door);
|
|
|
|
bool GetDisableTimer() { return disable_timer; }
|
|
bool IsDoor() const { return true; }
|
|
bool IsDoorOpen() { return is_open; }
|
|
bool Process();
|
|
bool triggered;
|
|
char *GetDoorName() { return door_name; }
|
|
const glm::vec4 GetDestination() const { return m_Destination; }
|
|
const glm::vec4 &GetPosition() const { return m_Position; }
|
|
int GetDzSwitchID() const { return m_dz_switch_id; }
|
|
int GetIncline() { return incline; }
|
|
int GetInvertState() { return invert_state; }
|
|
uint8 GetDoorID() { return door_id; }
|
|
uint8 GetNoKeyring() { return no_key_ring; }
|
|
uint8 GetOpenType() { return open_type; }
|
|
uint8 GetTriggerDoorID() { return trigger_door; }
|
|
uint8 GetTriggerType() { return trigger_type; }
|
|
uint8 IsLDoNDoor() { return is_ldon_door; }
|
|
uint16 GetLockpick() { return lockpick; }
|
|
uint16 GetSize() { return size; }
|
|
uint32 GetClientVersionMask() { return client_version_mask; }
|
|
uint32 GetDoorDBID() { return database_id; }
|
|
uint32 GetDoorParam() { return door_param; }
|
|
uint32 GetEntityID() { return entity_id; }
|
|
uint32 GetGuildID() { return guild_id; }
|
|
uint32 GetKeyItem() { return key_item_id; }
|
|
void CreateDatabaseEntry();
|
|
void ForceClose(Mob *sender, bool alt_mode = false);
|
|
void ForceOpen(Mob *sender, bool alt_mode = false);
|
|
void HandleClick(Client *sender, uint8 trigger);
|
|
void Open(Mob *sender, bool alt_mode = false);
|
|
void SetDisableTimer(bool flag);
|
|
void SetDoorName(const char *name);
|
|
void SetEntityID(uint32 entity) { entity_id = entity; }
|
|
void SetIncline(int in);
|
|
void SetInvertState(int in);
|
|
void SetKeyItem(uint32 in) { key_item_id = in; }
|
|
void SetLocation(float x, float y, float z);
|
|
void SetLockpick(uint16 in) { lockpick = in; }
|
|
void SetNoKeyring(uint8 in) { no_key_ring = in; }
|
|
void SetOpenState(bool st) { is_open = st; }
|
|
void SetOpenType(uint8 in);
|
|
void SetPosition(const glm::vec4 &position);
|
|
void SetSize(uint16 size);
|
|
void ToggleState(Mob *sender);
|
|
|
|
float GetX();
|
|
float GetY();
|
|
float GetZ();
|
|
|
|
private:
|
|
|
|
uint32 database_id;
|
|
uint8 door_id;
|
|
char zone_name[32];
|
|
char door_name[32];
|
|
glm::vec4 m_Position;
|
|
int incline;
|
|
uint8 open_type;
|
|
uint32 guild_id;
|
|
uint16 lockpick;
|
|
uint32 key_item_id;
|
|
uint8 no_key_ring;
|
|
uint8 trigger_door;
|
|
uint8 trigger_type;
|
|
uint32 door_param;
|
|
uint16 size;
|
|
int invert_state;
|
|
uint32 entity_id;
|
|
bool disable_timer;
|
|
bool is_open;
|
|
Timer close_timer;
|
|
char destination_zone_name[16];
|
|
int destination_instance_id;
|
|
glm::vec4 m_Destination;
|
|
uint8 is_ldon_door;
|
|
int m_dz_switch_id = 0;
|
|
uint32 client_version_mask;
|
|
};
|
|
#endif
|