/* ==================================================================== * ÆÄ ÀÏ : * ¸ñ Àû : * ÀÛ ¼º ÀÚ : Á¤¼º´ë * ÀÛ ¼º ÀÏ : 2006.08.29 * * Ãß°¡³»¿ë : * Ãß°¡³¯Â¥ ÀÛ¾÷ÀÚ Ãß°¡³»¿ë * 2006.08.29 Á¤¼º´ë »ý¼º * * ÁÖÀÇ»çÇ× : * =================================================================== */ #pragma once #include "../Common/CommonNetworkMsgStruct.h" #include "BaseObject_Common.h" enum eSKILLSTATE; //class cSkillObject; class cInfluenceObject; const float AGGRO_NONE_RATE = 1.0f; const float AGGRO_DAMAGE_RATE = 1.0f; const float AGGRO_HEAL_RATE = 0.5f; const float AGGRO_POTION_RATE = 0.5f; enum eTAKEDAMAGE_TYPE { /// player eTAKEDAMAGETYPE_NONE = 0, eTAKEDAMAGETYPE_DAMAGE, eTAKEDAMAGETYPE_HEAL, eTAKEDAMAGETYPE_POTION, eTAKEDAMAGETYPE_DAMAGE_SETTARGET, eTAKEDAMAGETYPE_NONETARGET, /// monster eTAKEDAMAGETYPE_ADDPLAYER, }; class cBaseObject { public: cBaseObject( unsigned char objectType ); virtual ~cBaseObject(); bool operator == (cBaseObject& baseObject); bool operator != (cBaseObject& baseObject); sObject GetObject ( ) { return mObject; } inline unsigned long GetObjectID ( ) { return mObject.index; } inline void SetObjectID ( unsigned long objectIndex ) { mObject.index = objectIndex; } inline unsigned char GetObjectType ( ) { return mObject.type; } inline float GetXPos ( ) { return mObjectPos.x; } inline float GetYPos ( ) { return mObjectPos.y; } inline NiPoint2 GetPos ( ) { return mObjectPos; } inline virtual void SetPos ( float x, float y ); /// 061127 PKH ÁöÁ¤Çϰí Àִ Ÿ°ÙÀÇ index·Î objectÆ÷ÀÎÅ͸¦ ¾ò¾î³¿ virtual cBaseObject* GetTarget ( ); /// 061201 PKH ¸ñÇ¥(°ø°Ý,ÃßÀûµî)ÀÇ À妽º¿Í objectÁ¾·ù¸¦ ¼³Á¤ÇÑ´Ù. virtual bool SetTarget ( unsigned char kind, unsigned long idx ); /// 061130 PKH ¸ó½ºÅÍ »ýÁ¸ À¯¹« ¼ÂÆÃ inline virtual bool GetStateDie( ); /// 061201 PKH ¿ÀÇÁÁ§Æ® »ýÁ¸À¯¹« ¼ÂÆÃ inline virtual void SetStateDie( bool die ) { die; } virtual unsigned int GetRaceGender ( ) { return (unsigned int)(0xffffffff); } virtual unsigned short GetMoveSpeed ( ) { return 0; } /// 070807 PKH HP°¨¼Ò virtual unsigned long HPDamage( sObject /*attacker*/, unsigned long /*damage*/, bool* /*die*/, bool /*msgSend*/, bool cri = false ) { cri; return 0; } virtual void HPUse( unsigned long /*useValue*/, bool /*msgSend*/ ) {} /// 070807 PKH ¼ø½Ä°£¿¡ HPÁõ°¡ virtual void HPHeal( unsigned long /*hp*/, bool /*msgSend*/, sObject /*healer*/, long /*distressPoint*/, eTAKEDAMAGE_TYPE /*type*/ ) {} /// 070807 PKH mpó¸® virtual void MPDamage ( unsigned long /*damage*/, bool /*msgSend*/ ) {} virtual void MPUse( unsigned long /*useValue*/, bool /*msgSend*/ ) {} virtual void MPHeal ( unsigned long /*heal*/, bool /*msgSend*/ ) {} /// ÇöÀç HP & MP virtual unsigned long GetHP() { return 0; } virtual unsigned long GetMP() { return 0; } virtual unsigned long GetMaxHP() { return 0; } virtual unsigned long GetMaxMP() { return 0; } virtual void SetOriHPMax( unsigned long /*maxHP*/ ) {} virtual unsigned long GetOriHPMax() { return 0; } virtual void SetOriMPMax( unsigned long /*maxMP*/ ) {} virtual unsigned long GetOriMPMax() { return 0; } void SetMapNumber( unsigned short mapNumber ) { mMapNumber = mapNumber; } virtual unsigned short GetMapNumber( ) { return mMapNumber; } virtual void AddTakeDamage( sObject /*attacker*/, unsigned long /*damage*/, long /*distressPoint*/, eTAKEDAMAGE_TYPE /*type*/ ) { assert(NULL); } /// È¿°ú /// virtual bool AddInfluence( unsigned long /*uniqueIdx*/, unsigned long /*influenceClassIdx*/ ) { assert(NULL); return false; } virtual bool AddInfluence( cInfluenceObject* /*pInf*/ ) { assert(NULL); return false; } virtual tHashSet* GetInfluenceSet() { assert(NULL); return NULL; } virtual void ReleaseInfluenceSet( bool /*logOut*/ ) { assert(NULL); } virtual void DeleteInfluence( unsigned long /*influenceIdx*/ ) { assert(NULL); } virtual void StatusCalc() { assert(NULL); } virtual bool IsParentEqual( unsigned long /*parentUniqueIdx*/ ) { return false; } /// ¿ÀºêÁ§Æ®ÀÇ °Å¸® üũ ¼öÁ¤ °Å¸® - Àû¿ë ¹üÀ§ virtual float GetFixedObjectSize() { return 0.0f; } /// »óÅ ÀÌ»ó virtual void SetStateOddity( long* /*oddity*/ ) { assert(NULL); } virtual unsigned long GetStateOddity( eODDITYTYPE /*oddityType*/ ) { assert(NULL); return 0; } virtual bool IsCantSkill( unsigned long /*attributeType*/ ) { return true; } virtual bool IsCantMove() { return true; } virtual void TargetChange( sObject /*attacker*/, long /*distressPoint*/ ) {} virtual float Height(); virtual int GetGridPos( ) { return mGridPos; } virtual void SetGridPos( int pos ) { mGridPos = pos; } virtual unsigned char GetLevel( ) { return 1; } virtual sObject GetSkillLastAttack() { assert(NULL); return mObject; } virtual unsigned char GetSkillLastKind() { assert(NULL); return (unsigned char)0; } virtual bool AttackSuccess( sObject /*target*/, unsigned long /*aType*/, short /*accuracyValue*/, unsigned long /*instantSuccess*/, unsigned long /*instantSuccessPer*/ ) { assert(NULL); return 0;} virtual bool CriticalSuccess( sObject /*target*/, unsigned long /*aType*/, unsigned short /*criticalValue*/, unsigned long /*instantCri*/, unsigned long /*instantCriPer*/ ) { assert(NULL); return 0;} virtual unsigned long DamageCalc( sObject /*target*/, unsigned long /*skillIdx*/, unsigned long /*aType*/, unsigned long /*rType*/, unsigned long /*skillDamage*/, unsigned long /*skillDamagePer*/, bool /*isIgnoreDefence*/, float /*addTotalDamage*/, float /*addPerTotalDamage*/ ) { assert(NULL); return 0; } /// ´Ù¸¥ °è»ê°ú ´Ù¸£°Ô µµÆ®µ¥¹ÌÁö´Â °ø°ÝÀÚ°¡¾ø¾îµµ °è»êÀ» ÇØ¾ßµÇ±â¶§¹®¿¡ ±âÁذ´Ã¼°¡ Ÿ°Ù°´Ã¼´Ù!! virtual unsigned long DotDamageCalc( unsigned char /*attackerType*/, unsigned char /*attackerLv*/, unsigned long /*attackMin*/, unsigned long /*attackMax*/, unsigned char /*dotType*/, unsigned long /*skillDamage*/, unsigned long /*skillDamagePer*/, unsigned long /*totalTime*/, unsigned long /*dotTime*/ ) { assert(NULL); return 0; } virtual unsigned long HealCalc( sObject /*target*/, long /*skillHealPlus*/, long /*skillHealPer*/, bool /*applyHP*/ ) { assert(NULL); return 0; } virtual unsigned long DotHealCalc( sObject /*target*/, long /*infHealPlus*/, long /*infHealPer*/, unsigned long /*heal*/, unsigned long /*dotTotalTime*/, unsigned long /*dotTime*/ ) { assert(NULL); return 0; } virtual unsigned long ConditionOdd( sObject /*target*/, long /*influenceRate*/, unsigned long /*skillClassIdx*/ ) { assert(NULL); return 0; } virtual float GetDirection() { assert(NULL); return 0; } virtual unsigned long CalcChangeMPDamage( unsigned char /*attributeType*/, unsigned long /*damage*/, bool /*applyHP*/ ) { assert(NULL); return 0; } virtual unsigned long CalcGuard( unsigned char /*attributeType*/, unsigned long /*damage*/ ) { assert(NULL); return 0; } virtual void SetSkillPushPull( unsigned short /*type*/, cBaseObject* /*pAttacker*/, unsigned long /*range*/ ) { assert(NULL); } virtual bool IsSkillPushPull() { assert(NULL); return false; } protected: sObject mObject; NiPoint2 mObjectPos; /// sObject mTarget; unsigned short mMapNumber; int mGridPos; }; inline bool cBaseObject::operator == (cBaseObject& baseObject) { return (mObject.index == baseObject.GetObjectID( )); } inline bool cBaseObject::operator != (cBaseObject& baseObject) { return !operator==(baseObject); }