Files
2022-10-26 12:25:11 +08:00

64 lines
1.9 KiB
C++

#pragma once
class Object;
class SKILL_EFFECT
{
private:
BASE_STATEINFO* status_info; // 항상 유효해야함
public:
DWORD dwStatusID;
int iRemainTime;
//BYTE m_byIconKind; // 아이콘 종류
//BYTE m_bDelType; // 삭제여부 ( 유저가 임의로 삭제할 수 있는 버프인가 )
DWORD dwSkillID;
eABILITY dwAbilityID;
BASE_ABILITYINFO AbilityInfo;
WORD wGroupId;
int iEffectID;
HANDLE hEffect;
eSKILLEFFECT_POS effect_position_type;
WORD effect_position_bone_index; //!< 본 인텍스 m_byEffectPos == eSKILLEFFECT_POS_BONE_INDEX 일때만 사용
WzVector effect_position_offset; //!< 계산된 위치에서 이동값
bool bApplyParentRotate; //!< 부모 회전값을 적용받을것인가
bool bApplyParentScale; //!< 부모 스케일값을 적용받을것인가
float fEffectHeight;
#ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE
WORD overlap_status_count_;
#endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE
public:
SKILL_EFFECT();
public:
static SKILL_EFFECT* CreateStatusEffect( DWORD status_code, DWORD remain_time );
static SKILL_EFFECT* CreateSkillStatusEffect( DWORD status_code, DWORD skill_code, DWORD remain_time, BASE_ABILITYINFO* ability_info );
//const BASE_STATEINFO* GetStateInfo() const { return status_info; }
LPCSTR GetStateName() { return status_info->m_szStateName; }
void CreateEffect( Character* character, DWORD target_object_key );
void UpdateEffect( Character* character );
WzID GetSkillEffectID() { return status_info->m_wzidEffectID.id; }
BYTE GetIconKind() { return status_info->m_byIconKind; }
BYTE GetDelType() { return status_info->m_bDelType; }
public:
~SKILL_EFFECT();
public:
BOOL Process(Object *pObject,DWORD dwTick);
};