
//------------------------------------------------------------------------------------
//檢查某劇情是否為無效資料
bool CheckAutoPlot();
bool CheckRangePlot();
bool CheckTouchPlot();	
bool CheckDeadPlot();
bool CheckSayPlot();

bool CheckClientAutoPlot();
//------------------------------------------------------------------------------------

bool    IsPlayer();
bool    IsNPC();
bool	IsQuestNPC();
bool    IsItem();
bool    IsFlag();
bool	IsMirror();
bool    IsBodyEmpty( int Pos );
bool    IsBankEmpty( int Pos );

bool    IsAttack();
bool	IsMove();					//移動
bool	IsSit();
//bool	IsSpell();					//施法
bool	IsDead();					//死亡
bool	IsFollow();					//跟隨
bool	IsWalk();					//跑步
bool    IsTrade();
bool    IsAttackMode( );
bool    IsSpell();
bool    IsUnderAttack();

void    IsAttack( bool Value ); 
void	IsSit( bool Value );
//void	IsMove( bool Value  );		//移動
//void	IsSpell( bool Value  );		//施法
void	IsDead( bool Value );		//死亡
void	IsFollow( bool Value );		//跟隨
void	IsWalk( bool Value );		//跑步
void    IsTrade( bool Value );
void    IsAttackMode( bool Value );


bool    IsPet( RoleDataEx* PetOwner );

//是否資料可以寫入(如果換區中 或 要刪除中 或是 Mirror物件 都不可寫入)
bool	IsRoleDataWriteable( );
//************************************************************************************
//攻擊相關資訊
//************************************************************************************
//檢查是否為朋友
bool	CheckFriend( RoleDataEx* Target );

//檢查是否敵對
bool	CheckEnemy( RoleDataEx*	Target );

//檢查是否可幫助
bool	CheckHelp( RoleDataEx*	Target );

//檢查此物件是否致能
bool	CheckEnabled( );

//檢查是否要收尋敵人
bool	CheckSearchEnemy( );			

//檢查是否可以反擊
bool	CheckStrikback( );

//檢查是否可以攻擊
bool	CheckAttackable( RoleDataEx* Target );			

//檢查是否可以物理攻擊
bool	CheckPhyAttack( RoleDataEx* Target );
//檢查是否可以法術攻擊
bool	CheckMagicAttack( RoleDataEx* Target );


//檢查兩物件距離是否可以攻擊
bool	CheckMainAttackRange( RoleDataEx* Target );
bool	CheckSecAttackRange( RoleDataEx* Target );

//檢查是否要計算仇恨值
bool	CheckCalHate( );

//檢查魔法是否命中
bool    CheckMagicHit( RoleDataEx* Target , GameObjDbStructEx* OrgDB );

//檢查是否Miss 
//ATTACK_DMGTYPE_ENUM	CheckMissType( RoleDataEx* , AttackHandTypeENUM Type );

//檢查某物件是否在視野內
//傳入目標物 可視角度 可視距離
//bool	CheckInSight( RoleDataEx* Target , float Angle , float Len );
bool	CheckInSight( RoleDataEx* Target , float Angle , GameObjDbStructEx* OwnerOrgDB );


//檢查是否可以要請人入隊伍
bool	CheckInvitable( RoleDataEx* Target );

//簡查是否要停止攻擊
bool	CheckStopAttack();

//檢查是否可以移動
bool	CheckMoveable	( );

//檢查是否可以施法
bool	CheckCanSpell( RoleDataEx* Target , float TargetX , float TargetY , float TargetZ , GameObjDbStructEx* Magic );
//第一次施法檢查
bool	CheckCanBeginSpell( RoleDataEx* Target , float TargetX , float TargetY , float TargetZ , GameObjDbStructEx* Magic );

//與目標關係檢查
bool	CheckRelation( RoleDataEx* Target , GameObjectRelationENUM Relation );

//簡查施法必要消費 與 cooldown
bool	CheckSpellMagicCost( GameObjDbStructEx* Magic );

//檢查是否魔法被中斷
bool	CheckMagicInterrupt( );

//檢查是否可以對目標失法
bool	CheckUseItem(  int TargetID , float TargetX , float TargetY , float TargetZ  , int Pos , int Type , ItemFieldStruct&  Item );

//檢查是否要逃跑
bool    CheckEscape( RoleDataEx* Target );

//檢查時間( G_SysTime  >= Time )表示時間到了
static bool	CheckTime( int Time );

//檢查是否已經有某輔助法術
bool	CheckHasAssistMagic( GameObjDbStructEx* MagicBaseDB );
