mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
- changed tool tip for magazines
- added limited vision from Lesh - bug fix: CTD in SaveAirRaidInfoToSaveGameFile when saving game git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@128 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -361,6 +361,7 @@ void LoadGameExternalOptions()
|
||||
//Sight range
|
||||
gGameExternalOptions.ubStraightSightRange = iniReader.ReadInteger("JA2 Tactical Settings","BASE_SIGHT_RANGE",13);
|
||||
gGameExternalOptions.ubVisDistDecreasePerRainIntensity = iniReader.ReadInteger("JA2 Tactical Settings","VISUAL_DISTANCE_DECREASE_PER_RAIN_INTENSITY",20);
|
||||
gGameExternalOptions.gfAllowLimitedVision = iniReader.ReadBoolean("JA2 Tactical Settings","ALLOW_LIMITED_VISION",0);
|
||||
|
||||
// Maximal search distance for grenades
|
||||
//gGameExternalOptions.guiMaxTossSearchDist = iniReader.ReadInteger("JA2 Tactical Settings","MaxTossSearchDist",3);
|
||||
|
||||
@@ -207,6 +207,7 @@ typedef struct
|
||||
//Sight range
|
||||
UINT8 ubStraightSightRange;
|
||||
UINT32 ubVisDistDecreasePerRainIntensity;
|
||||
BOOLEAN gfAllowLimitedVision;
|
||||
|
||||
// Rain settings
|
||||
BOOLEAN gfAllowRain;
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ INT16 zVersionLabel[256] = { L"Beta v. 0.98" };
|
||||
#else
|
||||
|
||||
//RELEASE BUILD VERSION
|
||||
INT16 zVersionLabel[256] = { L"Release v1.13.125" };
|
||||
INT16 zVersionLabel[256] = { L"Release v1.13.128" };
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
+2
-2
@@ -43,7 +43,7 @@
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="libexpatMT.lib mss32.lib winmm.lib smackw32.lib fmodvc.lib"
|
||||
OutputFile="C:\games\Jagged Alliance 2 v1.13\ja2_debug_v1.13.125_2006_05_26.exe"
|
||||
OutputFile="C:\games\Jagged Alliance 2 v1.13\ja2_debug_v1.13.128_2006_05_29.exe"
|
||||
LinkIncremental="2"
|
||||
SuppressStartupBanner="TRUE"
|
||||
AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\"
|
||||
@@ -546,7 +546,7 @@
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib fmodvc.lib"
|
||||
OutputFile="C:\Games\Jagged Alliance 2 v1.13\ja2_release_v1.13.125_2006_05_26.exe"
|
||||
OutputFile="C:\Games\Jagged Alliance 2 v1.13\ja2_release_v1.13.128_2006_05_29.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\"
|
||||
|
||||
+17
-17
@@ -1332,23 +1332,23 @@ BOOLEAN SaveAirRaidInfoToSaveGameFile( HWFILE hFile )
|
||||
sAirRaidSaveStruct.iNumFrames = giNumFrames;
|
||||
|
||||
|
||||
if( gpRaidSoldier )
|
||||
{
|
||||
sAirRaidSaveStruct.bLevel = gpRaidSoldier->bLevel;
|
||||
sAirRaidSaveStruct.bTeam = gpRaidSoldier->bTeam;
|
||||
sAirRaidSaveStruct.bSide = gpRaidSoldier->bSide;
|
||||
sAirRaidSaveStruct.ubAttackerID = gpRaidSoldier->ubAttackerID;
|
||||
sAirRaidSaveStruct.usAttackingWeapon = gpRaidSoldier->usAttackingWeapon;
|
||||
sAirRaidSaveStruct.dXPos = gpRaidSoldier->dXPos;
|
||||
sAirRaidSaveStruct.dYPos = gpRaidSoldier->dYPos;
|
||||
sAirRaidSaveStruct.sX = gpRaidSoldier->sX;
|
||||
sAirRaidSaveStruct.sY = gpRaidSoldier->sY;
|
||||
sAirRaidSaveStruct.sGridNo = gpRaidSoldier->sGridNo;
|
||||
|
||||
sAirRaidSaveStruct.sRaidSoldierID = MAX_NUM_SOLDIERS - 1;
|
||||
// sAirRaidSaveStruct.sRaidSoldierID = gpRaidSoldier->ubID;
|
||||
}
|
||||
else
|
||||
// if( gpRaidSoldier )
|
||||
// {
|
||||
// sAirRaidSaveStruct.bLevel = gpRaidSoldier->bLevel;
|
||||
// sAirRaidSaveStruct.bTeam = gpRaidSoldier->bTeam;
|
||||
// sAirRaidSaveStruct.bSide = gpRaidSoldier->bSide;
|
||||
// sAirRaidSaveStruct.ubAttackerID = gpRaidSoldier->ubAttackerID;
|
||||
// sAirRaidSaveStruct.usAttackingWeapon = gpRaidSoldier->usAttackingWeapon;
|
||||
// sAirRaidSaveStruct.dXPos = gpRaidSoldier->dXPos;
|
||||
// sAirRaidSaveStruct.dYPos = gpRaidSoldier->dYPos;
|
||||
// sAirRaidSaveStruct.sX = gpRaidSoldier->sX;
|
||||
// sAirRaidSaveStruct.sY = gpRaidSoldier->sY;
|
||||
// sAirRaidSaveStruct.sGridNo = gpRaidSoldier->sGridNo;
|
||||
//
|
||||
// sAirRaidSaveStruct.sRaidSoldierID = MAX_NUM_SOLDIERS - 1;
|
||||
//// sAirRaidSaveStruct.sRaidSoldierID = gpRaidSoldier->ubID;
|
||||
// }
|
||||
// else
|
||||
sAirRaidSaveStruct.sRaidSoldierID = -1;
|
||||
|
||||
|
||||
|
||||
@@ -434,7 +434,9 @@ INT8 CalcCoverForGridNoBasedOnTeamKnownEnemies( SOLDIERTYPE *pSoldier, INT16 sTa
|
||||
}
|
||||
|
||||
usRange = (UINT16)GetRangeInCellCoordsFromGridNoDiff( pOpponent->sGridNo, sTargetGridNo );
|
||||
usSightLimit = DistanceVisible( pOpponent, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, sTargetGridNo, pSoldier->bLevel, pSoldier );
|
||||
// Lesh: changed 2-nd parameter in DistanceVisible function call
|
||||
usSightLimit = DistanceVisible( pOpponent, (gGameExternalOptions.gfAllowLimitedVision ? pSoldier->bDesiredDirection : DIRECTION_IRRELEVANT), DIRECTION_IRRELEVANT, sTargetGridNo, pSoldier->bLevel, pSoldier );
|
||||
|
||||
|
||||
if( usRange > ( usSightLimit * CELL_X_SIZE ) )
|
||||
{
|
||||
@@ -932,8 +934,9 @@ INT8 CalcIfSoldierCanSeeGridNo( SOLDIERTYPE *pSoldier, INT16 sTargetGridNo, BOOL
|
||||
}
|
||||
}
|
||||
|
||||
// Lesh: changed 2-nd parameter in DistanceVisible function call
|
||||
usSightLimit = DistanceVisible( pSoldier, (gGameExternalOptions.gfAllowLimitedVision ? pSoldier->bDesiredDirection : DIRECTION_IRRELEVANT), DIRECTION_IRRELEVANT, sTargetGridNo, fRoof, pSoldier );
|
||||
|
||||
usSightLimit = DistanceVisible( pSoldier, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, sTargetGridNo, fRoof, pSoldier );
|
||||
|
||||
//
|
||||
// Prone
|
||||
|
||||
@@ -7325,11 +7325,11 @@ void GetHelpTextForItem( INT16 * pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldi
|
||||
INT16 apStr2[20];
|
||||
UINT8 ubAttackAPs = BaseAPsToShootOrStab( DEFAULT_APS, DEFAULT_AIMSKILL, pObject );
|
||||
|
||||
swprintf( (wchar_t *)apStr, L"%2d", ubAttackAPs );
|
||||
swprintf( (wchar_t *)apStr, L"%d", ubAttackAPs );
|
||||
|
||||
if (GetShotsPerBurst(pObject) > 0)
|
||||
{
|
||||
swprintf( (wchar_t *)apStr2, L" / %2d", ubAttackAPs + CalcAPsToBurst( DEFAULT_APS, pObject ) );
|
||||
swprintf( (wchar_t *)apStr2, L" / %d", ubAttackAPs + CalcAPsToBurst( DEFAULT_APS, pObject ) );
|
||||
wcscat( apStr, apStr2 );
|
||||
}
|
||||
else
|
||||
@@ -7339,7 +7339,7 @@ void GetHelpTextForItem( INT16 * pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldi
|
||||
|
||||
if (GetAutofireShotsPerFiveAPs(pObject) > 0)
|
||||
{
|
||||
swprintf( (wchar_t *)apStr2, L" / %2d", ubAttackAPs + CalcAPsToAutofire( DEFAULT_APS, pObject, 3 ) );
|
||||
swprintf( (wchar_t *)apStr2, L" / %d", ubAttackAPs + CalcAPsToAutofire( DEFAULT_APS, pObject, 3 ) );
|
||||
wcscat( apStr, apStr2 );
|
||||
}
|
||||
else
|
||||
@@ -7374,11 +7374,29 @@ void GetHelpTextForItem( INT16 * pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldi
|
||||
);
|
||||
}
|
||||
|
||||
// The next is for ammunition which gets the measurement 'rnds'
|
||||
else if (Item[ usItem ].usItemClass == IC_AMMO)
|
||||
{
|
||||
swprintf( (wchar_t *)pStr, L"%s [%d rnds]", ItemNames[ usItem ], pObject->ubShotsLeft[0] );
|
||||
}
|
||||
// The next is for ammunition which gets the measurement 'rnds'
|
||||
else if (Item[ usItem ].usItemClass == IC_AMMO)
|
||||
{
|
||||
swprintf( (wchar_t *)pStr, L"%s [%d rnds]\n%s %1.1f %s",
|
||||
ItemNames[ usItem ], //Item long name
|
||||
pObject->ubShotsLeft[0], //Shots left
|
||||
gWeaponStatsDesc[ 12 ], //Weight String
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
|
||||
//Lal: do not delete, commented out for next version
|
||||
//swprintf( (wchar_t *)pStr, L"%s %s %s %d [%d rnds]\n%s %1.1f %s",
|
||||
// AmmoCaliber[ Magazine[ Item[usItem].ubClassIndex ].ubCalibre ], //Ammo calibre
|
||||
// AmmoTypes[Magazine[ Item[usItem].ubClassIndex ].ubAmmoType].ammoName, //Ammo type
|
||||
// MagNames[Magazine[ Item[usItem].ubClassIndex ].ubMagType], //Magazine type
|
||||
// Magazine[ Item[usItem].ubClassIndex ].ubMagSize, //Magazine capacity
|
||||
// pObject->ubShotsLeft[0], //Shots left
|
||||
// gWeaponStatsDesc[ 12 ], //Weight String
|
||||
// fWeight, //Weight
|
||||
// GetWeightUnitString() //Weight units
|
||||
// );
|
||||
}
|
||||
|
||||
// explosives
|
||||
else if ( (Item[ usItem ].usItemClass == IC_GRENADE)||(Item[ usItem ].usItemClass == IC_BOMB) )
|
||||
|
||||
+34
-22
@@ -1096,8 +1096,18 @@ INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir,
|
||||
}
|
||||
else
|
||||
{
|
||||
// Lesh: added this
|
||||
if( gGameExternalOptions.gfAllowLimitedVision )
|
||||
{
|
||||
bSubjectDir = (INT8) GetDirectionToGridNoFromGridNo( pSoldier->sGridNo, sSubjectGridNo );
|
||||
}
|
||||
|
||||
sDistVisible = gbLookDistance[bFacingDir][bSubjectDir];
|
||||
|
||||
// Lesh: and this
|
||||
if ( (sDistVisible == 0) && (gGameExternalOptions.gfAllowLimitedVision) )
|
||||
return(0);
|
||||
|
||||
if ( sDistVisible != STRAIGHT )
|
||||
sDistVisible = sDistVisible * ((100 - GetPercentTunnelVision(pSoldier))/100);
|
||||
|
||||
@@ -1227,28 +1237,30 @@ void EndMuzzleFlash( SOLDIERTYPE * pSoldier )
|
||||
{
|
||||
if ( pOtherSoldier->bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY )
|
||||
{
|
||||
if ( pOtherSoldier->sGridNo != NOWHERE )
|
||||
{
|
||||
if ( PythSpacesAway( pOtherSoldier->sGridNo, pSoldier->sGridNo ) > DistanceVisible( pOtherSoldier, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, pSoldier->sGridNo, pSoldier->bLevel, pSoldier ) )
|
||||
{
|
||||
// if this guy can no longer see us, change to seen this turn
|
||||
HandleManNoLongerSeen( pOtherSoldier, pSoldier, &(pOtherSoldier->bOppList[ pSoldier->ubID ]), &(gbPublicOpplist[ pOtherSoldier->bTeam ][ pSoldier->ubID ] ) );
|
||||
}
|
||||
// else this person is still seen, if the looker is on our side or the militia the person should stay visible
|
||||
#ifdef WE_SEE_WHAT_MILITIA_SEES_AND_VICE_VERSA
|
||||
else if ( pOtherSoldier->bTeam == gbPlayerNum || pOtherSoldier->bTeam == MILITIA_TEAM )
|
||||
#else
|
||||
else if ( pOtherSoldier->bTeam == gbPlayerNum )
|
||||
#endif
|
||||
{
|
||||
pSoldier->bVisible = TRUE; // yes, still seen
|
||||
}
|
||||
}
|
||||
if ( pOtherSoldier->sGridNo != NOWHERE )
|
||||
{
|
||||
if ( PythSpacesAway( pOtherSoldier->sGridNo, pSoldier->sGridNo ) > DistanceVisible( pOtherSoldier, (gGameExternalOptions.gfAllowLimitedVision ? pOtherSoldier->bDesiredDirection : DIRECTION_IRRELEVANT), DIRECTION_IRRELEVANT, pSoldier->sGridNo, pSoldier->bLevel, pSoldier ) )
|
||||
{
|
||||
// if this guy can no longer see us, change to seen this turn
|
||||
HandleManNoLongerSeen( pOtherSoldier, pSoldier, &(pOtherSoldier->bOppList[ pSoldier->ubID ]), &(gbPublicOpplist[ pOtherSoldier->bTeam ][ pSoldier->ubID ] ) );
|
||||
}
|
||||
|
||||
// else this person is still seen, if the looker is on our side or the militia the person should stay visible
|
||||
#ifdef WE_SEE_WHAT_MILITIA_SEES_AND_VICE_VERSA
|
||||
else if ( pOtherSoldier->bTeam == gbPlayerNum || pOtherSoldier->bTeam == MILITIA_TEAM )
|
||||
#else
|
||||
else if ( pOtherSoldier->bTeam == gbPlayerNum )
|
||||
#endif
|
||||
|
||||
{
|
||||
pSoldier->bVisible = TRUE; // yes, still seen
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DecideTrueVisibility( pSoldier, FALSE );
|
||||
|
||||
|
||||
}
|
||||
|
||||
void TurnOffEveryonesMuzzleFlashes( void )
|
||||
@@ -1766,7 +1778,7 @@ INT16 ManLooksForMan(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, UINT8 ubCall
|
||||
bAware = TRUE;
|
||||
|
||||
// then we look for him full viewing distance in EVERY direction
|
||||
sDistVisible = DistanceVisible(pSoldier, DIRECTION_IRRELEVANT, 0, pOpponent->sGridNo, pOpponent->bLevel, pOpponent );
|
||||
sDistVisible = DistanceVisible(pSoldier, (gGameExternalOptions.gfAllowLimitedVision ? pSoldier->bDesiredDirection : DIRECTION_IRRELEVANT), 0, pOpponent->sGridNo, pOpponent->bLevel, pOpponent );
|
||||
//if (pSoldier->ubID == 0)
|
||||
//sprintf(gDebugStr,"ALREADY KNOW: ME %d him %d val %d",pSoldier->ubID,pOpponent->ubID,pSoldier->bOppList[pOpponent->ubID]);
|
||||
}
|
||||
@@ -5602,7 +5614,7 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, UINT16 sGridNo, INT8 b
|
||||
}
|
||||
}
|
||||
|
||||
sDistVisible = DistanceVisible( pSoldier, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, sGridNo, bLevel, pSoldier );
|
||||
sDistVisible = DistanceVisible( pSoldier, (gGameExternalOptions.gfAllowLimitedVision ? pSoldier->bDesiredDirection : DIRECTION_IRRELEVANT), DIRECTION_IRRELEVANT, sGridNo, bLevel, pSoldier );
|
||||
|
||||
if ( fMuzzleFlash )
|
||||
{
|
||||
@@ -6452,7 +6464,7 @@ void NoticeUnseenAttacker( SOLDIERTYPE * pAttacker, SOLDIERTYPE * pDefender, INT
|
||||
}
|
||||
}
|
||||
|
||||
ubTileSightLimit = (UINT8) DistanceVisible( pDefender, DIRECTION_IRRELEVANT, 0, pAttacker->sGridNo, pAttacker->bLevel, pAttacker );
|
||||
ubTileSightLimit = (UINT8) DistanceVisible( pDefender, (gGameExternalOptions.gfAllowLimitedVision ? pDefender->bDesiredDirection : DIRECTION_IRRELEVANT), 0, pAttacker->sGridNo, pAttacker->bLevel, pAttacker );
|
||||
if (SoldierToSoldierLineOfSightTest( pDefender, pAttacker, ubTileSightLimit, TRUE ) != 0)
|
||||
{
|
||||
fSeesAttacker = TRUE;
|
||||
@@ -6712,7 +6724,7 @@ INT8 GetHighestVisibleWatchedLoc( UINT8 ubID )
|
||||
{
|
||||
if ( gsWatchedLoc[ ubID ][ bLoop ] != NOWHERE && gubWatchedLocPoints[ ubID ][ bLoop ] > bHighestPoints )
|
||||
{
|
||||
sDistVisible = DistanceVisible( MercPtrs[ ubID ], DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, gsWatchedLoc[ ubID ][ bLoop ], gbWatchedLocLevel[ ubID ][ bLoop ], MercPtrs[ubID] );
|
||||
sDistVisible = DistanceVisible( MercPtrs[ ubID ], (gGameExternalOptions.gfAllowLimitedVision ? MercPtrs[ ubID ]->bDesiredDirection : DIRECTION_IRRELEVANT), DIRECTION_IRRELEVANT, gsWatchedLoc[ ubID ][ bLoop ], gbWatchedLocLevel[ ubID ][ bLoop ], MercPtrs[ubID] );
|
||||
// look at standing height
|
||||
if ( SoldierTo3DLocationLineOfSightTest( MercPtrs[ ubID ], gsWatchedLoc[ ubID ][ bLoop ], gbWatchedLocLevel[ ubID ][ bLoop ], 3, (UINT8) sDistVisible, TRUE ) )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user