TrinityCore
Loading...
Searching...
No Matches
Corpse.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef TRINITYCORE_CORPSE_H
19#define TRINITYCORE_CORPSE_H
20
21#include "Object.h"
22#include "GridObject.h"
23#include "DatabaseEnvFwd.h"
24#include "GridDefines.h"
25#include "Loot.h"
26
33#define MAX_CORPSE_TYPE 3
34
35// Value equal client resurrection dialog show radius.
36#define CORPSE_RECLAIM_RADIUS 39
37
48
50
51class TC_GAME_API Corpse : public WorldObject, public GridObject<Corpse>
52{
53 public:
54 explicit Corpse(CorpseType type = CORPSE_BONES);
55 ~Corpse();
56
57 void AddToWorld() override;
58 void RemoveFromWorld() override;
59
60 bool Create(ObjectGuid::LowType guidlow);
61 bool Create(ObjectGuid::LowType guidlow, Player* owner);
62
63 void SaveToDB();
64 bool LoadCorpseFromDB(ObjectGuid::LowType guid, Field* fields);
65
66 void DeleteFromDB(CharacterDatabaseTransaction trans);
67 static void DeleteFromDB(ObjectGuid const& ownerGuid, CharacterDatabaseTransaction trans);
68
74
80
84 void SetPartyGUID(ObjectGuid partyGuid) { SetGuidValue(CORPSE_FIELD_PARTY, partyGuid); }
93 uint32 GetFaction() const override;
94 uint32 GetItem(uint32 slot) const { return GetUInt32Value(CORPSE_FIELD_ITEM + slot); }
95 void SetItem(uint32 slot, uint32 item) { SetUInt32Value(CORPSE_FIELD_ITEM + slot, item); }
96
102 void SetHairStyleId(uint8 hairStyle) { SetByteValue(CORPSE_FIELD_BYTES_2, 1, hairStyle); }
104 void SetHairColorId(uint8 hairColor) { SetByteValue(CORPSE_FIELD_BYTES_2, 2, hairColor); }
106 void SetFacialStyle(uint8 facialStyle) { SetByteValue(CORPSE_FIELD_BYTES_2, 3, facialStyle); }
107
108 time_t const& GetGhostTime() const { return m_time; }
109 void ResetGhostTime();
110 CorpseType GetType() const { return m_type; }
111
112 CellCoord const& GetCellCoord() const { return _cellCoord; }
113 void SetCellCoord(CellCoord const& cellCoord) { _cellCoord = cellCoord; }
114
115 Loot loot; // remove insignia ONLY at BG
117
118 bool IsExpired(time_t t) const;
119
120 private:
122 time_t m_time;
124};
125#endif
CorpseType
Definition Corpse.h:28
@ CORPSE_RESURRECTABLE_PVE
Definition Corpse.h:30
@ CORPSE_RESURRECTABLE_PVP
Definition Corpse.h:31
@ CORPSE_BONES
Definition Corpse.h:29
CorpseFlags
Definition Corpse.h:39
@ CORPSE_FLAG_UNK1
Definition Corpse.h:42
@ CORPSE_FLAG_HIDE_CLOAK
Definition Corpse.h:45
@ CORPSE_FLAG_NONE
Definition Corpse.h:40
@ CORPSE_FLAG_BONES
Definition Corpse.h:41
@ CORPSE_FLAG_UNK2
Definition Corpse.h:43
@ CORPSE_FLAG_HIDE_HELM
Definition Corpse.h:44
@ CORPSE_FLAG_LOOTABLE
Definition Corpse.h:46
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
#define TC_GAME_API
Definition Define.h:114
uint8_t uint8
Definition Define.h:135
uint32_t uint32
Definition Define.h:133
uint16 flags
#define DEFINE_ENUM_FLAG(enumType)
Definition EnumFlag.h:26
static void SaveToDB(QuestPool const &pool, CharacterDatabaseTransaction trans)
CorpseDynFlags
@ CORPSE_FIELD_BYTES_2
@ CORPSE_FIELD_FLAGS
@ CORPSE_FIELD_BYTES_1
@ CORPSE_FIELD_DISPLAY_ID
@ CORPSE_FIELD_ITEM
@ CORPSE_FIELD_OWNER
@ CORPSE_FIELD_GUILD
@ CORPSE_FIELD_PARTY
@ CORPSE_FIELD_DYNAMIC_FLAGS
void SetHairStyleId(uint8 hairStyle)
Definition Corpse.h:102
CellCoord _cellCoord
Definition Corpse.h:123
uint32 GetDisplayId() const
Definition Corpse.h:87
uint8 GetHairColorId() const
Definition Corpse.h:103
void SetRace(uint8 race)
Definition Corpse.h:90
ObjectGuid GetPartyGUID() const
Definition Corpse.h:83
uint8 GetRace() const
Definition Corpse.h:89
bool HasCorpseDynamicFlag(CorpseDynFlags flags) const
Definition Corpse.h:76
void SetSex(uint8 sex)
Definition Corpse.h:92
uint8 GetSkinId() const
Definition Corpse.h:97
bool HasCorpseFlag(CorpseFlags flags) const
Definition Corpse.h:70
void ReplaceAllCorpseDynamicFlags(CorpseDynFlags flag)
Definition Corpse.h:79
void SetDisplayId(uint32 displayId)
Definition Corpse.h:88
void SetCorpseFlag(CorpseFlags flags)
Definition Corpse.h:71
Player * lootRecipient
Definition Corpse.h:116
CorpseType m_type
Definition Corpse.h:121
CorpseDynFlags GetCorpseDynamicFlags() const
Definition Corpse.h:75
uint32 GetGuildId() const
Definition Corpse.h:85
void RemoveCorpseDynamicFlag(CorpseDynFlags flag)
Definition Corpse.h:78
void ReplaceAllCorpseFlags(CorpseFlags flags)
Definition Corpse.h:73
void SetOwnerGUID(ObjectGuid owner)
Definition Corpse.h:82
void SetPartyGUID(ObjectGuid partyGuid)
Definition Corpse.h:84
void SetFacialStyle(uint8 facialStyle)
Definition Corpse.h:106
Loot loot
Definition Corpse.h:115
void SetCorpseDynamicFlag(CorpseDynFlags flag)
Definition Corpse.h:77
uint8 GetHairStyleId() const
Definition Corpse.h:101
time_t const & GetGhostTime() const
Definition Corpse.h:108
CellCoord const & GetCellCoord() const
Definition Corpse.h:112
time_t m_time
Definition Corpse.h:122
uint32 GetItem(uint32 slot) const
Definition Corpse.h:94
CorpseFlags GetCorpseFlags() const
Definition Corpse.h:69
ObjectGuid GetOwnerGUID() const override
Definition Corpse.h:81
void RemoveCorpseFlag(CorpseFlags flags)
Definition Corpse.h:72
void SetFaceId(uint8 face)
Definition Corpse.h:100
void SetCellCoord(CellCoord const &cellCoord)
Definition Corpse.h:113
uint8 GetSex() const
Definition Corpse.h:91
void SetGuildId(uint32 guildId)
Definition Corpse.h:86
uint8 GetFacialStyle() const
Definition Corpse.h:105
CorpseType GetType() const
Definition Corpse.h:110
void SetHairColorId(uint8 hairColor)
Definition Corpse.h:104
uint8 GetFaceId() const
Definition Corpse.h:99
void SetSkinId(uint8 skin)
Definition Corpse.h:98
void SetItem(uint32 slot, uint32 item)
Definition Corpse.h:95
Class used to access individual fields of database query result.
Definition Field.h:92
uint32 LowType
Definition ObjectGuid.h:142
uint8 GetByteValue(uint16 index, uint8 offset) const
Definition Object.cpp:259
void SetByteValue(uint16 index, uint8 offset, uint8 value)
Definition Object.cpp:660
uint32 GetUInt32Value(uint16 index) const
Definition Object.cpp:241
void SetFlag(uint16 index, uint32 newFlag)
Definition Object.cpp:761
void RemoveFlag(uint16 index, uint32 oldFlag)
Definition Object.cpp:776
void SetGuidValue(uint16 index, ObjectGuid value)
Definition Object.cpp:691
void SetUInt32Value(uint16 index, uint32 value)
Definition Object.cpp:577
ObjectGuid GetGuidValue(uint16 index) const
Definition Object.cpp:273
void AddToWorld() override
Definition Object.cpp:1061
void RemoveFromWorld() override
Definition Object.cpp:1067
virtual uint32 GetFaction() const =0
Definition Loot.h:226