📄 charinfo.h
字号:
{
m_nCurPoint = nPoint;
}
int GetCurrentPoint() const
{
return m_nCurPoint;
}
private:
int m_nMaxPoint;
int m_nCurPoint;
};
//
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// 某腐磐 沥焊俊 包茄 努贰胶
class CBaseArena;
class CArenaTeam;
class CCharInfo : public CHAR_DATA
{
public:
CCharInfo();
public:
void InitCombat();
void IncAbility(BYTE nType);
void DecAbility(BYTE nType);
void ResetAbility(BYTE nCombat);
void DivideAbility(BYTE nNext);
void ConvertTacticsLevel(BYTE nKind);
void Message(BYTE nType, BYTE nKind, WORD nNumber);
bool IncExperience(int nExp); // CSD-030930
bool DecExperience(bool bNK); // CSD-030930
bool IncTacticExp(BYTE nKind, int Exp); // CSD-030930
bool DecTacticExp(BYTE nKind, bool bNK); // CSD-030930
int GetWeaponSkill();
int GetAbility(BYTE nType) const;
int GetNpcAttack() const;
int GetNpcDefence() const;
int GetNpcMagic() const;
int GetNpcDefence(BYTE nType) const;
int GetNpcStrikePiercing() const; // CSD-021024
int GetNpcMagicPiercing() const; // CSD-021024
int GetNpcStunAvoid() const; // CSD-021024
int GetNpcSlowAvoid() const; // CSD-021024
int GetNpcPoisonAvoid() const; // CSD-021024
int GetNpcBlindAvoid() const; // CSD-021024
int GetNpcDrainAvoid() const; // CSD-021024
int GetNpcFreezeAvoid() const; // CSD-021024
int GetMovePower(BYTE nType) const;
int GetDistance(int nX, int nY) const;
int GetRiseFall(int nX, int nY) const;
int GetWeaponKind() const;
int GetTacticsKind() const;
int GetCombatValue(int nIndex) const;
int GetPureLife() const;
int GetExtendAc() const;
int GetItemEffectNumber() const; // CSD-031007
void GetStepInfo(char* pData, int nSize);
void SetStepInfo(char* pData, int nCount);
int CorrectCombatAttack(int nCombat, int nResult) const;
int CorrectCombatDefense(int nCombat, int nResult) const;
int CorrectItemEffect() const; // CSD-031007
bool LevelUpAbility();
bool LevelUpTactics(int nKind);
bool LevelUpCombat(int nKind, int nPoint);
bool ChangeUpAddExp(int nExp); // CSD-TW-030624
bool ChangeUpAddExpBonus(int nExp); // CSD-TW-030624
bool ChangeUpTacExp(int nType, int nExp); // CSD-TW-030624
void GenerateNpcName();
void AutoAttribute();
void SetAttribute(int nRace);
bool IsShield() const;
bool IsArrow() const;
bool IsLimit(int nPoint = 0) const;
bool IsEnableCombat(BYTE nCombat) const;
void Rare_Squad();
void Rare_Eat();
void Rare_Inv();
void Rare_Quick();
void Rare_Equip();
void CalcRareEffect(int iFlag);
bool IsLimitedAge( const int nLimitedAge){ return ( m_nUserAge > nLimitedAge ? false:true); }; // 030929 kyo //怕惫俊辑 荤侩窍绰 蜡历唱捞 力茄
public:
inline int IncLife(int nVolume, int nMax);
inline int DecLife(int nVolume, int nMin);
inline int IncMana(int nVolume, int nMax);
inline int DecMana(int nVolume, int nMin);
inline int IncHungry(int nVolume, int nMax);
inline int DecHungry(int nVolume, int nMin);
inline int IncCombat(int nVolume, int nMax);
inline int DecCombat(int nVolume, int nMin);
short GetServerID() const { return m_idServer; } // CSD-HK-030830
int GetLevel() const { return m_nLevel; } // CSD-030806
int GetGuildCode() const { return m_nGuildCode; } // CSD-030806
int GetReservedPoint() const { return m_gnAbility.GetPoint(); }
int GetCombatPoint() const { return m_gnCombat.GetPoint(); }
int GetDualClass() const { return m_nDualCls; }
int GetClassStep() const { return m_nClsStep; }
int GetExperienceStep() const { return m_nExpStep; }
int GetTacticsStep(int nIndex) const { return m_aTacStep[nIndex]; }
int GetNK(int nNation) const { return nk[nNation]; }
int GetCombatLevel(int nIndex) const { return Skill[nIndex - 100]; }
int GetWanted() const { return m_bWanted; }
CBaseArena* GetJoinArenaGame() const { return m_pArenaGame; } // CSD-030509
CArenaTeam* GetJoinArenaTeam() const { return m_pArenaTeam; } // CSD-030509
void SetServerID(short idServer) { m_idServer = idServer; } // CSD-HK-030829
void SetLevel(int nLevel) { m_nLevel = nLevel; } // CSD-030806
void SetGuildCode(int nGuildCode) { m_nGuildCode = nGuildCode; } // CSD-030806
void SetReservedPoint(int nPoint) { m_gnAbility.SetPoint(nPoint); }
void SetCombatPoint(int nPoint) { m_gnCombat.SetPoint(nPoint); }
void SetDualClass(int nDual) { m_nDualCls = __int8(nDual); }
void SetClassStep(int nStep) { m_nClsStep = __int8(nStep); }
void SetExperienceStep(int nStep) { m_nExpStep = __int8(nStep); }
void SetTacticsStep(int nIndex, int nStep) { m_aTacStep[nIndex] = __int8(nStep); }
void SetCombatLevel(int nIndex, int nLevel) { Skill[nIndex - 100] = nLevel; }
void SetWanted(bool bWanted) { if (IsPlayer()) m_bWanted = bWanted; }
void SetJoinArenaGame(CBaseArena* pGame) { m_pArenaGame = pGame; } // CSD-030509
void SetJoinArenaTeam(CArenaTeam* pTeam) { m_pArenaTeam = pTeam; } // CSD-030509
void IncReservedPoint(int nPoint = 1) { m_gnAbility.Increase(nPoint); }
void DecReservedPoint(int nPoint = 1) { m_gnAbility.Decrease(nPoint); }
void IncCombatPoint(int nPoint = 1) { m_gnCombat.Increase(nPoint); }
void DecCombatPoint(int nPoint = 1) { m_gnCombat.Decrease(nPoint); }
bool IsDead() const { return (Hp <= 0) ? true:false; }
bool IsHungry() const { return (Hungry <= 0) ? true:false; }
bool IsFullLife() const {return (Hp >= HpMax) ? true:false; }
bool IsFullMana() const {return (Mana >= ManaMax) ? true:false; }
bool IsFullHungry() const {return (Hungry >= HungryMax) ? true:false; }
bool IsFullCombat() const {return (Cp >= CpMax) ? true:false; } // CSD-030506
bool IsPlayer() const { return (SprType < SPRITETYPE_NPC) ? true:false; }
bool IsNpc() const { return (SprType > SPRITETYPE_CHARACTER) ? true:false; }
bool IsDual() const { return m_nClsStep > 0; }
bool IsUltraNK(int nNation) const { return (nk[nNation] >= ULTRA_NK) ? true:false; }
bool IsJoinArenaGame() const { return (m_pArenaGame == NULL) ? false:true; } // CSD-030509
bool IsJoinArenaTeam() const { return (m_pArenaTeam == NULL) ? false:true; } // CSD-030509
bool IsLevelUp() const { return (GetLevel() < MAX_EXP_LEVEL) ? true:false; }
bool IsLevelUp(int nLevel) const { return (nLevel < MAX_TAC_LEVEL) ? true:false; }
bool IsIgnoreNormalLevel() const { return m_bsAttr[IGNORE_NORMAL_LEVEL]; }
bool IsIgnorePhysicalAttack() const { return m_bsAttr[IGNORE_STRIKE_ATTACK]; }
bool IsIgnorePhysicalDefence() const { return m_bsAttr[IGNORE_STRIKE_DEFENSE]; }
bool IsIgnoreMagicAmplify() const { return m_bsAttr[IGNORE_MAGIC_AMPLIFY]; }
bool IsIgnoreMagicResist() const { return m_bsAttr[IGNORE_MAGIC_RESIST]; }
void SendCharInfoBasic(BYTE nKind, DWORD dwData) const; // CSD-TW-030620
void SendCharInfoTactic(BYTE nKind) const; // CSD-TW-030620
//021030 lsw 背券 函版
int GetExchangeTargetId()const{return m_iExchangeTargetId;}//芭贰 措惑阑 罐绰促
const char* GetExchangeTargetName()const{return &m_szExchangeTargetName[0];}//芭贰 措惑阑 罐绰促
void SetExchangeTarget(const int iTradeTarget,const char* szTargetName)
{
m_iExchangeTargetId = iTradeTarget;
strcpy(m_szExchangeTargetName,szTargetName);
}//芭贰 措惑阑 汲沥 茄促
int GetExchangeType()const{return m_iExchangeType;}//芭贰 鸥涝阑 罐绰促
void SetExchangeType(const int iTradeType){m_iExchangeType = iTradeType;}//芭贰 鸥涝阑 汲沥茄促
int GetExchangeState()const{return m_iExchangeState;}//芭贰 惑怕甫 罐绰促
void SetExchangeState(const int iStateType){m_iExchangeState = iStateType;}//芭贰 惑怕甫 汲沥茄促
void SetTradeMode(const bool bIsTradeOn){m_bExchangeMode = bIsTradeOn;}//芭贰 惑怕甫 汲沥茄促
bool IsTradeOn()const{return !m_bExchangeMode;}//Trade On Off 蔼阑 府畔茄促. m_bExchangeMode --> false 老版快 Trade On 捞促
void ClearExchangeInfo()//芭贰 沥焊甫 努府绢 矫糯
{
::memset( give, 0, sizeof( K_ITEM ) * MAX_EXCHANGE_ITEM );
::memset( recv, 0, sizeof( K_ITEM ) * MAX_EXCHANGE_ITEM );
m_iExchangeTargetId =0;
m_iExchangeType = EXCHANGE_TYPE_NO;
m_iExchangeState = EXCHANGE_STATE_READY;
::strcpy(m_szExchangeTargetName,"");
}
bool IsCounselor() const { return (name_status.counselor) ? true:false; }
bool IsReporter() const { return (name_status.reporter) ? true:false; }
bool IsPayedUser() const { return (BT_FREE != GetBillingType()) ? true:false; } //捞 蜡历绰 捣阑 辰 蜡历牢啊?
short GetBillingType()const{return m_nBillingType;}
void SetBillingType(const short wValue){m_nBillingType = wValue;}
DWORD GetBankMoney() const
{ //< CSD-030723
return m_dwBankMoney;
} //> CSD-030723
void SetBankMoney(const DWORD dwMoney, const eBankMoneyChangeType BMCT)
{ //< CSD-030723
::SaveChangeBankMoney(GetServerID(), GetBankMoney(), dwMoney, BMCT);
m_dwBankMoney = dwMoney;
} //> CSD-030723
bool IncBankMoney(const DWORD dwMoney, const eBankMoneyChangeType BMCT, const bool bSend = true)
{ //< CSD-030723
if (DWORD(MAX_BANK_MONEY - m_dwBankMoney) >= dwMoney) //ULONG_MAX
{
SetBankMoney(m_dwBankMoney + dwMoney, BMCT);
if (bSend)
{ //篮青捣 盎脚
SendCharInfoBasic(BANKMONEY, GetBankMoney());
}
return true;
}
return false;
} //> CSD-030723
bool DecBankMoney(const DWORD dwMoney, const eBankMoneyChangeType BMCT, const bool bSend = true)
{ //< CSD-030723
if (m_dwBankMoney >= dwMoney) //波尘 捣焊促 乐绰 捣捞 腹栏搁
{ //篮青捣 盎脚
SetBankMoney(m_dwBankMoney - dwMoney, BMCT);
if(bSend)
{
SendCharInfoBasic(BANKMONEY, GetBankMoney());
}
return true;
}
return false;
} //> CSD-030723
bool IsEventRecv() { return m_bEventRecv; } ; // BBD 040308
void SetEventRecv(bool val) { m_bEventRecv = val; } ; // BBD 040308
protected:
int GetExtStr() const;
int GetExtCon() const;
int GetExtDex() const;
int GetExtWis() const;
int GetExtInt() const;
int GetExtMove() const;
int GetExtChar() const;
int GetExtEndu() const;
int GetExtMor() const;
int GetExtLuck() const;
int GetExtWs() const;
int GetExtPs() const;
int GetRemainStr() const;
int GetRemainCon() const;
int GetRemainDex() const;
int GetRemainWis() const;
int GetRemainInt() const;
int GetRemainMove() const;
int GetRemainChar() const;
int GetRemainEndu() const;
int GetRemainMor() const;
int GetRemainLuck() const;
int GetRemainWs() const;
int GetRemainPs() const;
int CalcNewLife(BYTE nCombat) const;
int CalcNewMana(BYTE nCombat) const;
int CalcNewHungry(BYTE nCombat) const;
int CalcNewCombat() const;
int CalcNewAc() const;
int CalcWeaponHit() const;
int CalcCriticalHit(BYTE nActive, BYTE nPassive) const;
int CalcTacticExp(BYTE nKind, DWORD dwExp) const;
void AddPhysicalTacExp1(int nKind, int nExp); // CSD-TW-030624
void AddPhysicalTacExp2(int nKind, int nExp); // CSD-TW-030624
void AddPhysicalTacExp3(int nKind, int nExp); // CSD-TW-030624
void AddMagicTacExp1(int nKind, int nExp); // CSD-TW-030624
void AddMagicTacExp2(int nKind, int nExp); // CSD-TW-030624
private:
bool IsLimitExp(int nLevel);
bool IsLimitTac(int nKind);
protected:
enum
{
IGNORE_NORMAL_LEVEL = 0,
IGNORE_STRIKE_ATTACK = 1,
IGNORE_STRIKE_DEFENSE = 2,
IGNORE_MAGIC_AMPLIFY = 3,
IGNORE_MAGIC_RESIST = 4,
IGNORE_MAX = 5
};
bitset<IGNORE_MAX> m_bsAttr; // 加己蔼
protected:
mutable __int8 m_nCriticalCount; // CSD-031007 : 农府萍漠 洒飘甫 困茄 墨款飘
mutable __int8 m_nItemEffectCount; // CSD-031007 : 酒捞袍 瓤苞甫 困茄 墨款飘
private:
short m_idServer; // CSD-HK-030829
int m_nLevel; // CSD-030806
int m_nGuildCode; // CSD-030806
__int8 m_nDualCls; // 掂倔 努贰胶 辆幅
__int8 m_nClsStep; // 努贰胶 窜拌
__int8 m_nExpStep; // 版氰摹 窜拌
__int8 m_aTacStep[NO_TAC]; // 琶平 版氰摹 窜拌
bool m_bEventRecv; // BBD 040308 捞亥飘 酒捞袍 吝汗 瘤鞭夸没阑 阜绰 敲贰弊
private:
CGainPoint m_gnAbility; // 棵副 荐 乐绰 绢呼矾萍 器牢磐
CGainPoint m_gnCombat; // 棵副 荐 乐绰 傈捧胶懦 器牢磐
bool m_bWanted; // 泅惑裹 咯何
DWORD m_dwBankMoney; //篮青捣
short m_nBillingType; //苞陛 鸥涝
CBaseArena* m_pArenaGame; // CSD-030509
CArenaTeam* m_pArenaTeam; // CSD-030509
};
//
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// 牢扼牢 窃荐
inline int CCharInfo::IncLife(int nVolume, int nMax = 100)
{ // Life 刘啊
const int nOld = Hp;
const int nLimit = HpMax*nMax/100;
Hp += nVolume;
if (Hp > nLimit) Hp = nLimit;
return Hp - nOld;
}
inline int CCharInfo::DecLife(int nVolume, int nMin = 0)
{ // Life 皑家
const int nOld = Hp;
const int nLimit = HpMax*nMin/100;
Hp -= nVolume;
if (Hp < nLimit) Hp = nLimit;
return nOld - Hp;
}
// 付过仿俊 包访等 Method
inline int CCharInfo::IncMana(int nVolume, int nMax = 100)
{ // Mana 刘啊
const int nOld = Mana;
const int nLimit = ManaMax*nMax/100;
Mana += nVolume;
if (Mana > nLimit) Mana = nLimit;
return Mana - nOld;
}
inline int CCharInfo::DecMana(int nVolume, int nMin = 0)
{ // Mana 皑家
const int nOld = Mana;
const int nLimit = ManaMax*nMin/100;
Mana -= nVolume;
if (Mana < nLimit) Mana = nLimit;
return nOld - Mana;
}
inline int CCharInfo::IncHungry(int nVolume, int nMax = 100)
{ // 硅绊悄沥档 刘啊
const int nOld = Hungry;
const int nLimit = HungryMax*nMax/100;
Hungry += nVolume;
if (Hungry > nLimit) Hungry = nLimit;
return Hungry - nOld;
}
inline int CCharInfo::DecHungry(int nVolume, int nMin = 0)
{ // 硅绊悄沥档 皑家
const int nOld = Hungry;
const int nLimit = HungryMax*nMin/100;
Hungry -= nVolume;
if (Hungry < nLimit) Hungry = nLimit;
return nOld - Hungry;
}
inline int CCharInfo::IncCombat(int nVolume, int nMax = 100)
{ // 傈捧胶懦 荤侩啊瓷樊 刘啊
const int nOld = Cp;
const int nLimit = CpMax*nMax/100;
Cp += nVolume;
if (Cp > nLimit) Cp = nLimit;
return Cp - nOld;
}
inline int CCharInfo::DecCombat(int nVolume, int nMin = 0)
{ // 傈捧胶懦 荤侩啊瓷樊 皑家
const int nOld = Cp;
const int nLimit = CpMax*nMin/100;
Cp -= nVolume;
if (Cp < nLimit) Cp = nLimit;
return nOld - Cp;
}
//
///////////////////////////////////////////////////////////////////////////////
#endif // !defined(AFX_CHARINFO_H__1A212137_3131_4DD3_8343_EE42343C165E__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -