Updated Enemy taunts feature (by anv)

- ridiculous amount of tags: attack, hit, miss, kill, head pop, blinded, type of attack, is target a zombie...
- ripostes to merc quotes,
- taunts can now make noise,
- bumped up amount of taunts to respectable 733, mostly thanks to your contributions guys,
- accidently squashed bug with incorrect noise notifications ("hears scream" instead of "hears explosion" etc.)

Ripostes
At the moment enemies can react to quotes "enemy detected", "1st enemy detected", "multiple enemies detected", "bullet flew by", "under heavy fire", as these are most likely to be used in combat. In the first three cases, riposting enemy will be chosen randomly from all enemy witnesses, latter two - last enemy to attack this merc will taunt.
Enemy's riposte will come as soon as merc quote is finished.

Noisy taunts
Taunts can be handled like other noises in game - shots, explosions, etc., meaning:
- they will be displayed only if someone from our team is close enough to hear them,
- they can be heard even if you don't see enemy (with twist of his name changed to "unknown voice". Yay.)
- volume of taunts is configurable in .ini.

see: http://www.ja-galaxy-forum.com/board/ubbthreads.php/topics/327830/4.html



git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6628 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2013-11-19 07:52:51 +00:00
parent 496616a2bd
commit 47210f9b14
27 changed files with 1477 additions and 277 deletions
+91 -23
View File
@@ -425,43 +425,111 @@ enum
#define TAUNT_A_DEFENSIVE 0x0000000000000020 //32
// situations
// actions
#define TAUNT_S_FIRE_GUN 0x0000000000000040 //64
#define TAUNT_S_FIRE_LAUNCHER 0x0000000000000080 //128
#define TAUNT_S_GOT_HIT 0x0000000000000100 //256
#define TAUNT_S_GOT_MISSED 0x0000000000000200 //512 //10
#define TAUNT_S_ATTACK_BLADE 0x0000000000000100 //256
#define TAUNT_S_ATTACK_HTH 0x0000000000000200 //512
#define TAUNT_S_THROW_KNIFE 0x0000000000000400 //1024
#define TAUNT_S_THROW_GRENADE 0x0000000000000800 //2048
#define TAUNT_S_CHARGE_KNIFE 0x0000000000001000 //4096
#define TAUNT_S_CHARGE_FISTS 0x0000000000002000 //8192
#define TAUNT_S_STEAL 0x0000000000004000 //16384
#define TAUNT_S_RUN_AWAY 0x0000000000008000 //32768
#define TAUNT_S_OUT_OF_AMMO 0x0000000000001000 //4096
#define TAUNT_S_RELOAD 0x0000000000002000 //8192
#define TAUNT_S_SEEK_NOISE 0x0000000000010000 //65536
#define TAUNT_S_ALERT 0x0000000000020000 //131072
#define TAUNT_S_NOTICED_UNSEEN 0x0000000000040000 //262144
#define TAUNT_S_STEAL 0x0000000000004000 //16384
// AI routines
#define TAUNT_S_CHARGE_BLADE 0x0000000000008000 //32768
#define TAUNT_S_CHARGE_HTH 0x0000000000010000 //65536
#define TAUNT_S_RUN_AWAY 0x0000000000020000 //131072
#define TAUNT_S_SEEK_NOISE 0x0000000000040000 //262144
#define TAUNT_S_ALERT 0x0000000000080000 //...
#define TAUNT_S_SUSPICIOUS 0x0000000000100000
#define TAUNT_S_NOTICED_UNSEEN 0x0000000000200000 //
#define TAUNT_S_SAY_HI 0x0000000000400000 //
#define TAUNT_S_INFORM_ABOUT 0x0000000000800000
// got_hit_xxx
#define TAUNT_S_GOT_HIT 0x0000000001000000 //
#define TAUNT_S_GOT_HIT_GUNFIRE 0x0000000002000000 //
#define TAUNT_S_GOT_HIT_BLADE 0x0000000004000000 //
#define TAUNT_S_GOT_HIT_HTH 0x0000000008000000 //
#define TAUNT_S_GOT_HIT_FALLROOF 0x0000000010000000 //
#define TAUNT_S_GOT_HIT_BLOODLOSS 0x0000000020000000 //
#define TAUNT_S_GOT_HIT_EXPLOSION 0x0000000040000000 //
#define TAUNT_S_GOT_HIT_GAS 0x0000000080000000 //
#define TAUNT_S_GOT_HIT_TENTACLES 0x0000000100000000 //
#define TAUNT_S_GOT_HIT_STRUCTURE_EXPLOSION 0x0000000200000000 //
#define TAUNT_S_GOT_HIT_OBJECT 0x0000000400000000 //
#define TAUNT_S_GOT_HIT_THROWING_KNIFE 0x0000000800000000 //
#define TAUNT_S_GOT_DEAFENED 0x0000001000000000 //
#define TAUNT_S_GOT_BLINDED 0x0000002000000000 //
#define TAUNT_S_GOT_ROBBED 0x0000004000000000 //
// got_missed_xxx
#define TAUNT_S_GOT_MISSED 0x0000008000000000 //
#define TAUNT_S_GOT_MISSED_GUNFIRE 0x0000010000000000 //
#define TAUNT_S_GOT_MISSED_BLADE 0x0000020000000000 //
#define TAUNT_S_GOT_MISSED_HTH 0x0000040000000000 //
#define TAUNT_S_GOT_MISSED_THROWING_KNIFE 0x0000080000000000 //
// hit_xxx
#define TAUNT_S_HIT 0x0000100000000000 //
#define TAUNT_S_HIT_GUNFIRE 0x0000200000000000 //
#define TAUNT_S_HIT_BLADE 0x0000400000000000 //
#define TAUNT_S_HIT_HTH 0x0000800000000000 //
#define TAUNT_S_HIT_EXPLOSION 0x0001000000000000 //
#define TAUNT_S_HIT_THROWING_KNIFE 0x0002000000000000 //
// kill_xxx
#define TAUNT_S_KILL 0x0004000000000000 //
#define TAUNT_S_KILL_GUNFIRE 0x0008000000000000 //
#define TAUNT_S_KILL_BLADE 0x0010000000000000 //
#define TAUNT_S_KILL_HTH 0x0020000000000000 //
#define TAUNT_S_KILL_THROWING_KNIFE 0x0040000000000000 //
#define TAUNT_S_HEAD_POP 0x0080000000000000 //
// miss_xxx
#define TAUNT_S_MISS 0x0100000000000000 //
#define TAUNT_S_MISS_GUNFIRE 0x0200000000000000 //
#define TAUNT_S_MISS_BLADE 0x0400000000000000 //
#define TAUNT_S_MISS_HTH 0x0800000000000000 //
#define TAUNT_S_MISS_THROWING_KNIFE 0x1000000000000000 //
// ripostes to merc quotes
#define TAUNT_S_R_BULLET_FLEW_BY 0x2000000000000000 //
#define TAUNT_S_R_UNDER_HEAVY_FIRE 0x4000000000000000 //
#define TAUNT_S_R_ENEMY_DETECTED 0x8000000000000000 //
// NEW FLAGS, starting from the beginning (UINT128 is redundant? yeah, right)
#define TAUNT_S_R_1ST_ENEMY_DETECTED 0x0000000000000001 //1
#define TAUNT_S_R_MULTIPLE_ENEMIES 0x0000000000000002 //2
// class
#define TAUNT_C_ADMIN 0x0000000000080000 //524288
//20
#define TAUNT_C_ARMY 0x0000000000100000 //1048576
#define TAUNT_C_ELITE 0x0000000000200000 //2097152
#define TAUNT_C_GREEN 0x0000000000400000 //4194304
#define TAUNT_C_REGULAR 0x0000000000800000 //8388608
#define TAUNT_C_ADMIN 0x0000000000000004 //4
#define TAUNT_C_ARMY 0x0000000000000008 //8
#define TAUNT_C_ELITE 0x0000000000000010 //16
#define TAUNT_C_GREEN 0x0000000000000020 //32
#define TAUNT_C_REGULAR 0x0000000000000040 //64
#define TAUNT_C_VETERAN 0x0000000000000080 //128
#define TAUNT_C_VETERAN 0x0000000001000000 //16777216
#define TAUNT_G_MALE 0x0000000002000000 //33554432
#define TAUNT_G_FEMALE 0x0000000004000000 //67108864
// sex
#define TAUNT_G_MALE 0x0000000000000100 //256
#define TAUNT_G_FEMALE 0x0000000000000200 //512
// target
#define TAUNT_T_MALE 0x0000000008000000 //134217728
#define TAUNT_T_MALE 0x0000000000000400 //1024
#define TAUNT_T_FEMALE 0x0000000000000800 //2048
#define TAUNT_T_FEMALE 0x0000000010000000 //268435456
#define TAUNT_T_ZOMBIE 0x0000000000001000 //4096
#define TAUNT_FLAG_MAX 29
#define TAUNT_FLAG_1_MAX 64
#define TAUNT_FLAG_2_MAX 13
#define TAUNT_FLAG_MAX TAUNT_FLAG_1_MAX + TAUNT_FLAG_2_MAX
// Flugente: types of multi-turn actions
enum