rodecomp/Source/Contents/Quest/RenewQuestMgr.cpp
ragnarok-clanker 0f561a5dca Maintenance: Source reorganisation, parts 2+3: Source/UI, Client, Render, Resource, Utility, Network, Archive, Interface and loose So
Batch #16644 by ragnarok-clanker: no function's compiled code changes; checked with 593 compiled unit(s), including every includer of Source/Client/Application/Registry.h, Source/Client/Application/RegistryKey.h, Source/Client/Application/Timer.h, Source/Client/Mode/ModeFade.h, Source/Client/Mode/ModeFadeOut.h, Source/Client/Mode/ModeScreenshot.h, Source/Client/Replay/Replay.h, Source/Client/Replay/ReplayRecordOption.h, Source/Client/Session/Session.h, Source/Contents/Actors/ActorPickNode.h, Source/Contents/Effects/Core/RagEffectState.h, Source/Contents/Effects/Particles/Particle.h, Source/Contents/Movies/BinkMovie.h, Source/Contents/Sprites/SpriteLayerDrawing.h, Source/File/NFileLog.h, Source/Network/NIPAddr.h, Source/Network/Packets/ActorNamePacket.h, Source/Network/Packets/ClientKeepalive.h, Source/Network/Packets/ClientOptionPacket.h, Source/Network/Packets/ExecutableDigestPacket.h, Source/Network/Packets/GameTickPacket.h, Source/Render/DX7/QueuedDrawingDX7.h, Source/Render/DX7/RendererDX7.h, Source/Render/DX9/RenderSystemDX9.h, Source/Render/Device/DeviceSelection.h, Source/Render/Device/Direct3DErrors.h, Source/Render/Device/DisplayMode.h, Source/Render/Device/RenderAdapter.h, Source/Render/Device/RenderBackends.h, Source/Render/Drawing/ActionSpriteDrawing.h, Source/Render/Drawing/BitmapDrawing.h, Source/Render/Drawing/BlendColor.h, Source/Render/Drawing/SpriteGeometry.h, Source/Render/Drawing/TextureStageModes.h, Source/Render/Primitives/AuxiliarySubmission.h, Source/Render/Primitives/SpriteQuad.h, Source/Render/Primitives/TextureQuad.h, Source/Render/Projection/ScreenGeometry.h, Source/Render/Projection/ScreenRectangle.h, Source/Resource/Audio/BinkRuntime.h, Source/Resource/Bitmap/EmblemResource.h, Source/Resource/Bitmap/GifLzw.h, Source/Resource/Bitmap/GifResource.h, Source/Resource/Bitmap/PaletteResource.h, Source/Resource/Bitmap/SkinPalette.h, Source/Resource/Bitmap/TextureNames.h, Source/Resource/Effects/EZeffectResource.h, Source/Resource/Json/JsonCppLoader.h, Source/Resource/Models/RmaResource.h, Source/Resource/Sprites/ImfResource.h, Source/Resource/Xml/XmlNode.h, Source/Security/FileSignatureVerifier.h, Source/Security/ProcessSecurity.h, Source/UI/Achievement/UIAchWnd.h, Source/UI/AdventureGuide/UIAdventureGuide.h, Source/UI/Buttons/UIBalloonOpenBtn.h, Source/UI/Buttons/UIMiniBtnWnd.h, Source/UI/Buttons/UISlotBitmap.h, Source/UI/Buttons/UIStaticBitmap.h, Source/UI/Buttons/UIStaticItem.h, Source/UI/Buttons/UIWindowCallBtnWnd.h, Source/UI/CashEmotion/UICashEmotionSprBtn.h, Source/UI/CashShop/UIMileageWnd.h, Source/UI/CashShop/UIPayConfirmWnd.h, Source/UI/Chat/UIChatRoomWnd.h, Source/UI/Dialogs/UIAccountLimitedToolWnd.h, Source/UI/Dialogs/UICntWnd.h, Source/UI/Dialogs/UILoadingWnd.h, Source/UI/Dialogs/UIMessageBox.h, Source/UI/Dialogs/UIMessageBoxAutoreturn.h, Source/UI/Dialogs/UINormalMB.h, Source/UI/Dialogs/UINoteWnd.h, Source/UI/Dialogs/UINoticeWnd.h, Source/UI/Dialogs/UIRPImageWnd.h, Source/UI/Dialogs/UIRPImageWnd2.h, Source/UI/Dialogs/UITalkboxTrapInputWnd.h, Source/UI/Dialogs/UITransMenuWnd.h, Source/UI/Dialogs/UIVideoWnd.h, Source/UI/Dialogs/UIWordDisplayWnd.h, Source/UI/Edit/UIItemTagCtrl.h, Source/UI/Enchant/EnchantUI.h, Source/UI/Events/UICheckAttendanceWnd.h, Source/UI/Events/UIOpenRoulletteWnd.h, Source/UI/Events/UIRoulletteWnd.h, Source/UI/Exchange/UIExchangeUI.h, Source/UI/GameSettings/GameSettingsUI.h, Source/UI/GameSettings/UIBattleMsgOptionWnd.h, Source/UI/GameSettings/UIEscOptionWnd.h, Source/UI/GameSettings/UIHotKeyWnd.h, Source/UI/GameSettings/UIHotkeyGuideWnd.h, Source/UI/GameSettings/UIViewCameraInfoWnd.h, Source/UI/Gauges/UIBarGraph.h, Source/UI/Guild/UIEmblemWnd.h, Source/UI/Guild/UIGuildWnd.h, Source/UI/Items/UIChangeMaterialWnd.h, Source/UI/Items/UICollectionSystemWnd.h, Source/UI/Items/UIEquipmentPropertiesWnd.h, Source/UI/Items/UIGradeEnchantWnd.h, Source/UI/Items/UIIngredientInfoWnd.h, Source/UI/Items/UIItemBaseWnd.h, Source/UI/Items/UIItemCollectionWnd.h, Source/UI/Items/UIItemMoveInfo.h, Source/UI/Items/UIItemPurchaseWnd.h, Source/UI/Items/UIItemReformWnd.h, Source/UI/Items/UIItemSellWnd.h, Source/UI/Items/UIItemSellWnd2.h, Source/UI/Items/UIItemShopWnd.h, Source/UI/Items/UIItemShopWnd2.h, Source/UI/Items/UIItemStoreComboBox.h, Source/UI/Items/UIItemStoreFindWnd.h, Source/UI/Items/UIItemStoreSubWnd.h, Source/UI/Items/UIItemStoreWnd.h, Source/UI/Items/UIItemWnd.h, Source/UI/Items/UILapineScrollBar.h, Source/UI/Items/UILapineUpgradeBoxWnd.h, Source/UI/Items/UIMerchantItemLogWnd.h, Source/UI/Items/UIParaItemShopWnd.h, Source/UI/Items/UIPreviewEquipWnd.h, Source/UI/Items/UIRefiningWnd.h, Source/UI/Items/UISecondCostumeWnd.h, Source/UI/Items/UISelectCartWnd.h, Source/UI/Lists/UIComboBoxEx.h, Source/UI/Lists/UIScrollBarVariants.h, Source/UI/Lists/UIScrollWnd.h, Source/UI/Lists/UITagListBox.h, Source/UI/Login/FuncDrawWNDChar.h, Source/UI/Login/UIChangeNameWnd.h, Source/UI/Login/UIDescriptRace.h, Source/UI/Login/UIEmailAddressWnd.h, Source/UI/Login/UILoginOTPWnd.h, Source/UI/Login/UILoginWnd.h, Source/UI/Login/UIMakeCharWnd.h, Source/UI/Login/UINewMakeCharWnd.h, Source/UI/Login/UINewSelectCharWnd.h, Source/UI/Login/UIPasswordWnd.h, Source/UI/Login/UISecondPasswordEditWnd.h, Source/UI/Login/UISelCharForUServerWnd.h, Source/UI/Login/UISelectServerWnd.h, Source/UI/Login/UIWaitDBSaveWnd.h, Source/UI/Macro/UICaptchaPreviewWnd.h, Source/UI/Macro/UICaptchaRegisterWnd.h, Source/UI/Macro/UIMacroBlackListCheckWnd.h, Source/UI/Macro/UIMacroDetectorWnd.h, Source/UI/Macro/UIMacroReport.h, Source/UI/Macro/UIMacroUserInfoWnd.h, Source/UI/Monster/UIMonsterDisplayWnd.h, Source/UI/Monster/UIMonsterInfoWnd.h, Source/UI/Navigation/NavigationLink.h, Source/UI/Navigation/UIChooseWarpWnd.h, Source/UI/Navigation/UIListBoxNavi.h, Source/UI/Navigation/UIListBoxNaviSearch.h, Source/UI/Navigation/UIMemorialDunWnd.h, Source/UI/Navigation/UIMiniMapWnd.h, Source/UI/Navigation/UIMinimapZoomWnd.h, Source/UI/Navigation/UINavigationHelpWnd.h, Source/UI/Navigation/UINavigationWnd.h, Source/UI/Navigation/UIRoMapWnd.h, Source/UI/Navigation/UIScrollBarNavi.h, Source/UI/Navigation/UIShowWarpWnd.h, Source/UI/Party/MiniPartyGrid.h, Source/UI/Party/MiniPartyPlacement.h, Source/UI/Party/MiniPartyWndAreaMgr.h, Source/UI/Party/UIJobSlotButton.h, Source/UI/Party/UIPartyBookingHelpWnd.h, Source/UI/Party/UISeekPartyListWnd.h, Source/UI/Party/UISeekPartyMBWnd.h, Source/UI/Party/UISeekPartyWnd.h, Source/UI/ProbabilityTable/UIProbabilityTable.h, Source/UI/Quest/UINotifyQuestWnd.h, Source/UI/Quest/UIOngoingQuestInfo.h, Source/UI/Quest/UIRecommendedQuestInfo.h, Source/UI/Quest/UIRenewQuestUI.h, Source/UI/Quest/UIRenewQuestWnd.h, Source/UI/Replay/UIReplayButton.h, Source/UI/Replay/UIReplayControlWnd.h, Source/UI/Replay/UIReplayListBox.h, Source/UI/Replay/UIReplayRECControlWnd.h, Source/UI/Replay/UISelectReplayDataWnd.h, Source/UI/Repute/UIReputeWnd.h, Source/UI/Rodex/UIOpenMailBoxWnd.h, Source/UI/Rodex/UIRodexContentsWnd.h, Source/UI/Rodex/UIRodexInboxWnd.h, Source/UI/RuneSystem/UIRuneSystemWindows.h, Source/UI/RuneSystem/UIRuneSystemWnd.h, Source/UI/SelectPackageItemBox/SelectPackageItemBox.h, Source/UI/SelectPackageItemBox/UIPackageBoxNameList.h, Source/UI/Shop/PriceCommission.h, Source/UI/Shop/UIBank_NewWnd.h, Source/UI/Shop/UIBartermarketWnd.h, Source/UI/Shop/UIMerchantItemMyShopWnd.h, Source/UI/Shop/UIMerchantItemPurchaseWnd.h, Source/UI/Shop/UIMerchantItemShopWnd.h, Source/UI/Shop/UIMerchantItemWnd.h, Source/UI/Shop/UIMerchantMirrorItemWnd.h, Source/UI/Shop/UISerachStoreInfoWnd.h, Source/UI/Shop/UInCash_CallWnd.h, Source/UI/Skill/UIDebuffRemoveWnd.h, Source/UI/Skill/UIGraffiStrboxWnd.h, Source/UI/Skill/UINewSkillListWnd.h, Source/UI/SkillDelayInfo/SkillDelayInfo.h, Source/UI/Status/UIBasicInfoWnd.h, Source/UI/Status/UIHomunInfoWnd.h, Source/UI/Status/UIJobListWnd.h, Source/UI/Status/UIMerInfoWnd.h, Source/UI/Status/UIPetEvolutionWnd.h, Source/UI/Status/UIPetInfoWnd.h, Source/UI/Status/UIPetTamingDeceiveWnd.h, Source/UI/Status/UIRebirthWnd.h, Source/UI/StylingShop/UIStylingShopWnd.h, Source/UI/Text/TextTags.h, Source/UI/Text/UIBroadcastBalloon.h, Source/UI/Text/UIRoundBoxTooltipWnd.h, Source/UI/Window/FrameSkin.h, Source/UI/Window/UIBasicCtrl.h, Source/UI/Window/UIControl.h, Source/UI/Window/UIWindowMgr.inl, Source/Utility/Cipher/EncryptedName.h, Source/Utility/Hash/CRC32.h, Source/Utility/Hash/GGHash.h, Source/Utility/Hash/GGHashMgr.h, Source/Utility/Hash/Md5State.h, Source/Utility/Hash/SHA3.h, Source/Utility/Hash/XxHash3.h, Source/Utility/Text/GuidParse.h, Source/Utility/Text/Tokenizer.h, Source/Utility/Zlib.h, Source/ActorPickNode.h, Source/Client/ModeFade.h, Source/Client/ModeFadeOut.h, Source/Client/ModeScreenshot.h, Source/Client/Registry.h, Source/Client/Replay.h, Source/Client/ReplayRecordOption.h, Source/Client/Session.h, Source/Client/Timer.h, Source/Network/ActorNamePacket.h, Source/Network/ClientKeepalive.h, Source/Network/ClientOptionPacket.h, Source/Network/ExecutableDigestPacket.h, Source/Network/GameTickPacket.h, Source/Render/ActionSpriteDrawing.h, Source/Render/AuxiliarySubmission.h, Source/Render/BitmapDrawing.h, Source/Render/BlendColor.h, Source/Render/DeviceSelection.h, Source/Render/Direct3DErrors.h, Source/Render/DisplayMode.h, Source/Render/RenderAdapter.h, Source/Render/RenderBackends.h, Source/Render/RendererDX7.h, Source/Render/ScreenGeometry.h, Source/Render/ScreenRectangle.h, Source/Render/SpriteGeometry.h, Source/Render/SpriteQuad.h, Source/Render/TextureQuad.h, Source/Render/TextureStageModes.h, Source/Resource/BinkRuntime.h, Source/Resource/EZeffectResource.h, Source/Resource/EmblemResource.h, Source/Resource/GifLzw.h, Source/Resource/GifResource.h, Source/Resource/ImfResource.h, Source/Resource/PaletteResource.h, Source/Resource/RmaResource.h, Source/Resource/SkinPalette.h, Source/Resource/TextureNames.h, Source/Resource/XmlNode.h, Source/UI/Buttons/UICashEmotionSprBtn.h, Source/UI/Buttons/UIDescriptRace.h, Source/UI/Buttons/UIItemMoveInfo.h, Source/UI/Buttons/UIJobSlotButton.h, Source/UI/Buttons/UIReplayButton.h, Source/UI/Dialogs/UIChooseWarpWnd.h, Source/UI/Dialogs/UIEmailAddressWnd.h, Source/UI/Dialogs/UIGraffiStrboxWnd.h, Source/UI/Dialogs/UIMemorialDunWnd.h, Source/UI/Dialogs/UIMiniMapWnd.h, Source/UI/Dialogs/UIMinimapZoomWnd.h, Source/UI/Dialogs/UINotifyQuestWnd.h, Source/UI/Dialogs/UIPasswordWnd.h, Source/UI/Dialogs/UIPetTamingDeceiveWnd.h, Source/UI/Dialogs/UISecondPasswordEditWnd.h, Source/UI/Dialogs/UISelectCartWnd.h, Source/UI/Dialogs/UIWaitDBSaveWnd.h, Source/UI/FrameSkin.h, Source/UI/Item/UIEquipmentPropertiesWnd.h, Source/UI/Item/UIItemBaseWnd.h, Source/UI/Item/UIItemPurchaseWnd.h, Source/UI/Item/UIItemSellWnd.h, Source/UI/Item/UIItemSellWnd2.h, Source/UI/Item/UIItemShopWnd.h, Source/UI/Item/UIItemShopWnd2.h, Source/UI/Item/UIItemStoreFindWnd.h, Source/UI/Item/UIItemStoreSubWnd.h, Source/UI/Item/UIItemStoreWnd.h, Source/UI/Item/UIItemWnd.h, Source/UI/Item/UIMerchantItemLogWnd.h, Source/UI/Item/UIParaItemShopWnd.h, Source/UI/Lists/UIItemStoreComboBox.h, Source/UI/Lists/UIListBoxNavi.h, Source/UI/Lists/UIListBoxNaviSearch.h, Source/UI/Lists/UIPackageBoxNameList.h, Source/UI/Lists/UIReplayListBox.h, Source/UI/Lists/UIScrollBarNavi.h, Source/UI/MiniPartyGrid.h, Source/UI/MiniPartyPlacement.h, Source/UI/PriceCommission.h, Source/UI/Text/NavigationLink.h, Source/UI/Text/UIAchWnd.h, Source/UI/TextTags.h, Source/UI/UIBarGraph.h, Source/UI/UIBartermarketWnd.h, Source/UI/UIBasicCtrl.h, Source/UI/UIBroadcastBalloon.h, Source/UI/UICaptchaPreviewWnd.h, Source/UI/UICaptchaRegisterWnd.h, Source/UI/UIChangeMaterialWnd.h, Source/UI/UICheckAttendanceWnd.h, Source/UI/UIGradeEnchantWnd.h, Source/UI/UIHotkeyGuideWnd.h, Source/UI/UIIngredientInfoWnd.h, Source/UI/UIItemReformWnd.h, Source/UI/UILapineScrollBar.h, Source/UI/UILapineUpgradeBoxWnd.h, Source/UI/UIMacroBlackListCheckWnd.h, Source/UI/UIMacroDetectorWnd.h, Source/UI/UIMacroReport.h, Source/UI/UIMacroUserInfoWnd.h, Source/UI/UIPreviewEquipWnd.h, Source/UI/UIRefiningWnd.h, Source/UI/UIReputeWnd.h, Source/UI/UIRoundBoxTooltipWnd.h, Source/UI/UIScrollWnd.h, Source/UI/UISlotBitmap.h, Source/UI/UIStaticBitmap.h, Source/UI/UIStaticItem.h, Source/UI/Window/FuncDrawWNDChar.h, Source/UI/Window/MiniPartyWndAreaMgr.h, Source/UI/Window/UIAccountLimitedToolWnd.h, Source/UI/Window/UIBalloonOpenBtn.h, Source/UI/Window/UIBank_NewWnd.h, Source/UI/Window/UIBasicInfoWnd.h, Source/UI/Window/UIBattleMsgOptionWnd.h, Source/UI/Window/UIChangeNameWnd.h, Source/UI/Window/UIChatRoomWnd.h, Source/UI/Window/UICntWnd.h, Source/UI/Window/UICollectionSystemWnd.h, Source/UI/Window/UIDebuffRemoveWnd.h, Source/UI/Window/UIEmblemWnd.h, Source/UI/Window/UIEscOptionWnd.h, Source/UI/Window/UIHomunInfoWnd.h, Source/UI/Window/UIHotKeyWnd.h, Source/UI/Window/UIJobListWnd.h, Source/UI/Window/UILoginOTPWnd.h, Source/UI/Window/UILoginWnd.h, Source/UI/Window/UIMakeCharWnd.h, Source/UI/Window/UIMerInfoWnd.h, Source/UI/Window/UIMessageBox.h, Source/UI/Window/UIMessageBoxAutoreturn.h, Source/UI/Window/UIMileageWnd.h, Source/UI/Window/UIMiniBtnWnd.h, Source/UI/Window/UIMonsterDisplayWnd.h, Source/UI/Window/UIMonsterInfoWnd.h, Source/UI/Window/UINavigationHelpWnd.h, Source/UI/Window/UINavigationWnd.h, Source/UI/Window/UINewMakeCharWnd.h, Source/UI/Window/UINewSelectCharWnd.h, Source/UI/Window/UINewSkillListWnd.h, Source/UI/Window/UINormalMB.h, Source/UI/Window/UINoteWnd.h, Source/UI/Window/UINoticeWnd.h, Source/UI/Window/UIOpenMailBoxWnd.h, Source/UI/Window/UIOpenRoulletteWnd.h, Source/UI/Window/UIPartyBookingHelpWnd.h, Source/UI/Window/UIPayConfirmWnd.h, Source/UI/Window/UIPetEvolutionWnd.h, Source/UI/Window/UIPetInfoWnd.h, Source/UI/Window/UIRPImageWnd.h, Source/UI/Window/UIRPImageWnd2.h, Source/UI/Window/UIRebirthWnd.h, Source/UI/Window/UIReplayControlWnd.h, Source/UI/Window/UIReplayRECControlWnd.h, Source/UI/Window/UIRoMapWnd.h, Source/UI/Window/UIRodexContentsWnd.h, Source/UI/Window/UIRoulletteWnd.h, Source/UI/Window/UISecondCostumeWnd.h, Source/UI/Window/UISeekPartyListWnd.h, Source/UI/Window/UISeekPartyMBWnd.h, Source/UI/Window/UISeekPartyWnd.h, Source/UI/Window/UISelCharForUServerWnd.h, Source/UI/Window/UISelectReplayDataWnd.h, Source/UI/Window/UISelectServerWnd.h, Source/UI/Window/UISerachStoreInfoWnd.h, Source/UI/Window/UIShowWarpWnd.h, Source/UI/Window/UITalkboxTrapInputWnd.h, Source/UI/Window/UITransMenuWnd.h, Source/UI/Window/UIVideoWnd.h, Source/UI/Window/UIViewCameraInfoWnd.h, Source/UI/Window/UIWindowCallBtnWnd.h, Source/UI/Window/UIWordDisplayWnd.h, Source/Utility/CRC32.h, Source/Utility/Compression/Zlib.h, Source/Utility/EncryptedName.h, Source/Utility/FileSignatureVerifier.h, Source/Utility/GGHash.h, Source/Utility/GGHashMgr.h, Source/Utility/GuidParse.h, Source/Utility/JsonCppLoader.h, Source/Utility/Md5State.h, Source/Utility/NFileLog.h, Source/Utility/NIPAddr.h, Source/Utility/ProcessSecurity.h, Source/Utility/RegistryKey.h, Source/Utility/SHA3.h, Source/Utility/Tokenizer.h, Source/Utility/XxHash3.h.
Adds to the build: Source/Client/Application/ClientOptions.cpp, Source/Client/Application/Registry.cpp, Source/Client/Application/RegistryKey.cpp, Source/Client/Application/Timer.cpp, Source/Client/Mode/EntityInit.cpp, Source/Client/Mode/ModeBaseEvents.cpp, Source/Client/Mode/ModeCursorDrawing.cpp, Source/Client/Mode/ModeFade.cpp, Source/Client/Mode/ModeFadeOut.cpp, Source/Client/Mode/ModeScreenshot.cpp, Source/Client/Mode/ModeTransitions.cpp, Source/Client/Replay/Replay.cpp, Source/Client/Replay/ReplayControl.cpp, Source/Client/Replay/ReplayPacketRecorder.cpp, Source/Client/Session/Session.cpp, Source/Client/Session/SessionAchievements.cpp, Source/Client/Session/SessionParty.cpp, Source/Client/Session/SessionPredicates.cpp, Source/Client/Session/SessionState.cpp, Source/Contents/Actors/ActorPickNode.cpp, Source/File/NFileLog.cpp, Source/Network/NIPAddr.cpp, Source/Network/Packets/ActorNamePacket.cpp, Source/Network/Packets/ClientKeepalive.cpp, Source/Network/Packets/ClientOptionPacket.cpp, Source/Network/Packets/ExecutableDigestPacket.cpp, Source/Network/Packets/GameTickPacket.cpp, Source/Render/DX7/AlphaQueuesDX7.cpp, Source/Render/DX7/AuxiliaryQueuesDX7.cpp, Source/Render/DX7/OpaqueQueuesDX7.cpp, Source/Render/DX7/RendererDX7.cpp, Source/Render/DX9/DeviceCapabilitiesDX9.cpp, Source/Render/Device/DeviceSelection.cpp, Source/Render/Device/Direct3DErrors.cpp, Source/Render/Device/DisplayMode.cpp, Source/Render/Device/RenderAdapter.cpp, Source/Render/Device/RenderBackends.cpp, Source/Render/Drawing/ActionSpriteDrawing.cpp, Source/Render/Drawing/BitmapDrawing.cpp, Source/Render/Drawing/BlendColor.cpp, Source/Render/Drawing/SpriteGeometry.cpp, Source/Render/Primitives/AlphaRectangle.cpp, Source/Render/Primitives/AuxiliarySubmission.cpp, Source/Render/Primitives/SpriteQuad.cpp, Source/Render/Primitives/TextureQuad.cpp, Source/Render/Primitives/UIRPDataDrawing.cpp, Source/Render/Projection/ScreenGeometry.cpp, Source/Render/Projection/ScreenRectangle.cpp, Source/Render/Projection/ViewportProjection.cpp, Source/Resource/Bitmap/EmblemResource.cpp, Source/Resource/Bitmap/GifLzw.cpp, Source/Resource/Bitmap/GifResource.cpp, Source/Resource/Bitmap/PaletteResource.cpp, Source/Resource/Bitmap/SkinPalette.cpp, Source/Resource/Bitmap/TextureNames.cpp, Source/Resource/Effects/EZeffectResource.cpp, Source/Resource/Json/JsonCppLoader.cpp, Source/Resource/Models/RmaResource.cpp, Source/Resource/Sprites/ImfLayerIndex.cpp, Source/Resource/Sprites/ImfResource.cpp, Source/Resource/Xml/XmlNode.cpp, Source/Resource/Xml/XmlParsing.cpp, Source/Security/FileSignatureVerifier.cpp, Source/Security/ProcessSecurity.cpp, Source/Security/UnknownA68.cpp, Source/UI/Achievement/UIAchWnd.cpp, Source/UI/Buttons/UIBalloonOpenBtn.cpp, Source/UI/Buttons/UIMiniBtnWnd.cpp, Source/UI/Buttons/UISlotBitmap.cpp, Source/UI/Buttons/UIStaticBitmap.cpp, Source/UI/Buttons/UIStaticItem.cpp, Source/UI/CashShop/UIMileageWnd.cpp, Source/UI/Chat/UIZeroChatWnd.cpp, Source/UI/Dialogs/UIAccountLimitedToolWnd.cpp, Source/UI/Dialogs/UILocaleTextWnd.cpp, Source/UI/Dialogs/UIMessageBox.cpp, Source/UI/Dialogs/UINormalMB.cpp, Source/UI/Dialogs/UINoteWnd.cpp, Source/UI/Dialogs/UINoticeWnd.cpp, Source/UI/Dialogs/UIRPImageWnd.cpp, Source/UI/Dialogs/UIRPImageWnd2.cpp, Source/UI/Dialogs/UITransMenuWnd.cpp, Source/UI/Dialogs/UIVideoWnd.cpp, Source/UI/Dialogs/UIWordDisplayWnd.cpp, Source/UI/Events/UICheckAttendanceWnd.cpp, Source/UI/Events/UIOpenRoulletteWnd.cpp, Source/UI/Events/UIRoulletteWnd.cpp, Source/UI/GameSettings/UIBattleMsgOptionWnd.cpp, Source/UI/GameSettings/UIEscOptionWnd.cpp, Source/UI/GameSettings/UIHotKeyWnd.cpp, Source/UI/GameSettings/UIHotkeyGuideWnd.cpp, Source/UI/GameSettings/UIViewCameraInfoWnd.cpp, Source/UI/Gauges/UIBarGraph.cpp, Source/UI/Guild/UIEmblemWnd.cpp, Source/UI/Items/UIChangeMaterialWnd.cpp, Source/UI/Items/UICollectionSystemWnd.cpp, Source/UI/Items/UIEquipmentPropertiesWnd.cpp, Source/UI/Items/UIGradeEnchantWnd.cpp, Source/UI/Items/UIItemMoveInfo.cpp, Source/UI/Items/UIItemReformWnd.cpp, Source/UI/Items/UIItemStoreComboBox.cpp, Source/UI/Items/UIItemStoreWnd.cpp, Source/UI/Items/UILapineBoxWnd.cpp, Source/UI/Items/UILapineScrollBar.cpp, Source/UI/Items/UILapineUpgradeBoxWnd.cpp, Source/UI/Items/UIMerchantItemLogWnd.cpp, Source/UI/Items/UIParaItemShopWnd.cpp, Source/UI/Items/UIPreviewEquipWnd.cpp, Source/UI/Items/UIRefiningWnd.cpp, Source/UI/Items/UISecondCostumeWnd.cpp, Source/UI/Lists/UIScrollWnd.cpp, Source/UI/Login/FuncDrawWNDChar.cpp, Source/UI/Login/UIChangeNameWnd.cpp, Source/UI/Login/UIDescriptRace.cpp, Source/UI/Login/UIEmailAddressWnd.cpp, Source/UI/Login/UILoginWnd.cpp, Source/UI/Login/UINewMakeCharWnd.cpp, Source/UI/Login/UINewSelectCharWnd.cpp, Source/UI/Login/UIPasswordWnd.cpp, Source/UI/Login/UISelCharForUServerWnd.cpp, Source/UI/Login/UIWaitDBSaveWnd.cpp, Source/UI/Macro/UICaptchaPreviewWnd.cpp, Source/UI/Macro/UICaptchaRegisterWnd.cpp, Source/UI/Macro/UIMacroBlackListCheckWnd.cpp, Source/UI/Macro/UIMacroDetectorWnd.cpp, Source/UI/Macro/UIMacroReport.cpp, Source/UI/Macro/UIMacroUserInfoWnd.cpp, Source/UI/Navigation/NavigationLink.cpp, Source/UI/Navigation/UIListBoxNavi.cpp, Source/UI/Navigation/UIMinimapZoomWnd.cpp, Source/UI/Navigation/UINavigationHelpWnd.cpp, Source/UI/Navigation/UINavigationWnd.cpp, Source/UI/Navigation/UIRoMapWnd.cpp, Source/UI/Navigation/UIScrollBarNavi.cpp, Source/UI/Navigation/UIShowWarpWnd.cpp, Source/UI/Party/MiniPartyGrid.cpp, Source/UI/Party/MiniPartyManager.cpp, Source/UI/Party/MiniPartyPlacement.cpp, Source/UI/Party/MiniPartyUsableArea.cpp, Source/UI/Party/UIJobSlotButton.cpp, Source/UI/Party/UIPartyBookingHelpWnd.cpp, Source/UI/Party/UISeekPartyListWnd.cpp, Source/UI/Party/UISeekPartyMBWnd.cpp, Source/UI/Party/UISeekPartyWnd.cpp, Source/UI/Repute/UIReputeWnd.cpp, Source/UI/Rodex/UIOpenMailBoxWnd.cpp, Source/UI/Rodex/UIRodexContentsWnd.cpp, Source/UI/SelectPackageItemBox/UIPackageBoxNameList.cpp, Source/UI/Shop/PriceCommission.cpp, Source/UI/Shop/UIBartermarketWnd.cpp, Source/UI/Shop/UISerachStoreInfoWnd.cpp, Source/UI/Skill/UIDebuffRemoveWnd.cpp, Source/UI/Skill/UIGraffiStrboxWnd.cpp, Source/UI/Skill/UINewSkillListWnd.cpp, Source/UI/Skill/UINewSkillListWndHitTest.cpp, Source/UI/Status/UIBasicInfoWnd.cpp, Source/UI/Status/UIJobListWnd.cpp, Source/UI/Status/UIPetEvolutionWnd.cpp, Source/UI/Status/UIRebirthWnd.cpp, Source/UI/Text/TextTagExtraction.cpp, Source/UI/Text/TextTagRegistry.cpp, Source/UI/Text/UIBroadcastBalloon.cpp, Source/UI/Text/UIRoundBoxTooltipWnd.cpp, Source/UI/Window/FrameSkin.cpp, Source/UI/Window/UIBasicCtrl.cpp, Source/UI/Window/WindowBackground.cpp, Source/UI/Window/WindowLowerBorder.cpp, Source/UI/Window/WindowOverlay.cpp, Source/UI/Window/WindowSprite.cpp, Source/UI/Window/WindowTitlebar.cpp, Source/Utility/BoolStubs.cpp, Source/Utility/Hash/CRC32.cpp, Source/Utility/Hash/GGHash.cpp, Source/Utility/Hash/GGHashMgr.cpp, Source/Utility/Hash/Md5State.cpp, Source/Utility/Hash/SHA3.cpp, Source/Utility/Hash/XxHash3.cpp, Source/Utility/Lexicon/LexiconTrie.cpp, Source/Utility/Text/GuidParse.cpp, Source/Utility/Text/Tokenizer.cpp
Deletes: Source/ActorPickNode.cpp, Source/ActorPickNode.h, Source/Archive/UnknownA68.cpp, Source/Client/ClientOptions.cpp, Source/Client/ModeBaseEvents.cpp, Source/Client/ModeCursorDrawing.cpp, Source/Client/ModeFade.cpp, Source/Client/ModeFade.h, Source/Client/ModeFadeOut.cpp, Source/Client/ModeFadeOut.h, Source/Client/ModeScreenshot.cpp, Source/Client/ModeScreenshot.h, Source/Client/ModeTransitions.cpp, Source/Client/Registry.cpp, Source/Client/Registry.h, Source/Client/Replay.cpp, Source/Client/Replay.h, Source/Client/ReplayControl.cpp, Source/Client/ReplayPacketRecorder.cpp, Source/Client/ReplayRecordOption.h, Source/Client/Session.cpp, Source/Client/Session.h, Source/Client/SessionAchievements.cpp, Source/Client/SessionParty.cpp, Source/Client/SessionPredicates.cpp, Source/Client/SessionState.cpp, Source/Client/Timer.cpp, Source/Client/Timer.h, Source/EntityInit.cpp, Source/Interface/BoolStubs.cpp, Source/LexiconTrie.cpp, Source/Network/ActorNamePacket.cpp, Source/Network/ActorNamePacket.h, Source/Network/ClientKeepalive.cpp, Source/Network/ClientKeepalive.h, Source/Network/ClientOptionPacket.cpp, Source/Network/ClientOptionPacket.h, Source/Network/ExecutableDigestPacket.cpp, Source/Network/ExecutableDigestPacket.h, Source/Network/GameTickPacket.cpp, Source/Network/GameTickPacket.h, Source/Render/ActionSpriteDrawing.cpp, Source/Render/ActionSpriteDrawing.h, Source/Render/AlphaQueuesDX7.cpp, Source/Render/AlphaRectangle.cpp, Source/Render/AuxiliaryQueuesDX7.cpp, Source/Render/AuxiliarySubmission.cpp, Source/Render/AuxiliarySubmission.h, Source/Render/BitmapDrawing.cpp, Source/Render/BitmapDrawing.h, Source/Render/BlendColor.cpp, Source/Render/BlendColor.h, Source/Render/DeviceCapabilitiesDX9.cpp, Source/Render/DeviceSelection.cpp, Source/Render/DeviceSelection.h, Source/Render/Direct3DErrors.cpp, Source/Render/Direct3DErrors.h, Source/Render/DisplayMode.cpp, Source/Render/DisplayMode.h, Source/Render/OpaqueQueuesDX7.cpp, Source/Render/RenderAdapter.cpp, Source/Render/RenderAdapter.h, Source/Render/RenderBackends.cpp, Source/Render/RenderBackends.h, Source/Render/RendererDX7.cpp, Source/Render/RendererDX7.h, Source/Render/ScreenGeometry.cpp, Source/Render/ScreenGeometry.h, Source/Render/ScreenRectangle.cpp, Source/Render/ScreenRectangle.h, Source/Render/SpriteGeometry.cpp, Source/Render/SpriteGeometry.h, Source/Render/SpriteQuad.cpp, Source/Render/SpriteQuad.h, Source/Render/TextureQuad.cpp, Source/Render/TextureQuad.h, Source/Render/TextureStageModes.h, Source/Render/UIRPDataDrawing.cpp, Source/Render/ViewportProjection.cpp, Source/Resource/BinkRuntime.h, Source/Resource/EZeffectResource.cpp, Source/Resource/EZeffectResource.h, Source/Resource/EmblemResource.cpp, Source/Resource/EmblemResource.h, Source/Resource/GifLzw.cpp, Source/Resource/GifLzw.h, Source/Resource/GifResource.cpp, Source/Resource/GifResource.h, Source/Resource/ImfLayerIndex.cpp, Source/Resource/ImfResource.cpp, Source/Resource/ImfResource.h, Source/Resource/PaletteResource.cpp, Source/Resource/PaletteResource.h, Source/Resource/RmaResource.cpp, Source/Resource/RmaResource.h, Source/Resource/SkinPalette.cpp, Source/Resource/SkinPalette.h, Source/Resource/TextureNames.cpp, Source/Resource/TextureNames.h, Source/Resource/XmlNode.cpp, Source/Resource/XmlNode.h, Source/Resource/XmlParsing.cpp, Source/UI/Buttons/UICashEmotionSprBtn.h, Source/UI/Buttons/UIDescriptRace.cpp, Source/UI/Buttons/UIDescriptRace.h, Source/UI/Buttons/UIItemMoveInfo.cpp, Source/UI/Buttons/UIItemMoveInfo.h, Source/UI/Buttons/UIJobSlotButton.cpp, Source/UI/Buttons/UIJobSlotButton.h, Source/UI/Buttons/UIReplayButton.h, Source/UI/Dialogs/UIChooseWarpWnd.h, Source/UI/Dialogs/UIEmailAddressWnd.cpp, Source/UI/Dialogs/UIEmailAddressWnd.h, Source/UI/Dialogs/UIGraffiStrboxWnd.cpp, Source/UI/Dialogs/UIGraffiStrboxWnd.h, Source/UI/Dialogs/UIMemorialDunWnd.h, Source/UI/Dialogs/UIMiniMapWnd.h, Source/UI/Dialogs/UIMinimapZoomWnd.cpp, Source/UI/Dialogs/UIMinimapZoomWnd.h, Source/UI/Dialogs/UINotifyQuestWnd.h, Source/UI/Dialogs/UIPasswordWnd.cpp, Source/UI/Dialogs/UIPasswordWnd.h, Source/UI/Dialogs/UIPetTamingDeceiveWnd.h, Source/UI/Dialogs/UISecondPasswordEditWnd.h, Source/UI/Dialogs/UISelectCartWnd.h, Source/UI/Dialogs/UIWaitDBSaveWnd.cpp, Source/UI/Dialogs/UIWaitDBSaveWnd.h, Source/UI/FrameSkin.cpp, Source/UI/FrameSkin.h, Source/UI/Item/UIEquipmentPropertiesWnd.cpp, Source/UI/Item/UIEquipmentPropertiesWnd.h, Source/UI/Item/UIItemBaseWnd.h, Source/UI/Item/UIItemPurchaseWnd.h, Source/UI/Item/UIItemSellWnd.h, Source/UI/Item/UIItemSellWnd2.h, Source/UI/Item/UIItemShopWnd.h, Source/UI/Item/UIItemShopWnd2.h, Source/UI/Item/UIItemStoreFindWnd.h, Source/UI/Item/UIItemStoreSubWnd.h, Source/UI/Item/UIItemStoreWnd.cpp, Source/UI/Item/UIItemStoreWnd.h, Source/UI/Item/UIItemWnd.h, Source/UI/Item/UIMerchantItemLogWnd.cpp, Source/UI/Item/UIMerchantItemLogWnd.h, Source/UI/Item/UIParaItemShopWnd.cpp, Source/UI/Item/UIParaItemShopWnd.h, Source/UI/Lists/UIItemStoreComboBox.cpp, Source/UI/Lists/UIItemStoreComboBox.h, Source/UI/Lists/UIListBoxNavi.cpp, Source/UI/Lists/UIListBoxNavi.h, Source/UI/Lists/UIListBoxNaviSearch.h, Source/UI/Lists/UIPackageBoxNameList.cpp, Source/UI/Lists/UIPackageBoxNameList.h, Source/UI/Lists/UIReplayListBox.h, Source/UI/Lists/UIScrollBarNavi.cpp, Source/UI/Lists/UIScrollBarNavi.h, Source/UI/MiniPartyGrid.cpp, Source/UI/MiniPartyGrid.h, Source/UI/MiniPartyManager.cpp, Source/UI/MiniPartyPlacement.cpp, Source/UI/MiniPartyPlacement.h, Source/UI/MiniPartyUsableArea.cpp, Source/UI/PriceCommission.cpp, Source/UI/PriceCommission.h, Source/UI/Text/NavigationLink.cpp, Source/UI/Text/NavigationLink.h, Source/UI/Text/UIAchWnd.cpp, Source/UI/Text/UIAchWnd.h, Source/UI/TextTagExtraction.cpp, Source/UI/TextTagRegistry.cpp, Source/UI/TextTags.h, Source/UI/UIBarGraph.cpp, Source/UI/UIBarGraph.h, Source/UI/UIBartermarketWnd.cpp, Source/UI/UIBartermarketWnd.h, Source/UI/UIBasicCtrl.cpp, Source/UI/UIBasicCtrl.h, Source/UI/UIBroadcastBalloon.cpp, Source/UI/UIBroadcastBalloon.h, Source/UI/UICaptchaPreviewWnd.cpp, Source/UI/UICaptchaPreviewWnd.h, Source/UI/UICaptchaRegisterWnd.cpp, Source/UI/UICaptchaRegisterWnd.h, Source/UI/UIChangeMaterialWnd.cpp, Source/UI/UIChangeMaterialWnd.h, Source/UI/UICheckAttendanceWnd.cpp, Source/UI/UICheckAttendanceWnd.h, Source/UI/UIGradeEnchantWnd.cpp, Source/UI/UIGradeEnchantWnd.h, Source/UI/UIHotkeyGuideWnd.cpp, Source/UI/UIHotkeyGuideWnd.h, Source/UI/UIIngredientInfoWnd.h, Source/UI/UIItemReformWnd.cpp, Source/UI/UIItemReformWnd.h, Source/UI/UILapineBoxWnd.cpp, Source/UI/UILapineScrollBar.cpp, Source/UI/UILapineScrollBar.h, Source/UI/UILapineUpgradeBoxWnd.cpp, Source/UI/UILapineUpgradeBoxWnd.h, Source/UI/UIMacroBlackListCheckWnd.cpp, Source/UI/UIMacroBlackListCheckWnd.h, Source/UI/UIMacroDetectorWnd.cpp, Source/UI/UIMacroDetectorWnd.h, Source/UI/UIMacroReport.cpp, Source/UI/UIMacroReport.h, Source/UI/UIMacroUserInfoWnd.cpp, Source/UI/UIMacroUserInfoWnd.h, Source/UI/UIPreviewEquipWnd.cpp, Source/UI/UIPreviewEquipWnd.h, Source/UI/UIRefiningWnd.cpp, Source/UI/UIRefiningWnd.h, Source/UI/UIReputeWnd.cpp, Source/UI/UIReputeWnd.h, Source/UI/UIRoundBoxTooltipWnd.cpp, Source/UI/UIRoundBoxTooltipWnd.h, Source/UI/UIScrollWnd.cpp, Source/UI/UIScrollWnd.h, Source/UI/UISlotBitmap.cpp, Source/UI/UISlotBitmap.h, Source/UI/UIStaticBitmap.cpp, Source/UI/UIStaticBitmap.h, Source/UI/UIStaticItem.cpp, Source/UI/UIStaticItem.h, Source/UI/Window/FuncDrawWNDChar.cpp, Source/UI/Window/FuncDrawWNDChar.h, Source/UI/Window/MiniPartyWndAreaMgr.h, Source/UI/Window/UIAccountLimitedToolWnd.cpp, Source/UI/Window/UIAccountLimitedToolWnd.h, Source/UI/Window/UIBalloonOpenBtn.cpp, Source/UI/Window/UIBalloonOpenBtn.h, Source/UI/Window/UIBank_NewWnd.h, Source/UI/Window/UIBasicInfoWnd.cpp, Source/UI/Window/UIBasicInfoWnd.h, Source/UI/Window/UIBattleMsgOptionWnd.cpp, Source/UI/Window/UIBattleMsgOptionWnd.h, Source/UI/Window/UIChangeNameWnd.cpp, Source/UI/Window/UIChangeNameWnd.h, Source/UI/Window/UIChatRoomWnd.h, Source/UI/Window/UICntWnd.h, Source/UI/Window/UICollectionSystemWnd.cpp, Source/UI/Window/UICollectionSystemWnd.h, Source/UI/Window/UIDebuffRemoveWnd.cpp, Source/UI/Window/UIDebuffRemoveWnd.h, Source/UI/Window/UIEmblemWnd.cpp, Source/UI/Window/UIEmblemWnd.h, Source/UI/Window/UIEscOptionWnd.cpp, Source/UI/Window/UIEscOptionWnd.h, Source/UI/Window/UIHomunInfoWnd.h, Source/UI/Window/UIHotKeyWnd.cpp, Source/UI/Window/UIHotKeyWnd.h, Source/UI/Window/UIJobListWnd.cpp, Source/UI/Window/UIJobListWnd.h, Source/UI/Window/UILocaleTextWnd.cpp, Source/UI/Window/UILoginOTPWnd.h, Source/UI/Window/UILoginWnd.cpp, Source/UI/Window/UILoginWnd.h, Source/UI/Window/UIMakeCharWnd.h, Source/UI/Window/UIMerInfoWnd.h, Source/UI/Window/UIMessageBox.cpp, Source/UI/Window/UIMessageBox.h, Source/UI/Window/UIMessageBoxAutoreturn.h, Source/UI/Window/UIMileageWnd.cpp, Source/UI/Window/UIMileageWnd.h, Source/UI/Window/UIMiniBtnWnd.cpp, Source/UI/Window/UIMiniBtnWnd.h, Source/UI/Window/UIMonsterDisplayWnd.h, Source/UI/Window/UIMonsterInfoWnd.h, Source/UI/Window/UINavigationHelpWnd.cpp, Source/UI/Window/UINavigationHelpWnd.h, Source/UI/Window/UINavigationWnd.cpp, Source/UI/Window/UINavigationWnd.h, Source/UI/Window/UINewMakeCharWnd.cpp, Source/UI/Window/UINewMakeCharWnd.h, Source/UI/Window/UINewSelectCharWnd.cpp, Source/UI/Window/UINewSelectCharWnd.h, Source/UI/Window/UINewSkillListWnd.cpp, Source/UI/Window/UINewSkillListWnd.h, Source/UI/Window/UINewSkillListWndHitTest.cpp, Source/UI/Window/UINormalMB.cpp, Source/UI/Window/UINormalMB.h, Source/UI/Window/UINoteWnd.cpp, Source/UI/Window/UINoteWnd.h, Source/UI/Window/UINoticeWnd.cpp, Source/UI/Window/UINoticeWnd.h, Source/UI/Window/UIOpenMailBoxWnd.cpp, Source/UI/Window/UIOpenMailBoxWnd.h, Source/UI/Window/UIOpenRoulletteWnd.cpp, Source/UI/Window/UIOpenRoulletteWnd.h, Source/UI/Window/UIPartyBookingHelpWnd.cpp, Source/UI/Window/UIPartyBookingHelpWnd.h, Source/UI/Window/UIPayConfirmWnd.h, Source/UI/Window/UIPetEvolutionWnd.cpp, Source/UI/Window/UIPetEvolutionWnd.h, Source/UI/Window/UIPetInfoWnd.h, Source/UI/Window/UIRPImageWnd.cpp, Source/UI/Window/UIRPImageWnd.h, Source/UI/Window/UIRPImageWnd2.cpp, Source/UI/Window/UIRPImageWnd2.h, Source/UI/Window/UIRebirthWnd.cpp, Source/UI/Window/UIRebirthWnd.h, Source/UI/Window/UIReplayControlWnd.h, Source/UI/Window/UIReplayRECControlWnd.h, Source/UI/Window/UIRoMapWnd.cpp, Source/UI/Window/UIRoMapWnd.h, Source/UI/Window/UIRodexContentsWnd.cpp, Source/UI/Window/UIRodexContentsWnd.h, Source/UI/Window/UIRoulletteWnd.cpp, Source/UI/Window/UIRoulletteWnd.h, Source/UI/Window/UISecondCostumeWnd.cpp, Source/UI/Window/UISecondCostumeWnd.h, Source/UI/Window/UISeekPartyListWnd.cpp, Source/UI/Window/UISeekPartyListWnd.h, Source/UI/Window/UISeekPartyMBWnd.cpp, Source/UI/Window/UISeekPartyMBWnd.h, Source/UI/Window/UISeekPartyWnd.cpp, Source/UI/Window/UISeekPartyWnd.h, Source/UI/Window/UISelCharForUServerWnd.cpp, Source/UI/Window/UISelCharForUServerWnd.h, Source/UI/Window/UISelectReplayDataWnd.h, Source/UI/Window/UISelectServerWnd.h, Source/UI/Window/UISerachStoreInfoWnd.cpp, Source/UI/Window/UISerachStoreInfoWnd.h, Source/UI/Window/UIShowWarpWnd.cpp, Source/UI/Window/UIShowWarpWnd.h, Source/UI/Window/UITalkboxTrapInputWnd.h, Source/UI/Window/UITransMenuWnd.cpp, Source/UI/Window/UITransMenuWnd.h, Source/UI/Window/UIVideoWnd.cpp, Source/UI/Window/UIVideoWnd.h, Source/UI/Window/UIViewCameraInfoWnd.cpp, Source/UI/Window/UIViewCameraInfoWnd.h, Source/UI/Window/UIWindowCallBtnWnd.h, Source/UI/Window/UIWordDisplayWnd.cpp, Source/UI/Window/UIWordDisplayWnd.h, Source/UI/Window/UIZeroChatWnd.cpp, Source/UI/WindowBackground.cpp, Source/UI/WindowLowerBorder.cpp, Source/UI/WindowOverlay.cpp, Source/UI/WindowSprite.cpp, Source/UI/WindowTitlebar.cpp, Source/Utility/CRC32.cpp, Source/Utility/CRC32.h, Source/Utility/Compression/Zlib.h, Source/Utility/EncryptedName.h, Source/Utility/FileSignatureVerifier.cpp, Source/Utility/FileSignatureVerifier.h, Source/Utility/GGHash.cpp, Source/Utility/GGHash.h, Source/Utility/GGHashMgr.cpp, Source/Utility/GGHashMgr.h, Source/Utility/GuidParse.cpp, Source/Utility/GuidParse.h, Source/Utility/JsonCppLoader.cpp, Source/Utility/JsonCppLoader.h, Source/Utility/Md5State.cpp, Source/Utility/Md5State.h, Source/Utility/NFileLog.cpp, Source/Utility/NFileLog.h, Source/Utility/NIPAddr.cpp, Source/Utility/NIPAddr.h, Source/Utility/ProcessSecurity.cpp, Source/Utility/ProcessSecurity.h, Source/Utility/RegistryKey.cpp, Source/Utility/RegistryKey.h, Source/Utility/SHA3.cpp, Source/Utility/SHA3.h, Source/Utility/Tokenizer.cpp, Source/Utility/Tokenizer.h, Source/Utility/XxHash3.cpp, Source/Utility/XxHash3.h
2026-11-11 01:05:24 +00:00

908 lines
29 KiB
C++

#include "UI/Window/WindowId.h"
#include "UI/Window/UIEnums.h"
#include "Contents/Quest/RenewQuestMgr.h"
#include "Contents/Tables/MessageTable.h"
#include "File/File.h"
#include "Network/Connection/Connection.h"
#include "Network/Packets/PacketId.h"
#include "Contents/Configuration/ServiceConfiguration.h"
#include "Script/LuaInstance.h"
#include "Script/LuaScript.h"
#include "Utility/Text/FormatString.h"
#include "Utility/Text/TextEscapes.h"
#include "UI/Quest/UIOngoingQuestInfo.h"
#include "UI/Quest/UIRenewQuestUI.h"
#include "UI/Window/UIWindowMgr.h"
#include "Client/Session/Session.h"
#include "Resource/MSGSTRINGID.h"
extern "C" {
#include <lua.h>
#include <lauxlib.h>
}
#include <algorithm>
#include <cstdint>
#include <cstring>
#include <format>
#include <new>
#include <utility>
#pragma pack(push, 1)
struct RenewQuestOngoingRecord {
/* 0000 */ unsigned int questId;
/* 0004 */ unsigned char state;
/* 0005 */ unsigned char padding_0005;
/* 0006 */ short huntCount;
/* 0008 */ short year;
/* 000A */ short month;
/* 000C */ short day;
/* 000E */ short hour;
/* 0010 */ unsigned short minute;
/* 0012 */ unsigned short padding_0012;
/* 0014 */ unsigned int padding_0014;
};
struct RenewQuestHuntRecord {
/* 0000 */ int huntId;
/* 0004 */ int monsterCondition;
/* 0008 */ int monsterId;
/* 000C */ short minLevel;
/* 000E */ short maxLevel;
/* 0010 */ short killCount;
/* 0012 */ short killGoal;
/* 0014 */ char name[0x33];
};
struct RenewQuestShortHuntRecord {
/* 0000 */ int huntId;
/* 0004 */ int monsterCondition;
/* 0008 */ int monsterId;
/* 000C */ short minLevel;
/* 000E */ short maxLevel;
/* 0010 */ short killCount;
/* 0012 */ short killGoal;
/* 0014 */ char name[0x18];
};
struct PACKET_CZ_QUEST_STATUS_REQ {
/* 0000 */ std::int16_t packetType;
/* 0002 */ std::int16_t packetLength;
};
struct PACKET_CZ_QUEST_STATUS_REQ_BUFFER {
/* 0000 */ PACKET_CZ_QUEST_STATUS_REQ header;
/* 0004 */ unsigned int questIds[511];
};
#pragma pack(pop)
#if defined(_WIN32) && !defined(_WIN64)
static_assert(sizeof(RenewQuestOngoingRecord) == 0x18);
static_assert(sizeof(RenewQuestHuntRecord) == 0x47);
static_assert(sizeof(RenewQuestShortHuntRecord) == 0x2C);
static_assert(sizeof(PACKET_CZ_QUEST_STATUS_REQ_BUFFER) == 0x800);
#endif
// GLOBAL: gl_24837
CRenewQuestMgr* g_renewQuestMgr;
// OFFSET: 0x00676110
// FUNCTION: fn_05417
RenewQuestOngoingInfo::RenewQuestOngoingInfo() : m_simpleView(true), baseExpReward(""), jobExpReward("") {
this->m_descriptions.clear();
this->m_rewards.clear();
for (int index = 0; index < 3; ++index) {
this->m_huntMobId[index] = 31999;
this->m_huntMinLevel[index] = -1;
this->m_huntMaxLevel[index] = -1;
}
for (int index = 0; index < 3; ++index) {
for (int offset = 0; offset < 0x33; ++offset) {
this->m_huntName[index][offset] = 0;
}
}
}
// OFFSET: 0x006765C0
// FUNCTION: fn_05420
RenewQuestInfo::RenewQuestInfo()
: m_state(1), m_title(""), m_icon(""), m_iconTooltip(""), summary(""), padding_0064(""), npcSprite(""), destinationMap(""),
destinationX(0), destinationY(0) {}
// OFFSET: 0x00676770
// FUNCTION: fn_05421
RenewQuestRecommendedInfo::RenewQuestRecommendedInfo() : backgroundImage("") {
for (int index = 0; index < 3; ++index) {
this->m_descriptions[index].clear();
}
}
// OFFSET: 0x00675990
// FUNCTION: fn_05414
CRenewQuestMgr::CRenewQuestMgr() : m_initialized(false) {
this->m_initialized = this->Clear();
this->m_parameter = 24;
}
// OFFSET: 0x00677C00
// FUNCTION: fn_05433
bool CRenewQuestMgr::Clear() {
this->m_ongoingQuests.clear();
this->m_recommendedQuests.clear();
return true;
}
// OFFSET: 0x00677C50
// FUNCTION: fn_05434
bool CRenewQuestMgr::Create() {
if (g_renewQuestMgr == nullptr) {
g_renewQuestMgr = new (std::nothrow) CRenewQuestMgr();
if (g_renewQuestMgr != nullptr) {
if (!g_renewQuestMgr->m_initialized) {
delete g_renewQuestMgr;
g_renewQuestMgr = nullptr;
return false;
}
return true;
}
}
return false;
}
// OFFSET: 0x00677CF0
// FUNCTION: fn_05435
void Nullsub212() {
}
// OFFSET: 0x00677D00
// FUNCTION: fn_05436
void CRenewQuestMgr::Destroy() {
if (g_renewQuestMgr != nullptr) {
delete g_renewQuestMgr;
g_renewQuestMgr = nullptr;
}
}
// OFFSET: 0x00677D20
// FUNCTION: fn_05437
void CRenewQuestMgr::RemoveStatusRequest(unsigned int id) {
const auto found = this->m_statusRequests.find(id);
if (found != this->m_statusRequests.end()) {
this->m_statusRequests.erase(found);
}
}
// OFFSET: 0x00677D80
// FUNCTION: fn_05438
std::string RenewQuestOngoingInfo::GetDateString() const {
return 1970 < this->m_year ? std::format("{0} [{1:04}/{2:02}/{3:02} {4:02}:{5:02}]", LookupMessage(MSI_NAVIGATION_ROUTEINFO), this->m_year,
this->m_month, this->m_day, this->m_hour, this->m_minute)
: std::string("");
}
// OFFSET: 0x006779A0
// FUNCTION: fn_05432
void CRenewQuestMgr::AddIconTooltip(std::string_view icon, std::string_view tooltip) {
const std::string text(tooltip);
this->m_iconTooltips[std::string(icon)] = text;
}
// OFFSET: 0x00677F40
// FUNCTION: fn_05439
std::string CRenewQuestMgr::GetFilterName(int filter) {
const std::map<int, RenewQuestFilter>::const_iterator found = this->m_filters.find(filter);
return this->m_filters.end() != found ? found->second.m_name : std::string("");
}
// OFFSET: 0x006780B0
// FUNCTION: fn_05440
std::string CRenewQuestMgr::GetMonsterConditionText(unsigned int flags, int minLevel, int maxLevel) {
std::string result;
std::string separator = " ";
if (flags != 0) {
if (flags & 0x20000) {
std::string text(LookupMessage(MSI_NAVIGATION_PROPERTY4));
text.erase(text.size() - 2, text.size());
result = result + text + separator;
}
if (flags & 0x40000) {
std::string text(LookupMessage(MSI_NAVIGATION_PROPERTY7));
text.erase(text.size() - 2, text.size());
result = result + text + separator;
}
if (flags & 0x80000) {
std::string text(LookupMessage(MSI_NAVIGATION_PROPERTY5));
text.erase(text.size() - 2, text.size());
result = result + text + separator;
}
if (flags & 0x100000) {
std::string text(LookupMessage(MSI_NAVIGATION_PROPERTY6));
text.erase(text.size() - 2, text.size());
result = result + text + separator;
}
if (flags & 0x200000) {
std::string text(LookupMessage(MSI_NAVIGATION_PROPERTY0));
text.erase(text.size() - 2, text.size());
result = result + text + separator;
}
if (flags & 0x400000) {
std::string text(LookupMessage(MSI_NAVIGATION_PROPERTY9));
text.erase(text.size() - 2, text.size());
result = result + text + separator;
}
if (flags & 0x800000) {
std::string text(LookupMessage(MSI_NAVIGATION_PROPERTY8));
text.erase(text.size() - 2, text.size());
result = result + text + separator;
}
if (flags & 0x1000000) {
std::string text(LookupMessage(MSI_NAVIGATION_SCALE1));
text.erase(text.size() - 2, text.size());
result = result + text + separator;
}
if (flags & 0x2000000) {
std::string text(LookupMessage(MSI_NAVIGATION_SCALE0));
text.erase(text.size() - 2, text.size());
result = result + text + separator;
}
if (flags & 0x4000000) {
std::string text(LookupMessage(MSI_NAVIGATION_SCALE2));
text.erase(text.size() - 2, text.size());
result = result + text + separator;
}
if (flags & 0x10) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_RACE3)) + separator;
}
if (flags & 0x20) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_RACE1)) + separator;
}
if (flags & 0x40) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_RACE2)) + separator;
}
if (flags & 0x80) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_RACE0)) + separator;
}
if (flags & 0x100) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_RACE5)) + separator;
}
if (flags & 0x200) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_RACE7)) + separator;
}
if (flags & 0x400) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_RACE8)) + separator;
}
if (flags & 0x800) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_RACE6)) + separator;
}
if (flags & 0x1000) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_RACE9)) + separator;
}
if (flags & 0x2000) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_MOVECLICK)) + separator;
}
if (flags & 0x4000) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_RACE4)) + separator;
}
if (flags & 0x8000) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_NPCCLICK)) + separator;
}
if (flags & 0x10000) {
result = result + std::string(LookupMessage(MSI_NAVIGATION_NPCMOVE)) + separator;
}
}
if (minLevel == 0) {
if (maxLevel > 0) {
result = result + " Lv." + IntToString(maxLevel, 0) + "▼";
}
} else if (minLevel > 0) {
if (maxLevel == 0) {
result = result + " Lv." + IntToString(minLevel, 0) + "▲";
} else if (minLevel < maxLevel) {
result = result + " Lv." + IntToString(minLevel, 0) + "~Lv." + IntToString(maxLevel, 0);
}
}
return result;
}
// OFFSET: 0x006792A0
// FUNCTION: fn_05441
std::string CRenewQuestMgr::GetIconTooltip(std::string_view icon) {
const std::map<std::string, std::string>::const_iterator found = this->m_iconTooltips.find(std::string(icon));
return this->m_iconTooltips.end() != found ? found->second : std::string("QUEST");
}
// OFFSET: 0x006794D0
// FUNCTION: fn_05442
std::string RenewQuestOngoingInfo::GetHuntText(int index) const {
if (index >= 3 || this->m_huntCount <= index) {
return std::string("");
}
std::string text;
const short minLevel = this->m_huntMinLevel[index];
const short maxLevel = this->m_huntMaxLevel[index];
if (this->m_huntMobId[index] == 31999) {
text = static_cast<const std::string&>(g_renewQuestMgr->GetMonsterConditionText(this->m_huntConditionFlags[index], minLevel, maxLevel));
} else {
const char* name = this->m_huntName[index];
if (this->m_huntMinLevel[index] >= 0 && this->m_huntMaxLevel[index] >= 0 && (minLevel != 0 || this->m_huntMaxLevel[index] != 0)) {
if (minLevel == 0) {
text = std::format("{} Lv.{}▼", name, maxLevel);
} else if (this->m_huntMaxLevel[index] != 0) {
text = std::format("{} Lv.{}~Lv.{}", name, minLevel, maxLevel);
} else {
text = std::format("{} Lv.{}▲", name, minLevel);
}
} else {
text = name;
}
}
const short goal = this->m_huntMaxCount[index];
if (goal > 0) {
const short count = this->m_huntKillCount[index];
if (count == goal) {
text = std::format("{} ( {} )", text, LookupMessage(MSI_COMPLETE_HUNTING_QUEST));
} else {
text = std::format("{} ( {} / {} )", text, count, goal);
}
}
return text;
}
// OFFSET: 0x00679920
// FUNCTION: fn_05443
const RenewQuestOngoingInfo& CRenewQuestMgr::GetOngoingQuest(unsigned int id) {
const auto found = this->m_ongoingQuests.find(id);
if (this->m_ongoingQuests.end() != found) {
return found->second;
}
// GLOBAL: gl_24857
static RenewQuestOngoingInfo empty;
return empty;
}
// OFFSET: 0x00679A00
// FUNCTION: fn_05444
RenewQuestOngoingInfo* CRenewQuestMgr::FindOngoingQuest(unsigned int id) {
const auto found = this->m_ongoingQuests.find(id);
if (this->m_ongoingQuests.end() != found) {
return &found->second;
}
return nullptr;
}
// OFFSET: 0x00679AF0
// FUNCTION: fn_05445
const RenewQuestRecommendedInfo& CRenewQuestMgr::GetRecommendedQuest(unsigned int id) {
const auto found = this->m_recommendedQuests.find(id);
if (this->m_recommendedQuests.end() != found) {
return found->second;
}
// GLOBAL: gl_24858
static RenewQuestRecommendedInfo empty;
return empty;
}
// OFFSET: 0x00679BD0
// FUNCTION: fn_05446
RenewQuestRecommendedInfo* CRenewQuestMgr::FindRecommendedQuest(unsigned int id) {
const auto found = this->m_recommendedQuests.find(id);
if (this->m_recommendedQuests.end() != found) {
return &found->second;
}
return nullptr;
}
// OFFSET: 0x00679C20
// FUNCTION: fn_05447
void CRenewQuestMgr::WriteOngoingQuests(char* buffer) {
int offset = 4;
*reinterpret_cast<unsigned int*>(buffer) = this->m_ongoingQuests.size();
for (auto it = this->m_ongoingQuests.begin(); it != this->m_ongoingQuests.end(); ++it) {
const RenewQuestOngoingInfo& info = it->second;
const char huntCount = info.m_huntCount;
RenewQuestOngoingRecord record = {};
record.state = info.m_state;
record.huntCount = huntCount;
record.year = info.m_year;
record.month = info.m_month;
record.day = info.m_day;
record.hour = info.m_hour;
record.minute = info.m_minute;
record.questId = it->first;
*reinterpret_cast<RenewQuestOngoingRecord*>(buffer + offset) = record;
offset += sizeof(RenewQuestOngoingRecord);
for (int index = 0; index < huntCount; ++index) {
RenewQuestHuntRecord hunt = {};
hunt.huntId = static_cast<int>(info.m_huntId[index]);
hunt.monsterCondition = info.m_huntConditionFlags[index];
hunt.monsterId = info.m_huntMobId[index];
hunt.minLevel = info.m_huntMinLevel[index];
hunt.maxLevel = info.m_huntMaxLevel[index];
hunt.killCount = info.m_huntKillCount[index];
hunt.killGoal = info.m_huntMaxCount[index];
strncpy_s(hunt.name, sizeof(hunt.name), info.m_huntName[index], _TRUNCATE);
*reinterpret_cast<RenewQuestHuntRecord*>(buffer + offset) = hunt;
offset += sizeof(RenewQuestHuntRecord);
}
}
}
// OFFSET: 0x00679E00
// FUNCTION: fn_05448
int CRenewQuestMgr::GetOngoingQuestsSize() {
int size = 4;
for (auto it = this->m_ongoingQuests.begin(); it != this->m_ongoingQuests.end(); ++it) {
size += it->second.m_huntCount * static_cast<int>(sizeof(RenewQuestHuntRecord));
}
return size + this->m_ongoingQuests.size() * sizeof(RenewQuestOngoingRecord);
}
// OFFSET: 0x00679E50
// FUNCTION: fn_05449
void CRenewQuestMgr::LoadQuestInfo() {
{
CLuaInstance lua;
lua.SetGlobal("AddQuestIconTooltip", L_AddQuestIconTooltip);
lua.SetGlobal("AddQuestFilterInfo", L_AddQuestFilterInfo);
if (!lua.LoadFile("System\\QuestClassificationInfo.lub", true)) {
return;
}
lua.Execute("LoadQuestIconTooltip");
lua.Execute("LoadQuestFilterInfo");
}
g_session.m_hotkeyScript->Register("AddOngoingDescription", L_AddOngoingDescription);
g_session.m_hotkeyScript->Register("AddOngoingRewardInfo", L_AddOngoingRewardInfo);
g_session.m_hotkeyScript->Register("InsertRecommededQuestInfo", L_InsertRecommendedQuestInfo);
g_session.m_hotkeyScript->Register("AddRecommendedQuestInfo", L_AddRecommendedQuestInfo);
g_session.m_hotkeyScript->Register("SetRecommendedQuestActive", L_SetRecommendedQuestActive);
g_session.m_hotkeyScript->Load("Lua Files\\DataInfo\\QuestInfo_f", true, false);
g_session.m_hotkeyScript->Load("savedata\\OngoingSimpleViewList", false, true);
g_session.m_hotkeyScript->Load("savedata\\RecommendedActiveList", false, true);
if (g_serviceMode == 1) {
g_session.m_hotkeyScript->Load("system\\OngoingQuestInfoList_Sakray", false, true);
g_session.m_hotkeyScript->Load("system\\RecommendedQuestInfoList_Sakray", false, true);
} else {
g_session.m_hotkeyScript->Load("system\\OngoingQuestInfoList_True", false, true);
g_session.m_hotkeyScript->Load("system\\RecommendedQuestInfoList_True", false, true);
}
g_session.m_hotkeyScript->Call("RecommendedQuestInfoLoad", "");
g_session.m_hotkeyScript->Call("RecommendedQuestActiveLoad", "");
}
// OFFSET: 0x0067A500
// FUNCTION: fn_05450
void CRenewQuestMgr::AddNewQuest(unsigned int id) {
this->m_newQuests.insert(id);
const auto found = this->m_statusRequests.find(id);
if (found != this->m_statusRequests.end()) {
this->m_statusRequests.erase(found);
}
}
// OFFSET: 0x0067A630
// FUNCTION: fn_05451
void CRenewQuestMgr::AddOngoingQuest(unsigned int id, RenewQuestOngoingInfo& info) {
int type = 0;
int destinationY = 0;
int destinationX = 0;
const char* text7 = nullptr;
const char* text6 = nullptr;
const char* text5 = nullptr;
const char* text4 = nullptr;
const char* text3 = nullptr;
const char* icon = nullptr;
const char* title = nullptr;
bool simpleView = true;
if (g_session.m_hotkeyScript->Call("GetOngoingQuestInfoByID", "d>bsssssssddd", id, &simpleView, &title, &icon, &text3, &text4, &text5, &text6,
&text7, &destinationX, &destinationY, &type)) {
info.m_title = title ? title : "";
info.m_icon = icon ? icon : "";
info.summary = text3 ? text3 : "";
info.npcSprite = text4 ? text4 : "";
info.destinationMap = text5 ? text5 : "";
info.baseExpReward = text6 ? text6 : "";
info.jobExpReward = text7 ? text7 : "";
info.destinationX = destinationX;
info.destinationY = destinationY;
info.m_simpleView = simpleView;
info.questType = type;
if (type == 1) {
info.m_simpleView = false;
}
info.m_iconTooltip = this->GetIconTooltip(info.m_icon);
}
UIWindow* window = reinterpret_cast<UIWindow*>(g_windowMgr.basicInfoWnd);
if (window != nullptr) {
info.m_title = window->FitDisplayText(250, info.m_title.c_str(), 0, 12, 1);
info.summary = window->FitDisplayText(250, info.summary.c_str(), 0, 12, 0);
}
this->m_ongoingQuests.erase(id);
this->m_ongoingQuests.insert(std::pair<const unsigned int, RenewQuestOngoingInfo>(id, info));
g_session.m_hotkeyScript->Call("GetOngoingDescription", "d", id);
g_session.m_hotkeyScript->Call("GetOngoingRewardInfo", "d", id);
}
// OFFSET: 0x0067ACE0
// FUNCTION: fn_05452
void CRenewQuestMgr::AddRecommendedQuest(unsigned int id, const RenewQuestRecommendedInfo& info) {
this->m_recommendedQuests.erase(id);
this->m_recommendedQuests.insert(std::pair<const unsigned int, RenewQuestRecommendedInfo>(id, info));
}
// OFFSET: 0x0067AEB0
// FUNCTION: fn_05453
bool CRenewQuestMgr::IsNewQuest(unsigned int id) {
return this->m_newQuests.find(id) != this->m_newQuests.end();
}
// OFFSET: 0x0067AF00
// FUNCTION: fn_05454
bool CRenewQuestMgr::IsInFilter(int filter, std::string_view icon) {
switch (filter) {
case 0:
return true;
case 1:
for (const auto& entry : this->m_filters) {
const std::list<std::string>& icons = entry.second.m_icons;
if (icons.end() != std::find(icons.begin(), icons.end(), icon)) {
return false;
}
}
return true;
default: {
const auto found = this->m_filters.find(filter);
if (this->m_filters.end() == found) {
return false;
}
const std::list<std::string>& icons = found->second.m_icons;
return icons.end() != std::find(icons.begin(), icons.end(), icon);
}
}
}
// OFFSET: 0x0067B030
// FUNCTION: fn_05455
int CRenewQuestMgr::L_AddQuestFilterInfo(lua_State* state) {
const lua_Number id = lua_tonumber(state, -3);
const std::string name = lua_tostring(state, -2);
std::list<std::string> icons;
if (lua_type(state, -1) != LUA_TNIL) {
lua_pushnil(state);
while (lua_next(state, -2) != 0) {
icons.emplace_back(lua_tostring(state, -1));
lua_pop(state, 1);
}
}
g_renewQuestMgr->m_filters.try_emplace(static_cast<int>(id), RenewQuestFilter{std::string(name.c_str(), name.size()), std::move(icons)});
return 0;
}
// OFFSET: 0x0067B460
// FUNCTION: fn_05456
int CRenewQuestMgr::L_AddQuestIconTooltip(lua_State* state) {
const std::string icon = lua_tostring(state, -2);
const std::string tooltip = lua_tostring(state, -1);
g_renewQuestMgr->AddIconTooltip(icon, tooltip);
return 0;
}
// OFFSET: 0x0067B620
// FUNCTION: fn_05457
void CRenewQuestMgr::ShowOngoingQuestInfo(unsigned int questId) {
if (auto* window = static_cast<CUIOngoingQuestInfo*>(g_windowMgr.EnsureWindow(WID_ONGOINGQUESTINFO))) {
window->SetQuest(questId);
}
}
// OFFSET: 0x0067B650
// FUNCTION: fn_05458
void CRenewQuestMgr::ShowQuestInfo(unsigned int questId) {
if (auto* window = static_cast<CUIRenewQuestUI*>(g_windowMgr.EnsureWindow(WID_RENEWQUESTUI))) {
window->UpdateQuestLists(0xF);
window->SelectQuest(questId);
}
}
// OFFSET: 0x0067B690
// FUNCTION: fn_05459
void CRenewQuestMgr::UpdateOngoingQuestInfo() {
if (auto* window = static_cast<CUIOngoingQuestInfo*>(g_windowMgr.LookupWindow(WID_ONGOINGQUESTINFO))) {
window->UpdateHuntInfo();
}
}
// OFFSET: 0x0067B6B0
// FUNCTION: fn_05460
void CRenewQuestMgr::UpdateQuestWindows() {
if (g_windowMgr.questDisplayWnd != nullptr) {
g_windowMgr.questDisplayWnd->Invalidate();
}
if (auto* window = static_cast<CUIRenewQuestUI*>(g_windowMgr.LookupWindow(WID_RENEWQUESTUI))) {
window->UpdateQuestLists(0xD);
}
}
// OFFSET: 0x0067B6E0
// FUNCTION: fn_05461
void CRenewQuestMgr::SendQuestStatusRequest() {
PACKET_CZ_QUEST_STATUS_REQ header;
header.packetType = ID_CZ_QUEST_STATUS_REQ;
PACKET_CZ_QUEST_STATUS_REQ_BUFFER packet;
const unsigned int length = this->m_statusRequests.size() * sizeof(unsigned int) + sizeof(PACKET_CZ_QUEST_STATUS_REQ);
std::memset(packet.questIds, 0, sizeof(packet.questIds));
if (length > sizeof(packet)) {
return;
}
header.packetLength = static_cast<std::int16_t>(length);
packet.header = header;
unsigned int* questId = packet.questIds;
for (const unsigned int& id : this->m_statusRequests) {
memcpy_s(questId, sizeof(unsigned int), &id, sizeof(unsigned int));
++questId;
}
GetRagConnection().Send(length, &packet);
}
// OFFSET: 0x0067B800
// FUNCTION: fn_05462
bool CRenewQuestMgr::SetOngoingQuestState(unsigned int id, unsigned char state) {
const auto found = this->m_ongoingQuests.find(id);
if (this->m_ongoingQuests.end() != found) {
found->second.m_state = state;
return true;
}
return false;
}
// OFFSET: 0x0067B850
// FUNCTION: fn_05463
bool CRenewQuestMgr::SetRecommendedQuestActive(unsigned int id, bool active) {
const auto found = this->m_recommendedQuests.find(id);
if (this->m_recommendedQuests.end() != found) {
found->second.m_active = active;
return true;
}
return false;
}
// OFFSET: 0x0067B8A0
// FUNCTION: fn_05464
bool CRenewQuestMgr::SetOngoingSimpleView(unsigned int id, bool simpleView) {
const auto found = this->m_ongoingQuests.find(id);
if (this->m_ongoingQuests.end() == found) {
return false;
}
found->second.m_simpleView = simpleView;
return true;
}
// OFFSET: 0x0067B8F0
// FUNCTION: fn_05465
void CRenewQuestMgr::ReadOngoingQuests(const char* buffer, unsigned int) {
int offset = 4;
const unsigned int count = *reinterpret_cast<const unsigned int*>(buffer);
for (unsigned int index = 0; index < count; ++index) {
const RenewQuestOngoingRecord record = *reinterpret_cast<const RenewQuestOngoingRecord*>(buffer + offset);
offset += sizeof(RenewQuestOngoingRecord);
if (!this->SetOngoingQuestState(record.questId, static_cast<unsigned char>(record.state))) {
RenewQuestOngoingInfo info;
info.m_state = static_cast<unsigned char>(record.state);
info.m_year = record.year;
info.m_month = record.month;
info.m_day = record.day;
info.m_hour = record.hour;
info.m_minute = static_cast<unsigned short>(record.minute);
info.m_huntCount = static_cast<char>(record.huntCount);
for (int hunt = 0; hunt < record.huntCount; ++hunt) {
if (this->m_parameter == 0x33) {
RenewQuestHuntRecord huntRecord;
memcpy_s(&huntRecord, sizeof(huntRecord), buffer + offset, sizeof(huntRecord));
info.m_huntId[hunt] = huntRecord.huntId;
info.m_huntConditionFlags[hunt] = huntRecord.monsterCondition;
info.m_huntMobId[hunt] = huntRecord.monsterId;
info.m_huntKillCount[hunt] = huntRecord.killCount;
info.m_huntMaxCount[hunt] = huntRecord.killGoal;
info.m_huntMinLevel[hunt] = huntRecord.minLevel;
info.m_huntMaxLevel[hunt] = huntRecord.maxLevel;
strncpy_s(info.m_huntName[hunt], sizeof(info.m_huntName[hunt]), huntRecord.name, _TRUNCATE);
offset += sizeof(RenewQuestHuntRecord);
} else {
RenewQuestShortHuntRecord huntRecord;
memcpy_s(&huntRecord, sizeof(huntRecord), buffer + offset, sizeof(huntRecord));
info.m_huntId[hunt] = huntRecord.huntId;
info.m_huntConditionFlags[hunt] = huntRecord.monsterCondition;
info.m_huntMobId[hunt] = huntRecord.monsterId;
info.m_huntKillCount[hunt] = huntRecord.killCount;
info.m_huntMaxCount[hunt] = huntRecord.killGoal;
info.m_huntMinLevel[hunt] = huntRecord.minLevel;
info.m_huntMaxLevel[hunt] = huntRecord.maxLevel;
strncpy_s(info.m_huntName[hunt], sizeof(info.m_huntName[hunt]), huntRecord.name, sizeof(huntRecord.name));
offset += sizeof(RenewQuestShortHuntRecord);
}
}
this->AddOngoingQuest(record.questId, info);
}
}
if (g_windowMgr.questDisplayWnd != nullptr) {
g_windowMgr.questDisplayWnd->Invalidate();
}
if (auto* window = static_cast<CUIRenewQuestUI*>(g_windowMgr.LookupWindow(WID_RENEWQUESTUI))) {
window->UpdateQuestLists(0xD);
}
}
// OFFSET: 0x0067BF90
// FUNCTION: fn_05466
void CRenewQuestMgr::SetParameter(int key, int value) {
if (key == 3502) {
this->m_parameter = value;
}
}
// OFFSET: 0x0067BFB0
// FUNCTION: fn_05467
void CRenewQuestMgr::SaveOngoingSimpleViewList() {
std::string path = "SaveData\\OngoingSimpleViewList.lua";
CFile file;
if (file.Open(path.c_str(), 0x1001, true, true)) {
std::string text = "OngoingSimpleViewList = {}\r\n\r\n";
file.Write(text.c_str(), text.size());
text = "OngoingSimpleViewList = \r\n{\r\n";
file.Write(text.c_str(), text.size());
for (auto it = this->m_ongoingQuests.begin(); it != this->m_ongoingQuests.end(); ++it) {
if (!it->second.m_simpleView) {
text = '\t' + IntToString(it->first, 0) + ",\r\n";
file.Write(text.c_str(), text.size());
}
}
text = "}";
file.Write(text.c_str(), text.size());
file.Close();
}
}
// OFFSET: 0x0067C5A0
// FUNCTION: fn_05468
void CRenewQuestMgr::SaveRecommendedActiveList() {
std::string path = "SaveData\\RecommendedActiveList.lua";
CFile file;
if (file.Open(path.c_str(), 0x1001, true, true)) {
std::string text = "RecommendedActiveList = {}\r\n\r\n";
file.Write(text.c_str(), text.size());
text = "RecommendedActiveList = \r\n{\r\n";
file.Write(text.c_str(), text.size());
for (auto it = this->m_recommendedQuests.begin(); it != this->m_recommendedQuests.end(); ++it) {
if (!it->second.m_active) {
text = '\t' + IntToString(it->first, 0) + ",\r\n";
file.Write(text.c_str(), text.size());
}
}
text = "}";
file.Write(text.c_str(), text.size());
file.Close();
}
}
// OFFSET: 0x0067E370
// FUNCTION: fn_05493
int CRenewQuestMgr::L_AddOngoingDescription(lua_State* state) {
const unsigned int id = static_cast<unsigned int>(luaL_checknumber(state, 1));
std::string description = luaL_checkstring(state, 2);
DecodeTextEscapes(description);
g_renewQuestMgr->m_ongoingQuests[id].m_descriptions.push_back(description);
return 0;
}
// OFFSET: 0x0067E4C0
// FUNCTION: fn_05494
int CRenewQuestMgr::L_AddOngoingRewardInfo(lua_State* state) {
const unsigned int id = static_cast<unsigned int>(luaL_checknumber(state, 1));
const unsigned int item = static_cast<unsigned int>(luaL_checknumber(state, 2));
const unsigned int count = static_cast<unsigned int>(luaL_checknumber(state, 3));
g_renewQuestMgr->m_ongoingQuests[id].m_rewards.push_back(std::make_pair(item, count));
return 0;
}
// OFFSET: 0x0067E570
// FUNCTION: fn_05495
int CRenewQuestMgr::L_AddRecommendedQuestInfo(lua_State* state) {
const unsigned int id = static_cast<unsigned int>(luaL_checknumber(state, 1));
const int index = static_cast<int>(luaL_checknumber(state, 2));
std::string description = luaL_checkstring(state, 3);
DecodeTextEscapes(description);
g_renewQuestMgr->m_recommendedQuests[id].m_descriptions[index].push_back(description);
return 0;
}
// OFFSET: 0x0067E770
// FUNCTION: fn_05496
int CRenewQuestMgr::L_InsertRecommendedQuestInfo(lua_State* state) {
RenewQuestRecommendedInfo info;
const unsigned int id = static_cast<unsigned int>(luaL_checknumber(state, 1));
info.m_active = true;
info.m_title = luaL_checkstring(state, 2);
info.m_icon = luaL_checkstring(state, 3);
info.summary = luaL_checkstring(state, 4);
info.backgroundImage = luaL_checkstring(state, 5);
info.npcSprite = luaL_checkstring(state, 6);
info.destinationMap = luaL_checkstring(state, 7);
info.destinationX = static_cast<int>(luaL_checknumber(state, 8));
info.destinationY = static_cast<int>(luaL_checknumber(state, 9));
info.m_iconTooltip = g_renewQuestMgr->GetIconTooltip(info.m_icon);
g_renewQuestMgr->AddRecommendedQuest(id, info);
return 0;
}
// OFFSET: 0x0067E9F0
// FUNCTION: fn_05497
int CRenewQuestMgr::L_SetRecommendedQuestActive(lua_State* state) {
const unsigned int id = static_cast<unsigned int>(luaL_checknumber(state, 1));
CRenewQuestMgr* manager = g_renewQuestMgr;
const auto found = manager->m_recommendedQuests.find(id);
if (manager->m_recommendedQuests.end() != found) {
found->second.m_active = false;
}
return 0;
}