Files
Leviathan/Client/Game/game/Resource/ContentStruct.h
T
2026-06-01 12:46:52 +02:00

474 lines
13 KiB
C++

#pragma once
#include "ItemBase.h"
#include "MonsterBase.h"
#include "SkillBase.h"
#include <mmo/ArType.h>
//#include <vector>
//#include <string>
#ifdef _RDBGENTEST
#pragma pack( push, 1 )
#endif
struct JobInfo
{
enum
{
FIGHTER = 1,
HUNTER = 2,
MAGICIAN = 3,
SUMMONER = 4,
};
enum
{
GAIA = 3,
DEVA = 4,
ASURA = 5,
};
enum
{
GAIA_BASIC_JOB = 100,
DEVA_BASIC_JOB = 200,
ASURA_BASIC_JOB = 300,
};
enum
{
BANGRANGJA = 100,
TUSA = 101, ///< JUNSA / GUNGSA
JUSULSA = 102, ///< MADOSA / MATUSA
YASUSA = 103, ///< MASUSA
JUNSA = 110,
GUNGSA = 111,
MADOSA = 112,
MATUSA = 113,
MASUSA = 114,
GUMSUNG = 121,
GIGONGSA = 122,
DAISASU = 123,
BIJUNSULSA = 124,
JUNGRYUNGSULSA = 125,
CHOHONSA = 126,
//--------------------------------------------------------------------------
GAID = 200,
FIGHTER_JOP = 201, ///< NENIGHT / WARRIOR
CLERIC = 202, ///< MAGE / PRIST
TAMER = 203, ///< BAIDER
NENIGHT = 210,
WARRIOR = 211,
MAGE = 212,
PRIST = 213,
BAIDER = 214,
PALADIN = 221,
MINISTER = 222,
SHAININGRANGER = 223,
HIGHTPRIST = 224,
SAIGE = 225,
PANCER = 226,
//--------------------------------------------------------------------------
STEPPER = 300,
STRIDER = 301, ///< ASSASSIN / RANGER
MAGICIAN_JOP = 302, ///< SORCERER / DARKMAGICIAN
SUMMONER_JOP = 303, ///< BATTLESUMMONER
ASSASSIN = 310,
RANGER = 311,
SORCERER = 312,
DARKMAGICIAN = 313,
BATTLESUMMONER = 314,
DARKCHAICER = 321,
DARKSTRIKER = 322,
NECROMANCER = 323,
DARKPRIST = 324,
ARKSORCERER = 325,
SPIRITSUMMONER = 326
};
int id;
int text_id;
int stat_id;
int skill_tree_id;
char job_class;
char job_depth;
short up_lv;
short up_jlv;
short availble_job[4];
};
#ifdef _RDBGENTEST
#pragma pack( pop )
#endif
struct JobLevelBonus
{
int job_id;
float strength[4];
float vital[4];
float dexterity[4];
float agility[4];
float intelligence[4];
float mentality[4];
float luck[4];
};
// sonador 10.4.1 스킬 툴팁 리뉴얼
#ifdef _RDBGENTEST
#pragma pack(push,1)
#endif
struct StateInfo
{
enum
{
TYPE_NORMAL = 0,
TYPE_DUPLICATE = 1,
TYPE_DEPENDENCE = 2,
};
enum
{
// 2012.10.24 Metin 각성 옵션 사용.
STR = 1, //FLAG_STR = ( 1 << 0 ), // 힘
VIT = 1<<1, //FLAG_VIT = ( 1 << 1 ), // 체력
DEX = 1<<2, //FLAG_AGI = ( 1 << 2 ), // 민첩
AGI = 1<<3, //FLAG_DEX = ( 1 << 3 ), // 집중
INT = 1<<4, //FLAG_INT = ( 1 << 4 ), // 지능
MEN = 1<<5, //FLAG_MEN = ( 1 << 5 ), // 정신
LUCK = 1<<6, //FLAG_LUK = ( 1 << 6 ),
PHYSICS = 1<<7, //FLAG_ATTACK_POINT = ( 1 << 7 ), // 물리 공격력
MAGIC = 1<<8, //FLAG_MAGIC_POINT = ( 1 << 8 ), // 마법 공격력
PHY_DEF = 1<<9, //FLAG_DEFENCE = ( 1 << 9 ), // 물리 방어력
MGC_DEF = 1<<10, //FLAG_MAGIC_DEFENCE = ( 1 << 10 ),// 마법 방어력
A_SPEED = 1<<11, //FLAG_ATTACK_SPEED = ( 1 << 11 ), // 공격속도
C_SPEED = 1<<12, //FLAG_CAST_SPEED = ( 1 << 12 ), // 시전속도
M_SPEED = 1<<13, //FLAG_MOVE_SPEED = ( 1 << 13 ), // 이동속도
ACCURACY = 1<<14, //FLAG_ACCURACY = ( 1 << 14 ), // 명중
MGS_ACRC = 1<<15, //FLAG_MAGIC_ACCURACY = ( 1 << 15 ), // 마법명중
CRI = 1<<16, //FLAG_CRITICAL = ( 1 << 16 ),
BLOCK = 1<<17, //FLAG_BLOCK = ( 1 << 17 ),
BLC_DEF = 1<<18, //FLAG_BLOCK_DEFENCE = ( 1 << 18 ),
AVOIDANCE = 1<<19, //FLAG_AVOID = ( 1 << 19 ), // 회피
MGS_RESIST = 1<<20, //FLAG_MAGIC_RESISTANCE = ( 1 << 20 ) // 마법저항
MAXHP = 1<<21, //FLAG_MAX_HP = ( 1 << 21 ),
MAXMP = 1<<22, //FLAG_MAX_MP = ( 1 << 22 ),
MAXSP = 1<<23, //FLAG_MAX_SP = ( 1 << 23 ),
HP_RECVRY = 1<<24, //FLAG_HP_REGEN_ADD = ( 1 << 24 ),
MP_RECVRY = 1<<25, //FLAG_MP_REGEN_ADD = ( 1 << 25 ),
SP_RECVRY = 1<<26, //FLAG_SP_REGEN_ADD = ( 1 << 26 ),
HP_REGEN = 1<<27, //FLAG_HP_REGEN_RATIO = ( 1 << 27 ),
MP_REGEN = 1<<28, //FLAG_MP_REGEN_RATIO = ( 1 << 28 ),
CRI_POWER = 1<<29, //FLAG_CRITICAL_DAMAGE_BACKUP = ( 1 << 29 ),
POSSESS = 1<<30, //FLAG_MAX_WEIGHT = ( 1 << 30 ),
};
enum
{
NOR_RESIST = 1,
FIRE_RESIST = 1<<1,
WATER_RESIST = 1<<2,
WIND_RESIST = 1<<3,
EARTH_RESIST = 1<<4,
LIGHT_RESIST = 1<<5,
DARK_RESIST = 1<<6,
/// 2011.03.30 - prodongi
PBLOCK_CHANCE = 1<<9,
ADEF_IGNORE = 1<<10,
MDEF_IGNORE = 1<<11,
ADEM_PENETRATION = 1<<12,
MDEM_PENETRATION = 1<<13,
NOR_CONTN = 1<<14,
FIRE_CONTN = 1<<15,
WATER_CONTN = 1<<16,
WIND_CONTN = 1<<17,
EARTH_CONTN = 1<<18,
LIGHT_CONTN = 1<<19,
DARK_CONTN = 1<<20,
NOR_DAG = 1<<21,
FIRE_DAG = 1<<22,
WATER_DAG = 1<<23,
WIND_DAG = 1<<24,
EARTH_DAG = 1<<25,
LIGHT_DAG = 1<<26,
DARK_DAG = 1<<27,
CRI_DAG = 1<<28,
HP_REGEN_STOP = 1<<29,
MP_REGEN_STOP = 1<<30,
};
enum STATE_FX_BASE
{
STATE_FX_BASE_NONE = 0,
STATE_FX_BASE_CONTINUAL_PHYSICAL_DAMAGE = 1,
STATE_FX_BASE_CONTINUAL_PHYSICAL_DAMAGE_IGNORE_DEFENSE = 2,
STATE_FX_BASE_CONTINUAL_MAGICAL_DAMAGE = 3,
STATE_FX_BASE_CONTINUAL_MAGICAL_DAMAGE_IGNORE_DEFENSE = 4,
STATE_FX_BASE_MAGICAL_HP_RESTORATION = 11,
STATE_FX_BASE_MAGICAL_MP_RESTORATION = 12,
};
enum STATE_FX
{
STATE_PARAMETER_INCREASE = 1,
STATE_PARAMETER_AMPLIFY = 2,
STATE_PARAMETER_INCREASE_SHIELD = 3,
STATE_PARAMETER_INCREASE_SHIELD_2 = 4,
STATE_BLESS_OF_GODDESS = 7,
STATE_PARAMETER_SYNC = 8, // 2010.05.14 파라메터 동기화 - prodongi
STATE_DOUBLE_ATTACK = 21,
STATE_ATTACK_ADD_DAMAGE = 22,
STATE_ATTACK_ADD_DAMAGE_RATE = 23,
STATE_MAGIC_ADD_DAMAGE = 24,
STATE_MAGIC_ADD_DAMAGE_RATE = 25,
STATE_ATTACK_ADD_STATE = 26,
STATE_ATTACK_RECOVERY = 27,
STATE_ADD_HP_MP_WHEN_CRITICAL = 34,
STATE_AMPLIFY_SKILL_HEAL_AMOUNT = 35,
STATE_ATTACK_TO_TARGET = 36, // 2010.07.07 공격시 일정확률로 공격대상에게 지속효과 부여 - prodongi
STATE_ATTACK_TO_MY = 37, // 2010.06.28 공격시 일정확률로 자신에게 지속효과 부여 - prodongi
STATE_ATTACKED_TO_ATTACKER = 38, // 2010.05.17 피격시 일정확률로 공격자에게 지속효과 부여 - prodongi
STATE_ATTACKED_TO_MY = 39, // 2010.05.17 피격시 일정확률로 자신에게 지속효과 부여 - prodongi
STATE_ATTACK_RECOVERY_RATE = 41,
STATE_ATTACK_ABSORB = 42,
STATE_BEATTACKED_REFLECTION = 43,
STATE_BEATTACKED_REFLECTION_IGNORE_DEFENSE = 44,
STATE_DECREASE_DAMAGE_BY_RATE = 46,
STATE_TRANSFER_DAMAGE_TO_MP = 49,
STATE_REALTIME_MAINTENANCE_RECOVERY = 61,
STATE_RECOVERY_HP_MP = 64, /// 2011.04.05 HP, MP 지속 회복 - prodongi
STATE_RECOVERY_HP = 73, /// 2011.04.26 지속시간 동안 적용되는 hp 회복 - prodongi
STATE_INCAPACITATE_STATE = 81,
STATE_IMPOSSIBLE_ACTION = 82,
STATE_INCREASE_HATE = 83,
STATE_INCREASE_INTIMIDATION = 86,
STATE_INTERRUPT_SKILL = 87,
STATE_ADD_STATE_IN_REGION = 88,
STATE_DECREASE_MP_CONSUMPTION = 91,
STATE_INCREASE_POWER_CRI_AG_COOL = 92,
STATE_SKILL_INCREASE_POWER_CRI_AG_COOL = 93,
STATE_ATTACK_KNOCKBACK = 94,
STATE_ATTACK_RANGETYPE = 95,
STATE_SELF_REBIRTH = 109,
STATE_DETECT_HIDING = 111,
STATE_RIDING = 200,
/// 2011.03.07 - prodongi
STATE_INVULNERABLENESS = 3111, /// 불사신
STATE_ADD_STATE_TO_MY_WHEN_KILL_TARGET = 3201, /// 대상을 죽였을 때, 자신에게 지속효과 부여
STATE_ADD_STATE_TO_TARGET_WHEN_CRITICAL_ATTACK = 3202, /// 크리티컬 공격시 일정확률로 공격대상에게 지속효과 부여
STATE_ADD_STATE_TO_MY_WHEN_CRITICAL_ATTACK = 3203, /// 크리티컬 공격시 일정확률로 자신에게 지속효과 부여
STATE_ADD_STATE_TO_ATTACKER_WHEN_CRITICAL_ATTACKED = 3204, /// 크리티컬 피격시 일정확률로 공격자에게 지속효과 부여
STATE_ADD_STATE_TO_MY_WHEN_CRITICAL_ATTACKED = 3205, /// 크리티컬 피격시 일정확률로 자신에게 지속효과 부여
STATE_ADD_STATE_TO_ATTACKER_WHEN_AVOIDANCE = 3206, /// 회피 발동시 일정확률로 공격자에게 지속효과 부여
STATE_ADD_STATE_TO_MY_WHEN_AVOIDANCE = 3207, /// 회피 발동시 일정확률로 자신에게 지속효과 부여
STATE_ADD_STATE_TO_ATTACKER_WHEN_SHIELD_BLOCK = 3208, /// 방패 블록 발동시 일정확률로 공격자에게 지속효과 부여
STATE_ADD_STATE_TO_MY_WHEN_SHIELD_BLOCK = 3209, /// 방패 블록 발동시 일정확률로 자신에게 지속효과 부여
STATE_ADD_STATE_TO_ATTACKER_SHIELD_PERFECT_BLOCK = 3210, /// 방패 퍼펙트 블록 발동시 일정확률로 공격자에게 지속효과 부여
STATE_ADD_STATE_TO_MY_SHIELD_PERFECT_BLOCK = 3211, /// 방패 퍼펙트 블록 발동시 일정확률로 자신에게 지속효과 부여
STATE_INFINITY_SUMMON_RECALL = 3121, /// 무한의 이체 소환
/// 2011.03.18 - prodongi
STATE_RANGE_TYPE_MODIFY_DAMAGE = 3021, /// 기본공격시 추가데미지 증가 + 피격시 데미지 감소
STATE_ATTACKED_DEC_DAMAGE = 3031, /// 피격시 입는 모든 데미지를 일정% + 일정수치 감소시킨다.
STATE_ATTACK_AMPLIFY_ATT_DAMAGE = 3062, /// 기본공격시 공격력 기반 데미지 증폭
STATE_ATTACKED_ADD_DAMAGE = 74, /// 지속시간 동안 히트되는 모든 물리적, 마법적 공격에 대해 데미지 증폭, HP회복 순간효과와 지속효과의 효율 증가한다.
STATE_ADD_STATE_DAMAGE = 3071, /// 파라메터 값을 기반으로 지속데미지 증가
STATE_AMPLIFY_STATE_DAMAGE = 3072, /// 파라메터 값을 기반으로 지속데미지 증폭
STATE_NOT_CONSUMPTION_ENERGY = 3301, /// 기공 소모 스킬 사용시 기공을 소모하지 않는다.
/// 2011.03.22 - prodongi
STATE_ADD_STATE_TO_MY_WHEN_DEAD = 3311, /// 사망 시 자신에게 지속효과 부여
STATE_AUTO_RESURRECTION = 3321, /// 자동 부활
/// 2011.04.05 - prodongi
};
enum
{
MILLI = 0,
RANGE = 1,
ALL = 99,
};
enum
{
ET_NONE = 0, ///< 무속성
ET_FIRE = 1, ///< 화속성
ET_WATER = 2, ///< 수속성
ET_WIND = 3, ///< 풍속성
ET_EARTH = 4, ///< 토속성
ET_LIGHT = 5, ///< 명속성
ET_DARK = 6, ///< 암속성
ET_PHYSICS = 7, ///< 물리
/// 2011.03.07 - prodongi
ET_ALL = 99, /// 모든
};
// 스킬 속성비트셋 정보
enum
{
FLAG_HELPFUL = 1 << 0,
FLAG_HARMFUL = 1 << 1,
FLAG_ACTIVE = 1 << 2,
FLAG_PASSIVE = 1 << 3,
FLAG_PHYSICAL = 1 << 4,
FLAG_MAGICAL = 1 << 5,
};
enum
{
INC_ALL_SKILL1 = 1008,
INC_ALL_SKILL2 = 1009,
INC_ALL_SKILL3 = 1010,
INC_COOLTIME_SPEED = 10000,
INC_CASTING_SPEED = 10001,
INC_DOUBLE_ATTACK = 10002,
RESIST_NEGATIVE = 10003,
INC_SUMMON_FCM = 10004,
};
// value로 부터 데이터 뽑는 함수들 -N4-
void GetBitSetData( int pos, int level, double& rID, double& rValue )
{
rID = fValue[pos];
rValue = GetIncreaseData(pos+1, level);
};
double GetIncreaseData( int pos, int level )
{
return fValue[pos] + fValue[pos+1] * (double)level;
}
double GetValue( int pos, int level=1 )
{
return fValue[pos]*level;
}
enum
{
MAX_VALUE = 20,
};
int id; ///< -- 1
int name_id; ///< -- 2
int tooltip_id; ///< -- 3
char is_harmful; ///< -- 4
int state_time_type; ///< -- 5
int state_group; ///< -- 6
int duplicate_group_1; ///< INT NOT NULL, -- 7
int duplicate_group_2; ///< INT NOT NULL, -- 8
int duplicate_group_3; ///< INT NOT NULL, -- 9
char uf_avatar; ///< -- 10
char uf_summon; ///< -- 11
char uf_monster; ///< -- 12
short reiteration_count; /// 2011.03.30 - prodongi
int base_effect_id; ///< int NOT NULL, -- 13
int fire_interval; ///< int NOT NULL, -- 14
int elemental_type; ///< int NOT NULL, -- 15
float amplify_base; ///< DECIMAL(13,3) NOT NULL, -- 16
float amplify_per_skl; ///< DECIMAL(13,3) NOT NULL, -- 17
int add_damage_base; ///< int NOT NULL, -- 18
int add_damage_per_skl; ///< int NOT NULL, -- 19
int effect_type; ///< -- 20, 추가 효과 유형
double fValue[MAX_VALUE];
};
#ifdef _RDBGENTEST
#pragma pack(pop)
#endif
struct EnhanceInfo
{
int nSID;
enum
{
EF_WEAPON = 0,
EF_ARMOR = 1,
EF_SHIELD = 2,
EF_HELM = 3,
EF_GLOVE = 4,
EF_BOOTS = 5,
EF_BELT = 6,
EF_MANTLE = 7,
EF_ACCESSORY = 8,
EF_SKILL = 9,
};
XFlag< int > Flag;
int nRank;
enum
{
RESULT_ERASE = 1,
RESULT_FAIL = 2,
};
int nFailResult;
int nMaxEnhance;
ItemBase::ItemCode nNeedItemCode;
float fPercentage[20];
};
struct _PROP_CONTACT_SCRIPT_INFO
{
struct _FUNCTION_LIST
{
enum
{
TRIGER_INIT = 0,
TRIGER_CONTACT
};
int trigger_id;
std::string stdFunction;
};
enum
{
NPC = 0,
PROP,
};
int prop_id;
float x,y;
int prop_type;
int model_info;
std::vector< _FUNCTION_LIST > vFunctionList;
};
#pragma pack( 1 )
struct _MARKET_INFO
{
_MARKET_INFO( const char *_szMarketName ) : strMarketName( _szMarketName ) {}
struct _MARKET_TAG
{
_MARKET_TAG( ItemBase::ItemCode _code, int _price ) : code( _code ), price( _price ) {}
ItemBase::ItemCode code;
int price;
};
std::string strMarketName;
std::vector< _MARKET_TAG > vItemList;
};
#pragma pack()