Enemy Taunts Update (by anv)

- replaced 5 different riposte tags with one <riposte_quote>XXX<riposte_quote>, where XXX can be any quote number, that taunt is supposed to be answer to. All but quotes 20-22 use random enemy witnessing quote to taunt, these three - last attacker.
- added above ripostes + some more.
- see: http://www.bears-pit.com/board/ubbthreads.php/topics/327830/4/Externalised_taunts.html


git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6637 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2013-11-20 13:26:40 +00:00
parent 2dd7104354
commit 5168970f40
6 changed files with 20 additions and 86 deletions
+3 -23
View File
@@ -1229,11 +1229,7 @@ void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *p
return;
break;
case TAUNT_R_1ST_ENEMY_DETECTED:
case TAUNT_R_ENEMY_DETECTED:
case TAUNT_R_MULTIPLE_ENEMIES:
case TAUNT_R_BULLET_FLEW_BY:
case TAUNT_R_UNDER_HEAVY_FIRE:
case TAUNT_RIPOSTE:
if( Random(100)+1 > gTauntsSettings.ubRiposteChance)
return;
break;
@@ -1534,24 +1530,8 @@ void StartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget )
break;
// ripostes to merc quotes
case TAUNT_R_BULLET_FLEW_BY:
if( !(zTaunt[ i ].uiFlags & TAUNT_S_R_BULLET_FLEW_BY) )
continue;
break;
case TAUNT_R_UNDER_HEAVY_FIRE:
if( !(zTaunt[ i ].uiFlags & TAUNT_S_R_UNDER_HEAVY_FIRE) )
continue;
break;
case TAUNT_R_ENEMY_DETECTED:
if( !(zTaunt[ i ].uiFlags & TAUNT_S_R_ENEMY_DETECTED) )
continue;
break;
case TAUNT_R_1ST_ENEMY_DETECTED:
if( !(zTaunt[ i ].uiFlags2 & TAUNT_S_R_1ST_ENEMY_DETECTED) )
continue;
break;
case TAUNT_R_MULTIPLE_ENEMIES:
if( !(zTaunt[ i ].uiFlags2 & TAUNT_S_R_MULTIPLE_ENEMIES) )
case TAUNT_RIPOSTE:
if( !(gTacticalStatus.ubLastQuoteSaid == zTaunt[ i ].value[TAUNT_RIPOSTE_QUOTE]) )
continue;
break;
+1 -5
View File
@@ -151,11 +151,7 @@ enum //enemy taunts - SANDRO
TAUNT_MISS_THROWING_KNIFE,
// ripostes to merc quotes
TAUNT_R_BULLET_FLEW_BY,
TAUNT_R_UNDER_HEAVY_FIRE,
TAUNT_R_ENEMY_DETECTED,
TAUNT_R_1ST_ENEMY_DETECTED,
TAUNT_R_MULTIPLE_ENEMIES,
TAUNT_RIPOSTE
};
void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget = NULL );
+10 -21
View File
@@ -2691,9 +2691,13 @@ void HandleDialogueEnd( FACETYPE *pFace )
UINT8 ubSeenEnemiesCnt = 0;
switch( gTacticalStatus.ubLastQuoteSaid )
{
case QUOTE_SEE_ENEMY:
case QUOTE_SEE_ENEMY_VARIATION:
case QUOTE_IN_TROUBLE_SLASH_IN_BATTLE:
case QUOTE_CLOSE_CALL:
case QUOTE_UNDER_HEAVY_FIRE:
case QUOTE_TAKEN_A_BREATING:
if( pSoldier->ubPreviousAttackerID != NOBODY && !( MercPtrs[pSoldier->ubPreviousAttackerID]->bDeafenedCounter > 0 ) )
PossiblyStartEnemyTaunt( MercPtrs[pSoldier->ubPreviousAttackerID], TAUNT_RIPOSTE, FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ) );
break;
default:
// select random enemy, who we see, who sees us and isn't deaf
for(UINT8 cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt < gTacticalStatus.Team[ ENEMY_TEAM ].bLastID ; cnt++ )
{
@@ -2705,26 +2709,11 @@ void HandleDialogueEnd( FACETYPE *pFace )
}
}
if( ubSeenEnemiesCnt > 0 )
{
if( gTacticalStatus.ubLastQuoteSaid == QUOTE_SEE_ENEMY )
PossiblyStartEnemyTaunt( MercPtrs[ubSeenEnemies[ Random(ubSeenEnemiesCnt) ]], TAUNT_R_ENEMY_DETECTED, FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ) );
else if( gTacticalStatus.ubLastQuoteSaid == QUOTE_SEE_ENEMY_VARIATION )
PossiblyStartEnemyTaunt( MercPtrs[ubSeenEnemies[ Random(ubSeenEnemiesCnt) ]], TAUNT_R_1ST_ENEMY_DETECTED, FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ) );
else if( gTacticalStatus.ubLastQuoteSaid == QUOTE_IN_TROUBLE_SLASH_IN_BATTLE )
PossiblyStartEnemyTaunt( MercPtrs[ubSeenEnemies[ Random(ubSeenEnemiesCnt) ]], TAUNT_R_MULTIPLE_ENEMIES, FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ) );
PossiblyStartEnemyTaunt( MercPtrs[ubSeenEnemies[ Random(ubSeenEnemiesCnt) ]], TAUNT_RIPOSTE, FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ) );
}
break;
case QUOTE_CLOSE_CALL:
PossiblyStartEnemyTaunt( MercPtrs[pSoldier->ubPreviousAttackerID], TAUNT_R_BULLET_FLEW_BY, FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ) );
break;
case QUOTE_UNDER_HEAVY_FIRE:
PossiblyStartEnemyTaunt( MercPtrs[pSoldier->ubPreviousAttackerID], TAUNT_R_UNDER_HEAVY_FIRE, FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ) );
break;
default:
break;
}
}
}
break;
case DIALOGUE_NPC_UI:
+3
View File
@@ -257,6 +257,9 @@ enum {
// taunt target's profile
TAUNT_TARGET_MERC_PROFILE,
// which merc quote should be riposted
TAUNT_RIPOSTE_QUOTE,
TAUNT_MAX,
};
-8
View File
@@ -499,16 +499,8 @@ enum
#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 0x0000000000000004 //4
#define TAUNT_C_ARMY 0x0000000000000008 //8
+3 -29
View File
@@ -133,11 +133,7 @@ tauntStartElementHandle(void *userData, const XML_Char *name, const XML_Char **a
strcmp(name, "miss_hth") == 0 ||
strcmp(name, "miss_throwing_knife") == 0 ||
strcmp(name, "riposte_bullet_flew_by") == 0 ||
strcmp(name, "riposte_under_heavy_fire") == 0 ||
strcmp(name, "riposte_enemy_detected") == 0 ||
strcmp(name, "riposte_1st_enemy_detected") == 0 ||
strcmp(name, "riposte_multiple_enemies") == 0 ||
strcmp(name, "riposte_quote") == 0 ||
strcmp(name, "enemy") == 0 ||
strcmp(name, "admin") == 0 ||
@@ -652,32 +648,10 @@ tauntEndElementHandle(void *userData, const XML_Char *name)
pData->curTaunt.uiFlags |= (UINT16) atol(pData->szCharData) ? TAUNT_S_MISS_THROWING_KNIFE: 0;
}
if(strcmp(name, "riposte_bullet_flew_by") == 0)
if(strcmp(name, "riposte_quote") == 0)
{
pData->curElement = ELEMENT;
pData->curTaunt.uiFlags |= (UINT16) atol(pData->szCharData) ? TAUNT_S_R_BULLET_FLEW_BY: 0;
}
else if(strcmp(name, "riposte_under_heavy_fire") == 0)
{
pData->curElement = ELEMENT;
pData->curTaunt.uiFlags |= (UINT16) atol(pData->szCharData) ? TAUNT_S_R_UNDER_HEAVY_FIRE: 0;
}
else if(strcmp(name, "riposte_enemy_detected") == 0)
{
pData->curElement = ELEMENT;
pData->curTaunt.uiFlags |= (UINT16) atol(pData->szCharData) ? TAUNT_S_R_ENEMY_DETECTED: 0;
}
else if(strcmp(name, "riposte_1st_enemy_detected") == 0)
{
pData->curElement = ELEMENT;
pData->curTaunt.uiFlags2 |= (UINT16) atol(pData->szCharData) ? TAUNT_S_R_1ST_ENEMY_DETECTED: 0;
}
else if(strcmp(name, "riposte_multiple_enemies") == 0)
{
pData->curElement = ELEMENT;
pData->curTaunt.uiFlags2 |= (UINT16) atol(pData->szCharData) ? TAUNT_S_R_MULTIPLE_ENEMIES: 0;
pData->curTaunt.value[TAUNT_RIPOSTE_QUOTE] = (INT16) atol(pData->szCharData);
}
if(strcmp(name, "enemy") == 0)