#pragma once #pragma pack( 1 ) //#include #include "Enc.h" #include "GameRule.h" #ifdef _RDBGENTEST #pragma pack(push,1) #endif //------------------------------------------------------------------------------------------------------ // 몬스터 리소스 //------------------------------------------------------------------------------------------------------ struct MonsterBase { enum ATTACK_TYPE_FLAG { AT_FIRST_ATTACK = ( 1 << 0 ), AT_GROUP_FIRST_ATTACK = ( 1 << 1 ), AT_RESPONSE_CASTING = ( 1 << 2 ), AT_RESPONSE_RACE = ( 1 << 3 ), AT_RESPONSE_BATTLE = ( 1 << 4 ), }; // 이 등급은 기존의 16개의 등급분류이다. 8.2에서 등급이 eMONSTER_RATE만큼 줄어들어서 // 이 데이터는 삭제하려 했으나 기존의 몬스터 등급으로 처리하는 코드가 서버, 클라에 존재하여서 // 등급을 삭제 할 수 없어 등급을 남겨두었다 enum MONSTER_TYPE { MONSTER_FIELD_MID_BOSS = 12, MONSTER_DUNGEON_MID_BOSS = 22, MONSTER_RANK_C_BOSS = 31, MONSTER_RANK_B_BOSS = 32, MONSTER_RANK_A_BOSS = 33, MONSTER_RANK_S_BOSS = 34, }; // 8.2에서 바뀐 등급 분류 ( 현재 등급 아이콘 출력과 툴팁을 위해 씌이고 있다. ) enum eMONSTER_RATE : BYTE { MONSTER_INSTANCE = 1, MONSTER_BASIC, MONSTER_RARE, MONSTER_SPECIAL, MONSTER_UNIQUE, MONSTER_UNKNOWN, // 아직 결정되지 않음 MONSTER_RATE_MAX_, }; int old_uid; // ID (로딩 후에 쓰레기 값을 채움) 1 int monster_group; // 계열 2 int name_id; // 이름 3 int respawn_name_id; // 리스폰 장소 4 int transform_level; // 변신레벨 7 int walk_type; // 보행 타입 8 int slant_type; // 9 float size; // 10 float scale; // 11 float target_fx_size; // 12 int level; // 레벨 19 int affiliation_id; // 계열 ID 20 int affiliationDetail_id; // 세부 계열 ID 21 int species_id; // 종 ID 22 int magic_type; // 마법 속성 23 int race; // 종족 24 int visible_range; // 25 int chase_range; // 26 int monster_type; // 타입 32 int monster_grade_icon; // 몬스터 등급 아이콘 id 33 int stat_id; // 스탯 ID 34 int monster_skill_link_id; // 몬스터 스킬 id 36 int ability; // 40 int standard_walk_speed; // 이동 속도 41 int standard_run_speed; // 이동 속도 42 int walk_speed; // 걷기 속도 43 int run_speed; // 뛰기 속도 44 int attack_range; // 사정 거리 45 int hidesense_range; // 은신 감지 거리 46 int hp; // 47 int mp; // 48 int attack_point; // 49 int magic_point; // 50 int defence; // 51 int magic_defence; // 52 int attack_speed; // 53 int casting_speed; // 54 int accuracy; // 55 int avoid; // 56 int magic_accuracy; // 57 int magic_avoid; // 58 int taming_code; // 테이밍 되는 ID 59 int creature_taming_code; // MonsterCreature Resource SID 60 float taming_percentage; // 테이밍 확률 61 float taming_exp_adjust; // 테이밍 경험치 조정 62 int exp; // 부여 EXP 63 int jp; // 부여 JP 64 int gold_drop_percentage; // 돈 떨어트릴 확률 65 int gold_min; // 돈 최소 66 int gold_max; // 돈 최대 67 int chaos_drop_percentage; // 혼돈 떨어뜨릴 확률 68 int chaos_min; // 혼돈 최소 69 int chaos_max; // 혼돈 최대 70 int exp_2; // 71 int jp_2; // 72 int gold_min_2; // 73 int gold_max_2; // 74 int chaos_min_2; // 75 int chaos_max_2; // 76 int drop_table_link_id; // 몬스터 드롭 테이블 77 int texture_group; // 78 int local_flag; // 79 int attack_type; }; #ifdef _RDBGENTEST #pragma pack(pop) #endif #ifdef _RDBGENTEST #pragma pack(push,1) #endif //------------------------------------------------------------------------------------------------------ // 몬스터 정보 (파일) //------------------------------------------------------------------------------------------------------ struct _MONSTER_INFO_FILE_PRE : public MonsterBase { _MONSTER_INFO_FILE_PRE() { memset( model, 0, sizeof(model) ); fight_type = 0; } char model[256]; // 5 int motion_file_id; // 6 int nCamera_x; // 카메라 위치 X 13 int nCamera_y; // 카메라 위치 Y 14 int nCamera_z; // 카메라 위치 Z 15 float fTarget_x; // 카메라 타겟 위치 X 16 float fTarget_y; // 카메라 타겟 위치 Y 17 float fTarget_z; // 카메라 타겟 위치 Z 18 int fight_type; // 32 int nMaterial; // 재질 34 int weapon_type; // 35 int nAttack_motion_speed; // 공격속도 36 }; #ifdef _RDBGENTEST #pragma pack(pop) #endif struct SummonBase { enum SUMMON_RATE { RATE_BASIC = 0, RATE_NORMAL_BASIC = 1, RATE_SPECIAL_BASIC = 2, RATE_NORMAL_RARE = 3, RATE_SPECIAL_RARE = 4, RATE_UNIQUE = 5, // AziaMAfia Pet Rarity RATE_VERACRUZ = 6, RATE_PHANTOM = 7, RATE_AURA = 8, RATE_SHINNY = 9, RATE_GALAXY = 10, }; enum SUMMON_EVOLVE_TYPE { EVOLVE_NORMAL = 1, // 기본형 EVOLVE_GROWTH = 2, // 성장형 EVOLVE_EVOLVE = 3, // 진화형 }; int uid; // ID 1 int model_id; // 모델 계열 2 int name_id; // 이름 아이디 3 int affiliation_id; // 계열 아이디 4 int affiliationDetail_id; // 세부 계열 아이디 5 int speceis_id; // 종 아이디 6 int color_id; // 종분류 컬러 7 int magic_type; // 마법 속성 8 char rate; // 9 int stat_id; // 스탯 ID 10 float size; // 사이즈 11 float scale; // 크기 12 float target_fx_size; // 타겟 X 사이즈 13 int standard_walk_speed; // 걷기 속도 14 int standard_run_speed; // 뛰기 속도 15 int riding_speed; // 라이딩 속도 16 int run_speed; // 뛰기 속도 17 char is_riding_only; // 라이딩 전용 18 int riding_motion_type; // 라이딩 모션 타입 19 int attack_range; // 사정 거리 20 }; struct MonsterCreatureInfo { int nSid; int nUseCode; int arSummonCode[ GameRule::MAX_MONSTER_CREATURE_COUNT ]; }; //------------------------------------------------------------------------------------------------------ // 펫 리소스 //------------------------------------------------------------------------------------------------------ struct PetBase { enum PET_ATTRIBUTE { ATTRIBUTE_BASIC = 0, ATTRIBUTE_RARE = 1, }; PetBase() : uid ( 0 ) , specific_id ( 0 ) , affiliation ( 0 ) , affiliationDetail ( 0 ) , name_id ( 0 ) , cage_id ( 0 ) , skill_tree_id ( 0 ) , attribute_flag ( 0 ) , size ( 0 ) , scale ( 0 ) , target_fx_size ( 0 ) , walk_type ( 0 ) , slant_type ( 0 ) { } int uid; // 고유 ID 1 int specific_id; // 종 id 2 int affiliation; // 계열 3 int affiliationDetail; // 세부 계열 4 int name_id; // 팻의 이름 TEXT ID 5 int cage_id; // 펫의 우리 TEXT ID 6 int skill_tree_id; // 스킬 트리 ID 7 int attribute_flag; // 팻 등급 8 float size; // 크기 9 float scale; // 모델 스케일 10 float target_fx_size; // 11 int walk_type; // 보행 타입 12 int slant_type; // 기울기 타입 13 }; //------------------------------------------------------------------------------------------------------ // 펫 정보 (파일) //------------------------------------------------------------------------------------------------------ struct _PET_INFO_FILE : public PetBase { _PET_INFO_FILE() : PetBase () , camera_x ( 0 ) , camera_y ( 0 ) , camera_z ( 0 ) , target_x ( 0 ) , target_y ( 0 ) , target_z ( 0 ) , motion_file_id ( 0 ) , texture_group ( -1 ) , local_flag ( 0 ) { memset( model, 0, sizeof( model ) ); } int camera_x; // 14 int camera_y; // 15 int camera_z; // 16 float target_x; // 17 float target_y; // 18 float target_z; // 19 char model[ 256 ]; // 20 int motion_file_id; // 21 int texture_group; // 22 int local_flag; // 23 }; struct DropGroup { enum { MAX_DROP_GROUP = 10, }; int uid; int drop_item_id[10]; int drop_percentage[10]; ///< 드랍 확률. 100000000 일경우 100% }; struct _MONSTER_INFO_FILE : public _MONSTER_INFO_FILE_PRE { ENC_INT uid; }; struct _SUMMON_INFO_FILE : public SummonBase { _SUMMON_INFO_FILE() { nMaterial = 0; nAttack_motion_speed = 0; nForm = 0; nEvolve_target = 0; memset( model, 0, sizeof(model) ); nFaceID = 0; memset( face_file_name, 0, sizeof(face_file_name) ); card_id = 0; memset( illust_file_name, 0, sizeof(illust_file_name) ); text_feature_id = 0; text_name_id = 0; memset( skill_tree_id, 0, sizeof( skill_tree_id ) ); } int walk_type; // 보행 타입 20 int slant_type; // 걷기 타입 21 int nMaterial; // 재질 22 int weapon_type; // 무기 종류 23 int nAttack_motion_speed; // 공격속도 24 int nForm; // 형태(진화) 25 int nEvolve_target; // 진화 대상 26 int nCamera_x; // 카메라 위치 X 27 int nCamera_y; // 카메라 위치 Y 28 int nCamera_z; // 카메라 위치 Z 29 float fTarget_x; // 타겟 위치 X 30 float fTarget_y; // 타겟 위치 Y 31 float fTarget_z; // 타겟 위치 Z 32 char model[256]; // 모델 파일 이름 33 int motion_file_id; // 모션 파일 ID 34 int nFaceID; // 얼굴 ID 35 char face_file_name[256]; // 얼굴 파일 이름 36 int card_id; // 카드 ID 37 char illust_file_name[256]; // 일러스트 파일 이름 39 int text_feature_id; // 40 int text_name_id; // 41 int skill_tree_id[5]; // 스킬 트리 ID 42 ~ 46 int texture_group; // -1: 기본 텍스쳐, 0~9 그룹화된 텍스쳐 47 int local_flag; // 48 }; //------------------------------------------------------------------------------------------------------ // 몬스터 종 정보 ( 클라이언트만 사용하는 정보 ) //------------------------------------------------------------------------------------------------------ struct MonsterSpeciesBase { MonsterSpeciesBase() : uid( NULL ) , species_id( NULL ) , string_id( NULL ) { } int uid; // 유니크 ID 1 int species_id; // 종 ID 2 int string_id; // 종 문자열 ID 3 }; //------------------------------------------------------------------------------------------------------ // 몬스터 계열 정보 ( 클라이언트만 사용하는 정보 ) //------------------------------------------------------------------------------------------------------ struct MonsterAffiliationBase { MonsterAffiliationBase() : uid( NULL ) , affiliation_id( NULL ) , string_id( NULL ) { } int uid; // 유니크 ID 1 int affiliation_id; // 계열 ID 2 int string_id; // 계열 문자열 ID 3 }; //------------------------------------------------------------------------------------------------------ // 몬스터 세부 계열 정보 ( 클라이언트만 사용하는 정보 ) //------------------------------------------------------------------------------------------------------ struct MonsterAffiliationDetailBase { MonsterAffiliationDetailBase() : uid( NULL ) , affiliationDetail_id( NULL ) , string_id( NULL ) { ZeroMemory( taming_possible_icon_filename, sizeof( taming_possible_icon_filename ) ); ZeroMemory( taming_impossible_icon_filename, sizeof( taming_impossible_icon_filename ) ); ZeroMemory( taming_Tamed_icon_filename, sizeof( taming_Tamed_icon_filename ) ); } int uid; // 유니크 ID 1 int affiliationDetail_id; // 계열 ID 2 int string_id; // 계열 문자열 ID 3 char taming_possible_icon_filename[256]; // 테이밍 가능 아이콘 이름 4 char taming_impossible_icon_filename[256]; // 테이밍 불 가능 아이콘 이름 5 char taming_Tamed_icon_filename[256]; // 테이밍 됨 아이콘 이름 6 }; #pragma pack()