- Fix: when jumping over fences or sandbags, a merc was occasionally moved inside the structure.

- Fix: sandbags could only be jumped if their height was < 2. A structure with a .jsd-size of 1 barely offers protection, thus limiting the usefulness of sandbags. From now on, sandbags with a height of 2 can also be jumped. Note: This requires a changed sandbag.jsd in GameDir.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7931 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2015-07-24 21:20:17 +00:00
parent f4f124c7b0
commit 2ba4b77a84
5 changed files with 23 additions and 12 deletions
+8 -8
View File
@@ -958,15 +958,15 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier )
//CODE: BEGINHOPFENCE //CODE: BEGINHOPFENCE
// MOVE TWO FACGIN GRIDNOS // MOVE TWO FACGIN GRIDNOS
sNewGridNo = NewGridNo( pSoldier->sGridNo, (UINT16)( DirectionInc( pSoldier->ubDirection ) ) ); // Flugente: the old complicaed method relied on pSoldier->pathing.usPathingData to be filled correctly - which it often wasn't.
//ddd window{ // This is unneccessary, as we've already filled sTempNewGridNo with the correct data
if ( gubWorldMovementCosts[ sNewGridNo ][ (UINT8)pSoldier->pathing.usPathingData[ pSoldier->pathing.usPathIndex ] ][ pSoldier->pathing.bLevel ] == TRAVELCOST_FENCE ) // we could fill sForcastGridno when initiating the jump, but lets keep this as a hook
sNewGridNo = NewGridNo( sNewGridNo, (UINT16)( DirectionInc( pSoldier->ubDirection ) ) ); if ( pSoldier->sTempNewGridNo != NOWHERE )
//ddd window} pSoldier->sForcastGridno = pSoldier->sTempNewGridNo;
else
// hey, it's better than nowhere
pSoldier->sForcastGridno = pSoldier->sGridNo;
//comm by ddd
//sNewGridNo = NewGridNo( sNewGridNo, (UINT16)( DirectionInc( pSoldier->ubDirection ) ) );
pSoldier->sForcastGridno = sNewGridNo;
break; break;
+5 -2
View File
@@ -6998,7 +6998,7 @@ BOOLEAN SOLDIERTYPE::EVENT_InternalGetNewSoldierPath( INT32 sDestGridNo, UINT16
} }
else else
{ {
this->pathing.usPathDataSize++; ++this->pathing.usPathDataSize;
} }
} }
@@ -9339,6 +9339,10 @@ void SOLDIERTYPE::BeginSoldierClimbFence( void )
if ( FindFenceJumpDirection( this, this->sGridNo, bDirection, &bDirection ) ) if ( FindFenceJumpDirection( this, this->sGridNo, bDirection, &bDirection ) )
{ {
this->sTempNewGridNo = NewGridNo( this->sGridNo, (UINT16)DirectionInc( bDirection ) ); this->sTempNewGridNo = NewGridNo( this->sGridNo, (UINT16)DirectionInc( bDirection ) );
// Flugente: we want to jump OVER the structure, not INTO it!
this->sTempNewGridNo = NewGridNo( this->sTempNewGridNo, (UINT16)DirectionInc( bDirection ) );
this->flags.fDontChargeTurningAPs = TRUE; this->flags.fDontChargeTurningAPs = TRUE;
EVENT_InternalSetSoldierDesiredDirection( this, bDirection, FALSE, this->usAnimState ); EVENT_InternalSetSoldierDesiredDirection( this, bDirection, FALSE, this->usAnimState );
this->flags.fTurningUntilDone = TRUE; this->flags.fTurningUntilDone = TRUE;
@@ -9346,7 +9350,6 @@ void SOLDIERTYPE::BeginSoldierClimbFence( void )
this->flags.bTurningFromPronePosition = TURNING_FROM_PRONE_OFF; this->flags.bTurningFromPronePosition = TURNING_FROM_PRONE_OFF;
this->usPendingAnimation = HOPFENCE; this->usPendingAnimation = HOPFENCE;
} }
} }
//---legion by JAzz--------------------------------------- //---legion by JAzz---------------------------------------
+1 -1
View File
@@ -146,7 +146,7 @@ BOOLEAN IsJumpableFencePresentAtGridNo( INT32 sGridNo )
{ {
return( TRUE ); return( TRUE );
} }
if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_SANDBAG && StructureHeight( pStructure ) < 2 ) if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_SANDBAG && StructureHeight( pStructure ) <= 2 )
{ {
return( TRUE ); return( TRUE );
} }
+8
View File
@@ -3489,11 +3489,14 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_NO_CLIMB] ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_NO_CLIMB] );
return; return;
} }
if ( EnoughPoints( pjSoldier, GetAPsToClimbRoof( pjSoldier, TRUE ), GetBPsToClimbRoof( pjSoldier, TRUE ), FALSE ) ) if ( EnoughPoints( pjSoldier, GetAPsToClimbRoof( pjSoldier, TRUE ), GetBPsToClimbRoof( pjSoldier, TRUE ), FALSE ) )
{ {
pjSoldier->BeginSoldierClimbDownRoof( ); pjSoldier->BeginSoldierClimbDownRoof( );
return;
} }
} }
if ( fNearHeigherLevel ) if ( fNearHeigherLevel )
{ {
// No climbing when wearing a backpack! // No climbing when wearing a backpack!
@@ -3505,9 +3508,11 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_NO_CLIMB] ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_NO_CLIMB] );
return; return;
} }
if ( EnoughPoints( pjSoldier, GetAPsToClimbRoof( pjSoldier, FALSE ), GetBPsToClimbRoof( pjSoldier, FALSE ), FALSE ) ) if ( EnoughPoints( pjSoldier, GetAPsToClimbRoof( pjSoldier, FALSE ), GetBPsToClimbRoof( pjSoldier, FALSE ), FALSE ) )
{ {
pjSoldier->BeginSoldierClimbUpRoof( ); pjSoldier->BeginSoldierClimbUpRoof( );
return;
} }
} }
@@ -3534,6 +3539,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
if ( EnoughPoints( pjSoldier, sAPCost, sBPCost, FALSE ) ) if ( EnoughPoints( pjSoldier, sAPCost, sBPCost, FALSE ) )
{ {
pjSoldier->BeginSoldierClimbFence( ); pjSoldier->BeginSoldierClimbFence( );
return;
} }
} }
@@ -3549,11 +3555,13 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_NO_CLIMB] ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_NO_CLIMB] );
return; return;
} }
if ( FindWallJumpDirection( pjSoldier, pjSoldier->sGridNo, pjSoldier->ubDirection, &bDirection ) ) if ( FindWallJumpDirection( pjSoldier, pjSoldier->sGridNo, pjSoldier->ubDirection, &bDirection ) )
{ {
if ( EnoughPoints( pjSoldier, GetAPsToJumpWall( pjSoldier, FALSE ), GetBPsToJumpWall( pjSoldier, FALSE ), FALSE ) ) if ( EnoughPoints( pjSoldier, GetAPsToJumpWall( pjSoldier, FALSE ), GetBPsToJumpWall( pjSoldier, FALSE ), FALSE ) )
{ {
pjSoldier->BeginSoldierClimbWall( ); pjSoldier->BeginSoldierClimbWall( );
return;
} }
} }
} }
+1 -1
View File
@@ -1066,7 +1066,7 @@ void CompileTileMovementCosts( INT32 usGridNo )
break; break;
} }
} }
else if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_SANDBAG && StructureHeight( pStructure ) < 2 ) else if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_SANDBAG && StructureHeight( pStructure ) <= 2 )
{ {
for (ubDirLoop=0; ubDirLoop < NUM_WORLD_DIRECTIONS; ubDirLoop++) for (ubDirLoop=0; ubDirLoop < NUM_WORLD_DIRECTIONS; ubDirLoop++)
{ {