mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
- 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:
@@ -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;
|
||||
|
||||
|
||||
|
||||
@@ -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---------------------------------------
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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++)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user