#ifndef _SKILL_STRUCTURE_H_ #define _SKILL_STRUCTURE_H_ #pragma once #include #include #pragma pack(8) namespace Skill { enum Const { SKILL_MASK = 0x8000, ERROR_OF_DISTANCE = 10 // °Å¸® ¿¹»ó ¿ÀÂ÷ (½ºÅ³ Ÿ°Ù °Å¸® °è»ê½Ã »ç¿ë) }; namespace Type { enum AbilityType { AB_ANIMAL_TALK = 0, // µ¿¹°NPC¿Í ´ëÈ­ AB_SOCIALEX = 1, // È®Àå ¼Ò¼È¸ð¼Ç »ç¿ë°¡´É AB_NOFIRSTATK = 2, // ¼±°ø¸÷ °ø°Ý ¾È´çÇÔ AB_MOUNT_SPEEDUP = 3, // Å»°Í ÀÌ¼Ó Áõ°¡ AB_TEMPINVEN_TIMEUP = 4, // ÀÓ½ÃÀκ¥Å丮 ½Ã°£Áõ°¡ AB_GETUP_GOLD = 5, // °ñµå ȹµæ·® Áõ°¡ AB_RESPAWN_EX = 6, // È®Àå ¸®½ºÆù »ç¿ë AB_FOOD_UP = 7, // À½½Ä·ù ´É·ÂÄ¡ Áõ°¡ AB_SHOP_MEMBERSHIP = 8, // »óÁ¡ ¸â¹ö½Ê(±¸¸Å°¡°Ý Ç϶ô, ÆÇ¸Å°¡°Ý »ó½Â) AB_CHEMICAL = 9, // ÀâÅÛÀ» ȸº¹ÅÛÀ¸·Î º¯°æ AB_ENDUR_SHILD = 10, // ³»±¸µµ Ç϶ô °¨¼Ò AB_RECOVERY_UP = 11, // HP,MP ȸº¹µµ Áõ°¡ AB_GATHER_FIND = 12, // ¹Ì´Ï¸Ê¿¡ °Ô´õ¸¦ º¸¿©ÁØ´Ù AB_MYEQUIP_UP = 13, // ÀÚ½ÅÀÇ Àåºñ ȹµæÀ² Áõ°¡ AB_LUCK_UP = 14, // ·°Âù Áõ°¡ AB_EQUIP_LEVELDOWN = 15, // ÀåºñÀÇ Á¦ÇÑ ·¹º§À» ´Ù¿î½ÃŲ´Ù. AB_HERBS = 16, // ¾àÃÊ Ã¤Áý AB_MINING = 17, // 䱤 MAX_ABILITY_TYPE = 18 }; enum SkillType { NONE = 0, PASSIVE = 1, INSTANCE = 2, CAST = 3, CHANT = 4, ENCHANT = 5, ITEM = 6, SET = 7, ACTION = 8, ABILITY = 9, GATHER = 10, MAX_SKILL_TYPE = 11 }; extern const CTypeName SkillTypes[MAX_SKILL_TYPE]; enum DRCType { MAGIC = 0, RIGHT_WEAPON = 1, LEFT_WEAPON = 2 }; }; 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°¡ ÀÏÁ¤ ÀÌ»ó ÇÊ¿ä LEVEL = 6, // LEVELÀÌ ÀÏÁ¤ ÀÌ»ó ÇÊ¿ä //--// MAX_STATUS_LIMIT = 7 //--// }; 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, SUMMON = 11, MAX_TARGET_TYPE = 12 }; extern const CTypeName TargetTypes[MAX_TARGET_TYPE]; }; struct ProtoType { enum { MAX_LIMIT_NUM = 2, MAX_FILE_NAME = 32, MAX_SKILL_NAME = 32, MAX_SKILL_DESCRIBE = 256 }; char m_szEffectFileName[MAX_FILE_NAME]; // ÀÌÆåÆ® ÆÄÀϸí char m_szHitFileName[MAX_FILE_NAME]; // È÷Æ® ÆÄÀϸí char m_szCastingFileName[MAX_FILE_NAME]; // ij½ºÆÃ ÆÄÀϸí Item::SpriteData m_SpriteInfo; // ½ºÇÁ¶óÀÌÆ® Á¤º¸ char m_szSkillDescribe[MAX_SKILL_DESCRIBE]; // ½ºÅ³ ¼³¸í Type::SkillType 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; // ½ÃÀÛ ¼Ò¸ð MP unsigned short m_LevelMP; // ·¹º§´ç ¼Ò¸ð MP unsigned short m_LockMP; // ¶ôÄ«¿îÆ®´ç ¼Ò¸ð MP unsigned short m_StartTick; // ½ÃÀÛ Æ½Ä«¿îÆ® unsigned short m_LevelTick; // ·¹º§´ç ƽī¿îÆ® unsigned short m_usParentSkill; // ºÎ¸ð ½ºÅ³ ¾ÆÀ̵ð unsigned short m_usChildSkill; // ÀÚ½Ä ½ºÅ³ ¾ÆÀ̵ð unsigned long m_dwCoolDownTime; // Äð´Ù¿î ½Ã°£ float m_fMinRange; // ÃÖ¼Ò »çÁ¤ °Å¸® float m_fMaxRange; // ÃÖ´ë »çÁ¤ °Å¸® float m_fEffectExtent; // È¿°ú ¹üÀ§ bool m_bProtection; // º¸È£ ½ºÅ³¿¡ ÀÇÇØ ¸·È÷´Â°¡? bool m_bGauge; // ¿¬¼Ó »ç¿ëÀÌ °¡´ÉÇÑ ½ºÅ³Àΰ¡? (ex. ÆÐ½ºÆ®È÷µå) bool m_bIsClassSkill; // Ŭ·¡½º ½ºÅ³Àΰ¡? bool m_bInterrupt; // ½ºÅÏÀ» ±ú´Â ½ºÅ³Àΰ¡? bool m_bCounter; // Ä«¿îÅÍ ´çÇÏ´Â ½ºÅ³Àΰ¡? unsigned char m_cEndScript; // EndScript¸¦ »ç¿ëÇϴ°¡? unsigned char m_cEndCoolDown; // ½ºÅ³ È¿°ú°¡ ¾ø¾îÁö¸é Äð´Ù¿îÀÌ µ¹¾Æ°£´Ù. (ex. ½ºÅÚ½º) unsigned char m_cStrikeNum; // ´Ù´Ü È÷Æ® Ƚ¼ö unsigned char m_cPadding[1]; ProtoType(); void Initialize(); }; } #pragma pack() #endif