From 894a7f1ac3faf5dd3c520b40c18a9d20cd462dbf Mon Sep 17 00:00:00 2001 From: 0O0o0oOoO00 <11174151+0o0o0oooo00@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:01:44 +0800 Subject: [PATCH] add: SKIP_ENEMY_SCAN, SKIP_BATTLE_RESULT, SKIP_ENTER_BATTLE crack --- blcrack/cracker/cracker.cpp | 142 ++ blcrack/cracker/cracker.hpp | 30 + blcrack/cracker/server.cpp | 94 + blcrack/cracker/ui/ui.cpp | 9 + config/template.json | 2730 +++++++++++++++++++++++- module/config/argument/args.json | 12 + module/config/argument/argument.yaml | 3 + module/config/config_generated.py | 3 + module/config/full_config_generated.py | 3 + module/config/i18n/en-US.json | 12 + module/config/i18n/ja-JP.json | 12 + module/config/i18n/zh-CN.json | 12 + module/config/i18n/zh-TW.json | 12 + module/luahook/api.py | 24 + module/luahook/crack.py | 29 + module/luahook/op.py | 18 + 16 files changed, 3144 insertions(+), 1 deletion(-) diff --git a/blcrack/cracker/cracker.cpp b/blcrack/cracker/cracker.cpp index 01f5b88d2..b4754c22b 100644 --- a/blcrack/cracker/cracker.cpp +++ b/blcrack/cracker/cracker.cpp @@ -326,6 +326,39 @@ void Cracker::disable_all() { disable_skip_air_strike_animation(); disable_auto_once_again(); disable_auto_retire(); + disable_skip_enemy_scan(); + disable_skip_battle_result(); + disable_skip_enter_battle(); +} + +void Cracker::enable_skip_enemy_scan() { + ENABLE(SKIP_ENEMY_SCAN); +} + +void Cracker::disable_skip_enemy_scan() { + DISABLE(SKIP_ENEMY_SCAN); +} + +void Cracker::enable_skip_battle_result() { + ENABLE(SKIP_BATTLE_RESULT); +} + +void Cracker::disable_skip_battle_result() { + DISABLE(SKIP_BATTLE_RESULT); +} + +void Cracker::skip_enter_battle_pause(bool need_pause) { + m_skip_enter_battle_need_pause.store(need_pause); +} + +void Cracker::enable_skip_enter_battle() { + ENABLE(SKIP_ENTER_BATTLE); + clear_combat_delay_active(); +} + +void Cracker::disable_skip_enter_battle() { + DISABLE(SKIP_ENTER_BATTLE); + restore_combat_delay_active(); } void Cracker::enable_auto_retire() { @@ -781,6 +814,9 @@ void Cracker::load_lua_resources() { m_lua_res.BayProxy_findShipsByGroup = m_state["BayProxy"]["findShipsByGroup"]; m_lua_res._map = m_state["_"]["map"]; m_lua_res._select = m_state["_"]["select"]; + m_lua_res.NewBattleResultScene_GoBack = m_state["NewBattleResultScene"]["GoBack"]; + m_lua_res.ys_Battle_BattleConfig_COMBAT_DELAY_ACTIVE = m_state["ys"]["Battle"]["BattleConfig"]["COMBAT_DELAY_ACTIVE"]; + m_lua_res.LevelScene_unfrozen = m_state["LevelScene"]["unfrozen"]; SPDLOG_INFO("Load lua functions"); m_original.GetBattleCheckResult = m_state["GetBattleCheckResult"]; @@ -823,11 +859,60 @@ void Cracker::load_lua_resources() { m_original.ActivityProxy_UseContinuousTime = m_state["ActivityProxy"]["UseContinuousTime"]; m_original.LevelScene_doPlayAirStrike = m_state["LevelScene"]["doPlayAirStrike"]; m_original.LevelStageTotalRewardPanel_UpdateView = m_state["LevelStageTotalRewardPanel"]["UpdateView"]; + m_original.NewBattleResultScene_SetUp = m_state["NewBattleResultScene"]["SetUp"]; + m_original.ys_Battle_BattleUIMediator_SeaSurfaceShift = m_state["ys"]["Battle"]["BattleUIMediator"]["SeaSurfaceShift"]; + m_original.LevelScene_doTracking = m_state["LevelScene"]["doTracking"]; } void Cracker::hook_all_lua_functions() { SPDLOG_INFO("Hook lua functions"); + // skip_enemy_scan + m_state["LevelScene"]["doTracking"] = [this](sol::this_state L, Lua::VariadicArgs args) { + CALLED(LevelScene.doTracking); + + if (IS_ENABLED(SKIP_ENEMY_SCAN)) { + if (args.size() >= 2) { + Lua::Object self = args[0]; + Lua::Object callback = args[1]; + if (callback.get_type() == sol::type::function) { + m_lua_res.LevelScene_unfrozen(L, self); + callback.as()(); + return; + } + } + } + m_original.LevelScene_doTracking(L, args); + }; + + // skip_enter_battle + m_state["ys"]["Battle"]["BattleUIMediator"]["SeaSurfaceShift"] = [this](sol::this_state L, Lua::VariadicArgs args) { + CALLED(ys.Battle.BattleUIMediator.SeaSurfaceShift); + + if (IS_ENABLED(SKIP_ENTER_BATTLE)) { + if (args.size() >= 5) { + Lua::Object callback = args[4]; + if (callback.get_type() == sol::type::function) { + callback.as()(); + return; + } + } + } + m_original.ys_Battle_BattleUIMediator_SeaSurfaceShift(L, args); + }; + + // skip_battle_result + m_state["NewBattleResultScene"]["SetUp"] = [this](sol::this_state L, Lua::VariadicArgs args) { + CALLED(NewBattleResultScene.SetUp); + + if (IS_ENABLED(SKIP_BATTLE_RESULT)) { + Lua::Object self = args[0]; + m_lua_res.NewBattleResultScene_GoBack(L, self); + return; + } + m_original.NewBattleResultScene_SetUp(L, args); + }; + // auto_once_again m_state["LevelStageTotalRewardPanel"]["UpdateView"] = [this](sol::this_state L, Lua::VariadicArgs args) { CALLED(LevelStageTotalRewardPanel.UpdateView) @@ -1839,6 +1924,9 @@ Cracker::Config Cracker::get_config() { SET_CONFIG_FLAG(SKIP_AIR_STRIKE_ANIMATION), SET_CONFIG_FLAG(AUTO_ONCE_AGAIN), SET_CONFIG_FLAG(AUTO_RETIRE), + SET_CONFIG_FLAG(SKIP_ENEMY_SCAN), + SET_CONFIG_FLAG(SKIP_BATTLE_RESULT), + SET_CONFIG_FLAG(SKIP_ENTER_BATTLE), }, .globle_ship_properties = m_globle_ship_properties, .global_speedup_rate = static_cast(m_global_speedup_rate), @@ -1853,6 +1941,24 @@ Cracker::Config Cracker::get_config() { #define IS_CONFIG_ENABLED(n) config.flag.n void Cracker::apply_config(Config& config) { + if(IS_CONFIG_ENABLED(SKIP_ENEMY_SCAN)) { + enable_skip_enemy_scan(); + } else { + disable_skip_enemy_scan(); + } + + if(IS_CONFIG_ENABLED(SKIP_BATTLE_RESULT)) { + enable_skip_battle_result(); + } else { + disable_skip_battle_result(); + } + + if(IS_CONFIG_ENABLED(SKIP_ENTER_BATTLE)) { + enable_skip_enter_battle(); + } else { + disable_skip_enter_battle(); + } + if(IS_CONFIG_ENABLED(AUTO_RETIRE)) { enable_auto_retire(); } else { @@ -2031,6 +2137,42 @@ void Cracker::apply_config(Config& config) { } } +void Cracker::clear_combat_delay_active() { + if (m_skip_enter_battle_need_pause.load()) { + clear_combat_delay_active_with_pause(); + } else { + clear_combat_delay_active_without_pause(); + } +} + +void Cracker::clear_combat_delay_active_with_pause() { + m_lua_state_pauser.do_when_paused([&]() { + m_state["ys"]["Battle"]["BattleConfig"]["COMBAT_DELAY_ACTIVE"] = 0; + }); +} + +void Cracker::clear_combat_delay_active_without_pause() { + m_state["ys"]["Battle"]["BattleConfig"]["COMBAT_DELAY_ACTIVE"] = 0; +} + +void Cracker::restore_combat_delay_active() { + if (m_skip_enter_battle_need_pause.load()) { + restore_combat_delay_active_with_pause(); + } else { + restore_combat_delay_active_without_pause(); + } +} + +void Cracker::restore_combat_delay_active_with_pause() { + m_lua_state_pauser.do_when_paused([&]() { + m_state["ys"]["Battle"]["BattleConfig"]["COMBAT_DELAY_ACTIVE"] = m_lua_res.ys_Battle_BattleConfig_COMBAT_DELAY_ACTIVE; + }); +} + +void Cracker::restore_combat_delay_active_without_pause() { + m_state["ys"]["Battle"]["BattleConfig"]["COMBAT_DELAY_ACTIVE"] = m_lua_res.ys_Battle_BattleConfig_COMBAT_DELAY_ACTIVE; +} + void Cracker::clear_emotion_threshold() { if (m_no_emotion_warning_need_pause.load()) { clear_emotion_threshold_with_pause(); diff --git a/blcrack/cracker/cracker.hpp b/blcrack/cracker/cracker.hpp index db9b7947b..e70983163 100644 --- a/blcrack/cracker/cracker.hpp +++ b/blcrack/cracker/cracker.hpp @@ -120,6 +120,9 @@ public: bool SKIP_AIR_STRIKE_ANIMATION = false; bool AUTO_ONCE_AGAIN = false; bool AUTO_RETIRE = false; + bool SKIP_ENEMY_SCAN = false; + bool SKIP_BATTLE_RESULT = false; + bool SKIP_ENTER_BATTLE = false; } flag; ShipProperties globle_ship_properties; int global_speedup_rate = 1; @@ -156,6 +159,16 @@ public: void disable_all(); + void enable_skip_enemy_scan(); + void disable_skip_enemy_scan(); + + void enable_skip_battle_result(); + void disable_skip_battle_result(); + + void skip_enter_battle_pause(bool need_pause); + void enable_skip_enter_battle(); + void disable_skip_enter_battle(); + void enable_auto_retire(); void disable_auto_retire(); @@ -271,6 +284,13 @@ public: void apply_config(Config& config); private: + void clear_combat_delay_active(); + void clear_combat_delay_active_with_pause(); + void clear_combat_delay_active_without_pause(); + void restore_combat_delay_active(); + void restore_combat_delay_active_with_pause(); + void restore_combat_delay_active_without_pause(); + void clear_emotion_threshold(); void clear_emotion_threshold_with_pause(); void clear_emotion_threshold_without_pause(); @@ -358,6 +378,9 @@ private: std::atomic SKIP_AIR_STRIKE_ANIMATION = false; std::atomic AUTO_ONCE_AGAIN = false; std::atomic AUTO_RETIRE = false; + std::atomic SKIP_ENEMY_SCAN = false; + std::atomic SKIP_BATTLE_RESULT = false; + std::atomic SKIP_ENTER_BATTLE = false; } m_flag; struct { @@ -410,6 +433,9 @@ private: Lua::Function ActivityProxy_UseContinuousTime; Lua::Function LevelScene_doPlayAirStrike; Lua::Function LevelStageTotalRewardPanel_UpdateView; + Lua::Function NewBattleResultScene_SetUp; + Lua::Function ys_Battle_BattleUIMediator_SeaSurfaceShift; + Lua::Function LevelScene_doTracking; } m_original; struct { Lua::Function Clone; @@ -473,6 +499,9 @@ private: Lua::Function BayProxy_findShipsByGroup; Lua::Function _map; Lua::Function _select; + Lua::Function NewBattleResultScene_GoBack; + double ys_Battle_BattleConfig_COMBAT_DELAY_ACTIVE; + Lua::Function LevelScene_unfrozen; } m_lua_res; struct { @@ -504,6 +533,7 @@ private: std::atomic m_skip_battle_celebrate_need_pause = false; std::atomic m_fast_stage_move_need_pause = false; std::atomic m_no_emotion_warning_need_pause = false; + std::atomic m_skip_enter_battle_need_pause = false; static std::vector s_shipStatus; static std::vector s_excludedShips; diff --git a/blcrack/cracker/server.cpp b/blcrack/cracker/server.cpp index 14344dd7e..138ecaa12 100644 --- a/blcrack/cracker/server.cpp +++ b/blcrack/cracker/server.cpp @@ -19,6 +19,7 @@ CrackerServer::CrackerServer() { ins.better_global_speedup_pause(true); ins.skip_battle_celebrate_pause(true); ins.fast_stage_move_pause(true); + ins.skip_enter_battle_pause(true); ins.disable_all(); } catch (std::exception& e) { SPDLOG_ERROR("Disable all failed: {}", e.what()); @@ -34,6 +35,7 @@ CrackerServer::CrackerServer() { ins.better_global_speedup_pause(false); ins.skip_battle_celebrate_pause(false); ins.fast_stage_move_pause(false); + ins.skip_enter_battle_pause(false); ins.disable_all(); } catch (std::exception& e) { SPDLOG_ERROR("Disable all failed: {}", e.what()); @@ -1286,6 +1288,98 @@ CrackerServer::CrackerServer() { CRACK_OK(); }); + Post("/enable_skip_enemy_scan", [](const httplib::Request& req, httplib::Response& res) { + try { + Cracker::Instance().enable_skip_enemy_scan(); + } catch (std::exception& e) { + SPDLOG_ERROR("Enable skip enemy scan failed: {}", e.what()); + res.status = 500; + return; + } + CRACK_OK(); + }); + + Post("/disable_skip_enemy_scan", [](const httplib::Request& req, httplib::Response& res) { + try { + Cracker::Instance().disable_skip_enemy_scan(); + } catch (std::exception& e) { + SPDLOG_ERROR("Disable skip enemy scan failed: {}", e.what()); + res.status = 500; + return; + } + CRACK_OK(); + }); + + Post("/enable_skip_battle_result", [](const httplib::Request& req, httplib::Response& res) { + try { + Cracker::Instance().enable_skip_battle_result(); + } catch (std::exception& e) { + SPDLOG_ERROR("Enable skip battle result failed: {}", e.what()); + res.status = 500; + return; + } + CRACK_OK(); + }); + + Post("/disable_skip_battle_result", [](const httplib::Request& req, httplib::Response& res) { + try { + Cracker::Instance().disable_skip_battle_result(); + } catch (std::exception& e) { + SPDLOG_ERROR("Disable skip battle result failed: {}", e.what()); + res.status = 500; + return; + } + CRACK_OK(); + }); + + Post("/enable_skip_enter_battle", [](const httplib::Request& req, httplib::Response& res) { + try { + Cracker::Instance().enable_skip_enter_battle(); + } catch (std::exception& e) { + SPDLOG_ERROR("Enable skip enter battle failed: {}", e.what()); + res.status = 500; + return; + } + CRACK_OK(); + }); + + Post("/disable_skip_enter_battle", [](const httplib::Request& req, httplib::Response& res) { + try { + Cracker::Instance().disable_skip_enter_battle(); + } catch (std::exception& e) { + SPDLOG_ERROR("Disable skip enter battle failed: {}", e.what()); + res.status = 500; + return; + } + CRACK_OK(); + }); + + Post("/enable_skip_enter_battle_without_pause", [](const httplib::Request& req, httplib::Response& res) { + try { + auto& ins = Cracker::Instance(false); + ins.skip_enter_battle_pause(false); + ins.enable_skip_enter_battle(); + } catch (std::exception& e) { + SPDLOG_ERROR("Enable skip enter battle failed: {}", e.what()); + res.status = 500; + return; + } + CRACK_OK(); + }); + + Post("/disable_skip_enter_battle_without_pause", [](const httplib::Request& req, httplib::Response& res) { + try { + auto& ins = Cracker::Instance(false); + ins.skip_enter_battle_pause(false); + ins.disable_skip_enter_battle(); + } catch (std::exception& e) { + SPDLOG_ERROR("Disable skip enter battle failed: {}", e.what()); + res.status = 500; + return; + } + CRACK_OK(); + }); + Post("/enable_auto_retire", [](const httplib::Request& req, httplib::Response& res) { try { Cracker::Instance().enable_auto_retire(); diff --git a/blcrack/cracker/ui/ui.cpp b/blcrack/cracker/ui/ui.cpp index 89c87c482..4c1b4b8a5 100644 --- a/blcrack/cracker/ui/ui.cpp +++ b/blcrack/cracker/ui/ui.cpp @@ -92,6 +92,7 @@ void CrackerUI::draw_menu() { ins.skip_battle_celebrate_pause(false); ins.fast_stage_move_pause(false); ins.no_emotion_warning_pause(false); + ins.skip_enter_battle_pause(false); ins.apply_config(m_cracker_config); } ImGui::SameLine(); @@ -116,6 +117,9 @@ void CrackerUI::draw_menu() { PRESET(CHAPTER_AUTO_NEXT_BATTLE); PRESET(CHAPTER_AUTO_CLEAR); PRESET(SKIP_AIR_STRIKE_ANIMATION); + PRESET(SKIP_ENEMY_SCAN); + PRESET(SKIP_BATTLE_RESULT); + PRESET(SKIP_ENTER_BATTLE); } ImGui::SameLine(); if (ImGui::Button("加载大世界开荒预设")) { @@ -126,6 +130,8 @@ void CrackerUI::draw_menu() { PRESET(OPSI_NO_MAP_FOG); PRESET(FAST_WAVE); PRESET(MONSTER_KILL_SELF); + PRESET(SKIP_BATTLE_RESULT); + PRESET(SKIP_ENTER_BATTLE); } if(ImGui::BeginTable("MiscTable", 3)) { ImGui::TableNextColumn(); @@ -137,6 +143,7 @@ void CrackerUI::draw_menu() { ImGui::Checkbox("跳过战斗胜利庆祝", &CONFIG_FLAG(SKIP_BATTLE_CELEBRATE)); ImGui::Checkbox("章节图强制开启自动战斗", &CONFIG_FLAG(CHAPTER_FORCE_ENABLE_AUTO_FIGHT)); ImGui::Checkbox("章节图跳过战前准备", &CONFIG_FLAG(CHAPTER_SKIP_PRECOMBAT)); + ImGui::Checkbox("章节图跳过索敌", &CONFIG_FLAG(SKIP_ENEMY_SCAN)); ImGui::Checkbox("演习我方伤害增加 X %", &CONFIG_FLAG(EXERCISE_MORE_POWER)); ImGui::DragInt("(%)##Exercise Power Rate", &m_cracker_config.exercise_more_power_rate); @@ -150,6 +157,7 @@ void CrackerUI::draw_menu() { ImGui::Checkbox("无伤害无击杀", &CONFIG_FLAG(NO_DAMAGE)); ImGui::Checkbox("全皮肤", &CONFIG_FLAG(ALL_SKIN)); ImGui::Checkbox("跳过舰船获取展示", &CONFIG_FLAG(SKIP_SHIP_GAIN_SHOW)); + ImGui::Checkbox("跳过战斗结算", &CONFIG_FLAG(SKIP_BATTLE_RESULT)); ImGui::Text("章节图自动开荒移动间隔(s)"); ImGui::InputDouble("##StepInterval", &m_cracker_config.chapter_auto_clear_step_interval, 0.1f, 0, "%.1f"); @@ -164,6 +172,7 @@ void CrackerUI::draw_menu() { ImGui::Checkbox("无限连战", &CONFIG_FLAG(INFINITE_BATTLE)); ImGui::Checkbox("自动再次前往", &CONFIG_FLAG(AUTO_ONCE_AGAIN)); ImGui::Checkbox("自动退役", &CONFIG_FLAG(AUTO_RETIRE)); + ImGui::Checkbox("跳过战斗进场", &CONFIG_FLAG(SKIP_ENTER_BATTLE)); ImGui::EndTable(); } diff --git a/config/template.json b/config/template.json index ec747fa47..f6d50f309 100644 --- a/config/template.json +++ b/config/template.json @@ -1 +1,2729 @@ -null \ No newline at end of file +{ + "Dashboard": { + "Oil": { + "Value": 0, + "Limit": 0, + "Color": "^000000", + "Record": "2020-01-01 00:00:00" + }, + "Coin": { + "Value": 0, + "Limit": 0, + "Color": "^FFAA33", + "Record": "2020-01-01 00:00:00" + }, + "Gem": { + "Value": 0, + "Color": "^FF3333", + "Record": "2020-01-01 00:00:00" + }, + "Pt": { + "Value": 0, + "Color": "^00BFFF", + "Record": "2020-01-01 00:00:00" + }, + "Cube": { + "Value": 0, + "Color": "^33FFFF", + "Record": "2020-01-01 00:00:00" + }, + "ActionPoint": { + "Value": 0, + "Total": 0, + "Color": "^0000FF", + "Record": "2020-01-01 00:00:00" + }, + "YellowCoin": { + "Value": 0, + "Color": "^FF8800", + "Record": "2020-01-01 00:00:00" + }, + "PurpleCoin": { + "Value": 0, + "Color": "^7700BB", + "Record": "2020-01-01 00:00:00" + }, + "Core": { + "Value": 0, + "Color": "^AAAAAA", + "Record": "2020-01-01 00:00:00" + }, + "Medal": { + "Value": 0, + "Color": "^FFDD00", + "Record": "2020-01-01 00:00:00" + }, + "Merit": { + "Value": 0, + "Color": "^FFFF00", + "Record": "2020-01-01 00:00:00" + }, + "GuildCoin": { + "Value": 0, + "Color": "^AAAAAA", + "Record": "2020-01-01 00:00:00" + }, + "Storage": { + "Storage": {} + } + }, + "Alas": { + "Emulator": { + "Serial": "auto", + "PackageName": "auto", + "ServerName": "disabled", + "ScreenshotMethod": "auto", + "ControlMethod": "MaaTouch", + "ScreenshotDedithering": false, + "AdbRestart": false + }, + "EmulatorInfo": { + "Emulator": "auto", + "name": null, + "path": null + }, + "Error": { + "HandleError": true, + "SaveError": true, + "OnePushConfig": "provider: null", + "ScreenshotLength": 1 + }, + "Optimization": { + "ScreenshotInterval": 0.3, + "CombatScreenshotInterval": 1.0, + "TaskHoardingDuration": 0, + "WhenTaskQueueEmpty": "goto_main" + }, + "DropRecord": { + "SaveFolder": "./screenshots", + "AzurStatsID": null, + "API": "default", + "ResearchRecord": "do_not", + "CommissionRecord": "do_not", + "CombatRecord": "do_not", + "OpsiRecord": "do_not", + "MeowfficerBuy": "do_not", + "MeowfficerTalent": "do_not" + }, + "Storage": { + "Storage": {} + } + }, + "General": { + "Retirement": { + "RetireMode": "one_click_retire" + }, + "OneClickRetire": { + "KeepLimitBreak": "keep_limit_break" + }, + "Enhance": { + "ShipToEnhance": "all", + "Filter": null, + "CheckPerCategory": 5 + }, + "OldRetire": { + "N": true, + "R": true, + "SR": false, + "SSR": false, + "RetireAmount": "retire_all" + }, + "Storage": { + "Storage": {} + } + }, + "Restart": { + "Scheduler": { + "Enable": true, + "NextRun": "2020-01-01 00:00:00", + "Command": "Restart", + "SuccessInterval": 0, + "FailureInterval": 0, + "ServerUpdate": "00:00" + }, + "SchedulerWatcher": { + "Enable": false, + "TimeDelta": 10, + "WarningCount": 3 + }, + "GameRestart": { + "FatalErrorRestart": false, + "MaxRetryTimesForSameTaskFailed": 5 + }, + "CloseTask": { + "Enable": false, + "MaxErrorOccur": 2 + }, + "InstanceRestart": { + "Enable": false, + "MaxRetryTimes": 5, + "Notify": false + }, + "OthersLogin": { + "Enable": false, + "Interval": 180, + "Notify": true + }, + "Storage": { + "Storage": {} + } + }, + "Remark": { + "Boss": { + "Name": null, + "Account": null, + "Password": null, + "SecondPassword": null + }, + "Comment": { + "Content": null + }, + "Storage": { + "Storage": {} + } + }, + "PowerLimit": { + "PowerLimit": { + "Enable": true, + "Exercise": 25000, + "Raid": 25000, + "Ash": 25000 + }, + "Storage": { + "Storage": {} + } + }, + "Hook": { + "HookGeneral": { + "Enable": false, + "RestartEveryTime": true, + "UpdateEveryTime": true, + "PushEveryTime": true, + "Architecture": "auto", + "InjectMethod": "local_patch", + "RequestTimeLimit": 10, + "UpdateServer": null, + "GameLibDir": null, + "HookedLuaFunctionTrace": false, + "OperateWithoutPause": false + }, + "Misc": { + "GlobalSpeedup": 1.0, + "BetterGlobalSpeedup": 1.0, + "ChapterMove": false, + "OpsiMove": false, + "RemoveHardMapLimit": "disable", + "NoBBAnimation": false, + "NoEmotionWarning": false, + "ExerciseGodMod": false, + "ExerciseMorePower": -1.0, + "FastWave": false, + "MonsterKillSelf": false, + "SkipBattleCelebrate": false, + "NoDamage": false, + "OpsiForceAuto": false, + "OpsiNoMapFog": false, + "SkipShipGainShow": false, + "ChapterForceEnableAutoFight": false, + "ChapterSkipPrecombat": false, + "ChapterAutoNextBattle": false, + "ChapterAutoAmbush": false, + "ChapterAutoClear": false, + "ChapterAutoClearStepInterval": 0.5, + "SkipStory": false, + "InfiniteBattle": false, + "SkipAirStrikeAnimation": false, + "AutoOnceAgain": false, + "AutoRetire": false, + "SkipEnemyScan": false, + "SkipBattleResult": false, + "SkipEnterBattle": false + }, + "ShipProperty": { + "Method": "disable", + "Factor": 1.0, + "Armor": -1, + "Speed": -1, + "AntiAircraft": -1, + "OxyRecoveryBench": -1, + "Torpedo": -1, + "Hit": -1, + "SonarRange": -1, + "AttackDuration": -1, + "RaidDistance": -1, + "OxyRecoverySurface": -1, + "OxyRecovery": -1, + "Dodge": -1, + "Luck": -1, + "Reload": -1, + "OxyCost": -1, + "Durability": -1, + "Air": -1, + "OxyMax": -1, + "Cannon": -1, + "AntiSub": -1 + }, + "FakePlayer": { + "Enable": false, + "Name": null, + "Level": null, + "Id": null + }, + "Storage": { + "Storage": {} + } + }, + "Main": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Main", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "12-4", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Main2": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Main2", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "12-4", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Main3": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Main3", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "12-4", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Main4": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Main4", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "12-4", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Main5": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Main5", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "12-4", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Main6": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Main6", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "12-4", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "GemsFarming": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "GemsFarming", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "GemsFarming": { + "ChangeFlagship": "ship", + "CommonCV": "any", + "ChangeVanguard": "ship", + "CommonDD": "any", + "ALLowLowVanguardLevel": true, + "StopIFAutoNotEnsured": true, + "CommissionLimit": true + }, + "Campaign": { + "Name": "12-4", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_all_fleet2_standby" + }, + "VanguardFilter": { + "Sort": "default", + "Index": "default", + "Faction": "default", + "Rarity": "default", + "Extra": "default" + }, + "FlagshipFilter": { + "Sort": "default", + "Index": "default", + "Faction": "default", + "Rarity": "default", + "Extra": "default" + }, + "Storage": { + "Storage": {} + } + }, + "EventGeneral": { + "EventGeneral": { + "PtLimit": 0, + "TimeLimit": "2020-01-01 00:00:00" + }, + "TaskBalancer": { + "Enable": false, + "CoinLimit": 10000, + "TaskCall": "Main" + }, + "Storage": { + "Storage": {} + } + }, + "Coalition": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Coalition", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "dynamic", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": false, + "Use2xBook": false, + "AmbushEvade": true + }, + "Coalition": { + "Mode": "hard", + "Fleet": "single" + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "Storage": { + "Storage": {} + } + }, + "Event": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Event", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "D3", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Event2": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Event2", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "D3", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Event3": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Event3", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "D3", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Event4": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Event4", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "D3", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Event5": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Event5", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "D3", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Event6": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Event6", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "D3", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "Raid": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Raid", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Raid": { + "Mode": "hard", + "UseTicket": false + }, + "Campaign": { + "Name": "dynamic", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": false, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "Storage": { + "Storage": {} + } + }, + "Hospital": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Hospital", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Hospital": { + "UseRecommendFleet": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "Storage": { + "Storage": {} + } + }, + "MaritimeEscort": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "MaritimeEscort", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "MaritimeEscort": { + "Enable": true + }, + "Storage": { + "Storage": {} + } + }, + "EventShop": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "EventShop", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "EventShop": { + "UnlockSSRShip": true, + "BuyURShip": 2, + "PresetFilter": "all", + "CustomFilter": "EquipUR > EquipSSR > Cube > GachaTicket\n> Array > Chip > CatT3 \n> Meta > SkinBox\n> Oil > Coin > Medal > ExpBookT1 > FoodT1\n> DR > PR\n> AugmentCore > AugmentEnhanceT2 > AugmentChangeT2 > AugmentChangeT1\n> CatT2 > CatT1 > PlateGeneralT3 > PlateT3 > BoxT4\n> ShipSSR" + }, + "Storage": { + "Storage": {} + } + }, + "WarArchives": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "WarArchives", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "D3", + "Event": "war_archives_20221222_cn", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "CoalitionSp": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "CoalitionSp", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "sp", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": false, + "Use2xBook": false, + "AmbushEvade": true + }, + "Coalition": { + "Mode": "sp", + "Fleet": "single" + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "Storage": { + "Storage": {} + } + }, + "EventA": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "EventA", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "EventDaily": { + "StageFilter": "A1 > A2 > A3", + "LastStage": 0 + }, + "Campaign": { + "Name": "dynamic", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "EventB": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "EventB", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "EventDaily": { + "StageFilter": "B1 > B2 > B3", + "LastStage": 0 + }, + "Campaign": { + "Name": "dynamic", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "EventC": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "EventC", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "EventDaily": { + "StageFilter": "C1 > C2 > C3", + "LastStage": 0 + }, + "Campaign": { + "Name": "dynamic", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "EventD": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "EventD", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "EventDaily": { + "StageFilter": "D1 > D2 > D3", + "LastStage": 0 + }, + "Campaign": { + "Name": "dynamic", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "EventSp": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "EventSp", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "sp", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": true, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Fleet": { + "Fleet1": 1, + "Fleet1Formation": "double_line", + "Fleet1Mode": "combat_auto", + "Fleet1Step": 3, + "Fleet2": 2, + "Fleet2Formation": "double_line", + "Fleet2Mode": "combat_auto", + "Fleet2Step": 2, + "FleetOrder": "fleet1_mob_fleet2_boss" + }, + "Submarine": { + "Fleet": 0, + "Mode": "do_not_use", + "AutoSearchMode": "sub_standby", + "DistanceToBoss": "2_grid_to_boss" + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "HpControl": { + "UseHpBalance": false, + "UseEmergencyRepair": false, + "UseLowHpRetreat": false, + "HpBalanceThreshold": 0.2, + "HpBalanceWeight": "1000, 1000, 1000", + "RepairUseSingleThreshold": 0.3, + "RepairUseMultiThreshold": 0.6, + "LowHpRetreatThreshold": 0.3 + }, + "EnemyPriority": { + "EnemyScaleBalanceWeight": "default_mode" + }, + "Storage": { + "Storage": {} + } + }, + "RaidDaily": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "RaidDaily", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "RaidDaily": { + "StageFilter": "hard > normal > easy" + }, + "Campaign": { + "Name": "dynamic", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": false, + "Use2xBook": false, + "AmbushEvade": true + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "Storage": { + "Storage": {} + } + }, + "Commission": { + "Scheduler": { + "Enable": true, + "NextRun": "2020-01-01 00:00:00", + "Command": "Commission", + "SuccessInterval": "30-60", + "FailureInterval": "30-60", + "ServerUpdate": "00:00" + }, + "Commission": { + "DoNotRun": false, + "PresetFilter": "cube", + "CustomFilter": "DailyEvent > Gem-4 > Gem-2 > Gem-8 > ExtraCube-0:30\n> UrgentCube-1:30 > UrgentCube-1:45 > UrgentCube-3\n> ExtraDrill-5:20 > ExtraDrill-2 > ExtraDrill-3:20\n> UrgentCube-2:15 > UrgentCube-4\n> ExtraDrill-1 > UrgentCube-6 > ExtraCube-1:30\n> ExtraDrill-2:40 > ExtraDrill-0:20\n> Major > DailyChip > DailyResource\n> ExtraPart-0:30 > ExtraOil-1 > UrgentBox-6\n> ExtraCube-3 > ExtraPart-1 > UrgentBox-3\n> ExtraCube-4 > ExtraPart-1:30 > ExtraOil-4\n> UrgentBox-1 > ExtraCube-5 > UrgentBox-1\n> ExtraCube-8 > ExtraOil-8\n> UrgentDrill-4 > UrgentDrill-2:40 > UrgentDrill-2\n> UrgentDrill-1 > UrgentDrill-1:30 > UrgentDrill-1:10\n> Extra-0:20 > Extra-0:30 > Extra-1:00 > Extra-1:30 > Extra-2:00\n> shortest", + "DoMajorCommission": false + }, + "Storage": { + "Storage": {} + } + }, + "Tactical": { + "Scheduler": { + "Enable": true, + "NextRun": "2020-01-01 00:00:00", + "Command": "Tactical", + "SuccessInterval": "30-60", + "FailureInterval": "120-240", + "ServerUpdate": "00:00" + }, + "Tactical": { + "TacticalFilter": "SameT4 > SameT3 > SameT2 > SameT1\n> BlueT2 > YellowT2 > RedT2\n> BlueT3 > YellowT3 > RedT3\n> BlueT4 > YellowT4 > RedT4\n> BlueT1 > YellowT1 > RedT1\n> first", + "RapidTrainingSlot": "do_not_use" + }, + "ControlExpOverflow": { + "Enable": true, + "T4Allow": 100, + "T3Allow": 100, + "T2Allow": 200, + "T1Allow": 200 + }, + "AddNewStudent": { + "Enable": false, + "Favorite": true + }, + "Storage": { + "Storage": {} + } + }, + "Research": { + "Scheduler": { + "Enable": true, + "NextRun": "2020-01-01 00:00:00", + "Command": "Research", + "SuccessInterval": "30-60", + "FailureInterval": "30-60", + "ServerUpdate": "00:00" + }, + "Research": { + "DoNotRun": false, + "UseCube": "only_05_hour", + "UseCoin": "always_use", + "UsePart": "always_use", + "AllowDelay": true, + "PresetFilter": "series_8_blueprint_305", + "CustomFilter": "S8-DR0.5 > S8-PRY0.5 > S8-Q0.5 > S8-H0.5 > Q0.5 > S8-DR2.5\n> S8-G1.5 > S8-Q1 > S8-DR5 > 0.5 > S8-G4 > S8-Q2 > S8-PRY2.5 > reset\n> S8-DR8 > Q1 > 1 > S8-E-315 > S8-G2.5 > G1.5 > 1.5 > S8-E-031\n> S8-Q4 > Q2 > E2 > 2 > DR2.5 > PRY2.5 > G2.5 > 2.5 > S8-PRY5\n> S8-PRY8 > Q4 > G4 > 4 > S8-C6 > DR5 > PRY5 > 5 > C6 > 6 > S8-C8\n> S8-C12 > DR8 > PRY8 > C8 > 8 > C12 > 12" + }, + "Storage": { + "Storage": {} + } + }, + "Dorm": { + "Scheduler": { + "Enable": true, + "NextRun": "2020-01-01 00:00:00", + "Command": "Dorm", + "SuccessInterval": 278, + "FailureInterval": 278, + "ServerUpdate": "00:00" + }, + "Dorm": { + "Collect": true, + "Feed": true, + "FeedFilter": "20000 > 10000 > 5000 > 3000 > 2000 > 1000" + }, + "BuyFurniture": { + "Enable": false, + "BuyOption": "all", + "LastRun": "2020-01-01 00:00:00" + }, + "Storage": { + "Storage": {} + } + }, + "Meowfficer": { + "Scheduler": { + "Enable": true, + "NextRun": "2020-01-01 00:00:00", + "Command": "Meowfficer", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "Meowfficer": { + "BuyAmount": 1, + "FortChoreMeowfficer": true + }, + "MeowfficerTrain": { + "Enable": false, + "Mode": "seamlessly", + "RetainTalentedGold": true, + "RetainTalentedPurple": true, + "EnhanceIndex": 1, + "MaxFeedLevel": 5 + }, + "Storage": { + "Storage": {} + } + }, + "Guild": { + "Scheduler": { + "Enable": true, + "NextRun": "2020-01-01 00:00:00", + "Command": "Guild", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00, 06:00, 12:00, 18:00, 21:00" + }, + "GuildLogistics": { + "Enable": true, + "SelectNewMission": false, + "ExchangeFilter": "PlateTorpedoT1 > PlateAntiAirT1 > PlatePlaneT1 > PlateGunT1 > PlateGeneralT1\n> PlateTorpedoT2 > PlateAntiAirT2 > PlatePlaneT2 > PlateGunT2 > PlateGeneralT2\n> PlateTorpedoT3 > PlateAntiAirT3 > PlatePlaneT3 > PlateGunT3 > PlateGeneralT3\n> OxyCola > Coolant > Merit > Coin > Oil" + }, + "GuildOperation": { + "Enable": true, + "SelectNewOperation": false, + "NewOperationMaxDate": 15, + "JoinThreshold": 1, + "AttackBoss": true, + "BossFleetRecommend": false + }, + "Storage": { + "Storage": {} + } + }, + "Reward": { + "Scheduler": { + "Enable": true, + "NextRun": "2020-01-01 00:00:00", + "Command": "Reward", + "SuccessInterval": "120-240", + "FailureInterval": "120-240", + "ServerUpdate": "00:00" + }, + "Reward": { + "DoNotRun": false, + "CollectOil": true, + "CollectCoin": true, + "CollectExp": true, + "CollectMission": true, + "CollectWeeklyMission": true + }, + "Storage": { + "Storage": {} + } + }, + "Awaken": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Awaken", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Awaken": { + "LevelCap": "level120", + "Favourite": false + }, + "Storage": { + "Storage": {} + } + }, + "Daily": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Daily", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "Daily": { + "UseDailySkip": true, + "EscortMission": "first", + "EscortMissionFleet": 1, + "AdvanceMission": "first", + "AdvanceMissionFleet": 1, + "FierceAssault": "first", + "FierceAssaultFleet": 1, + "TacticalTraining": "second", + "TacticalTrainingFleet": 1, + "SupplyLineDisruption": "second", + "ModuleDevelopment": "first", + "ModuleDevelopmentFleet": 1, + "EmergencyModuleDevelopment": "first", + "EmergencyModuleDevelopmentFleet": 1 + }, + "Storage": { + "Storage": {} + } + }, + "Hard": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Hard", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "Hard": { + "HardStage": "11-4", + "HardFleet": 1 + }, + "Storage": { + "Storage": {} + } + }, + "Exercise": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Exercise", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00, 12:00, 18:00" + }, + "Exercise": { + "DelayUntilHoursBeforeNextUpdate": 12, + "OpponentChooseMode": "max_exp", + "OpponentTrial": 1, + "ExerciseStrategy": "aggressive", + "LowHpThreshold": 0.4, + "LowHpConfirmWait": 0.1, + "OpponentRefreshValue": 0, + "OpponentRefreshRecord": "2020-01-01 00:00:00" + }, + "Storage": { + "Storage": {} + } + }, + "ShopFrequent": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "ShopFrequent", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00, 12:00, 18:00" + }, + "GeneralShop": { + "UseGems": false, + "Refresh": false, + "BuySkinBox": false, + "ConsumeCoins": 550000, + "Filter": "BookRedT3 > BookYellowT3 > BookBlueT3 > BookRedT2\n> Cube\n> FoodT6 > FoodT5" + }, + "Storage": { + "Storage": {} + } + }, + "ShopOnce": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "ShopOnce", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "GuildShop": { + "Enable": true, + "Refresh": true, + "Filter": "PlateT4 > BookT3 > PR > CatT3 > Chip > BookT2 > Retrofit > FoodT6 > FoodT5 > CatT2 > BoxT4", + "BOX_T3": "ironblood", + "BOX_T4": "ironblood", + "BOOK_T2": "red", + "BOOK_T3": "red", + "RETROFIT_T2": "cl", + "RETROFIT_T3": "cl", + "PLATE_T2": "general", + "PLATE_T3": "general", + "PLATE_T4": "gun", + "PR1": "neptune", + "PR2": "seattle", + "PR3": "cheshire" + }, + "MedalShop2": { + "Enable": true, + "Filter": "DR > PR\n> BookRedT3 > BookYellowT3 > BookBlueT3\n> BookRedT2 > BookYellowT2 > BookBlueT2\n> RetrofitT3\n> FoodT6 > FoodT5\n> PlateGeneralT3 > PlateWildT3", + "RETROFIT_T1": "cl", + "RETROFIT_T2": "cl", + "RETROFIT_T3": "cl", + "PLATE_T1": "general", + "PLATE_T2": "general", + "PLATE_T3": "general" + }, + "MeritShop": { + "Enable": true, + "Refresh": false, + "Filter": "Cube" + }, + "CoreShop": { + "Enable": true, + "Filter": "Array" + }, + "Storage": { + "Storage": {} + } + }, + "Shipyard": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Shipyard", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "04:00" + }, + "ShipyardDr": { + "ResearchSeries": 2, + "ShipIndex": 0, + "BuyAmount": 2, + "LastRun": "2020-01-01 00:00:00" + }, + "Shipyard": { + "ResearchSeries": 1, + "ShipIndex": 0, + "BuyAmount": 2, + "LastRun": "2020-01-01 00:00:00" + }, + "Storage": { + "Storage": {} + } + }, + "Gacha": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Gacha", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "Gacha": { + "Pool": "light", + "Amount": 1, + "UseTicket": true, + "UseDrill": false + }, + "Storage": { + "Storage": {} + } + }, + "Freebies": { + "Scheduler": { + "Enable": true, + "NextRun": "2020-01-01 00:00:00", + "Command": "Freebies", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "BattlePass": { + "Collect": true + }, + "DataKey": { + "Collect": true, + "ForceCollect": false + }, + "Mail": { + "ClaimMerit": true, + "ClaimMaintenance": false, + "ClaimTradeLicense": false, + "DeleteCollected": true + }, + "SupplyPack": { + "Collect": true, + "DayOfWeek": 0 + }, + "Storage": { + "Storage": {} + } + }, + "Minigame": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Minigame", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Storage": { + "Storage": {} + } + }, + "PrivateQuarters": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "PrivateQuarters", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "PrivateQuarters": { + "BuyRoses": true, + "BuyCake": false, + "TargetInteract": true, + "TargetShip": "anchorage" + }, + "Storage": { + "Storage": {} + } + }, + "OpsiGeneral": { + "OpsiGeneral": { + "UseLogger": true, + "BuyActionPointLimit": 0, + "OilLimit": 1000, + "RepairThreshold": 0.4, + "DoRandomMapEvent": true, + "AkashiShopFilter": "ActionPoint > PurpleCoins" + }, + "Storage": { + "Storage": {} + } + }, + "OpsiAshBeacon": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiAshBeacon", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "OpsiAshBeacon": { + "AttackMode": "current", + "OneHitMode": true, + "DossierAutoAttackMode": false, + "RequestAssist": true, + "EnsureFullyCollected": true + }, + "Storage": { + "Storage": {} + } + }, + "OpsiAshAssist": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiAshAssist", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "OpsiAshAssist": { + "Tier": 15 + }, + "Storage": { + "Storage": {} + } + }, + "OpsiExplore": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiExplore", + "SuccessInterval": 0, + "FailureInterval": 0, + "ServerUpdate": "00:00" + }, + "OpsiExplore": { + "SpecialRadar": false, + "ForceRun": false, + "LastZone": 0 + }, + "OpsiFleet": { + "Fleet": 1, + "Submarine": false + }, + "Storage": { + "Storage": {} + } + }, + "OpsiShop": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiShop", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "OpsiShop": { + "PresetFilter": "max_benefit_meta", + "CustomFilter": "LoggerAbyssalT6 > LoggerAbyssalT5 > LoggerObscure > LoggerAbyssalT4 > ActionPoint > PurpleCoins\n> GearDesignPlanT3 > PlateRandomT4 > DevelopmentMaterialT3 > GearDesignPlanT2 > GearPart\n> OrdnanceTestingReportT3 > OrdnanceTestingReportT2 > DevelopmentMaterialT2 > OrdnanceTestingReportT1\n> METARedBook > CrystallizedHeatResistantSteel > NanoceramicAlloy > NeuroplasticProstheticArm > SupercavitationGenerator" + }, + "Storage": { + "Storage": {} + } + }, + "OpsiVoucher": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiVoucher", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "OpsiVoucher": { + "Filter": "LoggerAbyssal > LoggerObscure > Book > Coin > Fragment" + }, + "Storage": { + "Storage": {} + } + }, + "OpsiDaily": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiDaily", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "OpsiDaily": { + "DoMission": true, + "UseTuningSample": true + }, + "OpsiFleet": { + "Fleet": 1, + "Submarine": false + }, + "Storage": { + "Storage": {} + } + }, + "OpsiObscure": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiObscure", + "SuccessInterval": 60, + "FailureInterval": 60, + "ServerUpdate": "00:00" + }, + "OpsiObscure": { + "ForceRun": false + }, + "OpsiFleet": { + "Fleet": 1, + "Submarine": false + }, + "Storage": { + "Storage": {} + } + }, + "OpsiAbyssal": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiAbyssal", + "SuccessInterval": 60, + "FailureInterval": 60, + "ServerUpdate": "00:00, 12:00" + }, + "OpsiAbyssal": { + "ForceRun": false + }, + "OpsiFleetFilter": { + "Filter": "Fleet-4 > CallSubmarine > Fleet-2 > Fleet-3 > Fleet-1" + }, + "Storage": { + "Storage": {} + } + }, + "OpsiArchive": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiArchive", + "SuccessInterval": 60, + "FailureInterval": 60, + "ServerUpdate": "00:00" + }, + "OpsiFleet": { + "Fleet": 1, + "Submarine": false + }, + "Storage": { + "Storage": {} + } + }, + "OpsiStronghold": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiStronghold", + "SuccessInterval": 60, + "FailureInterval": 60, + "ServerUpdate": "00:00" + }, + "OpsiStronghold": { + "ForceRun": false + }, + "OpsiFleetFilter": { + "Filter": "Fleet-4 > CallSubmarine > Fleet-2 > Fleet-3 > Fleet-1" + }, + "Storage": { + "Storage": {} + } + }, + "OpsiMonthBoss": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiMonthBoss", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "OpsiMonthBoss": { + "Mode": "normal", + "CheckAdaptability": true, + "ForceRun": false + }, + "OpsiFleetFilter": { + "Filter": "Fleet-4 > CallSubmarine > Fleet-2 > Fleet-3 > Fleet-1" + }, + "Storage": { + "Storage": {} + } + }, + "OpsiMeowfficerFarming": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiMeowfficerFarming", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "OpsiMeowfficerFarming": { + "ActionPointPreserve": 1000, + "HazardLevel": 5, + "TargetZone": 0 + }, + "OpsiFleet": { + "Fleet": 1, + "Submarine": false + }, + "Storage": { + "Storage": {} + } + }, + "OpsiHazard1Leveling": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiHazard1Leveling", + "SuccessInterval": 30, + "FailureInterval": 60, + "ServerUpdate": "00:00, 12:00" + }, + "OpsiHazard1Leveling": { + "HigherPriority": false, + "ActionPointUpperLimit": 3000, + "NoOpsiMeowfficerFarming": false, + "NoYellowCoinLimit": false, + "TargetZone": 0 + }, + "OpsiFleet": { + "Fleet": 1, + "Submarine": false + }, + "Storage": { + "Storage": {} + } + }, + "OpsiCrossMonth": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "OpsiCrossMonth", + "SuccessInterval": 0, + "FailureInterval": 120, + "ServerUpdate": "00:00" + }, + "Storage": { + "Storage": {} + } + }, + "Daemon": { + "Daemon": { + "EnterMap": true + }, + "Storage": { + "Storage": {} + } + }, + "OpsiDaemon": { + "OpsiDaemon": { + "RepairShip": true, + "SelectEnemy": true + }, + "Storage": { + "Storage": {} + } + }, + "EventStory": { + "EventStory": { + "SkipBattle": true + }, + "Storage": { + "Storage": {} + } + }, + "Benchmark": { + "Benchmark": { + "DeviceType": "emulator", + "TestScene": "screenshot_click" + }, + "Storage": { + "Storage": {} + } + }, + "AzurLaneUncensored": { + "AzurLaneUncensored": { + "Repository": "https://gitee.com/LmeSzinc/AzurLaneUncensored" + }, + "Storage": { + "Storage": {} + } + }, + "GameManager": { + "GameManager": { + "AutoRestart": true + }, + "Storage": { + "Storage": {} + } + }, + "HookOp": { + "HookOp": { + "Operation": "apply" + }, + "Storage": { + "Storage": {} + } + } +} \ No newline at end of file diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 6683dc446..5cd204e8c 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -933,6 +933,18 @@ "AutoRetire": { "type": "checkbox", "value": false + }, + "SkipEnemyScan": { + "type": "checkbox", + "value": false + }, + "SkipBattleResult": { + "type": "checkbox", + "value": false + }, + "SkipEnterBattle": { + "type": "checkbox", + "value": false } }, "ShipProperty": { diff --git a/module/config/argument/argument.yaml b/module/config/argument/argument.yaml index 73fc13124..abbddb83e 100644 --- a/module/config/argument/argument.yaml +++ b/module/config/argument/argument.yaml @@ -900,6 +900,9 @@ Misc: SkipAirStrikeAnimation: false AutoOnceAgain: false AutoRetire: false + SkipEnemyScan: false + SkipBattleResult: false + SkipEnterBattle: false # ==================== Cheat ==================== PowerLimit: diff --git a/module/config/config_generated.py b/module/config/config_generated.py index 5016f02cc..fa4a1f586 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -555,6 +555,9 @@ class GeneratedConfig: Misc_SkipAirStrikeAnimation = False Misc_AutoOnceAgain = False Misc_AutoRetire = False + Misc_SkipEnemyScan = False + Misc_SkipBattleResult = False + Misc_SkipEnterBattle = False # Group `PowerLimit` PowerLimit_Enable = True diff --git a/module/config/full_config_generated.py b/module/config/full_config_generated.py index a13968690..d0874d937 100644 --- a/module/config/full_config_generated.py +++ b/module/config/full_config_generated.py @@ -168,6 +168,9 @@ class FullGeneratedConfig: Hook_Misc_SkipAirStrikeAnimation = None Hook_Misc_AutoOnceAgain = None Hook_Misc_AutoRetire = None + Hook_Misc_SkipEnemyScan = None + Hook_Misc_SkipBattleResult = None + Hook_Misc_SkipEnterBattle = None Hook_ShipProperty_Method = None Hook_ShipProperty_Factor = None Hook_ShipProperty_Armor = None diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index 0776b037e..c9c5e3d70 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -3182,6 +3182,18 @@ "AutoRetire": { "name": "Misc.AutoRetire.name", "help": "Misc.AutoRetire.help" + }, + "SkipEnemyScan": { + "name": "Misc.SkipEnemyScan.name", + "help": "Misc.SkipEnemyScan.help" + }, + "SkipBattleResult": { + "name": "Misc.SkipBattleResult.name", + "help": "Misc.SkipBattleResult.help" + }, + "SkipEnterBattle": { + "name": "Misc.SkipEnterBattle.name", + "help": "Misc.SkipEnterBattle.help" } }, "PowerLimit": { diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index fd29c68fd..605236bd2 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -3182,6 +3182,18 @@ "AutoRetire": { "name": "Misc.AutoRetire.name", "help": "Misc.AutoRetire.help" + }, + "SkipEnemyScan": { + "name": "Misc.SkipEnemyScan.name", + "help": "Misc.SkipEnemyScan.help" + }, + "SkipBattleResult": { + "name": "Misc.SkipBattleResult.name", + "help": "Misc.SkipBattleResult.help" + }, + "SkipEnterBattle": { + "name": "Misc.SkipEnterBattle.name", + "help": "Misc.SkipEnterBattle.help" } }, "PowerLimit": { diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index 122c08579..d5a627737 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -3182,6 +3182,18 @@ "AutoRetire": { "name": "自动退役", "help": "注意:该功能存在风险,开启前请确保船是锁上的!!!" + }, + "SkipEnemyScan": { + "name": "章节图跳过索敌", + "help": "" + }, + "SkipBattleResult": { + "name": "跳过战斗结算", + "help": "" + }, + "SkipEnterBattle": { + "name": "跳过战斗进场", + "help": "" } }, "PowerLimit": { diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index fec8c087f..2f4ff8d8f 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -3182,6 +3182,18 @@ "AutoRetire": { "name": "Misc.AutoRetire.name", "help": "Misc.AutoRetire.help" + }, + "SkipEnemyScan": { + "name": "Misc.SkipEnemyScan.name", + "help": "Misc.SkipEnemyScan.help" + }, + "SkipBattleResult": { + "name": "Misc.SkipBattleResult.name", + "help": "Misc.SkipBattleResult.help" + }, + "SkipEnterBattle": { + "name": "Misc.SkipEnterBattle.name", + "help": "Misc.SkipEnterBattle.help" } }, "PowerLimit": { diff --git a/module/luahook/api.py b/module/luahook/api.py index 038c49139..e9423849a 100644 --- a/module/luahook/api.py +++ b/module/luahook/api.py @@ -428,6 +428,30 @@ class CrackApi: def disable_auto_retire(self): self.post("disable_auto_retire") + def enable_skip_enemy_scan(self): + self.post("enable_skip_enemy_scan") + + def disable_skip_enemy_scan(self): + self.post("disable_skip_enemy_scan") + + def enable_skip_battle_result(self): + self.post("enable_skip_battle_result") + + def disable_skip_battle_result(self): + self.post("disable_skip_battle_result") + + def enable_skip_enter_battle(self): + self.post("enable_skip_enter_battle") + + def disable_skip_enter_battle(self): + self.post("disable_skip_enter_battle") + + def enable_skip_enter_battle_without_pause(self): + self.post("enable_skip_enter_battle_without_pause") + + def disable_skip_enter_battle_without_pause(self): + self.post("disable_skip_enter_battle_without_pause") + def init(self): self.post("init") diff --git a/module/luahook/crack.py b/module/luahook/crack.py index 787f07273..dbf71ffd8 100644 --- a/module/luahook/crack.py +++ b/module/luahook/crack.py @@ -49,6 +49,9 @@ ALL_ENABLE_OPS = [ CrackOp.EnableSkipAirStrikeAnimation, CrackOp.EnableAutoOnceAgain, CrackOp.EnableAutoRetire, + CrackOp.EnableSkipEnemyScan, + CrackOp.EnableSkipBattleResult, + CrackOp.EnableSkipEnterBattle, ] REMOTE_PORT = 23897 @@ -361,6 +364,27 @@ def do_crack_op(config: AzurLaneConfig, device: Device, ops: Union[Type[CrackOp. api.enable_auto_retire() elif op == CrackOp.DisableAutoRetire: api.disable_auto_retire() + elif op == CrackOp.EnableSkipEnemyScan: + if full_config.Hook_Misc_SkipEnemyScan: + api.enable_skip_enemy_scan() + elif op == CrackOp.DisableSkipEnemyScan: + api.disable_skip_enemy_scan() + elif op == CrackOp.EnableSkipBattleResult: + if full_config.Hook_Misc_SkipBattleResult: + api.enable_skip_battle_result() + elif op == CrackOp.DisableSkipBattleResult: + api.disable_skip_battle_result() + elif op == CrackOp.EnableSkipEnterBattle: + if full_config.Hook_Misc_SkipEnterBattle: + if without_pause: + api.enable_skip_enter_battle_without_pause() + else: + api.enable_skip_enter_battle() + elif op == CrackOp.DisableSkipEnterBattle: + if without_pause: + api.disable_skip_enter_battle_without_pause() + else: + api.disable_skip_enter_battle() else: logger.error(f"Unsupported op: {op}") @@ -423,6 +447,9 @@ CHAPTER_CRACK_OPS = [ CrackOp.EnableSkipAirStrikeAnimation, CrackOp.EnableAutoOnceAgain, CrackOp.EnableAutoRetire, + CrackOp.EnableSkipEnemyScan, + CrackOp.EnableSkipBattleResult, + CrackOp.EnableSkipEnterBattle, ] @@ -452,6 +479,8 @@ OPSI_CRACK_OPS = [ CrackOp.EnableOpsiNoMapFog, CrackOp.EnableSkipShipGainShow, CrackOp.EnableSkipStory, + CrackOp.EnableSkipBattleResult, + CrackOp.EnableSkipEnterBattle, ] diff --git a/module/luahook/op.py b/module/luahook/op.py index dc6b8e272..f08b0e054 100644 --- a/module/luahook/op.py +++ b/module/luahook/op.py @@ -202,3 +202,21 @@ class CrackOp: class DisableAutoRetire(Op): ... + + class EnableSkipEnemyScan(Op): + ... + + class DisableSkipEnemyScan(Op): + ... + + class EnableSkipBattleResult(Op): + ... + + class DisableSkipBattleResult(Op): + ... + + class EnableSkipEnterBattle(Op): + ... + + class DisableSkipEnterBattle(Op): + ...