mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
ShowEnemyWeapon: bVisible fix
MinAPsToPunch fix: allow correct calculation when no target gridno supplied World Items: don't allow max repair threshold less than current object status git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8261 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -6110,7 +6110,7 @@ void ShowEnemyWeapon( INT16 sX, INT16 sY, SOLDIERTYPE* pTargetSoldier )
|
|||||||
if( iRange > iVisibleDistance )
|
if( iRange > iVisibleDistance )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( !pTargetSoldier->bVisible )
|
if( pTargetSoldier->bVisible == -1 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// calc max range for exact info
|
// calc max range for exact info
|
||||||
|
|||||||
+29
-26
@@ -2547,22 +2547,23 @@ INT16 MinAPsToShootOrStab(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 bAimTime,
|
|||||||
INT16 MinAPsToPunch(SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubAddTurningCost)//dnl ch73 290913
|
INT16 MinAPsToPunch(SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubAddTurningCost)//dnl ch73 290913
|
||||||
{
|
{
|
||||||
INT16 bAPCost = APBPConstants[AP_MIN_AIM_ATTACK];
|
INT16 bAPCost = APBPConstants[AP_MIN_AIM_ATTACK];
|
||||||
if(!TileIsOutOfBounds(sGridNo))
|
|
||||||
|
OBJECTTYPE *pObjUsed = pSoldier->GetUsedWeapon(&pSoldier->inv[HANDPOS]);
|
||||||
|
UINT16 usItem = pObjUsed->usItem;
|
||||||
|
INT16 bFullAPs = pSoldier->CalcActionPoints();
|
||||||
|
INT16 bAimSkill = CalcAimSkill(pSoldier, pSoldier->inv[HANDPOS].usItem);
|
||||||
|
if(usItem == NONE/* || Item[usItem].brassknuckles*/)
|
||||||
|
bAPCost += ApsToPunch(pSoldier);// SANDRO - changed this to direct us to specific calc function
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bAPCost += BaseAPsToShootOrStab(bFullAPs, bAimSkill, pObjUsed, pSoldier);
|
||||||
|
// Decreased APs needed for melee attacks - Melee (Blade only)
|
||||||
|
if(Item[usItem].usItemClass == IC_BLADE && (HAS_SKILL_TRAIT(pSoldier, MELEE_NT)))
|
||||||
|
bAPCost = (INT16)((bAPCost * (100 - gSkillTraitValues.ubMEBladesAPsReduction) / 100) + 0.5);
|
||||||
|
}
|
||||||
|
// sevenfm: check enemy only if we have correct gridNo
|
||||||
|
if( !TileIsOutOfBounds(sGridNo) )
|
||||||
{
|
{
|
||||||
OBJECTTYPE *pObjUsed = pSoldier->GetUsedWeapon(&pSoldier->inv[HANDPOS]);
|
|
||||||
UINT16 usItem = pObjUsed->usItem;
|
|
||||||
INT16 bFullAPs = pSoldier->CalcActionPoints();
|
|
||||||
INT16 bAimSkill = CalcAimSkill(pSoldier, pSoldier->inv[HANDPOS].usItem);
|
|
||||||
if(usItem == NONE || Item[usItem].brassknuckles)
|
|
||||||
bAPCost += ApsToPunch(pSoldier);// SANDRO - changed this to direct us to specific calc function
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bAPCost += BaseAPsToShootOrStab(bFullAPs, bAimSkill, pObjUsed, pSoldier);
|
|
||||||
// Decreased APs needed for melee attacks - Melee (Blade only)
|
|
||||||
if(Item[usItem].usItemClass == IC_BLADE && (HAS_SKILL_TRAIT(pSoldier, MELEE_NT)))
|
|
||||||
// bAPCost = (INT16)((bAPCost * (100 - gSkillTraitValues.ubMEBladesAPsReduction) / 100) + 0.5);
|
|
||||||
bAPCost = (INT16)(bAPCost * GetAttackAPTraitMultiplier( pSoldier, pObjUsed, pSoldier->bWeaponMode ) + 0.5);
|
|
||||||
}
|
|
||||||
UINT16 usTargID = WhoIsThere2(sGridNo, pSoldier->bTargetLevel);
|
UINT16 usTargID = WhoIsThere2(sGridNo, pSoldier->bTargetLevel);
|
||||||
// Given a gridno here, check if we are on a guy - if so - get his gridno
|
// Given a gridno here, check if we are on a guy - if so - get his gridno
|
||||||
if(usTargID != NOBODY)
|
if(usTargID != NOBODY)
|
||||||
@@ -2573,7 +2574,8 @@ INT16 MinAPsToPunch(SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubAddTurningCost
|
|||||||
else
|
else
|
||||||
bAPCost += GetAPsToChangeStance(pSoldier, ANIM_STAND);
|
bAPCost += GetAPsToChangeStance(pSoldier, ANIM_STAND);
|
||||||
}
|
}
|
||||||
if(ubAddTurningCost)
|
|
||||||
|
if( ubAddTurningCost )
|
||||||
{
|
{
|
||||||
// ATE: Use standing turn cost....
|
// ATE: Use standing turn cost....
|
||||||
UINT8 ubDirection = GetDirectionFromGridNo(sGridNo, pSoldier);
|
UINT8 ubDirection = GetDirectionFromGridNo(sGridNo, pSoldier);
|
||||||
@@ -2590,18 +2592,19 @@ INT16 MinAPsToPunch(SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubAddTurningCost
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Is it the same as he's facing?
|
// Is it the same as he's facing?
|
||||||
// Buggler: actual melee ap deduction for turning applies only when target is 1 tile away
|
// Buggler: actual melee ap deduction for turning applies only when target is 1 tile away
|
||||||
//UINT16 usRange = GetRangeFromGridNoDiff(pSoldier->sGridNo, sSpot);
|
//UINT16 usRange = GetRangeFromGridNoDiff(pSoldier->sGridNo, sSpot);
|
||||||
if(/*usRange == 1 && */ubDirection != pSoldier->ubDirection)
|
if(/*usRange == 1 && */ubDirection != pSoldier->ubDirection)
|
||||||
{
|
{
|
||||||
if(gAnimControl[pSoldier->usAnimState].ubEndHeight == ANIM_PRONE)
|
if(gAnimControl[pSoldier->usAnimState].ubEndHeight == ANIM_PRONE)
|
||||||
bAPCost += CalculateTurningCost(pSoldier, usItem, TRUE, ANIM_CROUCH);
|
bAPCost += CalculateTurningCost(pSoldier, usItem, TRUE, ANIM_CROUCH);
|
||||||
else
|
else
|
||||||
bAPCost += CalculateTurningCost(pSoldier, usItem, TRUE);
|
bAPCost += CalculateTurningCost(pSoldier, usItem, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return(bAPCost);
|
return(bAPCost);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -756,6 +756,8 @@ void LoadWorldItemsFromMap( INT8 **hBuffer, float dMajorMapVersion, int ubMinorM
|
|||||||
dummyItem.object.AttachObject(NULL,&defaultAttachment, FALSE);
|
dummyItem.object.AttachObject(NULL,&defaultAttachment, FALSE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
// sevenfm: don't allow max repair threshold less than current object status
|
||||||
|
dummyItem.object[0]->data.sRepairThreshold = __max(dummyItem.object[0]->data.sRepairThreshold, dummyItem.object[0]->data.objectStatus);
|
||||||
AddItemToPoolAndGetIndex( dummyItem.sGridNo, &dummyItem.object, dummyItem.bVisible, dummyItem.ubLevel, dummyItem.usFlags, dummyItem.bRenderZHeightAboveLevel, dummyItem.soldierID, &iItemIndex );
|
AddItemToPoolAndGetIndex( dummyItem.sGridNo, &dummyItem.object, dummyItem.bVisible, dummyItem.ubLevel, dummyItem.usFlags, dummyItem.bRenderZHeightAboveLevel, dummyItem.soldierID, &iItemIndex );
|
||||||
gWorldItems[ iItemIndex ].ubNonExistChance = dummyItem.ubNonExistChance;
|
gWorldItems[ iItemIndex ].ubNonExistChance = dummyItem.ubNonExistChance;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user