/* ========================================================================== * ÆÄ ÀÏ : InfluenceObject.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ¹Ú°æÈñ * ÀÛ ¼º ÀÏ : 2007-08-21 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "BaseObject_Common.h" #include "RangeCheck.h" struct sInfluence; enum eSHOTTYPE; enum eAURATYPE; const unsigned long AURA_CHECK_TIME = 1000; const unsigned long AURAMP_CHECK_TIME = 5000; class cInfluenceObject { public: cInfluenceObject(); virtual ~cInfluenceObject(); /// SkillmanagerÀÇ ¸Þ¸ð¸®Ç®¿¡¼­ ½ºÅ³ °ø°£À» ÇÒ´ç¹ÞÀ½ void* operator new( size_t n ); /// ¸Þ¸ð¸®Ç®¿¡¼­ ÇÒ´ç ¹ÞÀº È¿°ú °´Ã¼¸¦À» Á¦°ÅÇØÁÜ void operator delete( void* ptr, size_t n ); bool Init( sObject attacker, sObject target, unsigned long uniqueIdx, unsigned long infClassIdx, unsigned long skillClassIdx, eSWITCH_TYPE infType, unsigned long parentIdx, unsigned long dotTotalTime, unsigned long* plusTime ); void AddModeType( unsigned char applyType, unsigned short range ); bool Process( unsigned long elapsedTime, unsigned long accumTime ); bool IsSavePlayerInfluence( bool onlyCash ); void SavePlayerInfluence( sInfluence* pInfluence ); bool RestorePlayerInfluence( unsigned long playerIdx, unsigned long uniqueIdx, sInfluence* pInfluence ); /// È£Ãâ ½ÃÁ¡ºÎÅÍ Å¸À̸Ӹ¦ °¡µ¿ void ProcessStart(); void ProcessStop(); bool SetAllocDbIdx( unsigned long dbIdx ); bool IsDbIdx() { return mDBIdx == 0 ? false : true; } unsigned long GetUniqueIdx() { return mUniqueIdx; } unsigned long GetInfluenceClassIdx() { return mInfluenceClassIdx; } sObject GetTarget() { return mTarget; } sObject GetAttacker() { return mAttacker; } eSWITCH_TYPE GetSwitchType() { return mSwitchType; } unsigned long GetRarentIdx() { return mParentIdx; } unsigned long GetSkillIdx() { return mSkillIdx; } unsigned char GetDeleteType(); bool IsRealTime() { return mIsRealTime; } unsigned long GetInfluenceRestTime() { return mInfGameRestTime; } unsigned long GetInfluenceEndTime() { return mInfluenceCreationTime + mInfGameRestTime; } TIMESTAMP_STRUCT GetInfRealEndTime() { return mInfRealEndTime; } float GetRange() { return mCopyRange; } bool IsSleep() { return mIsSleep; } bool IsTargetNoApply() { return mCopyApplyType == eAPPLYTYPE_ENEMY; } void NoSendDelMsg() { mSendDelMsg = false; } bool IsSendDelMsg() { return mSendDelMsg; } void NoStatusCalc() { mDelStatusCalc = false; } bool IsDelStatusCalc() { return mDelStatusCalc; } void DelReady() { mIsDelReady = true; } bool IsDelReady() { return mIsDelReady; } bool CalcLeftGuard( unsigned char attributeType, unsigned long* damage ); bool CalcCashExpGuard(); /// ÅäÅÛ¿¡ Àִ Ÿ°Ù ¸ñ·Ï¿¡¼­ Á¦°Å void TotemSetEraseTarget(); unsigned char GetGuardType() { return mGuardType; } unsigned short GetLeftGuardValue() { return mLeftGuardValue; } unsigned char GetLeftGuardCnt() { return mLeftGuardCnt; } unsigned char GetChangeMPType() { return mChangeMPType; } unsigned char GetChangeMPValue() { return mChangeMPValue; } private: /// ¿À¶ó¸¦ ÅëÇÑ È¿°ú º¹»ç void CopyAuraInfluence(); /// º¹»çµÈ ¿À¶ó(ÀÚ½Ä) »èÁ¦ üũ bool DeleteChildAuraInfluence(); /// ÅäÅÛÀÌ ¸¸µé¾î³½ ÀÚ½Ä(¿À¶ó) »èÁ¦ üũ bool CheckTotemInfluence(); /// È¿°ú °´Ã¼ »ý¼ºÈÄ ÀÏÁ¤½Ã°£ ÁÖ±â·Î È¿°ú Àû¿ë void DotInfluence( eSTATUS_PLUS influenceIndex, long infValue, unsigned long totalTime, unsigned long dotTime ); private: ////////////////////////////////////////////////////////////////////////// /// DB ±â·ÏºÎ /// È¿°ú DB °íÀ¯IDX unsigned long mDBIdx; /// Ÿ°Ù sObject mTarget; /// È¿°ú ¹øÈ£ unsigned long mInfluenceClassIdx; /// °ø°ÝÀÚ sObject mAttacker; /// È¿°ú »ý¼º ½ÃÁ¡ ( Àý´ë ½Ã°£ ) unsigned long mInfluenceCreationTime; /// ½Ã°£ ¼³Á¤ ±¸ºÐ bool mIsRealTime; /// ³²Àº Áö¼Ó ½Ã°£ (»ý¼º ½ÃÁ¡±âÁØ ÀÌÈÄ·Î ºÎÅÍ) unsigned long mInfGameRestTime; /// ³²Àº Áö¼Ó ½Ã°£ ( ½Ç ½Ã°£ ) TIMESTAMP_STRUCT mInfRealEndTime; /// Áö¼ÓÈ¿°ú ½Ã°£ ( Àý´ë ½Ã°£ ) /// ¡Ø 0ÀÌ ¾Æ´Ñ °æ¿ì ´ÙÀ½¹ø µ¥¹ÌÁö °è»êÀ» ÇØ¾ß ÇÏ´Â ½Ã°£ unsigned long mTime1; unsigned long mTime2; /// È¿°ú °ª long mInfluenceValue1; long mInfluenceValue2; /// °ø°Ý ¼Ó¼º eATTRIBUTETYPE mAttriButeType; unsigned char mAttackerLv; unsigned long mAttackerDamageMin; unsigned long mAttackerDamageMax; unsigned long mHeal; unsigned char mLeftGuardCnt; unsigned short mLeftGuardValue; ////////////////////////////////////////////////////////////////////////// /// db ¹Ì ±â·ÏºÎ /// È¿°ú °íÀ¯ À妽º unsigned long mUniqueIdx; /// ½ºÅ³ À妽º unsigned long mSkillIdx; /// ÇÁ·Î¼¼½º ÁøÇà/Á¤Áö »óÅ bool mProcessStart; /// °è»ê¼ö½ÄÀ» »ç¿ëÇÏ´Â °á°úÄ¡ ¿¹ºñ ¼ö½Ä°ª //long mCalcTempValue1; //long mCalcTempValue2; long mDotTotalTime; /// »èÁ¦½Ã ¸Þ¼¼Áö ¹ß¼Û¿©ºÎ - Ÿ°Ù °´Ã¼ Á×À½ bool mSendDelMsg; /// »èÁ¦ÈÄ ½ºÅݰè»êÀ» ÇÏ´ÂÁö ¿©ºÎ bool mDelStatusCalc; /// »èÁ¦ ´ë±â »óÅ bool mIsDelReady; cRangeCheck mRangeCheck; /// ÅäÅÛÀ¸·Î »ý¼ºµÈ È¿°ú // bool mIsTotem; bool mIsSleep; /// ¾î±×·Î long mDistressPoint; unsigned char mGuardType; // eINFGUARD_TYPE unsigned char mChangeMPType; /// eINFCHANGEMP_TYPE unsigned char mChangeMPValue; // ÀÏÁ¤½Ã°£ üũ unsigned long mDotValueAcuumTime; /*--------------- ½ºÀ§Ä¡ on/off ÇüÅÂÀÇ È¿°ú ---------------*/ /// È¿°ú ŸÀÔ eSWITCH_TYPE mSwitchType; /// ºÎ¸ð È¿°úÀÇ uniqueidx unsigned long mParentIdx; /// ¹üÀ§ unsigned short mCopyRange; /// üũ½Ã°£ unsigned long mCopyCheckTime; /// Àû¿ë ŸÀÔ eAPPLYTYPE mCopyApplyType; };