+#ifndef DEATHTYPES_H
+#define DEATHTYPES_H
+
+#include "notifications.qh"
+
// ================================
// Deathtypes, reworked by Samual
// ================================
+int DEATH_SPECIAL_START;
+int NORMAL_POS;
+int DEATH_MONSTER_FIRST;
+int DEATH_MONSTER_LAST;
+int DEATH_TURRET_FIRST;
+int DEATH_TURRET_LAST;
+int DEATH_VHFIRST;
+int DEATH_VHLAST;
+
#define DEATHTYPES \
DEATHTYPE(DEATH_AUTOTEAMCHANGE, DEATH_SELF_AUTOTEAMCHANGE, NO_MSG, DEATH_SPECIAL_START) \
- DEATHTYPE(DEATH_BUFF_VAMPIRE, NO_MSG, DEATH_MURDER_VAMPIRE, DEATH_BUFF_FIRST) \
- DEATHTYPE(DEATH_BUFF_VENGEANCE, NO_MSG, DEATH_MURDER_VENGEANCE, DEATH_BUFF_LAST) \
+ DEATHTYPE(DEATH_BUFF_VENGEANCE, NO_MSG, DEATH_MURDER_VENGEANCE, NORMAL_POS) \
DEATHTYPE(DEATH_CAMP, DEATH_SELF_CAMP, NO_MSG, NORMAL_POS) \
DEATHTYPE(DEATH_CHEAT, DEATH_SELF_CHEAT, DEATH_MURDER_CHEAT, NORMAL_POS) \
DEATHTYPE(DEATH_CUSTOM, DEATH_SELF_CUSTOM, NO_MSG, NORMAL_POS) \
DEATHTYPE(DEATH_MONSTER_WYVERN, DEATH_SELF_MON_WYVERN, DEATH_MURDER_MONSTER, NORMAL_POS) \
DEATHTYPE(DEATH_MONSTER_ZOMBIE_JUMP, DEATH_SELF_MON_ZOMBIE_JUMP, DEATH_MURDER_MONSTER, NORMAL_POS) \
DEATHTYPE(DEATH_MONSTER_ZOMBIE_MELEE, DEATH_SELF_MON_ZOMBIE_MELEE, DEATH_MURDER_MONSTER, DEATH_MONSTER_LAST) \
- DEATHTYPE(DEATH_NADE, DEATH_SELF_NADE, DEATH_MURDER_NADE, NORMAL_POS) \
+ DEATHTYPE(DEATH_NADE, DEATH_SELF_NADE, DEATH_MURDER_NADE, NORMAL_POS) \
+ DEATHTYPE(DEATH_NADE_NAPALM, DEATH_SELF_NADE_NAPALM, DEATH_MURDER_NADE_NAPALM, NORMAL_POS) \
+ DEATHTYPE(DEATH_NADE_ICE, DEATH_SELF_NADE_ICE, DEATH_MURDER_NADE_ICE, NORMAL_POS) \
+ DEATHTYPE(DEATH_NADE_ICE_FREEZE, DEATH_SELF_NADE_ICE_FREEZE, DEATH_MURDER_NADE_ICE_FREEZE, NORMAL_POS) \
+ DEATHTYPE(DEATH_NADE_HEAL, DEATH_SELF_NADE_HEAL, DEATH_MURDER_NADE_HEAL, NORMAL_POS) \
DEATHTYPE(DEATH_NOAMMO, DEATH_SELF_NOAMMO, NO_MSG, NORMAL_POS) \
DEATHTYPE(DEATH_ROT, DEATH_SELF_ROT, NO_MSG, NORMAL_POS) \
DEATHTYPE(DEATH_SHOOTING_STAR, DEATH_SELF_SHOOTING_STAR, DEATH_MURDER_SHOOTING_STAR, NORMAL_POS) \
#define DT_FIRST 10000
#define DT_MAX 128 // limit of recursive functions with ACCUMULATE_FUNCTION
-float DT_COUNT;
+int DT_COUNT;
entity deathtypes[DT_MAX];
.entity death_msgself;
.entity death_msgmurder;
#define DEATHTYPE(name,msg_death,msg_death_by,position) \
- float name; \
- float position; \
+ int name; \
void RegisterDeathtype_##name() \
{ \
SET_FIRST_OR_LAST(position, DT_FIRST, DT_COUNT) \
#define DEATH_ISVEHICLE(t) ((t) >= DEATH_VHFIRST && (t) <= DEATH_VHLAST)
#define DEATH_ISTURRET(t) ((t) >= DEATH_TURRET_FIRST && (t) <= DEATH_TURRET_LAST)
#define DEATH_ISMONSTER(t) ((t) >= DEATH_MONSTER_FIRST && (t) <= DEATH_MONSTER_LAST)
-#define DEATH_ISBUFF(t) ((t) >= DEATH_BUFF_FIRST && (t) <= DEATH_BUFF_LAST)
#define DEATH_WEAPONOFWEAPONDEATH(t) ((t) & DEATH_WEAPONMASK)
#define DEATH_ISWEAPON(t,w) (!DEATH_ISSPECIAL(t) && DEATH_WEAPONOFWEAPONDEATH(t) == (w))
#define DEATH_WEAPONOF(t) (DEATH_ISSPECIAL(t) ? 0 : DEATH_WEAPONOFWEAPONDEATH(t))
#define WEP_VALID(w) ((w) >= WEP_FIRST && (w) <= WEP_LAST)
-string Deathtype_Name(float deathtype)
+string Deathtype_Name(int deathtype)
{
if(DEATH_ISSPECIAL(deathtype))
{
else { return ftos(deathtype); }
}
-const float DEATH_WEAPONMASK = 0xFF;
-const float DEATH_HITTYPEMASK = 0x1F00; // which is WAY below 10000 used for normal deaths
-const float HITTYPE_SECONDARY = 0x100;
-const float HITTYPE_SPLASH = 0x200; // automatically set by RadiusDamage
-const float HITTYPE_BOUNCE = 0x400;
-const float HITTYPE_RESERVED2 = 0x800;
-const float HITTYPE_RESERVED = 0x1000; // unused yet
+const int DEATH_WEAPONMASK = 0xFF;
+const int DEATH_HITTYPEMASK = 0x1F00; // which is WAY below 10000 used for normal deaths
+const int HITTYPE_SECONDARY = 0x100;
+const int HITTYPE_SPLASH = 0x200; // automatically set by RadiusDamage
+const int HITTYPE_BOUNCE = 0x400;
+const int HITTYPE_RESERVED2 = 0x800;
+const int HITTYPE_RESERVED = 0x1000; // unused yet
+#endif