diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index 94bbf342..51519485 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -3804,19 +3804,22 @@ INT8 FindAmmoToReload( SOLDIERTYPE * pSoldier, INT8 bWeaponIn, INT8 bExcludeSlot { return( NO_SLOT ); } - if(pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO)//dnl ch63 230813 + + if (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO)//dnl ch63 230813 { pObj = FindAttachment_GrenadeLauncher(&pSoldier->inv[bWeaponIn]); + AssertMsg(pObj, "FindAmmoToReload: could not find attached grenade launcher."); } else { - // Flugente: check for underbarrel weapons and use that object if necessary - pObj = pSoldier->GetUsedWeapon( &(pSoldier->inv[bWeaponIn]) ); + // Flugente: check for underbarrel weapons and use that object if necessary + pObj = pSoldier->GetUsedWeapon(&(pSoldier->inv[bWeaponIn])); + AssertMsg(pObj, "FindAmmoToReload: could not find underbarrel weapon."); -// manual recharge - if ((*pObj)[0]->data.gun.ubGunShotsLeft && !((*pObj)[0]->data.gun.ubGunState & GS_CARTRIDGE_IN_CHAMBER) ) - return bWeaponIn; -// + // manual recharge + if ((*pObj)[0]->data.gun.ubGunShotsLeft && !((*pObj)[0]->data.gun.ubGunState & GS_CARTRIDGE_IN_CHAMBER)) + return bWeaponIn; + // } if ( Item[pObj->usItem].usItemClass == IC_GUN && !Item[pObj->usItem].cannon ) { diff --git a/TacticalAI/DecideAction.cpp b/TacticalAI/DecideAction.cpp index cad17289..c95645eb 100644 --- a/TacticalAI/DecideAction.cpp +++ b/TacticalAI/DecideAction.cpp @@ -707,6 +707,8 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) pSoldier->bStealthMode = FALSE; // disable reverse movement mode pSoldier->bReverse = FALSE; + // sevenfm: initialize data + pSoldier->bWeaponMode = WM_NORMAL; BOOLEAN fCivilian = (PTR_CIVILIAN && (pSoldier->ubCivilianGroup == NON_CIV_GROUP || pSoldier->aiData.bNeutral || (pSoldier->ubBodyType >= FATCIV && pSoldier->ubBodyType <= CRIPPLECIV) ) ); BOOLEAN fCivilianOrMilitia = PTR_CIV_OR_MILITIA; @@ -1555,6 +1557,8 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) pSoldier->bStealthMode = FALSE; // disable reverse movement mode pSoldier->bReverse = FALSE; + // sevenfm: initialize data + pSoldier->bWeaponMode = WM_NORMAL; if (fCivilian || (gGameExternalOptions.fAllNamedNpcsDecideAction && pSoldier->ubProfile != NO_PROFILE)) { @@ -2478,6 +2482,8 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) pSoldier->bStealthMode = FALSE; // disable reverse movement mode pSoldier->bReverse = FALSE; + // sevenfm: initialize data + pSoldier->bWeaponMode = WM_NORMAL; // if we have absolutely no action points, we can't do a thing under RED! if ( pSoldier->bActionPoints <= 0 ) //Action points can be negative @@ -4855,6 +4861,8 @@ INT16 ubMinAPCost; pSoldier->bStealthMode = FALSE; // disable reverse movement mode pSoldier->bReverse = FALSE; + // sevenfm: initialize data + pSoldier->bWeaponMode = WM_NORMAL; // sevenfm: stop flanking when we see enemy if( AICheckIsFlanking(pSoldier) ) @@ -7113,6 +7121,13 @@ INT8 ArmedVehicleDecideAction( SOLDIERTYPE *pSoldier ) { INT8 bAction = AI_ACTION_NONE; + // sevenfm: disable stealth mode + pSoldier->bStealthMode = FALSE; + // disable reverse movement mode + pSoldier->bReverse = FALSE; + // sevenfm: initialize data + pSoldier->bWeaponMode = WM_NORMAL; + switch ( pSoldier->aiData.bAlertStatus ) { case STATUS_GREEN: