Migrate +AI features

* Drink canteen
* Jump through window
* Use explosives
* Use wirecutters
This commit is contained in:
Asdow
2026-01-23 23:19:07 +02:00
parent 41945842d5
commit bd9cbd9944
14 changed files with 896 additions and 14 deletions
+59
View File
@@ -12426,6 +12426,51 @@ INT8 FindCamoKit( SOLDIERTYPE * pSoldier )
return( NO_SLOT );
}
INT8 FindCanteen(SOLDIERTYPE* pSoldier)
{
const INT8 invsize = pSoldier->inv.size();
for ( INT8 bLoop = 0; bLoop < invsize; ++bLoop )
{
if ( pSoldier->inv[bLoop].exists() && ItemIsCanteen(pSoldier->inv[bLoop].usItem) )
{
OBJECTTYPE* pObj = &(pSoldier->inv[bLoop]);
if ( pObj && TotalPoints(pObj) > 1 )
{
return(bLoop);
}
}
}
return(NO_SLOT);
}
INT8 FindWirecutters(SOLDIERTYPE* pSoldier)
{
const INT8 invsize = pSoldier->inv.size();
for ( INT8 bLoop = 0; bLoop < invsize; ++bLoop )
{
if ( pSoldier->inv[bLoop].exists() && ItemIsWirecutters(pSoldier->inv[bLoop].usItem) )
{
return(bLoop);
}
}
return NO_SLOT;
}
INT8 FindTNT(SOLDIERTYPE* pSoldier)
{
const INT8 invsize = pSoldier->inv.size();
for ( INT8 bLoop = 0; bLoop < invsize; ++bLoop )
{
if ( pSoldier->inv[bLoop].exists() && ItemIsTNT(pSoldier->inv[bLoop].usItem) )
{
return(bLoop);
}
}
return NO_SLOT;
}
//JMich_SkillModifiers: Adding a function to see if we have an item with disarm bonus
INT8 FindDisarmKit( SOLDIERTYPE * pSoldier )
{
@@ -16045,6 +16090,20 @@ BOOLEAN FindAttachmentRange(UINT16 usAttachment, UINT32* pStartIndex, UINT32* pE
return result;
}
BOOLEAN ItemIsTNT(UINT16 usItem)
{
if ( Item[usItem].usItemClass == IC_BOMB &&
!ItemIsMine(usItem) &&
!ItemIsTripwire(usItem) &&
Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL &&
Explosive[Item[usItem].ubClassIndex].ubDamage > 40 &&
GetLauncherFromLaunchable(usItem) == NOTHING )
return TRUE;
return FALSE;
}
////////////////////////////////////
// Item flagmask utility functions
// Just to improve readability