mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
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:
@@ -1018,19 +1018,41 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Externalised taunts
|
// Externalised taunts
|
||||||
strcpy(fileName, directoryName);
|
GETFILESTRUCT FileInfo;
|
||||||
strcat(fileName, TAUNTSFILENAME);
|
char tauntFileNamePattern[MAX_PATH];
|
||||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
|
strcpy(tauntFileNamePattern, directoryName);
|
||||||
SGP_THROW_IFFALSE(ReadInTaunts(fileName,FALSE), TAUNTSFILENAME);
|
strcat(tauntFileNamePattern, TAUNTSFILENAMEBEGINNING"*"TAUNTSFILENAMEENDING);
|
||||||
|
if( GetFileFirst(tauntFileNamePattern, &FileInfo) )
|
||||||
#ifndef ENGLISH
|
|
||||||
AddLanguagePrefix(fileName);
|
|
||||||
if ( FileExists(fileName) )
|
|
||||||
{
|
{
|
||||||
|
strcpy(fileName, directoryName);
|
||||||
|
strcat(fileName, FileInfo.zFileName);
|
||||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
|
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
|
#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
|
// IMP Portraits List by Jazz
|
||||||
strcpy(fileName, directoryName);
|
strcpy(fileName, directoryName);
|
||||||
|
|||||||
@@ -1047,7 +1047,7 @@ BOOLEAN LoadCivQuotesFromLoadGameFile( HWFILE hFile )
|
|||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
|
|
||||||
// anv: start enemy taunt with probabilty depending on taunt settings
|
// 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?
|
// taunts disabled?
|
||||||
if( gGameSettings.fOptions[TOPTION_ALLOW_TAUNTS] == FALSE )
|
if( gGameSettings.fOptions[TOPTION_ALLOW_TAUNTS] == FALSE )
|
||||||
@@ -1243,7 +1243,7 @@ void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *p
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SANDRO - soldier taunts
|
// SANDRO - soldier taunts
|
||||||
void StartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget )
|
void StartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget )
|
||||||
{
|
{
|
||||||
UINT16 iTauntNumber;
|
UINT16 iTauntNumber;
|
||||||
CHAR16 sTauntText[320];
|
CHAR16 sTauntText[320];
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ enum
|
|||||||
NUM_CIV_QUOTES
|
NUM_CIV_QUOTES
|
||||||
};
|
};
|
||||||
|
|
||||||
enum //enemy taunts - SANDRO
|
enum TAUNTTYPE//enemy taunts - SANDRO
|
||||||
{
|
{
|
||||||
// actions
|
// actions
|
||||||
TAUNT_FIRE_GUN,
|
TAUNT_FIRE_GUN,
|
||||||
@@ -154,8 +154,8 @@ enum //enemy taunts - SANDRO
|
|||||||
TAUNT_RIPOSTE
|
TAUNT_RIPOSTE
|
||||||
};
|
};
|
||||||
|
|
||||||
void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget = NULL );
|
void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget = NULL );
|
||||||
void StartEnemyTaunt( SOLDIERTYPE *pCiv, INT8 iTauntType, SOLDIERTYPE *pTarget = NULL ); //enemy taunts - SANDRO // anv: added pTarget argument
|
void StartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget = NULL ); //enemy taunts - SANDRO // anv: added pTarget argument
|
||||||
void ShowTauntPopupBox( SOLDIERTYPE *pCiv, STR16 gzTauntQuote );
|
void ShowTauntPopupBox( SOLDIERTYPE *pCiv, STR16 gzTauntQuote );
|
||||||
|
|
||||||
void InitCivQuoteSystem( );
|
void InitCivQuoteSystem( );
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ extern BACKGROUND_VALUES zBackground[NUM_BACKGROUND];
|
|||||||
extern UINT16 num_found_background; // the correct number is set on reading the xml
|
extern UINT16 num_found_background; // the correct number is set on reading the xml
|
||||||
|
|
||||||
// anv: enums for externalised taunts
|
// anv: enums for externalised taunts
|
||||||
enum {
|
enum TAUNTPROPERTY{
|
||||||
|
|
||||||
// progress
|
// progress
|
||||||
TAUNT_PROGRESS_LT,
|
TAUNT_PROGRESS_LT,
|
||||||
|
|||||||
@@ -5917,30 +5917,30 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
DecayIndividualOpplist( this );
|
DecayIndividualOpplist( this );
|
||||||
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_BLINDED, MercPtrs[ubAttackerID]);
|
PossiblyStartEnemyTaunt( this, TAUNT_GOT_BLINDED, MercPtrs[ubAttackerID]);
|
||||||
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_DEAFENED, MercPtrs[ubAttackerID]);
|
PossiblyStartEnemyTaunt( this, TAUNT_GOT_DEAFENED, MercPtrs[ubAttackerID]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FIRE_WEAPON_BLINDED:
|
case FIRE_WEAPON_BLINDED:
|
||||||
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_BLINDED, MercPtrs[ubAttackerID]);
|
PossiblyStartEnemyTaunt( this, TAUNT_GOT_BLINDED, MercPtrs[ubAttackerID]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FIRE_WEAPON_DEAFENED:
|
case FIRE_WEAPON_DEAFENED:
|
||||||
//ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Soldier is deafened" );
|
//ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Soldier is deafened" );
|
||||||
this->bDeafenedCounter = bDeafValue;
|
this->bDeafenedCounter = bDeafValue;
|
||||||
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_DEAFENED, MercPtrs[ubAttackerID]);
|
PossiblyStartEnemyTaunt( this, TAUNT_GOT_DEAFENED, MercPtrs[ubAttackerID]);
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
if ( usWeaponIndex == STRUCTURE_EXPLOSION )
|
if ( usWeaponIndex == STRUCTURE_EXPLOSION )
|
||||||
{
|
{
|
||||||
ubReason = TAKE_DAMAGE_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
|
else
|
||||||
{
|
{
|
||||||
ubReason = TAKE_DAMAGE_EXPLOSION;
|
ubReason = TAKE_DAMAGE_EXPLOSION;
|
||||||
PossiblyStartEnemyTaunt( this, TAUNT_S_GOT_HIT_EXPLOSION, MercPtrs[ubAttackerID]);
|
PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_EXPLOSION, MercPtrs[ubAttackerID]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -238,6 +238,8 @@ typedef PARSE_STAGE;
|
|||||||
#define SQUADNAMEFILENAME "SquadNames.xml"
|
#define SQUADNAMEFILENAME "SquadNames.xml"
|
||||||
#define BACKGROUNDSFILENAME "Backgrounds.xml"
|
#define BACKGROUNDSFILENAME "Backgrounds.xml"
|
||||||
#define TAUNTSFILENAME "EnemyTaunts.xml"
|
#define TAUNTSFILENAME "EnemyTaunts.xml"
|
||||||
|
#define TAUNTSFILENAMEBEGINNING "EnemyTaunts"
|
||||||
|
#define TAUNTSFILENAMEENDING ".xml"
|
||||||
|
|
||||||
#define ENEMY_ADMIN_PROFILE_FILENAME "Profiles\\SoldierProfileEnemyAdmin.xml"
|
#define ENEMY_ADMIN_PROFILE_FILENAME "Profiles\\SoldierProfileEnemyAdmin.xml"
|
||||||
#define ENEMY_REGULAR_PROFILE_FILENAME "Profiles\\SoldierProfileEnemyRegular.xml"
|
#define ENEMY_REGULAR_PROFILE_FILENAME "Profiles\\SoldierProfileEnemyRegular.xml"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ struct
|
|||||||
UINT32 currentDepth;
|
UINT32 currentDepth;
|
||||||
UINT32 maxReadDepth;
|
UINT32 maxReadDepth;
|
||||||
}
|
}
|
||||||
typedef enemyRankParseData;
|
typedef tauntParseData;
|
||||||
|
|
||||||
BOOLEAN localizedTextOnly_Taunts;
|
BOOLEAN localizedTextOnly_Taunts;
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ UINT16 num_found_taunt = 0; // the correct number is set on reading the xml
|
|||||||
static void XMLCALL
|
static void XMLCALL
|
||||||
tauntStartElementHandle(void *userData, const XML_Char *name, const XML_Char **atts)
|
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?
|
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
|
static void XMLCALL
|
||||||
tauntCharacterDataHandle(void *userData, const XML_Char *str, int len)
|
tauntCharacterDataHandle(void *userData, const XML_Char *str, int len)
|
||||||
{
|
{
|
||||||
enemyRankParseData * pData = (enemyRankParseData *)userData;
|
tauntParseData * pData = (tauntParseData *)userData;
|
||||||
|
|
||||||
if( (pData->currentDepth <= pData->maxReadDepth) &&
|
if( (pData->currentDepth <= pData->maxReadDepth) &&
|
||||||
(strlen(pData->szCharData) < MAX_CHAR_DATA_LENGTH)
|
(strlen(pData->szCharData) < MAX_CHAR_DATA_LENGTH)
|
||||||
@@ -214,7 +214,7 @@ tauntCharacterDataHandle(void *userData, const XML_Char *str, int len)
|
|||||||
static void XMLCALL
|
static void XMLCALL
|
||||||
tauntEndElementHandle(void *userData, const XML_Char *name)
|
tauntEndElementHandle(void *userData, const XML_Char *name)
|
||||||
{
|
{
|
||||||
enemyRankParseData * pData = (enemyRankParseData *)userData;
|
tauntParseData * pData = (tauntParseData *)userData;
|
||||||
|
|
||||||
if(pData->currentDepth <= pData->maxReadDepth)
|
if(pData->currentDepth <= pData->maxReadDepth)
|
||||||
{
|
{
|
||||||
@@ -272,8 +272,8 @@ tauntEndElementHandle(void *userData, const XML_Char *name)
|
|||||||
pData->curTaunt.uiFlags2 |= TAUNT_C_VETERAN;
|
pData->curTaunt.uiFlags2 |= TAUNT_C_VETERAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
//pData->curArray[pData->curTaunt.uiIndex] = pData->curTaunt;
|
pData->curArray[pData->curTaunt.uiIndex] = pData->curTaunt;
|
||||||
pData->curArray[num_found_taunt-1] = pData->curTaunt;
|
//pData->curArray[num_found_taunt-1] = pData->curTaunt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
num_found_taunt++;
|
num_found_taunt++;
|
||||||
@@ -931,7 +931,7 @@ BOOLEAN ReadInTaunts(STR fileName, BOOLEAN localizedVersion)
|
|||||||
CHAR8 * lpcBuffer;
|
CHAR8 * lpcBuffer;
|
||||||
XML_Parser parser = XML_ParserCreate(NULL);
|
XML_Parser parser = XML_ParserCreate(NULL);
|
||||||
|
|
||||||
enemyRankParseData pData;
|
tauntParseData pData;
|
||||||
|
|
||||||
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, "Loading EnemyTaunts.xml" );
|
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, "Loading EnemyTaunts.xml" );
|
||||||
|
|
||||||
@@ -962,11 +962,10 @@ BOOLEAN ReadInTaunts(STR fileName, BOOLEAN localizedVersion)
|
|||||||
|
|
||||||
|
|
||||||
memset(&pData,0,sizeof(pData));
|
memset(&pData,0,sizeof(pData));
|
||||||
pData.curArray = zTaunt;
|
pData.curArray = &(zTaunt[num_found_taunt]);
|
||||||
pData.maxArraySize = NUM_TAUNT;
|
pData.maxArraySize = NUM_TAUNT;
|
||||||
|
|
||||||
XML_SetUserData(parser, &pData);
|
XML_SetUserData(parser, &pData);
|
||||||
|
|
||||||
if(!XML_Parse(parser, lpcBuffer, uiFSize, TRUE))
|
if(!XML_Parse(parser, lpcBuffer, uiFSize, TRUE))
|
||||||
{
|
{
|
||||||
CHAR8 errorBuf[511];
|
CHAR8 errorBuf[511];
|
||||||
|
|||||||
Reference in New Issue
Block a user