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

701 lines
20 KiB
C

#pragma once
//#include <vector>
#include "SkillBaseFile.h"
#include "GameDefine.h"
#include "SGameAniType.h"
#include <dump/XException.h>
/// 2010.11.30 - prodongi
struct _MOTION_SET
{
void clear()
{
memset(this, 0, sizeof(*this));
}
_MOTION_SET()
{
clear();
}
int GetAniId( int nRace, int nSex, int nAniClass )
{
if( nRace == GCLAN_GAIA ) {
if( nSex == SEX_FEMALE ) {
switch( nAniClass ) {
case ANICLS_UNA : return szGaia_f_unarmored;
case ANICLS_SWO : return szGaia_f_one_hand_sword;
case ANICLS_SWA : return szGaia_f_two_hand_sword;
case ANICLS_SPA : return szGaia_f_two_hand_spear;
case ANICLS_BWA : return szGaia_f_bow;
case ANICLS_DGO : return szGaia_f_one_hand_dagger;
case ANICLS_SWT : return szGaia_f_double_sword;
case ANICLS_DGT : return szGaia_f_double_dagger;
case ANICLS_SFO : return szGaia_f_one_hand_staff;
case ANICLS_SFA : return szGaia_f_two_hand_staff;
case ANICLS_AXO : return szGaia_f_one_hand_axe;
case ANICLS_AXA : return szGaia_f_two_hand_axe;
case ANICLS_AXT : return szGaia_f_double_axe;
case ANICLS_MAO : return szGaia_f_one_hand_mace;
case ANICLS_MAA : return szGaia_f_two_hand_mace;
case ANICLS_CBO : return szGaia_f_cross_bow;
}
}
else if( nSex == SEX_MALE ) {
switch( nAniClass ) {
case ANICLS_UNA : return szGaia_m_unarmored;
case ANICLS_SWO : return szGaia_m_one_hand_sword;
case ANICLS_SWA : return szGaia_m_two_hand_sword;
case ANICLS_SPA : return szGaia_m_two_hand_spear;
case ANICLS_BWA : return szGaia_m_bow;
case ANICLS_DGO : return szGaia_m_one_hand_dagger;
case ANICLS_SWT : return szGaia_m_double_sword;
case ANICLS_DGT : return szGaia_m_double_dagger;
case ANICLS_SFO : return szGaia_m_one_hand_staff;
case ANICLS_SFA : return szGaia_m_two_hand_staff;
case ANICLS_AXO : return szGaia_m_one_hand_axe;
case ANICLS_AXA : return szGaia_m_two_hand_axe;
case ANICLS_AXT : return szGaia_m_double_axe;
case ANICLS_MAO : return szGaia_m_one_hand_mace;
case ANICLS_MAA : return szGaia_m_two_hand_mace;
case ANICLS_CBO : return szGaia_m_cross_bow;
}
}
}
else if( nRace == GCLAN_DEVA ) {
if( nSex == SEX_FEMALE ) {
switch( nAniClass ) {
case ANICLS_UNA : return szDeva_f_unarmored;
case ANICLS_SWO : return szDeva_f_one_hand_sword;
case ANICLS_SWA : return szDeva_f_two_hand_sword;
case ANICLS_SPA : return szDeva_f_two_hand_spear;
case ANICLS_BWA : return szDeva_f_bow;
case ANICLS_DGO : return szDeva_f_one_hand_dagger;
case ANICLS_SWT : return szDeva_f_double_sword;
case ANICLS_DGT : return szDeva_f_double_dagger;
case ANICLS_SFO : return szDeva_f_one_hand_staff;
case ANICLS_SFA : return szDeva_f_two_hand_staff;
case ANICLS_AXO : return szDeva_f_one_hand_axe;
case ANICLS_AXA : return szDeva_f_two_hand_axe;
case ANICLS_AXT : return szDeva_f_double_axe;
case ANICLS_MAO : return szDeva_f_one_hand_mace;
case ANICLS_MAA : return szDeva_f_two_hand_mace;
case ANICLS_CBO : return szDeva_f_cross_bow;
}
}
else if( nSex == SEX_MALE ) {
switch( nAniClass ) {
case ANICLS_UNA : return szDeva_m_unarmored;
case ANICLS_SWO : return szDeva_m_one_hand_sword;
case ANICLS_SWA : return szDeva_m_two_hand_sword;
case ANICLS_SPA : return szDeva_m_two_hand_spear;
case ANICLS_BWA : return szDeva_m_bow;
case ANICLS_DGO : return szDeva_m_one_hand_dagger;
case ANICLS_SWT : return szDeva_m_double_sword;
case ANICLS_DGT : return szDeva_m_double_dagger;
case ANICLS_SFO : return szDeva_m_one_hand_staff;
case ANICLS_SFA : return szDeva_m_two_hand_staff;
case ANICLS_AXO : return szDeva_m_one_hand_axe;
case ANICLS_AXA : return szDeva_m_two_hand_axe;
case ANICLS_AXT : return szDeva_m_double_axe;
case ANICLS_MAO : return szDeva_m_one_hand_mace;
case ANICLS_MAA : return szDeva_m_two_hand_mace;
case ANICLS_CBO : return szDeva_m_cross_bow;
}
}
}
else if( nRace == GCLAN_ASURA ) {
if( nSex == SEX_FEMALE ) {
switch( nAniClass ) {
case ANICLS_UNA : return szAsura_f_unarmored;
case ANICLS_SWO : return szAsura_f_one_hand_sword;
case ANICLS_SWA : return szAsura_f_two_hand_sword;
case ANICLS_SPA : return szAsura_f_two_hand_spear;
case ANICLS_BWA : return szAsura_f_bow;
case ANICLS_DGO : return szAsura_f_one_hand_dagger;
case ANICLS_SWT : return szAsura_f_double_sword;
case ANICLS_DGT : return szAsura_f_double_dagger;
case ANICLS_SFO : return szAsura_f_one_hand_staff;
case ANICLS_SFA : return szAsura_f_two_hand_staff;
case ANICLS_AXO : return szAsura_f_one_hand_axe;
case ANICLS_AXA : return szAsura_f_two_hand_axe;
case ANICLS_AXT : return szAsura_f_double_axe;
case ANICLS_MAO : return szAsura_f_one_hand_mace;
case ANICLS_MAA : return szAsura_f_two_hand_mace;
case ANICLS_CBO : return szAsura_f_cross_bow;
<<<<<<< HEAD
case ANICLS_CBT : return szAsura_f_double_crossbow;
=======
case ANICLS_CBT : return szAsura_f_double_crossbow; // From ZONE source; dual crossbows
>>>>>>> a34328224e914a577b99c79ec6e8ffbcea554a05
}
}
else if( nSex == SEX_MALE ) {
switch( nAniClass ) {
case ANICLS_UNA : return szAsura_m_unarmored;
case ANICLS_SWO : return szAsura_m_one_hand_sword;
case ANICLS_SWA : return szAsura_m_two_hand_sword;
case ANICLS_SPA : return szAsura_m_two_hand_spear;
case ANICLS_BWA : return szAsura_m_bow;
case ANICLS_DGO : return szAsura_m_one_hand_dagger;
case ANICLS_SWT : return szAsura_m_double_sword;
case ANICLS_DGT : return szAsura_m_double_dagger;
case ANICLS_SFO : return szAsura_m_one_hand_staff;
case ANICLS_SFA : return szAsura_m_two_hand_staff;
case ANICLS_AXO : return szAsura_m_one_hand_axe;
case ANICLS_AXA : return szAsura_m_two_hand_axe;
case ANICLS_AXT : return szAsura_m_double_axe;
case ANICLS_MAO : return szAsura_m_one_hand_mace;
case ANICLS_MAA : return szAsura_m_two_hand_mace;
case ANICLS_CBO : return szAsura_m_cross_bow;
<<<<<<< HEAD
case ANICLS_CBT : return szAsura_m_double_crossbow;
=======
case ANICLS_CBT : return szAsura_m_double_crossbow; // From ZONE source; dual crossbows
>>>>>>> a34328224e914a577b99c79ec6e8ffbcea554a05
}
}
}
return 0;
}
int nID;
char szStringID[64];
int szDeva_m_unarmored;
int szDeva_m_one_hand_sword;
int szDeva_m_two_hand_sword;
int szDeva_m_double_sword;
int szDeva_m_one_hand_dagger;
int szDeva_m_double_dagger;
int szDeva_m_two_hand_spear;
int szDeva_m_one_hand_axe; ///< VARCHAR(64) , -- 10
int szDeva_m_two_hand_axe;
int szDeva_m_double_axe; ///< VARCHAR(64) , -- 12
int szDeva_m_one_hand_staff;
int szDeva_m_two_hand_staff;
int szDeva_m_one_hand_mace;
int szDeva_m_two_hand_mace;
int szDeva_m_bow;
int szDeva_m_cross_bow;
int szDeva_f_unarmored;
int szDeva_f_one_hand_sword;
int szDeva_f_two_hand_sword;
int szDeva_f_double_sword;
int szDeva_f_one_hand_dagger;
int szDeva_f_double_dagger;
int szDeva_f_two_hand_spear;
int szDeva_f_one_hand_axe; ///< VARCHAR(64) , -- 26
int szDeva_f_two_hand_axe;
int szDeva_f_double_axe; ///< VARCHAR(64) , -- 28
int szDeva_f_one_hand_staff;
int szDeva_f_two_hand_staff;
int szDeva_f_one_hand_mace;
int szDeva_f_two_hand_mace;
int szDeva_f_bow;
int szDeva_f_cross_bow;
int szAsura_m_unarmored;
int szAsura_m_one_hand_sword;
int szAsura_m_two_hand_sword;
int szAsura_m_double_sword;
int szAsura_m_one_hand_dagger;
int szAsura_m_double_dagger;
int szAsura_m_two_hand_spear;
int szAsura_m_one_hand_axe; ///< VARCHAR(64) , -- 42
int szAsura_m_two_hand_axe;
int szAsura_m_double_axe; ///< VARCHAR(64) , -- 44
int szAsura_m_one_hand_staff;
int szAsura_m_two_hand_staff;
int szAsura_m_one_hand_mace;
int szAsura_m_two_hand_mace;
int szAsura_m_bow;
int szAsura_m_cross_bow;
int szAsura_m_double_crossbow;
int szAsura_f_unarmored;
int szAsura_f_one_hand_sword;
int szAsura_f_two_hand_sword;
int szAsura_f_double_sword;
int szAsura_f_one_hand_dagger;
int szAsura_f_double_dagger;
int szAsura_f_two_hand_spear;
int szAsura_f_one_hand_axe; ///< VARCHAR(64) , -- 58
int szAsura_f_two_hand_axe;
int szAsura_f_double_axe; ///< VARCHAR(64) , -- 60
int szAsura_f_one_hand_staff;
int szAsura_f_two_hand_staff;
int szAsura_f_one_hand_mace;
int szAsura_f_two_hand_mace;
int szAsura_f_bow;
int szAsura_f_cross_bow;
int szAsura_f_double_crossbow;
int szGaia_m_unarmored;
int szGaia_m_one_hand_sword;
int szGaia_m_two_hand_sword;
int szGaia_m_double_sword;
int szGaia_m_one_hand_dagger;
int szGaia_m_double_dagger;
int szGaia_m_two_hand_spear;
int szGaia_m_one_hand_axe; ///< VARCHAR(64) , -- 73
int szGaia_m_two_hand_axe;
int szGaia_m_double_axe; ///< VARCHAR(64) , -- 75
int szGaia_m_one_hand_staff;
int szGaia_m_two_hand_staff;
int szGaia_m_one_hand_mace;
int szGaia_m_two_hand_mace;
int szGaia_m_bow;
int szGaia_m_cross_bow;
int szGaia_f_unarmored;
int szGaia_f_one_hand_sword;
int szGaia_f_two_hand_sword;
int szGaia_f_double_sword;
int szGaia_f_one_hand_dagger;
int szGaia_f_double_dagger;
int szGaia_f_two_hand_spear;
int szGaia_f_one_hand_axe; ///< VARCHAR(64) , -- 89
int szGaia_f_two_hand_axe;
int szGaia_f_double_axe; ///< VARCHAR(64) , -- 91
int szGaia_f_one_hand_staff;
int szGaia_f_two_hand_staff;
int szGaia_f_one_hand_mace;
int szGaia_f_two_hand_mace;
int szGaia_f_bow;
int szGaia_f_cross_bow;
// From ZONE source; dual crossbows
int szAsura_m_double_crossbow;
int szAsura_f_double_crossbow;
};
struct _MOTION_SET_MONSTER
{
void clear()
{
memset(this, 0, sizeof (*this));
}
_MOTION_SET_MONSTER()
{
clear();
}
// sonador #2.1.15 변신시 모션 연결 적용
int GetAniId( int nAniIndex )
{
// 2.1.15 변신시 모션 연결 적용
switch( nAniIndex )
{
case ANI_DEFAULT01 : return szDef;
case ANI_DEFAULT02 : return szBattle;
case ANI_IDLE : return szIdle;
case ANI_WALK : return szWalk;
case ANI_RUN : return szRun;
case ANI_DAMAGE01 : return szBe_attack;
case ANI_DAMAGE02 : return szBe_attack2;
case ANI_DEAD01 : return szDead;
case ANI_DEAD02 : return szflying_dead;
case ANI_SITDOWN : return szDead;
case ANI_SIT : return szDead;
case ANI_SITUP : return szDef;
case ANI_PICKUP01 : return szTake;
case ANI_ATTACK01 : return szAttack_1;
case ANI_ATTACK02 : return szAttack_2;
case ANI_ATTACK03 : return szAttack_3;
case ANI_CRITICAL_ATTACK01: return szAttack_1;
case ANI_CRITICAL_ATTACK02: return szAttack_2;
case ANI_CRITICAL_ATTACK03: return szAttack_3;
case ANI_DOUBLE_ATTACK01: return szAttack_1;
case ANI_DOUBLE_ATTACK02: return szAttack_2;
case ANI_DOUBLE_ATTACK03: return szAttack_3;
case ANI_BOW_ATTACK01_A : return szDraw_bow;
case ANI_BOW_ATTACK01_B : return szTarget_bow;
case ANI_BOW_ATTACK01_C : return szFire_bow;
case ANI_CAST00_A:
case ANI_CAST01_A:
case ANI_CAST02_A:
case ANI_CAST03_A:
case ANI_CAST04_A:
case ANI_CAST05_A:
case ANI_CAST06_A:
{
return szCasting_1;
}
case ANI_CAST00_B:
case ANI_CAST01_B:
case ANI_CAST02_B:
case ANI_CAST03_B:
case ANI_CAST04_B:
case ANI_CAST05_B:
case ANI_CAST06_B:
{
return szCasting_2;
}
case ANI_FIRE_MAGIC01:
case ANI_FIRE_MAGIC02:
case ANI_FIRE_MAGIC03:
case ANI_FIRE_MAGIC04:
case ANI_FIRE_MAGIC05:
{
return szCasting_3;
}
case ANI_SKILL2501 : return szCasting_3;
case ANI_SKILL2502 : return szCasting_2;
case ANI_SKILL3602 : return szCasting_3;
case ANI_SKILL0000 : return szCasting_3;
case ANI_SKILL2001_1 : return szMelee_1;
case ANI_SKILL2001_2 : return szMelee_2;
case ANI_SKILL2001_3 : return szMelee_3;
case ANI_SKILL2002_1 : return szMelee_1;
case ANI_SKILL2002_2 : return szMelee_2;
case ANI_SKILL2002_3 : return szMelee_3;
case ANI_SKILL2012 : return szMelee_3;
case ANI_SKILL2006 : return szMelee_3;
case ANI_SKILL2007_1 : return szMelee_1;
case ANI_SKILL2007_2 : return szMelee_2;
case ANI_SKILL2007_3 : return szMelee_3;
case ANI_SKILL2018_0 : return szMelee_2;
case ANI_SKILL2018_1 : return szMelee_3;
case ANI_SKILL2018_2 : return szMelee_3;
case ANI_SKILL2018_3 : return szMelee_3;
case ANI_SKILL2022 :
case ANI_SKILL2031 : return szMelee_3;
case ANI_SKILL2033_A : return szMelee_1;
case ANI_SKILL2033_B : return szMelee_2;
case ANI_SKILL2033_C : return szMelee_3;
case ANI_SKILL2037_A : return szMelee_1;
case ANI_SKILL2037_B : return szMelee_2;
case ANI_SKILL2037_C : return szMelee_3;
case ANI_SKILL3006 :
case ANI_SKILL3001 : return szMelee_3;
case ANI_SKILL3004_A : return szMelee_1;
case ANI_SKILL3004_B : return szMelee_2;
case ANI_SKILL3004_C : return szMelee_3;
case ANI_SKILL3005_A : return szMelee_1;
case ANI_SKILL3005_B : return szMelee_2;
case ANI_SKILL3005_C : return szMelee_3;
case ANI_SKILL3009_A : return szMelee_1;
case ANI_SKILL3009_B : return szMelee_2;
case ANI_SKILL3009_C : return szMelee_3;
case ANI_SKILL3002 :
case ANI_SKILL3003 :
case ANI_SKILL3007 :
case ANI_SKILL3008 : return szMelee_3;
case ANI_M_DEAD :
case ANI_M_FALL : return szDead;
case ANI_M_WALK :
case ANI_M_WALK_QILIN :
case ANI_M_WALK_WHITE :
case ANI_M_WALK_UNICORN :
case ANI_M_RUN_LOW :
case ANI_M_RUN_HIGH :
case ANI_M_RUN_QILIN :
case ANI_M_RUN_UNICORN :
case ANI_M_RUN_WHITE :
/// 2011.02.08 - prodongi
case ANI_M_DEFAULT01_BEAKHO :
case ANI_M_WALK_BEAKHO :
case ANI_M_RUN_BEAKHO :
case ANI_M_DEFAULT01_LOW :
case ANI_M_DEFAULT01_HIGH :
case ANI_M_DEFAULT01_QILIN :
case ANI_M_DEFAULT01_UNICORN :
case ANI_M_DEFAULT01_WHITE : return szDef;
case ANI_M_DAMAGE01 : return szBe_attack;
case ANI_M_DAMAGE02 : return szBe_attack2;
case ANI_M_MOUNT_LOW :
case ANI_M_MOUNT_HIGH :
case ANI_M_MOUNT01_UNICORN:
case ANI_M_MOUNT01_WHITE: return szMount;
case ANI_M_UNMOUNT_LOW :
case ANI_M_UNMOUNT_HIGH :
case ANI_M_UNMOUNT01_UNICORN:
case ANI_M_UNMOUNT01_WHITE: return szUnmount;
case ANI_ANGRY :
case ANI_APOLOGIZE :
case ANI_BORING :
case ANI_BOW :
case ANI_CHEER :
case ANI_CLAP :
case ANI_DANCE :
case ANI_HAPPY :
case ANI_HI :
case ANI_NO :
case ANI_POUT :
case ANI_PROVOKE :
case ANI_SORROW :
case ANI_PRAY :
case ANI_YES : return szIdle;
case ANI_HANDLE01 :
case ANI_HANDLE02 :
case ANI_HANDLE03 :
case ANI_MINE01 :
case ANI_MINE02 :
case ANI_MINE03 :
case ANI_COLLECT01 :
case ANI_COLLECT02 :
case ANI_COLLECT03 : return szAttack_1;
}
_oprint( "NotFoundAniName %d\n", nAniIndex );
assert( false && "NotFoundAniName" );
return 0;
}
#define MAX_LEN 256
int character_id;
int szDef;
int szBattle;
int szIdle;
int szWalk;
int szRun;
int szBe_attack;
int szBe_attack2;
int szDead;
int szflying_dead;
int szTake;
int szAttack_1;
int szAttack_2;
int szAttack_3;
int szDraw_bow;
int szTarget_bow;
int szFire_bow;
int szCasting_1;
int szCasting_2;
int szCasting_3;
int szMelee_1;
int szMelee_2;
int szMelee_3;
int szMount;
int szUnmount;
};
#ifdef _RDBGENTEST
#pragma pack(push,1)
#endif
struct _CHARACTER_MOTION
{
_CHARACTER_MOTION()
{
nMotion_ID = 0;
nRace_ID = 0;
nSex = 0;
memset( szFile_Name, 0, sizeof( szFile_Name ) );
nFrame_Length = 0;
nPlay_Speed = 0;
graphic_effect_file_ID = 0;
nGraphic_effect_speed_type = 0;
nGraphic_effect_position = 0;
sound_file_ID = 0;
nSound_volumn = 0;
nSound_play_probability = 0;
nSound_timing = 0;
sound_reverb_apply = 0;
sound_filter_apply = 0;
sound_stereo_apply = 0;
fx_id = 0;
fx_timing = 0;
fx_position = 0;
fx_play_speed = 0;
nEvent01_id = 0;
nEvent01_timing = 0;
nEvent02_id = 0;
nEvent02_timing = 0;
nEvent03_id = 0;
nEvent03_timing = 0;
nEvent04_id = 0;
nEvent04_timing = 0;
nEvent05_id = 0;
nEvent05_timing = 0;
}
int nMotion_ID; ///< 개별모션 ID
int nRace_ID; ///< 종족
int nSex; ///< 성별
char szFile_Name[256]; ///< 바이패드 화일명
int nFrame_Length; ///< 프레임 길이
int nPlay_Speed; ///< 재생속도
int graphic_effect_file_ID; ///< INT NOT NULL , -- 07
int nGraphic_effect_speed_type; ///< 이펙트 속도 타입
int nGraphic_effect_position; ///< 이펙트 위치
char graphic_effect_follow; ///< TINYINT NOT NULL , -- 10
char graphic_effect_disappear; ///< TINYINT NOT NULL , -- 11
int sound_file_ID; ///< INT NOT NULL , -- 12
int nSound_volumn; ///< 볼륨(%) 13
int nSound_play_probability; ///< "재생 확률" 14
int nSound_timing; ///< 타이밍(프레임) 15
char sound_reverb_apply; ///< TINYINT NOT NULL , -- 16
char sound_filter_apply; ///< TINYINT NOT NULL , -- 17
char sound_stereo_apply; ///< TINYINT NOT NULL , -- 18
int fx_id; ///< INT NOT NULL , -- 19
int fx_timing; ///< INT NOT NULL , -- 20
int fx_position; ///< INT NOT NULL , -- 21
int fx_play_speed; ///< INT NOT NULL , -- 22
int nEvent01_id; ///< 이벤트 ID
int nEvent01_timing; ///< 타이밍(프레임)
int nEvent02_id; ///< 이벤트 ID
int nEvent02_timing; ///< 타이밍(프레임)
int nEvent03_id; ///< 이벤트 ID
int nEvent03_timing; ///< 타이밍(프레임)
int nEvent04_id; ///< 이벤트 ID
int nEvent04_timing; ///< 타이밍(프레임)
int nEvent05_id; ///< 이벤트 ID
int nEvent05_timing; ///< 타이밍(프레임)
int nEvent06_id;
int nEvent06_timing;
int nEvent07_id;
int nEvent07_timing;
int nEvent08_id;
int nEvent08_timing;
int nEvent09_id;
int nEvent09_timing;
int nEvent10_id;
int nEvent10_timing;
};
#ifdef _RDBGENTEST
#pragma pack(pop)
#endif
struct _MOTION_EVENT_HANDER
{
_MOTION_EVENT_HANDER()
{
nID = 0;
memset(szFx_id_Text, 0, sizeof( szFx_id_Text ) );
memset(szScript, 0, sizeof( szScript ) );
}
int nID; ///< 핸들 ID
char szFx_id_Text[256]; ///< 설명?
char szScript[512]; ///< 스크립트
};
#ifdef _RDBGENTEST
#pragma pack(push,1)
#endif
struct _MOTION_FX_SET
{
_MOTION_FX_SET()
{
nID = 0;
nFx_Type = 0;
nAdd_Time = 0;
nFollowing = 0;
graphic_effect_start_file_ID = 0;
graphic_effect_middle_file_ID = 0;
graphic_effect_end_file_ID = 0;
nGraphic_effect_direction = 0;
sound_start_file_ID = 0;
sound_middle_file_ID = 0;
sound_end_file_ID = 0;
nSound_play_probability = 0;
nSound_volumn = 0;
IsEffect[0] = IsEffect[1] = IsEffect[2] = false;
IsSound[0] = IsSound[1] = IsSound[2] = false;
sound_reverb_apply = 0;
sound_filter_apply = 0;
sound_stereo_apply = 0;
sound_option[0] = false;
sound_option[1] = false;
sound_option[2] = false;
}
void SetInfo()
{
sound_option[0] = sound_reverb_apply == 0 ? false : true;
sound_option[1] = sound_filter_apply == 0 ? false : true;
sound_option[2] = sound_stereo_apply == 0 ? false : true;
}
int nID; ///< INT NOT NULL , -- 01
int nFx_Type; ///< INT NOT NULL , -- 02
int nAdd_Time; ///< INT NOT NULL , -- 03
int nFollowing; ///< INT NOT NULL , -- 04
int graphic_effect_start_file_ID; ///< INT NOT NULL , -- 05
int graphic_effect_middle_file_ID; ///< INT NOT NULL , -- 06
int graphic_effect_end_file_ID; ///< INT NOT NULL , -- 07
int nGraphic_effect_direction; ///< VARCHAR(256) NOT NULL , -- 08
bool IsEffect[3];
int sound_start_file_ID; ///< INT NOT NULL , -- 09
int sound_middle_file_ID; ///< INT NOT NULL , -- 10
int sound_end_file_ID; ///< INT NOT NULL , -- 11
int nSound_play_probability; ///< INT NOT NULL , -- 12
int nSound_volumn; ///< INT NOT NULL , -- 13
bool IsSound[3];
char sound_reverb_apply; ///< TINYINT NOT NULL -- 14
char sound_filter_apply; ///< TINYINT NOT NULL -- 15
char sound_stereo_apply; ///< TINYINT NOT NULL -- 16
bool sound_option[3]; ///< 클라이언트만 쓴다
};
#ifdef _RDBGENTEST
#pragma pack(pop)
#endif