#ifndef _MONSTER_STRUCTURE_H_ #define _MONSTER_STRUCTURE_H_ #include #pragma pack(8) struct MonsterInfo { enum MaxNumber { MAX_MOTION_NUM = 4, // ÃÖ´ë ¸ð¼Ç °³¼ö MAX_ORIGINAL_ITEM_NUM = 5, // ¸ó½ºÅÍ º¸À¯ ÀâÅÛ ÃÖ´ë¼ö MAX_NAME_LEN = 64, // ¸ó½ºÅÍ À̸§ ±æÀÌ MAX_MODELING_FLAG_LENGTH = 32 // ¸ðµ¨¸µ µ¥ÀÌÅÍ À̸§ ±æÀÌ }; enum MonsterPattern { PATTERN_COMMON = 0, PATTERN_WARRIOR = 1, // ¿ö¸®¾î PATTERN_DEFENDER = 2, // µðÆæ´õ PATTERN_MAGE = 3, // ¸ÞÀÌÁö PATTERN_ACOLYTE = 4, // ¾îÄݶóÀÌÆ® PATTERN_BOSS = 5, // º¸½º PATTERN_BG = 6, // ¹è°æ(?) PATTERN_SUMMON = 7, // ¼Òȯ¼ö PATTERN_STRUCTURE = 8, // ±¸Á¶¹° (¼®»ó Á¾·ù) PATTERN_NAMED = 9, // ³×ÀÓµå PATTERN_CHIEF = 10, // Ä¡ÇÁ PATTERN_OBJECT = 11, // ¿ÀºêÁ§Æ® (²É, ¹ö¼¸ µîµî..) PATTERN_GUARD = 12, // °æºñº´ PATTERN_GATHER = 13, // ¼öÁý ŸÀÔ MAX_PATTERN = 14 }; enum SkillPattern { ATTACK_SKILL = 0, // °ø°Ý¿­ ½ºÅ³ RECOVER_SKILL = 1, // ȸº¹¿­ ½ºÅ³ ENCHANT_SKILL = 2, // ºÎ¿©¿­ ½ºÅ³ EXTENT_SKILL = 3, // ¹üÀ§¿­ ½ºÅ³ BOSS_CHANT_SKILL = 4, // º¸½ºÀÇ Ã¦Æ® ½ºÅ³ MAX_SKILL_PATTERN = 5 }; enum HitBox { X_PLUS = 0, X_MINUS = 1, Y_PLUS = 2, Y_MINUS = 3, MAX_HITBOX_NUM = 4 }; enum Z3D_CHR_ACTION { Z3D_CA_RUN = 1, // ´Þ¸®±â Z3D_CA_ATTACK = 2, // °ø°Ý Z3D_CA_WALK = 8, // °È±â Z3D_CA_CASTING = 24 // ij½ºÆÃ }; enum AwardKind { ORIGINAL1 = 0, // ÀâÅÛ1 ORIGINAL2 = 1, // ÀâÅÛ2 ORIGINAL3 = 2, // ÀâÅÛ3 ORIGINAL4 = 3, // ÀâÅÛ4 ORIGINAL5 = 4, // ÀâÅÛ5 COIN = 5, // µ· GEM = 6, // º¸¼® METAL = 7, // ±¤¹° POTION = 8, // ¹°¾à SKILL = 9, // ½ºÅ³ºÏ CASH_ITEM = 10, // ij½¬ÅÛ LOTTERY = 11, // º¹±Ç F_STANDARD_EQUIP = 12, // Standard-Option Item (Grade F) D_STANDARD_EQUIP = 13, // Standard-Option Item (Grade D) C_STANDARD_EQUIP = 14, // Standard-Option Item (Grade C) B_STANDARD_EQUIP = 15, // Standard-Option Item (Grade B) A_STANDARD_EQUIP = 16, // Standard-Option Item (Grade A) F_OVER_EQUIP = 17, // Over-Option Item (Grade F) D_OVER_EQUIP = 18, // Over-Option Item (Grade D) C_OVER_EQUIP = 19, // Over-Option Item (Grade C) B_OVER_EQUIP = 20, // Over-Option Item (Grade B) A_OVER_EQUIP = 21, // Over-Option Item (Grade A) NO_EQUIP = 22, // No-Option Item //--// start.. F_RING = 23, // ¹ÝÁö (Grade F) D_RING = 24, // ¹ÝÁö (Grade D) C_RING = 25, // ¹ÝÁö (Grade C) B_RING = 26, // ¹ÝÁö (Grade B) A_RING = 27, // ¹ÝÁö (Grade A) F_NECKLACE = 28, // ¸ñ°ÉÀÌ (Grade F) D_NECKLACE = 29, // ¸ñ°ÉÀÌ (Grade D) C_NECKLACE = 30, // ¸ñ°ÉÀÌ (Grade C) B_NECKLACE = 31, // ¸ñ°ÉÀÌ (Grade B) A_NECKLACE = 32, // ¸ñ°ÉÀÌ (Grade A) F_RUNE = 33, // ·é (Grade F) D_RUNE = 34, // ·é (Grade D) C_RUNE = 35, // ·é (Grade C) B_RUNE = 36, // ·é (Grade B) A_RUNE = 37, // ·é (Grade A) DESTRUCTION_RUNE = 38, // ¼Ò¸êÀÇ ·é MAX_AWARD_KIND = 39 //--// end.. }; enum SpeacialKindID { // ¼Òȯ¼ö SUMMON_KINDLING = 3500, SUMMON_FLAMEWALKER = 3506, SUMMON_BURNINGSHIELD = 3513, SUMMON_FIREWING = 3520, SUMMON_DEATHBURN = 3527, // 1·¹º§ ¼®»ó // ¸í¿¹ÀÇ ¼®»ó STATUE_NEUTRALITY1 = 4001, STATUE_HUMAN_LOADING1 = 4002, STATUE_HUMAN_COMPLETE1 = 4003, STATUE_AKHAN_LOADING1 = 4004, STATUE_AKHAN_COMPLETE1 = 4005, // BattleGround Server ¸í¿¹ÀÇ ¼®»ó BG_STATUE_NEUTRALITY1 = 4006, BG_STATUE_HUMAN_LOADING1 = 4007, BG_STATUE_HUMAN_COMPLETE1 = 4008, BG_STATUE_AKHAN_LOADING1 = 4009, BG_STATUE_AKHAN_COMPLETE1 = 4010, // ´ÙÅ© Ä«³ª¹ø ¼®»ó POWER_STATUE_NEUTRALITY1 = 4011, // ÈûÀÇ ¼®»ó POWER_STATUE_HUMAN_LOADING1 = 4012, POWER_STATUE_HUMAN_COMPLETE1 = 4013, POWER_STATUE_AKHAN_LOADING1 = 4014, POWER_STATUE_AKHAN_COMPLETE1 = 4015, INT_STATUE_NEUTRALITY1 = 4016, // Áö´ÉÀÇ ¼®»ó INT_STATUE_HUMAN_LOADING1 = 4017, INT_STATUE_HUMAN_COMPLETE1 = 4018, INT_STATUE_AKHAN_LOADING1 = 4019, INT_STATUE_AKHAN_COMPLETE1 = 4020, EXP_STATUE_NEUTRALITY1 = 4021, // °æÇèÀÇ ¼®»ó EXP_STATUE_HUMAN_LOADING1 = 4022, EXP_STATUE_HUMAN_COMPLETE1 = 4023, EXP_STATUE_AKHAN_LOADING1 = 4024, EXP_STATUE_AKHAN_COMPLETE1 = 4025, WEALTH_STATUE_NEUTRALITY1 = 4026, // ºÎÀÇ ¼®»ó WEALTH_STATUE_HUMAN_LOADING1 = 4027, WEALTH_STATUE_HUMAN_COMPLETE1 = 4028, WEALTH_STATUE_AKHAN_LOADING1 = 4029, WEALTH_STATUE_AKHAN_COMPLETE1 = 4030, LIFE_EXTRACT_NEUTRALITY1 = 4031, // »ý¸í ÃàÃâ±â LIFE_EXTRACT_HUMAN_LOADING1 = 4032, LIFE_EXTRACT_HUMAN_COMPLETE1 = 4033, LIFE_EXTRACT_AKHAN_LOADING1 = 4034, LIFE_EXTRACT_AKHAN_COMPLETE1 = 4035, // 2·¹º§ ¼®»ó // ¸í¿¹ÀÇ ¼®»ó STATUE_NEUTRALITY2 = 4036, STATUE_HUMAN_LOADING2 = 4037, STATUE_HUMAN_COMPLETE2 = 4038, STATUE_AKHAN_LOADING2 = 4039, STATUE_AKHAN_COMPLETE2 = 4040, // BattleGround Server ¸í¿¹ÀÇ ¼®»ó BG_STATUE_NEUTRALITY2 = 4041, BG_STATUE_HUMAN_LOADING2 = 4042, BG_STATUE_HUMAN_COMPLETE2 = 4043, BG_STATUE_AKHAN_LOADING2 = 4044, BG_STATUE_AKHAN_COMPLETE2 = 4045, // ´ÙÅ© Ä«³ª¹ø ¼®»ó POWER_STATUE_NEUTRALITY2 = 4046, // ÈûÀÇ ¼®»ó POWER_STATUE_HUMAN_LOADING2 = 4047, POWER_STATUE_HUMAN_COMPLETE2 = 4048, POWER_STATUE_AKHAN_LOADING2 = 4049, POWER_STATUE_AKHAN_COMPLETE2 = 4050, INT_STATUE_NEUTRALITY2 = 4051, // Áö´ÉÀÇ ¼®»ó INT_STATUE_HUMAN_LOADING2 = 4052, INT_STATUE_HUMAN_COMPLETE2 = 4053, INT_STATUE_AKHAN_LOADING2 = 4054, INT_STATUE_AKHAN_COMPLETE2 = 4055, EXP_STATUE_NEUTRALITY2 = 4056, // °æÇèÀÇ ¼®»ó EXP_STATUE_HUMAN_LOADING2 = 4057, EXP_STATUE_HUMAN_COMPLETE2 = 4058, EXP_STATUE_AKHAN_LOADING2 = 4059, EXP_STATUE_AKHAN_COMPLETE2 = 4060, WEALTH_STATUE_NEUTRALITY2 = 4061, // ºÎÀÇ ¼®»ó WEALTH_STATUE_HUMAN_LOADING2 = 4062, WEALTH_STATUE_HUMAN_COMPLETE2 = 4063, WEALTH_STATUE_AKHAN_LOADING2 = 4064, WEALTH_STATUE_AKHAN_COMPLETE2 = 4065, LIFE_EXTRACT_NEUTRALITY2 = 4066, // »ý¸í ÃàÃâ±â LIFE_EXTRACT_HUMAN_LOADING2 = 4067, LIFE_EXTRACT_HUMAN_COMPLETE2 = 4068, LIFE_EXTRACT_AKHAN_LOADING2 = 4069, LIFE_EXTRACT_AKHAN_COMPLETE2 = 4070, // ¼®»ó KID (CreatureStructure.h ¿¡µµ Á¤ÀǵǾî ÀÖÀ½) MIN_STATUE_KID = 4001, MAX_STATUE_KID = 4070 }; enum StatueEffectType { SE_NONE = 0, SE_HP = 1, // Max HP »ó½Â È¿°ú SE_MP = 2, // Max MP »ó½Â È¿°ú SE_EXP = 3, // ȹµæ Exp »ó½Â È¿°ú SE_DROPRATE = 4, // ȹµæ ¾ÆÀÌÅÛ DropRate »ó½Â È¿°ú MAX_EFFECT_TYPE_NUM = 5 }; MotionInfo m_MonsterMotions[MAX_MOTION_NUM]; // ¸ó½ºÅÍÀÇ Çൿ Á¤º¸ (°È±â, ´Þ¸®±â, °ø°Ý, ij½ºÆÃ) char m_strName[MAX_NAME_LEN]; // À̸§ char m_strModelingFlag[MAX_MODELING_FLAG_LENGTH]; // ¸ðµ¨¸µ ÇüÅ Ç÷¡±× float m_fHitBox[MAX_HITBOX_NUM]; // Ÿ°Ý¹Ú½º unsigned short m_aryAwardItem[MAX_ORIGINAL_ITEM_NUM]; // ¸ó½ºÅͰ¡ °¡Áö°í ÀÖ´Â ¿À¸®Áö³¯ ¾ÆÀÌÅÛµé unsigned long m_aryDropRate[MAX_AWARD_KIND]; // ¾ÆÀÌÅÛ Á¾·ùº° µå¶ø·ü unsigned char m_cStandardBaseNum; // Standard-Option ÀåºñÀÇ ÃÖ¼Ò + °¹¼ö unsigned char m_cOverBaseNum; // Over-Option ÀåºñÀÇ ÃÖ¼Ò + °¹¼ö unsigned long m_dwKID; // Á¾·ù ID unsigned long m_dwRespawnTime; // ¸®½ºÆù ŸÀÓ float m_fSize; // »çÀÌÁî float m_fAttackAngle; // °ø°Ý °¢µµ short m_wAttackRange; // °ø°Ý °Å¸® unsigned char m_cSkillPattern; // ½ºÅ³ ÆÐÅÏ unsigned char m_cSkillLevel; // ½ºÅ³ ·¹º§ unsigned char m_cFixLevelGap; // °íÁ¤ ·¹º§°¸ bool m_bFixLevelGap; // °íÁ¤ ·¹º§°¸ Àû¿ë ¿©ºÎ char m_cNation; // ±¹°¡ unsigned short m_wSkillUseRate; // ½ºÅ³ »ç¿ë È®·ü unsigned short m_wSkillID[MAX_SKILL_PATTERN]; // ¸ó½ºÅÍ ½ºÅ³ ID unsigned char m_cEnchantSpellType; // ºÎ¿© ½ºÅ³¿¡ ÀÇÇÑ ½ºÆçŸÀÔ ( Skill::SpellID::Type ) unsigned char m_cChantSpellType; // ÆÄƼ æƮ ½ºÅ³¿¡ ÀÇÇÑ ½ºÆçŸÀÔ ( Skill::SpellID::Type ) float m_fSkillEffectSize; // ½ºÅ³ ÀÌÆåÆ® »çÀÌÁî (Àΰ£: 1.0) bool m_bIgnoreEnchant; // æƮ, ÀÎæƮ ¹«½Ã ¿©ºÎ bool m_bCollision; // Ãæµ¹ üũ ¿©ºÎ bool m_bFirstAttack; // ¼±Á¦°ø°Ý ¿©ºÎ bool m_bReturnPosition; // Ÿ°ÙÀÌ µµ¸Á°¡¸é Á¦ÀÚ¸®·Î µ¹¾Æ°¡´ÂÁö ¿©ºÎ bool m_bUseLOD; // LOD ó¸® À¯¹« // °ø¼º ¿ÀºêÁ§Æ® °ü·Ã unsigned long m_dwDevelopGold; // °³¹ß ºñ¿ë unsigned char m_cDevelopSpeed; // °³¹ß ¼Óµµ (´ÜÀ§ : ºÐ) unsigned long m_dwUpgradeGold; // ¾÷±×·¹ÀÌµå ºñ¿ë unsigned char m_cUpgradeSpeed; // ¾÷±×·¹ÀÌµå ¼Óµµ (´ÜÀ§ : ºÐ) float m_fDevelopGoldDown; // °³¹ß ºñ¿ë Àý°¨ ¼öÄ¡ (%) float m_fDevelopSpeedUp; // °³¹ß ¼Óµµ Çâ»ó ¼öÄ¡ (%) float m_fUpgradeGoldDown; // ¾÷±×·¹ÀÌµå ºñ¿ë Àý°¨ ¼öÄ¡ (%) float m_fUpgradeSpeedUp; // ¾÷±×·¹ÀÌµå ¼Óµµ Çâ»ó ¼öÄ¡ (%) float m_fDefenseUp; // ¹æ¾î·Â Çâ»ó ¼öÄ¡ (%) float m_fOffenseUp; // °ø°Ý·Â Çâ»ó ¼öÄ¡ (%) float m_fHPUp; // HP Çâ»ó ¼öÄ¡ (%) float m_fBonusRate; // ÃÑ ¼öÀÔ º¸³Ê½º (%) float m_fRespawnSpeedUp; // PC ¸®½ºÆù ¼Óµµ Çâ»ó ¼öÄ¡ (%) // ±¹°¡Àü ¼®»ó È¿°ú °ü·Ã unsigned char m_cStatueEffectType; // ¼®»ó È¿°ú ŸÀÔ unsigned char m_cStatueEffectPercent; // ¼®»ó È¿°ú ÆÛ¼¾Æ® bool m_bStatueRespawnEnable; // ¼®»ó ¸®½ºÆù °¡´É ¿©ºÎ MonsterInfo(); static MonsterPattern GetMonsterPattern(const char* szMonsterType); static StatueEffectType GetStatueEffectType(const char* szStatueEffectType); static unsigned short GetCompleteStatueKID(unsigned short wNowKID); static unsigned short GetLoadingStatueKID(unsigned char cRace, unsigned short wNowKID); static unsigned short GetDefaultStatueKID(unsigned short wNowKID); static bool IsLoadingStatueKID(unsigned short wNowKID); static bool IsRaceCompleteStatueKID(unsigned short wNowKID); }; #pragma pack() #endif