mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
add "Disguise" menu to tactical skill menu (alt + rightclick)
add "Fill canteens" action to tactical skill menu, under "various" adapted from Seven's +AI git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9350 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+32
-4
@@ -150,12 +150,13 @@ TraitSelection::Setup( UINT32 aVal )
|
||||
CHAR16 pStr[300];
|
||||
|
||||
// create entries for the sub-menus for each trait
|
||||
const UINT8 num = 4;
|
||||
const UINT8 num = 5;
|
||||
UINT8 traitarray[num];
|
||||
traitarray[0] = RADIO_OPERATOR_NT;
|
||||
traitarray[1] = INTEL;
|
||||
traitarray[2] = VARIOUSSKILLS;
|
||||
traitarray[3] = AUTOBANDAGESKILLS;
|
||||
traitarray[2] = DISGUISE;
|
||||
traitarray[3] = VARIOUSSKILLS;
|
||||
traitarray[4] = AUTOBANDAGESKILLS;
|
||||
|
||||
for ( int i = 0; i < num; ++i)
|
||||
{
|
||||
@@ -260,7 +261,7 @@ SkillSelection::Setup( UINT32 aVal )
|
||||
}
|
||||
break;
|
||||
|
||||
case INTEL:
|
||||
case INTEL:
|
||||
{
|
||||
for ( UINT32 uiCounter = SKILLS_INTEL_FIRST; uiCounter <= SKILLS_INTEL_LAST; ++uiCounter )
|
||||
{
|
||||
@@ -280,6 +281,26 @@ SkillSelection::Setup( UINT32 aVal )
|
||||
}
|
||||
break;
|
||||
|
||||
case DISGUISE:
|
||||
{
|
||||
for ( UINT32 uiCounter = SKILLS_DISGUISE_FIRST; uiCounter <= SKILLS_DISGUISE_LAST; ++uiCounter )
|
||||
{
|
||||
swprintf( pStr, pTraitSkillsMenuStrings[uiCounter] );
|
||||
|
||||
pOption = new POPUP_OPTION( &std::wstring( pStr ), new popupCallbackFunction<void, UINT32>( &Wrapper_Function_SkillSelection, uiCounter ) );
|
||||
|
||||
// if we cannot perform this skill, grey it out
|
||||
if ( !( pSoldier->CanUseSkill( uiCounter, TRUE, sTraitsMenuTargetGridNo ) ) )
|
||||
{
|
||||
// Set this option off.
|
||||
pOption->setAvail( new popupCallbackFunction<bool, void*>( &Popup_OptionOff, NULL ) );
|
||||
}
|
||||
|
||||
GetPopup()->addOption( *pOption );
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case VARIOUSSKILLS:
|
||||
{
|
||||
for(UINT32 uiCounter = SKILLS_VARIOUS_FIRST; uiCounter <= SKILLS_VARIOUS_LAST; ++uiCounter)
|
||||
@@ -343,6 +364,13 @@ SkillSelection::Setup( UINT32 aVal )
|
||||
}
|
||||
break;
|
||||
|
||||
case DISGUISE:
|
||||
for ( UINT32 uiCounter = SKILLS_DISGUISE_FIRST; uiCounter <= SKILLS_DISGUISE_LAST; ++uiCounter )
|
||||
{
|
||||
SetRegionFastHelpText( &( GetPopup()->MenuRegion[cnt++] ), pSoldier->PrintSkillDesc( uiCounter, sTraitsMenuTargetGridNo ) );
|
||||
}
|
||||
break;
|
||||
|
||||
case VARIOUSSKILLS:
|
||||
{
|
||||
for(UINT32 uiCounter = SKILLS_VARIOUS_FIRST; uiCounter <= SKILLS_VARIOUS_LAST; ++uiCounter)
|
||||
|
||||
@@ -18292,6 +18292,18 @@ BOOLEAN SOLDIERTYPE::CanUseSkill( INT8 iSkill, BOOLEAN fAPCheck, INT32 sGridNo )
|
||||
}
|
||||
break;
|
||||
|
||||
case SKILLS_DISGUISE_APPLY_DISGUISE:
|
||||
case SKILLS_DISGUISE_REMOVE_CLOTHES:
|
||||
if (IS_MERC_BODY_TYPE(this) && !(usSoldierFlagMask & (SOLDIER_COVERT_CIV | SOLDIER_COVERT_SOLDIER)))
|
||||
canuse = TRUE;
|
||||
break;
|
||||
|
||||
case SKILLS_DISGUISE_REMOVE_DISGUISE:
|
||||
case SKILLS_DISGUISE_TEST_DISGUISE:
|
||||
if (IS_MERC_BODY_TYPE(this) && usSoldierFlagMask & (SOLDIER_COVERT_CIV | SOLDIER_COVERT_SOLDIER))
|
||||
canuse = TRUE;
|
||||
break;
|
||||
|
||||
case SKILLS_SPOTTER:
|
||||
if ( (!fAPCheck || EnoughPoints( this, APBPConstants[AP_SPOTTER], 0, FALSE )) && CanSpot( ) )
|
||||
canuse = TRUE;
|
||||
@@ -18314,6 +18326,11 @@ BOOLEAN SOLDIERTYPE::CanUseSkill( INT8 iSkill, BOOLEAN fAPCheck, INT32 sGridNo )
|
||||
canuse = TRUE;
|
||||
break;
|
||||
|
||||
case SKILLS_FILL_CANTEENS:
|
||||
if ( !((guiCurrentScreen != GAME_SCREEN && guiCurrentScreen != MSG_BOX_SCREEN) || (gTacticalStatus.uiFlags & INCOMBAT) || gTacticalStatus.fEnemyInSector || gusSelectedSoldier == NOBODY) )
|
||||
canuse = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -18410,6 +18427,23 @@ BOOLEAN SOLDIERTYPE::UseSkill( UINT8 iSkill, INT32 usMapPos, UINT32 ID )
|
||||
return TRUE;
|
||||
break;
|
||||
|
||||
case SKILLS_DISGUISE_APPLY_DISGUISE:
|
||||
this->Disguise();
|
||||
this->SpySelfTest();
|
||||
return TRUE;
|
||||
|
||||
case SKILLS_DISGUISE_REMOVE_DISGUISE:
|
||||
this->LooseDisguise();
|
||||
return TRUE;
|
||||
|
||||
case SKILLS_DISGUISE_TEST_DISGUISE:
|
||||
this->SpySelfTest();
|
||||
return TRUE;
|
||||
|
||||
case SKILLS_DISGUISE_REMOVE_CLOTHES:
|
||||
this->Strip();
|
||||
return TRUE;
|
||||
|
||||
case SKILLS_SPOTTER:
|
||||
return BecomeSpotter( usMapPos );
|
||||
break;
|
||||
@@ -18443,6 +18477,10 @@ BOOLEAN SOLDIERTYPE::UseSkill( UINT8 iSkill, INT32 usMapPos, UINT32 ID )
|
||||
return TRUE;
|
||||
break;
|
||||
|
||||
case SKILLS_FILL_CANTEENS:
|
||||
SectorFillCanteens();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -18574,6 +18612,18 @@ STR16 SOLDIERTYPE::PrintSkillDesc( INT8 iSkill, INT32 sGridNo )
|
||||
|
||||
break;
|
||||
|
||||
case SKILLS_DISGUISE_APPLY_DISGUISE:
|
||||
case SKILLS_DISGUISE_REMOVE_CLOTHES:
|
||||
swprintf( atStr, pTraitSkillsDenialStrings[TEXT_SKILL_DENIAL_NOT_DISGUISED] );
|
||||
wcscat( skilldescarray, atStr );
|
||||
break;
|
||||
|
||||
case SKILLS_DISGUISE_REMOVE_DISGUISE:
|
||||
case SKILLS_DISGUISE_TEST_DISGUISE:
|
||||
swprintf( atStr, pTraitSkillsDenialStrings[TEXT_SKILL_DENIAL_DISGUISE_CIV_OR_MIL] );
|
||||
wcscat( skilldescarray, atStr );
|
||||
break;
|
||||
|
||||
case SKILLS_SPOTTER:
|
||||
swprintf( atStr, pTraitSkillsDenialStrings[TEXT_SKILL_DENIAL_X_AP], APBPConstants[AP_SPOTTER] );
|
||||
wcscat( skilldescarray, atStr );
|
||||
@@ -18608,6 +18658,15 @@ STR16 SOLDIERTYPE::PrintSkillDesc( INT8 iSkill, INT32 sGridNo )
|
||||
|
||||
break;
|
||||
|
||||
case SKILLS_FILL_CANTEENS:
|
||||
swprintf( atStr, pTraitSkillsDenialStrings[TEXT_SKILL_DENIAL_NOT_IN_COMBAT] );
|
||||
wcscat( skilldescarray, atStr );
|
||||
|
||||
swprintf( atStr, pTraitSkillsDenialStrings[TEXT_SKILL_DENIAL_FRIENDLY_SECTOR] );
|
||||
wcscat( skilldescarray, atStr );
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -24361,7 +24420,7 @@ BOOLEAN HAS_SKILL_TRAIT( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber )
|
||||
return FALSE;
|
||||
|
||||
// Flugente: compatibility with skills
|
||||
if ( uiSkillTraitNumber == INTEL || uiSkillTraitNumber == VARIOUSSKILLS )
|
||||
if ( uiSkillTraitNumber == INTEL || uiSkillTraitNumber == DISGUISE || uiSkillTraitNumber == VARIOUSSKILLS )
|
||||
return TRUE;
|
||||
|
||||
// sevenfm: add Autobandage option to skills menu
|
||||
|
||||
@@ -617,12 +617,21 @@ enum{
|
||||
SKILLS_ACTIVATE_TURNCOATS_ALL, // order all enemy turncoats to turn into militia right now
|
||||
SKILLS_INTEL_LAST = SKILLS_ACTIVATE_TURNCOATS_ALL,
|
||||
|
||||
// disguise
|
||||
SKILLS_DISGUISE_FIRST,
|
||||
SKILLS_DISGUISE_APPLY_DISGUISE = SKILLS_DISGUISE_FIRST,
|
||||
SKILLS_DISGUISE_REMOVE_DISGUISE,
|
||||
SKILLS_DISGUISE_TEST_DISGUISE,
|
||||
SKILLS_DISGUISE_REMOVE_CLOTHES,
|
||||
SKILLS_DISGUISE_LAST = SKILLS_DISGUISE_REMOVE_CLOTHES,
|
||||
|
||||
// various
|
||||
SKILLS_VARIOUS_FIRST,
|
||||
SKILLS_SPOTTER = SKILLS_VARIOUS_FIRST,
|
||||
SKILLS_FOCUS,
|
||||
SKILLS_DRAG,
|
||||
SKILLS_VARIOUS_LAST = SKILLS_DRAG,
|
||||
SKILLS_FILL_CANTEENS,
|
||||
SKILLS_VARIOUS_LAST = SKILLS_FILL_CANTEENS,
|
||||
|
||||
SKILLS_MAX,
|
||||
};
|
||||
|
||||
@@ -181,7 +181,8 @@ typedef enum
|
||||
|
||||
// Flugente: these aren't really traits, but it is convenient to pretend so
|
||||
#define INTEL (2 * NEWTRAIT_MERCSKILL_EXPERTOFFSET + 2)
|
||||
#define VARIOUSSKILLS (INTEL + 1)
|
||||
#define DISGUISE (INTEL + 1)
|
||||
#define VARIOUSSKILLS (DISGUISE + 1)
|
||||
// sevenfm: add autobandage to skills menu
|
||||
#define AUTOBANDAGESKILLS (VARIOUSSKILLS + 1)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user