#pragma once //#include #include "SkillBaseFile.h" #include "GameDefine.h" #include "SGameAniType.h" #include /// 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