diff --git a/Strategic/LuaInitNPCs.cpp b/Strategic/LuaInitNPCs.cpp index 315c173a..6667c141 100644 --- a/Strategic/LuaInitNPCs.cpp +++ b/Strategic/LuaInitNPCs.cpp @@ -8246,8 +8246,8 @@ int i; for (i= 1; i<=n; i++ ) { - if (i == 1 ) id = lua_tointeger(L,n); - if (i == 2 ) Bool = lua_toboolean(L,n); + if (i == 1 ) id = lua_tointeger(L,i); + if (i == 2 ) Bool = lua_toboolean(L,i); } gfBoxerFought[id] = Bool; diff --git a/Strategic/Quests.cpp b/Strategic/Quests.cpp index 8c19e79f..296a1f8f 100644 --- a/Strategic/Quests.cpp +++ b/Strategic/Quests.cpp @@ -1144,7 +1144,8 @@ BOOLEAN CheckFact( UINT16 usFact, UINT8 ubProfileID ) break; case FACT_NO_CLUB_FIGHTING_ALLOWED: - gubFact[usFact] = ( gubQuest[ QUEST_KINGPIN_MONEY ] == QUESTINPROGRESS || gfBoxersResting );// plus other conditions + // anv: added !BoxersAvailable, otherwise van Haussen would offer fight even when all boxers are dead + gubFact[usFact] = ( gubQuest[ QUEST_KINGPIN_MONEY ] == QUESTINPROGRESS || gfBoxersResting || !BoxersAvailable() );// plus other conditions break; case FACT_MADDOG_IS_SPEAKER: diff --git a/Strategic/Quests.h b/Strategic/Quests.h index f9f0443c..f8e1d129 100644 --- a/Strategic/Quests.h +++ b/Strategic/Quests.h @@ -474,6 +474,8 @@ enum Facts FACT_MADDOG_IS_SPEAKER = 280, + FACT_VAN_HAUSSEN_EXPLAINED_BOXING_RULES = 281, + FACT_ANGEL_MENTIONED_DEED = 282, FACT_IGGY_AVAILABLE_TO_ARMY,// 283 FACT_PC_HAS_CONRADS_RECRUIT_OPINION,// 284 diff --git a/Tactical/Boxing.cpp b/Tactical/Boxing.cpp index ff48d7ff..676eb8f5 100644 --- a/Tactical/Boxing.cpp +++ b/Tactical/Boxing.cpp @@ -436,7 +436,8 @@ BOOLEAN BoxerAvailable( void ) { if ( gubBoxerID[ ubLoop ] != NOBODY && !gfBoxerFought[ ubLoop ] ) { - return( TRUE ); + if( MercPtrs[ gubBoxerID[ ubLoop ] ]->bActive && MercPtrs[ gubBoxerID[ ubLoop ] ]->bInSector && MercPtrs[ gubBoxerID[ ubLoop ] ]->stats.bLife >= OKLIFE ) + return( TRUE ); } } @@ -453,7 +454,8 @@ UINT8 BoxersAvailable( void ) { if ( gubBoxerID[ ubLoop ] != NOBODY && !gfBoxerFought[ ubLoop ] ) { - ++ubCount; + if( MercPtrs[ gubBoxerID[ ubLoop ] ]->bActive && MercPtrs[ gubBoxerID[ ubLoop ] ]->bInSector && MercPtrs[ gubBoxerID[ ubLoop ] ]->stats.bLife >= OKLIFE ) + ++ubCount; } } diff --git a/Tactical/Civ Quotes.cpp b/Tactical/Civ Quotes.cpp index 28fe6bbc..3a51698d 100644 --- a/Tactical/Civ Quotes.cpp +++ b/Tactical/Civ Quotes.cpp @@ -1053,8 +1053,13 @@ BOOLEAN LoadCivQuotesFromLoadGameFile( HWFILE hFile ) //-------------------------------------------------------------- // anv: start enemy taunt with probabilty depending on taunt settings -void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget ) +void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, UINT32 uiTargetID ) { + SOLDIERTYPE *pTarget = NULL; + if( uiTargetID != NOBODY ) + { + pTarget = MercPtrs[uiTargetID]; + } if (is_networked) // No taunts in multiplayer return; diff --git a/Tactical/Civ Quotes.h b/Tactical/Civ Quotes.h index fa1fcfeb..b98fd4f0 100644 --- a/Tactical/Civ Quotes.h +++ b/Tactical/Civ Quotes.h @@ -154,7 +154,7 @@ enum TAUNTTYPE//enemy taunts - SANDRO TAUNT_RIPOSTE }; -void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget = NULL ); +void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, UINT32 uiTargetID = NOBODY ); void StartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget = NULL ); //enemy taunts - SANDRO // anv: added pTarget argument void ShowTauntPopupBox( SOLDIERTYPE *pCiv, STR16 gzTauntQuote ); diff --git a/Tactical/Dialogue Control.cpp b/Tactical/Dialogue Control.cpp index 81f4a6b7..c67b2cf7 100644 --- a/Tactical/Dialogue Control.cpp +++ b/Tactical/Dialogue Control.cpp @@ -3118,7 +3118,7 @@ void HandleDialogueEnd( FACETYPE *pFace ) case QUOTE_UNDER_HEAVY_FIRE: case QUOTE_TAKEN_A_BREATING: if( pSoldier->ubPreviousAttackerID != NOBODY && !( MercPtrs[pSoldier->ubPreviousAttackerID]->bDeafenedCounter > 0 ) ) - PossiblyStartEnemyTaunt( MercPtrs[pSoldier->ubPreviousAttackerID], TAUNT_RIPOSTE, FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ) ); + PossiblyStartEnemyTaunt( MercPtrs[pSoldier->ubPreviousAttackerID], TAUNT_RIPOSTE, gTacticalStatus.ubLastQuoteProfileNUm ); break; default: // select random enemy, who we see, who sees us and isn't deaf @@ -3132,7 +3132,7 @@ void HandleDialogueEnd( FACETYPE *pFace ) } } if( ubSeenEnemiesCnt > 0 ) - PossiblyStartEnemyTaunt( MercPtrs[ubSeenEnemies[ Random(ubSeenEnemiesCnt) ]], TAUNT_RIPOSTE, FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ) ); + PossiblyStartEnemyTaunt( MercPtrs[ubSeenEnemies[ Random(ubSeenEnemiesCnt) ]], TAUNT_RIPOSTE, gTacticalStatus.ubLastQuoteProfileNUm ); } break; } diff --git a/Tactical/Interface Enhanced.cpp b/Tactical/Interface Enhanced.cpp index e6d4a83c..4d885239 100644 --- a/Tactical/Interface Enhanced.cpp +++ b/Tactical/Interface Enhanced.cpp @@ -4229,7 +4229,8 @@ void DrawWeaponStats( OBJECTTYPE * gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL && gpComparedItemDescObject->usItem ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass & (IC_GUN|IC_LAUNCHER|IC_THROWING_KNIFE|IC_BLADE|IC_PUNCH) ) @@ -4685,7 +4686,8 @@ void DrawExplosiveStats( OBJECTTYPE * gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass & IC_EXPLOSV ) @@ -4874,7 +4876,8 @@ void DrawArmorStats( OBJECTTYPE * gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass & IC_ARMOUR ) @@ -4971,7 +4974,8 @@ void DrawAdvancedStats( OBJECTTYPE * gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpItemDescObject->usItem ].usItemClass == Item[ gpComparedItemDescObject->usItem ].usItemClass ) @@ -5888,7 +5892,8 @@ void DrawMiscStats( OBJECTTYPE * gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass == Item[ gpItemDescObject->usItem ].usItemClass ) @@ -5950,7 +5955,8 @@ void DrawSecondaryStats( OBJECTTYPE * gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpItemDescObject->usItem ].usItemClass == Item[ gpComparedItemDescObject->usItem ].usItemClass ) @@ -6537,7 +6543,8 @@ void DrawWeaponValues( OBJECTTYPE * gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL && gpComparedItemDescObject->usItem ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass & (IC_GUN|IC_LAUNCHER|IC_THROWING_KNIFE|IC_BLADE|IC_PUNCH) ) @@ -8665,7 +8672,8 @@ void DrawAmmoValues( OBJECTTYPE * gpItemDescObject, int shotsLeft ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass & IC_AMMO ) @@ -8946,7 +8954,8 @@ void DrawExplosiveValues( OBJECTTYPE * gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass & IC_EXPLOSV ) @@ -9594,7 +9603,8 @@ void DrawArmorValues( OBJECTTYPE * gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass & IC_ARMOUR ) @@ -9834,7 +9844,8 @@ void DrawAdvancedValues( OBJECTTYPE *gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpItemDescObject->usItem ].usItemClass == Item[ gpComparedItemDescObject->usItem ].usItemClass ) @@ -14338,7 +14349,8 @@ void DrawMiscValues( OBJECTTYPE * gpItemDescObject ) BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass == Item[ gpItemDescObject->usItem ].usItemClass ) diff --git a/Tactical/Interface Items.cpp b/Tactical/Interface Items.cpp index d1109bf2..fa517c7d 100644 --- a/Tactical/Interface Items.cpp +++ b/Tactical/Interface Items.cpp @@ -6979,11 +6979,12 @@ void RenderItemDescriptionBox( ) { if ( Item[ gpItemDescObject->usItem ].usItemClass & IC_GUN || Item[ gpItemDescObject->usItem ].usItemClass & IC_LAUNCHER ) { - OBJECTTYPE *gpComparedItemDescObject; + OBJECTTYPE *gpComparedItemDescObject = NULL; BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass & (IC_GUN|IC_LAUNCHER|IC_THROWING_KNIFE|IC_BLADE|IC_PUNCH) ) @@ -7445,11 +7446,12 @@ void RenderItemDescriptionBox( ) } else { - OBJECTTYPE *gpComparedItemDescObject; + OBJECTTYPE *gpComparedItemDescObject = NULL; BOOLEAN fComparisonMode = FALSE; if( _KeyDown( CTRL ) && gfCheckForCursorOverMapSectorInventoryItem ) { - gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; + if( pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object.usItem ) + gpComparedItemDescObject = &pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCurrentlyHighLightedItem].object;// = pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].object; if( gpComparedItemDescObject != NULL ) { if( Item[ gpComparedItemDescObject->usItem ].usItemClass & (IC_GUN|IC_LAUNCHER|IC_THROWING_KNIFE|IC_BLADE|IC_PUNCH) ) diff --git a/Tactical/Soldier Ani.cpp b/Tactical/Soldier Ani.cpp index 8d2352f9..13e2cd15 100644 --- a/Tactical/Soldier Ani.cpp +++ b/Tactical/Soldier Ani.cpp @@ -3787,17 +3787,17 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse ) if(pKillerSoldier != NULL) { if( pSoldier->usAnimState == JFK_HITDEATH ) - PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_HEAD_POP, pSoldier ); + PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_HEAD_POP, pSoldier->ubID ); else if( Item[pKillerSoldier->usAttackingWeapon].usItemClass & IC_GUN ) - PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_KILL_GUNFIRE, pSoldier ); + PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_KILL_GUNFIRE, pSoldier->ubID ); else if( Item[pKillerSoldier->usAttackingWeapon].usItemClass & IC_BLADE ) - PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_KILL_BLADE, pSoldier ); + PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_KILL_BLADE, pSoldier->ubID ); else if( Item[pKillerSoldier->usAttackingWeapon].usItemClass & IC_PUNCH ) - PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_KILL_HTH, pSoldier ); + PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_KILL_HTH, pSoldier->ubID ); else if( Item[pKillerSoldier->usAttackingWeapon].usItemClass & IC_THROWING_KNIFE ) - PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_KILL_THROWING_KNIFE, pSoldier ); + PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_KILL_THROWING_KNIFE, pSoldier ->ubID); else - PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_KILL, pSoldier ); + PossiblyStartEnemyTaunt( pKillerSoldier, TAUNT_KILL, pSoldier->ubID ); } // Cancel services here... diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index b2e0a9ac..4ca0bdd6 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -5944,30 +5944,30 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 } } DecayIndividualOpplist( this ); - PossiblyStartEnemyTaunt( this, TAUNT_GOT_BLINDED, MercPtrs[ubAttackerID]); - PossiblyStartEnemyTaunt( this, TAUNT_GOT_DEAFENED, MercPtrs[ubAttackerID]); + PossiblyStartEnemyTaunt( this, TAUNT_GOT_BLINDED, ubAttackerID ); + PossiblyStartEnemyTaunt( this, TAUNT_GOT_DEAFENED, ubAttackerID ); break; case FIRE_WEAPON_BLINDED: - PossiblyStartEnemyTaunt( this, TAUNT_GOT_BLINDED, MercPtrs[ubAttackerID]); + PossiblyStartEnemyTaunt( this, TAUNT_GOT_BLINDED, ubAttackerID ); break; case FIRE_WEAPON_DEAFENED: //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Soldier is deafened" ); this->bDeafenedCounter = bDeafValue; - PossiblyStartEnemyTaunt( this, TAUNT_GOT_DEAFENED, MercPtrs[ubAttackerID]); + PossiblyStartEnemyTaunt( this, TAUNT_GOT_DEAFENED, ubAttackerID ); break; }; if ( usWeaponIndex == STRUCTURE_EXPLOSION ) { ubReason = TAKE_DAMAGE_STRUCTURE_EXPLOSION; - PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_STRUCTURE_EXPLOSION, MercPtrs[ubAttackerID]); + PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_STRUCTURE_EXPLOSION, ubAttackerID ); } else { ubReason = TAKE_DAMAGE_EXPLOSION; - PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_EXPLOSION, MercPtrs[ubAttackerID]); + PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_EXPLOSION, ubAttackerID ); } } else @@ -6297,13 +6297,13 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 SoldierGotHitGunFire( this, usWeaponIndex, sDamage, bDirection, sRange, ubAttackerID, ubSpecial, ubHitLocation ); if( Item[ usWeaponIndex ].usItemClass & IC_GUN ) { - PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_GUNFIRE, MercPtrs[ubAttackerID] ); - PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_GUNFIRE, this ); + PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_GUNFIRE, ubAttackerID ); + PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_GUNFIRE, this->ubID ); } else { - PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_THROWING_KNIFE, MercPtrs[ubAttackerID] ); - PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_THROWING_KNIFE, this ); + PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_THROWING_KNIFE, ubAttackerID ); + PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_THROWING_KNIFE, this->ubID ); } } if ( Item[ usWeaponIndex ].usItemClass & IC_BLADE ) @@ -6317,12 +6317,12 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 SoldierGotHitExplosion( this, usWeaponIndex, sDamage, bDirection, sRange, ubAttackerID, ubSpecial, ubHitLocation ); if( Item[ usWeaponIndex ].usItemClass & IC_EXPLOSV || ubReason == TAKE_DAMAGE_EXPLOSION ) { - PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_EXPLOSION, MercPtrs[ubAttackerID] ); + PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_EXPLOSION, ubAttackerID ); //PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_EXPLOSION, this ); } else if(Item[ usWeaponIndex ].usItemClass & IC_TENTACLES) { - PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_TENTACLES, MercPtrs[ubAttackerID] ); + PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_TENTACLES, ubAttackerID ); //PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_TENTACLES, this ); } } diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index 44bee934..b6df76a4 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -3056,7 +3056,7 @@ BOOLEAN UseBlade( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) } // anv: taunt on attack - PossiblyStartEnemyTaunt( pSoldier, TAUNT_ATTACK_BLADE, pTargetSoldier ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_ATTACK_BLADE, pTargetSoldier->ubID ); // WDS 07/19/2008 - Random number use fix if ( iDiceRoll < iHitChance ) @@ -3064,8 +3064,8 @@ BOOLEAN UseBlade( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) fGonnaHit = TRUE; // anv: taunts on hit - PossiblyStartEnemyTaunt( pSoldier, TAUNT_HIT_BLADE, pTargetSoldier ); - PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_HIT_BLADE, pSoldier ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_HIT_BLADE, pTargetSoldier->ubID ); + PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_HIT_BLADE, pSoldier->ubID ); // CALCULATE DAMAGE! // attack HITS, calculate damage (base damage is 1-maximum knife sImpact) @@ -3134,9 +3134,9 @@ BOOLEAN UseBlade( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) else { // anv: taunts on miss - PossiblyStartEnemyTaunt( pSoldier, TAUNT_MISS_BLADE, pTargetSoldier ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_MISS_BLADE, pTargetSoldier->ubID ); if( pTargetSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) - PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_MISSED_BLADE, pSoldier ); + PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_MISSED_BLADE, pSoldier->ubID ); // if it was another team shooting at someone under our control if ( (pSoldier->bTeam != Menptr[ pTargetSoldier->ubID ].bTeam ) ) @@ -3628,7 +3628,7 @@ BOOLEAN UseHandToHand( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo, BOOLEAN fStea } // anv: enemy taunt on getting robbed - PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_ROBBED, pSoldier ); + PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_ROBBED, pSoldier->ubID ); } else { @@ -3661,7 +3661,7 @@ BOOLEAN UseHandToHand( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo, BOOLEAN fStea // FreeUpAttacker( (UINT8) pSoldier->ubID ); // anv: enemy taunt on steal - PossiblyStartEnemyTaunt( pSoldier, TAUNT_STEAL, pTargetSoldier ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_STEAL, pTargetSoldier->ubID ); } @@ -3671,7 +3671,7 @@ BOOLEAN UseHandToHand( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo, BOOLEAN fStea else { // anv: enemy taunt on attack - PossiblyStartEnemyTaunt( pSoldier, TAUNT_ATTACK_HTH, pTargetSoldier ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_ATTACK_HTH, pTargetSoldier->ubID ); // SANDRO - new mercs' records if ( pSoldier->bTeam == gbPlayerNum && pSoldier->ubProfile != NO_PROFILE ) @@ -3866,15 +3866,15 @@ BOOLEAN UseHandToHand( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo, BOOLEAN fStea AddGameEvent( S_WEAPONHIT, (UINT16) 20, &SWeaponHit ); // anv: enemy taunts on hit - PossiblyStartEnemyTaunt( pSoldier, TAUNT_HIT_HTH, pTargetSoldier ); - PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_HIT_HTH, pSoldier ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_HIT_HTH, pTargetSoldier->ubID ); + PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_HIT_HTH, pSoldier->ubID ); } else { // anv: enemy taunts on miss - PossiblyStartEnemyTaunt( pSoldier, TAUNT_MISS_HTH, pTargetSoldier ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_MISS_HTH, pTargetSoldier->ubID ); if( pTargetSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) - PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_MISSED_HTH, pSoldier ); + PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_MISSED_HTH, pSoldier->ubID ); } // 0verhaul: And this too // else @@ -4981,14 +4981,14 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UIN if( Item[ pBullet->pFirer->usAttackingWeapon ].usItemClass & IC_GUN ) { if( MercPtrs[ pBullet->pFirer->ubOppNum ]->aiData.bOppList[ pBullet->pFirer->ubID ] == SEEN_CURRENTLY ) - PossiblyStartEnemyTaunt( MercPtrs[ pBullet->pFirer->ubOppNum ], TAUNT_GOT_MISSED_GUNFIRE, pBullet->pFirer ); - PossiblyStartEnemyTaunt( pBullet->pFirer, TAUNT_MISS_GUNFIRE, MercPtrs[ pBullet->pFirer->ubOppNum ] ); + PossiblyStartEnemyTaunt( MercPtrs[ pBullet->pFirer->ubOppNum ], TAUNT_GOT_MISSED_GUNFIRE, pBullet->pFirer->ubID ); + PossiblyStartEnemyTaunt( pBullet->pFirer, TAUNT_MISS_GUNFIRE, pBullet->pFirer->ubOppNum ); } else if( Item[ pBullet->pFirer->usAttackingWeapon ].usItemClass & IC_THROWING_KNIFE ) { if( MercPtrs[ pBullet->pFirer->ubOppNum ]->aiData.bOppList[ pBullet->pFirer->ubID ] == SEEN_CURRENTLY ) - PossiblyStartEnemyTaunt( MercPtrs[ pBullet->pFirer->ubOppNum ], TAUNT_GOT_MISSED_THROWING_KNIFE, pBullet->pFirer ); - PossiblyStartEnemyTaunt( pBullet->pFirer, TAUNT_MISS_THROWING_KNIFE,MercPtrs[ pBullet->pFirer->ubOppNum ] ); + PossiblyStartEnemyTaunt( MercPtrs[ pBullet->pFirer->ubOppNum ], TAUNT_GOT_MISSED_THROWING_KNIFE, pBullet->pFirer->ubID ); + PossiblyStartEnemyTaunt( pBullet->pFirer, TAUNT_MISS_THROWING_KNIFE, pBullet->pFirer->ubOppNum ); } } } @@ -6806,7 +6806,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, sDistVis = pSoldier->GetMaxDistanceVisible(sGridNo, pSoldier->bTargetLevel, CALC_FROM_ALL_DIRS ) * CELL_X_SIZE; iScopeVisionRangeBonus = GetTotalVisionRangeBonus(pSoldier, bLightLevel); // not an actual range value, simply a modifier for range calculations - if (ubTargetID != NOBODY && pSoldier->aiData.bOppList[ubTargetID] == SEEN_CURRENTLY || gbPublicOpplist[pSoldier->bTeam][ubTargetID] == SEEN_CURRENTLY) + if (ubTargetID != NOBODY && ( pSoldier->aiData.bOppList[ubTargetID] == SEEN_CURRENTLY || gbPublicOpplist[pSoldier->bTeam][ubTargetID] == SEEN_CURRENTLY ) ) iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false ); if (iSightRange == 0) @@ -10392,14 +10392,14 @@ void ShotMiss( UINT8 ubAttackerID, INT32 iBullet ) if( Item[ pAttacker->usAttackingWeapon ].usItemClass & IC_GUN ) { if( MercPtrs[pAttacker->ubOppNum]->aiData.bOppList[ pAttacker->ubID ] == SEEN_CURRENTLY ) - PossiblyStartEnemyTaunt( MercPtrs[pAttacker->ubOppNum], TAUNT_GOT_MISSED_GUNFIRE, pAttacker ); - PossiblyStartEnemyTaunt( pAttacker, TAUNT_MISS_GUNFIRE, MercPtrs[pAttacker->ubOppNum] ); + PossiblyStartEnemyTaunt( MercPtrs[pAttacker->ubOppNum], TAUNT_GOT_MISSED_GUNFIRE, pAttacker->ubID ); + PossiblyStartEnemyTaunt( pAttacker, TAUNT_MISS_GUNFIRE, pAttacker->ubOppNum ); } else if( Item[ pAttacker->usAttackingWeapon ].usItemClass & IC_THROWING_KNIFE ) { if( MercPtrs[pAttacker->ubOppNum]->aiData.bOppList[ pAttacker->ubID ] == SEEN_CURRENTLY ) - PossiblyStartEnemyTaunt( MercPtrs[pAttacker->ubOppNum], TAUNT_GOT_MISSED_THROWING_KNIFE, pAttacker ); - PossiblyStartEnemyTaunt( pAttacker, TAUNT_MISS_THROWING_KNIFE, MercPtrs[pAttacker->ubOppNum] ); + PossiblyStartEnemyTaunt( MercPtrs[pAttacker->ubOppNum], TAUNT_GOT_MISSED_THROWING_KNIFE, pAttacker->ubID ); + PossiblyStartEnemyTaunt( pAttacker, TAUNT_MISS_THROWING_KNIFE, pAttacker->ubOppNum ); } } } diff --git a/Tactical/opplist.cpp b/Tactical/opplist.cpp index 9c5a6b43..92e64317 100644 --- a/Tactical/opplist.cpp +++ b/Tactical/opplist.cpp @@ -2551,12 +2551,12 @@ void ManSeesMan(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, INT32 sOppGridNo, // SANDRO - if this is an enemy guy, who was unaware of us till now, and the combat didn't started yet, throw "taunt" and indicator we have been seen if ( pSoldier->aiData.bOppList[pOpponent->ubID] <= NOT_HEARD_OR_SEEN && pSoldier->aiData.bAlertStatus != STATUS_RED && pSoldier->aiData.bAlertStatus != STATUS_BLACK ) { - PossiblyStartEnemyTaunt( pSoldier, TAUNT_NOTICED_UNSEEN, pOpponent ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_NOTICED_UNSEEN, pOpponent->ubID ); } // anv: we're already in fight, but we still can say hi to new enemy else if ( pSoldier->aiData.bOppList[pOpponent->ubID] <= NOT_HEARD_OR_SEEN ) { - PossiblyStartEnemyTaunt( pSoldier, TAUNT_SAY_HI, pOpponent ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_SAY_HI, pOpponent->ubID ); } ShowRadioLocator( pSoldier->ubID, 1 ); @@ -2598,7 +2598,7 @@ void ManSeesMan(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, INT32 sOppGridNo, SetNewSituation( pSoldier ); // force the looker to re-evaluate // anv: simulate informing buddies about detected enemy's position if(gbPublicOpplist[pSoldier->bTeam][pOpponent->ubID] != SEEN_CURRENTLY) - PossiblyStartEnemyTaunt( pSoldier, TAUNT_INFORM_ABOUT, pOpponent ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_INFORM_ABOUT, pOpponent->ubID ); } else diff --git a/TacticalAI/AIMain.cpp b/TacticalAI/AIMain.cpp index 3447830d..a7e06a04 100644 --- a/TacticalAI/AIMain.cpp +++ b/TacticalAI/AIMain.cpp @@ -1950,11 +1950,11 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier) // randomly decide whether to say civ quote if (Item[pSoldier->inv[HANDPOS].usItem].usItemClass == IC_GUN ) - PossiblyStartEnemyTaunt( pSoldier, TAUNT_FIRE_GUN, MercPtrs[pSoldier->ubOppNum] ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_FIRE_GUN, pSoldier->ubOppNum ); else if (Item[pSoldier->inv[HANDPOS].usItem].grenadelauncher || Item[pSoldier->inv[HANDPOS].usItem].mortar || Item[pSoldier->inv[HANDPOS].usItem].rocketlauncher ) - PossiblyStartEnemyTaunt( pSoldier, TAUNT_FIRE_LAUNCHER, MercPtrs[pSoldier->ubOppNum] ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_FIRE_LAUNCHER, pSoldier->ubOppNum ); else if (pSoldier->aiData.bAction == AI_ACTION_TOSS_PROJECTILE && Item[pSoldier->inv[HANDPOS].usItem].usItemClass == IC_THROWN && !Item[pSoldier->inv[HANDPOS].usItem].flare ) - PossiblyStartEnemyTaunt( pSoldier, TAUNT_THROW_KNIFE, MercPtrs[pSoldier->ubOppNum] ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_THROW_KNIFE, pSoldier->ubOppNum ); else if (pSoldier->aiData.bAction == AI_ACTION_KNIFE_MOVE ) { if (Item[pSoldier->inv[HANDPOS].usItem].usItemClass == IC_BLADE ) @@ -2266,7 +2266,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier) if ( usSoldierIndex != NOBODY ) { MercStealFromMerc( pSoldier, MercPtrs[usSoldierIndex] ); - PossiblyStartEnemyTaunt( pSoldier, TAUNT_STEAL, MercPtrs[usSoldierIndex] ); + PossiblyStartEnemyTaunt( pSoldier, TAUNT_STEAL, usSoldierIndex ); } break;