From 5168970f40684180d14510e7d5645806fae4ff82 Mon Sep 17 00:00:00 2001 From: Wanne Date: Wed, 20 Nov 2013 13:26:40 +0000 Subject: [PATCH] Enemy Taunts Update (by anv) - replaced 5 different riposte tags with one XXX, 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 --- Tactical/Civ Quotes.cpp | 26 +++----------------------- Tactical/Civ Quotes.h | 6 +----- Tactical/Dialogue Control.cpp | 31 ++++++++++--------------------- Tactical/Interface.h | 3 +++ Tactical/Soldier Control.h | 8 -------- Tactical/XML_Taunts.cpp | 32 +++----------------------------- 6 files changed, 20 insertions(+), 86 deletions(-) diff --git a/Tactical/Civ Quotes.cpp b/Tactical/Civ Quotes.cpp index 5f66c4cb9..fce666c46 100644 --- a/Tactical/Civ Quotes.cpp +++ b/Tactical/Civ Quotes.cpp @@ -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; diff --git a/Tactical/Civ Quotes.h b/Tactical/Civ Quotes.h index 2770c4cf5..f727cc470 100644 --- a/Tactical/Civ Quotes.h +++ b/Tactical/Civ Quotes.h @@ -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 ); diff --git a/Tactical/Dialogue Control.cpp b/Tactical/Dialogue Control.cpp index e385ec95a..b79207303 100644 --- a/Tactical/Dialogue Control.cpp +++ b/Tactical/Dialogue Control.cpp @@ -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: diff --git a/Tactical/Interface.h b/Tactical/Interface.h index 9a8f522c1..f9cd16783 100644 --- a/Tactical/Interface.h +++ b/Tactical/Interface.h @@ -257,6 +257,9 @@ enum { // taunt target's profile TAUNT_TARGET_MERC_PROFILE, + // which merc quote should be riposted + TAUNT_RIPOSTE_QUOTE, + TAUNT_MAX, }; diff --git a/Tactical/Soldier Control.h b/Tactical/Soldier Control.h index 87c716f39..60ffd059a 100644 --- a/Tactical/Soldier Control.h +++ b/Tactical/Soldier Control.h @@ -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 diff --git a/Tactical/XML_Taunts.cpp b/Tactical/XML_Taunts.cpp index c7f3c2632..a9fff5ff6 100644 --- a/Tactical/XML_Taunts.cpp +++ b/Tactical/XML_Taunts.cpp @@ -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)