aboutsummaryrefslogtreecommitdiff
path: root/src/game/Corpse.h
diff options
context:
space:
mode:
authorNeo2003 <none@none>2008-10-02 16:23:55 -0500
committerNeo2003 <none@none>2008-10-02 16:23:55 -0500
commit9b1c0e006f20091f28f3f468cfcab1feb51286bd (patch)
treeb5d1ba94a656e6679f8737f9ea6bed1239b73b14 /src/game/Corpse.h
[svn] * Proper SVN structureinit
--HG-- branch : trunk
Diffstat (limited to 'src/game/Corpse.h')
-rw-r--r--src/game/Corpse.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/game/Corpse.h b/src/game/Corpse.h
new file mode 100644
index 00000000000..f99523779a7
--- /dev/null
+++ b/src/game/Corpse.h
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef MANGOSSERVER_CORPSE_H
+#define MANGOSSERVER_CORPSE_H
+
+#include "Object.h"
+#include "Database/DatabaseEnv.h"
+#include "GridDefines.h"
+#include "LootMgr.h"
+
+enum CorpseType
+{
+ CORPSE_BONES = 0,
+ CORPSE_RESURRECTABLE_PVE = 1,
+ CORPSE_RESURRECTABLE_PVP = 2
+};
+#define MAX_CORPSE_TYPE 3
+
+// Value equal client resurrection dialog show radius.
+#define CORPSE_RECLAIM_RADIUS 39
+
+enum CorpseFlags
+{
+ CORPSE_FLAG_NONE = 0x00,
+ CORPSE_FLAG_BONES = 0x01,
+ CORPSE_FLAG_UNK1 = 0x02,
+ CORPSE_FLAG_UNK2 = 0x04,
+ CORPSE_FLAG_HIDE_HELM = 0x08,
+ CORPSE_FLAG_HIDE_CLOAK = 0x10,
+ CORPSE_FLAG_LOOTABLE = 0x20
+};
+
+class Corpse : public WorldObject
+{
+ public:
+ explicit Corpse( CorpseType type = CORPSE_BONES );
+ ~Corpse( );
+
+ void AddToWorld();
+ void RemoveFromWorld();
+
+ bool Create( uint32 guidlow );
+ bool Create( uint32 guidlow, Player *owner, uint32 mapid, float x, float y, float z, float ang );
+
+ void SaveToDB();
+ bool LoadFromDB(uint32 guid, QueryResult *result, uint32 InstanceId);
+ bool LoadFromDB(uint32 guid, Field *fields);
+
+ void DeleteBonesFromWorld();
+ void DeleteFromDB();
+
+ uint64 const& GetOwnerGUID() const { return GetUInt64Value(CORPSE_FIELD_OWNER); }
+
+ time_t const& GetGhostTime() const { return m_time; }
+ void ResetGhostTime() { m_time = time(NULL); }
+ CorpseType GetType() const { return m_type; }
+
+ GridPair const& GetGrid() const { return m_grid; }
+ void SetGrid(GridPair const& grid) { m_grid = grid; }
+
+ bool isVisibleForInState(Player const* u, bool inVisibleList) const;
+
+ Loot loot; // remove insignia ONLY at BG
+ Player* lootRecipient;
+ bool lootForBody;
+
+ void Say(const char* text, uint32 language, uint64 TargetGuid) { MonsterSay(text,language,TargetGuid); }
+ void Yell(const char* text, uint32 language, uint64 TargetGuid) { MonsterYell(text,language,TargetGuid); }
+ void TextEmote(const char* text, uint64 TargetGuid) { MonsterTextEmote(text,TargetGuid); }
+ void Whisper(const char* text, uint64 receiver) { MonsterWhisper(text,receiver); }
+ void Say(int32 textId, uint32 language, uint64 TargetGuid) { MonsterSay(textId,language,TargetGuid); }
+ void Yell(int32 textId, uint32 language, uint64 TargetGuid) { MonsterYell(textId,language,TargetGuid); }
+ void TextEmote(int32 textId, uint64 TargetGuid) { MonsterTextEmote(textId,TargetGuid); }
+ void Whisper(int32 textId,uint64 receiver) { MonsterWhisper(textId,receiver); }
+
+ GridReference<Corpse> &GetGridRef() { return m_gridRef; }
+ private:
+ GridReference<Corpse> m_gridRef;
+
+ CorpseType m_type;
+ time_t m_time;
+ GridPair m_grid; // gride for corpse position for fast search
+};
+#endif