//------------------------------------------------------------------------------------------------------
//計算到某目標點的長度
float   Length( float X , float Y , float Z );
float   Length( RoleDataEx* Target );
float   Length( int TargetID );

//初始化角色計算數值
void	InitCal( );

//檢查角色資料是否有問題，如果有自動更正
void    InitCheckRoleData( );

//設定物品裝備資訊
void    ResetItemInfo( );

//記算法術與裝備
void    ReCalculateMagicAndEQ( );

//貝份定時檢查的資料,(用來比對資料不同時更新Client)
void    InitOnTimeCheck( );

//計匴所有角色數值 Att.Calculate
void	Calculate( );

//設定武器狀態
void	FixWeaponType();

//加上一個物品的屬性
bool	WearEQ( ItemFieldStruct* Field , int Pos );
//加上一個物件的屬性
bool	WearObject( GameObjDbStructEx* OrgDB , int Pos = -1 );
bool	WearObject( int OrgDBID , int Pos = -1 );
bool    WearMagic( int MagicID );
bool	WearSuit( int SuitID , int Count );

//計算兩人的關係
int     CalRelation( RoleDataEx* Target );

//基本仇恨值
int		BaseHate( RoleData* Target );

//他人影響 加HP 或加MP
void	AddHP( RoleDataEx* Target ,  int DHP );
void	AddMP( RoleDataEx* Target ,  int DMP );
void	AddSP( RoleDataEx* Target ,  int DMP );
void	AddSP_Sub( RoleDataEx* Target ,  int DMP );

//增加某一個人的仇恨值( 此怪物被 npc 或 pc 打)
//並做攻擊目標的轉換
bool	CalHate( RoleDataEx* Att , int Damage );
bool	CalTempHate( RoleDataEx* Att , int Damage );

void    OnTimeCalHate( );

void    ClearHate();

bool	ClearHate_One( int PlayerID );
/*
void    ClearHate();
void    ClearHate_NPC( );
void    ClearHate_Player( );
*/
//檢查攻擊模式
ATTACK_DMGTYPE_ENUM CheckAtkDmgType( RoleDataEx* Target , AttackHandTypeENUM Type );

//增減 Exp
void    Addexp( int Exp );

//取得法術攻擊數值
float   GetValue( MagicAttackCalENUM Type );

//加輔助法術
int    AssistMagic( RoleDataEx* Target , GameObjDbStructEx* OrgDB , int EffectTime = -1 );
int    AssistMagic( RoleDataEx* Target , int MagicID , int EffectTime = -1 );

//清除所有Buff
void    ClearAllBuff();

//清除Buff
bool    ClearBuff( int MagicID );
bool    ClearBuffByPos( int Pos );

//處理Buf的時效
void    BuffProc( );

//當打別人時 Buff 處理(自己與目標的處理)
void	OnAttackBuffProc( RoleDataEx* Target );


//攻擊距離
int	    MainAttackRange( RoleData* Target );
//攻擊距離(
int	    SecAttackRange( RoleData* Target );

//取得對某魔法進行抗性運算結果( + 加血 - 扣血 )
float	CalResistDMG( MagicResistENUM  MagicType , float Damage );
//------------------------------------------------------------------------------------------------------