mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
added sync for bandaging anim and ability to heal other teams
add names to end turn dialog. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@2182 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+57
-8
@@ -1744,9 +1744,7 @@ void requestSETTINGS(void)
|
|||||||
//cl_name.client_num=CLIENT_NUM;
|
//cl_name.client_num=CLIENT_NUM;
|
||||||
strcpy(cl_name.client_name , CLIENT_NAME);
|
strcpy(cl_name.client_name , CLIENT_NAME);
|
||||||
cl_name.team=TEAM;
|
cl_name.team=TEAM;
|
||||||
//cl_name.cl_ops[1]=OP_TEAM_2;
|
|
||||||
//cl_name.cl_ops[2]=OP_TEAM_3;
|
|
||||||
//cl_name.cl_ops[3]=OP_TEAM_4;
|
|
||||||
cl_name.cl_edge=atoi(SECT_EDGE);
|
cl_name.cl_edge=atoi(SECT_EDGE);
|
||||||
|
|
||||||
|
|
||||||
@@ -2042,8 +2040,19 @@ void recieveSTATE(RPCParameters *rpcParameters)
|
|||||||
|
|
||||||
SOLDIERTYPE * pSoldier=MercPtrs[ new_state->usSoldierID ];
|
SOLDIERTYPE * pSoldier=MercPtrs[ new_state->usSoldierID ];
|
||||||
|
|
||||||
if(pSoldier->bActive)
|
if(pSoldier->bActive)
|
||||||
|
{
|
||||||
|
if(new_state->usNewState==93)
|
||||||
|
{
|
||||||
|
pSoldier->EVENT_InternalSetSoldierPosition( new_state->sXPos, new_state->sYPos ,FALSE, FALSE, FALSE );
|
||||||
|
pSoldier->ChangeSoldierStance( ANIM_CROUCH );
|
||||||
|
pSoldier->EVENT_SetSoldierDirection( new_state->usNewDirection );
|
||||||
|
|
||||||
|
}
|
||||||
|
if(new_state->usNewState==95)ScreenMsg( FONT_YELLOW, MSG_CHAT, L"All Bandaged.");
|
||||||
|
|
||||||
pSoldier->EVENT_InitNewSoldierAnim( new_state->usNewState, new_state->usStartingAniCode, new_state->fForce );
|
pSoldier->EVENT_InitNewSoldierAnim( new_state->usNewState, new_state->usStartingAniCode, new_state->fForce );
|
||||||
|
}
|
||||||
//AddGameEvent( S_CHANGESTATE, 0, &SChangeState );
|
//AddGameEvent( S_CHANGESTATE, 0, &SChangeState );
|
||||||
//someday ;)
|
//someday ;)
|
||||||
}
|
}
|
||||||
@@ -2291,12 +2300,15 @@ void UpdateSoldierToNetwork ( SOLDIERTYPE *pSoldier )
|
|||||||
|
|
||||||
SUpdateNetworkSoldier.usSoldierID=pSoldier->ubID;
|
SUpdateNetworkSoldier.usSoldierID=pSoldier->ubID;
|
||||||
if(pSoldier->ubID < 20)SUpdateNetworkSoldier.usSoldierID=pSoldier->ubID+ubID_prefix;
|
if(pSoldier->ubID < 20)SUpdateNetworkSoldier.usSoldierID=pSoldier->ubID+ubID_prefix;
|
||||||
|
|
||||||
SUpdateNetworkSoldier.sAtGridNo=pSoldier->sGridNo;
|
SUpdateNetworkSoldier.sAtGridNo=pSoldier->sGridNo;
|
||||||
SUpdateNetworkSoldier.bBreath=pSoldier->bBreath;
|
SUpdateNetworkSoldier.bBreath=pSoldier->bBreath;
|
||||||
|
SUpdateNetworkSoldier.ubDirection=pSoldier->ubDirection;
|
||||||
|
|
||||||
SUpdateNetworkSoldier.bLife=pSoldier->stats.bLife;
|
SUpdateNetworkSoldier.bLife=pSoldier->stats.bLife;
|
||||||
SUpdateNetworkSoldier.bBleeding=pSoldier->bBleeding;
|
SUpdateNetworkSoldier.bBleeding=pSoldier->bBleeding;
|
||||||
SUpdateNetworkSoldier.ubDirection=pSoldier->ubDirection;
|
|
||||||
|
|
||||||
|
|
||||||
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...
|
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...
|
||||||
{
|
{
|
||||||
@@ -2322,6 +2334,8 @@ void UpdateSoldierFromNetwork (RPCParameters *rpcParameters)
|
|||||||
pSoldier->stats.bLife=SUpdateNetworkSoldier->bLife;
|
pSoldier->stats.bLife=SUpdateNetworkSoldier->bLife;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
INT16 sCellX, sCellY;
|
INT16 sCellX, sCellY;
|
||||||
sCellX = CenterX( SUpdateNetworkSoldier->sAtGridNo );
|
sCellX = CenterX( SUpdateNetworkSoldier->sAtGridNo );
|
||||||
sCellY = CenterY( SUpdateNetworkSoldier->sAtGridNo );
|
sCellY = CenterY( SUpdateNetworkSoldier->sAtGridNo );
|
||||||
@@ -2395,10 +2409,14 @@ void overide_turn (void)
|
|||||||
if(is_server)
|
if(is_server)
|
||||||
{
|
{
|
||||||
//manual overide command for server
|
//manual overide command for server
|
||||||
const STR16 msg = MPClientMessage[30];
|
//const STR16 msg = MPClientMessage[30];
|
||||||
|
CHAR16 Cmsg[255];
|
||||||
|
swprintf(Cmsg, L"Start turn for client number: #1-'%S', #2-'%S', #3-'%S', #4-'%S'",client_names[0],client_names[1],client_names[2],client_names[3]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SGPRect CenterRect = { 100, 100, SCREEN_WIDTH - 100, 300 };
|
SGPRect CenterRect = { 100, 100, SCREEN_WIDTH - 100, 300 };
|
||||||
DoMessageBox( MSG_BOX_BASIC_STYLE, msg, guiCurrentScreen, MSG_BOX_FLAG_FOUR_NUMBERED_BUTTONS | MSG_BOX_FLAG_USE_CENTERING_RECT, turn_callback, &CenterRect );
|
DoMessageBox( MSG_BOX_BASIC_STYLE, Cmsg, guiCurrentScreen, MSG_BOX_FLAG_FOUR_NUMBERED_BUTTONS | MSG_BOX_FLAG_USE_CENTERING_RECT, turn_callback, &CenterRect );
|
||||||
|
|
||||||
}
|
}
|
||||||
else ScreenMsg( FONT_LTGREEN, MSG_INTERFACE, MPClientMessage[22] );
|
else ScreenMsg( FONT_LTGREEN, MSG_INTERFACE, MPClientMessage[22] );
|
||||||
@@ -2563,6 +2581,36 @@ if(is_server)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void send_heal (SOLDIERTYPE *pSoldier )
|
||||||
|
{
|
||||||
|
heal data;
|
||||||
|
data.ubID=pSoldier->ubID;
|
||||||
|
data.bLife=pSoldier->stats.bLife;
|
||||||
|
data.bBleeding=pSoldier->bBleeding;
|
||||||
|
|
||||||
|
|
||||||
|
client->RPC("sendHEAL",(const char*)&data, (int)sizeof(heal)*8, HIGH_PRIORITY, RELIABLE, 0, UNASSIGNED_SYSTEM_ADDRESS, true, 0, UNASSIGNED_NETWORK_ID,0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void recieve_heal (RPCParameters *rpcParameters)
|
||||||
|
{
|
||||||
|
heal* data = (heal*)rpcParameters->input;
|
||||||
|
|
||||||
|
|
||||||
|
UINT16 healed;
|
||||||
|
if((data->ubID >= ubID_prefix) && (data->ubID < (ubID_prefix+5)))
|
||||||
|
healed = (data->ubID - ubID_prefix);
|
||||||
|
else
|
||||||
|
healed = data->ubID;
|
||||||
|
|
||||||
|
SOLDIERTYPE *pSoldier = MercPtrs[ healed ];
|
||||||
|
pSoldier->bBleeding=data->bBleeding;
|
||||||
|
pSoldier->stats.bLife=data->bLife;
|
||||||
|
ScreenMsg( FONT_LTGREEN, MSG_INTERFACE, L"healing..." );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//***************************
|
//***************************
|
||||||
//*** client connection*****
|
//*** client connection*****
|
||||||
//*************************
|
//*************************
|
||||||
@@ -2609,6 +2657,7 @@ void connect_client ( void )
|
|||||||
REGISTER_STATIC_RPC(client, null_team);
|
REGISTER_STATIC_RPC(client, null_team);
|
||||||
REGISTER_STATIC_RPC(client, gotoRT);
|
REGISTER_STATIC_RPC(client, gotoRT);
|
||||||
REGISTER_STATIC_RPC(client, recieve_wipe);
|
REGISTER_STATIC_RPC(client, recieve_wipe);
|
||||||
|
REGISTER_STATIC_RPC(client, recieve_heal);
|
||||||
//***
|
//***
|
||||||
|
|
||||||
if (b)
|
if (b)
|
||||||
|
|||||||
@@ -16,6 +16,15 @@ typedef struct
|
|||||||
INT16 sGridNo;
|
INT16 sGridNo;
|
||||||
BOOLEAN fNoAnimations;
|
BOOLEAN fNoAnimations;
|
||||||
}doors;
|
}doors;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
UINT16 ubID;
|
||||||
|
INT8 bLife;
|
||||||
|
INT8 bBleeding;
|
||||||
|
}heal;
|
||||||
|
|
||||||
|
|
||||||
void send_door ( SOLDIERTYPE *pSoldier, INT16 sGridNo, BOOLEAN fNoAnimations );
|
void send_door ( SOLDIERTYPE *pSoldier, INT16 sGridNo, BOOLEAN fNoAnimations );
|
||||||
|
|
||||||
void send_changestate (EV_S_CHANGESTATE * SChangeState);
|
void send_changestate (EV_S_CHANGESTATE * SChangeState);
|
||||||
@@ -62,3 +71,4 @@ BOOLEAN check_status (void);
|
|||||||
extern UINT8 NumEnemyInSector( );
|
extern UINT8 NumEnemyInSector( );
|
||||||
extern INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam );
|
extern INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam );
|
||||||
|
|
||||||
|
void send_heal (SOLDIERTYPE *pSoldier );
|
||||||
@@ -196,6 +196,11 @@ 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);
|
server->RPC("recieve_wipe",(const char*)rpcParameters->input, (*rpcParameters).numberOfBitsOfData, HIGH_PRIORITY, RELIABLE, 0, rpcParameters->sender, true, 0, UNASSIGNED_NETWORK_ID,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sendHEAL(RPCParameters *rpcParameters)
|
||||||
|
{
|
||||||
|
server->RPC("recieve_heal",(const char*)rpcParameters->input, (*rpcParameters).numberOfBitsOfData, HIGH_PRIORITY, RELIABLE, 0, rpcParameters->sender, true, 0, UNASSIGNED_NETWORK_ID,0);
|
||||||
|
}
|
||||||
|
|
||||||
void startCOMBAT(RPCParameters *rpcParameters)
|
void startCOMBAT(RPCParameters *rpcParameters)
|
||||||
{
|
{
|
||||||
if(!( gTacticalStatus.uiFlags & INCOMBAT ))
|
if(!( gTacticalStatus.uiFlags & INCOMBAT ))
|
||||||
@@ -554,6 +559,7 @@ if(gsPLAYER_BSIDE==2)//only enable ai during coop
|
|||||||
REGISTER_STATIC_RPC(server, sendREAL);
|
REGISTER_STATIC_RPC(server, sendREAL);
|
||||||
REGISTER_STATIC_RPC(server, startCOMBAT);
|
REGISTER_STATIC_RPC(server, startCOMBAT);
|
||||||
REGISTER_STATIC_RPC(server, sendWIPE);
|
REGISTER_STATIC_RPC(server, sendWIPE);
|
||||||
|
REGISTER_STATIC_RPC(server, sendHEAL);
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -112,6 +112,8 @@ void test_func2 (void)//now bound to "0" //currently displays coordinates of the
|
|||||||
|
|
||||||
|
|
||||||
SOLDIERTYPE * pSoldier=MercPtrs[ 0 ];
|
SOLDIERTYPE * pSoldier=MercPtrs[ 0 ];
|
||||||
|
|
||||||
|
pSoldier->ubServicePartner = NOBODY;
|
||||||
//SOLDIERTYPE * pSoldier2=MercPtrs[ 127 ];
|
//SOLDIERTYPE * pSoldier2=MercPtrs[ 127 ];
|
||||||
//
|
//
|
||||||
////pSoldier->AdjustNoAPToFinishMove( TRUE );
|
////pSoldier->AdjustNoAPToFinishMove( TRUE );
|
||||||
|
|||||||
@@ -2510,7 +2510,8 @@ BOOLEAN SOLDIERTYPE::ChangeSoldierState( UINT16 usNewState, UINT16 usStartingAni
|
|||||||
SChangeState.sXPos = this->sX;
|
SChangeState.sXPos = this->sX;
|
||||||
SChangeState.sYPos = this->sY;
|
SChangeState.sYPos = this->sY;
|
||||||
SChangeState.fForce = fForce;
|
SChangeState.fForce = fForce;
|
||||||
SChangeState.uiUniqueId = this->uiUniqueSoldierIdValue;
|
SChangeState.usNewDirection = this->ubDirection;
|
||||||
|
|
||||||
|
|
||||||
//AddGameEvent( S_CHANGESTATE, 0, &SChangeState );
|
//AddGameEvent( S_CHANGESTATE, 0, &SChangeState );
|
||||||
if(is_server && this->ubID < 120)
|
if(is_server && this->ubID < 120)
|
||||||
@@ -6087,7 +6088,9 @@ void SOLDIERTYPE::SoldierGotoStationaryStance( void )
|
|||||||
}
|
}
|
||||||
else if ( this->ubServicePartner != NOBODY && this->stats.bLife >= OKLIFE && this->bBreath > 0 )
|
else if ( this->ubServicePartner != NOBODY && this->stats.bLife >= OKLIFE && this->bBreath > 0 )
|
||||||
{
|
{
|
||||||
this->EVENT_InitNewSoldierAnim( GIVING_AID, 0 , FALSE );
|
if(!is_networked)this->EVENT_InitNewSoldierAnim( GIVING_AID, 0 , FALSE );
|
||||||
|
else this->ChangeSoldierState( GIVING_AID, 0, 0 );
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -10631,7 +10634,9 @@ void SOLDIERTYPE::EVENT_SoldierBeginFirstAid( INT16 sGridNo, UINT8 ubDirection )
|
|||||||
//else
|
//else
|
||||||
{
|
{
|
||||||
// CHANGE TO ANIMATION
|
// CHANGE TO ANIMATION
|
||||||
this->EVENT_InitNewSoldierAnim( START_AID, 0 , FALSE );
|
if(!is_networked)this->EVENT_InitNewSoldierAnim( START_AID, 0 , FALSE );
|
||||||
|
else this->ChangeSoldierState( START_AID, 0, 0 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SET TARGET GRIDNO
|
// SET TARGET GRIDNO
|
||||||
@@ -10873,6 +10878,7 @@ UINT32 SOLDIERTYPE::SoldierDressWound( SOLDIERTYPE *pVictim, INT16 sKitPts, INT1
|
|||||||
// DEXTERITY GAIN (actual / 6): Helped someone by giving first aid
|
// DEXTERITY GAIN (actual / 6): Helped someone by giving first aid
|
||||||
StatChange(this, DEXTAMT, (UINT16)(uiActual / 6), FALSE);
|
StatChange(this, DEXTAMT, (UINT16)(uiActual / 6), FALSE);
|
||||||
}
|
}
|
||||||
|
if(is_networked && pVictim->ubID > 19)send_heal(pVictim);
|
||||||
|
|
||||||
return( uiMedcost );
|
return( uiMedcost );
|
||||||
}
|
}
|
||||||
@@ -10908,7 +10914,8 @@ void SOLDIERTYPE::InternalReceivingSoldierCancelServices( BOOLEAN fPlayEndAnim )
|
|||||||
// don't use end aid animation in autobandage
|
// don't use end aid animation in autobandage
|
||||||
if ( pTSoldier->stats.bLife >= OKLIFE && pTSoldier->bBreath > 0 && fPlayEndAnim )
|
if ( pTSoldier->stats.bLife >= OKLIFE && pTSoldier->bBreath > 0 && fPlayEndAnim )
|
||||||
{
|
{
|
||||||
pTSoldier->EVENT_InitNewSoldierAnim( END_AID, 0 , FALSE );
|
if(!is_networked)pTSoldier->EVENT_InitNewSoldierAnim( END_AID, 0 , FALSE );
|
||||||
|
else pTSoldier->ChangeSoldierState( END_AID, 0, 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10953,7 +10960,8 @@ void SOLDIERTYPE::InternalGivingSoldierCancelServices( BOOLEAN fPlayEndAnim )
|
|||||||
if ( this->stats.bLife >= OKLIFE && this->bBreath > 0 && fPlayEndAnim )
|
if ( this->stats.bLife >= OKLIFE && this->bBreath > 0 && fPlayEndAnim )
|
||||||
{
|
{
|
||||||
// don't use end aid animation in autobandage
|
// don't use end aid animation in autobandage
|
||||||
this->EVENT_InitNewSoldierAnim( END_AID, 0 , FALSE );
|
if(!is_networked)this->EVENT_InitNewSoldierAnim( END_AID, 0 , FALSE );
|
||||||
|
else this->ChangeSoldierState( END_AID, 0, 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ typedef struct
|
|||||||
INT16 sYPos;
|
INT16 sYPos;
|
||||||
UINT16 usStartingAniCode;
|
UINT16 usStartingAniCode;
|
||||||
BOOLEAN fForce;
|
BOOLEAN fForce;
|
||||||
|
UINT8 usNewDirection;//hayden
|
||||||
|
|
||||||
} EV_S_CHANGESTATE;
|
} EV_S_CHANGESTATE;
|
||||||
|
|
||||||
@@ -257,6 +258,7 @@ typedef struct
|
|||||||
UINT16 usTactialTurnLimitCounter;
|
UINT16 usTactialTurnLimitCounter;
|
||||||
UINT16 usTactialTurnLimitMax;
|
UINT16 usTactialTurnLimitMax;
|
||||||
UINT8 ubDirection;
|
UINT8 ubDirection;
|
||||||
|
|
||||||
} EV_S_UPDATENETWORKSOLDIER;
|
} EV_S_UPDATENETWORKSOLDIER;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user