mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
*********************************************************
* 2006/05/01 * * Little Alien * * Developed in VS 2003 * ********************************************************* Source: - Added militia control in tactical (can be turned on/off in ja2.ini file) - Aiming/readying gun: show in red points needed for readying gun Data: - Added new ja2.ini git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@46 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+167
-152
@@ -5520,6 +5520,7 @@ BOOLEAN HandleTalkInit( )
|
||||
INT16 sDistVisible;
|
||||
INT16 sActionGridNo;
|
||||
UINT8 ubDirection;
|
||||
UINT8 commandRange; //lal
|
||||
|
||||
// Get soldier
|
||||
if ( !GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
@@ -5535,189 +5536,203 @@ BOOLEAN HandleTalkInit( )
|
||||
// Check if there is a guy here to talk to!
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
// Is he a valid NPC?
|
||||
if ( IsValidTalkableNPC( (UINT8)gusUIFullTargetID, FALSE, TRUE , FALSE ) )
|
||||
{
|
||||
GetSoldier( &pTSoldier, gusUIFullTargetID );
|
||||
// Is he a valid NPC?
|
||||
if ( IsValidTalkableNPC( (UINT8)gusUIFullTargetID, FALSE, TRUE , FALSE ) )
|
||||
{
|
||||
GetSoldier( &pTSoldier, gusUIFullTargetID );
|
||||
|
||||
if ( pTSoldier->ubID != pSoldier->ubID )
|
||||
{
|
||||
//ATE: Check if we have good LOS
|
||||
// is he close enough to see that gridno if he turns his head?
|
||||
if ( pTSoldier->ubID != pSoldier->ubID )
|
||||
{
|
||||
if ( !(( pTSoldier->bTeam == MILITIA_TEAM ) && ( CheckIfRadioIsEquipped() )) ) //lal
|
||||
{
|
||||
//ATE: Check if we have good LOS
|
||||
// is he close enough to see that gridno if he turns his head?
|
||||
sDistVisible = DistanceVisible( pSoldier, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, pTSoldier->sGridNo, pTSoldier->bLevel, pTSoldier );
|
||||
|
||||
// Check LOS!
|
||||
if ( !SoldierTo3DLocationLineOfSightTest( pSoldier, pTSoldier->sGridNo, pTSoldier->bLevel, 3, (UINT8) sDistVisible, TRUE ) )
|
||||
{
|
||||
if ( pTSoldier->ubProfile != NO_PROFILE )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ NO_LOS_TO_TALK_TARGET ], pSoldier->name, pTSoldier->name );
|
||||
}
|
||||
else
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, gzLateLocalizedString[ 45 ], pSoldier->name );
|
||||
}
|
||||
return( FALSE );
|
||||
}
|
||||
}
|
||||
// Check LOS!
|
||||
if ( !SoldierTo3DLocationLineOfSightTest( pSoldier, pTSoldier->sGridNo, pTSoldier->bLevel, 3, (UINT8) sDistVisible, TRUE ) )
|
||||
{
|
||||
if ( pTSoldier->ubProfile != NO_PROFILE )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ NO_LOS_TO_TALK_TARGET ], pSoldier->name, pTSoldier->name );
|
||||
}
|
||||
else
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, gzLateLocalizedString[ 45 ], pSoldier->name );
|
||||
}
|
||||
return( FALSE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( pTSoldier->bCollapsed )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, gzLateLocalizedString[ 21 ], pTSoldier->name );
|
||||
return( FALSE );
|
||||
}
|
||||
if ( pTSoldier->bCollapsed )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, gzLateLocalizedString[ 21 ], pTSoldier->name );
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
// If Q on, turn off.....
|
||||
if ( guiCurrentScreen == DEBUG_SCREEN )
|
||||
{
|
||||
gfExitDebugScreen = TRUE;
|
||||
// If Q on, turn off.....
|
||||
if ( guiCurrentScreen == DEBUG_SCREEN )
|
||||
{
|
||||
gfExitDebugScreen = TRUE;
|
||||
}
|
||||
|
||||
// ATE: if our own guy...
|
||||
if ( pTSoldier->bTeam == gbPlayerNum && !AM_AN_EPC( pTSoldier ) )
|
||||
{
|
||||
if ( pTSoldier->ubProfile == DIMITRI )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, gzLateLocalizedString[ 32 ], pTSoldier->name );
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
// ATE: if our own guy...
|
||||
if ( pTSoldier->bTeam == gbPlayerNum && !AM_AN_EPC( pTSoldier ) )
|
||||
// Randomize quote to use....
|
||||
|
||||
// If buddy had a social trait...
|
||||
if ( gMercProfiles[ pTSoldier->ubProfile ].bAttitude != ATT_NORMAL )
|
||||
{
|
||||
if ( pTSoldier->ubProfile == DIMITRI )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, gzLateLocalizedString[ 32 ], pTSoldier->name );
|
||||
return( FALSE );
|
||||
}
|
||||
ubDiceRoll = (UINT8)Random( 3 );
|
||||
}
|
||||
else
|
||||
{
|
||||
ubDiceRoll = (UINT8)Random( 2 );
|
||||
}
|
||||
|
||||
// Randomize quote to use....
|
||||
// If we are a PC, only use 0
|
||||
if ( pTSoldier->ubWhatKindOfMercAmI == MERC_TYPE__PLAYER_CHARACTER )
|
||||
{
|
||||
ubDiceRoll = 0;
|
||||
}
|
||||
|
||||
// If buddy had a social trait...
|
||||
if ( gMercProfiles[ pTSoldier->ubProfile ].bAttitude != ATT_NORMAL )
|
||||
switch( ubDiceRoll )
|
||||
{
|
||||
case 0:
|
||||
|
||||
ubQuoteNum = QUOTE_NEGATIVE_COMPANY;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
|
||||
if ( QuoteExp_PassingDislike[ pTSoldier->ubProfile ] )
|
||||
{
|
||||
ubDiceRoll = (UINT8)Random( 3 );
|
||||
ubQuoteNum = QUOTE_PASSING_DISLIKE;
|
||||
}
|
||||
else
|
||||
{
|
||||
ubDiceRoll = (UINT8)Random( 2 );
|
||||
ubQuoteNum = QUOTE_NEGATIVE_COMPANY;
|
||||
}
|
||||
break;
|
||||
|
||||
// If we are a PC, only use 0
|
||||
if ( pTSoldier->ubWhatKindOfMercAmI == MERC_TYPE__PLAYER_CHARACTER )
|
||||
{
|
||||
ubDiceRoll = 0;
|
||||
}
|
||||
|
||||
switch( ubDiceRoll )
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
|
||||
ubQuoteNum = QUOTE_NEGATIVE_COMPANY;
|
||||
break;
|
||||
ubQuoteNum = QUOTE_SOCIAL_TRAIT;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
default:
|
||||
|
||||
if ( QuoteExp_PassingDislike[ pTSoldier->ubProfile ] )
|
||||
{
|
||||
ubQuoteNum = QUOTE_PASSING_DISLIKE;
|
||||
}
|
||||
else
|
||||
{
|
||||
ubQuoteNum = QUOTE_NEGATIVE_COMPANY;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
|
||||
ubQuoteNum = QUOTE_SOCIAL_TRAIT;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
ubQuoteNum = QUOTE_NEGATIVE_COMPANY;
|
||||
break;
|
||||
}
|
||||
|
||||
if ( pTSoldier->ubProfile == IRA )
|
||||
{
|
||||
ubQuoteNum = QUOTE_PASSING_DISLIKE;
|
||||
}
|
||||
|
||||
TacticalCharacterDialogue( pTSoldier, ubQuoteNum );
|
||||
|
||||
return( FALSE );
|
||||
ubQuoteNum = QUOTE_NEGATIVE_COMPANY;
|
||||
break;
|
||||
}
|
||||
|
||||
// Check distance
|
||||
uiRange = GetRangeFromGridNoDiff( pSoldier->sGridNo, usMapPos );
|
||||
|
||||
// Double check path
|
||||
if ( GetCivType( pTSoldier ) != CIV_TYPE_NA )
|
||||
if ( pTSoldier->ubProfile == IRA )
|
||||
{
|
||||
// ATE: If one is already active, just remove it!
|
||||
if ( ShutDownQuoteBoxIfActive( ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
ubQuoteNum = QUOTE_PASSING_DISLIKE;
|
||||
}
|
||||
|
||||
if ( uiRange > NPC_TALK_RADIUS )
|
||||
{
|
||||
// First get an adjacent gridno....
|
||||
sActionGridNo = FindAdjacentGridEx( pSoldier, pTSoldier->sGridNo, &ubDirection, NULL, FALSE, TRUE );
|
||||
|
||||
if ( sActionGridNo == -1 )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ NO_PATH ] );
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
if ( UIPlotPath( pSoldier, sActionGridNo, NO_COPYROUTE, FALSE, TEMPORARY, (UINT16)pSoldier->usUIMovementMode, NOT_STEALTH, FORWARD, pSoldier->bActionPoints ) == 0 )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ NO_PATH ] );
|
||||
return( FALSE );
|
||||
}
|
||||
TacticalCharacterDialogue( pTSoldier, ubQuoteNum );
|
||||
|
||||
// Walk up and talk to buddy....
|
||||
gfNPCCircularDistLimit = TRUE;
|
||||
sGoodGridNo = FindGridNoFromSweetSpotWithStructData( pSoldier, pSoldier->usUIMovementMode, pTSoldier->sGridNo, (NPC_TALK_RADIUS-1), &ubNewDirection, TRUE );
|
||||
gfNPCCircularDistLimit = FALSE;
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
// First calculate APs and validate...
|
||||
sAPCost = AP_TALK;
|
||||
//sAPCost += UIPlotPath( pSoldier, sGoodGridNo, NO_COPYROUTE, FALSE, TEMPORARY, (UINT16)pSoldier->usUIMovementMode, NOT_STEALTH, FORWARD, pSoldier->bActionPoints );
|
||||
// Check distance
|
||||
uiRange = GetRangeFromGridNoDiff( pSoldier->sGridNo, usMapPos );
|
||||
|
||||
// Check AP cost...
|
||||
if ( !EnoughPoints( pSoldier, sAPCost, 0, TRUE ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
// Now walkup to talk....
|
||||
pSoldier->ubPendingAction = MERC_TALK;
|
||||
pSoldier->uiPendingActionData1 = pTSoldier->ubID;
|
||||
pSoldier->ubPendingActionAnimCount = 0;
|
||||
|
||||
// WALK UP TO DEST FIRST
|
||||
EVENT_InternalGetNewSoldierPath( pSoldier, sGoodGridNo, pSoldier->usUIMovementMode , TRUE , pSoldier->fNoAPToFinishMove );
|
||||
|
||||
return( FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
sAPCost = AP_TALK;
|
||||
|
||||
// Check AP cost...
|
||||
if ( !EnoughPoints( pSoldier, sAPCost, 0, TRUE ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
// OK, startup!
|
||||
PlayerSoldierStartTalking( pSoldier, pTSoldier->ubID, FALSE );
|
||||
}
|
||||
|
||||
if ( GetCivType( pTSoldier ) != CIV_TYPE_NA )
|
||||
// Double check path
|
||||
if ( GetCivType( pTSoldier ) != CIV_TYPE_NA )
|
||||
{
|
||||
// ATE: If one is already active, just remove it!
|
||||
if ( ShutDownQuoteBoxIfActive( ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
//lal
|
||||
if ( pTSoldier->bTeam == MILITIA_TEAM )
|
||||
{
|
||||
commandRange = NPC_TALK_RADIUS*3;
|
||||
}
|
||||
else
|
||||
{
|
||||
commandRange = NPC_TALK_RADIUS;
|
||||
}
|
||||
|
||||
|
||||
if ( ( uiRange > commandRange ) && ( !CheckIfRadioIsEquipped() ) ) //lal
|
||||
{
|
||||
// First get an adjacent gridno....
|
||||
sActionGridNo = FindAdjacentGridEx( pSoldier, pTSoldier->sGridNo, &ubDirection, NULL, FALSE, TRUE );
|
||||
|
||||
if ( sActionGridNo == -1 )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ NO_PATH ] );
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
if ( UIPlotPath( pSoldier, sActionGridNo, NO_COPYROUTE, FALSE, TEMPORARY, (UINT16)pSoldier->usUIMovementMode, NOT_STEALTH, FORWARD, pSoldier->bActionPoints ) == 0 )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ NO_PATH ] );
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
// Walk up and talk to buddy....
|
||||
gfNPCCircularDistLimit = TRUE;
|
||||
sGoodGridNo = FindGridNoFromSweetSpotWithStructData( pSoldier, pSoldier->usUIMovementMode, pTSoldier->sGridNo, (NPC_TALK_RADIUS-1), &ubNewDirection, TRUE );
|
||||
gfNPCCircularDistLimit = FALSE;
|
||||
|
||||
// First calculate APs and validate...
|
||||
sAPCost = AP_TALK;
|
||||
//sAPCost += UIPlotPath( pSoldier, sGoodGridNo, NO_COPYROUTE, FALSE, TEMPORARY, (UINT16)pSoldier->usUIMovementMode, NOT_STEALTH, FORWARD, pSoldier->bActionPoints );
|
||||
|
||||
// Check AP cost...
|
||||
if ( !EnoughPoints( pSoldier, sAPCost, 0, TRUE ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
// Now walkup to talk....
|
||||
pSoldier->ubPendingAction = MERC_TALK;
|
||||
pSoldier->uiPendingActionData1 = pTSoldier->ubID;
|
||||
pSoldier->ubPendingActionAnimCount = 0;
|
||||
|
||||
// WALK UP TO DEST FIRST
|
||||
EVENT_InternalGetNewSoldierPath( pSoldier, sGoodGridNo, pSoldier->usUIMovementMode , TRUE , pSoldier->fNoAPToFinishMove );
|
||||
|
||||
return( FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
sAPCost = AP_TALK;
|
||||
|
||||
// Check AP cost...
|
||||
if ( !EnoughPoints( pSoldier, sAPCost, 0, TRUE ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
// OK, startup!
|
||||
PlayerSoldierStartTalking( pSoldier, pTSoldier->ubID, FALSE );
|
||||
}
|
||||
|
||||
if ( GetCivType( pTSoldier ) != CIV_TYPE_NA )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return( FALSE );
|
||||
|
||||
@@ -340,6 +340,7 @@ void GotoHeigherStance( SOLDIERTYPE *pSoldier );
|
||||
BOOLEAN IsValidJumpLocation( SOLDIERTYPE *pSoldier, INT16 sGridNo , BOOLEAN fCheckForPath);
|
||||
|
||||
void PopupAssignmentMenuInTactical( SOLDIERTYPE *pSoldier );
|
||||
void PopupMilitiaControlMenu( SOLDIERTYPE *pSoldier ); //lal
|
||||
|
||||
void PreventFromTheFreezingBug(SOLDIERTYPE* pSoldier);
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@ BOOLEAN gfPausedTacticalRenderFlags = FALSE;
|
||||
|
||||
// which assignment menu can be shown?
|
||||
extern void DetermineWhichAssignmentMenusCanBeShown( void );
|
||||
extern void DetermineWhichMilitiaControlMenusCanBeShown( void ); //lal
|
||||
extern void HandleAnyMercInSquadHasCompatibleStuff( UINT8 ubSquad, OBJECTTYPE *pObject, BOOLEAN fReset );
|
||||
extern BOOLEAN RemoveFlashItemSlot( ITEM_POOL *pItemPool );
|
||||
|
||||
@@ -346,6 +347,10 @@ void ResetInterface( )
|
||||
DetermineWhichAssignmentMenusCanBeShown();
|
||||
CreateDestroyAssignmentPopUpBoxes( );
|
||||
|
||||
DetermineWhichMilitiaControlMenusCanBeShown( ); //lal
|
||||
CreateDestroyMilitiaControlPopUpBoxes( );
|
||||
|
||||
|
||||
HideUICursor( );
|
||||
|
||||
ResetPhysicsTrajectoryUI( );
|
||||
|
||||
+1969
-1
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,11 @@
|
||||
#ifndef __MILITIA_CONTROL_H
|
||||
#define __MILITIA_CONTROL_H
|
||||
|
||||
#include "Types.h"
|
||||
#include "Soldier Control.h"
|
||||
#include "mousesystem.h"
|
||||
#include "Strategic Movement.h"
|
||||
|
||||
void PrepareMilitiaForTactical();
|
||||
void RemoveMilitiaFromTactical();
|
||||
void ResetMilitia();
|
||||
@@ -8,4 +13,19 @@ void HandleMilitiaPromotions();
|
||||
|
||||
extern BOOLEAN gfStrategicMilitiaChangesMade;
|
||||
|
||||
extern INT32 ghMilitiaControlBox;
|
||||
//extern INT32 ghTalkToAllBox;
|
||||
|
||||
extern BOOLEAN fFirstClickInMilitiaControlScreenMask;
|
||||
|
||||
// figure out the assignment menu pop up box positions
|
||||
void DetermineMilitiaControlBoxPositions( void );
|
||||
|
||||
// set x,y position in tactical
|
||||
void SetTacticalPopUpMilitiaControlBoxXY( SOLDIERTYPE *pSoldier );
|
||||
|
||||
BOOLEAN CreateDestroyMilitiaControlPopUpBoxes( void );
|
||||
|
||||
BOOLEAN CheckIfRadioIsEquipped( void );
|
||||
|
||||
#endif
|
||||
+2
-2
@@ -151,7 +151,7 @@ BOOLEAN IsItAllowedToRenderRain()
|
||||
{
|
||||
if( !gfAllowRain )return FALSE;
|
||||
|
||||
if( !( guiEnvWeather & WEATHER_FORECAST_THUNDERSHOWERS | WEATHER_FORECAST_SHOWERS ) )return FALSE;
|
||||
if( !( guiEnvWeather & (WEATHER_FORECAST_THUNDERSHOWERS | WEATHER_FORECAST_SHOWERS) ) )return FALSE;
|
||||
|
||||
if( guiCurrentScreen != GAME_SCREEN && guiCurrentScreen != SHOPKEEPER_SCREEN ) return FALSE;
|
||||
|
||||
@@ -198,7 +198,7 @@ void ResetRain()
|
||||
|
||||
void GenerateRainDropsList()
|
||||
{
|
||||
guiCurrMaxAmountOfRainDrops = (UINT32)(BASE_MAXIMUM_DROPS * gbCurrentRainIntensity);
|
||||
guiCurrMaxAmountOfRainDrops = (UINT32)BASE_MAXIMUM_DROPS * gbCurrentRainIntensity;
|
||||
|
||||
pRainDrops = (TRainDrop *)MemAlloc( sizeof( TRainDrop ) * guiCurrMaxAmountOfRainDrops );
|
||||
memset( pRainDrops, 0, sizeof( TRainDrop ) * guiCurrMaxAmountOfRainDrops );
|
||||
|
||||
@@ -70,6 +70,7 @@ extern BOOLEAN fIgnoreLeftUp;
|
||||
extern UINT32 guiCurrentEvent;
|
||||
extern UINT32 guiCurrentUICursor;
|
||||
extern void DetermineWhichAssignmentMenusCanBeShown( void );
|
||||
extern void DetermineWhichMilitiaControlMenusCanBeShown( void );
|
||||
extern BOOLEAN gfIgnoreOnSelectedGuy;
|
||||
extern INT16 gsOverItemsGridNo;
|
||||
extern INT16 gsOverItemsLevel;
|
||||
@@ -1023,34 +1024,38 @@ void QueryRTRightButton( UINT32 *puiNewEvent )
|
||||
case TALKCURSOR_MODE:
|
||||
case MOVE_MODE:
|
||||
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
if ( ( guiUIFullTargetFlags & OWNED_MERC ) && ( guiUIFullTargetFlags & VISIBLE_MERC ) && !( guiUIFullTargetFlags & DEAD_MERC )&&!( pSoldier ? pSoldier->uiStatusFlags & SOLDIER_VEHICLE : 0 ) )
|
||||
{
|
||||
//if( pSoldier->bAssignment >= ON_DUTY )
|
||||
{
|
||||
PopupAssignmentMenuInTactical( pSoldier );
|
||||
fClickHoldIntercepted = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
fShowAssignmentMenu = FALSE;
|
||||
CreateDestroyAssignmentPopUpBoxes( );
|
||||
DetermineWhichAssignmentMenusCanBeShown( );
|
||||
}
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
if ( ( guiUIFullTargetFlags & OWNED_MERC ) && ( guiUIFullTargetFlags & VISIBLE_MERC ) && !( guiUIFullTargetFlags & DEAD_MERC )&&!( pSoldier ? pSoldier->uiStatusFlags & SOLDIER_VEHICLE : 0 ) )
|
||||
{
|
||||
//if( pSoldier->bAssignment >= ON_DUTY )
|
||||
{
|
||||
PopupAssignmentMenuInTactical( pSoldier );
|
||||
fClickHoldIntercepted = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
fShowAssignmentMenu = FALSE;
|
||||
CreateDestroyAssignmentPopUpBoxes( );
|
||||
DetermineWhichAssignmentMenusCanBeShown( );
|
||||
|
||||
fShowMilitiaControlMenu = FALSE;
|
||||
CreateDestroyMilitiaControlPopUpBoxes( );
|
||||
DetermineWhichMilitiaControlMenusCanBeShown( );
|
||||
}
|
||||
|
||||
// ATE:
|
||||
if ( !fClickHoldIntercepted )
|
||||
{
|
||||
*puiNewEvent = U_MOVEMENT_MENU;
|
||||
fClickHoldIntercepted = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// ATE:
|
||||
if ( !fClickHoldIntercepted )
|
||||
{
|
||||
*puiNewEvent = U_MOVEMENT_MENU;
|
||||
fClickHoldIntercepted = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( gCurrentUIMode == ACTION_MODE || gCurrentUIMode == TALKCURSOR_MODE )
|
||||
{
|
||||
PauseRT( FALSE );
|
||||
|
||||
@@ -93,6 +93,8 @@ UINT8 gubMilitiaTurnSpeedUpFactor = 1;
|
||||
UINT8 gubCivTurnSpeedUpFactor = 1;
|
||||
//turnspeed
|
||||
|
||||
extern BOOLEAN fAllowTacticalMilitiaCommand; //lal
|
||||
|
||||
extern INT16 DirIncrementer[8];
|
||||
|
||||
#define PALETTEFILENAME "BINARYDATA\\ja2pal.dat"
|
||||
@@ -10755,6 +10757,7 @@ void MercStealFromMerc( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pTarget )
|
||||
}
|
||||
}
|
||||
|
||||
SOLDIERTYPE *pTMilitiaSoldier;
|
||||
BOOLEAN PlayerSoldierStartTalking( SOLDIERTYPE *pSoldier, UINT8 ubTargetID, BOOLEAN fValidate )
|
||||
{
|
||||
INT16 sFacingDir, sXPos, sYPos, sAPCost;
|
||||
@@ -10795,28 +10798,45 @@ BOOLEAN PlayerSoldierStartTalking( SOLDIERTYPE *pSoldier, UINT8 ubTargetID, BOOL
|
||||
// Deduct points from our guy....
|
||||
DeductPoints( pSoldier, sAPCost, 0 );
|
||||
|
||||
ConvertGridNoToXY( pTSoldier->sGridNo, &sXPos, &sYPos );
|
||||
if ( !(gTacticalStatus.uiFlags & INCOMBAT) || (gTacticalStatus.uiFlags & REALTIME) ) //lal
|
||||
{
|
||||
ConvertGridNoToXY( pTSoldier->sGridNo, &sXPos, &sYPos );
|
||||
|
||||
// Get direction from mouse pos
|
||||
sFacingDir = GetDirectionFromXY( sXPos, sYPos, pSoldier );
|
||||
// Get direction from mouse pos
|
||||
sFacingDir = GetDirectionFromXY( sXPos, sYPos, pSoldier );
|
||||
|
||||
// Set our guy facing
|
||||
SendSoldierSetDesiredDirectionEvent( pSoldier, sFacingDir );
|
||||
// Set our guy facing
|
||||
SendSoldierSetDesiredDirectionEvent( pSoldier, sFacingDir );
|
||||
|
||||
// Set NPC facing
|
||||
SendSoldierSetDesiredDirectionEvent( pTSoldier, gOppositeDirection[ sFacingDir ] );
|
||||
|
||||
// Stop our guys...
|
||||
EVENT_StopMerc( pSoldier, pSoldier->sGridNo, pSoldier->bDirection );
|
||||
// Set NPC facing
|
||||
SendSoldierSetDesiredDirectionEvent( pTSoldier, gOppositeDirection[ sFacingDir ] );
|
||||
|
||||
// Stop our guys...
|
||||
EVENT_StopMerc( pSoldier, pSoldier->sGridNo, pSoldier->bDirection );
|
||||
}
|
||||
|
||||
pTMilitiaSoldier = pTSoldier; //lal
|
||||
|
||||
//lal
|
||||
// ATE; Check for normal civs...
|
||||
if ( GetCivType( pTSoldier ) != CIV_TYPE_NA )
|
||||
{
|
||||
StartCivQuote( pTSoldier );
|
||||
return( FALSE );
|
||||
//lal
|
||||
if ( ( pTSoldier->bTeam == MILITIA_TEAM ) && ( fAllowTacticalMilitiaCommand == TRUE ) )
|
||||
{
|
||||
PopupMilitiaControlMenu( pTSoldier );
|
||||
return( FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
StartCivQuote( pTSoldier );
|
||||
return( FALSE );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Are we an EPC that is being escorted?
|
||||
if ( pTSoldier->ubProfile != NO_PROFILE && pTSoldier->ubWhatKindOfMercAmI == MERC_TYPE__EPC )
|
||||
{
|
||||
|
||||
@@ -227,6 +227,7 @@ UINT8 gubCheatLevel = STARTING_CHEAT_LEVEL;
|
||||
|
||||
|
||||
extern void DetermineWhichAssignmentMenusCanBeShown( void );
|
||||
extern void DetermineWhichMilitiaControlMenusCanBeShown( void ); //lal
|
||||
|
||||
void GetTBMouseButtonInput( UINT32 *puiNewEvent )
|
||||
{
|
||||
@@ -4985,3 +4986,16 @@ void PopupAssignmentMenuInTactical( SOLDIERTYPE *pSoldier )
|
||||
fFirstClickInAssignmentScreenMask = TRUE;
|
||||
gfIgnoreScrolling = TRUE;
|
||||
}
|
||||
|
||||
//lal
|
||||
void PopupMilitiaControlMenu( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
// do something
|
||||
fShowMilitiaControlMenu = TRUE;
|
||||
CreateDestroyMilitiaControlPopUpBoxes( );
|
||||
SetTacticalPopUpMilitiaControlBoxXY( pSoldier );
|
||||
DetermineMilitiaControlBoxPositions();
|
||||
DetermineWhichMilitiaControlMenusCanBeShown( );
|
||||
fFirstClickInMilitiaControlScreenMask = TRUE;
|
||||
gfIgnoreScrolling = TRUE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user