#pragma once //------------------------------------------------------------------------------ /** ¿ùµå »óÀÇ ´Ù¸¥ À¯Àú ij¸¯ÅÍ Æ¯¼º Á¤ÀÇ @author @since @remarks -2005.06.07 ¼Ò½º Á¤¸®,SCPlayer Æ÷ÇÔ °ü°è·Î º¯°æ(Áö¿Ï) - */ #include "Character.h" #include "SetItemOptionInfoParser.h" #include "PlayerDef.h" #include "PlayerData.h" class CWzUnitDraw; class EquipmentContainer; class SCSlotContainer; class SkillAttrCalculator; class ItemAttrCalculator; class Rider; class RiderContainer; class cMoveFlag { private: int m_MoveFlag; public: cMoveFlag() { m_MoveFlag = 0; } void Reset() { m_MoveFlag = 0; } int GetMoveFlag() { return m_MoveFlag; } void SetMoveFlag( int MoveFlag ) { m_MoveFlag = MoveFlag; } BOOL IsMove() { // ÅÏÀº À̵¿ÀÌ ¾Æ´Ô return (m_MoveFlag & KEYBOARDMOVE_FOWARD) || (m_MoveFlag & KEYBOARDMOVE_BACKWARD) || (m_MoveFlag & KEYBOARDMOVE_LEFTSTEP) || (m_MoveFlag & KEYBOARDMOVE_RIGHTSTEP); } void AddForward() { m_MoveFlag |= KEYBOARDMOVE_FOWARD; } void AddBackward() { m_MoveFlag |= KEYBOARDMOVE_BACKWARD; } void AddLeftTurn() { m_MoveFlag |= KEYBOARDMOVE_LEFTTURN; } void AddRightTurn() { m_MoveFlag |= KEYBOARDMOVE_RIGHTTURN; } void AddLeftStep() { m_MoveFlag |= KEYBOARDMOVE_LEFTSTEP; } void AddRightStep() { m_MoveFlag |= KEYBOARDMOVE_RIGHTSTEP; } }; class Player : public Character//, public SCPlayer { public: Player( void ); virtual ~Player( void ); protected: cPlayerData m_PlayerData; //¼­¹ö Ŭ¶óÀÌ¾ðÆ® °ø¿ë ¼Ó¼º RiderContainer * m_pRiderContainer; int m_iCurTile; // ÇöÀç ¹â°í Àִ ŸÀÏ ¼Ó¼º, ¿£Áø ³»ºÎ ¼Ó¼º °Ë»ç°¡ ¹æÀ» ±â¹ÝÀ¸·Î ¼±Çü °Ë»öÀ» ÇÔÀ¸·Î ¾ò¾î À̵¿ ÇÒ¶§¸¸ °»½Å ÇØ¼­ °Ë»ç ¾øÀÌ »ç¿ë ÇÒ¼ö ÀÖ°Ô int m_iOldTile; // ÀÌÀü ¹â°í Àִ ŸÀÏ ¼Ó¼º DWORD m_dwOldTileAtt; virtual void InitContainer(); virtual void ReleaseContainer(); virtual void AnimateUnit(); virtual float GetHeightOffset(); // //#ifdef __NA_0_20080415_PROCESS_END_PROECSS // virtual int OnEndProcess( DWORD dwTick ); //#endif private: int m_ItemScore; // ÀåºñÆòÁ¡, Ç÷¹À̾ »ç¿ë public: void SetItemScore(DWORD TotalItemScore ) { m_ItemScore = TotalItemScore; } virtual int GetItemScore() { return m_ItemScore; } virtual void ApplyTerrainColor(BOOL bApply); virtual void BeforeRefreshTileAtt(); virtual void AfterRefreshTileAtt(); virtual void ShowConflictMessage(){} virtual SCSlotContainer * GetSlotContainer( SLOTIDX slotIdx ); virtual BOOL Create( DWORD dwObjectKey, DWORD class_code = 0 ); virtual void Destroy( void ); //@ Ç÷¹À̾î Á¤º¸ ¼³Á¤ °ü·Ã void SetPlayerInfo(PLAYER_RENDER_INFO_EX* pPlayerInfo); virtual BOOL IsSimpleRenderMode(); // °£·«È­ÇÑ ·£´õ¸¦ »ç¿ëÇÒ °ÍÀΰ¡. (·ÎµùÀÌ ´ú µÈ Ç÷¹À̾î) virtual void SetClass(eCHAR_TYPE character_class); virtual void SetGender(GenderType::Value gender); // ÀÌÅ¢ °ü·Ã virtual void RefreshAppearPet(); virtual void RefreshAppearRider(); //À̸ðƼÄÜ »óÅ virtual void SetCondition(BYTE byCondition); virtual BOOL ProcessSkillEffect(DWORD dwTick); virtual float ProcessAnimation( DWORD dwTick ,WzEvent *pEvent = NULL,BOOL bIgnoreEvent = FALSE); virtual int DoAction(PLAYER_ACTION *pAction); virtual void TransForm(); virtual void UnTransForm(); void ForceTransFrom(); void ForceUnTransForm(); 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); int GetMoveFlag(); void SetOldMoveFlag(int iOldMoveFlag); int GetOldMoveFlag(); void SetOldKeyboardDirection(WzVector *pVector); WzVector GetOldKeyboardDirection(); virtual void SetSpecialMoveFlag(BYTE type); BYTE GetSpecialMoveFlag(); void GetEquipItemTotalInfoByCheckValidItem(EQUIP_ITEM_INFO& OUT equip_item_info); VOID GetEquipItemTotalInfo( EQUIP_ITEM_INFO & OUT rItemInfo ); VOID SetEquipItemTotalInfo( const EQUIP_ITEM_INFO & IN rItemInfo ); VOID SetEquipItemBaseInfo( POSTYPE total, EQUIP_ITEM_BASEINFO::data_type* IN pSlot ); void RefreshEquipData(); void SetClientChar(const CLIENT_CHARACTER_PART& ClientPart); virtual void PlayDamageAnimation(BOOL bRight,BOOL bCritical); virtual WzID GetCurrentReviveAnimation(); virtual WzID GetCurrentKnockBack2Animation(); #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 GetCurrentRiderSpreadAnimation(); virtual WzID GetCurrentRiderFureAnimation(); //Ư¼ö À̵¿ virtual WzID GetCurrentSpecialLeftStepAnimation(); virtual WzID GetCurrentSpecialRightStepAnimation(); virtual WzID GetCurrentSpecialFrontStepAnimation(); virtual WzID GetCurrentSpecialBackStepAnimation(); //Á¡ÇÁ À̵¿ virtual WzID GetCurrentJumpStartAnimation(); virtual WzID GetCurrentJumpKeepAnimation(); virtual WzID GetCurrentJumpEndAnimation(); virtual WzID GetCurrentJumpLandAnimation(); //------------------------------------------------------------------------------ //! Returns: WzID //! Qualifier: ³¯°í ÀÖ´Â »óÅ¿¡¼­ space key¸¦ ´©¸£¸é ´Ù¸¥ ¸ð¼ÇÀ¸·Î ¹Ù²Þ. //! Parameter: WzID default_ani_id : ±âº» ¾Ö´Ï¸ÞÀÌ¼Ç //------------------------------------------------------------------------------ virtual WzID GetCurrentSpreadOtherAnimation(WzID default_ani_id, INOUT ePLAYER_ANI& player_ani); virtual WzID GetCurrentJumpEndRunAnimation(); virtual WzID GetCurrentJumpStunAnimation(); virtual WzID GetCurrentJumpStunKeepAnimation(); virtual WzID GetCurrentJumpStunEndAnimation(); virtual WzID GetCurrentCamAnimation(); virtual float GetAngleForMoveDirection(); //================================================== // 0905ÆÐŶº¯°æ ÈÄ //================================================== void SetPlayerPetInfo(PLAYER_RENDER_INFO_EX* pPlayerInfo); BOOL CreatePetSummon(WORD wPetIndex); //Æê»ý¼º virtual void DeletePetSummon(); //ÆêÁ¦°Å BOOL IsPetReturn(void) { return m_PetInfo.m_bPetSummoned; } //Æê¼Òȯ¿©ºÎ DWORD GetPetObjectKey(void) { return m_PetInfo.m_dwPetObjKey; } //Æê۰ª WORD GetPetIndex() { return m_PetInfo.m_wPetIndex; } virtual void SetPetAttributes(POSTYPE pos, BYTE bIsFullness, BYTE byValue); void SetPetEmotion(ePET_EFFECT eState); void SetPetNameUse(BYTE bUseName) { m_PetInfo.PLAYER_.m_byPetName = bUseName; } BYTE IsSetPetName() { return m_PetInfo.PLAYER_.m_byPetName; } TCHAR* GetPetName() { return m_PetInfo.PLAYER_.m_sPetName; } void SetPetName(TCHAR* pszName); private: char GetRiderKindCode(); void AnimateRider(); BOOL ProcessRider(DWORD dwTick); void RenderRider(); void SetRindingState(BOOL bFlag){ m_bRiding = bFlag; } public: virtual BOOL ProcessInterpolation( DWORD dwTick ,float fInterpolateRatio = 0.93f); BOOL IsRiding(); virtual void SetAnimation(WzID idAnimation, BOOL bLoop = FALSE); virtual void SetAnimation(const char* pAnimation, BOOL bLoop = FALSE); void SetPlayerAnimation(WzID wzID, ePLAYER_ANI eState, BOOL bLoop); virtual void CreateRider(DWORD dwID,BOOL bEffect=FALSE); virtual void DestroyRider(); virtual void AttachRiderPart(int nIdx, DWORD dwItemCode); virtual void DetachRiderPart(int nIdx); void RiderSubtype(int nPartIdx,int nSubType); WzVector GetNormal(){return m_vNormal;} int GetRiderIdx(){return m_nRiderIdx;} virtual void RefreshRider(); void SetKeyBoardJumpFlag(BOOL bFlag){m_bRiderJumpFlag=bFlag;} Rider* rider() { return m_pRider; } bool is_riding_jump() const { return is_riding_jump_; } void set_is_riding_jump(bool flag) { is_riding_jump_ = flag; } float GetJumpHeight(); float GetJumpDistance(); #ifdef _NA_20120220_JUMP_RENEWAL #else bool CalcJumpTime(float move_length); #endif //! ³¯°³ ¾ÆÀÌÅÛÀÌ ÀåÂøµÇ¾î ÀÖ´ÂÁö üũ bool is_wing_equip(OUT POSTYPE* at_pos); //! ³¯°³°¡ ÆìÁ® ÀÖ´ÂÁö ij¸¯ÅÍ »óÅ ¿¡´Ï¸ÞÀÌ¼Ç Ã¼Å©½Ã »ç¿ë bool is_spread_wings() { return is_spread_wings_; } void set_spread_wings(bool val); //! ³¯°³°¡ ¸®¼Ò½º°¡ ´Þ·Á ÀÖ´ÂÁö AppearanceManager ¿¡¼­ °Ë»ç bool is_attached_wing_accessory(OUT int* attach_index); BOOL IsEventWeapon(); virtual void ProcessRushClone(); virtual DWORD GetCurrentAttackStyle(); virtual void PlayEvadeAnimation(); virtual void PlayBlockAnimation(); virtual void SetIdleAnimation(); void SetBeHaveState(ePLAYER_BEHAVE_STATE eBeHaveState); ePLAYER_BEHAVE_STATE GetBeHaveState(); void ProcessStandAnimationDelay(DWORD dwTick); BOOL CheckChangeAttackStyle( DWORD dwStyle ); BOOL SetCurrentAttackStyle(DWORD dwStyle); void SetCurrentNomalAttackStyle(DWORD dwWeaponType); //¿þÆùŸÀÔÀ¸·Î ½ºÅ¸ÀÏ ¾øÀ½ ¼³Á¤ BOOL CheckAttackStyle(DWORD dwStyle); //ÇöÀç Ã¢ÂøÁßÀÎ ¹«±â¿Í ½ºÅ¸ÀÏ °¡´É ¿©ºÎ °Ë»ç BOOL CheckStyleForWeapon(DWORD dwWeaponType); //¹«±â ÀåÂø½Ã¿¡ Ç×»ó üũ ÇØ¾ß ÇÑ´Ù. void RefreshPunchStyle();//ij¸¯ÅÍ Å¸ÀÔÀ¸·Î ÆÝÄ¡ Äڵ带 ¾ò´Â´Ù. void PlayDamageSound(eWEAPONSOUNDKIND eSoundKind); virtual void CreateDamageEffect(BOOL bCritical,BOOL bRight,DWORD dwAttackObjId); virtual BOOL Process( DWORD dwTick ); // ½ºÅÈ // ¹ß۸® °ü·Ã 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 BOOL OnUseItem(DWORD dwItemCode); virtual BOOL OnUnUseItem(DWORD dwItemCode); virtual void OnLevelUp(); 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 IsSummonIntensify(); void ProcessSummonIntensifyEffect(); BOOL IsFlyFinishWeapon(); void RenderTextOnHeadGuild(TCHAR *szString, WzColor color, int yoffset); #ifdef _NA_007114_20140313_CHAOSZONE_GOLDRUSH void RenderGoldMarkOnHead(RECT rc, float fDepth, eGUILD_MARK_RELATION eRelation); #endif // _NA_007114_20140313_CHAOSZONE_GOLDRUSH #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE void RenderRankingGradeOnHead(RECT rc, float fDepth, eGUILD_MARK_RELATION relation); #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE #ifdef _NA_007115_20140313_MONDSCHIEN_RENEWAL void RenderDominationMarkOnHead(RECT rect, float depth, eGUILD_MARK_RELATION eRelation); #endif // _NA_007115_20140313_MONDSCHIEN_RENEWAL bool IsExistGuildMark() {return m_GuildRenderInfo.m_BackGroundIndex && m_GuildRenderInfo.m_PatternIndex;} #ifdef _NA_003027_20111013_HONOR_SYSTEM const TCHAR* GetNameWithTitle() { return name_with_title_.c_str(); } void SetTitleName(WORD title_code); WORD GetTitleCode(); #endif //_NA_003027_20111013_HONOR_SYSTEM public: virtual BOOL Render( void ); virtual float GetMeshHeight(); virtual void RenderInfo(); virtual WzVector GetWeaponBonePos(int index);//Áö¿Ï virtual·Î º¯°æ virtual WzVector GetArrowBonePos(int index); virtual void SetWeaponKind(DWORD dwWeaponKind); 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 SetCharInfo( const BASE_PLAYERINFO* pPlayerInfo ) { m_PlayerData.SetCharInfo( pPlayerInfo ); } void SetPartVariation(int iPart, int iVariation); WzColor GetEstablisherColor(); virtual void SetHeightVariation(int iIndex); // À̸§ ¼³Á¤ virtual void SetName( const tstring& Name ); PLAYER_MAKE_TYPE GetPlayerType() const; void SetPlayerType(PLAYER_MAKE_TYPE Type); eCHAREX_TYPE GetClassExType(); void TransformGenderType(); // ½ºÅÝ °ü·Ã virtual void SetExp(EXPTYPE dwExp); virtual EXPTYPE GetExp(); virtual EXPTYPE GetNextExp(); virtual void SetLevel(LEVELTYPE LV); virtual void SetHP(DWORD dwHP ); virtual void SetMP(DWORD dwHP ); virtual void SetMaxHP( DWORD iHP ); virtual void SetMaxMP( DWORD iMP ); virtual void SetAttackSpeedRatio(int iSpeed); virtual void SetMoveSpeedRatio(int iSpeed); virtual LEVELTYPE GetLevel(); virtual DWORD GetHP(); virtual DWORD GetMP(); virtual DWORD GetMaxHP(); virtual DWORD GetMaxMP(); virtual float GetHP_Percent(); virtual float GetMP_Percent(); virtual DWORD GetSD(); virtual DWORD GetMaxSD(); virtual void SetSD(DWORD dwSD); virtual void SetMaxSD(DWORD dwMaxSD); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE virtual PLAYERFP GetFP(); virtual PLAYERFP GetMaxFP(); virtual void SetFP(const PLAYERFP& fp); virtual void SetMaxFP(const PLAYERFP& max_fp); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE //ÇÏÀ̵彺ų°ü·Ã ÇÔ¼ö virtual void SetHideSkill(BOOL bFlag); virtual BYTE GetHideSkill(){return m_sHideInfo.byHideState;} virtual void SetForceHideSkill(BYTE byState){m_sHideInfo.byHideState=byState;} virtual void SetHideReserve(BOOL bFlag){ m_sHideInfo.byHideReserve = bFlag;} virtual BYTE GetHideReserve(){return m_sHideInfo.byHideReserve;} void RefreshHideState(BOOL bClear=FALSE); #ifdef _NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND // ÀüÀå Åõ¸í¸ðµå void SetBattleGroundHideMode(bool is_hide); BattleGroundHideMode CheckBattleGroundHideMode(); void RefreshBattleGroundHideMode(); void set_battle_ground_hide_mode(BattleGroundHideMode hide_mode) { battle_ground_hide_mode_ = hide_mode; } BattleGroundHideMode battle_ground_hide_mode() { return battle_ground_hide_mode_; } #endif //_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND //´Ù¸¥Ä÷¯Àû¿ë¹× È¿°úÀû¿ë(¿À¹ö¶óÀ̵åÇØ¼­»ç¿ë) virtual void StartExtraEffect(); virtual void EndExtraEffect(); private: BYTE GetHideCondition(); HIDE_SKILL_INFO m_sHideInfo; BattleGroundHideMode battle_ground_hide_mode_; // ÀüÀå Åõ¸í¸ðµå (¾Æ±º¿¡°Õ ¹ÝÅõ¸í) public: virtual float GetMoveSpeedModifier(); virtual float GetAttackSpeedModifier(); virtual WzID GetCurrentTransFormAnimation(); virtual float GetAttackRange( void ); virtual BOOL IsRangedNormalAttack(); //// ½ºÅ³È¿°ú °ü·Ã //virtual int AddSkillEffect(SKILL_EFFECT *pEffect); //virtual BOOL DeleteSkillEffect(int iEffectID); 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 SetTeam(int iTeam); int GetTeam() const; void ApplyStyleBuff( DWORD dwStyleCode ,SkillAttrCalculator &SkillCalc); BOOL CanBeAttackTarget(); //summon void AddSummonId(const DWORD &dwSummonId); BOOL RemoveSummonId(const DWORD &dwSummonId); DWORD GetSummonId()const; int GetSummonSize()const; #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE BOOL FindSummon(const DWORD& summon_id)const; #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE PLAYER_GUILD_RENDER_INFO& GetGuildRenderInfo() { return m_GuildRenderInfo; } #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE CLIENT_PLAYER_RANKING_GRADE_INFO& GetClientPlayerRankingGradeInfo() { return client_player_ranking_grade_info_; } #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE void SetDominationStateInfo(const DOMINATION_STATE_TOTAL_INFO* domination_state_info); STLX_VECTOR& GetDominationStateInfo() { return domination_state_info_; } // ±æµå ·»´õÀÎÆ÷ ¹× Á¡·É»óÅ Á¤º¸ ÃʱâÈ­ void ClearDominationStateInfo(); void CreateDominationGuildRewardEffect(DWORD guild_duty); void RemoveDominationStateEffect(); GUILDGUID GetPlayerGuildID(){return m_GuildRenderInfo.m_GuildGuid;} void SetGuildRenderInfo(const GUILD_RENDER_INFO* pGuildInfo); void SetGuildName(char * pszGuildName, int iLen ); void ClearGuildRenderInfo(); #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE void SetClientPlayerRankingGradeInfo(const CLIENT_PLAYER_RANKING_GRADE_INFO* client_player_ranking_grade_info); void ClearClientPlayerRankingGradeInfo(); void RemovePlayerRankingEffect(); void CreatePlayerRankingEffect(); #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE void CheckDominationRelation(); // Á¡·ÉÀü ¾È¿¡¼­ÀÇ µ¿¸Í°ü°Ô ¼³Á¤ TCHAR * GetGuildName(); BOOL IsExistGuild() { return m_bExistGuild; } #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE BOOL get_is_client_player_ranking_grade_() const { return is_client_player_ranking_grade_; } #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE BOOL IsCasting(); void SetCast(BOOL bCast); EXPTYPE GetAccumExp(LEVELTYPE LV); void SetStandUp(BOOL bFlag); BOOL IsStandUp(); virtual void SetPolymorph( BOOL Active ); public: // GM µî±Þ void SetGMGrade( BYTE byGMGrade ) { m_byGMGrade = byGMGrade; if( m_byGMGrade ) SetChatColor( WzColor_RGBA( 170, 124, 255, 255 ) ); } BYTE GetGMGrade( void ) { return m_byGMGrade; } BOOL IsGM(); // PC ¹æ ¸ðµå void SetPCBangMode( BYTE byPCBang ) { m_byPCBangUser = byPCBang ;} virtual BYTE GetPCBangMode() { return ( m_byPCBangUser && !m_byBlockPCBang);} void SetBlockPCBang( BYTE byBlock ) { m_byBlockPCBang = byBlock; } BYTE GetBlockPCBang() { return m_byBlockPCBang; } // Åõ¸í ¸ðµå 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; } BOOL HasHPInfo(); #ifdef _NA_006638_20120415_ADD_SHIELD_INFO_IN_TARGET_INFO BOOL HasSDInfo(); #endif //_NA_006638_20120415_ADD_SHIELD_INFO_IN_TARGET_INFO void SetHPInfo(HPINFO *pInfo); TCHAR * GetMarketTitle() const; void SetMarketTitle(const char * pszName, int iLen); BOOL IsAttackBeginPlayer(); BOOL IsChao(); BYTE GetChaoState(); void SetChaoState(BYTE bState); void SetAttackBeginPlayer(BOOL bAttack);//º¸¶ó µ¹ÀÌ void SetKeyboardMoveTime(DWORD dwTime); void AddKeyboardMoveTime(DWORD dwDelta); DWORD GetKeyboardMoveTime(); void _renderinfo_GM(); void _fillRenderinfoState(); void selectRenderinfo_Color(); BOOL IsShowRenderinfo(); BOOL IsPlayerHaveRenderinfoState() { return m_bRenderinfoState; } BOOL IsShowVedorTitle(); void _renderinfo_VendorTitle(); void renderInfo_InCharacterSenen(); void renderInfo_InBattleScene(); void renderInfo_Guild(); //BOOL IsHero() { return m_bHero; } virtual bool IsHero() { return false; } void GetClassExName(OUT TCHAR * pszOutString); virtual void CreateEtherWeaponEffect(bool bShotEffect = false, bool bFillupEffect = false); virtual void DestoryEtherWeaponEffect(); void UpdateEtherWeaponEffectPos(); virtual bool IsEtherDeviecBulletChargeing(); int GetEtherBulletEffectIndex(); virtual void SetEtherActive(BYTE byIndex) { m_EtherIndex = byIndex; } BYTE GetEthreActive() { return m_EtherIndex;} #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE void UpdatePlayerRankingEffect(); #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE virtual float GetBodyRadius(); DWORD GetCollectObjKey(){return m_dwCollectObjKey;} void SetCollectObjKey(DWORD dwObjKey){m_dwCollectObjKey = dwObjKey;} DWORD GetCollectID(){return m_dwCollectID;} void SetCollectID(DWORD dwCollectID){m_dwCollectID = dwCollectID;} DWORD GetCollectStartTime(){return m_dwCollectStartTime;} void SetCollectStartTime(DWORD dwTime){m_dwCollectStartTime = dwTime;} DWORD GetCollectMaxTime(){return m_dwCollectMaxTime;} void SetCollectMaxTime(DWORD dwTime){m_dwCollectMaxTime = dwTime;} BYTE GetCollectState(){return m_dwCollectState;} void SetCollectState(BYTE btState){m_dwCollectState = btState;} void DoCollect(DWORD dwTargetKey, DWORD dwCollectionID, DWORD dwTime); bool receive_equip_info() const { return receive_equip_info_; } void set_receive_equip_info(bool val) { receive_equip_info_ = val; } BYTE etheria_extract_state() const { return etheria_extract_state_; } void set_etheria_extract_state(BYTE val) { etheria_extract_state_ = val; } DWORD etheria_extract_time() const { return etheria_extract_time_; } void set_etheria_extract_time(DWORD val) { etheria_extract_time_ = val; } bool IsShowByGameOption(); public: #ifdef _NA_20120220_JUMP_RENEWAL struct sJumpData { cMoveFlag m_JumpFlag; WzVector vFoward; WzVector m_vJumpDirection; WzVector m_vJumpTargetPosition; WzVector m_vJumpStartPosition; float m_fJumpMoveForce; float m_fJumpUpperForce; float m_fJumpDistanceToLand; float m_fJumpStartHeight; float m_fJumpTargetHeight; std::vector m_JumpPositionArray; float m_fJumpTick; BOOL m_bJumpStun; BOOL m_bJumpStart; BOOL m_bJumpEndEffect; HANDLE m_hStunEffect; float m_fJumpEndFrame; BOOL m_bCreateJumpEndEffect; DWORD m_JumpTime; int m_JumpStunTime; WzVector m_CharacterDirection; }; sJumpData m_JumpData; #else //_NA_20120220_JUMP_RENEWAL struct sJumpData { cMoveFlag m_JumpFlag; float m_fGravity; float m_fUpperForce; WzVector m_CharacterDirection; WzVector m_JumpStartPosition; WzVector m_JumpTargetPosition; BOOL m_bCreateJumpEndEffect; BOOL m_bJumpStun; BOOL m_bJumpStart; BOOL m_bJumpEndEffect; HANDLE m_hStunEffect; float m_fJumpEndFrame; DWORD m_JumpTime; int m_JumpStunTime; float m_SrcZ; DWORD m_dwVerticalMoveTime; DWORD m_dwHorizonMoveTime; }; sJumpData m_JumpData; #endif //_NA_20120220_JUMP_RENEWAL protected: BOOL m_bAttackBeginPlayer; int m_iMoveFlag; BYTE m_bSpecialMoveFlag; bool receive_equip_info_; 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; //BOOL m_bHero; //DWORD m_dwAttackStyle; DWORD m_dwKeyboardMoveTime; ePLAYER_BEHAVE_STATE m_BehaveState; PLAYER_MAKE_TYPE m_PlayerMakeType; 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;//ij½ºÆÃ ÁßÀΰ¡ DWORD m_dwShieldTime; DWORD m_dwTransSkillCode; // PVP °ü·Ã int m_iTeam; // PVP ½Ã ÆÀ ¹øÈ£ (ÀüÀå¿¡¼­µµ »ç¿ë) // ¼Òȯ °ü·Ã nArray m_SummonIdArray;// ¼Òȯü ¾ÆÀ̵ð // ±æµåÀÇ Á¸Àç ¿©ºÎ // ±æµå Á¤º¸´Â BASE_PLAYERINFO BOOL m_bExistGuild; //HANDLE m_hSummonIntensifyEffect; #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE // ·©Å· Á¤º¸ÀÇ Á¸Àç ¿©ºÎ BOOL is_client_player_ranking_grade_; #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE #ifdef _NA_003027_20111013_HONOR_SYSTEM STLX_TSTRING name_with_title_; #endif //_NA_003027_20111013_HONOR_SYSTEM protected: BYTE m_byGMGrade; // GM µî±Þ BOOL m_bInvisible; // ¹«Àû BYTE m_byPCBangUser; // 0 ÀϹÝ, 1 PC ¹æ BYTE m_byBlockPCBang; BOOL m_bHPInfo; // ½ÇÁúÀûÀÎ HPÁ¤º¸¸¦ ¹Þ¾Ò´Ù. BOOL m_bStandUp; #ifdef _NA_006638_20120415_ADD_SHIELD_INFO_IN_TARGET_INFO BOOL m_bSDInfo; // ½ÇÁúÀûÀÎ SDÁ¤º¸¸¦ ¹Þ¾Ò´Ù. #endif //_NA_006638_20120415_ADD_SHIELD_INFO_IN_TARGET_INFO util::_tstring m_strMarketTitle; TCHAR m_szCharState[INTERFACE_STRING_LENGTH]; BOOL m_bRenderinfoState; WzColor m_RenderinfoColor; PLAYER_GUILD_RENDER_INFO m_GuildRenderInfo; STLX_VECTOR domination_state_info_; std::list domination_effect_list_; #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE CLIENT_PLAYER_RANKING_GRADE_INFO client_player_ranking_grade_info_; std::list player_ranking_grade_effect_list_; #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE HANDLE m_hEtherWeaponEffect[2][3]; BYTE m_EtherIndex; PET_INFO m_PetInfo; Rider* m_pRider; BOOL m_bRiding; BOOL m_bIdleFlag; int m_nRiderIdx; BOOL m_bRiderJumpFlag; bool is_riding_jump_; WzID m_wiPreAniID; bool is_spread_wings_; DWORD m_dwCollectObjKey; DWORD m_dwCollectID; DWORD m_dwCollectStartTime; DWORD m_dwCollectMaxTime; BYTE m_dwCollectState; BYTE etheria_extract_state_; DWORD etheria_extract_time_; HANDLE m_hCollectStartEffect; HANDLE m_hDominationStampEffect; public: void SetCollectStartEftHndl(HANDLE hEffect){m_hCollectStartEffect = hEffect;} HANDLE GetCollectStartEftHndl(){return m_hCollectStartEffect;} void CreateDominationStampEffect(); void DestroyDominationStampEffect(); public: BYTE m_DelChk; //< 0: »èÁ¦¾ÈµÈ ij¸¯, 1,2:»ç¿ë¾ÈÇÔ(DB¿¡¼­»ç¿ë) 3: »èÁ¦µÈ ij¸¯ TCHAR m_tszDelDate[MAX_TIMEDATA_SIZE+1]; int GetCharDelRemainTime(); TCHAR* GetCharDelRemainTimeString(TCHAR* string); private: void _renderinfo_Remain_Char_Del(); BYTE m_btIdleAni; BYTE m_btCriticalAttackAni; //(0 == Nomal), (1 == Cri,Double), (2 == Miss, Block) public: void SetbtCriAttkAni(BYTE btVal){m_btCriticalAttackAni = btVal;} BOOL GetbtCriAttkAni(){return m_btCriticalAttackAni;} #ifdef _NA_003033_20110831_DICECAST_ITEM_ROUTING private: void RenderDiceOnHead(); #endif //_NA_003033_20110831_DICECAST_ITEM_ROUTING #ifdef _NA_004035_20120227_COSTUME_ITEM public: virtual void SetCostumeItemCode( SLOTCODE code ); virtual SLOTCODE GetCostumeItemCode(); #endif//_NA_004035_20120227_COSTUME_ITEM #ifdef _NA_008633_20160104_ADD_DECORATECOSTUME virtual void SetDecorateCostumeItemCode( SLOTCODE code ); virtual SLOTCODE GetDecorateCostumeItemCode(); #endif // _NA_008633_20160104_ADD_DECORATECOSTUME #ifdef _NA_COSTUMEITEM_IDLE_ANIMATION BOOL m_IsCostumIdleAnimation; // ÇöÀç ¾Ö´Ï¸ÞÀ̼ÇÀ» ÄÚ½ºÆ¬ ¾ÆÀÌÅÛÀÇ ¾ÆÀÌµé ¾Ö´Ï¸ÞÀ̼ÇÀ¸·Î ±³Ã¤ÇÑÈÄ À̸¦ ½Äº°Çϱâ À§ÇÑ Ç÷¡±× #endif //_NA_COSTUMEITEM_IDLE_ANIMATION #ifdef _NA_008069_20150210_ADD_SPA_SYSTEM public: virtual void SetSpecialSceneItemCode(SLOTCODE item_code); virtual SLOTCODE GetSpecialSceneItemCode(); void SetSpaSittingAnimation(DWORD dwTick); void SetSpaSittingAnimationDelay(); #ifdef _NA_008350_20150617_SPA_NEW_STYLE_MODE_ANIMATION BOOL IsInSpaTile_Change_SitIdle(); // ¾É±âIDLE ¾Ö´Ï¸ÞÀÌ¼Ç ¹Ù²Ù´Â ŸÀÔ BOOL IsInSpaTile_Change_Sit(); // ¾É±â ¾Ö´Ï¸ÞÀÌ¼Ç ¹Ù²Ù´Â ŸÀÔ #else BOOL IsInSpaTile(); #endif //_NA_008350_20150617_SPA_NEW_STYLE_MODE_ANIMATION private: SLOTCODE special_scene_item_code_; // ¾Àº° Ư¼ö ¾ÆÀÌÅÛ ÄÚµå(¿Âõ ¿Ê ¾ÆÀÌÅÛ ÄÚµå) DWORD spa_sit_idle_ani_delay_; // ¿Âõ ¾ÉÀº Ư¼ö¾Ö´Ï ÁÖ±â #endif //_NA_008069_20150210_ADD_SPA_SYSTEM #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND const TCHAR* GetPlayerRenderName(); #endif //_NA_008679_20160202_REWORK_BATTLEGROUND }; inline void Player::SetSpecialMoveFlag(BYTE type) { m_bSpecialMoveFlag=type; } inline BYTE Player::GetSpecialMoveFlag() { return m_bSpecialMoveFlag; } inline VOID Player::SetTeam(int iTeam) { this->m_iTeam = iTeam; } inline int Player::GetTeam() const { return this->m_iTeam; } //---------------------------------------------------------------------------- /** */ inline void Player::AddSummonId(const DWORD &dwSummonId) { m_SummonIdArray.Append(dwSummonId); } //---------------------------------------------------------------------------- /** */ inline BOOL Player::RemoveSummonId(const DWORD &dwSummonId) { for(int i=0;im_tszGuildName, sizeof(pInfo->m_tszGuildName)); StrnCopy(pInfo->m_tszGuildName, ptszGuildName, MAX_GUILDNAME_LENGTH); StrnCopy(m_GuildRenderInfo.m_tszGuildName, ptszGuildName, MAX_GUILDNAME_LENGTH); } } #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE inline void Player::ClearClientPlayerRankingGradeInfo() { is_client_player_ranking_grade_ = FALSE; client_player_ranking_grade_info_.ranking_type = eSUN_RANKING_TYPE_END; client_player_ranking_grade_info_.grade = eSUN_RANKING_GRADE_END; } #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM_GRADE //------------------------------------------------------------------------------ /** ÇöÀç ij½ºÆ® »óÅÂÀΰ¡ */ inline BOOL Player::IsCasting() { return m_bCasting; } //------------------------------------------------------------------------------ /** */ inline void Player::SetCast(BOOL bCast) { m_bCasting=bCast; } //------------------------------------------------------------------------------ /** */ inline void Player::SetStandUp(BOOL bFlag) { m_bStandUp=bFlag; } //------------------------------------------------------------------------------ /** */ inline BOOL Player::IsStandUp() { return m_bStandUp; } //------------------------------------------------------------------------------ /** */ inline BOOL Player::IsAttackBeginPlayer() { return m_bAttackBeginPlayer; } //------------------------------------------------------------------------------ /** */ inline void Player::SetAttackBeginPlayer(BOOL bAttack) { m_bAttackBeginPlayer=bAttack; } //------------------------------------------------------------------------------ /** */ inline BOOL Player::IsChao() { BASE_PLAYERINFO* pPlayerInfo=GetCharInfo(); if(pPlayerInfo) { if(pPlayerInfo->m_ChaoState==eCHAO_STATE_PREV_CHAO||pPlayerInfo->m_ChaoState==eCHAO_STATE_CHAO) { return TRUE; } } return FALSE; } //------------------------------------------------------------------------------ /** */ inline BYTE Player::GetChaoState() { BASE_PLAYERINFO* pPlayerInfo=GetCharInfo(); if(pPlayerInfo) { return pPlayerInfo->m_ChaoState; } return eCHAO_STATE_NORMAL; } //------------------------------------------------------------------------------ /** */ inline void Player::SetChaoState(BYTE bState) { BASE_PLAYERINFO* pPlayerInfo=GetCharInfo(); if(pPlayerInfo) { pPlayerInfo->m_ChaoState=bState; } }