#ifndef _SKILL_STRUCTURE_H_ #define _SKILL_STRUCTURE_H_ #pragma once #include "../Utility/TypeArray.h" #include "../Item/ItemStructure.h" #pragma pack(8) namespace Skill { enum { SkillMask = 0x8000 }; namespace Type { enum Type { NONE = 0, PASSIVE = 1, INSTANCE = 2, CAST = 3, CHANT = 4, ENCHANT = 5, MAX_SKILL_TYPE = 6 }; extern const CTypeName SkillTypes[MAX_SKILL_TYPE]; }; namespace UseLimit { enum Type { NONE = 0, // Àΰ£ FOR_FIGHTER = 1, // ½ºµ“ ´ë°Å ¸Ç¼Õ Ȱ ¼®±Ã »ç¿ëºÒ°¡ WITH_SHIELD = 2, // ¹æÆÐÂø¿ë : ¹æÆÐ°¡ ¾øÀ¸¸é »ç¿ëÇÒ ¼ö ¾ø´Ù. FOR_FIGHTER_TWOHANDED = 3, // ¾ç¼Õ¹«±âÂø¿ë(½ºµ“Á¦¿Ü) : ¾ç¼Õ¹«±â Âø¿ë½Ã¿¡¸¸ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. ½ºÅÂÇÁÀÏ °æ¿ì¿¡´Â »ç¿ëÀÌ ºÒ°¡´ÉÇÏ´Ù. FOR_ALL_ONEHAND = 4, // ÇѼչ«±âÂø¿ë : ¾ç¼Õ¹«±â³ª ¸Ç¼ÕÀ¸·Î´Â »ç¿ëÀÌ ºÒ°¡´ÉÇÏ´Ù. ´ë°Å Á¦¿Ü WITH_DAGGER = 5, // ´ë°ÅÂø¿ë : ´ë°Å Âø¿ë½Ã¿¡¸¸ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. WITH_THROWING_DAGGER = 6, // ¾²·ÎÀ×´ë°Å¼Ò¸ð : Àκ¥Å丮¿¡ ¾²·ÎÀ× ´ë°Å°¡ ³²¾ÆÀÖÀ» ¶§¿¡¸¸ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. (¼Õ¿¡ ÀåÂøµÇ¾î ÀÖÀ» ÇÊ¿ä´Â ¾ø´Ù.) RANGED = 7, // Ȱ/¼®±ÃÀåÂø,È­»ì¼Ò¸ð : ȰÀ̳ª ¼®±ÃÀÌ ÀåÂøµÇ¾î ÀÖ°í Àκ¥Å丮¿¡ È­»ìÀÌ ³²¾ÆÀÖÀ» ¶§¿¡¸¸ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. // ¾ÆÄ­ LEFT_ARM = 8, // ¿ÞÆÈÀåÂø : ¿ÞÆÈÀ» ÀåÂøÇϰí ÀÖ¾î¾ßÁö¸¸ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. GUARD_ARM = 9, // °¡µå¾ÏÀåÂø : ¹æ¾î¿ëÀÇ ¾ÏÀ» ÀåÂøÇϰí ÀÖ¾î¾ßÁö¸¸ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. WITH_WEAPON = 10, // ¹«±âÀåÂø : ¿À¸¥¼ÕÀÌ ¸Ç¼ÕÀÏ ¶§¿¡´Â »ç¿ëÀÌ ºÒ°¡´ÉÇÏ´Ù. ATTACK_ARM = 11, // ¾îÅþÏÀåÂø : °ø°Ý¿ëÀÇ ¾ÏÀ» ÀåÂøÇϰí ÀÖ¾î¾ßÁö¸¸ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. GUN_ARM = 12, // °Ç¾ÏÀåÂø ź¾à¼Ò¸ð : Àå°Å¸®¿ëÀÇ ¾ÏÀ» ÀåÂøÇϰí ź¾àÀ» °¡Áö°í ÀÖ¾î¾ßÁö¸¸ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. KNIFE_ARM = 13, // ³ªÀÌÇÁ¾ÏÀåÂø : ³ªÀÌÇÁÇüÀÇ ¾ÏÀ» ÀåÂøÇϰí ÀÖ¾î¾ßÁö¸¸ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. WITH_CLOW = 14, // Ŭ·Î¿ìÀåÂø : Ŭ·Î¿ì Âø¿ë½Ã¿¡¸¸ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. MAX_USE_LIMIT = 15 }; extern const CTypeName UseLimits[MAX_USE_LIMIT]; }; namespace StatusLimit // ¾ÆÀÌÅÛ Á¦ÇÑ { enum Type { NONE = 0, // Á¦ÇÑ ¾øÀ½ STR = 1, // STRÀÌ ÀÏÁ¤ ÀÌ»ó ÇÊ¿ä DEX = 2, // DEX°¡ ÀÏÁ¤ ÀÌ»ó ÇÊ¿ä CON = 3, // CONÀÌ ÀÏÁ¤ ÀÌ»ó ÇÊ¿ä INT = 4, // INT°¡ ÀÏÁ¤ ÀÌ»ó ÇÊ¿ä WIS = 5, // WIS°¡ ÀÏÁ¤ ÀÌ»ó ÇÊ¿ä MAX_STATUS_LIMIT = 6 }; extern const CTypeName StatusLimits[MAX_STATUS_LIMIT]; }; namespace Target { enum Type { NONE = 0, MELEE = 1, FRIEND = 2, ENEMY = 3, DEAD_FRIEND = 4, DEAD_ENEMY = 5, FRIEND_OBJECT = 6, ENEMY_OBJECT = 7, PARTY = 8, FRIEND_EXCEPT_SELF = 9, LINE_ENEMY = 10, MAX_TARGET_TYPE = 11 }; extern const CTypeName TargetTypes[MAX_TARGET_TYPE]; }; struct ProtoType { enum { MAX_LIMIT_NUM = 2, MAX_FILE_NAME = 32, MAX_SKILL_NAME = 32 }; //----------------------------------- char m_szEffectFileName[MAX_FILE_NAME]; char m_szHitFileName[MAX_FILE_NAME]; char m_szCastingFileName[MAX_FILE_NAME]; Item::SpriteData m_SpriteInfo; //----------------------------------- Type::Type m_eSkillType; // See Namespace Type Target::Type m_eTargetType; // See Namespace Target UseLimit::Type m_eUseLimit; // See Namespace UseLimit unsigned char m_StatusLimitType[MAX_LIMIT_NUM]; char m_StatusLimitValue[MAX_LIMIT_NUM]; //----------------------------------- unsigned short m_usSkill_ID; unsigned short m_StartMP; unsigned short m_LevelMP; unsigned short m_StartTick; //----------------------------------- unsigned short m_LevelTick; unsigned short m_usCoolDownTime; //----------------------------------- float m_EffectDistance; float m_EffectExtent; //----------------------------------- bool m_bProtection; bool m_bGauge; bool m_bIsClassSkill; bool m_bInterrupt; unsigned char m_cEndScript; unsigned char m_cEndCoolDown; unsigned char m_cMinRange; unsigned char m_cMaxRange; //----------------------------------- unsigned char m_cStrikeNum; unsigned char m_cSpell_LockCount; unsigned char m_cPadding[6]; //----------------------------------- ProtoType(); void Initialize(); }; } #pragma pack() #endif