474 lines
13 KiB
C++
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() |