diff --git a/Tactical/Handle Items.cpp b/Tactical/Handle Items.cpp
index f2d9dd01..06ac0776 100644
--- a/Tactical/Handle Items.cpp
+++ b/Tactical/Handle Items.cpp
@@ -4594,7 +4594,7 @@ void CleanWeapons( BOOLEAN fCleanAll )
}
}
-// take off custom clothes
+// undisguise or take off custom clothes
void Strip( SOLDIERTYPE * pSoldier )
{
pSoldier->Strip();
@@ -4719,7 +4719,7 @@ void TacticalFunctionSelectionMessageBoxCallBack( UINT8 ubExitValue )
CleanWeapons(TRUE);
break;
case 4:
- // take off custom clothes
+ // undisguise or take off custom clothes
Strip(gpTempSoldier);
break;
default:
diff --git a/Tactical/Item Types.h b/Tactical/Item Types.h
index c52982f2..afef3f4c 100644
--- a/Tactical/Item Types.h
+++ b/Tactical/Item Types.h
@@ -740,7 +740,7 @@ extern OBJECTTYPE gTempObject;
#define CAMO_REMOVAL 0x00000400 //1024 // item can be used to remove camo
#define CLEANING_KIT 0x00000800 //2048 // weapon cleaning kit
-#define CLOTHES_CIVILIAN 0x00001000 //4096 // with this item you can disguise as a civilian
+//#define CLOTHES_CIVILIAN 0x00001000 //4096 // with this item you can disguise as a civilian // not used anymore
#define GAROTTE 0x00002000 //8192 // this item is a garotte
#define COVERT 0x00004000 //16384 // if LBE, any gun inside will be covert. On a gun, it will covert in any LBE, even if the LBE does not have that tag itself
#define CORPSE 0x00008000 //32768 // a dead body
diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp
index a7394d81..a4d5a0de 100644
--- a/Tactical/Soldier Control.cpp
+++ b/Tactical/Soldier Control.cpp
@@ -15073,56 +15073,76 @@ void SOLDIERTYPE::LooseDisguise( void )
this->bSoldierFlagMask &= ~(SOLDIER_COVERT_CIV|SOLDIER_COVERT_SOLDIER);
}
-// take off any clothes item and switch back to original clothes
+// undisguise or take off any clothes item and switch back to original clothes
// no - this function does not want you think it does. Leave Fox alone, you perv.
void SOLDIERTYPE::Strip()
{
- // loose any covert and clothes flags
- this->bSoldierFlagMask &= ~(SOLDIER_COVERT_CIV|SOLDIER_COVERT_SOLDIER|SOLDIER_NEW_VEST|SOLDIER_NEW_PANTS);
-
- UINT16 vestitem = 0;
- if ( GetFirstClothesItemWithSpecificData(&vestitem, this->VestPal, "blank") )
+ // if covert, loose that ability
+ if ( this->bSoldierFlagMask & (SOLDIER_COVERT_CIV|SOLDIER_COVERT_SOLDIER) )
{
- CreateItem( vestitem, 100, &gTempObject );
- if ( !AutoPlaceObject( this, &gTempObject, FALSE ) )
- AddItemToPool( this->sGridNo, &gTempObject, 1, 0, 0, -1 );
+ // loose any covert flags
+ this->bSoldierFlagMask &= ~(SOLDIER_COVERT_CIV|SOLDIER_COVERT_SOLDIER);
+ }
+ // if already not covert, take off clothes
+ else if ( this->bSoldierFlagMask & (SOLDIER_NEW_VEST|SOLDIER_NEW_PANTS) )
+ {
+ // loose any clothes flags
+ this->bSoldierFlagMask &= ~(SOLDIER_NEW_VEST|SOLDIER_NEW_PANTS);
+
+ UINT16 vestitem = 0;
+ if ( GetFirstClothesItemWithSpecificData(&vestitem, this->VestPal, "blank") )
+ {
+ CreateItem( vestitem, 100, &gTempObject );
+ if ( !AutoPlaceObject( this, &gTempObject, FALSE ) )
+ AddItemToPool( this->sGridNo, &gTempObject, 1, 0, 0, -1 );
+ }
+ else
+ ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_NO_CLOTHES_ITEM] );
+
+ UINT16 pantsitem = 0;
+ if ( GetFirstClothesItemWithSpecificData(&pantsitem, "blank", this->PantsPal) )
+ {
+ CreateItem( pantsitem, 100, &gTempObject );
+ if ( !AutoPlaceObject( this, &gTempObject, FALSE ) )
+ AddItemToPool( this->sGridNo, &gTempObject, 1, 0, 0, -1 );
+ }
+ else
+ ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_NO_CLOTHES_ITEM] );
+
+ // show our true colours
+ UINT16 usPaletteAnimSurface = LoadSoldierAnimationSurface( this, this->usAnimState );
+
+ if ( usPaletteAnimSurface != INVALID_ANIMATION_SURFACE )
+ {
+ UINT8 ubProfileIndex;
+ MERCPROFILESTRUCT * pProfile;
+
+ ubProfileIndex = this->ubProfile;
+ pProfile = &(gMercProfiles[ubProfileIndex]);
+
+ SET_PALETTEREP_ID ( this->VestPal, pProfile->VEST );
+ SET_PALETTEREP_ID ( this->PantsPal, pProfile->PANTS );
+
+ // Use palette from HVOBJECT, then use substitution for pants, etc
+ memcpy( this->p8BPPPalette, gAnimSurfaceDatabase[ usPaletteAnimSurface ].hVideoObject->pPaletteEntry, sizeof( this->p8BPPPalette ) * 256 );
+
+ SetPaletteReplacement( this->p8BPPPalette, this->HeadPal );
+ SetPaletteReplacement( this->p8BPPPalette, this->VestPal );
+ SetPaletteReplacement( this->p8BPPPalette, this->PantsPal );
+ SetPaletteReplacement( this->p8BPPPalette, this->SkinPal );
+
+ this->CreateSoldierPalettes();
+ }
}
else
- ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_NO_CLOTHES_ITEM] );
-
- UINT16 pantsitem = 0;
- if ( GetFirstClothesItemWithSpecificData(&pantsitem, "blank", this->PantsPal) )
{
- CreateItem( pantsitem, 100, &gTempObject );
- if ( !AutoPlaceObject( this, &gTempObject, FALSE ) )
- AddItemToPool( this->sGridNo, &gTempObject, 1, 0, 0, -1 );
- }
- else
- ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_NO_CLOTHES_ITEM] );
-
- // show our true colours
- UINT16 usPaletteAnimSurface = LoadSoldierAnimationSurface( this, this->usAnimState );
-
- if ( usPaletteAnimSurface != INVALID_ANIMATION_SURFACE )
- {
- UINT8 ubProfileIndex;
- MERCPROFILESTRUCT * pProfile;
-
- ubProfileIndex = this->ubProfile;
- pProfile = &(gMercProfiles[ubProfileIndex]);
-
- SET_PALETTEREP_ID ( this->VestPal, pProfile->VEST );
- SET_PALETTEREP_ID ( this->PantsPal, pProfile->PANTS );
-
- // Use palette from HVOBJECT, then use substitution for pants, etc
- memcpy( this->p8BPPPalette, gAnimSurfaceDatabase[ usPaletteAnimSurface ].hVideoObject->pPaletteEntry, sizeof( this->p8BPPPalette ) * 256 );
-
- SetPaletteReplacement( this->p8BPPPalette, this->HeadPal );
- SetPaletteReplacement( this->p8BPPPalette, this->VestPal );
- SetPaletteReplacement( this->p8BPPPalette, this->PantsPal );
- SetPaletteReplacement( this->p8BPPPalette, this->SkinPal );
-
- this->CreateSoldierPalettes();
+ // if the player is an annoying little perv, tell them so, girls!
+ if ( this->ubBodyType == REGFEMALE )
+ {
+ // sigh. We were hired by an idiot.
+ TacticalCharacterDialogue( this, QUOTE_IMPATIENT_QUOTE );
+ this->aiData.bMorale = max(0, this->aiData.bMorale - 1);
+ }
}
}
diff --git a/Tactical/Soldier Control.h b/Tactical/Soldier Control.h
index 4d007463..26c82057 100644
--- a/Tactical/Soldier Control.h
+++ b/Tactical/Soldier Control.h
@@ -1491,7 +1491,7 @@ public:
// loose disguise, dress up in our natural state
void LooseDisguise( void );
- // take off any clothes item and switch back to original clothes
+ // lose disguise or take off any clothes item and switch back to original clothes
void Strip();
//////////////////////////////////////////////////////////////////////////////
diff --git a/Tactical/Tactical_VS2010.vcxproj b/Tactical/Tactical_VS2010.vcxproj
index 999fc4c7..dfebc40c 100644
--- a/Tactical/Tactical_VS2010.vcxproj
+++ b/Tactical/Tactical_VS2010.vcxproj
@@ -194,6 +194,7 @@
+
diff --git a/Tactical/Tactical_VS2010.vcxproj.filters b/Tactical/Tactical_VS2010.vcxproj.filters
index d618d07f..f11bfebb 100644
--- a/Tactical/Tactical_VS2010.vcxproj.filters
+++ b/Tactical/Tactical_VS2010.vcxproj.filters
@@ -629,5 +629,8 @@
Source Files
+
+ Source Files
+
\ No newline at end of file