From 7cf7d7db3c2acf33c8790de1d8206b324d72cec1 Mon Sep 17 00:00:00 2001 From: MaddMugsy Date: Thu, 8 Jun 2006 22:25:54 +0000 Subject: [PATCH] - In the vain hopes of finally killing that stupid "Battle Scope" bug, I have changed the inventory creation to do an extra check for attachment validity before creating the attachments w/out displaying any messages. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@205 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/Inventory Choosing.cpp | 7 +++---- Tactical/Items.cpp | 8 ++++++-- Tactical/Items.h | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Tactical/Inventory Choosing.cpp b/Tactical/Inventory Choosing.cpp index bec2c8a7..e8caa327 100644 --- a/Tactical/Inventory Choosing.cpp +++ b/Tactical/Inventory Choosing.cpp @@ -666,7 +666,6 @@ void ChooseWeaponForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bWeaponC usScopeIndex = PickARandomAttachment(SCOPE,usGunIndex,bAttachClass,FALSE); } } - //Choose attachment if( bAttachClass && ( fAttachment )) { @@ -842,21 +841,21 @@ void ChooseWeaponForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bWeaponC DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"ChooseWeaponForSoldierCreateStruct: Gun Created"); - if( usScopeIndex > 0 ) + if( usScopeIndex > 0 && ValidItemAttachment(&(pp->Inv[ HANDPOS ]),usScopeIndex,TRUE,FALSE) ) { DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: Create Scope %d",usScopeIndex)); CreateItem( usScopeIndex, 100, &Object ); Object.fFlags |= OBJECT_UNDROPPABLE; AttachObject( NULL, &(pp->Inv[ HANDPOS ]), &Object ); } - if( usAttachIndex > 0 ) + if( usAttachIndex > 0 && ValidItemAttachment(&(pp->Inv[ HANDPOS ]),usAttachIndex,TRUE,FALSE)) { DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: Create Attachment %d",usAttachIndex)); CreateItem( usAttachIndex, 100, &Object ); Object.fFlags |= OBJECT_UNDROPPABLE; AttachObject( NULL, &(pp->Inv[ HANDPOS ]), &Object ); } - if( usAttachIndex2 > 0 ) + if( usAttachIndex2 > 0 && ValidItemAttachment(&(pp->Inv[ HANDPOS ]),usAttachIndex2,TRUE,FALSE)) { DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: Create 2nd Attachment %d",usAttachIndex2)); CreateItem( usAttachIndex2, 100, &Object ); diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index cbf8dd18..1751b4f6 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -1806,6 +1806,10 @@ BOOLEAN ValidAttachment( UINT16 usAttachment, UINT16 usItem ) //be possible to have this attachment on this item, but may already have an attachment on //it which doesn't work simultaneously with the new attachment (like a silencer and duckbill). BOOLEAN ValidItemAttachment( OBJECTTYPE * pObj, UINT16 usAttachment, BOOLEAN fAttemptingAttachment ) +{ + return ValidItemAttachment ( pObj, usAttachment, fAttemptingAttachment, TRUE ); +} +BOOLEAN ValidItemAttachment( OBJECTTYPE * pObj, UINT16 usAttachment, BOOLEAN fAttemptingAttachment, BOOLEAN fDisplayMessage ) { BOOLEAN fSameItem = FALSE, fSimilarItems = FALSE; UINT16 usSimilarItem = NOTHING; @@ -1959,12 +1963,12 @@ BOOLEAN ValidItemAttachment( OBJECTTYPE * pObj, UINT16 usAttachment, BOOLEAN fAt { if (fSameItem) { - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, Message[ STR_ATTACHMENT_ALREADY ] ); + if (fDisplayMessage) ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, Message[ STR_ATTACHMENT_ALREADY ] ); return( FALSE ); } else if (fSimilarItems) { - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, Message[ STR_CANT_USE_TWO_ITEMS ], ItemNames[ usSimilarItem ], ItemNames[ usAttachment ] ); + if (fDisplayMessage) ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, Message[ STR_CANT_USE_TWO_ITEMS ], ItemNames[ usSimilarItem ], ItemNames[ usAttachment ] ); return( FALSE ); } } diff --git a/Tactical/Items.h b/Tactical/Items.h index 73d20c38..2b4c184d 100644 --- a/Tactical/Items.h +++ b/Tactical/Items.h @@ -115,6 +115,7 @@ BOOLEAN ItemHasAttachments( OBJECTTYPE *pItem ); //be possible to have this attachment on this item, but may already have an attachment on //it which doesn't work simultaneously with the new attachment (like a silencer and duckbill). BOOLEAN ValidItemAttachment( OBJECTTYPE * pObj, UINT16 usAttachment, BOOLEAN fAttemptingAttachment ); +BOOLEAN ValidItemAttachment( OBJECTTYPE * pObj, UINT16 usAttachment, BOOLEAN fAttemptingAttachment, BOOLEAN fDisplayMessage ); // Determines if it is possible to merge an item with any item whose class // is the same as the indicated item