Updates / Fixes by Arynn

- Fixed: Mercs randomly drop aimed weapons automatically under some weird circumstances 
- Fixed: Merc are now a little more "talkactive"
- Update: New option screen with "Next" and "Prev" button. This allows "unlimited" of options in the option screen
- New: New "Forced turn base mode" option in the option screen and also available via keyboard shortcut (CTRL+ALT+SHIFT+T) in tactical.
This forces the game to go in turn based mode when there are enemies in the sector.

INFO: There is a new STI Graphic (OPTIONSCREENADDONS2.sti) which is needed for the updated option screen.
You can download the file from http://ja2.h758491.serverkompetenz.net/Wanne/NewOptionScreen/OPTIONSCREENADDONS2.sti
Put this file in your Data\Interface folder. If I build a new release I will upload the file to SVN GameDir and then remove it from my private download folder.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@2610 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2009-02-28 09:16:25 +00:00
parent a64a66bdf3
commit c4e483539f
18 changed files with 619 additions and 278 deletions
+17 -4
View File
@@ -1901,7 +1901,7 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
//else
if ( pSoldier->EVENT_InternalGetNewSoldierPath( sMapPos, pSoldier->usUIMovementMode, TRUE, FALSE ) )
{
pSoldier->InternalSoldierReadyWeapon( BATTLE_SOUND_OK1, BATTLE_SND_LOWER_VOLUME );
pSoldier->InternalDoMercBattleSound( BATTLE_SOUND_OK1, BATTLE_SND_LOWER_VOLUME );
}
else
{
@@ -4703,7 +4703,20 @@ BOOLEAN MakeSoldierTurn( SOLDIERTYPE *pSoldier, INT16 sXPos, INT16 sYPos )
// ATE: make stationary if...
if ( pSoldier->flags.fNoAPToFinishMove )
{
pSoldier->SoldierGotoStationaryStance( );
// arynn : fix lower ready weapons
//previously "ready weapon" state was being dropped in a couple of cases
//the fix involves bypassing the reset animation state for the various "ready weapon" types
//since this is a reset animation function, we should be VERY specific about when and what we dont reset
UINT16 test;
test = pSoldier->usAnimState;
if (!( test == AIM_RIFLE_STAND || test == AIM_RIFLE_CROUCH ||
test == AIM_RIFLE_PRONE || test == AIM_DUAL_STAND ||
test == AIM_DUAL_CROUCH || test == AIM_DUAL_PRONE
))
{
pSoldier->SoldierGotoStationaryStance( );
}// arynn : fix lower ready weapon end_if
}
//DEF: made it an event
@@ -5100,7 +5113,7 @@ void EndMultiSoldierSelection( BOOLEAN fAcknowledge )
}
if( !gGameSettings.fOptions[ TOPTION_MUTE_CONFIRMATIONS ] && fAcknowledge )
pSoldier->InternalSoldierReadyWeapon( BATTLE_SOUND_ATTN1, BATTLE_SND_LOWER_VOLUME );
pSoldier->InternalDoMercBattleSound( BATTLE_SOUND_ATTN1, BATTLE_SND_LOWER_VOLUME );
if ( pSoldier->flags.fMercAsleep )
{
@@ -5227,7 +5240,7 @@ BOOLEAN HandleMultiSelectionMove( INT16 sDestGridNo )
if ( pSoldier->EVENT_InternalGetNewSoldierPath( sDestGridNo, pSoldier->usUIMovementMode , TRUE, pSoldier->flags.fNoAPToFinishMove ) )
{
pSoldier->InternalSoldierReadyWeapon( BATTLE_SOUND_OK1, BATTLE_SND_LOWER_VOLUME );
pSoldier->InternalDoMercBattleSound( BATTLE_SOUND_OK1, BATTLE_SND_LOWER_VOLUME );
}
else
{
+19 -2
View File
@@ -5729,6 +5729,8 @@ void ExitCombatMode( )
EndTopMessage( );
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Exit combat mode");// arynn : add forced turn mode
// OK, we have exited combat mode.....
// Reset some flags for no aps to move, etc
@@ -5746,7 +5748,21 @@ void ExitCombatMode( )
if ( pSoldier->flags.fNoAPToFinishMove && pSoldier->stats.bLife >= OKLIFE )
{
pSoldier->AdjustNoAPToFinishMove( FALSE );
pSoldier->SoldierGotoStationaryStance( );
// arynn : fix lower ready weapons
//previously "ready weapon" state was being dropped in a couple of cases
//the fix involves bypassing the reset animation state for the various "ready weapon" types
//since this is a reset animation function, we should be VERY specific about when and what we dont reset
UINT16 test;
test = pSoldier->usAnimState;
if (!( test == AIM_RIFLE_STAND || test == AIM_RIFLE_CROUCH ||
test == AIM_RIFLE_PRONE || test == AIM_DUAL_STAND ||
test == AIM_DUAL_CROUCH || test == AIM_DUAL_PRONE
))
{
pSoldier->SoldierGotoStationaryStance( );
}// arynn : fix lower ready weapon end_if
}
//Cancel pending events
@@ -6082,7 +6098,8 @@ BOOLEAN CheckForEndOfCombatMode( BOOLEAN fIncrementTurnsNotSeen )
gTacticalStatus.bConsNumTurnsWeHaventSeenButEnemyDoes = 0;
// If we have reach a point where a cons. number of turns gone by....
if ( gTacticalStatus.bConsNumTurnsNotSeen > 1 )
//if ( gTacticalStatus.bConsNumTurnsNotSeen > 1 )
if ( gTacticalStatus.bConsNumTurnsNotSeen > 1 && !gGameSettings.fOptions[ TOPTION_TOGGLE_TURN_MODE ])// arynn : add forced turn mode
{
if(is_networked && !getReal)//hayden
+19 -6
View File
@@ -23,6 +23,10 @@
#include "Exit Grids.h"
#endif
#include "GameSettings.h" // arynn : add forced turn mode
#include "font control.h" // arynn : add forced turn mode
#include "message.h" // arynn : add forced turn mode
#include "connect.h"
//forward declarations of common classes to eliminate includes
class OBJECTTYPE;
@@ -1522,12 +1526,21 @@ void AddSoldierToSectorGridNo( SOLDIERTYPE *pSoldier, INT16 sGridNo, UINT8 ubDir
// If he's an enemy... set presence
if ( !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum ) )
{
// ATE: Added if not bloodcats
// only do this once they are seen.....
if ( pSoldier->ubBodyType != BLOODCAT )
{
SetEnemyPresence( );
}
// ATE: Added if not bloodcats
// only do this once they are seen.....
if ( pSoldier->ubBodyType != BLOODCAT )
{
SetEnemyPresence( );
// arynn : add forced turn mode : note not for bloodcats..
if ( gGameSettings.fOptions[ TOPTION_TOGGLE_TURN_MODE ])
{
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Forced Turn Mode Active, Entering Combat" );
if( Random( 100 ) >= Random( 100 ) ) // give a chance for either to go first
EnterCombatMode( OUR_TEAM );
else
EnterCombatMode( ENEMY_TEAM );
}// arynn : add forced turn mode
}
}
}
+25 -4
View File
@@ -205,6 +205,7 @@ void ToggleWireFrame();
void RefreshSoldier();
void ChangeSoldiersBodyType( UINT8 ubBodyType, BOOLEAN fCreateNewPalette );
void TeleportSelectedSoldier();
void ToggleTurnMode();// arynn : add forced turn mode
void ToggleTreeTops();
void ToggleZBuffer();
void TogglePlanningMode();
@@ -3662,9 +3663,16 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
ToggleTreeTops();
break;
case 'T':
//resort Team by ubID
SortSquadByID(MercPtrs[gusSelectedSoldier]->bTeam);
case 'T':
if ( fCtrl && fShift && fAlt && !is_networked)// arynn : add forced turn mode
{
ToggleTurnMode();
}
else
{
//resort Team by ubID
SortSquadByID(MercPtrs[gusSelectedSoldier]->bTeam);
}
break;
case '=':
@@ -4519,7 +4527,20 @@ void TeleportSelectedSoldier()
}
}
void ToggleTurnMode()// arynn : add forced turn mode
{
if ( !gGameSettings.fOptions[ TOPTION_TOGGLE_TURN_MODE ] )
{
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Forced Turn Mode" );
gGameSettings.fOptions[ TOPTION_TOGGLE_TURN_MODE ] = TRUE;
EnterCombatMode( OUR_TEAM ); // arynn : randomize ? i'm leaving this for now due to "i made the call, i get dibs"
}
else
{
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Normal turn mode");
gGameSettings.fOptions[ TOPTION_TOGGLE_TURN_MODE ] = FALSE;
}
}// arynn : add forced turn mode
void ToggleTreeTops()
{