mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
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:
+3
-23
@@ -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;
|
||||
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -257,6 +257,9 @@ enum {
|
||||
// taunt target's profile
|
||||
TAUNT_TARGET_MERC_PROFILE,
|
||||
|
||||
// which merc quote should be riposted
|
||||
TAUNT_RIPOSTE_QUOTE,
|
||||
|
||||
TAUNT_MAX,
|
||||
};
|
||||
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user