Files

141 lines
4.3 KiB
C
Raw Permalink Normal View History

2025-01-09 17:45:40 +08:00
#pragma once
/***************************************************************/
/*
/* 属性子系统
/* 1) 根据玩家的1级属性计算玩家的2级属性
/* 2) 根据玩家的等级,性别,职业,来决定玩家的模型
/* 3) NPC的将初始化系统,进行一些属性的改变运算
/***************************************************************/
#pragma once
class CCreature;
class CPropertySystem:
public CEntitySubSystem<enPropertySystemID,CPropertySystem,CCreature>
{
public:
//重载这个函数,初始化玩家的一些2级属性
bool Initialize(void *data,SIZE_T size);
/// 玩家升级的时候调用,需要计算一下模型ID是否需要改变
inline VOID OnLevelUp(){ResertProperty();}
/// 重置属性
bool ResertProperty();
/*
* Comments: 便
* Param CREATURBATTLEEDATA & data: 2
* Param CAttrCalc & cal:
* @Return VOID:
*/
static VOID InitMonsterCalculator( CREATURBATTLEEDATA & data, CAttrCalc& cal );
/*
* Comments:12
* Param CAttrCalc & cal:,12
* Param PLEVEL1PROPERTYTRANSFER pProp:
* @Return VOID:
*/
static VOID Level1ValuePropertyTransfer( CAttrCalc& cal,PLEVEL1PROPERTYTRANSFER pProp); //
/*
* Comments:+
* Param CAttrCalc & cal:
* Param PENTITYLEVELPROPERTY pPropTable:
* Param INT_PTR nLevel:
* @Return void:
*/
static void InitEntityLevelProperty(CAttrCalc &cal,PENTITYLEVELPROPERTY pPropTable,INT_PTR nLevel);
/*
* Comments:boss难度等级
* Param PMONSTERCONFIG pConfig:
* @Return bool:true
*/
static bool calcMonsterLevelHard( PMONSTERCONFIG pConfig,CAttrCalc &cal,INT_PTR nBornLevel = 0, const INT_PTR nLevel=0);
/*
* Comments:
* @Param INT_PTR nPropertyType:
* @Param int nAddValue:
* @Return void:
* @Remark:
*/
void AddPropertyValue(INT_PTR nPropertyType, int nAddValue);//
/*
* Comments:
* @Param INT_PTR nPropertyType:
* @Param int nAddValue:
* @Return void:
* @Remark:
*/
void AddPropertyRatioValue(INT_PTR nPropertyType, int nAddValue);//
#ifdef _DEBUG
public:
CAttrCalc m_Debug;
#endif
private:
//设置玩家的属性,把计算器里的属性写到属性集
VOID SetEntityProperty(CAttrCalc& cal);
/// 初始化怪物的属性,把结果写到计算器
VOID InitMonsterProperty(CAttrCalc& cal);
//初始化玩家初始属性
bool InitActorInitProperty(CAttrCalc &cal);
//初始化玩家的等级属性信息,把结果写到计算器
bool InitActorLevelProperty(CAttrCalc& cal);
//初始化玩家的转生属性信息,把结果写到计算器
bool InitActorCircleProperty(CAttrCalc &calc);
//初始化玩家的祝福属性信息,把结果写到计算器
bool InitActorBlessProperty(CAttrCalc &calc);
//初始化玩家的经脉属性信息,把结果写到计算器
bool InitActorMeridianProperty(CAttrCalc &calc);
//初始化玩家的狂暴属性信息,把结果写道计算器
bool InitActorFrenzyProperty(CAttrCalc &calc);
//初始化玩家的官阶属性信息,把结果写道计算器
bool InitActorOfficeProperty(CAttrCalc &calc);
/*
* Comments:
* @Return int: 1
*/
int GetDefaultMoveSpeed();
/*
* Comments:
* @Return int: ms
*/
int GetDefaultAttackSpeed();
/**
* @brief:
* @param[in]calc:
*/
void updateMonsterDynProp(CAttrCalc &calc);
//计算角色头衔属性
bool CalcActorHeadTitleProperty(CAttrCalc &calc);
//获取防火率
unsigned int GetFireDefenseRate();
/*
* Comments:
* Param PMONSTERCONFIG pConfig:
* @Return bool:true
*/
bool CalcPetBaseProperty(CAttrCalc &calc, const INT_PTR nMonsterId, const INT_PTR nLevel);
};