mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
CalcEffVolume fix: sleeping state check
Attacks fix: 100 AP system for HitRate calculation EstimatePath fix: ignore person at destination if we are estimating path cost FindFlankingSpot: use full search range git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8265 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+3
-1
@@ -4433,7 +4433,9 @@ INT32 PlotPath( SOLDIERTYPE *pSold, INT32 sDestGridNo, INT8 bCopyRoute, INT8 bPl
|
|||||||
// distance limit to reduce the cost of plotting a path to a location we can't reach
|
// distance limit to reduce the cost of plotting a path to a location we can't reach
|
||||||
|
|
||||||
// For now, use known hight adjustment
|
// For now, use known hight adjustment
|
||||||
if ( gfRecalculatingExistingPathCost || FindBestPath( pSold, sDestGridNo, pSold->pathing.bLevel, usMovementMode, bCopyRoute, 0 ) )
|
// sevenfm: ignore person at destination if we are estimating path cost
|
||||||
|
if ( gfRecalculatingExistingPathCost || FindBestPath( pSold, sDestGridNo, pSold->pathing.bLevel, usMovementMode, bCopyRoute, gfEstimatePath ? PATH_IGNORE_PERSON_AT_DEST : 0 ) )
|
||||||
|
//if ( gfRecalculatingExistingPathCost || FindBestPath( pSold, sDestGridNo, pSold->pathing.bLevel, usMovementMode, bCopyRoute, 0 ) )
|
||||||
{
|
{
|
||||||
// if soldier would be STARTING to run then he pays a penalty since it takes time to
|
// if soldier would be STARTING to run then he pays a penalty since it takes time to
|
||||||
// run full speed
|
// run full speed
|
||||||
|
|||||||
@@ -6332,11 +6332,12 @@ UINT8 CalcEffVolume(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT8 ubN
|
|||||||
iEffVolume -= 5;
|
iEffVolume -= 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pSoldier->bAssignment == SLEEPING )
|
//if (pSoldier->bAssignment == SLEEPING )
|
||||||
{
|
if( pSoldier->flags.fMercAsleep )
|
||||||
// decrease effective volume since we're asleep!
|
{
|
||||||
iEffVolume -= 5;
|
// decrease effective volume since we're asleep!
|
||||||
}
|
iEffVolume -= 5;
|
||||||
|
}
|
||||||
|
|
||||||
// check for floor/roof difference
|
// check for floor/roof difference
|
||||||
if (bLevel > pSoldier->pathing.bLevel)
|
if (bLevel > pSoldier->pathing.bLevel)
|
||||||
|
|||||||
+12
-4
@@ -421,7 +421,9 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN shootUns
|
|||||||
//sprintf(tempstr,"Vs. %s, at AimTime %d, ubChanceToHit = %d",ExtMen[pOpponent->ubID].GetName(),ubAimTime,ubChanceToHit);
|
//sprintf(tempstr,"Vs. %s, at AimTime %d, ubChanceToHit = %d",ExtMen[pOpponent->ubID].GetName(),ubAimTime,ubChanceToHit);
|
||||||
//PopMessage(tempstr);
|
//PopMessage(tempstr);
|
||||||
|
|
||||||
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
|
// sevenfm: 100 AP system
|
||||||
|
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime * APBPConstants[AP_CLICK_AIM]);
|
||||||
|
//iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
|
||||||
//NumMessage("hitRate = ",iHitRate);
|
//NumMessage("hitRate = ",iHitRate);
|
||||||
|
|
||||||
// if aiming for this amount of time produces a better hit rate
|
// if aiming for this amount of time produces a better hit rate
|
||||||
@@ -446,7 +448,9 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN shootUns
|
|||||||
ubChanceToHit = ubChanceToHit2;
|
ubChanceToHit = ubChanceToHit2;
|
||||||
}
|
}
|
||||||
Assert( ubRawAPCost > 0);
|
Assert( ubRawAPCost > 0);
|
||||||
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
|
// sevenfm: 100AP system
|
||||||
|
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime * APBPConstants[AP_CLICK_AIM]);
|
||||||
|
//iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
|
||||||
iBestHitRate = iHitRate;
|
iBestHitRate = iHitRate;
|
||||||
ubBestAimTime = ubAimTime;
|
ubBestAimTime = ubAimTime;
|
||||||
ubBestChanceToHit = ubChanceToHit;
|
ubBestChanceToHit = ubChanceToHit;
|
||||||
@@ -1665,7 +1669,9 @@ void CalcBestStab(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestStab, BOOLEAN fBladeAt
|
|||||||
if (ubRawAPCost < 1)
|
if (ubRawAPCost < 1)
|
||||||
ubRawAPCost = ubMinAPCost;
|
ubRawAPCost = ubMinAPCost;
|
||||||
|
|
||||||
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
|
// sevenfm: 100AP system
|
||||||
|
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime * APBPConstants[AP_CLICK_AIM]);
|
||||||
|
//iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
|
||||||
//NumMessage("hitRate = ",iHitRate);
|
//NumMessage("hitRate = ",iHitRate);
|
||||||
|
|
||||||
// if aiming for this amount of time produces a better hit rate
|
// if aiming for this amount of time produces a better hit rate
|
||||||
@@ -1845,7 +1851,9 @@ void CalcTentacleAttack(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestStab )
|
|||||||
if (ubRawAPCost < 1)
|
if (ubRawAPCost < 1)
|
||||||
ubRawAPCost = ubMinAPCost;
|
ubRawAPCost = ubMinAPCost;
|
||||||
|
|
||||||
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
|
// sevenfm: 100AP system
|
||||||
|
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime * APBPConstants[AP_CLICK_AIM]);
|
||||||
|
//iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
|
||||||
//NumMessage("hitRate = ",iHitRate);
|
//NumMessage("hitRate = ",iHitRate);
|
||||||
|
|
||||||
// if aiming for this amount of time produces a better hit rate
|
// if aiming for this amount of time produces a better hit rate
|
||||||
|
|||||||
@@ -2553,9 +2553,9 @@ INT32 FindFlankingSpot(SOLDIERTYPE *pSoldier, INT32 sPos, INT8 bAction )
|
|||||||
|
|
||||||
DebugMsg ( TOPIC_JA2AI , DBG_LEVEL_3 , String("FindFlankingSpot: direction to loc = %d, dir to flank = %d", sDir , sDesiredDir ));
|
DebugMsg ( TOPIC_JA2AI , DBG_LEVEL_3 , String("FindFlankingSpot: direction to loc = %d, dir to flank = %d", sDir , sDesiredDir ));
|
||||||
|
|
||||||
for (sYOffset = -sMaxUp + 1; sYOffset <= sMaxDown - 1; sYOffset++)
|
for (sYOffset = -sMaxUp; sYOffset <= sMaxDown; sYOffset++)
|
||||||
{
|
{
|
||||||
for (sXOffset = -sMaxLeft + 1; sXOffset <= sMaxRight - 1; sXOffset++)
|
for (sXOffset = -sMaxLeft; sXOffset <= sMaxRight; sXOffset++)
|
||||||
{
|
{
|
||||||
// calculate the next potential gridno
|
// calculate the next potential gridno
|
||||||
sGridNo = pSoldier->sGridNo + sXOffset + (MAXCOL * sYOffset);
|
sGridNo = pSoldier->sGridNo + sXOffset + (MAXCOL * sYOffset);
|
||||||
|
|||||||
Reference in New Issue
Block a user