mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
1) Do not use a "Tab" instead "Space" in the text messages. We don't have symbol for symbol "Tab" in the fonts, so when we use it in the text the game show "A"
2) Fixed mistakes in English 3) New translation for Russian text git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8025 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -100,7 +100,7 @@ BOOLEAN gfRandomizingPatrolGroup = FALSE;
|
|||||||
|
|
||||||
UINT8 gubNumGroupsArrivedSimultaneously = 0;
|
UINT8 gubNumGroupsArrivedSimultaneously = 0;
|
||||||
|
|
||||||
//Doesn't require text localization. This is for debug strings only.
|
//Doesn't require text localization. This is for debug strings only.
|
||||||
UINT8 gszTerrain[NUM_TRAVTERRAIN_TYPES][15] =
|
UINT8 gszTerrain[NUM_TRAVTERRAIN_TYPES][15] =
|
||||||
{
|
{
|
||||||
"TOWN", "ROAD", "PLAINS", "SAND", "SPARSE", "DENSE", "SWAMP",
|
"TOWN", "ROAD", "PLAINS", "SAND", "SPARSE", "DENSE", "SWAMP",
|
||||||
@@ -163,7 +163,7 @@ BOOLEAN gfWaitingForInput = FALSE;
|
|||||||
|
|
||||||
//Player grouping functions
|
//Player grouping functions
|
||||||
//.........................
|
//.........................
|
||||||
//Creates a new player group, returning the unique ID of that group. This is the first
|
//Creates a new player group, returning the unique ID of that group. This is the first
|
||||||
//step before adding waypoints and members to the player group.
|
//step before adding waypoints and members to the player group.
|
||||||
UINT8 CreateNewPlayerGroupDepartingFromSector( UINT8 ubSectorX, UINT8 ubSectorY )
|
UINT8 CreateNewPlayerGroupDepartingFromSector( UINT8 ubSectorX, UINT8 ubSectorY )
|
||||||
{
|
{
|
||||||
@@ -397,7 +397,7 @@ BOOLEAN RemovePlayerFromGroup( UINT8 ubGroupID, SOLDIERTYPE *pSoldier )
|
|||||||
|
|
||||||
//KM : August 6, 1999 Patch fix
|
//KM : August 6, 1999 Patch fix
|
||||||
// Because the release build has no assertions, it was still possible for the group to be null,
|
// Because the release build has no assertions, it was still possible for the group to be null,
|
||||||
// causing a crash. Instead of crashing, it'll simply return false.
|
// causing a crash. Instead of crashing, it'll simply return false.
|
||||||
if( !pGroup )
|
if( !pGroup )
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -436,14 +436,14 @@ BOOLEAN GroupReversingDirectionsBetweenSectors( GROUP *pGroup, UINT8 ubSectorX,
|
|||||||
if ( pGroup->usGroupTeam == OUR_TEAM )
|
if ( pGroup->usGroupTeam == OUR_TEAM )
|
||||||
{
|
{
|
||||||
// ARM: because we've changed the group's ubSectoryX and ubSectorY, we must now also go and change the sSectorX and
|
// ARM: because we've changed the group's ubSectoryX and ubSectorY, we must now also go and change the sSectorX and
|
||||||
// sSectorY of all the soldiers in this group so that they stay in synch. Otherwise pathing and movement problems
|
// sSectorY of all the soldiers in this group so that they stay in synch. Otherwise pathing and movement problems
|
||||||
// will result since the group is in one place while the merc is in another...
|
// will result since the group is in one place while the merc is in another...
|
||||||
SetLocationOfAllPlayerSoldiersInGroup( pGroup, pGroup->ubSectorX, pGroup->ubSectorY, 0 );
|
SetLocationOfAllPlayerSoldiersInGroup( pGroup, pGroup->ubSectorX, pGroup->ubSectorY, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// IMPORTANT: The traverse time doesn't change just because we reverse directions! It takes the same time no matter
|
// IMPORTANT: The traverse time doesn't change just because we reverse directions! It takes the same time no matter
|
||||||
// which direction you're going in! This becomes critical in case the player reverse directions again before moving!
|
// which direction you're going in! This becomes critical in case the player reverse directions again before moving!
|
||||||
|
|
||||||
// The time it takes to arrive there will be exactly the amount of time we have been moving away from it.
|
// The time it takes to arrive there will be exactly the amount of time we have been moving away from it.
|
||||||
SetGroupArrivalTime( pGroup, pGroup->uiTraverseTime - pGroup->uiArrivalTime + GetWorldTotalMin() * 2 );
|
SetGroupArrivalTime( pGroup, pGroup->uiTraverseTime - pGroup->uiArrivalTime + GetWorldTotalMin() * 2 );
|
||||||
@@ -470,7 +470,7 @@ BOOLEAN GroupReversingDirectionsBetweenSectors( GROUP *pGroup, UINT8 ubSectorX,
|
|||||||
// To handle this situation, RebuildWayPointsForGroupPath() will issue it's own call after it's ready for it.
|
// To handle this situation, RebuildWayPointsForGroupPath() will issue it's own call after it's ready for it.
|
||||||
if ( !fBuildingWaypoints )
|
if ( !fBuildingWaypoints )
|
||||||
{
|
{
|
||||||
// never really left. Must set check for battle TRUE in order for HandleNonCombatGroupArrival() to run!
|
// never really left. Must set check for battle TRUE in order for HandleNonCombatGroupArrival() to run!
|
||||||
GroupArrivedAtSector( pGroup->ubGroupID, TRUE, TRUE );
|
GroupArrivedAtSector( pGroup->ubGroupID, TRUE, TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -518,7 +518,7 @@ BOOLEAN GroupBetweenSectorsAndSectorXYIsInDifferentDirection( GROUP *pGroup, UIN
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compare the dx/dy's. If they're exactly the same, group is travelling in the same direction as before, so we're not
|
// Compare the dx/dy's. If they're exactly the same, group is travelling in the same direction as before, so we're not
|
||||||
// changing directions.
|
// changing directions.
|
||||||
// Note that 90-degree orthogonal changes are considered changing direction, as well as the full 180-degree reversal.
|
// Note that 90-degree orthogonal changes are considered changing direction, as well as the full 180-degree reversal.
|
||||||
// That's because the party must return to the previous sector in each of those cases, too.
|
// That's because the party must return to the previous sector in each of those cases, too.
|
||||||
@@ -531,7 +531,7 @@ BOOLEAN GroupBetweenSectorsAndSectorXYIsInDifferentDirection( GROUP *pGroup, UIN
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Appends a waypoint to the end of the list. Waypoint MUST be on the
|
//Appends a waypoint to the end of the list. Waypoint MUST be on the
|
||||||
//same horizontal or vertical level as the last waypoint added.
|
//same horizontal or vertical level as the last waypoint added.
|
||||||
BOOLEAN AddWaypointToPGroup( GROUP* pGroup, UINT8 ubSectorX, UINT8 ubSectorY ) //Same, but overloaded
|
BOOLEAN AddWaypointToPGroup( GROUP* pGroup, UINT8 ubSectorX, UINT8 ubSectorY ) //Same, but overloaded
|
||||||
{
|
{
|
||||||
@@ -546,7 +546,7 @@ BOOLEAN AddWaypointToPGroup( GROUP* pGroup, UINT8 ubSectorX, UINT8 ubSectorY ) /
|
|||||||
if( !pGroup )
|
if( !pGroup )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
//At this point, we have the group, and a valid coordinate. Now we must
|
//At this point, we have the group, and a valid coordinate. Now we must
|
||||||
//determine that this waypoint will be aligned exclusively to either the x or y axis of
|
//determine that this waypoint will be aligned exclusively to either the x or y axis of
|
||||||
//the last waypoint in the list.
|
//the last waypoint in the list.
|
||||||
pWay = pGroup->pWaypoints;
|
pWay = pGroup->pWaypoints;
|
||||||
@@ -560,10 +560,10 @@ BOOLEAN AddWaypointToPGroup( GROUP* pGroup, UINT8 ubSectorX, UINT8 ubSectorY ) /
|
|||||||
AddSectorToFrontOfMercPathForAllSoldiersInGroup( pGroup, pGroup->ubSectorX, pGroup->ubSectorY );
|
AddSectorToFrontOfMercPathForAllSoldiersInGroup( pGroup, pGroup->ubSectorX, pGroup->ubSectorY );
|
||||||
}
|
}
|
||||||
|
|
||||||
//Very special case that requiring specific coding. Check out the comments
|
//Very special case that requiring specific coding. Check out the comments
|
||||||
//at the above function for more information.
|
//at the above function for more information.
|
||||||
fReversingDirection = TRUE;
|
fReversingDirection = TRUE;
|
||||||
// ARM: Kris - new rulez. Must still fall through and add a waypoint anyway!!!
|
// ARM: Kris - new rulez. Must still fall through and add a waypoint anyway!!!
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ //No waypoints, so compare against the current location.
|
{ //No waypoints, so compare against the current location.
|
||||||
@@ -754,9 +754,9 @@ GROUP* CreateNewEnemyGroupDepartingFromSector( UINT32 uiSector, UINT8 ubNumAdmin
|
|||||||
CHAR16 str[ 512 ];
|
CHAR16 str[ 512 ];
|
||||||
if ( PlayerMercsInSector( pNew->ubSectorX, pNew->ubSectorY, 0 ) || NumNonPlayerTeamMembersInSector( pNew->ubSectorX, pNew->ubSectorY, MILITIA_TEAM ) )
|
if ( PlayerMercsInSector( pNew->ubSectorX, pNew->ubSectorY, 0 ) || NumNonPlayerTeamMembersInSector( pNew->ubSectorX, pNew->ubSectorY, MILITIA_TEAM ) )
|
||||||
{
|
{
|
||||||
swprintf( str, L"Attempting to send enemy troops from player occupied location. "
|
swprintf( str, L"Attempting to send enemy troops from player occupied location. "
|
||||||
L"Please ALT+TAB out of the game before doing anything else and send 'Strategic Decisions.txt' "
|
L"Please ALT+TAB out of the game before doing anything else and send 'Strategic Decisions.txt' "
|
||||||
L"and this message. You'll likely need to revert to a previous save. If you can reproduce this "
|
L"and this message. You'll likely need to revert to a previous save. If you can reproduce this "
|
||||||
L"with a save close to this event, that would really help me! -- KM:0" );
|
L"with a save close to this event, that would really help me! -- KM:0" );
|
||||||
DoScreenIndependantMessageBox( str, MSG_BOX_FLAG_OK, NULL );
|
DoScreenIndependantMessageBox( str, MSG_BOX_FLAG_OK, NULL );
|
||||||
}
|
}
|
||||||
@@ -764,8 +764,8 @@ GROUP* CreateNewEnemyGroupDepartingFromSector( UINT32 uiSector, UINT8 ubNumAdmin
|
|||||||
* Not valid
|
* Not valid
|
||||||
else if( pNew->ubGroupSize > 25 )
|
else if( pNew->ubGroupSize > 25 )
|
||||||
{
|
{
|
||||||
swprintf( str, L"Strategic AI warning: Creating an enemy group containing %d soldiers "
|
swprintf( str, L"Strategic AI warning: Creating an enemy group containing %d soldiers "
|
||||||
L"(%d admins, %d troops, %d elites) in sector %c%d. This message is a temporary test message "
|
L"(%d admins, %d troops, %d elites) in sector %c%d. This message is a temporary test message "
|
||||||
L"to evaluate a potential problems with very large enemy groups.",
|
L"to evaluate a potential problems with very large enemy groups.",
|
||||||
pNew->ubGroupSize, ubNumAdmins, ubNumTroops, ubNumElites,
|
pNew->ubGroupSize, ubNumAdmins, ubNumTroops, ubNumElites,
|
||||||
pNew->ubSectorY + 'A' - 1, pNew->ubSectorX );
|
pNew->ubSectorY + 'A' - 1, pNew->ubSectorX );
|
||||||
@@ -831,9 +831,9 @@ GROUP* CreateNewMilitiaGroupDepartingFromSector( UINT32 uiSector, UINT8 ubNumAdm
|
|||||||
/*CHAR16 str[512];
|
/*CHAR16 str[512];
|
||||||
if ( PlayerMercsInSector( pNew->ubSectorX, pNew->ubSectorY, 0 ) || NumNonPlayerTeamMembersInSector( pNew->ubSectorX, pNew->ubSectorY, MILITIA_TEAM ) )
|
if ( PlayerMercsInSector( pNew->ubSectorX, pNew->ubSectorY, 0 ) || NumNonPlayerTeamMembersInSector( pNew->ubSectorX, pNew->ubSectorY, MILITIA_TEAM ) )
|
||||||
{
|
{
|
||||||
swprintf( str, L"Attempting to send enemy troops from player occupied location. "
|
swprintf( str, L"Attempting to send enemy troops from player occupied location. "
|
||||||
L"Please ALT+TAB out of the game before doing anything else and send 'Strategic Decisions.txt' "
|
L"Please ALT+TAB out of the game before doing anything else and send 'Strategic Decisions.txt' "
|
||||||
L"and this message. You'll likely need to revert to a previous save. If you can reproduce this "
|
L"and this message. You'll likely need to revert to a previous save. If you can reproduce this "
|
||||||
L"with a save close to this event, that would really help me! -- KM:0" );
|
L"with a save close to this event, that would really help me! -- KM:0" );
|
||||||
DoScreenIndependantMessageBox( str, MSG_BOX_FLAG_OK, NULL );
|
DoScreenIndependantMessageBox( str, MSG_BOX_FLAG_OK, NULL );
|
||||||
}*/
|
}*/
|
||||||
@@ -841,8 +841,8 @@ GROUP* CreateNewMilitiaGroupDepartingFromSector( UINT32 uiSector, UINT8 ubNumAdm
|
|||||||
* Not valid
|
* Not valid
|
||||||
else if( pNew->ubGroupSize > 25 )
|
else if( pNew->ubGroupSize > 25 )
|
||||||
{
|
{
|
||||||
swprintf( str, L"Strategic AI warning: Creating an enemy group containing %d soldiers "
|
swprintf( str, L"Strategic AI warning: Creating an enemy group containing %d soldiers "
|
||||||
L"(%d admins, %d troops, %d elites) in sector %c%d. This message is a temporary test message "
|
L"(%d admins, %d troops, %d elites) in sector %c%d. This message is a temporary test message "
|
||||||
L"to evaluate a potential problems with very large enemy groups.",
|
L"to evaluate a potential problems with very large enemy groups.",
|
||||||
pNew->ubGroupSize, ubNumAdmins, ubNumTroops, ubNumElites,
|
pNew->ubGroupSize, ubNumAdmins, ubNumTroops, ubNumElites,
|
||||||
pNew->ubSectorY + 'A' - 1, pNew->ubSectorX );
|
pNew->ubSectorY + 'A' - 1, pNew->ubSectorX );
|
||||||
@@ -1003,8 +1003,8 @@ void HandleImportantPBIQuote( SOLDIERTYPE *pSoldier, GROUP *pInitiatingBattleGro
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//If this is called, we are setting the game up to bring up the prebattle interface. Before doing so,
|
//If this is called, we are setting the game up to bring up the prebattle interface. Before doing so,
|
||||||
//one of the involved mercs will pipe up. When he is finished, we automatically go into the mapscreen,
|
//one of the involved mercs will pipe up. When he is finished, we automatically go into the mapscreen,
|
||||||
//regardless of the mode we are in.
|
//regardless of the mode we are in.
|
||||||
void PrepareForPreBattleInterface( GROUP *pPlayerDialogGroup, GROUP *pInitiatingBattleGroup )
|
void PrepareForPreBattleInterface( GROUP *pPlayerDialogGroup, GROUP *pInitiatingBattleGroup )
|
||||||
{
|
{
|
||||||
@@ -1022,7 +1022,7 @@ void PrepareForPreBattleInterface( GROUP *pPlayerDialogGroup, GROUP *pInitiating
|
|||||||
{
|
{
|
||||||
// WDS Note: This can validly happen when multiple teams retreat and then immediately return to a sector.
|
// WDS Note: This can validly happen when multiple teams retreat and then immediately return to a sector.
|
||||||
// Just returning causes no problems.
|
// Just returning causes no problems.
|
||||||
// AssertMsg( 0, "fDisableMapInterfaceDueToBattle is set before attempting to bring up PBI. Please send PRIOR save if possible and details on anything that just happened before this battle." );
|
// AssertMsg( 0, "fDisableMapInterfaceDueToBattle is set before attempting to bring up PBI. Please send PRIOR save if possible and details on anything that just happened before this battle." );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1151,7 +1151,7 @@ BOOLEAN CheckConditionsForBattle( GROUP *pGroup )
|
|||||||
|
|
||||||
if( gfWorldLoaded )
|
if( gfWorldLoaded )
|
||||||
{
|
{
|
||||||
//look for people arriving in the currently loaded sector. This handles reinforcements.
|
//look for people arriving in the currently loaded sector. This handles reinforcements.
|
||||||
curr = FindMovementGroupInSector( (UINT8)gWorldSectorX, (UINT8)gWorldSectorY, OUR_TEAM );
|
curr = FindMovementGroupInSector( (UINT8)gWorldSectorX, (UINT8)gWorldSectorY, OUR_TEAM );
|
||||||
|
|
||||||
if( !gbWorldSectorZ && PlayerMercsInSector( (UINT8)gWorldSectorX, (UINT8)gWorldSectorY, gbWorldSectorZ ) &&
|
if( !gbWorldSectorZ && PlayerMercsInSector( (UINT8)gWorldSectorX, (UINT8)gWorldSectorY, gbWorldSectorZ ) &&
|
||||||
@@ -1193,8 +1193,8 @@ BOOLEAN CheckConditionsForBattle( GROUP *pGroup )
|
|||||||
(!IsGroupTheHelicopterGroup( curr ) || !fHelicopterIsAirBorne) &&
|
(!IsGroupTheHelicopterGroup( curr ) || !fHelicopterIsAirBorne) &&
|
||||||
(!curr->fVehicle || NumberMercsInVehicleGroup( curr )) )
|
(!curr->fVehicle || NumberMercsInVehicleGroup( curr )) )
|
||||||
{
|
{
|
||||||
//Now, a player group is in this sector. Determine if the group contains any mercs that can fight.
|
//Now, a player group is in this sector. Determine if the group contains any mercs that can fight.
|
||||||
//Vehicles, EPCs and the robot doesn't count. Mercs below OKLIFE do.
|
//Vehicles, EPCs and the robot doesn't count. Mercs below OKLIFE do.
|
||||||
pPlayer = curr->pPlayerList;
|
pPlayer = curr->pPlayerList;
|
||||||
while( pPlayer )
|
while( pPlayer )
|
||||||
{
|
{
|
||||||
@@ -1296,17 +1296,17 @@ BOOLEAN CheckConditionsForBattle( GROUP *pGroup )
|
|||||||
|
|
||||||
if( !fAliveMerc && !fMilitiaPresent )
|
if( !fAliveMerc && !fMilitiaPresent )
|
||||||
{
|
{
|
||||||
//empty vehicle, everyone dead, don't care. Enemies don't care.
|
//empty vehicle, everyone dead, don't care. Enemies don't care.
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( fBattlePending )
|
if( fBattlePending )
|
||||||
{
|
{
|
||||||
//A battle is pending, but the players could be all unconcious or dead.
|
//A battle is pending, but the players could be all unconcious or dead.
|
||||||
//Go through every group until we find at least one concious merc. The looping will determine
|
//Go through every group until we find at least one concious merc. The looping will determine
|
||||||
//if there are any live mercs and/or concious ones. If there are no concious mercs, but alive ones,
|
//if there are any live mercs and/or concious ones. If there are no concious mercs, but alive ones,
|
||||||
//then we will go straight to autoresolve, where the enemy will likely annihilate them or capture them.
|
//then we will go straight to autoresolve, where the enemy will likely annihilate them or capture them.
|
||||||
//If there are no alive mercs, then there is nothing anybody can do. The enemy will completely ignore
|
//If there are no alive mercs, then there is nothing anybody can do. The enemy will completely ignore
|
||||||
//this, and continue on.
|
//this, and continue on.
|
||||||
|
|
||||||
// WANNE: ValidateGroups now returns a BOOLEAN Value (TRUE/FALSE) if the attacking is valid.
|
// WANNE: ValidateGroups now returns a BOOLEAN Value (TRUE/FALSE) if the attacking is valid.
|
||||||
@@ -1460,7 +1460,7 @@ void CalculateNextMoveIntention( GROUP *pGroup )
|
|||||||
case CIRCULAR:
|
case CIRCULAR:
|
||||||
wp = wp->next;
|
wp = wp->next;
|
||||||
if( !wp )
|
if( !wp )
|
||||||
{ //reached the end of the patrol route. Set to the first waypoint in list, indefinately.
|
{ //reached the end of the patrol route. Set to the first waypoint in list, indefinately.
|
||||||
//NOTE: If the last waypoint isn't exclusively aligned to the x or y axis of the first
|
//NOTE: If the last waypoint isn't exclusively aligned to the x or y axis of the first
|
||||||
// waypoint, there will be an assertion failure inside the waypoint movement code.
|
// waypoint, there will be an assertion failure inside the waypoint movement code.
|
||||||
pGroup->ubNextWaypointID = 0;
|
pGroup->ubNextWaypointID = 0;
|
||||||
@@ -1848,7 +1848,7 @@ void GroupArrivedAtSector( UINT8 ubGroupID, BOOLEAN fCheckForBattle, BOOLEAN fNe
|
|||||||
if( pGroup->pPlayerList == NULL )
|
if( pGroup->pPlayerList == NULL )
|
||||||
{
|
{
|
||||||
// nobody here, better just get out now
|
// nobody here, better just get out now
|
||||||
AssertMsg( 0, String( "Player group %d arrived in sector empty. KM 0", ubGroupID ) );
|
AssertMsg( 0, String( "Player group %d arrived in sector empty. KM 0", ubGroupID ) );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1887,7 +1887,7 @@ void GroupArrivedAtSector( UINT8 ubGroupID, BOOLEAN fCheckForBattle, BOOLEAN fNe
|
|||||||
#else
|
#else
|
||||||
if( AreInMeanwhile() )
|
if( AreInMeanwhile() )
|
||||||
{
|
{
|
||||||
pGroup->uiArrivalTime ++; //tack on only 1 minute if we are in a meanwhile scene. This effectively
|
pGroup->uiArrivalTime ++; //tack on only 1 minute if we are in a meanwhile scene. This effectively
|
||||||
//prevents any battle from occurring while inside a meanwhile scene.
|
//prevents any battle from occurring while inside a meanwhile scene.
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1946,10 +1946,10 @@ void GroupArrivedAtSector( UINT8 ubGroupID, BOOLEAN fCheckForBattle, BOOLEAN fNe
|
|||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
INT32 iVehicleID;
|
INT32 iVehicleID;
|
||||||
iVehicleID = GivenMvtGroupIdFindVehicleId( pGroup->ubGroupID );
|
iVehicleID = GivenMvtGroupIdFindVehicleId( pGroup->ubGroupID );
|
||||||
AssertMsg( iVehicleID != -1, "GroupArrival for vehicle group. Invalid iVehicleID. " );
|
AssertMsg( iVehicleID != -1, "GroupArrival for vehicle group. Invalid iVehicleID. " );
|
||||||
|
|
||||||
pSoldier = GetSoldierStructureForVehicle( iVehicleID );
|
pSoldier = GetSoldierStructureForVehicle( iVehicleID );
|
||||||
AssertMsg( pSoldier, "GroupArrival for vehicle group. Invalid soldier pointer." );
|
AssertMsg( pSoldier, "GroupArrival for vehicle group. Invalid soldier pointer." );
|
||||||
|
|
||||||
SpendVehicleFuel( pSoldier, (INT16)(pGroup->uiTraverseTime*6) );
|
SpendVehicleFuel( pSoldier, (INT16)(pGroup->uiTraverseTime*6) );
|
||||||
|
|
||||||
@@ -2217,7 +2217,7 @@ void GroupArrivedAtSector( UINT8 ubGroupID, BOOLEAN fCheckForBattle, BOOLEAN fNe
|
|||||||
{
|
{
|
||||||
//Determine if a battle should start.
|
//Determine if a battle should start.
|
||||||
//if a battle does start, or get's delayed, then we will keep the group in memory including
|
//if a battle does start, or get's delayed, then we will keep the group in memory including
|
||||||
//all waypoints, until after the battle is resolved. At that point, we will continue the processing.
|
//all waypoints, until after the battle is resolved. At that point, we will continue the processing.
|
||||||
if( fCheckForBattle && !CheckConditionsForBattle( pGroup ) && !gfWaitingForInput )
|
if( fCheckForBattle && !CheckConditionsForBattle( pGroup ) && !gfWaitingForInput )
|
||||||
{
|
{
|
||||||
GROUP *next;
|
GROUP *next;
|
||||||
@@ -2463,7 +2463,7 @@ void HandleOtherGroupsArrivingSimultaneously( UINT8 ubSectorX, UINT8 ubSectorY,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//The user has just approved to plan a simultaneous arrival. So we will syncronize all of the involved
|
//The user has just approved to plan a simultaneous arrival. So we will syncronize all of the involved
|
||||||
//groups so that they arrive at the same time (which is the time the final group would arrive).
|
//groups so that they arrive at the same time (which is the time the final group would arrive).
|
||||||
void PrepareGroupsForSimultaneousArrival()
|
void PrepareGroupsForSimultaneousArrival()
|
||||||
{
|
{
|
||||||
@@ -2515,7 +2515,7 @@ void PrepareGroupsForSimultaneousArrival()
|
|||||||
pGroup = pGroup->next;
|
pGroup = pGroup->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
//We still have the first group that has arrived. Because they are set up to be in the destination
|
//We still have the first group that has arrived. Because they are set up to be in the destination
|
||||||
//sector, we will "warp" them back to the last sector, and also setup a new arrival time for them.
|
//sector, we will "warp" them back to the last sector, and also setup a new arrival time for them.
|
||||||
pGroup = gpPendingSimultaneousGroup;
|
pGroup = gpPendingSimultaneousGroup;
|
||||||
pGroup->ubNextX = pGroup->ubSectorX;
|
pGroup->ubNextX = pGroup->ubSectorX;
|
||||||
@@ -2553,8 +2553,8 @@ void PrepareGroupsForSimultaneousArrival()
|
|||||||
DelayEnemyGroupsIfPathsCross( pGroup );
|
DelayEnemyGroupsIfPathsCross( pGroup );
|
||||||
}
|
}
|
||||||
|
|
||||||
//See if there are other groups OTW. If so, and if we haven't asked the user yet to plan
|
//See if there are other groups OTW. If so, and if we haven't asked the user yet to plan
|
||||||
//a simultaneous attack, do so now, and readjust the groups accordingly. If it is possible
|
//a simultaneous attack, do so now, and readjust the groups accordingly. If it is possible
|
||||||
//to do so, then we will set up the gui, and postpone the prebattle interface.
|
//to do so, then we will set up the gui, and postpone the prebattle interface.
|
||||||
BOOLEAN PossibleToCoordinateSimultaneousGroupArrivals( GROUP *pFirstGroup )
|
BOOLEAN PossibleToCoordinateSimultaneousGroupArrivals( GROUP *pFirstGroup )
|
||||||
{
|
{
|
||||||
@@ -2618,7 +2618,7 @@ BOOLEAN PossibleToCoordinateSimultaneousGroupArrivals( GROUP *pFirstGroup )
|
|||||||
|
|
||||||
//header, sector, singular/plural str, confirmation string.
|
//header, sector, singular/plural str, confirmation string.
|
||||||
//Ex: Enemies have been detected in sector J9 and another squad is
|
//Ex: Enemies have been detected in sector J9 and another squad is
|
||||||
// about to arrive. Do you wish to coordinate a simultaneous arrival?
|
// about to arrive. Do you wish to coordinate a simultaneous arrival?
|
||||||
swprintf( str, pStr,
|
swprintf( str, pStr,
|
||||||
pEnemyType, //Enemy type (Enemies or bloodcats)
|
pEnemyType, //Enemy type (Enemies or bloodcats)
|
||||||
'A' + gpPendingSimultaneousGroup->ubSectorY - 1, gpPendingSimultaneousGroup->ubSectorX ); //Sector location
|
'A' + gpPendingSimultaneousGroup->ubSectorY - 1, gpPendingSimultaneousGroup->ubSectorX ); //Sector location
|
||||||
@@ -2939,7 +2939,7 @@ void RemoveGroupWaypoints( UINT8 ubGroupID )
|
|||||||
void RemovePGroupWaypoints( GROUP *pGroup )
|
void RemovePGroupWaypoints( GROUP *pGroup )
|
||||||
{
|
{
|
||||||
WAYPOINT* wp;
|
WAYPOINT* wp;
|
||||||
//if there aren't any waypoints to delete, then return. This also avoids setting
|
//if there aren't any waypoints to delete, then return. This also avoids setting
|
||||||
//the fWaypointsCancelled flag.
|
//the fWaypointsCancelled flag.
|
||||||
if( !pGroup->pWaypoints )
|
if( !pGroup->pWaypoints )
|
||||||
return;
|
return;
|
||||||
@@ -2954,7 +2954,7 @@ void RemovePGroupWaypoints( GROUP *pGroup )
|
|||||||
pGroup->pWaypoints = NULL;
|
pGroup->pWaypoints = NULL;
|
||||||
|
|
||||||
//By setting this flag, it acknowledges the possibility that the group is currently between sectors,
|
//By setting this flag, it acknowledges the possibility that the group is currently between sectors,
|
||||||
//and will continue moving until it reaches the next sector. If the user decides to change directions,
|
//and will continue moving until it reaches the next sector. If the user decides to change directions,
|
||||||
//during this process, the arrival event must be modified to send the group back.
|
//during this process, the arrival event must be modified to send the group back.
|
||||||
//pGroup->fWaypointsCancelled = TRUE;
|
//pGroup->fWaypointsCancelled = TRUE;
|
||||||
}
|
}
|
||||||
@@ -3358,7 +3358,7 @@ INT32 GetSectorMvtTimeForGroup( UINT8 ubSector, UINT8 ubDirection, GROUP *pGroup
|
|||||||
|
|
||||||
// THIS FUNCTION WAS WRITTEN TO HANDLE MOVEMENT TYPES WHERE MORE THAN ONE TRANSPORTAION TYPE IS AVAILABLE.
|
// THIS FUNCTION WAS WRITTEN TO HANDLE MOVEMENT TYPES WHERE MORE THAN ONE TRANSPORTAION TYPE IS AVAILABLE.
|
||||||
|
|
||||||
//Determine the group's method(s) of tranportation. If more than one,
|
//Determine the group's method(s) of tranportation. If more than one,
|
||||||
//we will always use the highest time.
|
//we will always use the highest time.
|
||||||
// WANNE: If we have an old savegame (from the dev. trunk, where the skyrider can only move on roads), just change the "pGroup->ubTransportationMask" to 16 for the heli to fix it in the savegame
|
// WANNE: If we have an old savegame (from the dev. trunk, where the skyrider can only move on roads), just change the "pGroup->ubTransportationMask" to 16 for the heli to fix it in the savegame
|
||||||
fFoot = (UINT8)(pGroup->ubTransportationMask & FOOT);
|
fFoot = (UINT8)(pGroup->ubTransportationMask & FOOT);
|
||||||
@@ -3372,9 +3372,9 @@ INT32 GetSectorMvtTimeForGroup( UINT8 ubSector, UINT8 ubDirection, GROUP *pGroup
|
|||||||
if( ubTraverseType == EDGEOFWORLD )
|
if( ubTraverseType == EDGEOFWORLD )
|
||||||
return 0xffffffff; //can't travel here!
|
return 0xffffffff; //can't travel here!
|
||||||
|
|
||||||
// ARM: Made air-only travel take its normal time per sector even through towns. Because Skyrider charges by the sector,
|
// ARM: Made air-only travel take its normal time per sector even through towns. Because Skyrider charges by the sector,
|
||||||
// not by flying time, it's annoying when his default route detours through a town to save time, but costs extra money.
|
// not by flying time, it's annoying when his default route detours through a town to save time, but costs extra money.
|
||||||
// This isn't exactly unrealistic, since the chopper shouldn't be faster flying over a town anyway... Not that other
|
// This isn't exactly unrealistic, since the chopper shouldn't be faster flying over a town anyway... Not that other
|
||||||
// kinds of travel should be either - but the towns represents a kind of warping of our space-time scale as it is...
|
// kinds of travel should be either - but the towns represents a kind of warping of our space-time scale as it is...
|
||||||
if( ( ubTraverseType == TOWN ) && ( pGroup->ubTransportationMask != AIR ) )
|
if( ( ubTraverseType == TOWN ) && ( pGroup->ubTransportationMask != AIR ) )
|
||||||
return 5; //very fast, and vehicle types don't matter.
|
return 5; //very fast, and vehicle types don't matter.
|
||||||
@@ -3411,7 +3411,7 @@ INT32 GetSectorMvtTimeForGroup( UINT8 ubSector, UINT8 ubDirection, GROUP *pGroup
|
|||||||
{
|
{
|
||||||
pSoldier = curr->pSoldier;
|
pSoldier = curr->pSoldier;
|
||||||
if( pSoldier->bAssignment != VEHICLE )
|
if( pSoldier->bAssignment != VEHICLE )
|
||||||
{ //Soldier is on foot and travelling. Factor encumbrance into movement rate.
|
{ //Soldier is on foot and travelling. Factor encumbrance into movement rate.
|
||||||
iEncumbrance = CalculateCarriedWeight( pSoldier );
|
iEncumbrance = CalculateCarriedWeight( pSoldier );
|
||||||
if( iEncumbrance > iHighestEncumbrance )
|
if( iEncumbrance > iHighestEncumbrance )
|
||||||
{
|
{
|
||||||
@@ -3779,7 +3779,7 @@ BOOLEAN PlayersBetweenTheseSectors( INT16 sSource, INT16 sDest, INT32 *iCountEnt
|
|||||||
// Assert( gfPreBattleInterfaceActive );
|
// Assert( gfPreBattleInterfaceActive );
|
||||||
}
|
}
|
||||||
|
|
||||||
// get number of characters entering/existing between these two sectors. Special conditions during
|
// get number of characters entering/existing between these two sectors. Special conditions during
|
||||||
// pre-battle interface to return where this function is used to show potential retreating directions instead!
|
// pre-battle interface to return where this function is used to show potential retreating directions instead!
|
||||||
|
|
||||||
// check all groups
|
// check all groups
|
||||||
@@ -4582,7 +4582,7 @@ void RetreatGroupToPreviousSector( GROUP *pGroup )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ //Group doesn't have a previous sector. Create one, then recurse
|
{ //Group doesn't have a previous sector. Create one, then recurse
|
||||||
CalculateGroupRetreatSector( pGroup );
|
CalculateGroupRetreatSector( pGroup );
|
||||||
RetreatGroupToPreviousSector( pGroup );
|
RetreatGroupToPreviousSector( pGroup );
|
||||||
}
|
}
|
||||||
@@ -4682,7 +4682,7 @@ BOOLEAN GroupAtFinalDestination( GROUP *pGroup )
|
|||||||
wp = GetFinalWaypoint( pGroup );
|
wp = GetFinalWaypoint( pGroup );
|
||||||
|
|
||||||
if( !wp )
|
if( !wp )
|
||||||
{ //no waypoints, so the group is at it's destination. This happens when
|
{ //no waypoints, so the group is at it's destination. This happens when
|
||||||
//an enemy group is created in the destination sector (which is legal for
|
//an enemy group is created in the destination sector (which is legal for
|
||||||
//staging groups which always stop adjacent to their real sector destination)
|
//staging groups which always stop adjacent to their real sector destination)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -4717,7 +4717,7 @@ WAYPOINT *GetFinalWaypoint( GROUP *pGroup )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//The sector supplied resets ALL enemy groups in the sector specified. See comments in
|
//The sector supplied resets ALL enemy groups in the sector specified. See comments in
|
||||||
//ResetMovementForNonPlayerGroup() for more details on what the resetting does.
|
//ResetMovementForNonPlayerGroup() for more details on what the resetting does.
|
||||||
void ResetMovementForNonPlayerGroupsInLocation( UINT8 ubSectorX, UINT8 ubSectorY )
|
void ResetMovementForNonPlayerGroupsInLocation( UINT8 ubSectorX, UINT8 ubSectorY )
|
||||||
{
|
{
|
||||||
@@ -4742,9 +4742,9 @@ void ResetMovementForNonPlayerGroupsInLocation( UINT8 ubSectorX, UINT8 ubSectorY
|
|||||||
|
|
||||||
|
|
||||||
//This function is used to reset the location of the enemy group if they are
|
//This function is used to reset the location of the enemy group if they are
|
||||||
//currently between sectors. If they were 50% of the way from sector A10 to A11,
|
//currently between sectors. If they were 50% of the way from sector A10 to A11,
|
||||||
//then after this function is called, then that group would be 0% of the way from
|
//then after this function is called, then that group would be 0% of the way from
|
||||||
//sector A10 to A11. In no way does this function effect the strategic path for
|
//sector A10 to A11. In no way does this function effect the strategic path for
|
||||||
//the group.
|
//the group.
|
||||||
void ResetMovementForNonPlayerGroup( GROUP *pGroup )
|
void ResetMovementForNonPlayerGroup( GROUP *pGroup )
|
||||||
{
|
{
|
||||||
@@ -4813,8 +4813,8 @@ void ResetMovementForNonPlayerGroup( GROUP *pGroup )
|
|||||||
|
|
||||||
//Calculate the new arrival time (all data pertaining to movement should be valid)
|
//Calculate the new arrival time (all data pertaining to movement should be valid)
|
||||||
if( pGroup->uiTraverseTime > 400 )
|
if( pGroup->uiTraverseTime > 400 )
|
||||||
{ //The group was likely sleeping which makes for extremely long arrival times. Shorten it
|
{ //The group was likely sleeping which makes for extremely long arrival times. Shorten it
|
||||||
//arbitrarily. Doesn't really matter if this isn't accurate.
|
//arbitrarily. Doesn't really matter if this isn't accurate.
|
||||||
pGroup->uiTraverseTime = 90;
|
pGroup->uiTraverseTime = 90;
|
||||||
}
|
}
|
||||||
SetGroupArrivalTime( pGroup, GetWorldTotalMin() + pGroup->uiTraverseTime );
|
SetGroupArrivalTime( pGroup, GetWorldTotalMin() + pGroup->uiTraverseTime );
|
||||||
@@ -4898,7 +4898,7 @@ void UpdatePersistantGroupsFromOldSave( UINT32 uiSavedGameVersion )
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Determines if any particular group WILL be moving through a given sector given it's current
|
//Determines if any particular group WILL be moving through a given sector given it's current
|
||||||
//position in the route and the pGroup->ubMoveType must be ONE_WAY. If the group is currently
|
//position in the route and the pGroup->ubMoveType must be ONE_WAY. If the group is currently
|
||||||
//IN the sector, or just left the sector, it will return FALSE.
|
//IN the sector, or just left the sector, it will return FALSE.
|
||||||
BOOLEAN GroupWillMoveThroughSector( GROUP *pGroup, UINT8 ubSectorX, UINT8 ubSectorY )
|
BOOLEAN GroupWillMoveThroughSector( GROUP *pGroup, UINT8 ubSectorX, UINT8 ubSectorY )
|
||||||
{
|
{
|
||||||
@@ -4907,7 +4907,7 @@ BOOLEAN GroupWillMoveThroughSector( GROUP *pGroup, UINT8 ubSectorX, UINT8 ubSect
|
|||||||
UINT8 ubOrigX, ubOrigY;
|
UINT8 ubOrigX, ubOrigY;
|
||||||
|
|
||||||
Assert( pGroup );
|
Assert( pGroup );
|
||||||
AssertMsg( pGroup->ubMoveType == ONE_WAY, String( "GroupWillMoveThroughSector() -- Attempting to test group with an invalid move type. ubGroupID: %d, ubMoveType: %d, sector: %c%d -- KM:0",
|
AssertMsg( pGroup->ubMoveType == ONE_WAY, String( "GroupWillMoveThroughSector() -- Attempting to test group with an invalid move type. ubGroupID: %d, ubMoveType: %d, sector: %c%d -- KM:0",
|
||||||
pGroup->ubGroupID, pGroup->ubMoveType, pGroup->ubSectorY + 'A' - 1, pGroup->ubSectorX ) );
|
pGroup->ubGroupID, pGroup->ubMoveType, pGroup->ubSectorY + 'A' - 1, pGroup->ubSectorX ) );
|
||||||
|
|
||||||
//Preserve the original sector values, as we will be temporarily modifying the group's ubSectorX/Y values
|
//Preserve the original sector values, as we will be temporarily modifying the group's ubSectorX/Y values
|
||||||
@@ -5038,7 +5038,7 @@ void AddFuelToVehicle( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pVehicle )
|
|||||||
{
|
{
|
||||||
#ifdef JA2BETAVERSION
|
#ifdef JA2BETAVERSION
|
||||||
CHAR16 str[ 100 ];
|
CHAR16 str[ 100 ];
|
||||||
swprintf( str, L"%s is supposed to have gas can in hand. ATE:0", pSoldier->name );
|
swprintf( str, L"%s is supposed to have gas can in hand. ATE:0", pSoldier->name );
|
||||||
DoScreenIndependantMessageBox( str, MSG_BOX_FLAG_OK, NULL );
|
DoScreenIndependantMessageBox( str, MSG_BOX_FLAG_OK, NULL );
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
@@ -5118,7 +5118,7 @@ void SetLocationOfAllPlayerSoldiersInGroup( GROUP *pGroup, INT16 sSectorX, INT16
|
|||||||
pSoldier = GetSoldierStructureForVehicle( iVehicleId );
|
pSoldier = GetSoldierStructureForVehicle( iVehicleId );
|
||||||
Assert ( pSoldier );
|
Assert ( pSoldier );
|
||||||
|
|
||||||
// these are apparently unnecessary, since vehicles are part of the pPlayerList in a vehicle group. Oh well.
|
// these are apparently unnecessary, since vehicles are part of the pPlayerList in a vehicle group. Oh well.
|
||||||
pSoldier->sSectorX = sSectorX;
|
pSoldier->sSectorX = sSectorX;
|
||||||
pSoldier->sSectorY = sSectorY;
|
pSoldier->sSectorY = sSectorY;
|
||||||
pSoldier->bSectorZ = bSectorZ;
|
pSoldier->bSectorZ = bSectorZ;
|
||||||
@@ -5183,7 +5183,7 @@ void RandomizePatrolGroupLocation( GROUP *pGroup )
|
|||||||
wp = wp->next;
|
wp = wp->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
//logic error if this fails. We should have a null value for ubChosen
|
//logic error if this fails. We should have a null value for ubChosen
|
||||||
Assert( !ubChosen );
|
Assert( !ubChosen );
|
||||||
Assert( wp );
|
Assert( wp );
|
||||||
|
|
||||||
@@ -5259,7 +5259,7 @@ BOOLEAN TestForBloodcatAmbush( GROUP *pGroup )
|
|||||||
// Bloodcats still exist here, but aren't at the optimal number?
|
// Bloodcats still exist here, but aren't at the optimal number?
|
||||||
if( pSector->bBloodCats > 0 && pSector->bBloodCats < pSector->bBloodCatPlacements )
|
if( pSector->bBloodCats > 0 && pSector->bBloodCats < pSector->bBloodCatPlacements )
|
||||||
{
|
{
|
||||||
//Slowly have them recuperate if we haven't been here for a long time. The population will
|
//Slowly have them recuperate if we haven't been here for a long time. The population will
|
||||||
//come back up to the maximum if left long enough.
|
//come back up to the maximum if left long enough.
|
||||||
INT32 iBloodCatDiff;
|
INT32 iBloodCatDiff;
|
||||||
iBloodCatDiff = pSector->bBloodCatPlacements - pSector->bBloodCats;
|
iBloodCatDiff = pSector->bBloodCatPlacements - pSector->bBloodCats;
|
||||||
@@ -5446,7 +5446,7 @@ void PlaceGroupInSector( UINT8 ubGroupID, INT16 sPrevX, INT16 sPrevY, INT16 sNex
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ARM: centralized it so we can do a comprehensive Assert on it. Causing problems with helicopter group!
|
// ARM: centralized it so we can do a comprehensive Assert on it. Causing problems with helicopter group!
|
||||||
void SetGroupArrivalTime( GROUP *pGroup, UINT32 uiArrivalTime )
|
void SetGroupArrivalTime( GROUP *pGroup, UINT32 uiArrivalTime )
|
||||||
{
|
{
|
||||||
// PLEASE CENTRALIZE ALL CHANGES TO THE ARRIVAL TIMES OF GROUPS THROUGH HERE, ESPECIALLY THE HELICOPTER GROUP!!!
|
// PLEASE CENTRALIZE ALL CHANGES TO THE ARRIVAL TIMES OF GROUPS THROUGH HERE, ESPECIALLY THE HELICOPTER GROUP!!!
|
||||||
@@ -5456,7 +5456,7 @@ void SetGroupArrivalTime( GROUP *pGroup, UINT32 uiArrivalTime )
|
|||||||
// the chopper groups must NEVER be delayed for any reason - it gets excluded from simultaneous arrival logic
|
// the chopper groups must NEVER be delayed for any reason - it gets excluded from simultaneous arrival logic
|
||||||
|
|
||||||
// Also note that non-chopper groups can currently be delayed such that this assetion would fail - enemy groups by
|
// Also note that non-chopper groups can currently be delayed such that this assetion would fail - enemy groups by
|
||||||
// DelayEnemyGroupsIfPathsCross(), and player groups via PrepareGroupsForSimultaneousArrival(). So we skip the assert.
|
// DelayEnemyGroupsIfPathsCross(), and player groups via PrepareGroupsForSimultaneousArrival(). So we skip the assert.
|
||||||
|
|
||||||
if ( IsGroupTheHelicopterGroup( pGroup ) )
|
if ( IsGroupTheHelicopterGroup( pGroup ) )
|
||||||
{
|
{
|
||||||
@@ -5540,8 +5540,8 @@ void PlayerGroupArrivedSafelyInSector( GROUP *pGroup, BOOLEAN fCheckForNPCs )
|
|||||||
|
|
||||||
// NOTE: Of course, it would be better if they continued onwards once everyone was ready to go again, in which
|
// NOTE: Of course, it would be better if they continued onwards once everyone was ready to go again, in which
|
||||||
// case we'd want to preserve the plotted path, but since the player can mess with the squads, etc.
|
// case we'd want to preserve the plotted path, but since the player can mess with the squads, etc.
|
||||||
// in the mean-time, that just seemed to risky to try to support. They could get into a fight and be too
|
// in the mean-time, that just seemed to risky to try to support. They could get into a fight and be too
|
||||||
// injured to move, etc. Basically, we'd have run a complete CanCharacterMoveInStrategic(0 check on all of them.
|
// injured to move, etc. Basically, we'd have run a complete CanCharacterMoveInStrategic(0 check on all of them.
|
||||||
// It's a wish list task for AM...
|
// It's a wish list task for AM...
|
||||||
|
|
||||||
// stop time so player can react if group was already on the move and suddenly halts
|
// stop time so player can react if group was already on the move and suddenly halts
|
||||||
@@ -5833,14 +5833,14 @@ BOOLEAN ValidateGroups( GROUP *pGroup )
|
|||||||
CHAR16 str[ 512 ];
|
CHAR16 str[ 512 ];
|
||||||
if( pGroup->ubSectorIDOfLastReassignment == 255 )
|
if( pGroup->ubSectorIDOfLastReassignment == 255 )
|
||||||
{
|
{
|
||||||
swprintf( str, L"Enemy group found with 0 troops in it. This is illegal and group will be deleted."
|
swprintf( str, L"Enemy group found with 0 troops in it. This is illegal and group will be deleted."
|
||||||
L" Group %d in sector %c%d originated from sector %c%d.",
|
L" Group %d in sector %c%d originated from sector %c%d.",
|
||||||
pGroup->ubGroupID, pGroup->ubSectorY + 'A' - 1, pGroup->ubSectorX,
|
pGroup->ubGroupID, pGroup->ubSectorY + 'A' - 1, pGroup->ubSectorX,
|
||||||
SECTORY( pGroup->ubCreatedSectorID ) + 'A' - 1, SECTORX( pGroup->ubCreatedSectorID ) );
|
SECTORY( pGroup->ubCreatedSectorID ) + 'A' - 1, SECTORX( pGroup->ubCreatedSectorID ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
swprintf( str, L"Enemy group found with 0 troops in it. This is illegal and group will be deleted."
|
swprintf( str, L"Enemy group found with 0 troops in it. This is illegal and group will be deleted."
|
||||||
L" Group %d in sector %c%d originated from sector %c%d and last reassignment location was %c%d.",
|
L" Group %d in sector %c%d originated from sector %c%d and last reassignment location was %c%d.",
|
||||||
pGroup->ubGroupID, pGroup->ubSectorY + 'A' - 1, pGroup->ubSectorX,
|
pGroup->ubGroupID, pGroup->ubSectorY + 'A' - 1, pGroup->ubSectorX,
|
||||||
SECTORY( pGroup->ubCreatedSectorID ) + 'A' - 1, SECTORX( pGroup->ubCreatedSectorID ),
|
SECTORY( pGroup->ubCreatedSectorID ) + 'A' - 1, SECTORX( pGroup->ubCreatedSectorID ),
|
||||||
@@ -5974,8 +5974,8 @@ void CheckCombatInSectorDueToUnusualEnemyArrival( UINT8 aTeam, INT16 sX, INT16 s
|
|||||||
(!IsGroupTheHelicopterGroup( curr ) || !fHelicopterIsAirBorne) &&
|
(!IsGroupTheHelicopterGroup( curr ) || !fHelicopterIsAirBorne) &&
|
||||||
(!curr->fVehicle || NumberMercsInVehicleGroup( curr )) )
|
(!curr->fVehicle || NumberMercsInVehicleGroup( curr )) )
|
||||||
{
|
{
|
||||||
//Now, a player group is in this sector. Determine if the group contains any mercs that can fight.
|
//Now, a player group is in this sector. Determine if the group contains any mercs that can fight.
|
||||||
//Vehicles, EPCs and the robot doesn't count. Mercs below OKLIFE do.
|
//Vehicles, EPCs and the robot doesn't count. Mercs below OKLIFE do.
|
||||||
pPlayer = curr->pPlayerList;
|
pPlayer = curr->pPlayerList;
|
||||||
while ( pPlayer )
|
while ( pPlayer )
|
||||||
{
|
{
|
||||||
@@ -6057,10 +6057,10 @@ void CheckCombatInSectorDueToUnusualEnemyArrival( UINT8 aTeam, INT16 sX, INT16 s
|
|||||||
if ( fBattlePending )
|
if ( fBattlePending )
|
||||||
{
|
{
|
||||||
//A battle is pending, but the players could be all unconcious or dead.
|
//A battle is pending, but the players could be all unconcious or dead.
|
||||||
//Go through every group until we find at least one concious merc. The looping will determine
|
//Go through every group until we find at least one concious merc. The looping will determine
|
||||||
//if there are any live mercs and/or concious ones. If there are no concious mercs, but alive ones,
|
//if there are any live mercs and/or concious ones. If there are no concious mercs, but alive ones,
|
||||||
//then we will go straight to autoresolve, where the enemy will likely annihilate them or capture them.
|
//then we will go straight to autoresolve, where the enemy will likely annihilate them or capture them.
|
||||||
//If there are no alive mercs, then there is nothing anybody can do. The enemy will completely ignore
|
//If there are no alive mercs, then there is nothing anybody can do. The enemy will completely ignore
|
||||||
//this, and continue on.
|
//this, and continue on.
|
||||||
|
|
||||||
StopTimeCompression( );
|
StopTimeCompression( );
|
||||||
|
|||||||
@@ -497,7 +497,7 @@ STR16 QuestDescText[] =
|
|||||||
L"Rescue Maria",
|
L"Rescue Maria",
|
||||||
L"Chitzena Chalice",
|
L"Chitzena Chalice",
|
||||||
L"Held in Alma",
|
L"Held in Alma",
|
||||||
L"Interogation",
|
L"Interrogation",
|
||||||
|
|
||||||
L"Hillbilly Problem", //10
|
L"Hillbilly Problem", //10
|
||||||
L"Find Scientist",
|
L"Find Scientist",
|
||||||
@@ -538,11 +538,11 @@ STR16 FactDescText[] =
|
|||||||
|
|
||||||
L"Orta Liberated", //10
|
L"Orta Liberated", //10
|
||||||
L"Meduna Liberated",
|
L"Meduna Liberated",
|
||||||
L"Pacos approched",
|
L"Pacos approached",
|
||||||
L"Fatima Read note",
|
L"Fatima Read note",
|
||||||
L"Fatima Walked away from player",
|
L"Fatima Walked away from player",
|
||||||
L"Dimitri (#60) is dead",
|
L"Dimitri (#60) is dead",
|
||||||
L"Fatima responded to Dimitri's supprise",
|
L"Fatima responded to Dimitri's surprise",
|
||||||
L"Carlo's exclaimed 'no one moves'",
|
L"Carlo's exclaimed 'no one moves'",
|
||||||
L"Fatima described note",
|
L"Fatima described note",
|
||||||
L"Fatima arrives at final dest",
|
L"Fatima arrives at final dest",
|
||||||
@@ -600,7 +600,7 @@ STR16 FactDescText[] =
|
|||||||
L"Dynamo asked for first aid",
|
L"Dynamo asked for first aid",
|
||||||
L"Dynamo can be recruited",
|
L"Dynamo can be recruited",
|
||||||
L"Npc is bleeding",
|
L"Npc is bleeding",
|
||||||
L"Shank wnts to join",
|
L"Shank wants to join",
|
||||||
|
|
||||||
L"NPC is bleeding", //70
|
L"NPC is bleeding", //70
|
||||||
L"Player Team has head & Carmen in San Mona",
|
L"Player Team has head & Carmen in San Mona",
|
||||||
|
|||||||
+176
-176
@@ -155,7 +155,7 @@ STR16 pOtherButtonsText[] =
|
|||||||
STR16 pOtherButtonsHelpText[] =
|
STR16 pOtherButtonsHelpText[] =
|
||||||
{
|
{
|
||||||
L"Инструктаж",
|
L"Инструктаж",
|
||||||
L"Принять миссии",
|
L"Принять задания",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -173,7 +173,7 @@ STR16 pSectorPageText[] =
|
|||||||
L">>",
|
L">>",
|
||||||
L"Тип: ",
|
L"Тип: ",
|
||||||
L"Нет данных",
|
L"Нет данных",
|
||||||
L"Missing of defined missions. Add missions to the file TableData\\BriefingRoom\\BriefingRoom.xml. First mission has to be visible. Put value Hidden = 0.",
|
L"Нет поставленных заданий. Добавьте задания в файл TableData\\BriefingRoom\\BriefingRoom.xml. Первое задание должно быть видимым. Чтобы скрыть задание, установите значение = 0.",
|
||||||
L"Брифинг-зал. Пожалуйста, нажмите кнопку 'Войти'.",
|
L"Брифинг-зал. Пожалуйста, нажмите кнопку 'Войти'.",
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -220,7 +220,7 @@ STR16 pEncyclopediaShortCharacterText[] =
|
|||||||
|
|
||||||
STR16 pEncyclopediaHelpText[] =
|
STR16 pEncyclopediaHelpText[] =
|
||||||
{
|
{
|
||||||
L"Показать все",
|
L"Показать всё",
|
||||||
L"Показать города",
|
L"Показать города",
|
||||||
L"Показать базы ПВО",
|
L"Показать базы ПВО",
|
||||||
L"Показать другие места",
|
L"Показать другие места",
|
||||||
@@ -235,7 +235,7 @@ STR16 pEncyclopediaHelpText[] =
|
|||||||
|
|
||||||
STR16 pEncyclopediaSkrotyText[] =
|
STR16 pEncyclopediaSkrotyText[] =
|
||||||
{
|
{
|
||||||
L"Все",
|
L"Всё",
|
||||||
L"Город",
|
L"Город",
|
||||||
L"ПВО",
|
L"ПВО",
|
||||||
L"Друг.",
|
L"Друг.",
|
||||||
@@ -251,7 +251,7 @@ STR16 pEncyclopediaSkrotyText[] =
|
|||||||
STR16 pEncyclopediaFilterLocationText[] =
|
STR16 pEncyclopediaFilterLocationText[] =
|
||||||
{//major location filter button text max 7 chars
|
{//major location filter button text max 7 chars
|
||||||
//..L"------v"
|
//..L"------v"
|
||||||
L"Все",//0
|
L"Всё",//0
|
||||||
L"Города",
|
L"Города",
|
||||||
L"ПВО",
|
L"ПВО",
|
||||||
L"Шахты",
|
L"Шахты",
|
||||||
@@ -262,7 +262,7 @@ STR16 pEncyclopediaFilterLocationText[] =
|
|||||||
L"Другое",
|
L"Другое",
|
||||||
//filter button tooltip
|
//filter button tooltip
|
||||||
//..L"---------------------------------------------------------------------v"
|
//..L"---------------------------------------------------------------------v"
|
||||||
L"Показать все",//facility index + 1
|
L"Показать всё",//facility index + 1
|
||||||
L"Показать города",
|
L"Показать города",
|
||||||
L"Показать базы ПВО",
|
L"Показать базы ПВО",
|
||||||
L"Показать шахты",
|
L"Показать шахты",
|
||||||
@@ -302,8 +302,8 @@ STR16 pEncyclopediaFilterCharText[] =
|
|||||||
L"Показать наёмников из A.I.M.",
|
L"Показать наёмников из A.I.M.",
|
||||||
L"Показать наёмников из M.E.R.C",
|
L"Показать наёмников из M.E.R.C",
|
||||||
L"Показать повстанцев",
|
L"Показать повстанцев",
|
||||||
L"Показать ненанимаемых персонажей",
|
L"Показать неигровых персонажей",
|
||||||
L"Показать созданных игроком персонажей",
|
L"Показать персонажей игрока",
|
||||||
L"Показать другое\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр",
|
L"Показать другое\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр",
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -324,7 +324,7 @@ STR16 pEncyclopediaSubFilterCharText[] =
|
|||||||
STR16 pEncyclopediaFilterItemText[] =
|
STR16 pEncyclopediaFilterItemText[] =
|
||||||
{//major item filter button text max 7 chars
|
{//major item filter button text max 7 chars
|
||||||
//..L"------v"
|
//..L"------v"
|
||||||
L"Все",//0
|
L"Всё",//0
|
||||||
L"Оружие",
|
L"Оружие",
|
||||||
L"Патроны",
|
L"Патроны",
|
||||||
L"Броня",
|
L"Броня",
|
||||||
@@ -333,7 +333,7 @@ STR16 pEncyclopediaFilterItemText[] =
|
|||||||
L"Разное",//add new filter buttons before misc
|
L"Разное",//add new filter buttons before misc
|
||||||
//filter button tooltip
|
//filter button tooltip
|
||||||
//..L"---------------------------------------------------------------------v"
|
//..L"---------------------------------------------------------------------v"
|
||||||
L"Показать все",//misc index + 1
|
L"Показать всё",//misc index + 1
|
||||||
L"Показать оружие\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр",
|
L"Показать оружие\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр",
|
||||||
L"Показать боеприпасы\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр",
|
L"Показать боеприпасы\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр",
|
||||||
L"Показать броню\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр",
|
L"Показать броню\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр",
|
||||||
@@ -385,8 +385,8 @@ STR16 pEncyclopediaSubFilterItemText[] =
|
|||||||
L"Оптика",
|
L"Оптика",
|
||||||
L"Доп.",
|
L"Доп.",
|
||||||
L"Дуло",
|
L"Дуло",
|
||||||
L"Внешн.",
|
L"Съёмн.",
|
||||||
L"Внутр.",
|
L"Встроен.",
|
||||||
L"Другое",
|
L"Другое",
|
||||||
L"",//reserved. insert new attachment filters above!
|
L"",//reserved. insert new attachment filters above!
|
||||||
//Misc......v"
|
//Misc......v"
|
||||||
@@ -413,7 +413,7 @@ STR16 pEncyclopediaFilterQuestText[] =
|
|||||||
//..L"---------------------------------------------------------------------v"
|
//..L"---------------------------------------------------------------------v"
|
||||||
L"Показать все",//misc index + 1
|
L"Показать все",//misc index + 1
|
||||||
L"Показать активные квесты",
|
L"Показать активные квесты",
|
||||||
L"Показать завершенные квесты",
|
L"Показать завершённые квесты",
|
||||||
};
|
};
|
||||||
|
|
||||||
STR16 pEncyclopediaSubFilterQuestText[] =
|
STR16 pEncyclopediaSubFilterQuestText[] =
|
||||||
@@ -423,10 +423,9 @@ STR16 pEncyclopediaSubFilterQuestText[] =
|
|||||||
L"",//reserved. insert new completed quest subfilters above!
|
L"",//reserved. insert new completed quest subfilters above!
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
STR16 pEncyclopediaShortInventoryText[] =
|
STR16 pEncyclopediaShortInventoryText[] =
|
||||||
{
|
{
|
||||||
L"Все", //0
|
L"Всё", //0
|
||||||
L"Оружие",
|
L"Оружие",
|
||||||
L"Патроны",
|
L"Патроны",
|
||||||
L"Разгр.",
|
L"Разгр.",
|
||||||
@@ -487,156 +486,154 @@ STR16 BoxFilter[] =
|
|||||||
L"Разное", //34
|
L"Разное", //34
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO.Translate
|
STR16 QuestDescText[] =
|
||||||
STR16 QuestDescText[] =
|
|
||||||
{
|
{
|
||||||
L"Deliver Letter",
|
L"Доставка письма",
|
||||||
L"Food Route",
|
L"Поставка еды",
|
||||||
L"Terrorists",
|
L"Террористы",
|
||||||
L"Kingpin Chalice",
|
L"Кубок Босса",
|
||||||
L"Kingpin Money",
|
L"Деньги Босса",
|
||||||
L"Runaway Joey",
|
L"Беглец Джои",
|
||||||
L"Rescue Maria",
|
L"Спасение Марии",
|
||||||
L"Chitzena Chalice",
|
L"Кубок Читзены",
|
||||||
L"Held in Alma",
|
L"Пленники в Альме",
|
||||||
L"Interogation",
|
L"Допрос",
|
||||||
|
|
||||||
L"Hillbilly Problem", //10
|
L"Проблемные фермеры", //10
|
||||||
L"Find Scientist",
|
L"Найти учёного",
|
||||||
L"Deliver Video Camera",
|
L"Принести видеокамеру",
|
||||||
L"Blood Cats",
|
L"Кошки-убийцы",
|
||||||
L"Find Hermit",
|
L"Найти отшельника",
|
||||||
L"Creatures",
|
L"Твари в шахте",
|
||||||
L"Find Chopper Pilot",
|
L"Найти пилота вертолёта",
|
||||||
L"Escort SkyRider",
|
L"Сопроводить Всадника",
|
||||||
L"Free Dynamo",
|
L"Освободить Динамо",
|
||||||
L"Escort Tourists",
|
L"Сопроводить туристов",
|
||||||
|
|
||||||
|
|
||||||
L"Doreen", //20
|
L"Проверить Дорин", //20
|
||||||
L"Leather Shop Dream",
|
L"Мечта о магазине",
|
||||||
L"Escort Shank",
|
L"Сопроводить Шенка",
|
||||||
L"No 23 Yet",
|
L"No 23 Yet",
|
||||||
L"No 24 Yet",
|
L"No 24 Yet",
|
||||||
L"Kill Deidranna",
|
L"Убить Дейдрану",
|
||||||
L"No 26 Yet",
|
L"No 26 Yet",
|
||||||
L"No 27 Yet",
|
L"No 27 Yet",
|
||||||
L"No 28 Yet",
|
L"No 28 Yet",
|
||||||
L"No 29 Yet",
|
L"No 29 Yet",
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO.Translate
|
STR16 FactDescText[] =
|
||||||
STR16 FactDescText[] =
|
|
||||||
{
|
{
|
||||||
L"Omerta Liberated",
|
L"Омерта освобождена",
|
||||||
L"Drassen Liberated",
|
L"Драссен освобождён",
|
||||||
L"Sanmona Liberated",
|
L"Сан-Мона освобождена",
|
||||||
L"Cambria Liberated",
|
L"Камбрия освобождена",
|
||||||
L"Alma Liberated",
|
L"Альма освобождена",
|
||||||
L"Grumm Liberated",
|
L"Грам освобождён",
|
||||||
L"Tixa Liberated",
|
L"Тикса освобождена",
|
||||||
L"Chitzena Liberated",
|
L"Читзена освобождена",
|
||||||
L"Estoni Liberated",
|
L"Эстони освобождён",
|
||||||
L"Balime Liberated",
|
L"Балайм освобождён",
|
||||||
|
|
||||||
L"Orta Liberated", //10
|
L"Орта освобождена", //10
|
||||||
L"Meduna Liberated",
|
L"Медуна освобождена",
|
||||||
L"Pacos approched",
|
L"Поговорили с Пакосом",
|
||||||
L"Fatima Read note",
|
L"Фатима прочла письмо",
|
||||||
L"Fatima Walked away from player",
|
L"Фатима сбежала от игрока",
|
||||||
L"Dimitri (#60) is dead",
|
L"Димитрий (#60) мёртв",
|
||||||
L"Fatima responded to Dimitri's supprise",
|
L"Фатима ответила на удивление Димитрия",
|
||||||
L"Carlo's exclaimed 'no one moves'",
|
L"Карлос крикнул 'никому не двигаться'",
|
||||||
L"Fatima described note",
|
L"Фатима рассказала о письме",
|
||||||
L"Fatima arrives at final dest",
|
L"Фатима пришла в место назначения",
|
||||||
|
|
||||||
L"Dimitri said Fatima has proof", //20
|
L"Димитрий сказал, что у Фатимы есть доказательства", //20
|
||||||
L"Miguel overheard conversation",
|
L"Мигель выслушал доводы",
|
||||||
L"Miguel asked for letter",
|
L"Мигель попросил письмо",
|
||||||
L"Miguel read note",
|
L"Мигель прочёл письмо",
|
||||||
L"Ira comment on Miguel reading note",
|
L"Айра прокоментировала письмо Мигелю",
|
||||||
L"Rebels are enemies",
|
L"Повстанцы наши враги",
|
||||||
L"Fatima spoken to before given note",
|
L"Разговор Фатимы до передачи письма",
|
||||||
L"Start Drassen quest",
|
L"Получено задание с Драссеном",
|
||||||
L"Miguel offered Ira",
|
L"Мигель предложил Айру",
|
||||||
L"Pacos hurt/Killed",
|
L"Пакос ранен или убит",
|
||||||
|
|
||||||
L"Pacos is in A10", //30
|
L"Пакос в A10", //30
|
||||||
L"Current Sector is safe",
|
L"В секотре безопасно",
|
||||||
L"Bobby R Shpmnt in transit",
|
L"Посылка от БР в пути",
|
||||||
L"Bobby R Shpmnt in Drassen",
|
L"Посылка от БР в Драссене",
|
||||||
L"33 is TRUE and it arrived within 2 hours",
|
L"33 - ВЕРНО и прибыло в течение 2 часов",
|
||||||
L"33 is TRUE 34 is false more then 2 hours",
|
L"33 - ВЕРНО 34 - ЛОЖЬ, более чем 2 часа",
|
||||||
L"Player has realized part of shipment is missing",
|
L"Игрок заметил что часть груза пропала",
|
||||||
L"36 is TRUE and Pablo was injured by player",
|
L"36 - ВЕРНО и Пабло был избит игроком",
|
||||||
L"Pablo admitted theft",
|
L"Пабло проворовался",
|
||||||
L"Pablo returned goods, set 37 false",
|
L"Пабло вернул украденное, set 37 false",
|
||||||
|
|
||||||
L"Miguel will join team", //40
|
L"Мигель присоединится к команде", //40
|
||||||
L"Gave some cash to Pablo",
|
L"Дали Пабло немного денег",
|
||||||
L"Skyrider is currently under escort",
|
L"Небесного всадника сопровождают в город",
|
||||||
L"Skyrider is close to his chopper in Drassen",
|
L"Небесный Всадник уже близок к своему вертолёту в Драссене",
|
||||||
L"Skyrider explained deal",
|
L"Небесный всадник оговорил условия контракта",
|
||||||
L"Player has clicked on Heli in Mapscreen at least once",
|
L"Игрок выбрал вертолёт на стратегическом экране как минимум один раз",
|
||||||
L"NPC is owed money",
|
L"Неигровому персонажу должны денег",
|
||||||
L"Npc is wounded",
|
L"Неигровой персонаж ранен",
|
||||||
L"Npc was wounded by Player",
|
L"Неигровой персонаж ранен игроком",
|
||||||
L"Father J.Walker was told of food shortage",
|
L"Отцу Джону Уолкеру сказали о нехватке продовольствия",
|
||||||
|
|
||||||
L"Ira is not in sector", //50
|
L"Айра не в секторе", //50
|
||||||
L"Ira is doing the talking",
|
L"Айра ведёт беседу",
|
||||||
L"Food quest over",
|
L"Задание с продовольствием выполнено",
|
||||||
L"Pablo stole something from last shpmnt",
|
L"Пабло что-то украл с последней посылки",
|
||||||
L"Last shipment crashed",
|
L"Последнее отправление повреждено",
|
||||||
L"Last shipment went to wrong airport",
|
L"Последнее отправление отправлено не туда",
|
||||||
L"24 hours elapsed since notified that shpment went to wrong airport",
|
L"Прошло 24 часа с момента сообщения, что отправление отправлено не в тот аэропорт",
|
||||||
L"Lost package arrived with damaged goods. 56 to False",
|
L"Потерянная посылка пришла с повреждённым грузом. 56 to False",
|
||||||
L"Lost package is lost permanently. Turn 56 False",
|
L"Потерянная посылка пропала бесследно. Turn 56 False",
|
||||||
L"Next package can (random) be lost",
|
L"Следующее отправление может быть (random) потеряно",
|
||||||
|
|
||||||
L"Next package can(random) be delayed", //60
|
L"Следующее отправление может быть (random) задержано", //60
|
||||||
L"Package is medium sized",
|
L"Отправление среднего размера",
|
||||||
L"Package is largesized",
|
L"Отправление большого размера",
|
||||||
L"Doreen has conscience",
|
L"У Дорин проснулась совесть",
|
||||||
L"Player Spoke to Gordon",
|
L"Игрок поговорил с Гордоном",
|
||||||
L"Ira is still npc and in A10-2(hasnt joined)",
|
L"Айра до сих пор неигровой персонаж и находится в A10-2(не присоединилась)",
|
||||||
L"Dynamo asked for first aid",
|
L"Динамо просит оказать ему первую помощь",
|
||||||
L"Dynamo can be recruited",
|
L"Динамо можно нанять",
|
||||||
L"Npc is bleeding",
|
L"Неигровой персонаж истекает кровью",
|
||||||
L"Shank wnts to join",
|
L"Шенк хочет присоединиться",
|
||||||
|
|
||||||
L"NPC is bleeding", //70
|
L"Неигровой персонаж истекает кровью", //70
|
||||||
L"Player Team has head & Carmen in San Mona",
|
L"У игрока есть голова и Кармен в Сан-Мона",
|
||||||
L"Player Team has head & Carmen in Cambria",
|
L"У игрока есть голова и Кармен в Камбрии",
|
||||||
L"Player Team has head & Carmen in Drassen",
|
L"У игрока есть голова и Кармен в Драссене",
|
||||||
L"Father is drunk",
|
L"Отец пьян",
|
||||||
L"Player has wounded mercs within 8 tiles of NPC",
|
L"Раненые бойцы игрока находятся ближе 8 тайлов от неигрового персонажа",
|
||||||
L"1 & only 1 merc wounded within 8 tiles of NPC",
|
L"1 и только 1 раненый боец ближе 8 тайлов от неигрового персонажа",
|
||||||
L"More then 1 wounded merc within 8 tiles of NPC",
|
L"Больше одного раненного бойца ближе 8 тайлов от неигрового персонажа",
|
||||||
L"Brenda is in the store ",
|
L"Бренда в магазине ",
|
||||||
L"Brenda is Dead",
|
L"Бренда мертва",
|
||||||
|
|
||||||
L"Brenda is at home", //80
|
L"Бренда у себя дома", //80
|
||||||
L"NPC is an enemy",
|
L"Неигровой персонаж - враг",
|
||||||
L"Speaker Strength >= 84 and < 3 males present",
|
L"Уровень разговора >= 84 и < 3 мужчин присутствует",
|
||||||
L"Speaker Strength >= 84 and at least 3 males present",
|
L"Уровень разговора >= 84 и хотя бы 3 мужчины присутствует",
|
||||||
L"Hans lets ou see Tony",
|
L"Ганс позволил нам встретиться с Тони",
|
||||||
L"Hans is standing on 13523",
|
L"Ганс стоит на позиции 13523",
|
||||||
L"Tony isnt available Today",
|
L"Сегодня Тони нет",
|
||||||
L"Female is speaking to NPC",
|
L"Женщина разговаривает с неигровым персонажем",
|
||||||
L"Player has enjoyed the Brothel",
|
L"Игрок развлекался в борделе",
|
||||||
L"Carla is available",
|
L"Карла доступна",
|
||||||
|
|
||||||
L"Cindy is available", //90
|
L"Синди доступна", //90
|
||||||
L"Bambi is available",
|
L"Бэмби доступна",
|
||||||
L"No girls is available",
|
L"Свободных девочек нет",
|
||||||
L"Player waited for girls",
|
L"Игрок ожидал девочек",
|
||||||
L"Player paid right amount of money",
|
L"Игрок заплатил правильную сумму денег",
|
||||||
L"Mercs walked by goon",
|
L"Mercs walked by goon",
|
||||||
L"More thean 1 merc present within 3 tiles of NPC",
|
L"More thean 1 merc present within 3 tiles of NPC",
|
||||||
L"At least 1 merc present withing 3 tiles of NPC",
|
L"At least 1 merc present withing 3 tiles of NPC",
|
||||||
L"Kingping expectingh visit from player",
|
L"Босс ожидает визита игрока",
|
||||||
L"Darren expecting money from player",
|
L"Дэррен ожидает денег от игрока",
|
||||||
|
|
||||||
L"Player within 5 tiles and NPC is visible", // 100
|
L"Player within 5 tiles and NPC is visible", // 100
|
||||||
L"Carmen is in San Mona",
|
L"Carmen is in San Mona",
|
||||||
@@ -1080,6 +1077,7 @@ STR16 FactDescText[] =
|
|||||||
L"",
|
L"",
|
||||||
L"", //500
|
L"", //500
|
||||||
};
|
};
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
|
|
||||||
// Editor
|
// Editor
|
||||||
@@ -2804,7 +2802,7 @@ STR16 pTraitSkillsMenuDescStrings[] =
|
|||||||
STR16 pTraitSkillsDenialStrings[] =
|
STR16 pTraitSkillsDenialStrings[] =
|
||||||
{
|
{
|
||||||
L"Требуется:\n",
|
L"Требуется:\n",
|
||||||
L" - %d AP\n",
|
L" - %d ОД\n",
|
||||||
L" - %s\n",
|
L" - %s\n",
|
||||||
L" - %s или выше\n",
|
L" - %s или выше\n",
|
||||||
L" - %s или выше или\n",
|
L" - %s или выше или\n",
|
||||||
@@ -2814,7 +2812,7 @@ STR16 pTraitSkillsDenialStrings[] =
|
|||||||
L" - одержимость бесами",
|
L" - одержимость бесами",
|
||||||
};
|
};
|
||||||
|
|
||||||
STR16 pSkillMenuStrings[] = // TODO.Translate
|
STR16 pSkillMenuStrings[] =
|
||||||
{
|
{
|
||||||
L"Ополчение",
|
L"Ополчение",
|
||||||
L"Другие отряды",
|
L"Другие отряды",
|
||||||
@@ -3643,7 +3641,7 @@ STR16 gzMoneyAmounts[6] =
|
|||||||
L"Взять",
|
L"Взять",
|
||||||
};
|
};
|
||||||
|
|
||||||
// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons."
|
// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons."
|
||||||
CHAR16 gzProsLabel[10] =
|
CHAR16 gzProsLabel[10] =
|
||||||
{
|
{
|
||||||
L"+",
|
L"+",
|
||||||
@@ -5550,7 +5548,7 @@ STR16 BobbyRFilter[] =
|
|||||||
L"Головные",
|
L"Головные",
|
||||||
L"Разгр.с-мы",
|
L"Разгр.с-мы",
|
||||||
L"Прицелы", // Madd: new BR filters
|
L"Прицелы", // Madd: new BR filters
|
||||||
L"Рукоят./ЛЦУ",
|
L"Рукоят/ЛЦУ",
|
||||||
L"Дул.насад.",
|
L"Дул.насад.",
|
||||||
L"Приклады",
|
L"Приклады",
|
||||||
L"Маг./спуск.",
|
L"Маг./спуск.",
|
||||||
@@ -6840,7 +6838,7 @@ STR16 pMilitiaButtonsHelpText[] =
|
|||||||
L"Убрать (|R|i|g|h|t |C|l|i|c|k)\nДобавить (|L|e|f|t |C|l|i|c|k)\nНовобранцы", // button help text informing player they can pick up or drop militia with this button
|
L"Убрать (|R|i|g|h|t |C|l|i|c|k)\nДобавить (|L|e|f|t |C|l|i|c|k)\nНовобранцы", // button help text informing player they can pick up or drop militia with this button
|
||||||
L"Убрать (|R|i|g|h|t |C|l|i|c|k)\nДобавить (|L|e|f|t |C|l|i|c|k)\nРядовые",
|
L"Убрать (|R|i|g|h|t |C|l|i|c|k)\nДобавить (|L|e|f|t |C|l|i|c|k)\nРядовые",
|
||||||
L"Убрать (|R|i|g|h|t |C|l|i|c|k)\nДобавить (|L|e|f|t |C|l|i|c|k)\nВетераны",
|
L"Убрать (|R|i|g|h|t |C|l|i|c|k)\nДобавить (|L|e|f|t |C|l|i|c|k)\nВетераны",
|
||||||
L"Равномерно распределить ополчение по доступным секторам",
|
L"Равномерно распределить ополчение\nпо доступным секторам",
|
||||||
};
|
};
|
||||||
|
|
||||||
STR16 pMapScreenJustStartedHelpText[] =
|
STR16 pMapScreenJustStartedHelpText[] =
|
||||||
@@ -8593,30 +8591,32 @@ STR16 gzMapInventoryFilterOptions[] =
|
|||||||
L"Скрыть всё",
|
L"Скрыть всё",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// MercCompare (MeLoDy)
|
||||||
|
// TODO.Translate
|
||||||
STR16 gzMercCompare[] =
|
STR16 gzMercCompare[] =
|
||||||
{
|
{
|
||||||
L"???",
|
L"???",
|
||||||
L"Base opinion:",
|
L"Первое мнение:",
|
||||||
|
|
||||||
L"Dislikes %s %s",
|
L"Не нравятся %s %s",
|
||||||
L"Likes %s %s",
|
L"Симпатизирует %s %s",
|
||||||
|
|
||||||
L"Strongly hates %s",
|
L"Люто ненавидит %s",
|
||||||
L"Hates %s", // 5
|
L"Ненавидит %s", // 5
|
||||||
|
|
||||||
L"Deep racism against %s",
|
L"Лютый расист в отношении к %s",
|
||||||
L"Racism against %s",
|
L"Расист в отношении к %s",
|
||||||
|
|
||||||
L"Cares deeply about looks",
|
L"Излишне заботится о внешности",
|
||||||
L"Cares about looks",
|
L"Заботится о внешности",
|
||||||
|
|
||||||
L"Very sexist", // 10
|
L"Лютый сексист", // 10
|
||||||
L"Sexist",
|
L"Сексист",
|
||||||
|
|
||||||
L"Dislikes other background",
|
L"Dislikes other background",
|
||||||
L"Dislikes other backgrounds",
|
L"Dislikes other backgrounds",
|
||||||
|
|
||||||
L"Past grievances",
|
L"Затаил обиду",
|
||||||
L"____", // 15
|
L"____", // 15
|
||||||
L"/",
|
L"/",
|
||||||
};
|
};
|
||||||
@@ -9111,14 +9111,14 @@ STR16 szCareLevelText[]=
|
|||||||
{
|
{
|
||||||
L"не",
|
L"не",
|
||||||
L"немного",
|
L"немного",
|
||||||
L"очень",
|
L"сильно",
|
||||||
};
|
};
|
||||||
|
|
||||||
STR16 szRacistText[]=
|
STR16 szRacistText[]=
|
||||||
{
|
{
|
||||||
L"не",
|
L"не",
|
||||||
L"немного",
|
L"немного",
|
||||||
L"очень",
|
L"сильно",
|
||||||
};
|
};
|
||||||
|
|
||||||
STR16 szSexistText[]=
|
STR16 szSexistText[]=
|
||||||
@@ -9302,10 +9302,10 @@ STR16 szCampaignHistoryWebpageString[]=
|
|||||||
|
|
||||||
L"Повышеный",
|
L"Повышеный",
|
||||||
L"Общий",
|
L"Общий",
|
||||||
L"Детальный",
|
L"Полный",
|
||||||
L"Предыдущий",
|
L"Назад",
|
||||||
|
|
||||||
L"Следующий",
|
L"Далее",
|
||||||
L"Эпизод",
|
L"Эпизод",
|
||||||
L"День",
|
L"День",
|
||||||
};
|
};
|
||||||
@@ -9641,24 +9641,24 @@ STR16 szMercCompareWebSite[] =
|
|||||||
L" Парные сравнения",
|
L" Парные сравнения",
|
||||||
L" Отзывы клиентов",
|
L" Отзывы клиентов",
|
||||||
|
|
||||||
L" Если выш бизнес предполагает инновационные решения для критических приложений, работающих в режиме реального времени, возможно некоторые из этих наблюдений будут вам знакомы:",
|
L" Если ваш бизнес предполагает инновационные решения для критических приложений, работающих в режиме реального времени, возможно, некоторые из этих наблюдений будут вам знакомы:",
|
||||||
L"Ваша команда борется сама с собой.",
|
L"Ваша команда борется сама с собой.",
|
||||||
L"Ваши сотрудники тратят время мешая друг другу.",
|
L"Ваши сотрудники тратят время мешая друг другу.",
|
||||||
L"В вашем коллективе большая текучесть кадров.",
|
L"В вашем коллективе большая текучесть кадров.",
|
||||||
L"Вы постоянно получаете низкие оценки по удовлетворенности персонала работой.",
|
L"Вы постоянно получаете низкие оценки по удовлетворенности персонала работой.",
|
||||||
L" Если вы столкнулись хотя бы с одной из этих ситуаций, то, возможно, в вашем бизнесе есть проблемы. И скорее всего, ваши сотрудники не станут работать в полную силу. Но благодаря нашей запатентованной и простой для понимания системе \"БоЛТиК\", вы сможете вернуть производительность и счастливые улыбки на лицах всех ваших сотрудников в мгновение ока!",
|
L" Если вы столкнулись хотя бы с одной из этих ситуаций, то, возможно, в вашем деле есть проблемы. И скорее всего, ваши сотрудники не станут работать в полную силу. Но благодаря нашей запатентованной и простой для понимания системе \"БоЛТиК\", вы сможете вернуть производительность и счастливые улыбки на лицах всех ваших сотрудников в мгновение ока!",
|
||||||
|
|
||||||
// customer quotes
|
// customer quotes
|
||||||
L"Несколько цитат наших довольных клиентов:",
|
L"Несколько цитат наших благодарных клиентов:",
|
||||||
L"Мои прошлые отношения были просто ужасны. Я винила во всём себя... но теперь то я знаю. Все мужчины заслуживают смерти! Спасибо тебе, \"БоЛТиК\", за моё прозрение!",
|
L"Мои прошлые отношения были просто ужасны. Я винила во всём себя... но теперь то я знаю. Все мужчины заслуживают смерти! Спасибо тебе, \"БоЛТиК\", за моё прозрение!",
|
||||||
L"-Луиза Г., романист-",
|
L"-Луиза Г., романист-",
|
||||||
L"Я никогда не ладили со своими братьями, а в последнее время отношения совсем стали из рук вон плохими. Вы показали мне, что постыдное недоверие к отцу виной всему. Спасибо вам за это! Я должен открыто всё сказать отцу.",
|
L"Я никогда не ладил со своими братьями, а в последнее время отношения совсем стали из рук вон плохими. Вы показали мне, что постыдное недоверие к отцу виной всему. Спасибо вам за это! Я должен открыто всё сказать отцу.",
|
||||||
L"-Конрад C., Исправительное учреждение-",
|
L"-Конрад C., Исправительное учреждение-",
|
||||||
L"Я одиночка по жизни и работа в команде для меня была просто пыткой. Ваши представления показали мне как стать частью команды. Ваш вклад просто неоценим!",
|
L"Я одиночка по жизни, и работа в команде была просто пыткой. Но методика \"БоЛТиК\" показала мне как стать частью команды. Этот вклад просто неоценим!",
|
||||||
L"-Грант В., Заклинатель змей-",
|
L"-Грант В., Заклинатель змей-",
|
||||||
L"В моей работе необходимо доверять каждому члену команды на все 100 процентов. Вот почему мы обратились к экспертам, вот почему мы обратились к компании \"БоЛТиК\".",
|
L"В моей работе необходимо доверять каждому члену команды на все 100 процентов. Вот почему мы обратились к экспертам, вот почему мы обратились к компании \"БоЛТиК\".",
|
||||||
L"-Халлэ Л., СПК-",
|
L"-Халлэ Л., СПК-",
|
||||||
L"Прежде всего хочу признать, что наш коллектив был весьма разношерстым, из-за чего были частые конфликты. Но мы научились уважать друг друга, и в настоящее время дополнем друг друга.",
|
L"Прежде всего хочу признать, что наш коллектив был весьма разношерстым, из-за чего были частые конфликты. Но мы научились уважать друг друга, и в настоящее время дополняем друг друга.",
|
||||||
L"-Майкл C., НАСА-",
|
L"-Майкл C., НАСА-",
|
||||||
L"Рекоммендую отдать предпочтение этому сайту!",
|
L"Рекоммендую отдать предпочтение этому сайту!",
|
||||||
L"-Каспар Х., Логистическая компания H&C-",
|
L"-Каспар Х., Логистическая компания H&C-",
|
||||||
@@ -10888,17 +10888,17 @@ STR16 szIMPGearDropDownNoneText[] =
|
|||||||
|
|
||||||
STR16 szMilitiaStrategicMovementText[] =
|
STR16 szMilitiaStrategicMovementText[] =
|
||||||
{
|
{
|
||||||
L"We cannot relay orders to this sector, militia command not possible.",
|
L"Нельзя отдавать приказы в этом секторе, команды ополчению невозможны.",
|
||||||
L"Unassigned",
|
L"Незадействованы",
|
||||||
L"Group No.",
|
L"Группа №",
|
||||||
L"Next",
|
L"Далее",
|
||||||
|
|
||||||
L"ETA",
|
L"РВП",
|
||||||
L"Group %d (new)",
|
L"Группа %d (новая)",
|
||||||
L"Group %d",
|
L"Группа %d",
|
||||||
L"Final",
|
L"Final",
|
||||||
|
|
||||||
L"Militia Volunteers: %d (+%5.3f)",
|
L"Ополченцы добровольцы: %d (+%5.3f)",
|
||||||
};
|
};
|
||||||
|
|
||||||
STR16 szEnemyHeliText[] = // TODO.Translate
|
STR16 szEnemyHeliText[] = // TODO.Translate
|
||||||
|
|||||||
Reference in New Issue
Block a user