#ifndef _ITEM_CONSTANTS_H_ #define _ITEM_CONSTANTS_H_ #include #include #include "../Utility/TypeArray.h" namespace Item { // Àü¹æ ÂüÁ¶ struct ItemInfo; struct ItemAttribute; class CItemType : public CSingleton { public: // ¾ÆÀÌÅÛ Å¸ÀÔ ( 8bit ) enum Type { // Àΰ£ ¾ÆÀÌÅÛ. HELM = 0, SHIRT = 1, TUNIC = 2, ARMOUR = 3, GLOVE = 4, BOOTS = 5, SWORD = 6, BLUNT = 7, AXE = 8, TWOHANDED_BLUNT = 9, TWOHANDED_AXE = 10, TWOHANDED_SWORD = 11, BOW = 12, CROSSBOW = 13, STAFF = 14, DAGGER = 15, SHIELD = 16, CLOAK = 17, RING = 18, NECKLACE = 19, // °ø¿ë ¾ÆÀÌÅÛ POTION = 20, POISON = 21, TRAP = 22, SKILLBOOK = 23, // ÄüâX GEM = 24, RUNE = 25, MATERIAL = 26, AMMO = 27, ETC = 28, // ÀÎÀÚ X, Äüâ X // ¾ÆÄ­ ¾ÆÀÌÅÛ HEAD = 29, BODY = 30, PROTECT_A = 31, PELVIS = 32, COM_BLUNT = 33, COM_SWORD = 34, OPP_HAMMER = 35, OPP_AXE = 36, OPP_SLUSHER = 37, OPP_TALON = 38, OPP_SYTHE = 39, SKILL_A_GUARD = 40, SKILL_A_ATTACK = 41, SKILL_A_GUN = 42, SKILL_A_KNIFE = 43, ACCESSORY = 44, // °ø¿ë ¾ÆÀÌÅÛ ARROW = 45, BOLT = 46, MAX_ITEM_TYPE = 47 }; enum ArrayType { EQUIP_TYPE = 0, USE_ITEM_TYPE = 1, WEAPON_TYPE = 2, ARMOUR_TYPE = 3, SKILL_ARM_TYPE = 4, TWOHANDED_TYPE = 5, MAX_ARRAY_TYPE = 6 }; // Á¤Àû ¸â¹ö ÇÔ¼ö static Item::ItemAttribute GetInstallGemAttribute(unsigned char cGemType, unsigned char cEquipType, bool bPlus = false); static unsigned char GetUpgradeItemAttribute(unsigned char EquipType, Item::ItemAttribute& Attribute); // ¸â¹ö ÇÔ¼ö bool IsCorrectItemType(ArrayType itemType, unsigned char cEquipType); unsigned char ConvertRandomOptionType(unsigned char cEquipType); void SetEquipTypeFlags(ItemInfo& itemInfo); void SetUseItemTypeFlags(ItemInfo& itemInfo); void SetEtcItemTypeFlags(ItemInfo& itemInfo); CTypeName* GetItemTypeName() { return m_ItemTypeNames; } private: CItemType(); typedef std::vector ItemTypeArray; ItemTypeArray m_ItemTypes[MAX_ARRAY_TYPE]; CTypeName m_ItemTypeNames[MAX_ITEM_TYPE]; static CItemType ms_this; }; namespace Attribute { enum Type { // Creature°¡ °®´Â ¼Ó¼º. ¾ÆÀÌÅÛ¿¡µµ Àû¿ëµÊ. NONE = 0, CRITICAL_TYPE = 1, CRITICAL_PERCENTAGE = 2, MIN_DAMAGE = 3, MAX_DAMAGE = 4, DRC = 5, OFFENCE_REVISION = 6, DEFENCE = 7, DEFENCE_REVISION = 8, MAGIC_RESISTANCE = 9, BLOCKING_PERCENTAGE = 10, ATTACK_SPEED = 11, MOVE_SPEED = 12, ATTACK_RANGE = 13, RANGE_ATTACK_DISTANCE = 14, MAX_HP = 15, MAX_MP = 16, HP_REGEN_AMOUNT = 17, MP_REGEN_AMOUNT = 18, FIRE_ATTACK = 19, LIGHTNING_ATTACK = 20, COLD_ATTACK = 21, DRAIN_ATTACK = 22, POISON_ATTACK = 23, FIRE_RESISTANCE = 24, LIGHTNING_RESISTANCE = 25, COLD_RESISTANCE = 26, DRAIN_RESISTANCE = 27, POISON_RESISTANCE = 28, ADD_STR = 29, ADD_DEX = 30, ADD_CON = 31, ADD_INT = 32, ADD_WIS = 33, MAX_ATTRIBUTE_NUM = 34 }; enum Trend { Aggressive = (1 << 0), Defensive = (1 << 1) }; extern const CTypeName Attributes[MAX_ATTRIBUTE_NUM]; }; namespace EquipType { enum Type { Attach = 0, Detach = 1 }; enum DoubleSwordType { SoloSword = 0, WarriorDoubleSword = 1, AssasinDoubleDagger = 2 }; }; namespace RandomOption { enum Type { WEAPON = 0, ARMOUR_BODY = 1, HELM_HEAD = 2, RING_ACCESSORY = 3, NECKLACE = 4, SKILL_A_GUARD = 5, SKILL_A_WEAPON = 6, MAX_RANDOM_OPTION_TYPE = 7 }; enum Attribute { MAX_DURABILITY = 0, NOW_DURABILITY = 1, MIN_DAMAGE = 2, MAX_DAMAGE = 3, OFFENCE_REVISION = 4, DEFENCE = 5, DEFENCE_REVISION = 6, MAGIC_RESISTANCE = 7, CRITICAL_PERCENTAGE = 8, BLOCKING_PERCENTAGE = 9, MAX_HP = 10, MAX_MP = 11, HP_REGEN_AMOUNT = 12, MP_REGEN_AMOUNT = 13, MAX_RANDOM_OPTION_ATTRIBUTE = 14 }; enum ValueRange { MIN_MINUS_FACTOR = 0, MIN_MULTIPLY_FACTOR = 1, MIN_DIVIDE_FACTOR = 2, MAX_MULTIPLY_FACTOR = 3, MAX_DIVIDE_FACTOR = 4, MAX_PLUS_FACTOR = 5, MAX_RANDOM_OPTION_VALUE_RANGE = 6 }; }; 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, CLOAK = 13, RIDE = 14, // ¾ÆÄ­ Àåºñ À§Ä¡ HEAD = 0, BODY = 3, PROTECT_ARM = 4, PELVIS = 5, ACCESSORY1 = 6, ACCESSORY2 = 7, ACCESSORY3 = 8, SKILL_ARM = 9, WEAPON = 11, MAX_EQUPMENT_POS = 16, TEMP_ITEM_INDEX = 128 }; }; // ¾ÆÀÌÅÛ ÀåÂø Á¦ÇÑ namespace StatusLimit { enum Type { NONE = 0, LEVEL = 1, STR = 2, DEX = 3, CON = 4, INT = 5, WIS = 6, MAX_STATUS_LIMIT = 7 }; }; // ¾ÆÀÌÅÛ µî±Þ namespace Grade { enum Type { ETC = 0, NORMAL = 1, ENHANCED = 2, RARE = 3, MAX_ITEM_GRADE = 4 }; extern const CTypeName Grades[MAX_ITEM_GRADE]; }; namespace ExtraSpacePos { enum Type { UPGRADE_EQUIPMENT_POS = 0, UPGRADE_MATERIAL_POS = 1, HOLDITEM_POS = 2, MAX_EXTRA_SPACE_NUM = 3 }; }; namespace EtcItemID { enum Type { // º¸¼® ¾ÆÀÌÅÛ ID GEM_START_ID = 1901, GEM_END_ID = 1915, // ±¤¹° ¾ÆÀÌÅÛ ID MINERAL_START_ID = 2001, MINERAL_END_ID = 2003, // ȸº¹¾à ¾ÆÀÌÅÛ ID POTION_START_ID = 3020, POTION_END_ID = 3124, // ¸Á°¢ÀÇ µ¹ OBLIVION_STONE = 9914 }; }; }; #endif