mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
- DisplayLoadScreenWithID: use strcmp to correctly compare strings
- CalcThrownChanceToHit: fix integer calculation - CalcBestThrow: allow CTH bonus for mortars, new less restrictive CTH check to allow attack git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8443 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+1
-1
@@ -360,7 +360,7 @@ void DisplayLoadScreenWithID( UINT8 ubLoadScreenID )
|
|||||||
vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE | VSURFACE_CREATE_FROMPNG_FALLBACK;
|
vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE | VSURFACE_CREATE_FROMPNG_FALLBACK;
|
||||||
|
|
||||||
szSector = szSectorMap [gWorldSectorY][gWorldSectorX];
|
szSector = szSectorMap [gWorldSectorY][gWorldSectorX];
|
||||||
const BOOLEAN fExternalLS = (szSector != NULL && szSector != "N") && ((DAY <= ubLoadScreenID && ubLoadScreenID <= NIGHT_ALT) || (ubLoadScreenID == UNDERGROUND));
|
const BOOLEAN fExternalLS = (szSector != NULL && strcmp(szSector, "N") != 0) && ((DAY <= ubLoadScreenID && ubLoadScreenID <= NIGHT_ALT) || (ubLoadScreenID == UNDERGROUND));
|
||||||
|
|
||||||
if (fExternalLS)
|
if (fExternalLS)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10523,7 +10523,7 @@ UINT32 CalcThrownChanceToHit(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi
|
|||||||
if ( Item[ usHandItem ].mortar )
|
if ( Item[ usHandItem ].mortar )
|
||||||
{
|
{
|
||||||
if (HAS_SKILL_TRAIT( pSoldier, HEAVY_WEAPONS_NT ))
|
if (HAS_SKILL_TRAIT( pSoldier, HEAVY_WEAPONS_NT ))
|
||||||
iChance += (gSkillTraitValues.sCtHModifierMortar * max( 0, ((100 - gSkillTraitValues.ubHWMortarCtHPenaltyReduction * NUM_SKILL_TRAITS( pSoldier, HEAVY_WEAPONS_NT ))/100)));
|
iChance += gSkillTraitValues.sCtHModifierMortar * max( 0, 100 - gSkillTraitValues.ubHWMortarCtHPenaltyReduction * NUM_SKILL_TRAITS( pSoldier, HEAVY_WEAPONS_NT )) / 100;
|
||||||
else
|
else
|
||||||
iChance += gSkillTraitValues.sCtHModifierMortar; // -60% for untrained mercs
|
iChance += gSkillTraitValues.sCtHModifierMortar; // -60% for untrained mercs
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-24
@@ -1441,9 +1441,8 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow)
|
|||||||
//SendFmtMsg("CalcBestThrow=%d APs=%d mat=%d gno=%d", ubChanceToHit, ubRawAPCost, ubMaxPossibleAimTime, sGridNo);
|
//SendFmtMsg("CalcBestThrow=%d APs=%d mat=%d gno=%d", ubChanceToHit, ubRawAPCost, ubMaxPossibleAimTime, sGridNo);
|
||||||
}
|
}
|
||||||
|
|
||||||
// mortars are inherently quite inaccurate, don't get proximity bonus
|
// no bonus for RPGs as they can miss too much
|
||||||
// rockets can go right past people too so...
|
if ( !EXPLOSIVE_GUN( usInHand ) )
|
||||||
if (!Item[usInHand].mortar && EXPLOSIVE_GUN( usInHand ) )
|
|
||||||
{
|
{
|
||||||
// special 50% to Hit bonus: this reflects that even if a tossed item
|
// special 50% to Hit bonus: this reflects that even if a tossed item
|
||||||
// misses by a bit, it's still likely to affect the intended target(s)
|
// misses by a bit, it's still likely to affect the intended target(s)
|
||||||
@@ -1502,29 +1501,24 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// this is try to minimize enemies wasting their (limited) toss attacks:
|
// this is try to minimize enemies wasting their (limited) toss attacks:
|
||||||
switch( ubDiff )
|
UINT8 ubMinChanceToReallyHit;
|
||||||
|
|
||||||
|
if( usGrenade != NOTHING && Item[usGrenade].flare )
|
||||||
{
|
{
|
||||||
case 0:
|
ubMinChanceToReallyHit = 30;
|
||||||
case 1:
|
|
||||||
// don't use unless have a 70% chance to hit
|
|
||||||
if (pBestThrow->ubChanceToReallyHit < 70)
|
|
||||||
{
|
|
||||||
pBestThrow->ubPossible = FALSE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
case 3:
|
|
||||||
case 4:
|
|
||||||
// don't use unless have a 50% chance to hit
|
|
||||||
if (pBestThrow->ubChanceToReallyHit < 50)
|
|
||||||
{
|
|
||||||
pBestThrow->ubPossible = FALSE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 80-40% depending on soldier difficulty
|
||||||
|
ubMinChanceToReallyHit = 80 - 10 * ubDiff;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( pBestThrow->ubChanceToReallyHit < ubMinChanceToReallyHit )
|
||||||
|
{
|
||||||
|
pBestThrow->ubPossible = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
//if(pBestThrow->ubPossible)SendFmtMsg("CalcBestThrow;\r\n ID=%d Loc=%d APs=%d Ac=%d AcData=%d Al=%d, SM=%d, LAc=%d, NAc=%d AT=%d\r\n AP?=%d,%d,%d/%d BS=%d", pSoldier->ubID, pSoldier->sGridNo, pSoldier->bActionPoints, pSoldier->aiData.bAction, pSoldier->aiData.usActionData, pSoldier->aiData.bAlertStatus, pBestThrow->bScopeMode, pSoldier->aiData.bLastAction, pSoldier->aiData.bNextAction, pBestThrow->ubAimTime, pBestThrow->ubAPCost, CalcAPCostForAiming(pSoldier, pBestThrow->sTarget, (INT8)pBestThrow->ubAimTime), CalcTotalAPsToAttack(pSoldier, pBestThrow->sTarget, TRUE, pBestThrow->ubAimTime), CalcTotalAPsToAttack(pSoldier, pBestThrow->sTarget, FALSE, pBestThrow->ubAimTime), pBestThrow->ubStance);
|
//if(pBestThrow->ubPossible)SendFmtMsg("CalcBestThrow;\r\n ID=%d Loc=%d APs=%d Ac=%d AcData=%d Al=%d, SM=%d, LAc=%d, NAc=%d AT=%d\r\n AP?=%d,%d,%d/%d BS=%d", pSoldier->ubID, pSoldier->sGridNo, pSoldier->bActionPoints, pSoldier->aiData.bAction, pSoldier->aiData.usActionData, pSoldier->aiData.bAlertStatus, pBestThrow->bScopeMode, pSoldier->aiData.bLastAction, pSoldier->aiData.bNextAction, pBestThrow->ubAimTime, pBestThrow->ubAPCost, CalcAPCostForAiming(pSoldier, pBestThrow->sTarget, (INT8)pBestThrow->ubAimTime), CalcTotalAPsToAttack(pSoldier, pBestThrow->sTarget, TRUE, pBestThrow->ubAimTime), CalcTotalAPsToAttack(pSoldier, pBestThrow->sTarget, FALSE, pBestThrow->ubAimTime), pBestThrow->ubStance);
|
||||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"calcbestthrow done");
|
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"calcbestthrow done");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user