X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fdeathtypes.qh;h=591c48e17800af077e7eea9536f32d46115e093e;hp=cc7154d4b6a8713de9236413ecdb01adcf2d0db1;hb=a08620064dbe59abd194f302768d65934b87b6df;hpb=77477d386d12b458eaa8dabb23853ef2e391a71a diff --git a/qcsrc/common/deathtypes.qh b/qcsrc/common/deathtypes.qh index cc7154d4b6..591c48e178 100644 --- a/qcsrc/common/deathtypes.qh +++ b/qcsrc/common/deathtypes.qh @@ -2,8 +2,18 @@ // 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_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) \ @@ -15,7 +25,19 @@ DEATHTYPE(DEATH_KILL, DEATH_SELF_SUICIDE, NO_MSG, NORMAL_POS) \ DEATHTYPE(DEATH_LAVA, DEATH_SELF_LAVA, DEATH_MURDER_LAVA, NORMAL_POS) \ DEATHTYPE(DEATH_MIRRORDAMAGE, DEATH_SELF_BETRAYAL, NO_MSG, NORMAL_POS) \ - DEATHTYPE(DEATH_NADE, DEATH_SELF_NADE, DEATH_MURDER_NADE, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_MAGE, DEATH_SELF_MON_MAGE, DEATH_MURDER_MONSTER, DEATH_MONSTER_FIRST) \ + DEATHTYPE(DEATH_MONSTER_SHAMBLER_CLAW, DEATH_SELF_MON_SHAMBLER_CLAW, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_SHAMBLER_SMASH, DEATH_SELF_MON_SHAMBLER_SMASH, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_SHAMBLER_ZAP, DEATH_SELF_MON_SHAMBLER_ZAP, DEATH_MURDER_MONSTER, NORMAL_POS) \ + DEATHTYPE(DEATH_MONSTER_SPIDER, DEATH_SELF_MON_SPIDER, DEATH_MURDER_MONSTER, 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_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) \ @@ -54,15 +76,14 @@ #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) \ @@ -86,6 +107,7 @@ DEATHTYPES #define DEATH_ISSPECIAL(t) ((t) >= DEATH_SPECIAL_START) #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_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)) @@ -96,16 +118,16 @@ string Deathtype_Name(float deathtype) if(DEATH_ISSPECIAL(deathtype)) { entity deathent = deathtypes[(deathtype - DT_FIRST)]; - if not(deathent) { backtrace("Deathtype_Name: Could not find deathtype entity!\n"); return ""; } + if (!deathent) { backtrace("Deathtype_Name: Could not find deathtype entity!\n"); return ""; } return deathent.nent_name; } 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