/* ========================================================================== * ÆÄ ÀÏ : StatusCalc_Server.h * ¸ñ Àû : ½ºÅÝ °è»ê±â ¼­¹ö * ÀÛ ¼º ÀÚ : ¹Ú°æÈñ * ÀÛ ¼º ÀÏ : 2007-10-19 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "Status_Common.h" #include "Player_Common.h" class cPlayer; struct sPlayerSkillStepInfo; enum ePLAYER_STATUS_EXT; enum eSTATUS_PLUS; class cStatusCalc_Server { public: static cStatusCalc_Server* mpStatusCalc; public: cStatusCalc_Server(void); ~cStatusCalc_Server(void); /// Ç÷¹À̾î Àüü °è»ê - óÀ½ Á¢¼ÓÇÒ¶§¸¸ È£ÃâÇÑ´Ù. void CalcPlayerInit( sObject object ); /// Ç÷¹ÀÌ¾î ½ºÅÝ1(+½ºÅÝ2) °è»ê void CalcPlayerBaseGlobal( sObject object ); /// Ç÷¹ÀÌ¾î ½ºÅÝ1Plus+½ºÅÝ2Plus(+½ºÅÝ2) °è»ê void CalcPlayerExtensionGlobal( sObject object ); /// ¸ó½ºÅÍ ½ºÅÝ °è»ê ÀÎÅÍÆäÀ̽º - Ãß°¡ È¿°ú void CalcMonster( unsigned long monsterIdx ); protected: /// ½ºÅ³ È¿°ú¿¡¼­ ½ºÅÝ¿¡ ´õÇØÁú ¼öÄ¡¸¦ Àоî¿Í ´õÇÔ void CalcPlayerStatusSkillInfluenceAdd( cPlayer* pPlayer ); /// ½ºÅ³ ÆÐ½Ãºê¿¡¼­ ½ºÅÝ¿¡ ´õÇØÁú ¼öÄ¡¸¦ Àоî¿Í ´õÇÔ void CalcPlayerStatusSkillPassiveAdd( cPlayer* pPlayer ); /// ¾ÆÀÌÅÛ¿¡¼­ ½ºÅÝ¿¡ ´õÇØÁú ¼öÄ¡¸¦ Àоî¿Í ´õÇÔ void CalcPlayerStatusItemAdd( cPlayer* pPlayer ); void CalcPlayerStatusItemSkillAddDetail( cPlayer* pPlayer, eSTATUS_PLUS statusType, float value ); /// Ç÷¹ÀÌ¾î ±âº»½ºÅÝ ºÎÅÍ ÀÌÈÄ ½ºÅÝÀÌ º¯ÇÒ¶§ »ç¿ë - ±âº»È®À彺ÅÝ(+)°è»ê ¾ÈÇÔ void CalcPlayerBaseOnly( cPlayer* pPlayer ); /// Ç÷¹ÀÌ¾î ±âº»È®À彺ÅÝ(+) ºÎÅÍ ÀÌÈÄ ½ºÅÝÀÌ º¯ÇÒ¶§ »ç¿ë - ±âº» ½ºÅÝ °è»ê ¾ÈÇÔ void CalcPlayerExtensionOnly( cPlayer* pPlayer ); /// ºÎ¸ð Á÷¾÷±º Äڵ带 Àоî¿È unsigned long GetParantJob( unsigned long job, unsigned int jobPos ); /// Ç÷¹ÀÌ¾î ±âº» ½ºÅÝ °è»ê void CalcPlayerStatus( cPlayer* pPlayer ); /// È®Àå ½ºÅÝ °è»ê void CalcPlayerExtStatus( cPlayer* pPlayer, ePLAYER_STATUS_EXT statusExt ); /// Ç÷¹ÀÌ¾î ½ºÅÝ °è»ê ¿ÜºÎ ÀÎÅÍÆäÀ̽ºÀÇ °ø¿ëÇ׸ñ void CalcPlayerGlobal( cPlayer* pPlayer ); /// ¸ó½ºÅÍ ½ºÅÝ ¼¼ºÎ °è»ê void CalcStatusPlusDetailMonster( unsigned long monsterIdx, eSTATUS_PLUS statusType, float value ); protected: float mBaseStatus[ePLAYER_STATUS_LEVEL]; /// 070207 PKH ±âº» ½ºÅÝ(Èû,¹Îø,ü·Â,Áö´É,ÁöÇý) float mBaseStatusPlus[ePLAYER_STATUS_LEVEL]; /// 070207 PKH ±âº» ½ºÅÝ (Èû,¹Îø,ü·Â,Áö´É,ÁöÇý) (+) float mBaseStatusPer[ePLAYER_STATUS_LEVEL]; // ±âº» ½ºÅÈ (Èû,¹Îø,ü·Â,Áö´É,ÁöÇý)(%) float mExtStatus[ePLAYER_STATUS_EXT_MAX]; /// 070207 PKH È®Àå ½ºÅÝ float mExtStatusPlus[ePLAYER_STATUS_EXT_MAX]; /// 070207 PKH È®Àå ½ºÅÝ¿¡ ´õÇØÁú °ª float mExtStatusPer[ePLAYER_STATUS_EXT_MAX]; /// 070207 PKH È®Àå ½ºÅÝ¿¡ È®·ü·Î °öÇØÁú °ª float mExtStatusLast[ePLAYER_STATUS_EXT_MAX]; /// 070522 PKH È®Àå ½ºÅÝ ÃÖÁ¾°ª /// 070510 PKH °æÇèÄ¡ °ü·Ã float mExtAddStatus[ePLAYER_STATUS_EXT_ADD_MAX]; /// »óÅ ÀÌ»ó ½ºÅÝ long mOddity[eODDITYTYPE_MAX]; /// ½ºÅÝ °è»êÀü ¿øº»°ª - °è»êÈÄ °ªºñ±³Çؼ­ Ʋ¸®¸é ¸Þ¼¼Áö Àü¼Û long mMoveSpeed; float mFixedObjectSize; float mSizePer; float mAttackSpeed; unsigned long mMaxHP; unsigned long mMaxMP; typedef tPointerHashMap cPointerHashMap; typedef tHashSet cHashSet; }; #define STATUSCALC cStatusCalc_Server::mpStatusCalc