diff --git a/app/src/main/assets/Cn/start_quest.png b/app/src/main/assets/Cn/start_quest.png new file mode 100644 index 000000000..ba2e06276 Binary files /dev/null and b/app/src/main/assets/Cn/start_quest.png differ diff --git a/app/src/main/assets/En/start_quest.png b/app/src/main/assets/En/start_quest.png new file mode 100644 index 000000000..e2dd72eda Binary files /dev/null and b/app/src/main/assets/En/start_quest.png differ diff --git a/app/src/main/assets/Jp/start_quest.png b/app/src/main/assets/Jp/start_quest.png new file mode 100644 index 000000000..6e3684e5d Binary files /dev/null and b/app/src/main/assets/Jp/start_quest.png differ diff --git a/app/src/main/assets/Kr/start_quest.png b/app/src/main/assets/Kr/start_quest.png new file mode 100644 index 000000000..9da86b655 Binary files /dev/null and b/app/src/main/assets/Kr/start_quest.png differ diff --git a/app/src/main/assets/Tw/start_quest.png b/app/src/main/assets/Tw/start_quest.png new file mode 100644 index 000000000..5caaf546f Binary files /dev/null and b/app/src/main/assets/Tw/start_quest.png differ diff --git a/app/src/main/java/io/github/fate_grand_automata/imaging/DroidCvPattern.kt b/app/src/main/java/io/github/fate_grand_automata/imaging/DroidCvPattern.kt index d6965d16b..fb902ee29 100644 --- a/app/src/main/java/io/github/fate_grand_automata/imaging/DroidCvPattern.kt +++ b/app/src/main/java/io/github/fate_grand_automata/imaging/DroidCvPattern.kt @@ -76,9 +76,9 @@ class DroidCvPattern( } private fun match(template: Pattern): Mat? { - val result = Mat() if (template is DroidCvPattern) { if (template.width <= width && template.height <= height) { + val result = Mat() Imgproc.matchTemplate( mat, template.mat, diff --git a/scripts/src/main/java/io/github/fate_grand_automata/scripts/Images.kt b/scripts/src/main/java/io/github/fate_grand_automata/scripts/Images.kt index be601c6d1..06cbd96d8 100644 --- a/scripts/src/main/java/io/github/fate_grand_automata/scripts/Images.kt +++ b/scripts/src/main/java/io/github/fate_grand_automata/scripts/Images.kt @@ -89,6 +89,7 @@ enum class Images(val path: String) { OkKR("ok-kr.png"), Execute("execute.png"), SupportBlankCE("support_blank_ce.png"), + StartQuest("start_quest.png"), StateON("state_on.png"), GrandCeLabel("grand_ce_label.png"), BondCeEffectDefault("bond_ce_effect_default.png"), diff --git a/scripts/src/main/java/io/github/fate_grand_automata/scripts/entrypoints/AutoBattle.kt b/scripts/src/main/java/io/github/fate_grand_automata/scripts/entrypoints/AutoBattle.kt index b9b88266a..dbedd7ed0 100644 --- a/scripts/src/main/java/io/github/fate_grand_automata/scripts/entrypoints/AutoBattle.kt +++ b/scripts/src/main/java/io/github/fate_grand_automata/scripts/entrypoints/AutoBattle.kt @@ -98,7 +98,7 @@ class AutoBattle @Inject constructor( loop() } catch (e: BattleExitException) { throw ExitException(e.reason, makeExitState()) - } catch (e: ScriptAbortException) { + } catch (_: ScriptAbortException) { throw ExitException(ExitReason.Abort, makeExitState()) } catch (e: Exception) { val reason = ExitReason.Unexpected(e) @@ -339,11 +339,12 @@ class AutoBattle @Inject constructor( locations.resultMatRewardsRegion.click() } - private fun isInOrdealCallOutOfPodsScreen(): Boolean { - // Lock the Ordeal Call for JP server - if (prefs.gameServer !is GameServer.Jp) return false + private fun isInOrdealCallConfirmPodUseScreen(): Boolean { + return findImage(locations.ordealCallConfirmPodUseRegion, Images.StartQuest) + } - return images[Images.Close] in locations.ordealCallOutOfPodsRegion + private fun isInOrdealCallOutOfPodsScreen(): Boolean { + return findImage(locations.ordealCallOutOfPodsRegion, Images.Close) } private fun ordealCallOutOfPods() { @@ -520,15 +521,18 @@ class AutoBattle @Inject constructor( var closeScreen = false var inventoryFull = false + var confirmPodUsage = false useSameSnapIn { closeScreen = isInOrdealCallOutOfPodsScreen() inventoryFull = isInventoryFull() + confirmPodUsage = isInOrdealCallConfirmPodUseScreen() } when { closeScreen -> throw BattleExitException(ExitReason.LimitRuns(state.runs)) inventoryFull -> throw BattleExitException(ExitReason.InventoryFull) + confirmPodUsage -> locations.ordealCallConfirmPodUseRegion.center.click() } refill.refill() diff --git a/scripts/src/main/java/io/github/fate_grand_automata/scripts/locations/Locations.kt b/scripts/src/main/java/io/github/fate_grand_automata/scripts/locations/Locations.kt index 5f25e9622..b154d9c0a 100644 --- a/scripts/src/main/java/io/github/fate_grand_automata/scripts/locations/Locations.kt +++ b/scripts/src/main/java/io/github/fate_grand_automata/scripts/locations/Locations.kt @@ -34,6 +34,8 @@ class Locations @Inject constructor( val inventoryFullRegion = Region(-280, 860, 560, 190).xFromCenter() + val ordealCallConfirmPodUseRegion = Region(190, 1096, 420, 62).xFromCenter() + val ordealCallOutOfPodsRegion = Region(-112, 1088, 219, 72).xFromCenter() val ordealCallOutOfPodsClick = Location(-2, 1124).xFromCenter()