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

373 lines
12 KiB
C++

#pragma once
//------------------------------------------------------------------------------
/**
@author
@since
@remarks
*/
#include "Monster.h"
#include "SetItemOptionInfoParser.h"
class MonsterGauge;
class NPCAttributes;
class PlayerAttributes;
class CWzUnitDraw;
class EquipmentContainer;
class SCSlotContainer;
class SkillAttrCalculator;
class ItemAttrCalculator;
class PlayerMonster : public Monster
{
public:
PlayerMonster( void );
virtual ~PlayerMonster( void );
protected:
//cPlayerData m_PlayerData;
int m_iCurTile;
int m_iOldTile;
DWORD m_dwOldTileAtt;
int m_iComboCount;
int m_iComboDelay;
virtual void InitContainer();
virtual void ReleaseContainer();
public:
virtual void SetMonsterInfo(BASE_NPCINFO *pInfo);
virtual void ApplyTerrainColor(BOOL bApply);
virtual void BeforeRefreshTileAtt();
virtual void AfterRefreshTileAtt();
virtual BOOL Create( DWORD dwObjectKey, DWORD dwID = 0 );
virtual void Destroy( void );
//void SetPlayerInfo(PLAYER_RENDER_INFO_EX* pPlayerInfo);
virtual float ProcessAnimation( DWORD dwTick ,WzEvent *pEvent = NULL,BOOL bIgnoreEvent = FALSE);
virtual int DoAction(PLAYER_ACTION *pAction);
virtual WzVector GetHeadBonePos();
void SetTransSkillCode(DWORD dwSkillCode);
DWORD GetTransSkillCode();
void ResetMoveFlag();
void SetMoveFlag(int MoveFlag);
void AddMoveFlag(int MoveFlag);
void RemoveMoveFlag(int MoveFlag);
BOOL CheckMoveFlag(int MoveFlag);
void SetComboDelay(int iDelay);
int GetComboDelay();
DWORD IncreaseComboCount();
void ResetJumpFlag();
void SetJumpFlag(int JumpFlag);
void AddJumpFlag(int JumpFlag);
void RemoveJumpFlag(int JumpFlag);
BOOL CheckJumpFlag(int JumpFlag);
int GetJumpFlag();
void SetOldJumpFlag(int iOldJumpFlag);
int GetOldJumpFlag();
float GetLandFrame();
void SetLandFrame(float fFrame);
int GetMoveFlag();
void SetOldMoveFlag(int iOldMoveFlag);
int GetOldMoveFlag();
void SetOldKeyboardDirection(WzVector *pVector);
WzVector GetOldKeyboardDirection();
virtual void SetSpecialMoveFlag(BYTE type);
BYTE GetSpecialMoveFlag();
void RefreshEquipData();
virtual void PlayDamageAnimation(BOOL bRight,BOOL bCritical);
virtual WzID GetCurrentReviveAnimation();
virtual void AnimateUnit();
#ifdef _DEV_TAIYO_OPTON_ADD
virtual BOOL CanUseSkillLimitCoolTime(SLOTCODE skillID, BOOL bShowFailMessage = FALSE);
#endif
virtual WzID GetCurrentAttackAnimation();
virtual WzID GetCurrentIdleAnimation();
virtual WzID GetCurrentMoveAnimation();
virtual WzID GetCurrentDeathAnimation();
virtual WzID GetCurrentSitAnimation();
virtual WzID GetCurrentSittingAnimation();
virtual WzID GetCurrentStandUpAnimation();
virtual WzID GetCurrentDamageAnimation(BOOL bRight,BOOL bCritical);
virtual WzID GetCurrentLeftTurnAnimation();
virtual WzID GetCurrentRightTurnAnimation();
virtual WzID GetCurrentLeftStepAnimation();
virtual WzID GetCurrentRightStepAnimation();
virtual WzID GetCurrentBackStepAnimation();
virtual WzID GetCurrentBlockAnimation();
virtual WzID GetCurrentSpecialLeftStepAnimation();
virtual WzID GetCurrentSpecialRightStepAnimation();
virtual WzID GetCurrentSpecialFrontStepAnimation();
virtual WzID GetCurrentSpecialBackStepAnimation();
virtual WzID GetCurrentJumpStartAnimation();
virtual WzID GetCurrentJumpKeepAnimation();
virtual WzID GetCurrentJumpEndAnimation();
virtual WzID GetCurrentJumpLandAnimation();
virtual WzID GetCurrentJumpEndRunAnimation();
virtual WzID GetCurrentJumpStunAnimation();
virtual WzID GetCurrentJumpStunKeepAnimation();
virtual WzID GetCurrentJumpStunEndAnimation();
virtual WzID GetCurrentCamAnimation();
virtual WzVector GetTrailBonePos(int index, int start);
virtual WzID GetTrailEffectCode();
virtual DWORD GetCurrentAttackStyle();
virtual void PlayEvadeAnimation();
virtual void PlayBlockAnimation();
virtual void SetIdleAnimation();
void ProcessStandAnimationDelay(DWORD dwTick);
BOOL SetCurrentAttackStyle(DWORD dwStyle,BOOL bCheck=TRUE);
void SetCurrentNomalAttackStyle(DWORD dwWeaponType);
BOOL CheckAttackStyle(DWORD dwStyle);
BOOL CheckStyleForWeapon(DWORD dwWeaponType);
void RefreshPunchStyle();
void PlayDamageSound(eWEAPONSOUNDKIND eSoundKind);
virtual void CreateDamageEffect(BOOL bCritical,BOOL bRight,DWORD dwAttackObjId);
virtual BOOL Process( DWORD dwTick );
virtual BYTE GetPCBangMode() { return FALSE;}
virtual void OpenCrossbow();
virtual void CloseCrossbow();
void ShotCrossbow();
void LaunchEtherWeapon();
int GetValkyrieShotDelay();
BOOL CanValkyrieAction();
virtual void ValkyrieShot(DWORD dwAttackSerial);
WzID GetValkyrieShotAnimation();
void ProcessValkyrieShot(DWORD dwTick);
virtual DWORD GetValkyrieShotSerial();
WzID GetValkyrieReloadAnimation();
int GetBulletCount();
void SetBulletCount(int iCount);
int DecreaseBulletCount();
void ValkyrieReload( BOOL bAnimation = TRUE );
virtual void OnDamage(const DAMAGE_PRAM &rDamage);
virtual void OnAttack(DWORD dwSkillCode);
virtual void OnFootStep(BOOL b2D = FALSE);
virtual void OnShotStart();
virtual void OnShotFire(int iShotCount);
virtual void OnShotEnd();
virtual void OnParalyzed();
virtual int GetShotCount();
BOOL IsFlyFinishWeapon();
public:
virtual BOOL Render( void );
virtual float GetMeshHeight();
virtual void RenderInfo();
virtual WzVector GetWeaponBonePos(int index);//Áö¿Ï virtual·Î º¯°æ
virtual WzVector GetArrowBonePos(int index);
virtual BOOL SetPosition( const WzVector& wvPos, int iTileIndex = -1);
virtual BOOL SetPosition( const HONGPOS& Pos );
virtual BASE_ITEMINFO * GetWeaponInfo();
int GetShotBlendBone();
//BASE_PLAYERINFO* GetCharInfo(){ return m_PlayerData.GetCharacterInfo();}
void SetPartVariation(int iPart, int iVariation);
WzColor GetEstablisherColor();
int GetComboCount();
void SetComboCount(int iCount);
void ProcessComboDelay(DWORD dwTick);
//eCHAR_TYPE GetClass();
void SetClass(eCHAR_TYPE eType);
virtual void SetExp(EXPTYPE dwExp);
virtual EXPTYPE GetExp();
virtual EXPTYPE GetNextExp();
virtual void SetLevel(LEVELTYPE LV);
virtual void SetAttackSpeedRatio(int iSpeed);
virtual void SetMoveSpeedRatio(int iSpeed);
virtual LEVELTYPE GetLevel();
virtual float GetMoveSpeedModifier();
virtual float GetAttackSpeedModifier();
virtual float GetAttackRange( void );
virtual BOOL IsRangedNormalAttack();
virtual void UpdateActiveSkillEffectAttr(SkillAttrCalculator &calc);
virtual DWORD CreateProjectile(Character *pTarget,int iArrowBone = 0);
virtual void CreatePopupMesh(
CODETYPE SkillCode,
INT64 iNumber,
eDAMAGEPOPUP_KIND eKind,
WzColor color,
BOOL bCritical,
BOOL bDoubleDamage,
float fMultiplier = 1.0f,
int iSecondary = -1,
WzColor secondarycol = WzColor_RGBA(0,0,0,0),
float fHeight = 0.0f,
BOOL bHero = FALSE
);
void ApplyStyleBuff( DWORD dwStyleCode ,SkillAttrCalculator &SkillCalc);
BOOL CanBeAttackTarget();
BOOL IsCasting();
void SetCast(BOOL bCast);
EXPTYPE GetAccumExp(LEVELTYPE LV);
void SetStandUp(BOOL bFlag);
BOOL IsStandUp();
public:
BOOL IsShowRenderinfo();
void SetInvisible( BOOL bInvisible ) { m_bInvisible = bInvisible; }
BOOL IsInvisible( void ) { return m_bInvisible; }
void SetInvincible( BOOL bInvincible ,int iTime=0) { m_bInvincible = bInvincible; m_iInvicibleTime=iTime;}
BOOL IsInvincible( void ) { return m_bInvincible; }
void SetKeyboardMoveTime(DWORD dwTime);
void AddKeyboardMoveTime(DWORD dwDelta);
DWORD GetKeyboardMoveTime();
#ifdef _NA_008185_20150402_COSTUME_ITEM_FOR_NPC
virtual void SetCostumeItemCode( SLOTCODE code );
virtual SLOTCODE GetCostumeItemCode();
#endif //_NA_008185_20150402_COSTUME_ITEM_FOR_NPC
#ifdef _NA_008633_20160104_ADD_DECORATECOSTUME
virtual void SetDecorateCostumeItemCode( SLOTCODE code );
virtual SLOTCODE GetDecorateCostumeItemCode();
#endif // _NA_008633_20160104_ADD_DECORATECOSTUME
private:
virtual void SetPolymorph( BOOL Active );
public:
int m_iJumpFlag;
int m_iOldJumpFlag;
WzVector vFoward;
WzVector vVisibleDest;
WzVector vSrc;
//WzVector vVisibleSrc;
float fSrcZ;
float fDestZ;
float m_fLandFrame;
DWORD dwVerticalMoveTime;
DWORD dwHorizonMoveTime;
BOOL bCreateJumpEndEffect;
BOOL bJumpStun;
DWORD dwCurTime;
BOOL bLinerMove;
float fRate;
BOOL bJumpEndEff;
BOOL bJumpStart;
float fJumpEndFrame;
int iJumpStunTime;
HANDLE hStunEff;
protected:
int m_iMoveFlag;
BYTE m_bSpecialMoveFlag;
int m_iOldMoveFlag;
WzVector m_vOldDirection;
int m_iValkyrieShotDelayTime;
int m_iValkyrieShotDelay;
int m_iValkyrieShotCount;
int m_iValkyrieShotRemain;
float m_fValkyrieShotSpeed;
int m_iValkyrieBulletCount;
int m_iValkyrieShotAnimVariation;
DWORD m_dwValkyrieShotSerial;
BOOL m_bValkyrieReload;
int m_iValkyrieShotAnimCount;
int m_iValkyrieShotAnimSet;
WORD m_wAttSpeedRatio;
WORD m_wMoveSpeedRatio;
DWORD m_dwAttackStyle;
DWORD m_dwOldAttackStyle;
DWORD m_dwKeyboardMoveTime;
DWORD m_dwDustTime;
BOOL m_bHideHelmet;
#ifdef _NA_000000_20120420_EQUIPMENTS_VISIBLE_WING
BOOL m_bHideWing;
#endif//_NA_000000_20120420_EQUIPMENTS_VISIBLE_WING
BOOL m_bInvincible;
int m_iInvicibleTime;
BOOL m_bCasting;
DWORD m_dwShieldTime;
DWORD m_dwTransSkillCode;
BOOL m_bInvisible;
BOOL m_bStandUp;
BOOL m_bRenderinfoState;
WzColor m_RenderinfoColor;
#ifdef _NA_008185_20150402_COSTUME_ITEM_FOR_NPC
SLOTCODE playermonster_costume_item_;
#endif //_NA_008185_20150402_COSTUME_ITEM_FOR_NPC
#ifdef _NA_008633_20160104_ADD_DECORATECOSTUME
SLOTCODE playermonster_decorate_costume_item_;
#endif // _NA_008633_20160104_ADD_DECORATECOSTUME
};
inline
void
PlayerMonster::SetSpecialMoveFlag(BYTE type)
{
m_bSpecialMoveFlag=type;
}
inline
BYTE
PlayerMonster::GetSpecialMoveFlag()
{
return m_bSpecialMoveFlag;
}
//------------------------------------------------------------------------------
/**
*/
inline
BOOL PlayerMonster::IsCasting()
{
return m_bCasting;
}
//------------------------------------------------------------------------------
/**
*/
inline
void PlayerMonster::SetCast(BOOL bCast)
{
m_bCasting=bCast;
}
//------------------------------------------------------------------------------
/**
*/
inline
void PlayerMonster::SetStandUp(BOOL bFlag)
{
m_bStandUp=bFlag;
}
//------------------------------------------------------------------------------
/**
*/
inline
BOOL PlayerMonster::IsStandUp()
{
return m_bStandUp;
}