mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
- interrogation point calculation was suboptimal
- Fix: removed unnecessary check - robots cannot climb roofs, windows, fences or walls anymore git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6103 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -2616,16 +2616,18 @@ extern INT32 CalcThreateningEffectiveness( UINT8 ubMerc );
|
||||
// Flugente: calculate interrogation value
|
||||
UINT32 CalculateInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts )
|
||||
{
|
||||
UINT32 usInterrogationPoints = 0;
|
||||
UINT32 usInterrogationPoints = 0;
|
||||
|
||||
// for max points we display the maximum amount of prisoners instead
|
||||
*pusMaxPts = 0;
|
||||
if ( !pSoldier || !pSoldier->bSectorZ ) // FIXME: Dereferencing null pointer
|
||||
{
|
||||
SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( pSoldier->sSectorX, pSoldier->sSectorY ) ] );
|
||||
|
||||
*pusMaxPts = (UINT16)(pSectorInfo->uiNumberOfPrisonersOfWar);
|
||||
}
|
||||
// no soldier (how does that happen?) or underground -> no interrogation points, as there are no underground prisons
|
||||
if ( !pSoldier || pSoldier->bSectorZ )
|
||||
return 0;
|
||||
|
||||
SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( pSoldier->sSectorX, pSoldier->sSectorY ) ] );
|
||||
|
||||
*pusMaxPts = (UINT16)(pSectorInfo->uiNumberOfPrisonersOfWar);
|
||||
|
||||
// no prisoners -> no interrogation (this should not happen)
|
||||
if ( !*pusMaxPts )
|
||||
|
||||
@@ -6479,9 +6479,6 @@ void MoveSAIGroupToSector( GROUP **pGroup, UINT8 ubSectorID, UINT32 uiMoveCode,
|
||||
(*pGroup)->pEnemyGroup->ubIntention = ubIntention;
|
||||
(*pGroup)->ubMoveType = ONE_WAY;
|
||||
|
||||
//Make sure that the group isn't moving into a garrison sector. These sectors should be using ASSAULT intentions!
|
||||
Assert(ubIntention != PURSUIT && SectorInfo[ ubSectorID ].ubGarrisonID != NO_GARRISON );
|
||||
|
||||
if( (*pGroup)->ubSectorX == ubDstSectorX && (*pGroup)->ubSectorY == ubDstSectorY )
|
||||
{ //The destination sector is the current location. Instead of causing code logic problems,
|
||||
//simply process them as if they just arrived.
|
||||
|
||||
@@ -2840,6 +2840,10 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
||||
|
||||
if ( GetSoldier( &lSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
// Flugente: robots do not climb
|
||||
if ( AM_A_ROBOT( lSoldier ) )
|
||||
break;
|
||||
|
||||
if ( FindWindowJumpDirection( lSoldier, lSoldier->sGridNo, lSoldier->ubDirection, &bDirection ) )
|
||||
{
|
||||
if((UsingNewInventorySystem() == true) && lSoldier->inv[BPACKPOCKPOS].exists() == true)
|
||||
@@ -2882,6 +2886,10 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
||||
SOLDIERTYPE *pjSoldier;
|
||||
if ( GetSoldier( &pjSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
// Flugente: robots do not climb
|
||||
if ( AM_A_ROBOT( pjSoldier ) )
|
||||
break;
|
||||
|
||||
INT16 sAPCost;
|
||||
INT16 sBPCost;
|
||||
BOOLEAN fNearHeigherLevel;
|
||||
@@ -2948,12 +2956,12 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
||||
// Climb on walls
|
||||
if (gGameExternalOptions.fCanClimbOnWalls == TRUE)
|
||||
{
|
||||
// No climbing when wearing a backpack!
|
||||
if((UsingNewInventorySystem() == true) && pjSoldier->inv[BPACKPOCKPOS].exists() == true)
|
||||
return;
|
||||
|
||||
if ( FindWallJumpDirection( pjSoldier, pjSoldier->sGridNo, pjSoldier->ubDirection, &bDirection ) )
|
||||
{
|
||||
// No climbing when wearing a backpack!
|
||||
if((UsingNewInventorySystem() == true) && pjSoldier->inv[BPACKPOCKPOS].exists() == true)
|
||||
return;
|
||||
|
||||
if ( EnoughPoints( pjSoldier, GetAPsToJumpWall( pjSoldier, FALSE ), GetBPsToJumpWall( pjSoldier, FALSE ), FALSE ) )
|
||||
{
|
||||
pjSoldier->BeginSoldierClimbWall( );
|
||||
|
||||
Reference in New Issue
Block a user