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 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