- 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
// MOVE TWO FACGIN GRIDNOS
sNewGridNo = NewGridNo( pSoldier->sGridNo, (UINT16)( DirectionInc( pSoldier->ubDirection ) ) );
//ddd window{
if ( gubWorldMovementCosts[ sNewGridNo ][ (UINT8)pSoldier->pathing.usPathingData[ pSoldier->pathing.usPathIndex ] ][ pSoldier->pathing.bLevel ] == TRAVELCOST_FENCE )
sNewGridNo = NewGridNo( sNewGridNo, (UINT16)( DirectionInc( pSoldier->ubDirection ) ) );
//ddd window}
// Flugente: the old complicaed method relied on pSoldier->pathing.usPathingData to be filled correctly - which it often wasn't.
// This is unneccessary, as we've already filled sTempNewGridNo with the correct data
// we could fill sForcastGridno when initiating the jump, but lets keep this as a hook
if ( pSoldier->sTempNewGridNo != NOWHERE )
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;
+5 -2
View File
@@ -6998,7 +6998,7 @@ BOOLEAN SOLDIERTYPE::EVENT_InternalGetNewSoldierPath( INT32 sDestGridNo, UINT16
}
else
{
this->pathing.usPathDataSize++;
++this->pathing.usPathDataSize;
}
}
@@ -9339,6 +9339,10 @@ void SOLDIERTYPE::BeginSoldierClimbFence( void )
if ( FindFenceJumpDirection( this, this->sGridNo, bDirection, &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;
EVENT_InternalSetSoldierDesiredDirection( this, bDirection, FALSE, this->usAnimState );
this->flags.fTurningUntilDone = TRUE;
@@ -9346,7 +9350,6 @@ void SOLDIERTYPE::BeginSoldierClimbFence( void )
this->flags.bTurningFromPronePosition = TURNING_FROM_PRONE_OFF;
this->usPendingAnimation = HOPFENCE;
}
}
//---legion by JAzz---------------------------------------
+1 -1
View File
@@ -146,7 +146,7 @@ BOOLEAN IsJumpableFencePresentAtGridNo( INT32 sGridNo )
{
return( TRUE );
}
if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_SANDBAG && StructureHeight( pStructure ) < 2 )
if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_SANDBAG && StructureHeight( pStructure ) <= 2 )
{
return( TRUE );
}
+8
View File
@@ -3489,11 +3489,14 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_NO_CLIMB] );
return;
}
if ( EnoughPoints( pjSoldier, GetAPsToClimbRoof( pjSoldier, TRUE ), GetBPsToClimbRoof( pjSoldier, TRUE ), FALSE ) )
{
pjSoldier->BeginSoldierClimbDownRoof( );
return;
}
}
if ( fNearHeigherLevel )
{
// No climbing when wearing a backpack!
@@ -3505,9 +3508,11 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_NO_CLIMB] );
return;
}
if ( EnoughPoints( pjSoldier, GetAPsToClimbRoof( pjSoldier, FALSE ), GetBPsToClimbRoof( pjSoldier, FALSE ), FALSE ) )
{
pjSoldier->BeginSoldierClimbUpRoof( );
return;
}
}
@@ -3534,6 +3539,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
if ( EnoughPoints( pjSoldier, sAPCost, sBPCost, FALSE ) )
{
pjSoldier->BeginSoldierClimbFence( );
return;
}
}
@@ -3549,11 +3555,13 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_NO_CLIMB] );
return;
}
if ( FindWallJumpDirection( pjSoldier, pjSoldier->sGridNo, pjSoldier->ubDirection, &bDirection ) )
{
if ( EnoughPoints( pjSoldier, GetAPsToJumpWall( pjSoldier, FALSE ), GetBPsToJumpWall( pjSoldier, FALSE ), FALSE ) )
{
pjSoldier->BeginSoldierClimbWall( );
return;
}
}
}
+1 -1
View File
@@ -1066,7 +1066,7 @@ void CompileTileMovementCosts( INT32 usGridNo )
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++)
{