#ifndef _ITEM_CONSTANTS_H_ #define _ITEM_CONSTANTS_H_ #include #include namespace Item { // Àü¹æ ÂüÁ¶ struct ItemInfo; struct ItemAttribute; class CItem; enum Const { MAX_GEM_KIND = 14, // º¸¼®ÀÇ Á¾·ù MAX_LEVEL_OPTION_UPGRADE = 5, // Á¦·Ã½Ã ¿É¼ÇÀÌ Áõ°¡ÇÏ´Â ÃÖ´ë ·¹º§ (ÀÌÈÄ ·¹º§¿¡¼± ¼ÒÄÏÀÌ Áõ°¡ÇÑ´Ù.) MAX_OPTION_BASE_NUM = 6, // ÇÑ ¾ÆÀÌÅÛ¿¡ ºÙÀº ¼ö ÀÖ´Â +ÀÇ ÃÖ´ë °¹¼ö GEMETYPE_RUNE = 5, // 5·¹º§ÀÌ ·éŸÀÔÀÇ ÁªÀÌ´Ù GEMETYPE_RUNE_NUM = 12, // ÁªÅ¸ÀÔÀÇ ·éÀº ÃÑ 12°³ÀÌ´Ù ÇöÀç 3°³ »ç¿ë MAX_TEMP_INVEN_ITEM_NUM = 20, // Àӽà Àκ¥Å丮¿¡ ³ÖÀ» ¼ö ÀÖ´Â ÃÖ´ë ¾ÆÀÌÅÛ °¹¼ö PRICE_AGGRAVATION = 7, // ¸®¹ë·±½Ì Àü ¾ÆÀÌÅÛ¿¡ ´ëÇÑ °¡°Ý °¡ÁßÄ¡ GM_MODEL_ITEM = 49999, // GM ¸ðµ¨·Î ¾²´Â ¾ÆÀÌÅÛ ¾ÆÀ̵ð. MAX_UPGRADE_COUNT = 1, // °í´ëÀÇ µ¹ ¿¬¼Ó ¾÷±×·¡ÀÌµå ¼ö. }; namespace ItemType { // ¾ÆÀÌÅÛ Å¸ÀÔ ( 8bit ) enum Type { NONE = 0, // ºñ±â´É¼º Àåºñ SHIRT = 1, TUNIC = 2, // Àΰ£ ¹æ¾î±¸ CON_ARMOUR = 3, CON_HELM = 4, CON_GLOVE = 5, CON_BOOTS = 6, DEX_ARMOUR = 7, DEX_HELM = 8, DEX_GLOVE = 9, DEX_BOOTS = 10, // Àΰ£ ¹«±â ONEHANDED_SWORD = 11, TWOHANDED_SWORD = 12, ONEHANDED_AXE = 13, TWOHANDED_AXE = 14, ONEHANDED_BLUNT = 15, TWOHANDED_BLUNT = 16, BOW = 17, CROSSBOW = 18, STAFF = 19, DAGGER = 20, SHIELD = 21, // ¾ÆÄ­ ¹æ¾î±¸ CON_BODY = 22, CON_HEAD = 23, CON_PELVIS = 24, CON_PROTECT_A = 25, DEX_BODY = 26, DEX_HEAD = 27, DEX_PELVIS = 28, DEX_PROTECT_A = 29, // ¾ÆÄ­ ¹«±â COM_BLUNT = 30, COM_SWORD = 31, OPP_HAMMER = 32, OPP_AXE = 33, OPP_SLUSHER = 34, OPP_TALON = 35, OPP_SYTHE = 36, // ½ºÅ³¾Ï SKILL_A_GUARD = 37, SKILL_A_ATTACK = 38, SKILL_A_GUN = 39, SKILL_A_KNIFE = 40, // ź¾à·ù ARROW = 41, BOLT = 42, AMMO = 43, // »ç¿ë ¾ÆÀÌÅÛ POTION = 44, EXP_BOOK = 45, CASH_BOOK = 46, EVENT_LOTTERY = 47, PORTAL = 48, FIRE_CRACKER = 49, SKILL_BOOK = 50, FIXED_PORTAL = 51, SKILL_ITEM = 52, CASH_ITEM = 53, // »ç¿ë ºÒ°¡ ¾ÆÀÌÅÛ GEM = 54, ORE = 55, ETC = 56, // °ø¼º¿ë ½ºÅ¸ÅÍŶ CAMP_KIT = 57, SHORT_RANGE_ARMS_KIT = 58, LONG_RANGE_ARMS_KIT = 59, AIRSHIP_KIT = 60, WORLDWEAPON_K_KIT = 61, WORLDWEAPON_M_KIT = 62, MINERAL_KIT = 63, // ¾ÆÀÌÅÛ Äù½ºÆ®¿ë ¾ÆÀÌÅÛ QUEST_ITEM = 64, // ¾Ç¼¼»ç¸® ¾ÆÀÌÅÛ NECKLACE = 65, RING = 66, RUNE = 67, // ÆÇ¸Å Àü¿ë Ãß°¡ ¾ÆÀÌÅÛ(±¸¸Å/ÆÇ¸Å°¡ µ¿ÀÏ. 2006-06-19 by hackermz) GEM_SELL = 68, // ¶óÀÌ´õ RIDE = 69, TRANSFORM = 70, MAX_ITEM_TYPE = 71, }; }; // ¾ÆÀÌÅÛ ÀåÂø Á¦ÇÑ namespace StatusLimit { enum Type { NONE = 0, STR = 1, DEX = 2, CON = 3, INT = 4, WIS = 5, LEVEL = 6, MAX_STATUS_LIMIT = 7 }; }; namespace Attribute { enum Type { // --------------------------------------------------------------------------- // ÀÌ °÷ÀÇ ¼Ó¼ºÀº DB¿¡ ÀúÀåµÇ´Â °ªÀ¸·Î ¼öÁ¤½Ã¿¡ DB ÄÁ¹öÆÃÀÌ ÇÊ¿äÇÕ´Ï´Ù. NONE = 0, MIN_DAMAGE = 1, MAX_DAMAGE = 2, ARMOR = 3, HIT_RATE = 4, EVADE = 5, MAX_HP = 6, HP_REGEN = 7, MAX_MP = 8, MP_REGEN = 9, CRITICAL = 10, BLOCK = 11, SPEED = 12, MAGIC_POWER = 13, MAGIC_RESIST = 14, LUCKCHANCE = 15, MAX_DB_ATTRIBUTE_NUM = 16, // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // ÀÌÈÄ Ãß°¡ ¼Ó¼ºÀº DB¿¡ ÀúÀåµÇÁö ¾Ê½À´Ï´Ù. (·£´ý ¿É¼ÇÀÌ ºÙÀ» ¼ö ¾ø½À´Ï´Ù.) COOLDOWN = 16, SKILL_POINT = 17, FROST = 18, FIRE = 19, ELECTRO = 20, DARKNESS = 21, RUNTYPE = 22, MAX_ATTRIBUTE_NUM = 22 // --------------------------------------------------------------------------- }; enum Trend { Aggressive = (1 << 0), Defensive = (1 << 1) }; enum CriticalType { NONE_TYPE = 0, SWORD_TYPE = 1, AXE_TYPE = 2, BLUNT_TYPE = 3 }; extern const CTypeName Attributes[MAX_ATTRIBUTE_NUM]; }; namespace EquipType { enum Type { ARMOR_TYPE = 0, // °ª¿Ê DAGGER_TYPE = 1, // ´Ü°Ë ONEHANDED_WEAPON_TYPE = 2, // ÇѼչ«±â LONGRANGE_WEAPON_TYPE = 3, // Àå°Å¸®¹«±â TWOHANDED_WEAPON_TYPE = 4, // ¾ç¼Õ¹«±â·ù STAFF_TYPE = 5, // ½ºÅÂÇÁ SHIELD_TYPE = 6, // ¹æÆÐ MAX_TYPE = 7 }; enum Grade { S_GRADE = 0, AAA_GRADE = 1, AA_GRADE = 2, A_GRADE = 3, B_GRADE = 4, C_GRADE = 5, D_GRADE = 6, F_GRADE = 7, X_GRADE = 8, MAX_GRADE = 9 }; enum OptionType { NONE = 0, STANDARD_OPTION = 1, OVER_OPTION = 2, NO_OPTION = 3, MAX_OPTION_TYPE = 4 }; }; namespace EquipmentPos { // Àåºñ À§Ä¡ ( 8bit ) enum Type { // Àΰ£ Àåºñ À§Ä¡ HELM = 0, SHIRT = 1, TUNIC = 2, ARMOUR = 3, GLOVE = 4, BOOTS = 5, NECKLACE = 6, RINGR = 7, RINGL = 8, SHIELD_HAND1 = 9, SHIELD_HAND2 = 10, WEAPON_HAND1 = 11, WEAPON_HAND2 = 12, AVATA = 13, // ¾ÆÄ­ Àåºñ À§Ä¡ HEAD = 0, BODY = 3, PROTECT_ARM = 4, PELVIS = 5, SKILL_ARM = 9, WEAPON = 11, MAX_EQUPMENT_POS = 15, TEMP_ITEM_INDEX = 128 }; }; namespace ExtraSpacePos { enum Type { // -------------------------------------------------------------------------- // 2004-07-14 by ·Îµò // // ExtraÀÇ DB Å©±â´Â ÇöÀç »ç¿ë·®Àº ÃÖ´ë 494 / 508 bytes // ( DB Å©±â¸¦ ÃʰúÇÏÁö ¾Êµµ·Ï ÁÖÀÇÇսôÙ. ) // // Âü°í ÀÚ·á : ÀâÅÛÀÇ Å©±â´Â 14 bytes, // ÀåºñÀÇ ÃÖ´ë Å©±â´Â 52 bytes // ( Ç®¿É¼ÇÀ϶§... 14(±âº») + 6(Àåºñ) + 8(º¸¼®) + 24(¿É¼Ç) ) // -------------------------------------------------------------------------- UPGRADE_EQUIPMENT_POS = 0, // Á¦·Ã Àåºñ UPGRADE_MATERIAL_POS = 1, // Á¦·Ã ±¤¹° HOLDITEM_POS = 2, // µé°í ÀÖ´Â ¾ÆÀÌÅÛ KIT_MATERIAL_POS = 3, // °ø¼ºº´±â Á¦ÀÛ ÀÚÀç CAMP_MATERIAL_POS = 4, // ±æµå ¿ä»õ Á¦ÀÛ ÀÚÀç (»ç¿ë ¾ÈÇÔ) EMBLEM_JEWEL_POS1 = 5, // »ó¡¹° ¾÷±×·¹ÀÌµå º¸¼® (»ç¿ë ¾ÈÇÔ) EMBLEM_JEWEL_POS2 = 6, // (»ç¿ë ¾ÈÇÔ) EMBLEM_JEWEL_POS3 = 7, // (»ç¿ë ¾ÈÇÔ) EMBLEM_JEWEL_POS4 = 8, // (»ç¿ë ¾ÈÇÔ) EMBLEM_JEWEL_POS5 = 9, // (»ç¿ë ¾ÈÇÔ) EMBLEM_JEWEL_POS6 = 10, // (»ç¿ë ¾ÈÇÔ) EMBLEM_JEWEL_POS7 = 11, // (»ç¿ë ¾ÈÇÔ) EMBLEM_JEWEL_POS8 = 12, // (»ç¿ë ¾ÈÇÔ) EMBLEM_JEWEL_POS9 = 13, // (»ç¿ë ¾ÈÇÔ) GRAFT_ORIGINAL_POS = 14, // ¿É¼Ç ÀÌ½Ä ¿øº» Àåºñ GRAFT_SACRIFICE_POS = 15, // ¿É¼Ç ÀÌ½Ä Á¦¹° Àåºñ GRAFT_RESULT_POS = 16, // ¿É¼Ç ÀÌ½Ä °á°ú Àåºñ COMPENSATION_POS = 17, // º¸»ó ÆÇ¸Å ´ë»ó MAX_EXTRA_SPACE_NUM = 18, EMBLEM_JEWEL_POS_NUM = 9 }; }; namespace GiveItem { enum ExceptionUID : unsigned __int64 { // ÄíÆùÀ¸·Î ¾ÆÀÌÅÛ Áö±Þ½Ã Àӽà Àκ¥Å丮°¡ ²ËÂù »óŶó¸é Áö±ÞÀ» ÆæµùÇÑ´Ù. ÀÌ ¶§, »ç¿ëµÇ´Â ¿¹¿Ü UID PENDING_ITEM_UID = 0xFFFFFFFFFFFFFFFF }; }; namespace EtcItemID { enum Type { // º¸¼® ¾ÆÀÌÅÛ ID GEM_START_ID = 1901, GEM_END_ID = 1942, GEM_PERFECTEND_ID = 1956, GEM_RUNE_START_ID = 1957, // º¸¼®¼Ó¼ºÀε¥ ¸ÅÂù¿Ã·ÁÁÖ´Â ¾ÆÀÌÅÛ(·éº¸¼®À̶ó°í ºÒ¸²) GEM_RUNE_END_ID = 1968, GEM_UNSOCKET_ID = 1970, GEM_MAXSOCKET_ID = 1971, // ·é ¾ÆÀÌÅÛ ID RUNE_START_ID = 40000, // ½ÃÀÛ ¾ÆÀ̵ð´Â ¾ÆÀÌÅÛ¿¡ Ãß°¡µÉ ¼ö ¾øÀ½ (°í·Î ¼Ò¸êÀÇ ·é ID¿Í °°Àº °ÍÀÌ º£½ºÆ®!) RUNE_END_ID = 44096, // ¼Ò¸êÀÇ ·é ID DESTRUCTION_RUNE = 40000, // ±¤¹° ¾ÆÀÌÅÛ ID MINERAL_START_ID = 2001, MINERAL_END_ID = 2003, SILVIN = 2001, MITHRIL = 2002, ITERNIUM = 2003, SOULMETAL = 2004, ANTONIUM = 2005, ANCIENTMETAL = 2006, ENDURANCESTONE = 2007, AWAKENCORE = 2008, // °¢¼ºÀÇ ÄÚ¾î (½ÃÁð·¹ÄÚµå3À¸·Î º¯°æµÇ°í ÀåºñÂø¿ë½Ã Âø¿ë·¹º§-5 È¿°ú) // °íö ID SCRAPS = 2101, // ȸº¹¾à ¾ÆÀÌÅÛ ID BREAD = 3020, RARE_STEAK = 3021, WELLDONE_STEAK = 3022, BACON = 3023, // ¸¸³ª MANNA1 = 3024, MANNA2 = 3025, MANNA3 = 3026, MANNA4 = 3027, // ½ºÇÁ SOUP1 = 3028, SOUP2 = 3029, SOUP3 = 3030, SOUP4 = 3031, // ¹öÇÁÆ÷¼Ç½ÃÀÛ¾ÆÀ̵ð + 3±îÁö°¡ ·¹º§·Î Áõ°¡ÇÏ´Â Æ÷¼Ç¾ÆÀ̵ð POTION1 = 3105, POTION2 = 3109, POTION3 = 3113, POTION4 = 3117, POTION5 = 3121, POTION6 = 3153, POTION7 = 3157, POTION8 = 3161, POTION9 = 3165, POTION10 = 3169, POTION11 = 3176, POTION12 = 3180, POTION13 = 3184, POTION14 = 3188, // POTION15 = 3192, // HP, MP // ½ºÅ³ºÏ ÄíÆù ID SKILL_COUPON_3 = 3401, SKILL_COUPON_4 = 3402, // °ø¼º °ü·Ã ½ºÅ¸Æ®Å¶ ID CAMP_KIT_ID = 7100, SHORT_RANGE_ARMS_KIT_ID = 7101, LONG_RANGE_ARMS_KIT_ID = 7102, AIRSHIP_KIT_ID = 7103, WORLDWEAPON_K_KIT = 7105, WORLDWEAPON_M_KIT = 7106, MINERAL_KIT = 7107, // °ø¼º °ü·Ã ÀÚÀç ID SIEGE_MATERIAL_ID = 7104, // ij½¬ÅÛ Á¤º¸ // ¸Á°¢Àǵ¹ ID OBLIVION_STONE = 9914, ORB_EXP = 9101, ORB_LUCK = 9102, CASHPOTION1 = 9001, CASHPOTION2 = 9003, CASHPOTION3 = 9007, CASHPOTION4 = 9009, CASHPOTION5 = 9011, CASHPOTION6 = 9013, CASHPOTION7 = 9015, CASHPOTION8 = 9017, CASHPOTION9 = 9019, CASHPOTION10 = 9021, CASHPOTION11 = 9023, CASHPOTION12 = 9025, CASHPOTION13 = 9027, CASHPOTION14 = 9029, // CASHPOTION15 = 9005, RIDEH1 = 9104, RIDEH2 = 9106, RIDEA1 = 9105, RIDEA2 = 9107, // ºÎȰÀǵ¹ ID REBIRTH_STONE = 9201, // °è¸íÇã°¡¼­ ID RENAME_WARRANT = 9200, }; }; namespace Chemical { // ¾ÆÀÌÅÛ ÇÕ¼º °á°ú enum Result { S_SUCCESS = 0, // ¼º°ø F_WRONG_RECIPE = 2, // ¿Ã¹Ù¸¥ ÇÕ¼º¹ýÀÌ ¾Æ´Õ´Ï´Ù. F_NOT_ENOUGH_ITEM = 3, // ÇÕ¼º ¾ÆÀÌÅÛÀÇ ¼ö°¡ ÃÖ¼Ò·®¿¡ ¹ÌÄ¡Áö ¸øÇÕ´Ï´Ù. F_WRONG_RATE = 4, // ´ë»ó ¾ÆÀÌÅÛÀÇ ¼ýÀÚ¿¡ ³ª¸ÓÁö °ªÀÌ ¹ß»ýÇÕ´Ï´Ù. ÇÕ¼º ºñÀ²À» ¸ÂÃçÁֽñ⠹ٶø´Ï´Ù. F_NOT_QUEST = 5, // ÇÊ¿äÄù½ºÆ®¸¦ ÇÏÁö ¸øÇß´Ù. F_NOT_ABILITY = 6, // ÇØ´ç ¾îºô¸®Æ¼°¡ ÃæÁ·ÇÏÁö ¾Ê´Â´Ù. }; }; namespace Compensation { // Ŭ·¡½ºº° Ư¼ö º¸»ó ÆÇ¸Å enum SpeacialCase { CASE1 = ItemType::MAX_ITEM_TYPE, CASE2 = ItemType::MAX_ITEM_TYPE + 1, CASE3 = ItemType::MAX_ITEM_TYPE + 2, CASE4 = ItemType::MAX_ITEM_TYPE + 3, CASE5 = ItemType::MAX_ITEM_TYPE + 4, CASE6 = ItemType::MAX_ITEM_TYPE + 5, CASE7 = ItemType::MAX_ITEM_TYPE + 6, CASE8 = ItemType::MAX_ITEM_TYPE + 7, CASE9 = ItemType::MAX_ITEM_TYPE + 8, MAX_CASE = ItemType::MAX_ITEM_TYPE + 9 }; }; class CItemType { public: enum ArrayType { EQUIP_TYPE = 0, // ÀåºñŸÀÔ USE_ITEM_TYPE = 1, // ¾ÆÀÌÅÛ Å¸ÀÔ WEAPON_TYPE = 2, // ¿þÆùŸÀÔ SKILL_ARM_TYPE = 3, HELM_TYPE = 4, // Åõ±¸ ARMOUR_TYPE = 5, // °©¿Ê DAGGER_TYPE = 6, // ´Ü°Ë ONEHANDED_TYPE = 7, // ÇѼչ«±â LONGRANGE_TYPE = 8, // Àå°Å¸®¹«±â TWOHANDED_TYPE = 9, // ¾ç¼Õ¹«±â STAFF_TYPE = 10, // ½ºÅÂÇÁ SHIELD_TYPE = 11, // ¹æÆÐ STANDARD_TYPE = 12, OVER_TYPE = 13, NO_TYPE = 14, ACCESSORY_TYPE = 15, AVATA_TYPE = 16, MAX_ARRAY_TYPE = 17 }; typedef std::vector ItemAttributeArray; static CItemType& GetInstance(); // Á¤Àû ¸â¹ö ÇÔ¼ö static ArrayType GetEquipType(unsigned long dwItemFlag); // Rodin : ÀÌ ÇÔ¼öµéÀº CEquipmentÀÇ ¸â¹ö ÇÔ¼ö°¡ µÇ´Â°Ô ÁÁÀ» µí? (±×·¯¸é¼­ CEquipmentÀÇ friendµµ Á¦°Å!) static void SetInstallGemAttribute(CItem* lpItem); static void SetUpgradeItemAttribute(CItem* lpItem); // ¸â¹ö ÇÔ¼ö bool IsCorrectItemType(ArrayType itemType, unsigned char cEquipType); bool IsCorrectOptionType(EquipType::OptionType eOptionType, ItemType::Type eItemType); EquipType::OptionType GetOptionType(ItemType::Type eItemType); void SetEquipTypeFlags(ItemInfo& itemInfo); void SetAccessoryTypeFlags(ItemInfo& itemInfo); void SetAvataTypeFlags(ItemInfo& itemInfo); void SetUseItemTypeFlags(ItemInfo& itemInfo); void SetEtcItemTypeFlags(ItemInfo& itemInfo); CTypeName* GetItemTypeName(void) { return m_ItemTypeNames; } CTypeName* GetItemLimitName(void) { return m_ItemLimitNames; } CTypeName* GetItemGradeName(void) { return m_ItemGradeNames; } private: CItemType(); typedef std::vector ItemTypeArray; ItemTypeArray m_ItemTypes[MAX_ARRAY_TYPE]; CTypeName m_ItemTypeNames[ItemType::MAX_ITEM_TYPE]; CTypeName m_ItemLimitNames[StatusLimit::MAX_STATUS_LIMIT]; CTypeName m_ItemGradeNames[EquipType::MAX_GRADE]; }; }; #endif