699 lines
18 KiB
C++
699 lines
18 KiB
C++
#pragma once
|
|
|
|
#include <mmo/ArType.h>
|
|
#include "SkillBase.h"
|
|
#include "ContentStruct.h"
|
|
#include "GameDefine.h"
|
|
#include "SGameAniType.h"
|
|
|
|
const static int strSize = 3072;
|
|
|
|
inline char* allocString( const char* p )
|
|
{
|
|
return (char*)memcpy( new char[ strlen(p)+1 ], p, strlen(p)+1 );
|
|
}
|
|
|
|
/// 게임 컨텐츠 DB파일 헤더
|
|
#define STR_DATE_BUFFER 128
|
|
struct GAME_DB
|
|
{
|
|
GAME_DB()
|
|
{
|
|
memset( szDate, 0, sizeof(szDate) );
|
|
nCount = 0;
|
|
}
|
|
|
|
char szDate[STR_DATE_BUFFER]; ///< 생성 날짜
|
|
int nCount; ///< 갯수
|
|
};
|
|
|
|
struct _EXP_TABLE
|
|
{
|
|
__int64 exp;
|
|
__int64 jp[4];
|
|
};
|
|
|
|
struct _SUMMON_EXP_TABLE
|
|
{
|
|
__int64 exp_normal;
|
|
__int64 exp_growth;
|
|
__int64 exp_evolve;
|
|
};
|
|
|
|
struct _STRING_TABLE
|
|
{
|
|
int nID;
|
|
int nGroupID;
|
|
char* szKey;
|
|
unsigned int nKeySize;
|
|
char* szDesc;
|
|
unsigned int nDescSize;
|
|
|
|
_STRING_TABLE() : nID( -1 )
|
|
, nGroupID( -1 )
|
|
, szKey( NULL )
|
|
, nKeySize( 0 )
|
|
, szDesc( NULL )
|
|
, nDescSize( 0 )
|
|
{}
|
|
|
|
~_STRING_TABLE()
|
|
{
|
|
delete [] szKey;
|
|
delete [] szDesc;
|
|
}
|
|
|
|
void SetStringKey( const char* pszKey, unsigned int _keysize )
|
|
{
|
|
if( pszKey != NULL && _keysize > 0 )
|
|
{
|
|
nKeySize = _keysize;
|
|
szKey = new char[_keysize];
|
|
strcpy( szKey, pszKey );
|
|
}
|
|
}
|
|
void SetStringDesc( const char* pszDesc, unsigned int _descsize )
|
|
{
|
|
if( pszDesc != NULL && _descsize > 0 )
|
|
{
|
|
nDescSize = _descsize;
|
|
szDesc = new char[_descsize];
|
|
strcpy( szDesc, pszDesc );
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
struct _STRING_TABLE_INFO
|
|
{
|
|
_STRING_TABLE_INFO()
|
|
{
|
|
// pStrKey = NULL;
|
|
pStrDesc = NULL;
|
|
}
|
|
~_STRING_TABLE_INFO()
|
|
{
|
|
// if(pStrKey ) { delete [] pStrKey; pStrKey = NULL; }
|
|
if(pStrDesc) { delete [] pStrDesc; pStrDesc = NULL; }
|
|
}
|
|
|
|
void operator=( const _STRING_TABLE_INFO & rh )
|
|
{
|
|
if(pStrDesc) { delete [] pStrDesc; pStrDesc = NULL; }
|
|
nID = rh.nID;
|
|
nGroupID = rh.nGroupID;
|
|
pStrDesc = allocString( rh.pStrDesc );
|
|
}
|
|
|
|
void SetInfo( const struct _STRING_TABLE * pStringTable )
|
|
{
|
|
nID = pStringTable->nID;
|
|
nGroupID = pStringTable->nGroupID;
|
|
// pStrKey = allocString( pStringTable->szKey );
|
|
pStrDesc = allocString( pStringTable->szDesc );
|
|
}
|
|
|
|
void SetInfo( const int _nID, const int _nGroupID, const char *_szString )
|
|
{
|
|
nID = _nID;
|
|
nGroupID = _nGroupID;
|
|
pStrDesc = allocString( _szString );
|
|
}
|
|
|
|
int nID;
|
|
int nGroupID;
|
|
// char * pStrKey;
|
|
char * pStrDesc;
|
|
};
|
|
#ifdef _RDBGENTEST
|
|
#pragma pack(push,1)
|
|
#endif
|
|
struct StateInfoEx : public StateInfo
|
|
{
|
|
StateInfoEx()
|
|
{
|
|
nIcon_id = 0;
|
|
memset(icon_file_name, 0, sizeof(icon_file_name));
|
|
fx_id = 0;
|
|
pos_id = 0;
|
|
|
|
cast_fx_id = 0;
|
|
cast_fx_pos_id = 0;
|
|
|
|
cast_skill_id = 0;
|
|
|
|
hit_fx_id = 0;
|
|
hit_fx_pos_id = 0;
|
|
|
|
special_output_timing_id = 0;
|
|
special_output_fx_id = 0;
|
|
special_output_fx_pos_id = 0;
|
|
special_output_fx_delay = 0;
|
|
}
|
|
|
|
// sonador 10.4.1 스킬 툴팁 리뉴얼
|
|
float GetBasicFx_AmpDamage( int stateLevel )
|
|
{
|
|
return amplify_base + stateLevel * amplify_per_skl;
|
|
}
|
|
|
|
int GetBasicFx_AddDamage( int stateLevel )
|
|
{
|
|
return add_damage_base + stateLevel * add_damage_per_skl;
|
|
}
|
|
|
|
int nIcon_id; ///< 지속효과 아이콘 ID
|
|
char icon_file_name[256];
|
|
|
|
int fx_id; ///< 기본 FX
|
|
int pos_id; ///< 기본 FX 위치
|
|
|
|
int cast_fx_id; ///< 지속중 특정 스킬 사용시 동반 출력 FX ID
|
|
int cast_fx_pos_id; ///< 지속중 특정 스킬 사용시 동반 출력 FX 위치
|
|
|
|
int cast_skill_id;
|
|
|
|
int hit_fx_id; ///< 지속중 특정 스킬 히트시 동반 출력 FX ID
|
|
int hit_fx_pos_id; ///< 지속중 특정 스킬 히트시 동반 출력 FX 위치
|
|
|
|
int special_output_timing_id; ///< 지속중 특정상황시에만 동반출력될 FX 시점
|
|
int special_output_fx_id; ///< 지속중 특정상황시에만 동반출력될 FX ID
|
|
int special_output_fx_pos_id; ///< 지속중 특정상황시에만 동반출력될 FX 위치
|
|
int special_output_fx_delay; ///< 지속중 특정상황시에만 동반출력될 FX 딜레이
|
|
|
|
int state_fx_id; ///< INT NOT NULL -- 43
|
|
int state_fx_pos_id; ///< INT NOT NULL -- 44
|
|
};
|
|
#ifdef _RDBGENTEST
|
|
#pragma pack(pop)
|
|
#endif
|
|
|
|
#ifdef _RDBGENTEST
|
|
#pragma pack(push,1)
|
|
#endif
|
|
/// 화일 Save/Load 용
|
|
struct ItemBaseEx : public ItemBase
|
|
{
|
|
ItemBaseEx()
|
|
{
|
|
model_type_dem = 0;
|
|
model_type_asm = 0;
|
|
model_type_gam = 0;
|
|
model_type_def = 0;
|
|
model_type_asf = 0;
|
|
model_type_gaf = 0;
|
|
|
|
deco_model_change = false;
|
|
unknow = 0;
|
|
|
|
model00 = 0;
|
|
model01 = 0;
|
|
model02 = 0;
|
|
model03 = 0;
|
|
model04 = 0;
|
|
model05 = 0;
|
|
model06 = 0;
|
|
model07 = 0;
|
|
model08 = 0;
|
|
model09 = 0;
|
|
model10 = 0;
|
|
model11 = 0;
|
|
model12 = 0;
|
|
model13 = 0;
|
|
model14 = 0;
|
|
model15 = 0;
|
|
model16 = 0;
|
|
model17 = 0;
|
|
texture_filename = 0;
|
|
|
|
drop_model = 0;
|
|
|
|
icon_id = 0;
|
|
icon_file_name = 0;
|
|
|
|
nToolTipID = 690000075; /*존재하지 않는 아이템*/
|
|
}
|
|
|
|
void SetInfo(int nSid, std::vector< ItemEnhanceEffectBase > * pEnhanceBase )
|
|
{
|
|
ItemEnhanceEffectBase enhanceBase;
|
|
for( int i(0); i < 2; i++)
|
|
{
|
|
memset(&enhanceBase, 0, sizeof(enhanceBase));
|
|
|
|
enhanceBase.sid = nSid;
|
|
enhanceBase.sub_id = i + 1;
|
|
enhanceBase.effect_id = effect_id[i];
|
|
|
|
for (int v(0); v < 25; v++)
|
|
{
|
|
if (v >= 0 && v < 4)
|
|
enhanceBase.value[v] = value[i][0];
|
|
else if (v >= 4 && v < 8)
|
|
enhanceBase.value[v] = value[i][1];
|
|
else if (v >= 8 && v < 12)
|
|
enhanceBase.value[v] = value[i][2];
|
|
else if (v >= 12 && v < 16)
|
|
enhanceBase.value[v] = value[i][3];
|
|
else if (v >= 16 && v < 20)
|
|
enhanceBase.value[v] = value[i][3];
|
|
else
|
|
enhanceBase.value[v] = value[i][v - 15];
|
|
}
|
|
|
|
pEnhanceBase->push_back( enhanceBase );
|
|
}
|
|
}
|
|
|
|
//투구 관련
|
|
char model_type_def;
|
|
char model_type_asf;
|
|
char model_type_gaf;
|
|
char unknow;
|
|
char model_type_dem;
|
|
char model_type_asm;
|
|
char model_type_gam;
|
|
|
|
bool deco_model_change;
|
|
char unknow2[8];
|
|
|
|
short model00;
|
|
short model01;
|
|
short model02;
|
|
short model03;
|
|
short model04;
|
|
short model05;
|
|
short model06;
|
|
short model07;
|
|
short model08;
|
|
short model09;
|
|
short model10;
|
|
short model11;
|
|
short model12;
|
|
short model13;
|
|
short model14;
|
|
short model15;
|
|
short model16;
|
|
short model17;
|
|
// 텍스처 컬럼 추가 kappamind, 09.09.11
|
|
short texture_filename;
|
|
|
|
short drop_model;
|
|
short icon_id;
|
|
short icon_file_name;
|
|
int nToolTipID;
|
|
|
|
//gmpbigsun( 20130916 ) : 아이템분류값
|
|
int nCategory_Bitset;
|
|
|
|
short effect_id[2];
|
|
float value[2][10];
|
|
};
|
|
#ifdef _RDBGENTEST
|
|
#pragma pack(pop)
|
|
#endif
|
|
|
|
#ifdef _RDBGENTEST
|
|
#pragma pack( push, 1 )
|
|
#endif
|
|
/// 게임에서 사용
|
|
struct ItemBaseEx_info : public ItemBase
|
|
{
|
|
ItemBaseEx_info()
|
|
: pModel00( "" )
|
|
, pModel01( "" )
|
|
, pModel02( "" )
|
|
, pModel03( "" )
|
|
, pModel04( "" )
|
|
, pModel05( "" )
|
|
, pModel06( "" )
|
|
, pModel07( "" )
|
|
, pModel08( "" )
|
|
, pModel09( "" )
|
|
, pModel10( "" )
|
|
, pModel11( "" )
|
|
, pModel12( "" )
|
|
, pModel13( "" )
|
|
, pModel14( "" )
|
|
, pModel15( "" )
|
|
, pModel16( "" )
|
|
, pModel17( "" )
|
|
, pTexture_filename( "" )
|
|
, pDrop_model( "" )
|
|
, pScript_text( "" )
|
|
, pIcon_name( "" )
|
|
, deco_model_change( false )
|
|
{
|
|
}
|
|
|
|
~ItemBaseEx_info()
|
|
{
|
|
if( pModel00 ) { delete [] pModel00 ; pModel00 = NULL; }
|
|
if( pModel01 ) { delete [] pModel01 ; pModel01 = NULL; }
|
|
if( pModel02 ) { delete [] pModel02 ; pModel02 = NULL; }
|
|
if( pModel03 ) { delete [] pModel03 ; pModel03 = NULL; }
|
|
if( pModel04 ) { delete [] pModel04 ; pModel04 = NULL; }
|
|
if( pModel05 ) { delete [] pModel05 ; pModel05 = NULL; }
|
|
if( pModel06 ) { delete [] pModel06 ; pModel06 = NULL; }
|
|
if( pModel07 ) { delete [] pModel07 ; pModel07 = NULL; }
|
|
if( pModel08 ) { delete [] pModel08 ; pModel08 = NULL; }
|
|
if( pModel09 ) { delete [] pModel09 ; pModel09 = NULL; }
|
|
if( pModel10 ) { delete [] pModel10 ; pModel10 = NULL; }
|
|
if( pModel11 ) { delete [] pModel11 ; pModel11 = NULL; }
|
|
if( pModel12 ) { delete [] pModel12 ; pModel12 = NULL; }
|
|
if( pModel13 ) { delete [] pModel13 ; pModel13 = NULL; }
|
|
if( pModel14 ) { delete [] pModel14 ; pModel14 = NULL; }
|
|
if( pModel15 ) { delete [] pModel15 ; pModel15 = NULL; }
|
|
if( pModel16 ) { delete [] pModel16 ; pModel16 = NULL; }
|
|
if( pModel17 ) { delete [] pModel17 ; pModel17 = NULL; }
|
|
|
|
if( pTexture_filename ) { delete [] pTexture_filename ; pTexture_filename = NULL; }
|
|
|
|
if( pDrop_model ) { delete [] pDrop_model ; pDrop_model = NULL; }
|
|
if( pScript_text) { delete [] pScript_text; pScript_text = NULL; }
|
|
if( pIcon_name ) { delete [] pIcon_name ; pIcon_name = NULL; }
|
|
}
|
|
|
|
void SetInfo( ItemBaseEx * pItemBaseEx )
|
|
{
|
|
nCode = pItemBaseEx->nCode ; ///< 아이템 코드
|
|
nNameId = pItemBaseEx->nNameId ; ///< 이름
|
|
nType = pItemBaseEx->nType ; ///< 아이템 타입
|
|
nGroup = pItemBaseEx->nGroup ; ///< 그룹 ID
|
|
nClass = pItemBaseEx->nClass ; ///< 계열
|
|
set_id = pItemBaseEx->set_id ; ///< 소속 세트 아이디 // #2.1.2.6.1
|
|
set_part_flag = pItemBaseEx->set_part_flag; //
|
|
nGrade = pItemBaseEx->nGrade ; ///< 등급
|
|
nRank = pItemBaseEx->nRank ; ///< 랭크
|
|
nMinLevel = pItemBaseEx->nMinLevel ;
|
|
nMaxLevel = pItemBaseEx->nMaxLevel ;
|
|
nRange = pItemBaseEx->nRange ; ///< 사정거리
|
|
fWeight = pItemBaseEx->fWeight ; ///< 무게
|
|
nPrice = pItemBaseEx->nPrice ; ///< 기준가격
|
|
nHuntaholicPoint = pItemBaseEx->nHuntaholicPoint;///< #2.1.2.11.1 -- 상점 판매가 - 헌터홀릭 포인트
|
|
nEthereal_durability = pItemBaseEx->nEthereal_durability; // 에테리얼 내구도
|
|
nEndurance = pItemBaseEx->nEndurance ; ///< 내구성
|
|
WearType = pItemBaseEx->WearType ;
|
|
nLimit = pItemBaseEx->nLimit ; ///< 사용제한
|
|
Flag = pItemBaseEx->Flag ;
|
|
socket = pItemBaseEx->socket ;
|
|
status_flag = pItemBaseEx->status_flag ; ///< sonador 3.9.5 상점 판매 크리처 봉인 카드 켑션 수정
|
|
job_depth = pItemBaseEx->job_depth ; /// 2011.03.30 - prodongi
|
|
nMaterial = pItemBaseEx->nMaterial ;
|
|
nSummonId = pItemBaseEx->nSummonId ;
|
|
nThrowRange = pItemBaseEx->nThrowRange ;
|
|
level = pItemBaseEx->level ;
|
|
enhance = pItemBaseEx->enhance ; ///< sfreer 상점 및 카트에 담긴 아이템 비정상적인 수치출력관련 버그 수정 2009.03.05
|
|
nEffectId = pItemBaseEx->nEffectId ; ///< 아이템 특수 성능, kappamind
|
|
|
|
|
|
for( int i(0); MAX_OPTION_NUMBER>i; i++ )
|
|
{
|
|
nBaseType[i] = pItemBaseEx->nBaseType[i];
|
|
dBaseVar1[i] = pItemBaseEx->dBaseVar1[i];
|
|
dBaseVar2[i] = pItemBaseEx->dBaseVar2[i];
|
|
|
|
nOptType[i] = pItemBaseEx->nOptType[i] ;
|
|
dOptVar1[i] = pItemBaseEx->dOptVar1[i] ;
|
|
dOptVar2[i] = pItemBaseEx->dOptVar2[i] ;
|
|
}
|
|
|
|
nEnhanceID = pItemBaseEx->nEnhanceID;
|
|
|
|
nSkillID = pItemBaseEx->nSkillID;
|
|
|
|
nStateCode = pItemBaseEx->nStateCode ;
|
|
nStateLevel = pItemBaseEx->nStateLevel;
|
|
nStateTime = pItemBaseEx->nStateTime ;
|
|
nCoolTime = pItemBaseEx->nCoolTime ;
|
|
|
|
nCoolTimeGroup = pItemBaseEx->nCoolTimeGroup;
|
|
|
|
available_time = pItemBaseEx->available_time;
|
|
decrease_type = pItemBaseEx->decrease_type;
|
|
|
|
icon_id = pItemBaseEx->icon_id;
|
|
nToolTipID = pItemBaseEx->nToolTipID;
|
|
|
|
model_type_dem = pItemBaseEx->model_type_dem;
|
|
model_type_def = pItemBaseEx->model_type_def;
|
|
model_type_asm = pItemBaseEx->model_type_asm;
|
|
model_type_asf = pItemBaseEx->model_type_asf;
|
|
model_type_gam = pItemBaseEx->model_type_gam;
|
|
model_type_gaf = pItemBaseEx->model_type_gaf;
|
|
|
|
deco_model_change = pItemBaseEx->deco_model_change;
|
|
|
|
nCategory_Bitset = pItemBaseEx->nCategory_Bitset;
|
|
|
|
}
|
|
|
|
enum MODEL_FLAG
|
|
{
|
|
NONE_FLAG = 0,
|
|
HAIR_FLAG = 1 << 0,
|
|
FACE_FLAG = 1 << 1, // sonador #2.1.22
|
|
EARRING_FLAG = 1 << 2, // 2010.08.16 - prodongi
|
|
};
|
|
|
|
//투구 관련
|
|
int model_type_dem;
|
|
int model_type_def;
|
|
int model_type_asm;
|
|
int model_type_asf;
|
|
int model_type_gam;
|
|
int model_type_gaf;
|
|
|
|
bool deco_model_change;
|
|
|
|
char * pModel00;
|
|
char * pModel01;
|
|
char * pModel02;
|
|
char * pModel03;
|
|
char * pModel04;
|
|
char * pModel05;
|
|
char * pModel06;
|
|
char * pModel07;
|
|
char * pModel08;
|
|
char * pModel09;
|
|
char * pModel10;
|
|
char * pModel11;
|
|
char * pModel12;
|
|
char * pModel13;
|
|
char * pModel14;
|
|
char * pModel15;
|
|
char * pModel16;
|
|
char * pModel17;
|
|
|
|
// 텍스처 컬럼 추가 kappamind, 09.09.11
|
|
char * pTexture_filename;
|
|
|
|
char * pDrop_model;
|
|
int icon_id;
|
|
char * pIcon_name;
|
|
char * pScript_text;
|
|
int nToolTipID;
|
|
|
|
int nCategory_Bitset;
|
|
};
|
|
#ifdef _RDBGENTEST
|
|
#pragma pack(pop)
|
|
#endif
|
|
|
|
#ifdef _RDBGENTEST
|
|
#pragma pack( push, 1 )
|
|
#endif
|
|
struct JobInfoEx : public JobInfo
|
|
{
|
|
JobInfoEx()
|
|
{
|
|
job_icon = 0;
|
|
memset( icon_file_name, 0, sizeof(icon_file_name) );
|
|
};
|
|
|
|
int job_icon;
|
|
char icon_file_name[256];
|
|
};
|
|
#ifdef _RDBGENTEST
|
|
#pragma pack(pop)
|
|
#endif
|
|
|
|
#pragma pack( push, 1 )
|
|
|
|
struct SkillBaseEx : public SkillBase
|
|
{
|
|
SkillBaseEx()
|
|
{
|
|
nTooltip_id = 0;
|
|
|
|
nIcon_id = 0;
|
|
memset( icon_file_name, 0, sizeof(icon_file_name));
|
|
|
|
is_projectile = 0;
|
|
projectile_speed = 0.f;
|
|
projectile_acceleration = 0.f;
|
|
}
|
|
|
|
int GetToolTipID() const { return nTooltip_id; }
|
|
int GetIconID() const { return nIcon_id; }
|
|
const char* GetIconName() const { return icon_file_name; }
|
|
|
|
int nTooltip_id; ///< 툴팁 ID
|
|
|
|
int nIcon_id; ///< 스킬 아이콘 ID
|
|
char icon_file_name[256];
|
|
|
|
char is_projectile;
|
|
float projectile_speed;
|
|
float projectile_acceleration;
|
|
|
|
int GetRealSize()
|
|
{
|
|
void * vp = &nTooltip_id;
|
|
return ( sizeof( SkillBaseEx ) - ( (int)vp - (int)this ) );
|
|
}
|
|
|
|
int GetOffset()
|
|
{
|
|
return ( (long long)(SkillBaseEx *)1 - (long long)(SkillBase *)(SkillBaseEx *)1 );
|
|
}
|
|
};
|
|
|
|
#pragma pack(pop)
|
|
|
|
|
|
struct SkillBaseEx_info : public SkillBase
|
|
{
|
|
SkillBaseEx_info( const SkillBaseEx & base ) : SkillBase( base )
|
|
{
|
|
nTooltip_id = base.nTooltip_id;
|
|
|
|
nIcon_id = base.nIcon_id;
|
|
memset( icon_file_name, 0, sizeof(icon_file_name));
|
|
|
|
is_projectile = base.is_projectile;
|
|
projectile_speed = base.projectile_speed;
|
|
projectile_acceleration = base.projectile_acceleration;
|
|
|
|
}
|
|
|
|
int GetToolTipID() const { return nTooltip_id; }
|
|
int GetIconID() const { return nIcon_id; }
|
|
const char* GetIconName() const { return icon_file_name; }
|
|
|
|
int nTooltip_id; ///< 툴팁 ID
|
|
|
|
int nIcon_id; ///< 스킬 아이콘 ID
|
|
char icon_file_name[256];
|
|
|
|
char is_projectile;
|
|
float projectile_speed;
|
|
float projectile_acceleration;
|
|
|
|
};
|
|
#ifdef _RDBGENTEST
|
|
#pragma pack(push,1)
|
|
#endif
|
|
struct _SKILL_FX
|
|
{
|
|
enum
|
|
{
|
|
SKILLTYPE_NOACT = 0, ///< 0 : 노액션스킬 (캐스팅,시전모션 없고 시전 FX처리만 존재함)
|
|
SKILLTYPE_MAGIC = 1, ///< 1 : 마법류 -> 자동 캐스팅 모션 & 이펙트 처리 (하드코딩)
|
|
SKILLTYPE_INSTANT = 2, ///< 2 : 즉시시전스킬 (바로시전)
|
|
SKILLTYPE_INSTANT_CONTINUE = 3, ///< 3 : 즉시시전 연속모션 스킬 (연출데이터에서 모션처리 정보가 등록됨)
|
|
SKILLTYPE_CHARGE = 4, ///< 4 : 차지형스킬 (캐스팅시작->캐스팅진행->시전) 캐스팅시작모션은 생략가능
|
|
SKILLTYPE_CHARGE_CONTINUE = 5, ///< 5 : 차지형 연속모션 스킬 (연출데이터에서 모션처리 정보가 등록됨)
|
|
};
|
|
|
|
_SKILL_FX()
|
|
{
|
|
nID = 0;
|
|
szElemental = NULL;
|
|
szType = NULL;
|
|
szDeal_Damage = NULL;
|
|
szHas_Target = NULL;
|
|
szCorpse_Target = NULL;
|
|
szIs_Toggle = NULL;
|
|
casting_time = 0.0f;
|
|
szIs_Creature_Skill = NULL;
|
|
|
|
nStage_Type_Id = 0;
|
|
nCasting_Type_Id = 0;
|
|
nCasting_Start_Motion_Id = 0;
|
|
nCasting_Middle_Motion_Id = 0;
|
|
nCasting_Fx_Set_Id = 0;
|
|
nFire_Motion_Id = 0;
|
|
nFire_Fx_Set_Id = 0;
|
|
|
|
for( int i(0); 20>i; i++ )
|
|
fStage_Data[i] = 0;
|
|
|
|
nSub_Stage_On_Hit_Id = 0;
|
|
nSub_Stage_On_Hit_Continuous = 0;
|
|
nSub_Hit_Fx_OutPut_Delay = 0;
|
|
|
|
nHit_Fx_Set_Id = 0;
|
|
nHit_Fx_Set_Position_Id = 0;
|
|
|
|
nFire_Fx_OutPut_Delay = 0;
|
|
nSub_Fire_Fx_Set_Id = 0;
|
|
nSub_Fire_Fx_Position = 0;
|
|
}
|
|
|
|
int nID; ///< ID
|
|
char szElemental; ///< 엔레멘탈(속성)( 무속성 0, 화속성 1, 수속성 2, 풍속성 3, 토속성 4, 명속성 5, 암속성 6 )
|
|
char szType; ///< 타입( 0:전투기술, 1:마법 )
|
|
char szDeal_Damage; ///< 피해여부( 0:대상에게 이로움, 1:대상에게 해로움 )
|
|
char szHas_Target; ///< 셀프/타겟( 0:셀프, 1:타겟 )
|
|
char szCorpse_Target; ///< 시체대상( 0:대상이 시체가 아닐때만 사용가능, 1:대상이 시체일때만 사용가능 )
|
|
char szIs_Toggle; ///< 토글형(0:일반, 1:토글)
|
|
float casting_time; ///< DECIMAL( 10, 3 ) NOT NULL , -- 08
|
|
char szIs_Creature_Skill; ///< 크리처 스킬(0:아바타, 1:크리처, 2:몬스터)
|
|
|
|
int nStage_Type_Id; ///< 연출 유형
|
|
|
|
/** 캐스팅 타입
|
|
0 : 노액션스킬 (캐스팅,시전모션 없고 시전 FX처리만 존재함)
|
|
1 : 마법류 -> 자동 캐스팅 모션 & 이펙트 처리 (하드코딩)
|
|
2 : 즉시시전스킬 (바로시전)
|
|
3 : 즉시시전 연속모션 스킬 (연출데이터에서 모션처리 정보가 등록됨)
|
|
4 : 차지형스킬 (캐스팅시작->캐스팅진행->시전) 캐스팅시작모션은 생략가능
|
|
5 : 차지형 연속모션 스킬 (연출데이터에서 모션처리 정보가 등록됨)
|
|
*/
|
|
int nCasting_Type_Id;
|
|
int nCasting_Start_Motion_Id; ///< 캐스팅 시작 모션 셋트
|
|
int nCasting_Middle_Motion_Id; ///< 캐스팅 진행 모션 셋트
|
|
int nCasting_Fx_Set_Id; ///< 캐스팅 FX 셋트
|
|
int nFire_Motion_Id; ///< 시전 모션 셋트
|
|
int nFire_Fx_Set_Id; ///< 시전 FX 셋트
|
|
|
|
float fStage_Data[20]; ///< 연출 데이타 01
|
|
|
|
int nSub_Stage_On_Hit_Id; ///< 히트시 부가연출
|
|
int nSub_Stage_On_Hit_Continuous; ///< 연타 히트
|
|
int nSub_Hit_Fx_OutPut_Delay; ///< 히트시 부가 발동FX 출력 딜레이
|
|
|
|
int nHit_Fx_Set_Id; ///< 히트FX 셋트
|
|
int nHit_Fx_Set_Position_Id; ///< 히트FX 위치
|
|
int nFire_Fx_OutPut_Delay; ///< 히트시 발동 FX 출력 딜레이
|
|
|
|
int nSub_Fire_Fx_Set_Id; ///< 부가발동FX 셋트
|
|
int nSub_Fire_Fx_Position; ///< 부가발동FX 위치
|
|
};
|
|
#ifdef _RDBGENTEST
|
|
#pragma pack(pop)
|
|
#endif
|
|
struct _FIELD_TYPE_MATERIAL
|
|
{
|
|
_FIELD_TYPE_MATERIAL()
|
|
{
|
|
memset( szTexture_File_Name, 0, sizeof( szTexture_File_Name ) );
|
|
nMaterial = 0;
|
|
}
|
|
|
|
char szTexture_File_Name[256];
|
|
int nMaterial;
|
|
};
|
|
|