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; return;
break; break;
case TAUNT_R_1ST_ENEMY_DETECTED: case TAUNT_RIPOSTE:
case TAUNT_R_ENEMY_DETECTED:
case TAUNT_R_MULTIPLE_ENEMIES:
case TAUNT_R_BULLET_FLEW_BY:
case TAUNT_R_UNDER_HEAVY_FIRE:
if( Random(100)+1 > gTauntsSettings.ubRiposteChance) if( Random(100)+1 > gTauntsSettings.ubRiposteChance)
return; return;
break; break;
@@ -1534,24 +1530,8 @@ void StartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget )
break; break;
// ripostes to merc quotes // ripostes to merc quotes
case TAUNT_R_BULLET_FLEW_BY: case TAUNT_RIPOSTE:
if( !(zTaunt[ i ].uiFlags & TAUNT_S_R_BULLET_FLEW_BY) ) if( !(gTacticalStatus.ubLastQuoteSaid == zTaunt[ i ].value[TAUNT_RIPOSTE_QUOTE]) )
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) )
continue; continue;
break; break;
+1 -5
View File
@@ -151,11 +151,7 @@ enum //enemy taunts - SANDRO
TAUNT_MISS_THROWING_KNIFE, TAUNT_MISS_THROWING_KNIFE,
// ripostes to merc quotes // ripostes to merc quotes
TAUNT_R_BULLET_FLEW_BY, TAUNT_RIPOSTE
TAUNT_R_UNDER_HEAVY_FIRE,
TAUNT_R_ENEMY_DETECTED,
TAUNT_R_1ST_ENEMY_DETECTED,
TAUNT_R_MULTIPLE_ENEMIES,
}; };
void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget = NULL ); void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget = NULL );
+10 -21
View File
@@ -2691,9 +2691,13 @@ void HandleDialogueEnd( FACETYPE *pFace )
UINT8 ubSeenEnemiesCnt = 0; UINT8 ubSeenEnemiesCnt = 0;
switch( gTacticalStatus.ubLastQuoteSaid ) switch( gTacticalStatus.ubLastQuoteSaid )
{ {
case QUOTE_SEE_ENEMY: case QUOTE_CLOSE_CALL:
case QUOTE_SEE_ENEMY_VARIATION: case QUOTE_UNDER_HEAVY_FIRE:
case QUOTE_IN_TROUBLE_SLASH_IN_BATTLE: 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 // 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++ ) 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( ubSeenEnemiesCnt > 0 )
{
if( gTacticalStatus.ubLastQuoteSaid == QUOTE_SEE_ENEMY ) PossiblyStartEnemyTaunt( MercPtrs[ubSeenEnemies[ Random(ubSeenEnemiesCnt) ]], TAUNT_RIPOSTE, FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ) );
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 ) );
} }
break; 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; break;
case DIALOGUE_NPC_UI: case DIALOGUE_NPC_UI:
+3
View File
@@ -257,6 +257,9 @@ enum {
// taunt target's profile // taunt target's profile
TAUNT_TARGET_MERC_PROFILE, TAUNT_TARGET_MERC_PROFILE,
// which merc quote should be riposted
TAUNT_RIPOSTE_QUOTE,
TAUNT_MAX, TAUNT_MAX,
}; };
-8
View File
@@ -499,16 +499,8 @@ enum
#define TAUNT_S_MISS_HTH 0x0800000000000000 // #define TAUNT_S_MISS_HTH 0x0800000000000000 //
#define TAUNT_S_MISS_THROWING_KNIFE 0x1000000000000000 // #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) // 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 // class
#define TAUNT_C_ADMIN 0x0000000000000004 //4 #define TAUNT_C_ADMIN 0x0000000000000004 //4
#define TAUNT_C_ARMY 0x0000000000000008 //8 #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_hth") == 0 ||
strcmp(name, "miss_throwing_knife") == 0 || strcmp(name, "miss_throwing_knife") == 0 ||
strcmp(name, "riposte_bullet_flew_by") == 0 || strcmp(name, "riposte_quote") == 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, "enemy") == 0 || strcmp(name, "enemy") == 0 ||
strcmp(name, "admin") == 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; pData->curTaunt.uiFlags |= (UINT16) atol(pData->szCharData) ? TAUNT_S_MISS_THROWING_KNIFE: 0;
} }
if(strcmp(name, "riposte_quote") == 0)
if(strcmp(name, "riposte_bullet_flew_by") == 0)
{ {
pData->curElement = ELEMENT; pData->curElement = ELEMENT;
pData->curTaunt.uiFlags |= (UINT16) atol(pData->szCharData) ? TAUNT_S_R_BULLET_FLEW_BY: 0; pData->curTaunt.value[TAUNT_RIPOSTE_QUOTE] = (INT16) atol(pData->szCharData);
}
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;
} }
if(strcmp(name, "enemy") == 0) if(strcmp(name, "enemy") == 0)