Files
2026-06-01 12:46:52 +02:00

177 lines
7.5 KiB
C

#pragma once
enum
{
MIX_CHECK_ITEM_GROUP = 1, // 아이템 대분류가 지정 수치와 동일
MIX_CHECK_ITEM_CLASS = 2,
MIX_CHECK_ITEM_ID = 3,
MIX_CHECK_ITEM_RANK = 4,
MIX_CHECK_ITEM_LEVEL = 5,
MIX_CHECK_INSTANCE_FLAG_ON = 6,
MIX_CHECK_INSTANCE_FLAG_OFF = 7,
MIX_CHECK_ENHANCE_MATCH = 8,
MIX_CHECK_ENHANCE_DISMATCH = 9,
MIX_CHECK_ITEM_COUNT = 10,
MIX_CHECK_ELEMENTAL_EFFECT_MATCH = 11,
MIX_CHECK_ELEMENTAL_EFFECT_MISMATCH = 12,
MIX_CHECK_ITEM_WEAR_POSITION_MATCH = 13,
MIX_CHECK_ITEM_WEAR_POSITION_MISMATCH = 14,
MIX_CHECK_ITEM_COUNT_GE = 15, // 아이템 개수가 지정 수량 이상
MIX_CHECK_ITEM_ETHEREAL_DURABILITY_E = 16, // 에테리얼 내구도가 지정 수치와 동일
MIX_CHECK_ITEM_ETHEREAL_DURABILITY_NE = 17, // 에테리얼 내구도가 지정 수치와 다름
MIX_CHECK_ITEM_GRADE = 18, // 아이템 등급이 지정 수치와 동일
MIX_CHECK_SAME_ITEM_ID = 19, // 지정된 슬롯의 아이템과 동일한 아이템 코드(보조 재료 상호 참조형)
MIX_CHECK_SAME_SUMMON_CODE = 20, // 지정된 슬롯의 아이템과 동일한 소환수 코드(보조 재료 상호 참조형)
MIX_CHECK_ITEM_EXPIRED_TIME_GE = 21, // 기간제 아이템의 남은 시간이 지정 수치보다 크거나 같음
MIX_CHECK_ITEM_EXPIRED_TIME_LE = 22, // 기간제 아이템의 남은 시간이 지정 수치보다 작거나 같음
MIX_CHECK_ITEM_FIRST_SOCKET_CODE_MATCH = 23, // 첫번째 소켓의 코드가 지정 수치와 동일
MIX_CHECK_SAME_ITEM_ENHANCE = 24, // 지정된 슬롯의 아이템과 동일한 강화(보조 재료 상호 참조형)
MIX_CHECK_SAME_SKILL_ID = 25, // 지정된 슬롯의 아이템과 동일한 스킬 ID(보조 재료 상호 참조형)
MIX_CHECK_ITEM_MAX_ETHEREAL_DURABILITY_E = 26, // 최대 에테리얼 내구도가 지정 수치와 동일
MIX_CHECK_ITEM_MAX_ETHEREAL_DURABILITY_NE = 27, // 최대 에테리얼 내구도가 지정 수치와 다름
MIX_CHECK_ITEM_FIRST_SOCKET_CODE_G = 28, // 첫번째 소켓의 코드가 지정 수치보다 작음(보조 재료 상호 참조형, 소켓의 코드에는 일반적으로 대소 비교의 의미가 없지만 벨트 소켓 비교를 위해 추가)
MIX_CHECK_ITEM_FIRST_SOCKET_CODE_L = 29, // 첫번째 소켓의 코드가 지정 수치보다 작음(보조 재료 상호 참조형, 소켓의 코드에는 일반적으로 대소 비교의 의미가 없지만 벨트 소켓 비교를 위해 추가)
MIX_CHECK_ITEM_TYPE = 30, // 아이템 타입이 지정 수치와 동일
MIX_CHECK_SAME_ITEM_CLASS = 31, // 지정된 슬롯의 아이템과 동일한 중분류(보조 재료 상호 참조형)
MIX_CHECK_ITEM_GROUP_NE = 32, // 아이템 대분류가 지정 수치와 다름
MIX_CHECK_INCLUDE_RACE_LIMIT = 33, // 지정된 슬롯의 아이템의 직업 제한에 포함 관계(허용되는 직업 제한의 예. 아수라⊂아수라, 아수라⊂전종족, 아수라⊂(아수라 or 데바))
MIX_CHECK_AWAKEN_ITEM = 34, // 각성 대상 아이템의 상태 확인
MIX_CHECK_SAME_SUMMON_RATE = 35, // 지정된 슬롯의 아이템과 동일한 소환수 등급
MIX_CHECK_BASE_FLAG_ON = 36,
MIX_CHECK_DESIGNER_DEFIEND_TYPE = 37, // 기획자가 지정한 룰에 만족하는지 체크
MIX_CHECK_BASE_FLAG_OFF = 38,
MIX_CHECK_ENHANCE_GE = 39,
MIX_CHECK_ENHANCE_LE = 40,
MIX_CHECK_SAME_ITEM_GROUP = 41,
// Fraun Sky Accessories 7/16/2025
MIX_CHECK_ADDITIONAL_ITEM_EFFECT = 42,
MIX_CHECK_ADDITIONAL_ITEM_EFFECT_AWAKEN = 43,
MIX_CHECK_ADDITIONAL_ITEM_EFFECT_ERASER = 44,
MIX_CHECK_ITEM_GRADE_HIGHER = 58,
MIX_CHECK_ITEM_WEAR_TYPE = 72,
MIX_CHECK_ITEMID_EQUAL_OR_MORE = 73,
MIX_CHECK_ITEMID_EQUAL_OR_LESS = 74,
MIX_CHECK_IDENTIFIED_ITEM = 75,
};
enum
{
DESIGNER_TYPE_WEAPON = 0, // 무기류
DESIGNER_TYPE_ARMOR = 1, // 방어구류 (강화 가능한 모든 방어구)
DESIGNER_TYPE_DURABILITY = 2, // 방어구류 (강화 가능한 모든 방어구)
};
struct MaterialInfo
{
static const int MATERIAL_INFO_COUNT = 5;
int type[ MATERIAL_INFO_COUNT ];
int value[ MATERIAL_INFO_COUNT ];
};
struct MixBase
{
enum
{
MIX_ENHANCE = 101,
MIX_ENHANCE_SKILL_CARD = 102,
MIX_ENHANCE_WITHOUT_FAIL = 103,
MIX_ENHANCE_CREATURE_CARD = 104,
MIX_ENHANCE_CREATURE_CARD_WITH_JOKER = 105,
MIX_ENHANCE_SKILL_CARD_WITHOUT_FAIL = 106,
MIX_ULTIMATE_ENHANCE = 111,
MIX_SET_LEVEL = 201,
MIX_SET_LEVEL_CREATE_ITEM = 202,
MIX_SET_LEVEL_WITH_FAIL = 203,
MIX_SET_LEVEL_SET_FLAG = 211,
MIX_SET_LEVEL_SET_FLAG_CREATE_ITEM = 212,
MIX_SET_LEVEL_SET_FLAG_CREATE_ITEM_WITH_MAIN_MATERIAL_LEVEL = 213,
MIX_SET_LEVEL_ON_SUB_MATERIAL_LEVEL_SET_FLAG = 214,
MIX_SET_LEVEL_SET_FLAG_CREATE_ITEM_WITH_MAIN_MATERIAL_LEVEL_SET_ZERO = 215,
MIX_ADD_LEVEL = 301,
MIX_ADD_LEVEL_CREATE_ITEM = 302,
MIX_ADD_LEVEL_SET_FLAG = 311,
MIX_ADD_LEVEL_SET_FLAG_CREATE_ITEM = 312,
MIX_RECYCLE = 401,
MIX_RECYCLE_ENHANCE = 402,
MIX_RESTORE_ENHANCE_SET_FLAG = 501,
MIX_CREATE_ITEM = 601,
MIX_REPLACE_WITH = 602,
MIX_CHANGE_APPEARANCE_CODE = 603,
MIX_CHANGE_USABLE_PERIOD = 604,
MIX_CREATE_ITEM_IN_MASS = 605,
MIX_CHANGE_CODE_ADD = 606,
MIX_REMOVE_APPEARANCE_CODE = 607,
MIX_REPLACE_WITH_RANDOM = 608,
MIX_ADD_ADDITIONAL_ITEMEFFECT = 610, // Fraun Sky Accessories 7/12/2025
MIX_SET_ELEMENTAL_EFFECT = 701,
MIX_SET_ELEMENTAL_EFFECT_PARAMETER = 702,
MIX_SET_SOCKET = 703,
MIX_REPLACE_SOCKET_WITH = 704,
MIX_SACRIFICE_ITEM_FOR_ETHEREAL_DURABILITY_WITH_MESSAGE = 801,
MIX_TRANSMIT_ETHEREAL_DURABILITY = 802,
MIX_RECOVER_EXHAUSTED_ETHEREAL_DURABILITY = 803,
MIX_SACRIFICE_ITEM_FOR_ETHEREAL_DURABILITY = 804,
MIX_SACRIFICE_ITEM_FOR_ETHEREAL_STONE_DURABILITY = 805,
MIX_TRANSMIT_ETHEREAL_DURABILITY_FROM_ETHEREAL_STONE = 806,
MIX_AWAKEN_ITEM = 807, // 아이템 각성
MIX_DELETE_AWAKEN_OPTION = 808, // 아이템 각성 해제
MIX_ITEM_IDENTIFY_FOR_RANDOM_OPTION = 901, // 아이템 랜덤화
// AziaMafia MIX_
MIX_RE_AWAKEN_OPTION = 809,
MIX_DELETE_RANDOM_OPTION = 902,
MIX_ITEM_RE_IDENTIFY_FOR_RANDOM_OPTION = 903,
MIX_RANDOM_SOCKET_SCRIPT = 904,
MIX_AWAKEN_ITEM_BY_RANDOM_OPTION = 905,
MIX_REPLACE_WITH_AND_SCRIPT = 906, // NOT CODED
MIX_SCRIPT_LUA = 907,
MIX_REAWAKEN_ITEM_BY_RANDOM_OPTION = 908,
};
// 소켓과 관련된 조합의 후 처리 정책
enum
{
RESULT_SOCKET_DO_NOTHING = 0,
RESULT_SOCKET_ERASE = 1,
RESULT_SOCKET_RESET = 2,
};
static const int VALUE_COUNT = 6;
static const int MAX_SUB_MATERIAL_COUNT = 9;
static const int MAX_CREATABLE_ITEM = 1000;
int id;
int type;
int value[ VALUE_COUNT ];
int sub_material_cnt;
MaterialInfo main_material;
MaterialInfo sub_material[ MAX_SUB_MATERIAL_COUNT ];
};
struct DecomposeBase
{
enum
{
DECOMPOSE_CREATE_ITEM = 101,
};
int id; // 분해식 ID
int type; // 유형 ID
int neededPrice; // 필요돈
int value[ MixBase::VALUE_COUNT ]; // 조합유형에 따른 값
MaterialInfo material; // 재료 식별 형태
};