Enemy Taunts Updates (by anv)

- taunts will be loaded from any file in TableData/ that follows EnemyTaunts*.xml naming convention (and [LanguagePrefix]EnemyTaunts*.xml for translations)
o eg: EnemyTauntsKill.xml, EnemyTauntsComeback.xml, German.EnemyTauntsKill.xml, Chinese.EnemyTauntsComeback.xml, ...
- <uiIndex> for taunts in every file should start from 0 and increase normally
- see: http://www.bears-pit.com/board/ubbthreads.php/topics/327830/5.html

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6640 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2013-11-22 21:50:00 +00:00
parent 08236ee9f4
commit ba5edad40c
7 changed files with 55 additions and 32 deletions
+33 -11
View File
@@ -1018,20 +1018,42 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
#endif
// Externalised taunts
strcpy(fileName, directoryName);
strcat(fileName, TAUNTSFILENAME);
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
SGP_THROW_IFFALSE(ReadInTaunts(fileName,FALSE), TAUNTSFILENAME);
#ifndef ENGLISH
AddLanguagePrefix(fileName);
if ( FileExists(fileName) )
GETFILESTRUCT FileInfo;
char tauntFileNamePattern[MAX_PATH];
strcpy(tauntFileNamePattern, directoryName);
strcat(tauntFileNamePattern, TAUNTSFILENAMEBEGINNING"*"TAUNTSFILENAMEENDING);
if( GetFileFirst(tauntFileNamePattern, &FileInfo) )
{
strcpy(fileName, directoryName);
strcat(fileName, FileInfo.zFileName);
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
SGP_THROW_IFFALSE(ReadInTaunts(fileName,TRUE), TAUNTSFILENAME);
}
SGP_THROW_IFFALSE(ReadInTaunts(fileName,FALSE), fileName);
#ifndef ENGLISH
AddLanguagePrefix(fileName);
if ( FileExists(fileName) )
{
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
SGP_THROW_IFFALSE(ReadInTaunts(fileName,TRUE), fileName);
}
#endif
while( GetFileNext(&FileInfo) )
{
strcpy(fileName, directoryName);
strcat(fileName, FileInfo.zFileName);
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
SGP_THROW_IFFALSE(ReadInTaunts(fileName,FALSE), fileName);
#ifndef ENGLISH
AddLanguagePrefix(fileName);
if ( FileExists(fileName) )
{
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
SGP_THROW_IFFALSE(ReadInTaunts(fileName,TRUE), fileName);
}
#endif
}
GetFileClose(&FileInfo);
}
// IMP Portraits List by Jazz
strcpy(fileName, directoryName);
strcat(fileName, IMPPORTRAITS);
+2 -2
View File
@@ -1047,7 +1047,7 @@ BOOLEAN LoadCivQuotesFromLoadGameFile( HWFILE hFile )
//--------------------------------------------------------------
// anv: start enemy taunt with probabilty depending on taunt settings
void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget )
void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget )
{
// taunts disabled?
if( gGameSettings.fOptions[TOPTION_ALLOW_TAUNTS] == FALSE )
@@ -1243,7 +1243,7 @@ void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *p
}
// SANDRO - soldier taunts
void StartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget )
void StartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget )
{
UINT16 iTauntNumber;
CHAR16 sTauntText[320];
+3 -3
View File
@@ -74,7 +74,7 @@ enum
NUM_CIV_QUOTES
};
enum //enemy taunts - SANDRO
enum TAUNTTYPE//enemy taunts - SANDRO
{
// actions
TAUNT_FIRE_GUN,
@@ -154,8 +154,8 @@ enum //enemy taunts - SANDRO
TAUNT_RIPOSTE
};
void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget = NULL );
void StartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget = NULL ); //enemy taunts - SANDRO // anv: added pTarget argument
void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget = NULL );
void StartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget = NULL ); //enemy taunts - SANDRO // anv: added pTarget argument
void ShowTauntPopupBox( SOLDIERTYPE *pCiv, STR16 gzTauntQuote );
void InitCivQuoteSystem( );
+1 -1
View File
@@ -206,7 +206,7 @@ extern BACKGROUND_VALUES zBackground[NUM_BACKGROUND];
extern UINT16 num_found_background; // the correct number is set on reading the xml
// anv: enums for externalised taunts
enum {
enum TAUNTPROPERTY{
// progress
TAUNT_PROGRESS_LT,
+6 -6
View File
@@ -5917,30 +5917,30 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1
}
}
DecayIndividualOpplist( this );
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_BLINDED, MercPtrs[ubAttackerID]);
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_DEAFENED, MercPtrs[ubAttackerID]);
PossiblyStartEnemyTaunt( this, TAUNT_GOT_BLINDED, MercPtrs[ubAttackerID]);
PossiblyStartEnemyTaunt( this, TAUNT_GOT_DEAFENED, MercPtrs[ubAttackerID]);
break;
case FIRE_WEAPON_BLINDED:
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_BLINDED, MercPtrs[ubAttackerID]);
PossiblyStartEnemyTaunt( this, TAUNT_GOT_BLINDED, MercPtrs[ubAttackerID]);
break;
case FIRE_WEAPON_DEAFENED:
//ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Soldier is deafened" );
this->bDeafenedCounter = bDeafValue;
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_DEAFENED, MercPtrs[ubAttackerID]);
PossiblyStartEnemyTaunt( this, TAUNT_GOT_DEAFENED, MercPtrs[ubAttackerID]);
break;
};
if ( usWeaponIndex == STRUCTURE_EXPLOSION )
{
ubReason = TAKE_DAMAGE_STRUCTURE_EXPLOSION;
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_HIT_STRUCTURE_EXPLOSION, MercPtrs[ubAttackerID]);
PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_STRUCTURE_EXPLOSION, MercPtrs[ubAttackerID]);
}
else
{
ubReason = TAKE_DAMAGE_EXPLOSION;
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_HIT_EXPLOSION, MercPtrs[ubAttackerID]);
PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_EXPLOSION, MercPtrs[ubAttackerID]);
}
}
else
+2
View File
@@ -238,6 +238,8 @@ typedef PARSE_STAGE;
#define SQUADNAMEFILENAME "SquadNames.xml"
#define BACKGROUNDSFILENAME "Backgrounds.xml"
#define TAUNTSFILENAME "EnemyTaunts.xml"
#define TAUNTSFILENAMEBEGINNING "EnemyTaunts"
#define TAUNTSFILENAMEENDING ".xml"
#define ENEMY_ADMIN_PROFILE_FILENAME "Profiles\\SoldierProfileEnemyAdmin.xml"
#define ENEMY_REGULAR_PROFILE_FILENAME "Profiles\\SoldierProfileEnemyRegular.xml"
+8 -9
View File
@@ -21,7 +21,7 @@ struct
UINT32 currentDepth;
UINT32 maxReadDepth;
}
typedef enemyRankParseData;
typedef tauntParseData;
BOOLEAN localizedTextOnly_Taunts;
@@ -30,7 +30,7 @@ UINT16 num_found_taunt = 0; // the correct number is set on reading the xml
static void XMLCALL
tauntStartElementHandle(void *userData, const XML_Char *name, const XML_Char **atts)
{
enemyRankParseData * pData = (enemyRankParseData *)userData;
tauntParseData * pData = (tauntParseData *)userData;
if(pData->currentDepth <= pData->maxReadDepth) //are we reading this element?
{
@@ -202,7 +202,7 @@ tauntStartElementHandle(void *userData, const XML_Char *name, const XML_Char **a
static void XMLCALL
tauntCharacterDataHandle(void *userData, const XML_Char *str, int len)
{
enemyRankParseData * pData = (enemyRankParseData *)userData;
tauntParseData * pData = (tauntParseData *)userData;
if( (pData->currentDepth <= pData->maxReadDepth) &&
(strlen(pData->szCharData) < MAX_CHAR_DATA_LENGTH)
@@ -214,7 +214,7 @@ tauntCharacterDataHandle(void *userData, const XML_Char *str, int len)
static void XMLCALL
tauntEndElementHandle(void *userData, const XML_Char *name)
{
enemyRankParseData * pData = (enemyRankParseData *)userData;
tauntParseData * pData = (tauntParseData *)userData;
if(pData->currentDepth <= pData->maxReadDepth)
{
@@ -272,8 +272,8 @@ tauntEndElementHandle(void *userData, const XML_Char *name)
pData->curTaunt.uiFlags2 |= TAUNT_C_VETERAN;
}
//pData->curArray[pData->curTaunt.uiIndex] = pData->curTaunt;
pData->curArray[num_found_taunt-1] = pData->curTaunt;
pData->curArray[pData->curTaunt.uiIndex] = pData->curTaunt;
//pData->curArray[num_found_taunt-1] = pData->curTaunt;
}
}
num_found_taunt++;
@@ -931,7 +931,7 @@ BOOLEAN ReadInTaunts(STR fileName, BOOLEAN localizedVersion)
CHAR8 * lpcBuffer;
XML_Parser parser = XML_ParserCreate(NULL);
enemyRankParseData pData;
tauntParseData pData;
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, "Loading EnemyTaunts.xml" );
@@ -962,11 +962,10 @@ BOOLEAN ReadInTaunts(STR fileName, BOOLEAN localizedVersion)
memset(&pData,0,sizeof(pData));
pData.curArray = zTaunt;
pData.curArray = &(zTaunt[num_found_taunt]);
pData.maxArraySize = NUM_TAUNT;
XML_SetUserData(parser, &pData);
if(!XML_Parse(parser, lpcBuffer, uiFSize, TRUE))
{
CHAR8 errorBuf[511];