Last active
June 16, 2020 02:13
-
-
Save diamondo25/68052b4350e8ab78a220a816c11573ea to your computer and use it in GitHub Desktop.
Maple NPC chat options
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| enum QR { | |
| MonsterBook = 1047, | |
| SAVE_EXP_BUFF = 1062, | |
| WeddingDivorce = 1103, | |
| WeddingVows30days = 1125, | |
| WeddingVows100days = 1126, | |
| RecommendPartyQuestSave = 1216, | |
| MonsterCarnival = 1301, | |
| MonsterCarnivalS2 = 1302, | |
| BeastFormWing_On_Off = 1544, | |
| CrossHunterUI_Alert = 1652, | |
| MysticFieldTuto = 1676, | |
| MysticFieldReward = 1683, | |
| MysticFieldTrasferCheck = 1685, | |
| MysticFieldTuto_Reopen = 1693, | |
| EvolvingSystemTutorial = 1807, | |
| EvolvingSystemDayLimit = 1817, | |
| EvolvingSystemMedal_Quest = 1841, | |
| EvolvingSystemMedal_Record = 1842, | |
| MakingTutorial = 2550, | |
| AdventureJournal_Start_Dual = 2646, | |
| LionKing = 3162, | |
| DojangRankBest = 3850, | |
| DojangMindBodyTraining = 3889, | |
| DojangRankInfo = 3890, | |
| Aswan_Clear_Easy = 3970, | |
| Aswan_Clear_Normal = 3971, | |
| Hillah_Achievement = 3990, | |
| Circulator_Gift = 3994, | |
| Circulator_Quest = 3995, | |
| CharmPocket_SlotOpen = 6500, | |
| Tutorial_PirateBless = 6600, | |
| Tutorial_ElfsReturn = 6601, | |
| Tutorial_DemonsFury = 6602, | |
| Tutorial_DeadlyInstinct = 6606, | |
| Tutorial_MichaelStance = 6607, | |
| Tutorial_LightmagePermeate = 6608, | |
| Tutorial_KaiserStrongStamina = 6609, | |
| Tutorial_DragonPirateSoulRage = 6610, | |
| Tutorial_XenonAggressiveLogic = 6611, | |
| Tutorial_DavangerWildRage = 6612, | |
| Tutorial_CygnusBless = 6613, | |
| Tutorial_HiddenExcapeDeath = 6614, | |
| ZakumDungeon = 7000, | |
| AswanEnter = 7034, | |
| AswanCoin_History = 7035, | |
| Circulator_Data = 7036, | |
| MonsterCarnival_OurTotalCP = 7051, | |
| MonsterCarnivalS3_TotalCP = 7051, | |
| MonsterCarnival_OpponentTotalCP = 7052, | |
| MonsterCarnival_ElaspedTime = 7053, | |
| MonsterCarnival_WinCount = 7054, | |
| MonsterCarnival_LoseCount = 7055, | |
| MonsterCarnival_DrawCount = 7056, | |
| MonsterCarnivalS3 = 7057, | |
| MonsterCarnivalS3_EnterCount = 7058, | |
| MonsterCarnivalS3_MatchingFailed = 7059, | |
| Dojang_Ranking_Reward = 7212, | |
| DailyCallenge_Dojang = 7216, | |
| Balrog_Clear = 7222, | |
| Defense_Wave = 7240, | |
| Defense_Life = 7241, | |
| DailyCallenge_Pyramid = 7242, | |
| SkillSPReset_2012_SUMMER = 7249, | |
| Dojang_JobRanking = 7264, | |
| BossWaitlinesReturnMap = 7265, | |
| Tower_Chair_Info = 7266, | |
| Dojang_ClearPoint = 7281, | |
| Dojang_UserPoint = 7282, | |
| ActiveNickName = 7290, | |
| ActiveDamageSkin = 7291, | |
| ActiveCustomizeEffect = 7292, | |
| AriantArenaResult = 7334, | |
| AriantArenaPlayTime = 7335, | |
| MonsterCarnivalS2_BP = 7560, | |
| MonsterCarnivalS2_OurTotalCP = 7562, | |
| MonsterCarnivalS2_OpponentTotalCP = 7563, | |
| MonsterCarnivalS2_ElaspedTime = 7564, | |
| MonsterCarnivalS2_WinCount = 7565, | |
| MonsterCarnivalS2_LoseCount = 7566, | |
| MonsterCarnivalS2_DrawCount = 7567, | |
| MateSupportedPhone = 7601, | |
| MatePhoneNumber = 7602, | |
| WeddingVillage = 7610, | |
| WeddingType = 7612, | |
| WeddingDay = 7614, | |
| WeddingStatus = 7616, | |
| _2012Battle_RPSGame = 7708, | |
| Massacre_TotalHitCount = 7760, | |
| Massacre_Clear = 7761, | |
| SettingSonOfLinkedSkill = 7783, | |
| ElfEarRecord = 7784, | |
| InnerAbillityInsurance = 7785, | |
| EventStamp = 7790, | |
| MECHANIC_HUEVALUE = 7825, | |
| BuyEquipExt = 7830, | |
| MakingMapTransfer = 7860, | |
| PvPMode_LastRoomOut = 7881, | |
| PvP_HardCore_WinLose = 7882, | |
| PvP_HardCore_Result = 7883, | |
| CharmPocket_SlotOpen2 = 7884, | |
| PvP_HardCore_Nickname = 7885, | |
| PvP_HardCore_Gladiator = 7886, | |
| WU_Moonrabbit = 7905, | |
| WU_Quest_enter = 7906, | |
| PartyQuestPoint = 7907, | |
| DailyCallenge_Aswan = 7963, | |
| Hyper_Skill_Record_Cost_Money = 7965, | |
| SkillUIHelperPopup = 7966, | |
| ExpPlusEventAccountRecord = 7980, | |
| ExpPlusEventProgress = 7981, | |
| ExpPlusEventPushItemInfo = 7982, | |
| ExpPlusEventFlowInfo = 7983, | |
| ExpPlusItemBackUp = 7985, | |
| Rune_Use_Date = 7994, | |
| MacroDetect = 7995, | |
| MacroDetectEx = 7996, | |
| RPSGame = 9480, | |
| Plant = 9876, | |
| AdminShop = 10201, | |
| AdminShopItemRegister = 10204, | |
| CookieHouse_MaxPoint = 10226, | |
| CookieHouse_LastPoint = 10227, | |
| MaxCombo = 10335, | |
| PremiumUserQuest_Base = 10661, | |
| _2010FallMoon = 10876, | |
| BoomUpEvent_Character_Begin = 10940, | |
| BoomUpEvent_Character_End = 10942, | |
| PvPMode_Score = 11020, | |
| PvPMode_TeamDeath_Win_Count = 11021, | |
| PvPMode_IceKnight_Win_Count_For_IceKnight = 11022, | |
| PvPMode_IceKnight_Score = 11024, | |
| PvPMode_IceKnight_Win_Count_For_Challenger = 11025, | |
| PvPMode_TeamDeath_Win_Count_Daily = 11026, | |
| PvPMode_DeathMatch_Score = 11027, | |
| PvPMode_Participate_Count = 11028, | |
| PvPMode_IceKnight_Win_Count_Daily = 11029, | |
| EliminationOfBigMoonRabbit = 11030, | |
| PvPMode_IceKnight_Score_Quest1 = 11047, | |
| PvPMode_IceKnight_Score_Quest2 = 11048, | |
| PvPMode_IceKnight_Morph_Quest = 11049, | |
| PvPMode_IceKnight_Morph_Check = 11050, | |
| JumpEvent_NewCharacter = 11335, | |
| JumpEvent_NewCharacter_JobChange = 11337, | |
| PrizeEvent = 11444, | |
| PvPMode_BoomUpEvent_Check1 = 11560, | |
| PvPMode_BoomUpEvent_PvPPoint = 11561, | |
| PvPMode_BoomUpEvent_Check2 = 11563, | |
| PvPMode_BoomUpEvent_Check3 = 11564, | |
| PvP_OneDay_MAX_Battle_Point = 11565, | |
| Macro_Exp_Decresase_Check = 11620, | |
| LittleIndian = 11840, | |
| FallSportsDay_BakCrash = 11868, | |
| FallSportsDay_JulDarigi = 11871, | |
| RelaxEXP_Time = 11920, | |
| Halloween_Candy = 11930, | |
| LevelUpGuideNotice = 12071, | |
| NewyearBlackDragon = 12092, | |
| EVENTSKILL_USED_COUNT_INADAY = 12251, | |
| EVENTSKILL_LAST_USED_DAY = 12252, | |
| SamSamSamEvent_MobCount = 12265, | |
| KeyOfLiberation0 = 12300, | |
| KeyOfLiberation1 = 12301, | |
| KeyOfLiberation2 = 12302, | |
| KeyOfLiberation3 = 12303, | |
| KeyOfLiberation4 = 12304, | |
| KeyOfLiberation5 = 12305, | |
| KeyOfLiberation6 = 12306, | |
| KeyOfLiberation7 = 12307, | |
| KeyOfLiberation8 = 12308, | |
| KeyOfLiberation9 = 12309, | |
| KeyOfLiberation10 = 12310, | |
| KeyOfLiberation11 = 12311, | |
| KeyOfLiberation12 = 12312, | |
| KeyOfLiberation13 = 12313, | |
| KeyOfLiberation14 = 12314, | |
| KeyOfLiberation15 = 12315, | |
| KeyOfLiberation16 = 12316, | |
| KeyOfLiberation17 = 12317, | |
| KeyOfLiberation18 = 12318, | |
| KeyOfLiberation19 = 12319, | |
| KeyOfLiberation20 = 12320, | |
| WeddingExStatus = 12326, | |
| BossShieldCoolTime = 12330, | |
| PetSkillSetting = 12334, | |
| ValuePack_Info = 12348, | |
| MapleStyle = 12359, | |
| MapleStyle_Bonus = 12360, | |
| PremiumUserQuest_Reward1 = 12373, | |
| Character_Potential_Cash_Cube_Use = 12393, | |
| Character_Potential_Get_Cube = 12397, | |
| BoardGame_Info = 12501, | |
| Bingo_Deck = 12509, | |
| Bingo_Info = 12510, | |
| Bingo_Start = 12511, | |
| PvP_HardCore_Event = 12632, | |
| PvP_HardCore_Event_1 = 12633, | |
| PvP_HardCore_Event_2 = 12634, | |
| PvP_HardCore_Event_3 = 12635, | |
| PvP_HardCore_Event_Check = 12636, | |
| MesoRanger = 12690, | |
| MesoRanger_Start = 12691, | |
| KaiserColorOrMorphChange = 12860, | |
| BoardGame_Start = 12896, | |
| MapleSchool_Start = 12915, | |
| MapleSchool_Chapter1 = 12916, | |
| MapleSchool_Chapter2 = 12918, | |
| MapleSchool_Chapter3 = 12920, | |
| MapleSchool_Chapter4 = 12922, | |
| MapleSchool_Chapter5 = 12924, | |
| MapleSchool_Chapter6 = 12926, | |
| MapleSchool_Chapter7 = 12928, | |
| MapleSchool_ClearCount = 12931, | |
| MapleSchool_Event = 12934, | |
| Event_MapleMuseumUI = 12935, | |
| Event_MapleMuseum = 12936, | |
| Event_MuseumKing_1 = 12937, | |
| Event_MuseumKing_2 = 12938, | |
| Event_MuseumKing_3 = 12939, | |
| Event_MapleMuseumReset = 12940, | |
| YutGame_Info_2012 = 12960, | |
| YutGame_Info_2012_History = 12961, | |
| YutGame_Achivement_2012 = 12962, | |
| YutGame_Start_2012 = 12963, | |
| _2012Fall_Weave = 12987, | |
| _2012Fall_SportsDay_TugOfWar = 13003, | |
| _2012Fall_SportsDay_GourdCrash = 13005, | |
| _2012HalloweenCandy = 13035, | |
| _2012HalloweenCandyReward = 13036, | |
| ActionHero = 13037, | |
| _2012HalloweenAnnocement = 13042, | |
| Indian_Achivement_2012 = 13160, | |
| ActionHero2 = 13174, | |
| SaveDamageSkinInfo = 13190, | |
| SaveDamageSkinList = 13191, | |
| Action_Achivement_2012 = 13225, | |
| Winter2012_Achievement = 13280, | |
| Attendance = 13309, | |
| Event_Lottery_Reward_Mon_1 = 13314, | |
| Event_Lottery_Reward_Mon_2 = 13315, | |
| Event_Lottery_Reward_Mon_3 = 13316, | |
| Event_Lottery_Reward_Tue_1 = 13317, | |
| Event_Lottery_Reward_Tue_2 = 13318, | |
| Event_Lottery_Reward_Tue_3 = 13319, | |
| Event_Lottery_Reward_Wed_1 = 13320, | |
| Event_Lottery_Reward_Wed_2 = 13321, | |
| Event_Lottery_Reward_Wed_3 = 13322, | |
| Event_Lottery_Reward_Thu_1 = 13323, | |
| Event_Lottery_Reward_Thu_2 = 13324, | |
| Event_Lottery_Reward_Thu_3 = 13325, | |
| Event_Lottery_Reward_Fri_1 = 13326, | |
| Event_Lottery_Reward_Fri_2 = 13327, | |
| Event_Lottery_Reward_Fri_3 = 13328, | |
| Event_Lottery_Reward_Sat_1 = 13329, | |
| Event_Lottery_Reward_Sat_2 = 13330, | |
| Event_Lottery_Reward_Sat_3 = 13331, | |
| Event_Lottery_Reward_Sun_1 = 13332, | |
| Event_Lottery_Reward_Sun_2 = 13333, | |
| Event_Lottery_Reward_Sun_3 = 13334, | |
| Event_Lottery_Reward_NextMon_1 = 13335, | |
| Event_Lottery_Reward_NextMon_2 = 13336, | |
| Event_Lottery_Reward_NextMon_3 = 13337, | |
| Event_Lottery_Mon = 13338, | |
| Event_Lottery_Tue = 13339, | |
| Event_Lottery_Wed = 13340, | |
| Event_Lottery_Thu = 13341, | |
| Event_Lottery_Fri = 13342, | |
| Event_Lottery_Sat = 13343, | |
| Event_Lottery_Sun = 13344, | |
| Event_Lottery_MonNext = 13345, | |
| Roulette_Roll_Count = 13378, | |
| Winter2012_Achievement_Start = 13500, | |
| BingoCassandra_Deck = 13504, | |
| BingoCassandra_Info = 13505, | |
| BingoCassandra_Start = 13506, | |
| GilSsam = 13518, | |
| MultiYutGiveUp = 13525, | |
| BigRabbit = 13579, | |
| Event_MuseumKingS2_1 = 13649, | |
| Event_MuseumKingS2_2 = 13650, | |
| Event_MuseumKingS2_3 = 13651, | |
| Event_MuseumKingS2_Reward_1 = 13652, | |
| Event_MuseumKingS2_RewardRecord = 13653, | |
| Event_MuseumKingS2_Reward_2 = 13655, | |
| Event_MuseumKingS2_Reward_3 = 13656, | |
| Event_MuseumKingS2_ChangeItem_1 = 13657, | |
| Event_MuseumKingS2_ChangeItem_2 = 13658, | |
| Event_MuseumKingS2_ChangeItem_3 = 13659, | |
| Maple10Ago = 13760, | |
| TenthAnniGiveUp = 13783, | |
| TenthAnniFirst = 13808, | |
| MapleGift = 13850, | |
| MapleMiniParty_Invite = 13885, | |
| MiniParty_Reward = 13888, | |
| Event_Name_Tag = 13902, | |
| BattleField_Invite = 13925, | |
| BattleField_Medal = 13927, | |
| BattleField_Reward = 13928, | |
| RhythmGame_Invite = 14025, | |
| MiniGame_SpaceMoonRabbit = 14192, | |
| MiniGame_Catapult = 14200, | |
| Catapult_Reward = 14203, | |
| _2013_Chuseok_Coin_Record_1st = 14228, | |
| _2013_Chuseok_Coin_Record_2nd = 14229, | |
| _2013_Halloween_Gamsper_Info = 14243, | |
| _2013_Halloween_Gamsper_MissionA = 14245, | |
| _2013_Capture_Flag = 14265, | |
| WORLD_TRANSFER_RECORD = 14280, | |
| GroupInvitationSaveMap = 14283, | |
| HundredBingoReward = 14284, | |
| _2013_Capture_Flag2 = 14286, | |
| _2013_Capture_Flag3 = 14287, | |
| WORLD_TRANSFER_RECORD_2ND = 14288, | |
| YnIFestival_GiveUp = 14290, | |
| OmokRenew_Cur = 14303, | |
| MemoryGame_2013_Result = 14307, | |
| TABG_Result = 14315, | |
| MYG_Result = 14319, | |
| OmokRenew_Record = 14323, | |
| MemoryGame_2013_Recode = 14324, | |
| WORLD_TRANSFER_RECORD_2015 = 14346, | |
| WORLD_TRANSFER_RECORD_2015_2ND = 14347, | |
| WORLD_TRANSFER_RECORDEX = 14356, | |
| TypingGameRecode = 14376, | |
| TypingGameMode = 14377, | |
| HundredOxQuizRecode = 14383, | |
| _2014_event_butterfly = 14410, | |
| Event_ForceAtom = 14417, | |
| Event_Name_Tag_2 = 14489, | |
| BattleField_2015_Invite = 14642, | |
| BattleField_2015_Medal = 14644, | |
| BattleField_2015_Result = 14645, | |
| DorajiPotRecord = 14755, | |
| PlantPotRecord1 = 14756, | |
| DorajiPotResult = 14759, | |
| _12TH_TRESURE = 14762, | |
| _12TH_TRESURE_RANK = 14767, | |
| DorajiPotRecord2 = 14775, | |
| MosterStory_2015_04_Episode = 14801, | |
| Secret_Diary_Rinforce = 14917, | |
| BingsooUpdateCheck = 14939, | |
| PremiumUserQuest_Reward2 = 14946, | |
| PremiumUserQuest_Reward3 = 14947, | |
| PremiumUserQuest_Reward4 = 14948, | |
| ToadsHammer_Tutorial = 14950, | |
| ToadsHammer_Help = 14951, | |
| HotTimeAbnormal = 14959, | |
| CowGame_Result = 14994, | |
| RP_CHARACTER_INDEX = 15008, | |
| RP_Sengoku_15017 = 15017, | |
| RP_Sengoku_15018 = 15018, | |
| RP_Sengoku_15019 = 15019, | |
| RP_Sengoku_15020 = 15020, | |
| RP_Sengoku_15021 = 15021, | |
| Chuseok_2015_Rabbit_Invite = 15059, | |
| Chuseok_2015_Mouse_Invite = 15067, | |
| PoloFrito_EagleHunting = 15141, | |
| PoloFrito_CourtshipDance = 15143, | |
| Halloween_2015_ActionHero_Invite = 15150, | |
| PoloFrito_FlameWolf_Dead = 15172, | |
| NewYearEventGuide = 15285, | |
| TradeKing_NPC_ItemInfo_Reset1 = 15317, | |
| TradeKing_NPC_ItemInfo_Reset2 = 15318, | |
| TradeKing_NPC_ItemInfo_Reset3 = 15319, | |
| TradeKing_NPC_ItemInfo_Reset4 = 15320, | |
| TradeKing_Item1 = 15321, | |
| TradeKing_Item2 = 15322, | |
| TradeKing_Item3 = 15323, | |
| TradeKing_Coin = 15324, | |
| TradeKing_Porter = 15325, | |
| TradeKing_Riding = 15326, | |
| WORLD_TRANSFER_RECORD_2016 = 15341, | |
| SaveDamageSkinBlockServerValue = 15353, | |
| _2016_NewYear_Sign_Event = 15384, | |
| StarEventRecord = 15410, | |
| MonsterBattle_Tutorial_QuickSlot = 17321, | |
| MonsterBattle_Tutorial_Capture = 17323, | |
| MonsterBattle_Tutorial_Wear_Equip = 17326, | |
| MonsterBattle_Tutorial_Reg_Skill = 17327, | |
| MonsterBattle_Tutorial_LevelUp = 17328, | |
| MonsterBattle_Tutorial_First_Battle = 17329, | |
| MonsterBattle_Tutorial_Ranking_UI_Open = 17330, | |
| MonsterBattle_Tutorial_QuickSlot_Ret = 17332, | |
| MonsterBattle_Tutorial_Capture_Ret = 17333, | |
| MonsterBattle_Tutorial_Wear_Equip_Ret = 17336, | |
| MonsterBattle_Tutorial_Reg_Skill_Ret = 17337, | |
| MonsterBattle_Tutorial_LevelUp_Ret = 17338, | |
| MonsterBattle_Tutorial_First_Battle_Ret = 17339, | |
| MonsterBattle_Tutorial_Ranking_UI_Open_Ret = 17340, | |
| CharSlotIncItemEvent_Count = 18001, | |
| RelaxEXP_Account = 18004, | |
| RenameCharacterEventItem_1 = 18026, | |
| RenameCharacterEventItem_2 = 18027, | |
| RenameCharacterEventItem_3 = 18054, | |
| IncubatorHotBonus = 18111, | |
| Maple10SignEvent = 18127, | |
| Cashshop_Vip = 18146, | |
| CashShop_Amount = 18155, | |
| Auction_Search = 18170, | |
| CashMileage_Charge = 18192, | |
| Auction_Register = 18195, | |
| Auction_Success = 18196, | |
| Auction_Premium = 18202, | |
| RenameCharacterEventItem_4 = 18222, | |
| _2013_Chuseok_Sign_Event = 18240, | |
| CoordinationContest_AccInfo = 18255, | |
| CoordinationContest_AccVote = 18257, | |
| CoordinationContest_AccInfo2 = 18303, | |
| UserResearch = 18326, | |
| StarPlanet_AttendanceAccount = 18363, | |
| CashMileage_Charge2 = 18364, | |
| StarPlanet_AttendanceRestore = 18369, | |
| FreezeAndHotEvent = 18416, | |
| Contents_Stamp_Book_Guild = 18418, | |
| Contents_Stamp_Book_Reinforce = 18420, | |
| Contents_Stamp_Hub2 = 18421, | |
| Contents_Stamp_Hub = 18426, | |
| Contents_Stamp_Book_Reward = 18427, | |
| EventBestFriend = 18428, | |
| MesoExchange_TradedCount = 18431, | |
| RenameCharacterEventItem_5 = 18496, | |
| MosterStory_2015_04 = 18498, | |
| URUS_ENTER = 18683, | |
| Soul_Party_Dungeon_InterCount = 18688, | |
| CashMileage_Earned_By_SPM_Charge = 18700, | |
| SPM_Attendance_Account = 18701, | |
| MonsterCollection_Record = 18821, | |
| PlatformerStage_TryInfo = 18838, | |
| PlatformerStage_Record_Bronze = 18874, | |
| PlatformerStage_Record_Silver = 18875, | |
| PlatformerStage_Record_Gold = 18876, | |
| PlatformerStage_EventInfo = 18884, | |
| ActiveNickSkillTimeLimited = 19019, | |
| Cygnus_Rebirth_Ereb = 20954, | |
| AranTutorial = 21001, | |
| AranCommand_State = 21770, | |
| Evan_Incubator = 22007, | |
| Evan_No_Egg = 22011, | |
| Evan_Glove = 22012, | |
| Evan_Promoted = 22130, | |
| Evan_Riding = 22402, | |
| WildHunter_Jaguar = 23008, | |
| FromFieldToPhantomShip = 25010, | |
| Light_Mage_Tutorial1 = 25500, | |
| Light_Mage_Tutorial2 = 25501, | |
| Light_Mage_Tutorial_Count = 25502, | |
| kaiser_Tutorial_Count = 25700, | |
| Kaiser_Tutorial1 = 25722, | |
| kaiser_Tutorial2 = 25723, | |
| kaiser_Tutorial3 = 25724, | |
| AngelicBurster_SoulRecharge_Tutorial = 25837, | |
| AngelicBurster_SoulRecharge_Tutorial_Count = 25838, | |
| JobSwap_Cost = 25946, | |
| MakingSkill = 25948, | |
| JobSwap_LastDay = 25957, | |
| BossArenaTotalInfo = 25960, | |
| BossArenaRecentlyPlayInfo = 25961, | |
| BossArenaEtcInfo = 25962, | |
| BossArenaTodayInfo = 25963, | |
| EliteMonsterCount = 25965, | |
| HyperUpgradeHelp = 25968, | |
| HyperUpgradeFatigue = 25974, | |
| BattleStatisticsHelp = 25976, | |
| GrowthHelperInfo = 25980, | |
| GuildPoint = 26011, | |
| GuildJoinReqeust = 26015, | |
| MesoExchange_Info = 26350, | |
| BUYLIMIT_RESET = 26351, | |
| MesoExchange_TradedPrice = 26353, | |
| Hyper_Upgrade_Event = 26362, | |
| DayOfMemoInGameSendCount = 26375, | |
| NaviFlying = 26422, | |
| NaviFlyingNPC = 26454, | |
| PremiumGuide = 26458, | |
| SoulCollection = 26467, | |
| CoordinationContest_Info = 26486, | |
| Soul_Dungeon_Init = 26491, | |
| CoordinationContest_Reg_PreEntry = 26497, | |
| CoordinationContest_Reward_PreEntry = 26498, | |
| CoordinationContest_Reward_PreVote = 26499, | |
| CoordinationContest_Reward_Vote = 26500, | |
| CoordinationContest_Reward_Evaluate = 26508, | |
| SoulEffect = 26535, | |
| Mannequin_0 = 26544, | |
| Mannequin_1 = 26545, | |
| PET_EVOLUTION = 26549, | |
| MesoExchange_TaxInfo = 26579, | |
| RenameCharacterLog = 26580, | |
| PigStick_MiniGame_Invite = 26587, | |
| Soul_Dungeon_Result_And_Rank = 26600, | |
| Soul_Dungeon_Mvp = 26604, | |
| RenameCharacterNewLog = 26606, | |
| MesoExchange_Discount_TaxRate_Buy1 = 26800, | |
| MesoExchange_Discount_TaxRate_Buy10 = 26809, | |
| MesoExchange_Discount_TaxPrice_Buy1 = 26810, | |
| MesoExchange_Discount_TaxPrice_Buy10 = 26819, | |
| MesoExchange_Discount_TaxRate_Sell1 = 26820, | |
| MesoExchange_Discount_TaxRate_Sell10 = 26829, | |
| MesoExchange_Discount_TaxPrice_Sell1 = 26830, | |
| MesoExchange_Discount_TaxPrice_Sell10 = 26839, | |
| MesoExchange_Bonus_Meso1 = 26840, | |
| MesoExchange_Bonus_Meso10 = 26849, | |
| MesoExchange_Bonus_MaplePoint1 = 26850, | |
| MesoExchange_Bonus_MaplePoint10 = 26859, | |
| MentoringMatchedList1 = 26906, | |
| MentoringMatchedList2 = 26907, | |
| ActivePremiumDamageSkin = 27022, | |
| HuntingMaster = 29400, | |
| HontaleSlayer = 29501, | |
| BabyBossSlayer = 29502, | |
| MedalReissue_Count = 29949, | |
| DailyRandomQuest = 30022, | |
| RootabyssReturnMap = 30028, | |
| Rootabyss = 30029, | |
| GhostParkClearCheck = 30200, | |
| New_Krease_Partner_1 = 31075, | |
| New_Krease_Partner_2 = 31077, | |
| New_Krease_Partner_3 = 31078, | |
| New_Krease_Partner_4 = 31079, | |
| New_Krease_Partner_5 = 31080, | |
| Cygnus_Clear = 31195, | |
| FPSMode_Success = 31359, | |
| AdventureJournal_Start_Adventurer = 32240, | |
| InvasionSupport_AttackSay = 32420, | |
| InvasionSupport_AttackWeapon = 32421, | |
| InvasionSupport_AttackEnd = 32422, | |
| InvasionSupport_BossKiller = 32423, | |
| InvasionSupport_BestAttacker = 32424, | |
| InvasionSupport_Count = 32425, | |
| Hekaton_Reward_Alarm = 32544, | |
| ItemLevelPoint = 32547, | |
| Hekaton_Reward = 32548, | |
| Hekaton_Entrance = 32550, | |
| Capture_the_flag_lap = 32581, | |
| DimensionLibrary = 32600, | |
| Spinoff_Prologue = 32700, | |
| Spinoff_Chapter1 = 32701, | |
| Spinoff_Chapter2 = 32702, | |
| Spinoff_Chapter3 = 32703, | |
| Spinoff_Chapter4 = 32704, | |
| Spinoff_Chapter5 = 32705, | |
| Spinoff_NewIcon = 32719, | |
| Spinoff_Dungeon_First_Direction = 33100, | |
| Blockbuster_BlackHeaven = 33120, | |
| Blockbuster_Alarm = 33129, | |
| Blockbuster_Progress = 33130, | |
| Blockbuster_BlackHeaven_SSFS = 33180, | |
| MazeInfo_BlackHeaven = 33213, | |
| MazeRecord_BlackHeaven = 33214, | |
| MazeArea_BackHeaven = 33215, | |
| BlackHeaven_Partner_NineHeart_1 = 33225, | |
| BlackHeaven_Partner_NineHeart_2 = 33226, | |
| BlackHeaven_Partner_NineHeart_3 = 33227, | |
| BlackHeaven_Partner_NineHeart_4 = 33228, | |
| BlackHeaven_Partner_Sigmund = 33248, | |
| BlackHeaven_Partner_Helena = 33249, | |
| Blockbuster_BlackHeaven_MGC = 33316, | |
| Spinoff_Chapter6 = 33530, | |
| URUS_SKILL = 33551, | |
| URUS_RETURN_MAP = 33553, | |
| Urus_Result_TimeAssist = 33554, | |
| Urus_Result_Damage = 33555, | |
| Urus_Result_ScoreGrade = 33556, | |
| Urus_Result_Rank1 = 33557, | |
| Urus_Result_Rank2 = 33558, | |
| Urus_Result_Rank3 = 33559, | |
| Urus_Result_Rank4 = 33560, | |
| Urus_Result_KingList = 33561, | |
| Urus_Medal_Info = 33562, | |
| Urus_Penalty = 33565, | |
| Urus_Pre = 33565, | |
| Urus_More_LogInfo = 33590, | |
| Urus_Team_HP = 33800, | |
| Urus_Team_CatchSuccess = 33801, | |
| Urus_Team_CatchFail = 33802, | |
| Urus_Team_Rescue = 33803, | |
| Urus_Team_TouchMe = 33804, | |
| Urus_Team_GrabSuccess = 33805, | |
| Urus_Team_GrabFail = 33806, | |
| Urus_Team_Clear = 33807, | |
| Urus_Team_PartArm = 33808, | |
| Urus_Team_PartShoulder = 33809, | |
| Urus_Team_PartHead = 33810, | |
| Urus_Team_DamageTaken = 33811, | |
| Urus_Team_HitAss = 33812, | |
| Urus_Team_HitEnv = 33813, | |
| Urus_User_CatchCount = 33850, | |
| Urus_User_CatchRate = 33851, | |
| Urus_User_RescueCount = 33852, | |
| Urus_User_RescueRate = 33853, | |
| Urus_User_TouchMe = 33854, | |
| Urus_User_DealRate = 33855, | |
| Urus_User_Heal = 33856, | |
| Urus_User_Finish = 33857, | |
| Urus_User_HitEnv = 33858, | |
| Urus_User_DamateTaken = 33859, | |
| SwitchRP_LastIndex = 33900, | |
| SwitchRP_ACT1 = 33901, | |
| SwitchRP_ACT2 = 33902, | |
| SwitchRP_ACT3 = 33903, | |
| SwitchRP_ACT4 = 33904, | |
| HofM_Alarm = 33917, | |
| PlatformerStage_EnterInfo = 34502, | |
| Hidden_Tutorial_Teleport = 38997, | |
| UserResearchMap = 39000, | |
| First_TearOfGoddess = 40112, | |
| Second_TearOfGoddess = 40210, | |
| Third_TearOfGoddess = 40310, | |
| Last_TearOfGoddess = 40705, | |
| Zero_ACT_START = 40900, | |
| Zero_ACT_FREE = 40980, | |
| Zero_Lucky_Equip = 41907, | |
| ZeroTagTutorial = 41929, | |
| HazyStoneTimer = 42000, | |
| TheSeedTowerRanking = 42002, | |
| ABYSSTOWER_FLOOR = 42002, | |
| ABYSSTOWER_POINT = 42003, | |
| SeedTowerRankingSave = 42102, | |
| SeedTowerWeekSave = 42106, | |
| StarPlanet_HundredRps = 43600, | |
| StarPlanet_HundredRps_JoinUser = 43601, | |
| StarPlanet_HundredBingo = 43602, | |
| StarPlanet_HundredBingo_JoinUser = 43603, | |
| StarPlanet_OneCard_Customizing = 43604, | |
| StarPlanet_TypingGame_Customizing = 43605, | |
| StarPlanet_TABG_Customizing = 43606, | |
| StarPlanet_Yut_Customizing = 43607, | |
| StarPlanet_TypingGameSolo_Customizing = 43608, | |
| StarPlanet_Matching_ExceptUser1 = 43609, | |
| StarPlanet_Matching_ExceptUser2 = 43610, | |
| StarPlanet_Matching_LastMatching = 43611, | |
| StarPlanet_WorldEvent_Reward = 43618, | |
| StarPlanet_TypingGame = 43621, | |
| StarPlanet_TypingGameSolo = 43622, | |
| StarPlanet_TABGResult = 43623, | |
| StarPlanet_YutResult = 43624, | |
| StarPlanet_SuperYutResult = 43625, | |
| StarPlanet_OneCard = 43626, | |
| StarPlanet_OneCardResult = 43627, | |
| StarPlanet_GSRPSGame = 43628, | |
| StarPlanet_MiniGame = 43629, | |
| StarPlanet_MiniGamePlay = 43630, | |
| StarPlanet_Enter_ReturnMap = 43636, | |
| StarPlanet_LastFieldID = 43640, | |
| StarPlanet_OPGameScore = 43642, | |
| StarPlanet_MiniGame_Rating_1 = 43643, | |
| StarPlanet_MiniGame_Rating_2 = 43644, | |
| StarPlanet_PointInfo = 43710, | |
| StarPlanet_UI = 43711, | |
| StarPlanet_RewardRecv = 43724, | |
| StarPlanet_RewardInfo = 43727, | |
| StarPlanet_MaxPoint = 43728, | |
| StarPlanet_HundredRps_PlayCount = 43737, | |
| StarPlanet_HundredBingo_PlayCount = 43738, | |
| StarPlanet_ExpBuff = 43740, | |
| StarPlanet_RelaxExp = 43740, | |
| StarPlanet_Ranking = 43742, | |
| StarPlanet_GradeUp_G03 = 43756, | |
| StarPlanet_GradeUp_G04 = 43757, | |
| StarPlanet_GradeUp_G05 = 43758, | |
| StarPlanet_GradeUp_G06 = 43759, | |
| StarPlanet_GradeUp_G07 = 43760, | |
| StarPlanet_GradeUp_G08 = 43761, | |
| StarPlanet_GradeUp_G09 = 43762, | |
| StarPlanet_GradeUp_G10 = 43763, | |
| StarPlanet_GradeUp_G11 = 43764, | |
| StarPlanet_ShiningStar = 43769, | |
| StarPlanet_DanceEndTime = 43775, | |
| StarPlanet_Omok_Record = 43782, | |
| StarPlanet_Omok_CurrentRet = 43783, | |
| StarPlanet_Attendance = 43785, | |
| StarPlanet_WorldEventParticipant = 43786, | |
| StarPlanet_BuffLog_Start = 43790, | |
| StarPlanet_BuffLog_End = 43799, | |
| StarPlanet_GroupDance = 43821, | |
| StarPlanet_GroupDance_MaxSuccess = 43830, | |
| StarPlanet_YutResultForTime = 43833, | |
| StarPlanet_GSRPSGameForTime = 43834, | |
| StarPlanet_TypingGameSoloForTime = 43835, | |
| StarPlanet_TypingGameForTime = 43836, | |
| StarPlanet_TABGResultForTime = 43837, | |
| StarPlanet_OneCardResultForTime = 43838, | |
| StarPlanet_SuperYutResultForTime = 43839, | |
| BattlePvP_ResultForTime = 43840, | |
| StarPlanet_SuperYutSkill = 43853, | |
| BattlePvP_Result = 43860, | |
| STARPLANET_PLAY_LOG = 47500, | |
| STARPLANET_ACT_LOG = 47501, | |
| STARPLANET_SOCIAL_LOG = 47502, | |
| STARPLANET_SYSTEM_LOG = 47503, | |
| YUT_DICE = 47701, | |
| YUT_CATCH = 47702, | |
| TABG_DICE = 47706, | |
| TABG_BOSS_CELL = 47707, | |
| ONECARD_DAMAGED = 47711, | |
| ONECARD_LOG = 47712, | |
| TYPINGGAME_LOG = 47716, | |
| TYPINGGAME_SKILL = 47717, | |
| BATTLEPVP_CHAR_SEL = 47721, | |
| SUPER_YUT_DICE = 47726, | |
| SUPER_YUT_CATCH = 47727, | |
| SUPER_YUT_SKILL_YUT = 47728, | |
| SUPER_YUT_SKILL_PIECE = 47729, | |
| SUPER_YUT_NO_USE_SKILL = 47730, | |
| SUPER_YUT_USE_ALLSKILL = 47731, | |
| RandomMission = 49000, | |
| RunnerGame = 53448, | |
| } | |
| enum Phrase { | |
| None = 0, | |
| List = 1, | |
| Func0 = 2, | |
| Func1 = 3, | |
| Func2 = 4, | |
| Func3 = 5, | |
| Reward = 6, | |
| ItemIcon = 7, | |
| ItemIcon_Outline = 8, | |
| ItemIcon_Secret = 9, | |
| SkillIcon = 10, | |
| Canvas = 11, | |
| Canvas_Outline = 12, | |
| Canvas_ProgressBar = 13, | |
| PartyQuestKeyword = 14, | |
| TimeLimitQuest = 15, | |
| DailyPlayQuest = 16, | |
| QuestSummary = 17, | |
| QuestOrder = 18, | |
| Text = 19, | |
| Illustration = 20, | |
| IllustEmotion = 21, | |
| ForceNextNpc = 22, | |
| MirrorDungeon = 23, | |
| FontName = 24, | |
| FontSize = 25, | |
| FontColor = 26, | |
| IllustAvatarEmotion = 27, | |
| } | |
| enum CT { | |
| TEXT = 0, | |
| ICON = 1, | |
| DRAW = 2, | |
| FUNC = 3, | |
| SELECT = 4, | |
| ILLUFACEEMOTION = 5, | |
| FORCESELECTNEXTNPC = 6, | |
| ILLUAVATAREMOTION = 7, | |
| } | |
| GetPhraseType | |
| L 1 Show list #L0#blah#l | |
| E 2 Activate 'equipment' button flashing, 'Func0' | |
| I 3 Activate 'Inventory' button flashing, 'Func1' | |
| S 4 Activate 'Stats' button flashing, 'Func2' | |
| K 5 Activate 'Skills' button flashing, 'Func3' | |
| w 6 Toggles 'bIsReward' in AnalyzeText, 'Reward' | |
| i 7 item icon | |
| e 9 'secret' item icon | |
| s 10 skill icon | |
| f 11 file ref (canvas) | |
| F 11 file ref | |
| j 14 PartyQuestKeyword | |
| v 7 item icon | |
| W 17 QuestSummary | |
| B 13 Progress bar | |
| D 16 DailyPlayQuest | |
| Q 15 TimeLimitQuest ? | |
| --- KMST | |
| questorder 18 For chained quests? See 'Quest Order', #questorder 1# ? | |
| illu 20 #illu Lv3# ? Illustration | |
| face 21 IllustEmotion #face 0# ? | |
| avatar 27 IllustAvatarEmotion #avatar chu# | |
| npc 22 ForceNextNpc | |
| fn 24 FontName (!) | |
| fs 25 FontSize (!) | |
| fc 26 FontColor (!) | |
| MD 23 Mirror Dungeon image? | |
| default 19 | |
| GetParamNo's | |
| q skill | |
| t item Something going on with : | |
| u | |
| x quest bonus exp? (shows 0% in most cases) | |
| y ??? | |
| p npc ref | |
| M quest mob name | |
| R get quest? needs more info | |
| a quest mob count? | |
| c item count | |
| h playerref | |
| m mapref | |
| o mobref | |
| Party stuff: | |
| [IDX6348] #jrank# | |
| [IDX6349] #jtry# | |
| [IDX6350] #jvic# | |
| [IDX6351] #jcmp# | |
| [IDX6352] #jlose# | |
| [IDX6353] #jdraw# | |
| [IDX6354] #jmin# | |
| [IDX6355] #jgvup# | |
| [IDX6356] #jhave | |
| [IDX6357] #jsec# | |
| [IDX6358] #jpop# | |
| [IDX6359] #jpopgap# | |
| [IDX6360] #jlevel# | |
| [IDX6361] #jscnt# | |
| [IDX6362] #jcmpcnt# | |
| [IDX6363] #jgaugePqS# | |
| [IDX6364] #jgaugeQCnt# | |
| [IDX6365] #jgaugeDays# | |
| [IDX6366] #jgaugePop# | |
| [IDX6367] #jgaugeHunt# | |
| [IDX6368] #jperPqS# | |
| [IDX6369] #jperQCnt# | |
| [IDX6370] #jperDays# | |
| [IDX6371] #jperPop# | |
| [IDX6372] #jperHunt# | |
| Color stuff (nColor in AnalyzeText) | |
| character color extra | |
| k 0 (4 if white based) | |
| r 1 Alias: Cred | |
| g 2 Alias: Cgreen | |
| b 3 Alias: Cblue | |
| d 5 Alias: Cviolet | |
| y 6 Alias: Cgray | |
| Cyellow 7 | |
| Formatting | |
| e Set text to bold | |
| n Set text to not bold | |
| Extra | |
| l Stop select/menu/list item (-1) | |
| - Quest Order | |
| When the text is analyzed (CTextAnalyzer::AnalyzeText), nQuestCurOrder is set to 1. | |
| If the nQuestID passed to the AnalyzeText function is not zero, | |
| the QuestDemand is loaded through CQuestMan::GetCompleteDemand using this nQuestID | |
| if QuestDemand is not null, | |
| the nQuestCurOrder is set using get_quest_cur_order function. This function | |
| uses an argument bVipAccount, which is read off the User bitflags (set on login). | |
| get_quest_cur_order function is pretty complex. It calls get_quest_last_order, | |
| which will get the demand of the quest (GetCompleteDemand) and will try to | |
| figure out which quest is first: | |
| func get_quest_last_order(questId): | |
| demand = CQuestMan::GetCompleteDemand(questId) | |
| a = 1 | |
| a = max(a, demand.nCharInfoOrder) | |
| foreach demand.PrecedeQuest as QuestRecord qr: | |
| a = max(a, qr.nOrder) | |
| foreach demand.DemandItem as ItemInfo item: | |
| a = max(a, item.nOrder) | |
| foreach demand.DemandMob as MobInfo mob: | |
| a = max(a, mob.nOrder) | |
| if demand.Info_CondContent.length > 0: | |
| // Possible exception here, not null checked (others are) | |
| foreach demand.Info_Order as Long unk | |
| a = max(a, unk) | |
| foreach demand.NpcSpeech as QuestDemand::NpcSpeech words: | |
| a = max(a, words.nOrder) | |
| return a | |
| func get_quest_cur_order(questId, npcTemplateId, characterData, basicStat, bs, vipAccount): | |
| last_order = get_quest_last_order(questId) | |
| vipGrade = 0 // Unset | |
| if last_order >= 1: | |
| a = 1 | |
| b = 0 // Unset | |
| while CQuestMan::Instance()->CheckCompleteDemand(questId, npcTemplateId, characterData, basicStat, vipAccount, vipGrade) == false: | |
| a += 1 | |
| if a > b: | |
| return b | |
| last_order = a | |
| return last_order | |
| if, while parsing, GetPhraseType 18(questorder) is found: | |
| if atoi(phraseText) >= nQuestCurOrder: | |
| add_text(18, phraseText) | |
| func add_text(phraseType, phraseText): | |
| // add_text is not the actual name, but its referred to by another func | |
| line = lines.add() | |
| line.lineNumber = global.lineNumber // Ehh.. something.. not very interesting | |
| line.select = nSelect // Set by #L and reset by #l | |
| line.bLineChange = 0 | |
| // prepare some stuff for rendering, eg line width and size | |
| // ... | |
| // skip | |
| if phraseType == QuestOrder: | |
| phraseText = "???" | |
| switch phraseType: | |
| case List: | |
| line.type = Select | |
| if !bSkipListIcon: | |
| line.width = 18 | |
| nSelect = GetParamNo(phraseText) | |
| line.select = nSelect | |
| do_next(phraseType, phraseText) | |
| break | |
| case Func0: | |
| line.type = Func | |
| line.funcCode = 0 | |
| do_next(phraseType, phraseText) | |
| break | |
| case Func1: | |
| line.type = Func | |
| line.funcCode = 1 | |
| do_next(phraseType, phraseText) | |
| break | |
| case Func2: | |
| line.type = Func | |
| line.funcCode = 2 | |
| do_next(phraseType, phraseText) | |
| break | |
| case Func3: | |
| line.type = Func | |
| line.funcCode = 3 | |
| do_next(phraseType, phraseText) | |
| break | |
| case ItemIcon: | |
| case ItemIcon_Outline: | |
| case ItemIcon_Secret: | |
| line.type = Icon | |
| itemId = GetParamNo(phraseText) | |
| if phraseType == ItemIcon_Secret: | |
| itemId = CheckSecretItemID(itemId) | |
| if phraseText.contains(':'): | |
| line.itemNo = itemId | |
| else: | |
| line.itemNo = 0 // Make hoverable? | |
| itemName = CItemInfo::GetItemName(itemId) | |
| line.text = itemName | |
| if line.text.length > 0: | |
| testerText = "[%d]%s" % (itemId, line.text) | |
| userText = line.text | |
| line.text = CWvsContext::MakeHelpStrings(userText, testerText) // Adds the itemid infront of the name when tester | |
| itemIcon = CItemInfo::GetItemIcon(itemId, bWithShadow: 1, bDifferent: 0, bIgnoreBAEmblem: 0, pItem: 0) | |
| if phraseType == ItemIcon: | |
| line.icon = itemIcon | |
| else: | |
| line.icon = GetOutlineCanvas(itemIcon) | |
| line.width = line.icon.Getwidth() | |
| line.height = line.icon.Getheight() | |
| line.reward = bReward | |
| line.itemUnrelease = phraseText.contains('U') | |
| do_next(phraseType, phraseText) | |
| break | |
| case SkillIcon: | |
| skillId = GetParamNo(phraseText) | |
| skillInfo = CSkillInfo::GetSkill(skillId) | |
| if skillInfo != null: | |
| line.type = Icon | |
| line.text = skillInfo.name | |
| line.icon = skillInfo.GetIconCanvas() | |
| CWvsContext::DrawForceInfoIcon(line.icon, skillId) // If the skill has a force icon, render it on top. | |
| line.width = line.icon.Getwidth() | |
| line.height = line.icon.Getheight() | |
| do_next(phraseType, phraseText) | |
| break | |
| case Canvas: | |
| case Canvas_Outline: | |
| line.type = Draw | |
| image = IWzResMan::GetObjectA(phraseText) | |
| // No null check! | |
| if phraseType == Canvas: | |
| line.icon = image | |
| else: | |
| line.icon = GetOutlineCanvas(image) | |
| line.width = line.icon.Getwidth() | |
| line.height = line.icon.Getheight() | |
| do_next(phraseType, phraseText) | |
| break | |
| case Illustration: | |
| level = 0 | |
| key = '' | |
| if phraseText.contains('Lv'): | |
| level = atoi(phraseText.substr(phraseText.find('Lv'))) // Converts 'Lv12345' to 12345 | |
| if phraseText.contains('illu'): | |
| key = phraseText.substr(phraseText.find('illu')) | |
| atoi(key) // This is done, but value is not saved? | |
| if !key.empty: | |
| line.icon = MakeIllustration(key, level) | |
| if line.icon == null: | |
| throw exception | |
| line.type = Draw | |
| line.width = line.icon.Getwidth() | |
| line.height = line.icon.Getheight() | |
| do_next(phraseType, phraseText) | |
| break | |
| case IllustEmotion: | |
| // So this illustration thing can show emotion? wow | |
| line.type = IlluFaceEmotion | |
| if phraseText.contains('face'): | |
| line.select = atoi(phraseText.substr(phraseText.find('face'))) | |
| do_next(phraseType, phraseText) | |
| break | |
| case IllustAvatarEmotion: | |
| line.type = IlluAvatarEmotion | |
| emotion_code = 0 | |
| if phraseText.contains('avatar'): | |
| emotion_name = phraseText.substr(phraseText.find('avatar')) | |
| emotion_code = get_emotion_code_from_name(emotion_name) | |
| line.select = max(emotion_code, 0) | |
| do_next(phraseType, phraseText) | |
| break | |
| case ForceNextNpc: | |
| line.type = ForceSelectNextNpc | |
| if phraseText.contains('npc'): | |
| line.forceNpc = atoi(phraseText.substr(phraseText.find('npc'))) | |
| do_next(phraseType, phraseText) | |
| break | |
| case MirrorDungeon: | |
| // Renders the name of the mirror dungeon... | |
| mdStr = phraseText.substr(phraseText.find('MD')) | |
| ID = 'String/mirrorDungeon.img/%s' % (mdStr) | |
| object = IWzResMan::GetObjectA(ID) | |
| if object != null: | |
| line.text = object.Getitem('name') | |
| line.type = Text | |
| line.font = pCurFont | |
| line.width = font.CalcTextWidth(line.text) | |
| line.height = font.GetfullHeight() | |
| line.reward = bIsReward | |
| do_next(phraseType, phraseText) | |
| break | |
| case Canvas_ProgressBar: | |
| line.type = Canvas | |
| amount = GetParamNo(phraseText) | |
| amount = max(min(100, amount), 10) // between 10 and 100 | |
| object = IWzResMan::GetObjectA('UI/Login.img/Notice/Loading/bar/%d' % (amount)) // Im not kidding, they use the login bar... | |
| canvas = IWzCanvas::Create | |
| canvas.Copy(0, 0, object, 0) // Copy the image over... | |
| line.icon = canvas | |
| line.width = line.icon.Getwidth() | |
| line.height = line.icon.Getheight() | |
| do_next(phraseType, phraseText) | |
| break | |
| case PartyQuestKeyword: | |
| key = phraseText.substr(2) | |
| if phraseText.contains('@'): | |
| atSignPos = key.find('@') | |
| phraseQuestId = key.substr(0, atSignPos) | |
| key = key.substr(atSignPos + 1) | |
| key += '#' | |
| // TODO: extend this code. its pretty huge. | |
| case TimeLimitQuest: | |
| orig = phraseText.substr(2) | |
| CQuestMan::IsRandomMissionQuest(nQuestID) // Discarded... | |
| expireTime = CharacterData::GetQuestExpireTime(nQuestID) | |
| actualTime = get_field()->GetCorrectTime() | |
| timeDiff = expireTime - actualTime | |
| textValue = 0 | |
| switch orig: | |
| case 'daylimit': textValue = timeDiff / (24 * 60 * 60); break | |
| case 'hourlimit': textValue = timeDiff / (60 * 60) % 24; break | |
| case 'minlimit': textValue = timeDiff / 60 % 60; break | |
| case 'seclimit': textValue = timeDiff % 60; break | |
| line.text = '%d' % (textValue) | |
| if pCurFont == null: | |
| // Why does nexon check for null here?? | |
| line.font = get_basic_font(FONT_BASIC_BLACK) | |
| else: | |
| line.font = pCurFont | |
| line.width = font.CalcTextWidth(line.text) | |
| line.height = font.GetfullHeight() | |
| line.reward = bIsReward | |
| do_next(phraseType, phraseText) | |
| break | |
| case DailyPlayQuest: | |
| name = phraseText.substr(2) | |
| ptrData = CharacterData::GetQuestPlayTimeRecord(nQuestID) | |
| time = ptrData.PlayTime | |
| if ptrData.done: | |
| time = CQuestMan::GetQuestDailyPlayMinTime(nQuestID) | |
| textValue = 0 | |
| switch name: | |
| case 'day': textValue = time / (24 * 60 * 60); break | |
| case 'hour': textValue = time / (60 * 60) % 24; break | |
| case 'min': textValue = time / 60 % 60; break | |
| case 'sec': textValue = time % 60; break | |
| case 'daylimit': | |
| textValue = CQuestMan::GetQuestTimeLimit2(nQuestID) / 24 / 60 / 60 | |
| textValue *= 0.9 | |
| break | |
| case 'count': textValue = ptrData.DoneCount; break | |
| line.text = '%d' % (textValue) | |
| if pCurFont == null: | |
| // Why does nexon check for null here?? | |
| line.font = get_basic_font(FONT_BASIC_BLACK) | |
| else: | |
| line.font = pCurFont | |
| line.width = font.CalcTextWidth(line.text) | |
| line.height = font.GetfullHeight() | |
| line.reward = bIsReward | |
| do_next(phraseType, phraseText) | |
| break | |
| case QuestSummary: | |
| // Options: | |
| // basic, prob, reward, select, startcondition | |
| imageName = phraseText.substr(2) | |
| ID = 'UI/UIWindow2.img/Quest/quest_info/summary_icon/%s' % (imageName) | |
| image = IWzResMan::GetObjectA(ID) | |
| line.icon = image | |
| line.width = line.icon.Getwidth() | |
| line.height = line.icon.Getheight() | |
| line.reward = bIsReward | |
| do_next(phraseType, phraseText) | |
| break | |
| case None: | |
| case Text: | |
| if phraseType == Text: | |
| paramNo = GetParamNo(phraseText) | |
| switch phraseText[1]: | |
| case 'h': | |
| charname = CWvsContext::GetCharacterName() | |
| // Korean text additions | |
| if phraseText.length >= 3: | |
| switch phraseText[2]: | |
| case '1': charname = Util::AddJosa_EUN(charname); break | |
| case '2': charname = Util::AddJosa_I(charname); break | |
| case '3': charname = Util::AddJosa_EUL(charname); break | |
| line.text = charname | |
| break | |
| case 'o': | |
| // mob string | |
| line.text = get_labeled_string(paramNo, "name") | |
| break | |
| case 'e': | |
| case 't': | |
| if phraseText[1] == 'e': | |
| itemId = CheckSecretItemID(paramNo) | |
| else: | |
| itemId = paramNo | |
| line.text = CItemInfo::GetItemName(itemId) | |
| if phraseText.contains(':'): | |
| line.itemNo = itemId | |
| else: | |
| line.itemNo = 0 // Make hoverable? | |
| itemName = CItemInfo::GetItemName(itemId) | |
| line.text = itemName | |
| if line.text.length > 0: | |
| testerText = "[%d]%s" % (itemId, line.text) | |
| userText = line.text | |
| line.text = CWvsContext::MakeHelpStrings(userText, testerText) // Adds the itemid infront of the name when tester | |
| break | |
| case 'z': | |
| // Maybe backwards compatible with old inventory system? | |
| // The code is basically the same... | |
| itemId = paramNo | |
| line.text = CItemInfo::GetItemName(itemId) | |
| if line.text.length > 0: | |
| testerText = "[%d]%s" % (itemId, line.text) | |
| userText = line.text | |
| line.text = CWvsContext::MakeHelpStrings(userText, testerText) // Adds the itemid infront of the name when tester | |
| break | |
| case 'p': | |
| // npc string | |
| line.text = get_labeled_string(paramNo, "name") | |
| break | |
| case 'm': | |
| // map string | |
| line.text = CItemInfo::GetMapString(paramNo, "mapName") | |
| break | |
| case 'q': | |
| skillIdStr = '%07d' % (paramNo) | |
| line.text = get_labeled_string(skillIdStr, "name") | |
| break | |
| case 'c': | |
| line.text = _Int2Str(CWvsContext::GetItemCount(paramNo)) | |
| break | |
| case 'a': | |
| line.text = CWvsContext::GetQuestMobCount(paramNo) // paramNo == questid. Also, it already returns a string... | |
| break | |
| case 'M': | |
| line.text = CWvsContext::GetQuestMobName(paramNo) // paramNo == Quest Record Key | |
| break | |
| case 'x': | |
| line.text = CWvsContext::GetQuestBonusEXP(paramNo) // paramNo == Quest Record Key | |
| break | |
| case 'y': | |
| // Reads a property from the QuestInfo.img/questid/N | |
| // Or N@ | |
| questPropId = _Int2Str(paramNo) | |
| prop = IWzResMan::GetObjectA('Quest/QuestInfo.img/%d/%s' % (nQuestID, questPropId)) | |
| if prop != null: | |
| // If '@' is after the ID, we do something special | |
| // Options are: 0@, 1@, 2@, 3@ | |
| // Additionally, : can be appended to print the time...? otherwise only the date | |
| if phraseText[2] == '@': | |
| printTime = phraseText.contains(':') | |
| switch phraseText[1]: | |
| case '0': line.text = CQuestMan::GetStartDate(nQuestID, printTime); break | |
| case '1': line.text = CQuestMan::GetEndDate(nQuestID, printTime); break | |
| // Yes, these two are the same. I'm not sure why | |
| case '2': line.text = CQuestMan::GetStartDate(nQuestID, printTime); break | |
| case '3': line.text = CQuestMan::GetEndDate(nQuestID, printTime); break | |
| else: | |
| line.text = prop.Getitem('name') // ??? | |
| else: | |
| line.text = '.' | |
| break | |
| case 'u': | |
| // Get quest status | |
| questId = paramNo | |
| questState = 0 | |
| if CharacterData::IsQuestInProgress(questId): | |
| questState = 1 | |
| else if CharacterData::GetQuestComplete(questId) != null: | |
| questState = 2 | |
| switch questState: | |
| case 0: line.text = 'not started'; break // Not sure, korean... | |
| case 1: line.text = 'in progress'; break // Not sure, korean... | |
| case 2: line.text = 'complete'; break // Not sure, korean... | |
| break | |
| case 'R': | |
| exPos = phraseText.find('Ex') | |
| if !phraseText.contains('Ex'): | |
| questData = CharacterData::GetQuest(paramNo) // Get quest data for questid (paramNo) | |
| if questData == null: | |
| line.text = '(empty)' | |
| else: | |
| line.text = questData | |
| else: | |
| // #R1234Ex# | |
| questId = atoi(phraseText.substr(2, exPos)) | |
| // #R1234ExRef9999# | |
| // Ref is a quest id | |
| refPos = phraseText.find('Ref') | |
| refStr = phraseText.substr(refPos + 3) | |
| refId = atoi(refStr) | |
| stuffBetweenExAndRef = phraseText.substr(exPos, refPos - exPos) | |
| name = '' | |
| if !stuffBetweenExAndRef.empty: | |
| // #R1234Ex5678Ref9999# , what a mess | |
| // Reference for the value | |
| name = CharacterData::GetQuestEx(questId, stuffBetweenExAndRef) | |
| if name.empty: | |
| name = '0' | |
| demand = CQuestMan::GetCompleteDemand(refId) | |
| if demand == null: | |
| line.text = '(error)' | |
| else: | |
| infoId = 0 | |
| foreach demand.info as QuestInfo info | |
| if demand.Info_ExVariable[infoId] == name: | |
| break | |
| infoId += 1 | |
| if demand.InfoCond[infoId] != 0: | |
| line.text = name | |
| else if EqualsIgnoreCase(name, demand.Info[infoId]): | |
| line.text = 'unfinished' // 미완 | |
| else | |
| line.text = 'finished' // 완료 | |
| // End of switch | |
| if pCurFont == null: | |
| // Why does nexon check for null here?? | |
| line.font = get_basic_font(FONT_BASIC_BLACK) | |
| else: | |
| line.font = pCurFont | |
| line.width = font.CalcTextWidth(line.text) | |
| line.height = font.GetfullHeight() | |
| line.reward = bIsReward | |
| do_next(phraseType, phraseText) | |
| break | |
| default: | |
| do_next(phraseType, phraseText) | |
| break | |
| else: // not Text, None | |
| line.text = phraseText | |
| case | |
| func get_emotion_code_from_name(name): | |
| list = [ | |
| "blink", | |
| "hit", | |
| "smile", | |
| "troubled", | |
| "cry", | |
| "angry", | |
| "stunned", | |
| "vomit", | |
| "oops", | |
| "cheers", | |
| "chu", | |
| "wink", | |
| "pain", | |
| "glitter", | |
| "blaze", | |
| "shine", | |
| "love", | |
| "despair", | |
| "hum", | |
| "bowing", | |
| "hot", | |
| "dam", | |
| // Repeated.. for some reason... | |
| "vomit", | |
| "oops", | |
| "cheers", | |
| "chu", | |
| "wink", | |
| "pain", | |
| "glitter", | |
| "blaze", | |
| "shine", | |
| "love", | |
| "despair", | |
| "hum", | |
| "bowing", | |
| "hot", | |
| "dam", | |
| "qBlue" | |
| ] | |
| return list.find(name) | |
| func CheckSecretItemID(itemId): | |
| questItemId = GetQuestItemId(itemId / 10, itemId % 10) | |
| // Check if the user already has this item in the inventory | |
| // Does not work for cash items (inv 5) | |
| if IsExist(questItemId): | |
| return questItemId | |
| else: | |
| return 3800088 | |
| func GetQuestItemId(questId, num): | |
| demand = GetCompleteDemand(questId) | |
| if demand == null || num < 1 || demand.length < num: | |
| return 0 | |
| return demand[num].ItemId | |
| func do_next(phraseType, phraseText): | |
| GetPhrase() | |
| func GetQuestMobcount(id): | |
| questId = id / 10 | |
| questMobDemandIdx = id % 10 | |
| id %= 10 | |
| qrStr = chardata.QuestRecord[id] | |
| if qrStr != null: | |
| count = 0 | |
| qrStrLen = qrStr.length | |
| if qrStrLen >= 3 * questMobDemandIdx: | |
| // Get the mob count, max 999 mobs | |
| qrStr = qrStr.substr(3 * questMobDemandIdx - 3, 3) | |
| count = qrStr != null ? atoi(qrStr) : 0 | |
| demand = GetCompleteDemand(questId) | |
| mobDemand = demad.DemandMob[questMobDemandIdx] | |
| return "%d / %d" % (count, mobDemand) | |
| else: | |
| return "" | |
| func GetQuestMobName(questRecordKey): | |
| info = _GetQuestValue(questRecordKey) | |
| if info.MobID == 0: | |
| return "" | |
| return get_labeled_string(info.MobID, "name") | |
| func _GetQuestValue(questRecordKey): | |
| qrStr = chardata.QuestRecord[questRecordKey] | |
| result = CharacterData::SELECTEDMOB::Decode(qrStr) | |
| return result | |
| func CharacterData::SELECTEDMOB::Decode(questRecordValue): | |
| result = {} | |
| result.MobID = 0 | |
| result.Abs = 0 | |
| result.BonusEXP = 0 | |
| elems = questRecordValue.split('/') | |
| if elems.length >= 3: | |
| result.MobID = atoi(elems[0]) | |
| result.Abs = atoi(elems[1]) | |
| result.BonusEXP = atoi(elems[2]) | |
| return result |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment