mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +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
|
// Flugente: calculate interrogation value
|
||||||
UINT32 CalculateInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts )
|
UINT32 CalculateInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts )
|
||||||
{
|
{
|
||||||
UINT32 usInterrogationPoints = 0;
|
UINT32 usInterrogationPoints = 0;
|
||||||
|
|
||||||
// for max points we display the maximum amount of prisoners instead
|
// for max points we display the maximum amount of prisoners instead
|
||||||
*pusMaxPts = 0;
|
*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)
|
// no prisoners -> no interrogation (this should not happen)
|
||||||
if ( !*pusMaxPts )
|
if ( !*pusMaxPts )
|
||||||
|
|||||||
@@ -6479,9 +6479,6 @@ void MoveSAIGroupToSector( GROUP **pGroup, UINT8 ubSectorID, UINT32 uiMoveCode,
|
|||||||
(*pGroup)->pEnemyGroup->ubIntention = ubIntention;
|
(*pGroup)->pEnemyGroup->ubIntention = ubIntention;
|
||||||
(*pGroup)->ubMoveType = ONE_WAY;
|
(*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 )
|
if( (*pGroup)->ubSectorX == ubDstSectorX && (*pGroup)->ubSectorY == ubDstSectorY )
|
||||||
{ //The destination sector is the current location. Instead of causing code logic problems,
|
{ //The destination sector is the current location. Instead of causing code logic problems,
|
||||||
//simply process them as if they just arrived.
|
//simply process them as if they just arrived.
|
||||||
|
|||||||
@@ -2840,6 +2840,10 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
|
|
||||||
if ( GetSoldier( &lSoldier, gusSelectedSoldier ) )
|
if ( GetSoldier( &lSoldier, gusSelectedSoldier ) )
|
||||||
{
|
{
|
||||||
|
// Flugente: robots do not climb
|
||||||
|
if ( AM_A_ROBOT( lSoldier ) )
|
||||||
|
break;
|
||||||
|
|
||||||
if ( FindWindowJumpDirection( lSoldier, lSoldier->sGridNo, lSoldier->ubDirection, &bDirection ) )
|
if ( FindWindowJumpDirection( lSoldier, lSoldier->sGridNo, lSoldier->ubDirection, &bDirection ) )
|
||||||
{
|
{
|
||||||
if((UsingNewInventorySystem() == true) && lSoldier->inv[BPACKPOCKPOS].exists() == true)
|
if((UsingNewInventorySystem() == true) && lSoldier->inv[BPACKPOCKPOS].exists() == true)
|
||||||
@@ -2882,6 +2886,10 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
SOLDIERTYPE *pjSoldier;
|
SOLDIERTYPE *pjSoldier;
|
||||||
if ( GetSoldier( &pjSoldier, gusSelectedSoldier ) )
|
if ( GetSoldier( &pjSoldier, gusSelectedSoldier ) )
|
||||||
{
|
{
|
||||||
|
// Flugente: robots do not climb
|
||||||
|
if ( AM_A_ROBOT( pjSoldier ) )
|
||||||
|
break;
|
||||||
|
|
||||||
INT16 sAPCost;
|
INT16 sAPCost;
|
||||||
INT16 sBPCost;
|
INT16 sBPCost;
|
||||||
BOOLEAN fNearHeigherLevel;
|
BOOLEAN fNearHeigherLevel;
|
||||||
@@ -2948,12 +2956,12 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
// Climb on walls
|
// Climb on walls
|
||||||
if (gGameExternalOptions.fCanClimbOnWalls == TRUE)
|
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 ) )
|
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 ) )
|
if ( EnoughPoints( pjSoldier, GetAPsToJumpWall( pjSoldier, FALSE ), GetBPsToJumpWall( pjSoldier, FALSE ), FALSE ) )
|
||||||
{
|
{
|
||||||
pjSoldier->BeginSoldierClimbWall( );
|
pjSoldier->BeginSoldierClimbWall( );
|
||||||
|
|||||||
Reference in New Issue
Block a user