Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
271 lines
6.8 KiB
C++
271 lines
6.8 KiB
C++
#ifndef _ITEM_CONSTANTS_H_
|
|
#define _ITEM_CONSTANTS_H_
|
|
|
|
#include <vector>
|
|
#include <Pattern/Singleton.h>
|
|
#include "../Utility/TypeArray.h"
|
|
|
|
namespace Item
|
|
{
|
|
// 전방 참조
|
|
struct ItemInfo;
|
|
struct ItemAttribute;
|
|
|
|
class CItemType : public CSingleton<CItemType>
|
|
{
|
|
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<Type> 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 |