new feature: soldier profiles allows defining individual names/bodytypes/hair/skin/traits of soldiers and militia. The game will choose randomly from this pool.

WARNING: GameDir revision >= 1672 is required.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6071 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2013-05-10 23:30:42 +00:00
parent 576866b63e
commit ee416f72bc
18 changed files with 394 additions and 11 deletions
+48
View File
@@ -1020,6 +1020,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src)
this->usStarveDamageHealth = 0;
this->usStarveDamageStrength = 0;
this->bAIIndex = 0;
this->usSoldierProfile = 0;
}
return *this;
}
@@ -16074,6 +16075,13 @@ STR16 SOLDIERTYPE::GetName()
tmpname[tmpuser][0] = '\0' ;
wcscat( tmpname[tmpuser], this->name );
if ( this->usSoldierProfile )
{
INT8 type = this->GetSoldierProfileType(this->bTeam);
if ( type > -1 )
wcscpy( tmpname[tmpuser], zSoldierProfile[type][this->usSoldierProfile].szName );
}
return tmpname[tmpuser];
}
@@ -16414,6 +16422,46 @@ UINT8 SOLDIERTYPE::GetBestEquippedFlashLightRange()
return( bestrange );
}
// Flugente: soldier profiles
// retrieves the correct sub-array
INT8 SOLDIERTYPE::GetSoldierProfileType(UINT8 usTeam)
{
INT8 type = -1;
if ( usTeam == ENEMY_TEAM && gGameExternalOptions.fSoldierProfiles_Enemy )
{
switch( this->ubSoldierClass )
{
case SOLDIER_CLASS_ELITE :
type = 2;
break;
case SOLDIER_CLASS_ARMY :
type = 1;
break;
case SOLDIER_CLASS_ADMINISTRATOR :
type = 0;
break;
}
}
else if ( usTeam == ENEMY_TEAM && gGameExternalOptions.fSoldierProfiles_Enemy )
{
switch( this->ubSoldierClass )
{
case SOLDIER_CLASS_ELITE_MILITIA :
type = 5;
break;
case SOLDIER_CLASS_REG_MILITIA :
type = 4;
break;
case SOLDIER_CLASS_GREEN_MILITIA :
type = 3;
break;
}
}
return type;
}
INT32 CheckBleeding( SOLDIERTYPE *pSoldier )
{
INT8 bBandaged; //,savedOurTurn;