mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
- bugfix mp: fixed up coop
- bugfix mp: fixed bobby rays code my end git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@2158 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+97
-133
@@ -153,25 +153,8 @@ typedef struct
|
||||
|
||||
SOLDIERCREATE_STRUCT standard_data;
|
||||
|
||||
OBJECTTYPE slot0;
|
||||
OBJECTTYPE slot1;
|
||||
OBJECTTYPE slot2;
|
||||
OBJECTTYPE slot3;
|
||||
OBJECTTYPE slot4;
|
||||
OBJECTTYPE slot5;
|
||||
OBJECTTYPE slot6;
|
||||
OBJECTTYPE slot7;
|
||||
OBJECTTYPE slot8;
|
||||
OBJECTTYPE slot9;
|
||||
OBJECTTYPE slot10;
|
||||
OBJECTTYPE slot11;
|
||||
OBJECTTYPE slot12;
|
||||
OBJECTTYPE slot13;
|
||||
OBJECTTYPE slot14;
|
||||
OBJECTTYPE slot15;
|
||||
OBJECTTYPE slot16;
|
||||
OBJECTTYPE slot17;
|
||||
OBJECTTYPE slot18;
|
||||
OBJECTTYPE slot[55];
|
||||
|
||||
} AI_STRUCT;
|
||||
|
||||
typedef struct
|
||||
@@ -368,19 +351,7 @@ void recievePATH(RPCParameters *rpcParameters)
|
||||
|
||||
}
|
||||
|
||||
pSoldier->EVENT_InitNewSoldierAnim( SNetPath->ubNewState, 0, FALSE );
|
||||
/* if(SNetPath->ubNewState !=255 )
|
||||
{
|
||||
EVENT_InitNewSoldierAnim( pSoldier, SNetPath->ubNewState, 0, FALSE );
|
||||
|
||||
}*/
|
||||
////ScreenMsg( FONT_LTGREEN, MSG_CHAT, L"state: %d",SNetPath->ubNewState );
|
||||
|
||||
//if(pSoldier->flags.fIsSoldierDelayed==FALSE)
|
||||
//{
|
||||
// pSoldier->flags.fIsSoldierDelayed=TRUE;
|
||||
// request_ovh(pSoldier->ubID);
|
||||
//}
|
||||
if(pSoldier)pSoldier->EVENT_InitNewSoldierAnim( SNetPath->ubNewState, 0, FALSE );
|
||||
|
||||
|
||||
}
|
||||
@@ -791,6 +762,7 @@ void send_EndTurn( UINT8 ubNextTeam )
|
||||
|
||||
tStruct.tsnetbTeam = netbTeam;
|
||||
tStruct.tsubNextTeam = ubNextTeam;
|
||||
|
||||
|
||||
client->RPC("sendEndTurn",(const char*)&tStruct, (int)sizeof(turn_struct)*8, HIGH_PRIORITY, RELIABLE, 0, UNASSIGNED_SYSTEM_ADDRESS, true, 0, UNASSIGNED_NETWORK_ID,0);
|
||||
}
|
||||
@@ -864,25 +836,12 @@ void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID )
|
||||
|
||||
send_inv.standard_data = *pCreateStruct;
|
||||
|
||||
send_inv.slot0 = pCreateStruct->Inv[ 0 ];
|
||||
send_inv.slot1 = pCreateStruct->Inv[ 1 ];
|
||||
send_inv.slot2 = pCreateStruct->Inv[ 2];
|
||||
send_inv.slot3 = pCreateStruct->Inv[ 3 ];
|
||||
send_inv.slot4 = pCreateStruct->Inv[ 4 ];
|
||||
send_inv.slot5 = pCreateStruct->Inv[ 5 ];
|
||||
send_inv.slot6 = pCreateStruct->Inv[ 6 ];
|
||||
send_inv.slot7 = pCreateStruct->Inv[ 7 ];
|
||||
send_inv.slot8 = pCreateStruct->Inv[ 8 ];
|
||||
send_inv.slot9 = pCreateStruct->Inv[ 9 ];
|
||||
send_inv.slot10 = pCreateStruct->Inv[ 10 ];
|
||||
send_inv.slot11 = pCreateStruct->Inv[ 11 ];
|
||||
send_inv.slot12 = pCreateStruct->Inv[ 12 ];
|
||||
send_inv.slot13 = pCreateStruct->Inv[ 13 ];
|
||||
send_inv.slot14 = pCreateStruct->Inv[ 14 ];
|
||||
send_inv.slot15 = pCreateStruct->Inv[ 15 ];
|
||||
send_inv.slot16 = pCreateStruct->Inv[ 16 ];
|
||||
send_inv.slot17 = pCreateStruct->Inv[ 17 ];
|
||||
send_inv.slot18 = pCreateStruct->Inv[ 18 ];
|
||||
|
||||
|
||||
for(int x=0;x<55;x++)
|
||||
{
|
||||
send_inv.slot[x] = pCreateStruct->Inv[x];
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -954,25 +913,16 @@ void recieveAI (RPCParameters *rpcParameters)
|
||||
memcpy( new_standard_data.VestPal , send_inv->standard_data.VestPal, sizeof( PaletteRepID ));
|
||||
|
||||
|
||||
new_standard_data.Inv[0] = send_inv->slot0;
|
||||
new_standard_data.Inv[1] = send_inv->slot1;
|
||||
new_standard_data.Inv[2] = send_inv->slot2;
|
||||
new_standard_data.Inv[3] = send_inv->slot3;
|
||||
new_standard_data.Inv[4] = send_inv->slot4;
|
||||
new_standard_data.Inv[5] = send_inv->slot5;
|
||||
new_standard_data.Inv[6] = send_inv->slot6;
|
||||
new_standard_data.Inv[7] = send_inv->slot7;
|
||||
new_standard_data.Inv[8] = send_inv->slot8;
|
||||
new_standard_data.Inv[9] = send_inv->slot9;
|
||||
new_standard_data.Inv[10] = send_inv->slot10;
|
||||
new_standard_data.Inv[11] = send_inv->slot11;
|
||||
new_standard_data.Inv[12] = send_inv->slot12;
|
||||
new_standard_data.Inv[13] = send_inv->slot13;
|
||||
new_standard_data.Inv[14] = send_inv->slot14;
|
||||
new_standard_data.Inv[15] = send_inv->slot15;
|
||||
new_standard_data.Inv[16] = send_inv->slot16;
|
||||
new_standard_data.Inv[17] = send_inv->slot17;
|
||||
new_standard_data.Inv[18] = send_inv->slot18;
|
||||
for(int x=0;x<55;x++)
|
||||
{
|
||||
//OBJECTTYPE Object;
|
||||
//new_standard_data.Inv[x]
|
||||
|
||||
//new_standard_data.Inv[x].fFlags = send_inv->slot[x].fFlags;
|
||||
if(send_inv->slot[x].usItem != 0)CreateItems( send_inv->slot[x].usItem, 100, send_inv->slot[x].ubNumberOfObjects, &new_standard_data.Inv[x] );
|
||||
//new_standard_data.Inv[x] = Object;
|
||||
}
|
||||
|
||||
|
||||
new_standard_data.fPlayerPlan=1;
|
||||
|
||||
@@ -1339,10 +1289,10 @@ void DropOffItemsInSector( UINT8 ubOrderNum )
|
||||
if( !fSectorLoaded )
|
||||
{
|
||||
//build an array of objects to be added
|
||||
pObject = (OBJECTTYPE *) MemAlloc( sizeof( OBJECTTYPE ) * usNumberOfItems );
|
||||
pObject = new OBJECTTYPE[ usNumberOfItems ];
|
||||
if( pObject == NULL )
|
||||
return;
|
||||
memset( pObject, 0, sizeof( OBJECTTYPE ) * usNumberOfItems );
|
||||
/*memset( pObject, 0, sizeof( OBJECTTYPE ) * usNumberOfItems );*/
|
||||
}
|
||||
|
||||
|
||||
@@ -1367,7 +1317,8 @@ void DropOffItemsInSector( UINT8 ubOrderNum )
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy( &pObject[ uiCount ], &Object, sizeof( OBJECTTYPE ) );
|
||||
pObject[ uiCount ] = Object;
|
||||
//memcpy( &pObject[ uiCount ], &Object, sizeof( OBJECTTYPE ) );//fixed for NIV
|
||||
uiCount++;
|
||||
}
|
||||
|
||||
@@ -1386,7 +1337,7 @@ void DropOffItemsInSector( UINT8 ubOrderNum )
|
||||
//error
|
||||
Assert( 0 );
|
||||
}
|
||||
MemFree( pObject );
|
||||
delete[] pObject ;
|
||||
pObject = NULL;
|
||||
}
|
||||
|
||||
@@ -2068,8 +2019,8 @@ void send_death( SOLDIERTYPE *pSoldier )
|
||||
if(pS_bTeam>5)pS_bTeam=pS_bTeam-5;
|
||||
if(pS_bTeam==0)pS_bTeam=CLIENT_NUM;
|
||||
}
|
||||
|
||||
ScreenMsg( FONT_LTGREEN, MSG_CHAT, MPClientMessage[28],pS_name,(pS_bTeam),client_names[(pS_bTeam-1)],pA_name,(pA_bTeam),client_names[(pA_bTeam-1)] );
|
||||
if (pSoldier->bTeam==1) ScreenMsg( FONT_YELLOW, MSG_CHAT, L"You Killed An Enemy AI");
|
||||
else ScreenMsg( FONT_LTGREEN, MSG_CHAT, MPClientMessage[28],pS_name,(pS_bTeam),client_names[(pS_bTeam-1)],pA_name,(pA_bTeam),client_names[(pA_bTeam-1)] );
|
||||
//ScreenMsg( FONT_LTGREEN, MSG_CHAT, MPClientMessage[28],(pS_bTeam), pS_name,client_names[(pS_bTeam-1)],pA_name,(pA_bTeam),client_names[(pA_bTeam-1)] );
|
||||
|
||||
}
|
||||
@@ -2113,13 +2064,20 @@ void recieveDEATH (RPCParameters *rpcParameters)
|
||||
pSoldier->usAnimState=50;
|
||||
ScreenMsg( FONT_YELLOW, MSG_CHAT, L"made merc corpse/dead");
|
||||
TurnSoldierIntoCorpse( pSoldier, TRUE, TRUE );
|
||||
ScreenMsg( FONT_LTGREEN, MSG_CHAT, MPClientMessage[28],pS_name,(pS_bTeam),client_names[(pS_bTeam-1)],pA_name,(pA_bTeam),client_names[(pA_bTeam-1)] );
|
||||
if ( CheckForEndOfBattle( FALSE ) )
|
||||
{
|
||||
ScreenMsg( FONT_LTGREEN, MSG_CHAT, L"All over red rover...");
|
||||
}
|
||||
if (pSoldier->bTeam==1) ScreenMsg( FONT_YELLOW, MSG_CHAT, L"An Enemy AI was killed...");
|
||||
else ScreenMsg( FONT_LTGREEN, MSG_CHAT, MPClientMessage[28],pS_name,(pS_bTeam),client_names[(pS_bTeam-1)],pA_name,(pA_bTeam),client_names[(pA_bTeam-1)] );
|
||||
//ScreenMsg( FONT_LTGREEN, MSG_CHAT, MPClientMessage[28],(pS_bTeam),pS_name,client_names[(pS_bTeam-1)],pA_name,(pA_bTeam),client_names[(pA_bTeam-1)] );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ScreenMsg( FONT_YELLOW, MSG_CHAT, L"merc allready corpse/dead");
|
||||
if (pSoldier->bTeam==1) ScreenMsg( FONT_YELLOW, MSG_CHAT, L"An Enemy AI was killed...");
|
||||
CheckForEndOfBattle( FALSE );
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2200,45 +2158,45 @@ void cheat_func(void)
|
||||
}
|
||||
}
|
||||
|
||||
//void start_tt(void)
|
||||
//{
|
||||
// if(is_server)
|
||||
// {
|
||||
// ScreenMsg( FONT_YELLOW, MSG_CHAT, L"manually starting turnbased mode...");
|
||||
//
|
||||
// gTacticalStatus.uiFlags |= INCOMBAT;
|
||||
// EndTurn (START_TEAM_TURN);
|
||||
// }
|
||||
//
|
||||
//}
|
||||
BOOLEAN check_status (void)// any 'enemies' and clients left to fight ??
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
int cnt;
|
||||
int soldiers= 0 ;
|
||||
|
||||
|
||||
//void unlock (void)
|
||||
//{
|
||||
//
|
||||
// ScreenMsg( FONT_YELLOW, MSG_CHAT, L"unlocking ui...");
|
||||
// guiPendingOverrideEvent = LU_ENDUILOCK;
|
||||
// guiPendingOverrideEvent = LA_ENDUIOUTURNLOCK;
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
||||
//void request_ovh(UINT8 ubID)
|
||||
//{
|
||||
// ovh_struct rOvh;
|
||||
// rOvh.clnum=atoi (CLIENT_NUM);
|
||||
// rOvh.ubid=ubID;
|
||||
// if(ubID < 20)rOvh.ubid=ubID+ubID_prefix;
|
||||
// ++tcount;
|
||||
//
|
||||
// SOLDIERTYPE *pSoldier = MercPtrs[ ubID ];
|
||||
// //ScreenMsg( FONT_LTBLUE, MSG_CHAT, L"requesting: %d",pSoldier->sGridNo );
|
||||
//
|
||||
// //ScreenMsg( FONT_YELLOW, MSG_CHAT, L"center: %d",tcount);
|
||||
// if(tcount==10)tcount=0;
|
||||
//
|
||||
// client->RPC("rOVH",(const char*)&rOvh, (int)sizeof(ovh_struct)*8, HIGH_PRIORITY, RELIABLE, 0, UNASSIGNED_SYSTEM_ADDRESS, true, 0, UNASSIGNED_NETWORK_ID,0);
|
||||
//
|
||||
//}
|
||||
for(int x=0;x < MAXTEAMS; x++)
|
||||
{
|
||||
|
||||
for(cnt = gTacticalStatus.Team[ x ].bFirstID;cnt <= gTacticalStatus.Team[ x ].bLastID; cnt++)
|
||||
{
|
||||
pSoldier = MercPtrs[ cnt ];
|
||||
if(pSoldier->stats.bLife!=0 && pSoldier->bActive && pSoldier->bInSector)
|
||||
{
|
||||
soldiers++;
|
||||
}
|
||||
}
|
||||
if(soldiers>0)
|
||||
{
|
||||
gTacticalStatus.Team[ x ].bTeamActive=1;
|
||||
gTacticalStatus.Team[x].bMenInSector=soldiers;
|
||||
|
||||
soldiers=0 ;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
gTacticalStatus.Team[ x ].bTeamActive=0;
|
||||
gTacticalStatus.Team[x].bMenInSector=0;
|
||||
}
|
||||
}
|
||||
if((gTacticalStatus.Team[ 0 ].bTeamActive==1 || gTacticalStatus.Team[ 6 ].bTeamActive==1 || gTacticalStatus.Team[ 7 ].bTeamActive==1 || gTacticalStatus.Team[ 0 ].bTeamActive==1 || gTacticalStatus.Team[ 9 ].bTeamActive==1 )&& NumEnemyInSector() > 0)return(TRUE);
|
||||
else return(FALSE);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
void UpdateSoldierToNetwork ( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
@@ -2252,7 +2210,7 @@ void UpdateSoldierToNetwork ( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
pSoldier->usLastUpdateTime = time;
|
||||
}
|
||||
if((time - (pSoldier->usLastUpdateTime)) > 2000)
|
||||
if((time - (pSoldier->usLastUpdateTime)) > 2000 && pSoldier->stats.bLife!=0)
|
||||
{
|
||||
pSoldier->usLastUpdateTime = time;
|
||||
//ScreenMsg( FONT_LTBLUE, MSG_CHAT, L"update: %d ",time );
|
||||
@@ -2269,7 +2227,7 @@ void UpdateSoldierToNetwork ( SOLDIERTYPE *pSoldier )
|
||||
SUpdateNetworkSoldier.bBleeding=pSoldier->bBleeding;
|
||||
SUpdateNetworkSoldier.ubDirection=pSoldier->ubDirection;
|
||||
|
||||
if((gTacticalStatus.ubTopMessageType == PLAYER_TURN_MESSAGE || gTacticalStatus.ubTopMessageType == PLAYER_INTERRUPT_MESSAGE) && (gTacticalStatus.uiFlags & TURNBASED) && (gTacticalStatus.uiFlags & INCOMBAT))//update progress bar, not supporting coop yet...
|
||||
if((gTacticalStatus.ubTopMessageType == PLAYER_TURN_MESSAGE || gTacticalStatus.ubTopMessageType == PLAYER_INTERRUPT_MESSAGE || ((gTacticalStatus.ubTopMessageType == COMPUTER_INTERRUPT_MESSAGE || gTacticalStatus.ubTopMessageType == COMPUTER_TURN_MESSAGE )&& is_server)) && (gTacticalStatus.uiFlags & TURNBASED) && (gTacticalStatus.uiFlags & INCOMBAT))//update progress bar, not supporting coop yet...
|
||||
{
|
||||
SUpdateNetworkSoldier.usTactialTurnLimitCounter = gTacticalStatus.usTactialTurnLimitCounter;
|
||||
SUpdateNetworkSoldier.usTactialTurnLimitMax = gTacticalStatus.usTactialTurnLimitMax;
|
||||
@@ -2300,12 +2258,13 @@ void UpdateSoldierFromNetwork (RPCParameters *rpcParameters)
|
||||
if( pSoldier->sGridNo != SUpdateNetworkSoldier->sAtGridNo)
|
||||
{
|
||||
pSoldier->EVENT_InternalSetSoldierPosition( sCellX, sCellY ,FALSE, FALSE, FALSE );//new syncing call to correct network lag/drift
|
||||
//ScreenMsg( FONT_LTBLUE, MSG_CHAT, L"sync to pos: %d",pSoldier->sGridNo );
|
||||
//ScreenMsg( FONT_LTBLUE, MSG_CHAT, L"sync ubid:%d grid %d to %d",pSoldier->ubID,pSoldier->sGridNo,SUpdateNetworkSoldier->sAtGridNo );
|
||||
}
|
||||
|
||||
if(pSoldier->ubDirection != SUpdateNetworkSoldier->ubDirection)
|
||||
{
|
||||
pSoldier->EVENT_SetSoldierDesiredDirection( SUpdateNetworkSoldier->ubDirection );
|
||||
//ScreenMsg( FONT_LTBLUE, MSG_CHAT, L"sync ubid:%d dir %d to %d",pSoldier->ubID, pSoldier->ubDirection, SUpdateNetworkSoldier->ubDirection );
|
||||
}
|
||||
|
||||
|
||||
@@ -2318,22 +2277,6 @@ void UpdateSoldierFromNetwork (RPCParameters *rpcParameters)
|
||||
}
|
||||
}
|
||||
|
||||
//void advance_ovh_frame (RPCParameters *rpcParameters)
|
||||
//{
|
||||
//
|
||||
// adv* aoh = (adv*)rpcParameters->input;
|
||||
// UINT8 ryubid = aoh->ubid;
|
||||
//
|
||||
// if((ryubid >= ubID_prefix) && (ryubid < (ubID_prefix+7))) // within our netbTeam range...
|
||||
// {
|
||||
// ryubid = (ryubid - ubID_prefix);
|
||||
// }
|
||||
// SOLDIERTYPE *pSoldier = MercPtrs[ ryubid ];
|
||||
// //ScreenMsg( FONT_LTBLUE, MSG_CHAT, L"advancing: %d",pSoldier->sGridNo );
|
||||
// pSoldier->flags.fIsSoldierDelayed = false;
|
||||
// //ovh_advance=true;
|
||||
//
|
||||
//}
|
||||
|
||||
void kick_player (void)
|
||||
{
|
||||
@@ -2520,6 +2463,26 @@ void startCombat(UINT8 ubStartingTeam)
|
||||
|
||||
}
|
||||
|
||||
void teamwiped ( void )
|
||||
{
|
||||
|
||||
sc_struct data;
|
||||
data.ubStartingTeam=netbTeam;
|
||||
|
||||
client->RPC("sendWIPE",(const char*)&data, (int)sizeof(sc_struct)*8, HIGH_PRIORITY, RELIABLE, 0, UNASSIGNED_SYSTEM_ADDRESS, true, 0, UNASSIGNED_NETWORK_ID,0);
|
||||
|
||||
}
|
||||
|
||||
void recieve_wipe (RPCParameters *rpcParameters)
|
||||
|
||||
{
|
||||
sc_struct* data = (sc_struct*)rpcParameters->input;
|
||||
ScreenMsg( FONT_LTGREEN, MSG_INTERFACE, L"Team #%d is wiped out.", data->ubStartingTeam );
|
||||
if(is_server)
|
||||
{
|
||||
if(gTacticalStatus.ubCurrentTeam==data->ubStartingTeam)EndTurn( data->ubStartingTeam+1 );
|
||||
}
|
||||
}
|
||||
|
||||
//***************************
|
||||
//*** client connection*****
|
||||
@@ -2566,6 +2529,7 @@ void connect_client ( void )
|
||||
REGISTER_STATIC_RPC(client, recieve_door);
|
||||
REGISTER_STATIC_RPC(client, null_team);
|
||||
REGISTER_STATIC_RPC(client, gotoRT);
|
||||
REGISTER_STATIC_RPC(client, recieve_wipe);
|
||||
//***
|
||||
|
||||
if (b)
|
||||
|
||||
@@ -54,4 +54,9 @@ extern UINT8 gubCheatLevel;
|
||||
|
||||
void startCombat(UINT8 ubStartingTeam);
|
||||
|
||||
extern int WEAPON_READIED_BONUS;
|
||||
extern int WEAPON_READIED_BONUS;
|
||||
|
||||
void teamwiped (void);
|
||||
|
||||
BOOLEAN check_status (void);
|
||||
extern UINT8 NumEnemyInSector( );
|
||||
@@ -190,6 +190,11 @@ void endINTERRUPT(RPCParameters *rpcParameters)
|
||||
server->RPC("resume_turn",(const char*)rpcParameters->input, (*rpcParameters).numberOfBitsOfData, HIGH_PRIORITY, RELIABLE, 0, rpcParameters->sender, true, 0, UNASSIGNED_NETWORK_ID,0);
|
||||
}
|
||||
|
||||
void sendWIPE(RPCParameters *rpcParameters)
|
||||
{
|
||||
server->RPC("recieve_wipe",(const char*)rpcParameters->input, (*rpcParameters).numberOfBitsOfData, HIGH_PRIORITY, RELIABLE, 0, rpcParameters->sender, true, 0, UNASSIGNED_NETWORK_ID,0);
|
||||
}
|
||||
|
||||
void startCOMBAT(RPCParameters *rpcParameters)
|
||||
{
|
||||
if(!( gTacticalStatus.uiFlags & INCOMBAT ))
|
||||
@@ -536,6 +541,7 @@ void start_server (void)
|
||||
REGISTER_STATIC_RPC(server, endINTERRUPT);
|
||||
REGISTER_STATIC_RPC(server, sendREAL);
|
||||
REGISTER_STATIC_RPC(server, startCOMBAT);
|
||||
REGISTER_STATIC_RPC(server, sendWIPE);
|
||||
//
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#include "Debug Control.h"
|
||||
#endif
|
||||
|
||||
#include "connect.h"
|
||||
|
||||
// Defines for Anim inst reading, taken from orig Jagged
|
||||
#define ANIMFILENAME "BINARYDATA\\ja2bin.dat"
|
||||
|
||||
@@ -3633,7 +3635,7 @@ UINT16 GetSoldierAnimationSurface( SOLDIERTYPE *pSoldier, UINT16 usAnimState )
|
||||
// Ensure that it's loaded!
|
||||
if ( gAnimSurfaceDatabase[ usAnimSurface ].hVideoObject == NULL )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_RED, MSG_BETAVERSION, L"IAnimation Surface for Body %d, animation %S, surface %d not loaded.", pSoldier->ubBodyType, gAnimControl[ usAnimState ].zAnimStr, usAnimSurface );
|
||||
if(!is_networked)ScreenMsg( FONT_MCOLOR_RED, MSG_BETAVERSION, L"IAnimation Surface for Body %d, animation %S, surface %d not loaded.", pSoldier->ubBodyType, gAnimControl[ usAnimState ].zAnimStr, usAnimSurface );
|
||||
AnimDebugMsg( String( "Surface Database: PROBLEMS!!!!!!" ) );
|
||||
usAnimSurface = INVALID_ANIMATION_SURFACE;
|
||||
}
|
||||
|
||||
@@ -243,8 +243,15 @@ void ShutDownQuoteBox( BOOLEAN fForce )
|
||||
if ( gCivQuoteData.pCiv && gCivQuoteData.pCiv->aiData.bAction == AI_ACTION_OFFER_SURRENDER )
|
||||
{
|
||||
// Haydent
|
||||
if(!is_client)DoMessageBox( MSG_BOX_BASIC_STYLE, Message[ STR_SURRENDER ], GAME_SCREEN, ( UINT8 )MSG_BOX_FLAG_YESNO, SurrenderMessageBoxCallBack, NULL );
|
||||
else ScreenMsg( FONT_LTGREEN, MSG_CHAT, MPClientMessage[39] );
|
||||
if(!is_networked)
|
||||
{
|
||||
DoMessageBox( MSG_BOX_BASIC_STYLE, Message[ STR_SURRENDER ], GAME_SCREEN, ( UINT8 )MSG_BOX_FLAG_YESNO, SurrenderMessageBoxCallBack, NULL );
|
||||
}
|
||||
else
|
||||
{
|
||||
ScreenMsg( FONT_LTGREEN, MSG_CHAT, MPClientMessage[39] );
|
||||
ActionDone( gCivQuoteData.pCiv );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+38
-8
@@ -1200,14 +1200,14 @@ BOOLEAN ExecuteOverhead( )
|
||||
}
|
||||
//hayden - holt at scheduled grid
|
||||
|
||||
if (is_networked)
|
||||
{
|
||||
if(pSoldier->sGridNo==pSoldier->sScheduledStop)
|
||||
{
|
||||
pSoldier->HaultSoldierFromSighting( 1 );
|
||||
pSoldier->sScheduledStop=NULL;
|
||||
}
|
||||
}
|
||||
//if (is_networked)
|
||||
//{
|
||||
// if(pSoldier->sGridNo==pSoldier->sScheduledStop)
|
||||
// {
|
||||
// pSoldier->HaultSoldierFromSighting( 1 );
|
||||
// pSoldier->sScheduledStop=NULL;
|
||||
// }
|
||||
//}
|
||||
|
||||
if ( !( gAnimControl[ pSoldier->usAnimState ].uiFlags & ANIM_SPECIALMOVE ) )
|
||||
{
|
||||
@@ -5929,6 +5929,21 @@ BOOLEAN CheckForEndOfCombatMode( BOOLEAN fIncrementTurnsNotSeen )
|
||||
BOOLEAN fSayQuote = FALSE;
|
||||
BOOLEAN fWeSawSomeoneRecently = FALSE, fSomeoneSawSomeoneRecently = FALSE;
|
||||
|
||||
|
||||
|
||||
|
||||
if(is_server && check_status())
|
||||
{
|
||||
if(NumActiveAndConsciousTeamMembers( 0 ) ==0)
|
||||
{
|
||||
//ScreenMsg( FONT_LTGREEN, MSG_CHAT, L"still some left");
|
||||
}
|
||||
|
||||
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
|
||||
// We can only check for end of combat if in combat mode
|
||||
if ( ! ( gTacticalStatus.uiFlags & INCOMBAT ) )
|
||||
{
|
||||
@@ -5953,6 +5968,8 @@ BOOLEAN CheckForEndOfCombatMode( BOOLEAN fIncrementTurnsNotSeen )
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
|
||||
|
||||
fWeSeeNoOne = WeSeeNoOne();
|
||||
fNobodyAlerted = NobodyAlerted();
|
||||
if ( fWeSeeNoOne && fNobodyAlerted )
|
||||
@@ -6091,6 +6108,7 @@ void DeathNoMessageTimerCallback( void )
|
||||
ScreenMsg( FONT_LTGREEN, MSG_CHAT, MPClientMessage[40] );
|
||||
gTacticalStatus.uiFlags |= SHOW_ALL_MERCS;//hayden
|
||||
ScreenMsg( FONT_YELLOW, MSG_CHAT, MPClientMessage[41] );
|
||||
teamwiped();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6129,6 +6147,17 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated )
|
||||
}
|
||||
}
|
||||
|
||||
if(is_server && check_status())
|
||||
{
|
||||
if(NumActiveAndConsciousTeamMembers( 0 ) ==0)
|
||||
{
|
||||
//ScreenMsg( FONT_LTGREEN, MSG_CHAT, L"still some left");
|
||||
}
|
||||
|
||||
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
// ATE: If attack busy count.. get out...
|
||||
if ( (gTacticalStatus.ubAttackBusyCount > 0 ) )
|
||||
{
|
||||
@@ -8160,6 +8189,7 @@ void EndBattleWithUnconsciousGuysCallback( UINT8 bExitValue )
|
||||
ScreenMsg( FONT_LTGREEN, MSG_CHAT, MPClientMessage[40] );
|
||||
gTacticalStatus.uiFlags |= SHOW_ALL_MERCS;//hayden
|
||||
ScreenMsg( FONT_YELLOW, MSG_CHAT, MPClientMessage[41] );
|
||||
teamwiped();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3214,10 +3214,15 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse )
|
||||
|
||||
if ( pSoldier->stats.bLife == 0 && !( pSoldier->flags.uiStatusFlags & SOLDIER_DEAD ) )
|
||||
{
|
||||
// Haydent
|
||||
// Haydent/send death info
|
||||
if (is_networked)
|
||||
//send death info
|
||||
send_death(pSoldier);//quickfix
|
||||
{
|
||||
|
||||
if(pSoldier->bTeam==0) send_death(pSoldier);
|
||||
else if(pSoldier->bTeam <6 && ((gTacticalStatus.ubTopMessageType == PLAYER_TURN_MESSAGE) || (gTacticalStatus.ubTopMessageType == PLAYER_INTERRUPT_MESSAGE)))send_death(pSoldier);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Cancel services here...
|
||||
|
||||
@@ -1666,7 +1666,7 @@ void SOLDIERTYPE::AdjustNoAPToFinishMove( BOOLEAN fSet )
|
||||
SStopMerc.sYPos=this->sY;
|
||||
|
||||
//AddGameEvent( S_STOP_MERC, 0, &SStopMerc ); //hayden.
|
||||
|
||||
if (!is_server && this->ubID >=20)return;
|
||||
|
||||
if(is_client)
|
||||
send_stop(&SStopMerc);
|
||||
@@ -2518,7 +2518,7 @@ BOOLEAN SOLDIERTYPE::ChangeSoldierState( UINT16 usNewState, UINT16 usStartingAni
|
||||
this->EVENT_InitNewSoldierAnim( SChangeState.usNewState, SChangeState.usStartingAniCode, SChangeState.fForce );
|
||||
send_changestate(&SChangeState);
|
||||
}
|
||||
else if(is_client && !is_server && this->ubID < 20)
|
||||
else if((is_client && !is_server) && (this->ubID < 20 || (this->ubID < 120 && gTacticalStatus.ubCurrentTeam == OUR_TEAM)))
|
||||
{
|
||||
this->EVENT_InitNewSoldierAnim( SChangeState.usNewState, SChangeState.usStartingAniCode, SChangeState.fForce );
|
||||
send_changestate(&SChangeState);
|
||||
@@ -9845,8 +9845,9 @@ void SendChangeSoldierStanceEvent( SOLDIERTYPE *pSoldier, UINT8 ubNewStance )
|
||||
|
||||
AddGameEvent( S_CHANGESTANCE, 0, &SChangeStance );
|
||||
#endif
|
||||
if((pSoldier->ubID > 19) && is_networked)
|
||||
return;
|
||||
|
||||
if(((pSoldier->ubID > 19 && !is_server) || (pSoldier->ubID > 119 && is_server) )&& is_networked)return;
|
||||
|
||||
pSoldier->ChangeSoldierStance( ubNewStance );
|
||||
if(is_server || (is_client && pSoldier->ubID <20) ) send_stance( pSoldier, ubNewStance );
|
||||
}
|
||||
@@ -10978,7 +10979,7 @@ void SOLDIERTYPE::HaultSoldierFromSighting( BOOLEAN fFromSightingEnemy )
|
||||
SStopMerc.sXPos=this->sX;
|
||||
SStopMerc.sYPos=this->sY;
|
||||
//AddGameEvent( S_STOP_MERC, 0, &SStopMerc ); //hayden.
|
||||
if(this->ubID>=120) return;//hayden
|
||||
if(this->ubID>=120 || (!is_server && this->ubID >=20)) return;//hayden
|
||||
if(is_client)send_stop(&SStopMerc);
|
||||
|
||||
// If we are a 'specialmove... ignore...
|
||||
|
||||
@@ -469,6 +469,14 @@ void BeginTeamTurn( UINT8 ubTeam )
|
||||
// skip back to the top, as we are processing another team now.
|
||||
continue;
|
||||
}
|
||||
if ((!(gTacticalStatus.Team[ ubTeam ].bTeamActive))&& is_networked)
|
||||
{
|
||||
// inactive team, skip to the next one
|
||||
ubTeam++;
|
||||
gTacticalStatus.ubCurrentTeam++;
|
||||
// skip back to the top, as we are processing another team now.
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( gTacticalStatus.uiFlags & TURNBASED )
|
||||
{
|
||||
@@ -526,6 +534,7 @@ void BeginTeamTurn( UINT8 ubTeam )
|
||||
AddTopMessage( COMPUTER_TURN_MESSAGE, TeamTurnString[ ubTeam ] );
|
||||
/*if(is_server && !net_turn) send_EndTurn(ubTeam);
|
||||
if(net_turn == true) net_turn = false;*/
|
||||
gTacticalStatus.ubCurrentTeam = ubTeam;
|
||||
if(is_server) send_EndTurn(ubTeam);
|
||||
|
||||
|
||||
|
||||
@@ -818,7 +818,7 @@ void StartNPCAI(SOLDIERTYPE *pSoldier)
|
||||
//SetSoldierAsUnderAiControl( pSoldier );
|
||||
//}
|
||||
|
||||
if (!is_networked)
|
||||
if (!is_networked || is_server)
|
||||
pSoldier->SetSoldierAsUnderAiControl( );
|
||||
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#include "GameSettings.h"
|
||||
#include "Dialogue Control.h"
|
||||
#endif
|
||||
|
||||
#include "connect.h"
|
||||
#include "Text.h"
|
||||
|
||||
extern BOOLEAN gfHiddenInterrupt;
|
||||
@@ -926,7 +926,7 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier)
|
||||
// CLIMB A BUILDING
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
if (!fCivilian && pSoldier->aiData.bLastAction != AI_ACTION_CLIMB_ROOF)
|
||||
if (!fCivilian && pSoldier->aiData.bLastAction != AI_ACTION_CLIMB_ROOF && !is_networked)
|
||||
{
|
||||
iChance = 10 + pSoldier->aiData.bBypassToGreen;
|
||||
|
||||
|
||||
@@ -890,7 +890,7 @@ void HaltMoveForSoldierOutOfPoints(SOLDIERTYPE *pSoldier)
|
||||
SStopMerc.sYPos=pSoldier->sY;
|
||||
|
||||
//AddGameEvent( S_STOP_MERC, 0, &SStopMerc ); //hayden.
|
||||
if(pSoldier->ubID>=120)
|
||||
if(pSoldier->ubID>=120 || (!is_server && pSoldier->ubID>=20))
|
||||
return;//hayden
|
||||
|
||||
if(is_client)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="\games\jagged alliance 2"
|
||||
OutputDirectory="C:\games\jagged alliance 2 EN"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets=".\ja2_2005Express.vsprops;.\ja2_2005ExpressDebug.vsprops"
|
||||
@@ -66,7 +66,7 @@
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="Winmm.lib .\Multiplayer\raknet\RakNetLibStaticDebug.lib ws2_32.lib"
|
||||
OutputFile="$(OutDir)\ja2_debug_2146_en.exe"
|
||||
OutputFile="$(OutDir)\ja2_debug_new_en.exe"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
@@ -145,7 +145,7 @@
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="Winmm.lib .\Multiplayer\raknet\RakNetLibStatic.lib ws2_32.lib"
|
||||
OutputFile="$(OutDir)\ja2_release_2147_en.exe"
|
||||
OutputFile="$(OutDir)\ja2_release_2148_ru.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
GenerateMapFile="true"
|
||||
|
||||
Reference in New Issue
Block a user