?? cbevent.cpp
字號:
WORD Pos1=0;
UNIT_STRUCT * Pobject2;
WORD Pos2=0;
UNIT_STRUCT * Pobject3;
WORD Pos3=0;
for (i=0;i<PLAYER_GROUP_MAX;i++)
{
if ( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
{
pUnit = MAP_GetUnit( GAME.Players[GAME.nMe].wGroup[i] );
Assert( pUnit );
Assert( EYE_IfUnitIsGen( pUnit ) );
if ( EYE_IfUnitIsDead( pUnit ) )
continue;
if ( pUnit->Gen.nID == 34 )
{
//趙云
Pobject1=pUnit;
Pos1=1;
}
else if ( pUnit->Gen.nID == 35 )
{
// 張飛
Pobject2=pUnit;
Pos2=1;
}
else if ( pUnit->Gen.nID == 36 )
{
// 關羽
Pobject3=pUnit;
Pos3=1;
}
}
}
for (i=0;i<PLAYER_GROUP_MAX;i++)
{
if ( GAME.Players[AIPlayer].wGroup[i] != MAP_DATA_NONE )
{
pUnit = MAP_GetUnit( GAME.Players[AIPlayer].wGroup[i] );
Assert( pUnit );
Assert( EYE_IfUnitIsGen( pUnit ) );
//曹操
if ( !EYE_IfUnitIsDead( pUnit )
&& pUnit->Gen.nID == 60 )
{
if (Pos1 == 1 && EventPos[Level][0] == 0)
{
// 曹操遇到趙云,劉備方士氣增加20
if (pUnit->Draw.nX < Pobject1->Draw.nX+10
&&pUnit->Draw.nX > Pobject1->Draw.nX-10
&&pUnit->Draw.nY < Pobject1->Draw.nY+10
&&pUnit->Draw.nY > Pobject1->Draw.nY-10)
{
EventPos[Level][0]=1;
//FACE_ShowEvent(9);
// Nov.21.1997
PostMessage( hwndGame, WM_SHOW_EVENT, 9, 0 );
TY_BateMorale(GAME.nMe, 20);
break;
}
}
if (Pos2 == 1 && EventPos[Level][1] == 0)
{
// 曹操遇到張飛,劉備方士氣增加20
if (pUnit->Draw.nX < Pobject2->Draw.nX+10
&&pUnit->Draw.nX > Pobject2->Draw.nX-10
&&pUnit->Draw.nY < Pobject2->Draw.nY+10
&&pUnit->Draw.nY > Pobject2->Draw.nY-10)
{
EventPos[Level][1]=1;
//FACE_ShowEvent(10);
// Nov.21.1997
PostMessage( hwndGame, WM_SHOW_EVENT, 10, 0 );
TY_BateMorale(GAME.nMe, 20);
break;
}
}
if (Pos3 == 1 && EventPos[Level][2] == 0)
{
// 曹操遇到關羽,游戲結束
if (pUnit->Draw.nX < Pobject3->Draw.nX+10
&&pUnit->Draw.nX > Pobject3->Draw.nX-10
&&pUnit->Draw.nY < Pobject3->Draw.nY+10
&&pUnit->Draw.nY > Pobject3->Draw.nY-10)
{
EventPos[Level][2]=1;
//FACE_ShowEvent(11);
// Nov.21.1997
//PostMessage( hwndGame, WM_SHOW_EVENT, 11, 0 );
ret = 2;
break;
}
}
// 曹操到達界碑,游戲結束
if (pUnit->Draw.nX > SAFEAREA14_EX-10
&&pUnit->Draw.nX < SAFEAREA14_EX+10
&&pUnit->Draw.nY < SAFEAREA14_EY+10
&&pUnit->Draw.nY > SAFEAREA14_EY-10)
{
ret = 2;
}
}
break;
}
}
} // end of case14
break;
case 19:
// 在任何一支曹操部隊到達某一點后,自動放火
// 注意:EventPos[level][1]的第二個分量必須是1,用于和前面的火攻統一
if( EventPos[Level][1] == 1 )
break;
{
UNIT_STRUCT * Pobject = NULL;
for ( i=0; i<PLAYER_GROUP_MAX; i++ )
{
if ( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
{
pUnit = MAP_GetUnit( GAME.Players[GAME.nMe].wGroup[i] );
Assert( pUnit );
Assert( EYE_IfUnitIsGen( pUnit ) );
if( EYE_IfUnitIsDead( pUnit ) == TRUE )
continue;
if (pUnit->Draw.nX > SAFEAREA19_EX-10
&&pUnit->Draw.nX < SAFEAREA19_EX+10
&&pUnit->Draw.nY < SAFEAREA19_EY+10
&&pUnit->Draw.nY > SAFEAREA19_EY-10)
{ // 曹操有部隊到達指定位置
Pobject = pUnit;
}
}
}
if( Pobject == NULL )
break;
for ( i=0; i<PLAYER_GROUP_MAX; i++ )
{
if ( GAME.Players[AIPlayer].wGroup[i] != MAP_DATA_NONE )
{
pUnit = MAP_GetUnit( GAME.Players[AIPlayer].wGroup[i] );
Assert( pUnit );
Assert( EYE_IfUnitIsGen( pUnit ) );
if( EYE_IfUnitIsDead( pUnit ) == TRUE
|| pUnit->Status.bIRQ == TRUE )
continue;
//使用火計
EventPos[Level][1] = 1;
// 人為地增加火攻所必須的謀略值
DATA_Lib.Gen[pUnit->Gen.nID].nMouLue += RUN_MOULUE_nConsume[HUOGONG];
struct CTRL_TASK_STRUCT Task;
CTRL_TASK_Clear( &Task );
Task.nID = pUnit->nID;
Task.nTaskID = JIMOU;
Task.nTaskIDEx2 = HUOGONG;
Task.nTaskIDEx = 1; // MOUSE_HITRESULT_GROUND
Task.nParam1 = 0;
Task.nParam2 = SAFEAREA19_EX;
Task.nParam3 = SAFEAREA19_EY;
Task.bDone = TRUE;
// 下達命令
CTRL_TASK_DeployByComputer( AIPlayer, &Task );
}
}
}
break;
case 20:
// 在任何一支曹操部隊到達某一點后,自動放火
// 注意:EventPos[level][1]的第二個分量必須是1,用于和前面的火攻統一
if( EventPos[Level][1] == 1 )
break;
{
UNIT_STRUCT * Pobject = NULL;
for ( i=0; i<PLAYER_GROUP_MAX; i++ )
{
if ( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
{
pUnit = MAP_GetUnit( GAME.Players[GAME.nMe].wGroup[i] );
Assert( pUnit );
Assert( EYE_IfUnitIsGen( pUnit ) );
if( EYE_IfUnitIsDead( pUnit ) == TRUE )
continue;
if (pUnit->Draw.nX > SAFEAREA20_EX-10
&&pUnit->Draw.nX < SAFEAREA20_EX+10
&&pUnit->Draw.nY < SAFEAREA20_EY+10
&&pUnit->Draw.nY > SAFEAREA20_EY-10)
{ // 曹操有部隊到達指定位置
Pobject = pUnit;
}
}
}
if( Pobject == NULL )
break;
for ( i=0; i<PLAYER_GROUP_MAX; i++ )
{
if ( GAME.Players[AIPlayer].wGroup[i] != MAP_DATA_NONE )
{
pUnit = MAP_GetUnit( GAME.Players[AIPlayer].wGroup[i] );
Assert( pUnit );
Assert( EYE_IfUnitIsGen( pUnit ) );
if( EYE_IfUnitIsDead( pUnit ) == TRUE
|| pUnit->Status.bIRQ == TRUE )
continue;
//使用火計
EventPos[Level][1] = 1;
// 人為地增加火攻所必須的謀略值
DATA_Lib.Gen[pUnit->Gen.nID].nMouLue += RUN_MOULUE_nConsume[HUOGONG];
struct CTRL_TASK_STRUCT Task;
CTRL_TASK_Clear( &Task );
Task.nID = pUnit->nID;
Task.nTaskID = JIMOU;
Task.nTaskIDEx2 = HUOGONG;
Task.nTaskIDEx = 1; // MOUSE_HITRESULT_GROUND
Task.nParam1 = 0;
Task.nParam2 = SAFEAREA20_EX;
Task.nParam3 = SAFEAREA20_EY;
Task.bDone = TRUE;
// 下達命令
CTRL_TASK_DeployByComputer( AIPlayer, &Task );
}
}
}
break;
case 27:
// 曹操造出連船
if( EventPos[Level][0] == 1 )
break;
for( i=0; i<PLAYER_UNIT_MAX; i++ )
{
if( GAME.Players[GAME.nMe].Unit[i].nID == MAP_DATA_NONE )
continue;
pUnit = &GAME.Players[GAME.nMe].Unit[i];
Assert( pUnit );
if( !EYE_IfUnitIsDead( pUnit )
&& pUnit->Draw.nFile == 49 ) // 連船
{
EventPos[Level][0] = 1;
//FACE_ShowEvent( 5 );
// Nov.21.1997
PostMessage( hwndGame, WM_SHOW_EVENT, 5, 0 );
}
}
break;
case 29:
// 在任何一支曹操部隊到達某一點后,自動放火
// 注意:EventPos[level][1]的第二個分量必須是1,用于和前面的火攻統一
if( EventPos[Level][1] == 1 )
break;
{
UNIT_STRUCT * Pobject = NULL;
for ( i=0; i<PLAYER_GROUP_MAX; i++ )
{
if ( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
{
pUnit = MAP_GetUnit( GAME.Players[GAME.nMe].wGroup[i] );
Assert( pUnit );
Assert( EYE_IfUnitIsGen( pUnit ) );
if( EYE_IfUnitIsDead( pUnit ) == TRUE )
continue;
if (pUnit->Draw.nX > SAFEAREA29_EX-10
&&pUnit->Draw.nX < SAFEAREA29_EX+10
&&pUnit->Draw.nY < SAFEAREA29_EY+10
&&pUnit->Draw.nY > SAFEAREA29_EY-10)
{ // 曹操有部隊到達指定位置
Pobject = pUnit;
}
}
}
if( Pobject == NULL )
break;
for ( i=0; i<PLAYER_GROUP_MAX; i++ )
{
if ( GAME.Players[AIPlayer].wGroup[i] != MAP_DATA_NONE )
{
pUnit = MAP_GetUnit( GAME.Players[AIPlayer].wGroup[i] );
Assert( pUnit );
Assert( EYE_IfUnitIsGen( pUnit ) );
if( EYE_IfUnitIsDead( pUnit ) == TRUE
|| pUnit->Status.bIRQ == TRUE )
continue;
//使用火計
EventPos[Level][1] = 1;
// 人為地增加火攻所必須的謀略值
DATA_Lib.Gen[pUnit->Gen.nID].nMouLue += RUN_MOULUE_nConsume[HUOGONG];
struct CTRL_TASK_STRUCT Task;
CTRL_TASK_Clear( &Task );
Task.nID = pUnit->nID;
Task.nTaskID = JIMOU;
Task.nTaskIDEx2 = HUOGONG;
Task.nTaskIDEx = 1; // MOUSE_HITRESULT_GROUND
Task.nParam1 = 0;
Task.nParam2 = SAFEAREA29_EX;
Task.nParam3 = SAFEAREA29_EY;
Task.bDone = TRUE;
// 下達命令
CTRL_TASK_DeployByComputer( AIPlayer, &Task );
}
}
}
break;
case 30:
{
UNIT_STRUCT * Pobject1;
WORD Pos1=0;
UNIT_STRUCT * Pobject2;
WORD Pos2=0;
UNIT_STRUCT * Pobject3;
WORD Pos3=0;
for (i=0;i<PLAYER_GROUP_MAX;i++)
{
if ( GAME.Players[AIPlayer].wGroup[i] != MAP_DATA_NONE )
{
pUnit = MAP_GetUnit( GAME.Players[AIPlayer].wGroup[i] );
Assert( pUnit );
Assert( EYE_IfUnitIsGen( pUnit ) );
if ( EYE_IfUnitIsDead( pUnit ) )
continue;
if ( pUnit->Gen.nID == 34 )
{
//趙云
Pobject1=pUnit;
Pos1=1;
}
else if ( pUnit->Gen.nID == 35 )
{
// 張飛
Pobject2=pUnit;
Pos2=1;
}
else if ( pUnit->Gen.nID == 36 )
{
// 關羽
Pobject3=pUnit;
Pos3=1;
}
}
}
for (i=0;i<PLAYER_GROUP_MAX;i++)
{
if ( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
{
pUnit = MAP_GetUnit( GAME.Players[GAME.nMe].wGroup[i] );
Assert( pUnit );
Assert( EYE_IfUnitIsGen( pUnit ) );
if( !EYE_IfUnitIsDead( pUnit ) )
{
// 任何將領到達界碑,游戲結束
if (pUnit->Draw.nX > SAFEAREA30_EX-10
&&pUnit->Draw.nX < SAFEAREA30_EX+10
&&pUnit->Draw.nY < SAFEAREA30_EY+10
&&pUnit->Draw.nY > SAFEAREA30_EY-10)
{
ret = 1;
break;
}
}
//曹操
if ( !EYE_IfUnitIsDead( pUnit )
&& pUnit->Gen.nID == 60 )
{
if (Pos1 == 1 && EventPos[Level][0] == 0)
{
// 曹操遇到趙云,曹操方士氣減少20
if (pUnit->Draw.nX < Pobject1->Draw.nX+10
&&pUnit->Draw.nX > Pobject1->Draw.nX-10
&&pUnit->Draw.nY < Pobject1->Draw.nY+10
&&pUnit->Draw.nY > Pobject1->Draw.nY-10)
{
EventPos[Level][0]=1;
//FACE_ShowEvent(9);
// Nov.21.1997
PostMessage( hwndGame, WM_SHOW_EVENT, 9, 0 );
TY_BateMorale(GAME.nMe, -20);
break;
}
}
if (Pos2 == 1 && EventPos[Level][1] == 0)
{
// 曹操遇到張飛,曹操方士氣減少20
if (pUnit->Draw.nX < Pobject2->Draw.nX+10
&&pUnit->Draw.nX > Pobject2->Draw.nX-10
&&pUnit->Draw.nY < Pobject2->Draw.nY+10
&&pUnit->Draw.nY > Pobject2->Draw.nY-10)
{
EventPos[Level][1]=1;
FACE_ShowEvent(10);
// Nov.21.1997
PostMessage( hwndGame, WM_SHOW_EVENT, 10, 0 );
TY_BateMorale(GAME.nMe, -20);
break;
}
}
if (Pos3 == 1 && EventPos[Level][2] == 0)
{
// 曹操遇到關羽,游戲結束
if (pUnit->Draw.nX < Pobject3->Draw.nX+10
&&pUnit->Draw.nX > Pobject3->Draw.nX-10
&&pUnit->Draw.nY < Pobject3->Draw.nY+10
&&pUnit->Draw.nY > Pobject3->Draw.nY-10)
{
EventPos[Level][2]=1;
//FACE_ShowEvent(11);
// Nov.21.1997
//PostMessage( hwndGame, WM_SHOW_EVENT, 11 );
ret = 1;
break;
}
}
}
break;
}
}
}
break;
} // end of Switch
return ret;
}
inline BOOL EVENT_EndInTime( int nGameID )
{
switch( nGameID )
{
case 21: // 劉備撤出戰場,被消滅
case 22: // 三天內滅劉備軍,曹操分支一
break;
}
return FALSE;
}
inline BOOL EVENT_FightSingle( int nGameID, int nGenID1, int nGenID2 )
{
//case 8: // 單挑夏侯恩
return FALSE;
}
inline BOOL EVENT_Number( int nGameID )
{
//case 24: // 十天后,我軍人數超過敵人
return FALSE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -