1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-03-28 04:19:43 +08:00

65 Commits

Author SHA1 Message Date
positnuec
20d1b1c9a3 Opt: SkinBox position filter 2026-03-13 14:08:02 +08:00
d7af303d04 Fix: missing argument in skinbox_position_check 2026-03-12 16:14:10 +08:00
69cdd06e60 Upd: event_20240229_cn rerun 2026-03-12 02:11:51 +08:00
positnuec
71f8051b82 Add: Purchase SkinBox by position 2026-03-12 02:07:07 +08:00
positnuec
a07dffbeda Add: Auto recommend submarine fleet in hard mode 2026-03-09 13:42:55 +08:00
positnuec
b5fe8e425b Fix: Misjudgement caused by click light effect interference 2026-03-09 13:42:45 +08:00
positnuec
da7ca5d706 Add: Control CL1 Record independently 2026-03-09 12:50:27 +08:00
positnuec
ecf2a841cf Fix: OS infinite click on CLICK_SAFE_AREA 2026-03-09 12:45:47 +08:00
GH Action - Upstream Sync
3ceade600f Merge branch 'master' of https://github.com/LmeSzinc/AzurLaneAutoScript 2026-03-05 18:14:27 +00:00
LmeSzinc
b687048405 Merge pull request #5545 from LmeSzinc/dev
Bug fix
2026-03-06 01:13:28 +08:00
LmeSzinc
c9e95702dc Fix: Skip event story in event_20260226_cn 2026-03-06 01:12:54 +08:00
LmeSzinc
b24d09f1a0 Upd: [TW] Event event_20260226_cn (fixed #5544) 2026-03-06 01:11:10 +08:00
GH Action - Upstream Sync
4e2e4572c3 Merge branch 'master' of https://github.com/LmeSzinc/AzurLaneAutoScript 2026-03-05 14:56:10 +00:00
LmeSzinc
8618ea2352 Upd: Battle UI SpringInn (#5541) (#5543)
Co-authored-by: heipen <126669219+Heipen@users.noreply.github.com>
2026-03-05 22:42:45 +08:00
heipen
dbc5fe42e8 Upd: Battle UI SpringInn (#5541) 2026-03-04 12:32:12 +08:00
2eec1333ad Merge branch 'master' of https://github.com/LmeSzinc/AzurLaneAutoScript 2026-02-28 05:33:05 +08:00
LmeSzinc
2a2901d218 Merge pull request #5533 from LmeSzinc/dev
Add: Event Springtide Inn Online (event_20260226_cn)
2026-02-28 04:43:01 +08:00
LmeSzinc
66fa598e75 Fix: Abyssal combat with handle_map_event (#5328) 2026-02-28 04:37:52 +08:00
LmeSzinc
bfe67e2922 Opt: swipe multiply in event_20260226_cn 2026-02-28 04:17:37 +08:00
LmeSzinc
bd108dc35f Fix: Clicking BACK_ARROW at combat loading 2026-02-28 04:09:49 +08:00
LmeSzinc
07bf9d9947 Fix: Handle wrong OCR error like "I4-4" (#5532) 2026-02-28 03:42:27 +08:00
guoh064
c8e8d0b2fe Add: Event Springtide Inn Online (event_20260226_cn) 2026-02-28 02:50:22 +08:00
37a1d8bb8e Add: Event Springtide Inn Online (event_20260226_cn) 2026-02-27 17:12:21 +08:00
3b8271fbca Revert "Upd: [tmp] event entrance of event_20260226_cn"
This reverts commit 8f933b5468.
2026-02-27 17:10:42 +08:00
guoh064
4b05184cbd Add: Event Springtide Inn Online (event_20260226_cn) 2026-02-27 00:19:36 +08:00
a97af04d85 Fix: set the management page to top before island run 2026-02-26 20:31:17 +08:00
8f933b5468 Upd: [tmp] event entrance of event_20260226_cn 2026-02-26 16:44:25 +08:00
LmeSzinc
5c7f57f3b2 Fix: patch_mimetype 2026-02-19 10:19:42 +08:00
45b7c2cdba Merge branch 'master' of https://github.com/sui-feng-cb/AzurLaneAutoScript1 2026-02-19 05:16:45 +08:00
GH Action - Upstream Sync
ce23ea94a5 Merge branch 'master' of https://github.com/LmeSzinc/AzurLaneAutoScript 2026-02-18 20:51:23 +00:00
LmeSzinc
ad623f6332 Merge pull request #5525 from LmeSzinc/dev
Bug fix
2026-02-19 03:18:06 +08:00
LmeSzinc
c014140c6e Fix: [CN] Remove more dash-like characters (fixed #5522) 2026-02-19 03:14:09 +08:00
gepotumu
a538739910 Fix: infinite loop in _handle_use_box_amount when box count insufficient (#5516)
When requesting more boxes than available (e.g. requesting 8 but only 3
in stack), the amount-setting loop would never exit because the UI caps
at the available count while the script keeps clicking AMOUNT_PLUS.

Added click_count tracking: if multi_click() has been called 2 times
without the amount reaching the target, treat it as the UI cap and break.
Also changed the return value from bool to the actual amount set, so
_storage_use_one_box tracks the correct number of boxes used.
2026-02-19 02:19:08 +08:00
LmeSzinc
0a4f2a89fc Fix: handle raid remain like "915/", "1515" 2026-02-19 02:15:25 +08:00
LmeSzinc
986d825a81 Fix: [EN] UI switch to page_game_room 2026-02-19 01:58:20 +08:00
LmeSzinc
74bbaf8395 Fix: first ui switch must be ui_ensure 2026-02-18 09:10:55 +08:00
LmeSzinc
d99b759a08 Fix: no poor sleep in fleet_preparation_sidebar_ensure 2026-02-18 09:10:55 +08:00
ArecaSapling
102b7eeaf7 Upd: blueprint purchase for DR5 & PR6 (#5518) 2026-02-18 09:10:41 +08:00
76eeba667f Add: Island Pearl Daemon 2026-02-17 20:58:33 +08:00
1e5a7d444b Merge branch 'master' of https://github.com/sui-feng-cb/AzurLaneAutoScript1 2026-02-15 15:58:29 +08:00
7b48e1ac58 Upd: blueprint purchase for DR5 & PR6 2026-02-15 15:57:18 +08:00
a136cbe1ff Upd: config update 2026-02-15 15:54:45 +08:00
positnuec
39ee794e41 Add: Purchase PR6 and DR5 blueprints in shipyard 2026-02-15 15:11:45 +08:00
e0b231bc58 Merge branch 'master' of https://github.com/LmeSzinc/AzurLaneAutoScript 2026-02-14 12:26:34 +08:00
44eb4dbcf2 Revert "Add: [CN] Spring Auction Adventure (raid_20260212)"
This reverts commit c4961c80eb.
2026-02-14 12:25:42 +08:00
95c1128c73 Revert "Fix: use cnocr for CHANGWU_OCR_REMAIN_*"
This reverts commit 5fceeddcb1.
2026-02-14 12:25:33 +08:00
LmeSzinc
cc089b6223 Merge pull request #5515 from LmeSzinc/dev
Add: Spring Auction Adventure (raid_20260212)
2026-02-14 03:44:51 +08:00
LmeSzinc
7eb80ca6f4 Upd: [CN] game server 裁决协议 2026-02-14 03:32:47 +08:00
LmeSzinc
9bb8e191ac Upd: [EN][JP][TW] Raid CHANGWU assets 2026-02-14 03:30:49 +08:00
LmeSzinc
efeb222764 Upd: [TW] Event entrance of raid_20260212 2026-02-14 03:06:07 +08:00
LmeSzinc
11405cf0c3 Fix: [EN] check other buttons for page_academy 2026-02-14 03:00:01 +08:00
LmeSzinc
3623d4c70a Merge pull request #5508 from sui-feng-cb/event_update
Add: [CN] Spring Auction Adventure (raid_20260212)
2026-02-14 02:32:28 +08:00
5ab18b27fd Fix: use cnocr for CHANGWU_OCR_REMAIN_* 2026-02-12 20:28:24 +08:00
5fceeddcb1 Fix: use cnocr for CHANGWU_OCR_REMAIN_* 2026-02-12 20:27:18 +08:00
c4961c80eb Add: [CN] Spring Auction Adventure (raid_20260212) 2026-02-12 16:45:03 +08:00
7e6b87bee8 Add: [CN] Spring Auction Adventure (raid_20260212) 2026-02-12 16:44:24 +08:00
GH Action - Upstream Sync
fc0e4ce016 Merge branch 'master' of https://github.com/LmeSzinc/AzurLaneAutoScript 2026-02-09 19:27:24 +00:00
LmeSzinc
eb73b3cfd8 Bug fix (#5505)
* Merge pull request #5500 from sui-feng-cb/event_update

Fix: raid_20240328 ex

* Upd: Battle UI Ancient

* Upd: [EN] TEMPLATE_REVELATIONS_OF_DUST

---------

Co-authored-by: ArecaSapling <115386623+sui-feng-cb@users.noreply.github.com>
2026-02-09 23:42:27 +08:00
LmeSzinc
7118c30fea Upd: [EN] TEMPLATE_REVELATIONS_OF_DUST 2026-02-09 23:40:21 +08:00
LmeSzinc
7d9e77e4fd Upd: Battle UI Ancient 2026-02-09 23:31:47 +08:00
ArecaSapling
5a32d9444c Merge pull request #5500 from sui-feng-cb/event_update
Fix: raid_20240328 ex
2026-02-09 23:23:20 +08:00
530efc628e Upd: island ui_additional 2026-02-08 23:10:43 +08:00
f981ec614d Fix: wait until ui appear in project_receive 2026-02-08 22:10:07 +08:00
054da57f5b Fix: GameTooManyClickError in product_select 2026-02-08 21:01:37 +08:00
3767be643a Upd: island character 2026-02-07 14:38:32 +08:00
118 changed files with 4134 additions and 1300 deletions

View File

@@ -434,6 +434,10 @@ class AzurLaneAutoScript:
from module.storage.box_disassemble import StorageBox from module.storage.box_disassemble import StorageBox
StorageBox(config=self.config, device=self.device, task="BoxDisassemble").run() StorageBox(config=self.config, device=self.device, task="BoxDisassemble").run()
def island_pearl(self):
from module.island.pearl_daemon import IslandPearl
IslandPearl(config=self.config, device=self.device, task="IslandPearl").run()
def azur_lane_uncensored(self): def azur_lane_uncensored(self):
from module.daemon.uncensored import AzurLaneUncensored from module.daemon.uncensored import AzurLaneUncensored
AzurLaneUncensored(config=self.config, device=self.device, task="AzurLaneUncensored").run() AzurLaneUncensored(config=self.config, device=self.device, task="AzurLaneUncensored").run()

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@@ -281,3 +281,6 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
| 20260122 | event 20220526 cn | Pledge of the Radiant Court | - | - | - | 泠誓光庭 | | 20260122 | event 20220526 cn | Pledge of the Radiant Court | - | - | - | 泠誓光庭 |
| 20260129 | coalition 20260122 | Light & Shadow Fashion Shoot! | - | - | - | 光影風尚-拍攝進行時 | | 20260129 | coalition 20260122 | Light & Shadow Fashion Shoot! | - | - | - | 光影風尚-拍攝進行時 |
| 20260205 | raid 20240328 | From Zero to Hero | 复刻从零开始的魔王讨伐之旅 | From Zero to Hero Rerun | ゼロから頑張る魔王討伐(復刻) | - | | 20260205 | raid 20240328 | From Zero to Hero | 复刻从零开始的魔王讨伐之旅 | From Zero to Hero Rerun | ゼロから頑張る魔王討伐(復刻) | - |
| 20260212 | raid 20260212 | Spring Auction Adventure | 春宴怀玉香满庭 | Spring Auction Adventure | 新春玉逸品会 | 春宴懷玉香滿庭 |
| 20260226 | event 20260226 cn | Springtide Inn Online | 春满客栈Online | Springtide Inn Online | 春色旅籠Online | 春滿客棧Online |
| 20260312 | event 20240229 cn | Snowrealm Peregrination | 复刻雪境迷踪 | Snowrealm Peregrination Rerun | 銀界遊廻(復刻) | - |

View File

@@ -1,3 +1,4 @@
from module.base.timer import Timer
from module.campaign.campaign_base import CampaignBase as CampaignBase_ from module.campaign.campaign_base import CampaignBase as CampaignBase_
from module.exception import RequestHumanTakeover from module.exception import RequestHumanTakeover
from module.logger import logger from module.logger import logger
@@ -58,6 +59,7 @@ class CampaignBase(CampaignBase_):
Fixed number of scrolls until give up, may need to Fixed number of scrolls until give up, may need to
increase as more war archives campaigns are added increase as more war archives campaigns are added
""" """
confirm_timer = Timer(1.5, count=4)
for _ in range(20): for _ in range(20):
if skip_first_screenshot: if skip_first_screenshot:
skip_first_screenshot = False skip_first_screenshot = False
@@ -80,13 +82,19 @@ class CampaignBase(CampaignBase_):
return entrance return entrance
if WAR_ARCHIVES_SCROLL.appear(main=self): if WAR_ARCHIVES_SCROLL.appear(main=self):
confirm_timer.clear()
if WAR_ARCHIVES_SCROLL.at_bottom(main=self): if WAR_ARCHIVES_SCROLL.at_bottom(main=self):
WAR_ARCHIVES_SCROLL.set_top(main=self) WAR_ARCHIVES_SCROLL.set_top(main=self)
else: else:
WAR_ARCHIVES_SCROLL.next_page(main=self, page=0.66) WAR_ARCHIVES_SCROLL.next_page(main=self, page=0.66)
continue continue
else: else:
break confirm_timer.start()
if confirm_timer.reached():
logger.warning('WAR_ARCHIVES_SCROLL disappeared')
break
else:
continue
logger.warning('Failed to find archives entrance') logger.warning('Failed to find archives entrance')
return None return None

View File

@@ -0,0 +1,84 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
MAP = CampaignMap('A1')
MAP.shape = 'I8'
MAP.camera_data = ['E2', 'E6']
MAP.camera_data_spawn_point = ['E2']
MAP.map_data = """
-- -- ME -- ME -- -- -- --
-- ++ -- -- -- ME ++ ++ --
-- ++ -- SP -- -- Me ++ --
-- ME -- -- SP -- -- ME --
++ -- Me -- -- -- Me -- --
-- ME ++ MS -- MS ++ ++ ++
-- -- ME -- __ -- ME ++ --
-- -- -- -- MB -- -- -- --
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 1},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 1},
{'battle': 3, 'enemy': 1, 'boss': 1},
{'battle': 4, 'enemy': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
= MAP.flatten()
class Config:
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
MAP_CHAPTER_SWITCH_20241219 = True
STAGE_ENTRANCE = ['half', '20240725']
MAP_HAS_MODE_SWITCH = True
STAGE_INCREASE_AB = True
MAP_WALK_USE_CURRENT_FLEET = True
MAP_SIREN_HAS_BOSS_ICON_SMALL = True
MAP_SWIPE_MULTIPLY = (1.179, 1.201)
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.140, 1.161)
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.107, 1.127)
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_3(self):
return self.clear_boss()

View File

@@ -0,0 +1,74 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
from .a1 import Config as ConfigBase
MAP = CampaignMap('A2')
MAP.shape = 'J7'
MAP.camera_data = ['D2', 'D5', 'E4']
MAP.camera_data_spawn_point = ['D5']
MAP.map_data = """
-- ME -- -- ME ++ ++ -- -- --
MB -- ME -- -- -- ++ ME ME ++
++ -- ++ ++ Me -- Me -- -- ++
-- -- ++ ++ -- __ -- -- ME --
-- MS -- -- MS -- -- ME ++ --
ME -- -- -- -- -- ME -- -- --
++ -- SP SP -- ++ ++ ++ -- --
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 1},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 1},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 1, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, I1, J1, \
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, \
= MAP.flatten()
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom-left'
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_4(self):
return self.clear_boss()

View File

@@ -0,0 +1,75 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
from .a1 import Config as ConfigBase
MAP = CampaignMap('A3')
MAP.shape = 'H8'
MAP.camera_data = ['D4', 'D6', 'E3']
MAP.camera_data_spawn_point = ['D4']
MAP.map_data = """
++ ++ -- -- ME -- -- ME
++ ++ MS -- -- -- ME --
SP -- -- MS -- ++ -- --
SP -- -- MS -- ++ ME --
++ Me __ -- -- -- -- --
++ ME -- Me ++ ++ ++ --
-- -- -- -- Me -- ME --
MB ++ Me ME -- ME -- --
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 1},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 1},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 1, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, \
A2, B2, C2, D2, E2, F2, G2, H2, \
A3, B3, C3, D3, E3, F3, G3, H3, \
A4, B4, C4, D4, E4, F4, G4, H4, \
A5, B5, C5, D5, E5, F5, G5, H5, \
A6, B6, C6, D6, E6, F6, G6, H6, \
A7, B7, C7, D7, E7, F7, G7, H7, \
A8, B8, C8, D8, E8, F8, G8, H8, \
= MAP.flatten()
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_4(self):
return self.clear_boss()

View File

@@ -0,0 +1,85 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
MAP = CampaignMap('B1')
MAP.shape = 'I8'
MAP.camera_data = ['D3', 'D6', 'F3', 'F6']
MAP.camera_data_spawn_point = ['D6']
MAP.map_data = """
++ -- -- -- -- -- -- -- --
ME -- ME ++ ++ ++ -- -- ++
-- ME -- MS -- MS -- ME ++
-- ++ MS -- -- -- Me -- ME
-- Me -- -- SP -- -- __ Me
-- -- -- SP -- -- Me -- --
++ ++ Me -- -- ++ -- MB --
++ ++ -- ME ME ++ ME -- ME
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 1},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 2},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 2, 'boss': 1},
{'battle': 5, 'enemy': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
= MAP.flatten()
class Config:
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
MAP_CHAPTER_SWITCH_20241219 = True
STAGE_ENTRANCE = ['half', '20240725']
MAP_HAS_MODE_SWITCH = True
STAGE_INCREASE_AB = True
MAP_WALK_USE_CURRENT_FLEET = True
MAP_SIREN_HAS_BOSS_ICON_SMALL = True
MAP_SWIPE_MULTIPLY = (1.138, 1.160)
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.101, 1.121)
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.069, 1.088)
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_4(self):
return self.clear_boss()

View File

@@ -0,0 +1,76 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
from .b1 import Config as ConfigBase
MAP = CampaignMap('B2')
MAP.shape = 'J8'
MAP.camera_data = ['D2', 'D6', 'G2', 'G6']
MAP.camera_data_spawn_point = ['G2']
MAP.map_data = """
MB ++ ME ME ++ ++ ++ -- -- --
-- -- -- -- ++ ME MS -- -- SP
-- ME ++ -- Me -- -- MS -- --
-- -- Me -- -- __ MS -- -- SP
-- ME -- ++ -- -- -- -- -- --
-- ++ ME -- Me -- Me ++ ++ ME
-- ME -- ME ++ -- -- ME ++ --
-- -- -- -- ++ ME -- -- -- --
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 1},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 2},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 2},
{'battle': 5, 'enemy': 1, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, I1, J1, \
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, \
A8, B8, C8, D8, E8, F8, G8, H8, I8, J8, \
= MAP.flatten()
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_5(self):
return self.fleet_boss.clear_boss()

View File

@@ -0,0 +1,82 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
from .b1 import Config as ConfigBase
MAP = CampaignMap('B3')
MAP.shape = 'I10'
MAP.camera_data = ['D4', 'D6', 'D8', 'F4', 'F6', 'F8']
MAP.camera_data_spawn_point = ['D2']
MAP.map_data = """
++ ++ ++ SP -- SP ++ ++ ++
-- -- -- -- -- -- -- -- --
-- Me ++ -- MS -- ++ Me --
-- Me ++ MS -- MS ++ Me --
-- -- Me -- __ -- Me -- --
ME -- -- -- ++ -- -- -- ME
-- ME -- ++ ++ ++ -- ME --
ME -- -- ME -- ME -- -- ME
++ ++ -- -- MB -- -- ++ ++
++ ++ -- ME -- ME -- ++ ++
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 2},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 2},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 2},
{'battle': 5, 'enemy': 1, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
A9, B9, C9, D9, E9, F9, G9, H9, I9, \
A10, B10, C10, D10, E10, F10, G10, H10, I10, \
= MAP.flatten()
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_5(self):
return self.fleet_boss.clear_boss()

View File

@@ -0,0 +1,84 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
MAP = CampaignMap('C1')
MAP.shape = 'I8'
MAP.camera_data = ['E2', 'E6']
MAP.camera_data_spawn_point = ['E2']
MAP.map_data = """
-- -- ME -- ME -- -- -- --
-- ++ -- -- -- ME ++ ++ --
-- ++ -- SP -- -- Me ++ --
-- ME -- -- SP -- -- ME --
++ -- Me -- -- -- Me -- --
-- ME ++ MS -- MS ++ ++ ++
-- -- ME -- __ -- ME ++ --
-- -- -- -- MB -- -- -- --
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 2},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 2},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 1, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
= MAP.flatten()
class Config:
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
MAP_CHAPTER_SWITCH_20241219 = True
STAGE_ENTRANCE = ['half', '20240725']
MAP_HAS_MODE_SWITCH = True
STAGE_INCREASE_AB = True
MAP_WALK_USE_CURRENT_FLEET = True
MAP_SIREN_HAS_BOSS_ICON_SMALL = True
MAP_SWIPE_MULTIPLY = (1.179, 1.201)
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.140, 1.161)
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.107, 1.127)
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_4(self):
return self.clear_boss()

View File

@@ -0,0 +1,74 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
from .c1 import Config as ConfigBase
MAP = CampaignMap('C2')
MAP.shape = 'J7'
MAP.camera_data = ['D2', 'D5', 'E4']
MAP.camera_data_spawn_point = ['D5']
MAP.map_data = """
-- ME -- -- ME ++ ++ -- -- --
MB -- ME -- -- -- ++ ME ME ++
++ -- ++ ++ Me -- Me -- -- ++
-- -- ++ ++ -- __ -- -- ME --
-- MS -- -- MS -- -- ME ++ --
ME -- -- -- -- -- ME -- -- --
++ -- SP SP -- ++ ++ ++ -- --
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 2},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 2},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 1, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, I1, J1, \
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, \
= MAP.flatten()
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom-left'
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_4(self):
return self.clear_boss()

View File

@@ -0,0 +1,76 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
from .c1 import Config as ConfigBase
MAP = CampaignMap('C3')
MAP.shape = 'H8'
MAP.camera_data = ['D4', 'D6', 'E3']
MAP.camera_data_spawn_point = ['D4']
MAP.map_data = """
++ ++ -- -- ME -- -- ME
++ ++ MS -- -- -- ME --
SP -- -- MS -- ++ -- --
SP -- -- MS -- ++ ME --
++ Me __ -- -- -- -- --
++ ME -- Me ++ ++ ++ --
-- -- -- -- Me -- ME --
MB ++ Me ME -- ME -- --
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 2},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 2},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 1},
{'battle': 5, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, \
A2, B2, C2, D2, E2, F2, G2, H2, \
A3, B3, C3, D3, E3, F3, G3, H3, \
A4, B4, C4, D4, E4, F4, G4, H4, \
A5, B5, C5, D5, E5, F5, G5, H5, \
A6, B6, C6, D6, E6, F6, G6, H6, \
A7, B7, C7, D7, E7, F7, G7, H7, \
A8, B8, C8, D8, E8, F8, G8, H8, \
= MAP.flatten()
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_5(self):
return self.fleet_boss.clear_boss()

View File

@@ -0,0 +1,85 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
MAP = CampaignMap('D1')
MAP.shape = 'I8'
MAP.camera_data = ['D3', 'D6', 'F3', 'F6']
MAP.camera_data_spawn_point = ['D6']
MAP.map_data = """
++ -- -- -- -- -- -- -- --
ME -- ME ++ ++ ++ -- -- ++
-- ME -- MS -- MS -- ME ++
-- ++ MS -- -- -- Me -- ME
-- Me -- -- SP -- -- __ Me
-- -- -- SP -- -- Me -- --
++ ++ Me -- -- ++ -- MB --
++ ++ -- ME ME ++ ME -- ME
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 2},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 2},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 2},
{'battle': 5, 'enemy': 1, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
= MAP.flatten()
class Config:
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
MAP_CHAPTER_SWITCH_20241219 = True
STAGE_ENTRANCE = ['half', '20240725']
MAP_HAS_MODE_SWITCH = True
STAGE_INCREASE_AB = True
MAP_WALK_USE_CURRENT_FLEET = True
MAP_SIREN_HAS_BOSS_ICON_SMALL = True
MAP_SWIPE_MULTIPLY = (1.138, 1.160)
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.101, 1.121)
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.069, 1.088)
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_5(self):
return self.fleet_boss.clear_boss()

View File

@@ -0,0 +1,85 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
from .d1 import Config as ConfigBase
MAP = CampaignMap('D2')
MAP.shape = 'J8'
MAP.camera_data = ['D2', 'D6', 'G2', 'G6']
MAP.camera_data_spawn_point = ['G2']
MAP.map_data = """
MB ++ ME ME ++ ++ ++ -- -- --
-- -- -- -- ++ ME MS -- -- SP
-- ME ++ -- Me -- -- MS -- --
-- -- Me -- -- __ MS -- -- SP
-- ME -- ++ -- -- -- -- -- --
-- ++ ME -- Me -- Me ++ ++ ME
-- ME -- ME ++ -- -- ME ++ --
-- -- -- -- ++ ME -- -- -- --
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 2},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 2, 'siren': 1},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 2},
{'battle': 5, 'enemy': 1},
{'battle': 6, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, I1, J1, \
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, \
A8, B8, C8, D8, E8, F8, G8, H8, I8, J8, \
= MAP.flatten()
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=1):
return True
return self.battle_default()
def battle_5(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_6(self):
return self.fleet_boss.clear_boss()

View File

@@ -0,0 +1,91 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
from .d1 import Config as ConfigBase
MAP = CampaignMap('D3')
MAP.shape = 'I10'
MAP.camera_data = ['D4', 'D6', 'D8', 'F4', 'F6', 'F8']
MAP.camera_data_spawn_point = ['D2']
MAP.map_data = """
++ ++ ++ SP -- SP ++ ++ ++
-- -- -- -- -- -- -- -- --
-- Me ++ -- MS -- ++ Me --
-- Me ++ MS -- MS ++ Me --
-- -- Me -- __ -- Me -- --
ME -- -- -- ++ -- -- -- ME
-- ME -- ++ ++ ++ -- ME --
ME -- -- ME -- ME -- -- ME
++ ++ -- -- MB -- -- ++ ++
++ ++ -- ME -- ME -- ++ ++
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 2},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 2, 'siren': 1},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 2},
{'battle': 5, 'enemy': 1},
{'battle': 6, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
A9, B9, C9, D9, E9, F9, G9, H9, I9, \
A10, B10, C10, D10, E10, F10, G10, H10, I10, \
= MAP.flatten()
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=1):
return True
return self.battle_default()
def battle_5(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_6(self):
return self.fleet_boss.clear_boss()

View File

@@ -0,0 +1,96 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
MAP = CampaignMap('SP')
MAP.shape = 'H7'
MAP.camera_data = ['D5', 'E2', 'E5']
MAP.camera_data_spawn_point = ['D2']
MAP.map_data = """
-- -- -- -- ++ -- ME --
-- SP SP -- ++ ME -- ME
-- -- -- -- MS -- ME --
++ ++ ++ MS __ -- ++ ++
-- ME -- -- -- MS -- ++
ME -- ME -- ++ -- MB --
-- ME -- ++ ++ ME -- ME
"""
MAP.weight_data = """
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
50 50 50 50 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 10, 'siren': 3},
{'battle': 1},
{'battle': 2},
{'battle': 3},
{'battle': 4},
{'battle': 5},
{'battle': 6},
{'battle': 7, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, H1, \
A2, B2, C2, D2, E2, F2, G2, H2, \
A3, B3, C3, D3, E3, F3, G3, H3, \
A4, B4, C4, D4, E4, F4, G4, H4, \
A5, B5, C5, D5, E5, F5, G5, H5, \
A6, B6, C6, D6, E6, F6, G6, H6, \
A7, B7, C7, D7, E7, F7, G7, H7, \
= MAP.flatten()
class Config:
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = []
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
STAR_REQUIRE_1 = 0
STAR_REQUIRE_2 = 0
STAR_REQUIRE_3 = 0
# ===== End of generated config =====
MAP_CHAPTER_SWITCH_20241219 = True
STAGE_ENTRANCE = ['half', '20240725']
MAP_HAS_MODE_SWITCH = False
STAGE_INCREASE_AB = True
MAP_WALK_USE_CURRENT_FLEET = True
MAP_IS_ONE_TIME_STAGE = True
MAP_SIREN_HAS_BOSS_ICON_SMALL = True
MAP_SWIPE_MULTIPLY = (1.162, 1.184)
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.124, 1.145)
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.091, 1.111)
class Campaign(CampaignBase):
MAP = MAP
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
def battle_0(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=2):
return True
return self.battle_default()
def battle_5(self):
if self.clear_siren():
return True
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
return True
return self.battle_default()
def battle_7(self):
return self.fleet_boss.clear_boss()

View File

@@ -103,6 +103,7 @@
"CommissionRecord": "do_not", "CommissionRecord": "do_not",
"CombatRecord": "do_not", "CombatRecord": "do_not",
"OpsiRecord": "do_not", "OpsiRecord": "do_not",
"CL1Record": "do_not",
"AkashiRecord": "do_not", "AkashiRecord": "do_not",
"MeowfficerBuy": "do_not", "MeowfficerBuy": "do_not",
"MeowfficerTalent": "do_not" "MeowfficerTalent": "do_not"
@@ -188,6 +189,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -265,6 +267,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -342,6 +345,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -432,6 +436,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -469,57 +474,6 @@
"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,
"ClearAfterSinking": false
},
"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,
"Fleet1Onsen": false,
"Fleet2Value": 119,
"Fleet2Record": "2020-01-01 00:00:00",
"Fleet2Control": "prevent_yellow_face",
"Fleet2Recover": "not_in_dormitory",
"Fleet2Oath": false,
"Fleet2Onsen": false
},
"Storage": {
"Storage": {}
}
},
"Event": { "Event": {
"Scheduler": { "Scheduler": {
"Enable": false, "Enable": false,
@@ -561,6 +515,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -638,6 +593,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -764,6 +720,57 @@
"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,
"ClearAfterSinking": false
},
"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,
"Fleet1Onsen": false,
"Fleet2Value": 119,
"Fleet2Record": "2020-01-01 00:00:00",
"Fleet2Control": "prevent_yellow_face",
"Fleet2Recover": "not_in_dormitory",
"Fleet2Oath": false,
"Fleet2Onsen": false
},
"Storage": {
"Storage": {}
}
},
"MaritimeEscort": { "MaritimeEscort": {
"Scheduler": { "Scheduler": {
"Enable": false, "Enable": false,
@@ -824,6 +831,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -860,57 +868,6 @@
"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,
"ClearAfterSinking": false
},
"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,
"Fleet1Onsen": false,
"Fleet2Value": 119,
"Fleet2Record": "2020-01-01 00:00:00",
"Fleet2Control": "prevent_yellow_face",
"Fleet2Recover": "not_in_dormitory",
"Fleet2Oath": false,
"Fleet2Onsen": false
},
"Storage": {
"Storage": {}
}
},
"EventA": { "EventA": {
"Scheduler": { "Scheduler": {
"Enable": false, "Enable": false,
@@ -956,6 +913,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -1037,6 +995,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -1118,6 +1077,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -1199,6 +1159,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -1276,6 +1237,7 @@
}, },
"Submarine": { "Submarine": {
"Fleet": 0, "Fleet": 0,
"AutoRecommend": false,
"Mode": "do_not_use", "Mode": "do_not_use",
"AutoSearchMode": "sub_standby", "AutoSearchMode": "sub_standby",
"DistanceToBoss": "2_grid_to_boss" "DistanceToBoss": "2_grid_to_boss"
@@ -1362,6 +1324,57 @@
"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,
"ClearAfterSinking": false
},
"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,
"Fleet1Onsen": false,
"Fleet2Value": 119,
"Fleet2Record": "2020-01-01 00:00:00",
"Fleet2Control": "prevent_yellow_face",
"Fleet2Recover": "not_in_dormitory",
"Fleet2Oath": false,
"Fleet2Onsen": false
},
"Storage": {
"Storage": {}
}
},
"Commission": { "Commission": {
"Scheduler": { "Scheduler": {
"Enable": false, "Enable": false,
@@ -1770,6 +1783,7 @@
"Refresh": false, "Refresh": false,
"BuySkinBox": "disabled", "BuySkinBox": "disabled",
"BuySkinBoxAmount": 0, "BuySkinBoxAmount": 0,
"SkinBoxPositionFilter": "1 > 2 > 3",
"ConsumeCoins": false, "ConsumeCoins": false,
"Filter": "BookRedT3 > BookYellowT3 > BookBlueT3 > BookRedT2\n> Cube\n> FoodT6 > FoodT5" "Filter": "BookRedT3 > BookYellowT3 > BookBlueT3 > BookRedT2\n> Cube\n> FoodT6 > FoodT5"
}, },
@@ -2254,6 +2268,11 @@
"Storage": {} "Storage": {}
} }
}, },
"IslandPearl": {
"Storage": {
"Storage": {}
}
},
"Benchmark": { "Benchmark": {
"Benchmark": { "Benchmark": {
"DeviceType": "emulator", "DeviceType": "emulator",

View File

@@ -567,6 +567,11 @@ class MapData:
lines.append(f' MAP_HAS_FLEET_STEP = {self.MAP_HAS_FLEET_STEP}') lines.append(f' MAP_HAS_FLEET_STEP = {self.MAP_HAS_FLEET_STEP}')
lines.append(f' MAP_HAS_AMBUSH = {self.MAP_HAS_AMBUSH}') lines.append(f' MAP_HAS_AMBUSH = {self.MAP_HAS_AMBUSH}')
lines.append(f' MAP_HAS_MYSTERY = {self.MAP_HAS_MYSTERY}') lines.append(f' MAP_HAS_MYSTERY = {self.MAP_HAS_MYSTERY}')
lines.append(f' MAP_CHAPTER_SWITCH_20241219 = True')
lines.append(f" STAGE_ENTRANCE = ['half', '20240725']")
lines.append(f' MAP_HAS_MODE_SWITCH = True')
lines.append(f' STAGE_INCREASE_AB = True')
lines.append(f' MAP_WALK_USE_CURRENT_FLEET = True')
if self.MAP_HAS_PORTAL: if self.MAP_HAS_PORTAL:
lines.append(f' MAP_HAS_PORTAL = {self.MAP_HAS_PORTAL}') lines.append(f' MAP_HAS_PORTAL = {self.MAP_HAS_PORTAL}')
if self.MAP_HAS_LAND_BASED: if self.MAP_HAS_LAND_BASED:

View File

@@ -41,11 +41,21 @@ class CampaignOcr(ModuleBase):
@staticmethod @staticmethod
def _campaign_ocr_result_process(result): def _campaign_ocr_result_process(result):
# The result will be like '7--2', because tha dash in game is '' not '-' # The result will be like '7--2', because tha dash in game is '' not '-'
result = result.lower().replace('--', '-').replace('--', '-') result = result.replace('--', '-').replace('--', '-').lstrip('-')
if result.startswith('-'):
result = result[1:] # Replace wrong 'I' from results like 'I1-1', '1I-1', 'I-I', '11-I', 'I4-4', to '1'
# while keeping results like 'isp-2', 'sp1'
def replace_func(match):
segment = match.group(0)
return segment.replace('I', '1')
result = re.sub(r'[0-9I]+-[0-9I]+', replace_func, result, count=1)
# Convert '72' to '7-2'
if len(result) == 2 and result[0].isdigit(): if len(result) == 2 and result[0].isdigit():
result = '-'.join(result) result = '-'.join(result)
result = result.lower()
return result return result
@staticmethod @staticmethod

View File

@@ -124,6 +124,10 @@ class Combat(Level, HPBalancer, Retirement, SubmarineCall, CombatAuto, CombatMan
return PAUSE_ShadowPuppetry return PAUSE_ShadowPuppetry
if PAUSE_MaidCafe.match_template_color(self.device.image, offset=(10, 10)): if PAUSE_MaidCafe.match_template_color(self.device.image, offset=(10, 10)):
return PAUSE_MaidCafe return PAUSE_MaidCafe
if PAUSE_Ancient.match_template_color(self.device.image, offset=(10, 10)):
return PAUSE_Ancient
if PAUSE_SpringInn.match_template_color(self.device.image, offset=(10, 10)):
return PAUSE_SpringInn
return False return False
def handle_combat_quit(self, offset=(20, 20), interval=3): def handle_combat_quit(self, offset=(20, 20), interval=3):
@@ -175,6 +179,10 @@ class Combat(Level, HPBalancer, Retirement, SubmarineCall, CombatAuto, CombatMan
self.device.click(QUIT_MaidCafe) self.device.click(QUIT_MaidCafe)
timer.reset() timer.reset()
return True return True
if QUIT_SpringInn.match_luma(self.device.image, offset=offset):
self.device.click(QUIT_SpringInn)
timer.reset()
return True
return False return False
def handle_combat_quit_reconfirm(self, interval=2): def handle_combat_quit_reconfirm(self, interval=2):

View File

@@ -5,6 +5,7 @@ from module.base.template import Template
# Don't modify it manually. # Don't modify it manually.
PAUSE = Button(area={'cn': (1158, 40, 1199, 58), 'en': (1155, 38, 1216, 51), 'jp': (1232, 36, 1240, 60), 'tw': (1217, 36, 1225, 59)}, color={'cn': (189, 190, 202), 'en': (164, 169, 181), 'jp': (244, 241, 246), 'tw': (247, 243, 247)}, button={'cn': (1157, 34, 1241, 61), 'en': (1136, 26, 1270, 63), 'jp': (1141, 38, 1220, 57), 'tw': (1157, 34, 1241, 61)}, file={'cn': './assets/cn/combat_ui/PAUSE.png', 'en': './assets/en/combat_ui/PAUSE.png', 'jp': './assets/jp/combat_ui/PAUSE.png', 'tw': './assets/tw/combat_ui/PAUSE.png'}) PAUSE = Button(area={'cn': (1158, 40, 1199, 58), 'en': (1155, 38, 1216, 51), 'jp': (1232, 36, 1240, 60), 'tw': (1217, 36, 1225, 59)}, color={'cn': (189, 190, 202), 'en': (164, 169, 181), 'jp': (244, 241, 246), 'tw': (247, 243, 247)}, button={'cn': (1157, 34, 1241, 61), 'en': (1136, 26, 1270, 63), 'jp': (1141, 38, 1220, 57), 'tw': (1157, 34, 1241, 61)}, file={'cn': './assets/cn/combat_ui/PAUSE.png', 'en': './assets/en/combat_ui/PAUSE.png', 'jp': './assets/jp/combat_ui/PAUSE.png', 'tw': './assets/tw/combat_ui/PAUSE.png'})
PAUSE_Ancient = Button(area={'cn': (1228, 36, 1245, 55), 'en': (1228, 36, 1245, 55), 'jp': (1228, 36, 1245, 55), 'tw': (1228, 36, 1245, 55)}, color={'cn': (172, 161, 144), 'en': (172, 161, 144), 'jp': (172, 161, 144), 'tw': (172, 161, 144)}, button={'cn': (1228, 36, 1245, 55), 'en': (1228, 36, 1245, 55), 'jp': (1228, 36, 1245, 55), 'tw': (1228, 36, 1245, 55)}, file={'cn': './assets/cn/combat_ui/PAUSE_Ancient.png', 'en': './assets/cn/combat_ui/PAUSE_Ancient.png', 'jp': './assets/cn/combat_ui/PAUSE_Ancient.png', 'tw': './assets/cn/combat_ui/PAUSE_Ancient.png'})
PAUSE_Christmas = Button(area={'cn': (1234, 35, 1250, 56), 'en': (1234, 35, 1250, 56), 'jp': (1234, 35, 1250, 56), 'tw': (1234, 35, 1250, 56)}, color={'cn': (158, 181, 210), 'en': (158, 181, 210), 'jp': (158, 181, 210), 'tw': (158, 181, 210)}, button={'cn': (1234, 35, 1250, 56), 'en': (1234, 35, 1250, 56), 'jp': (1234, 35, 1250, 56), 'tw': (1234, 35, 1250, 56)}, file={'cn': './assets/cn/combat_ui/PAUSE_Christmas.png', 'en': './assets/cn/combat_ui/PAUSE_Christmas.png', 'jp': './assets/cn/combat_ui/PAUSE_Christmas.png', 'tw': './assets/cn/combat_ui/PAUSE_Christmas.png'}) PAUSE_Christmas = Button(area={'cn': (1234, 35, 1250, 56), 'en': (1234, 35, 1250, 56), 'jp': (1234, 35, 1250, 56), 'tw': (1234, 35, 1250, 56)}, color={'cn': (158, 181, 210), 'en': (158, 181, 210), 'jp': (158, 181, 210), 'tw': (158, 181, 210)}, button={'cn': (1234, 35, 1250, 56), 'en': (1234, 35, 1250, 56), 'jp': (1234, 35, 1250, 56), 'tw': (1234, 35, 1250, 56)}, file={'cn': './assets/cn/combat_ui/PAUSE_Christmas.png', 'en': './assets/cn/combat_ui/PAUSE_Christmas.png', 'jp': './assets/cn/combat_ui/PAUSE_Christmas.png', 'tw': './assets/cn/combat_ui/PAUSE_Christmas.png'})
PAUSE_Cyber = Button(area={'cn': (1231, 32, 1253, 59), 'en': (1231, 32, 1253, 59), 'jp': (1231, 32, 1253, 59), 'tw': (1231, 32, 1253, 59)}, color={'cn': (40, 140, 157), 'en': (40, 140, 157), 'jp': (40, 140, 157), 'tw': (40, 140, 157)}, button={'cn': (1231, 32, 1253, 59), 'en': (1231, 32, 1253, 59), 'jp': (1231, 32, 1253, 59), 'tw': (1231, 32, 1253, 59)}, file={'cn': './assets/cn/combat_ui/PAUSE_Cyber.png', 'en': './assets/cn/combat_ui/PAUSE_Cyber.png', 'jp': './assets/cn/combat_ui/PAUSE_Cyber.png', 'tw': './assets/cn/combat_ui/PAUSE_Cyber.png'}) PAUSE_Cyber = Button(area={'cn': (1231, 32, 1253, 59), 'en': (1231, 32, 1253, 59), 'jp': (1231, 32, 1253, 59), 'tw': (1231, 32, 1253, 59)}, color={'cn': (40, 140, 157), 'en': (40, 140, 157), 'jp': (40, 140, 157), 'tw': (40, 140, 157)}, button={'cn': (1231, 32, 1253, 59), 'en': (1231, 32, 1253, 59), 'jp': (1231, 32, 1253, 59), 'tw': (1231, 32, 1253, 59)}, file={'cn': './assets/cn/combat_ui/PAUSE_Cyber.png', 'en': './assets/cn/combat_ui/PAUSE_Cyber.png', 'jp': './assets/cn/combat_ui/PAUSE_Cyber.png', 'tw': './assets/cn/combat_ui/PAUSE_Cyber.png'})
PAUSE_DOUBLE_CHECK = Button(area={'cn': (1226, 35, 1231, 60), 'en': (1226, 35, 1231, 61), 'jp': (1226, 35, 1230, 60), 'tw': (1226, 35, 1231, 60)}, color={'cn': (96, 104, 136), 'en': (83, 98, 118), 'jp': (97, 102, 120), 'tw': (96, 104, 136)}, button={'cn': (1226, 35, 1231, 60), 'en': (1226, 35, 1231, 61), 'jp': (1226, 35, 1230, 60), 'tw': (1226, 35, 1231, 60)}, file={'cn': './assets/cn/combat_ui/PAUSE_DOUBLE_CHECK.png', 'en': './assets/en/combat_ui/PAUSE_DOUBLE_CHECK.png', 'jp': './assets/jp/combat_ui/PAUSE_DOUBLE_CHECK.png', 'tw': './assets/tw/combat_ui/PAUSE_DOUBLE_CHECK.png'}) PAUSE_DOUBLE_CHECK = Button(area={'cn': (1226, 35, 1231, 60), 'en': (1226, 35, 1231, 61), 'jp': (1226, 35, 1230, 60), 'tw': (1226, 35, 1231, 60)}, color={'cn': (96, 104, 136), 'en': (83, 98, 118), 'jp': (97, 102, 120), 'tw': (96, 104, 136)}, button={'cn': (1226, 35, 1231, 60), 'en': (1226, 35, 1231, 61), 'jp': (1226, 35, 1230, 60), 'tw': (1226, 35, 1231, 60)}, file={'cn': './assets/cn/combat_ui/PAUSE_DOUBLE_CHECK.png', 'en': './assets/en/combat_ui/PAUSE_DOUBLE_CHECK.png', 'jp': './assets/jp/combat_ui/PAUSE_DOUBLE_CHECK.png', 'tw': './assets/tw/combat_ui/PAUSE_DOUBLE_CHECK.png'})
@@ -19,6 +20,7 @@ PAUSE_Nurse = Button(area={'cn': (1236, 33, 1251, 50), 'en': (1236, 33, 1251, 50
PAUSE_Pharaoh = Button(area={'cn': (1229, 55, 1259, 62), 'en': (1229, 55, 1259, 62), 'jp': (1229, 55, 1259, 62), 'tw': (1229, 55, 1259, 62)}, color={'cn': (164, 119, 78), 'en': (164, 119, 78), 'jp': (164, 119, 78), 'tw': (164, 119, 78)}, button={'cn': (1229, 55, 1259, 62), 'en': (1229, 55, 1259, 62), 'jp': (1229, 55, 1259, 62), 'tw': (1229, 55, 1259, 62)}, file={'cn': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'en': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'jp': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'tw': './assets/cn/combat_ui/PAUSE_Pharaoh.png'}) PAUSE_Pharaoh = Button(area={'cn': (1229, 55, 1259, 62), 'en': (1229, 55, 1259, 62), 'jp': (1229, 55, 1259, 62), 'tw': (1229, 55, 1259, 62)}, color={'cn': (164, 119, 78), 'en': (164, 119, 78), 'jp': (164, 119, 78), 'tw': (164, 119, 78)}, button={'cn': (1229, 55, 1259, 62), 'en': (1229, 55, 1259, 62), 'jp': (1229, 55, 1259, 62), 'tw': (1229, 55, 1259, 62)}, file={'cn': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'en': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'jp': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'tw': './assets/cn/combat_ui/PAUSE_Pharaoh.png'})
PAUSE_Seaside = Button(area={'cn': (1214, 31, 1239, 59), 'en': (1214, 31, 1239, 59), 'jp': (1214, 31, 1239, 59), 'tw': (1214, 31, 1239, 59)}, color={'cn': (172, 196, 212), 'en': (172, 196, 212), 'jp': (172, 196, 212), 'tw': (172, 196, 212)}, button={'cn': (1214, 31, 1239, 59), 'en': (1214, 31, 1239, 59), 'jp': (1214, 31, 1239, 59), 'tw': (1214, 31, 1239, 59)}, file={'cn': './assets/cn/combat_ui/PAUSE_Seaside.png', 'en': './assets/cn/combat_ui/PAUSE_Seaside.png', 'jp': './assets/cn/combat_ui/PAUSE_Seaside.png', 'tw': './assets/cn/combat_ui/PAUSE_Seaside.png'}) PAUSE_Seaside = Button(area={'cn': (1214, 31, 1239, 59), 'en': (1214, 31, 1239, 59), 'jp': (1214, 31, 1239, 59), 'tw': (1214, 31, 1239, 59)}, color={'cn': (172, 196, 212), 'en': (172, 196, 212), 'jp': (172, 196, 212), 'tw': (172, 196, 212)}, button={'cn': (1214, 31, 1239, 59), 'en': (1214, 31, 1239, 59), 'jp': (1214, 31, 1239, 59), 'tw': (1214, 31, 1239, 59)}, file={'cn': './assets/cn/combat_ui/PAUSE_Seaside.png', 'en': './assets/cn/combat_ui/PAUSE_Seaside.png', 'jp': './assets/cn/combat_ui/PAUSE_Seaside.png', 'tw': './assets/cn/combat_ui/PAUSE_Seaside.png'})
PAUSE_ShadowPuppetry = Button(area={'cn': (1216, 37, 1234, 55), 'en': (1216, 37, 1234, 55), 'jp': (1216, 37, 1234, 55), 'tw': (1216, 37, 1234, 55)}, color={'cn': (139, 112, 72), 'en': (139, 112, 72), 'jp': (139, 112, 72), 'tw': (139, 112, 72)}, button={'cn': (1216, 37, 1234, 55), 'en': (1216, 37, 1234, 55), 'jp': (1216, 37, 1234, 55), 'tw': (1216, 37, 1234, 55)}, file={'cn': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png', 'en': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png', 'jp': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png', 'tw': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png'}) PAUSE_ShadowPuppetry = Button(area={'cn': (1216, 37, 1234, 55), 'en': (1216, 37, 1234, 55), 'jp': (1216, 37, 1234, 55), 'tw': (1216, 37, 1234, 55)}, color={'cn': (139, 112, 72), 'en': (139, 112, 72), 'jp': (139, 112, 72), 'tw': (139, 112, 72)}, button={'cn': (1216, 37, 1234, 55), 'en': (1216, 37, 1234, 55), 'jp': (1216, 37, 1234, 55), 'tw': (1216, 37, 1234, 55)}, file={'cn': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png', 'en': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png', 'jp': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png', 'tw': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png'})
PAUSE_SpringInn = Button(area={'cn': (1212, 37, 1235, 61), 'en': (1212, 37, 1235, 61), 'jp': (1212, 37, 1235, 61), 'tw': (1212, 37, 1235, 61)}, color={'cn': (201, 91, 78), 'en': (201, 91, 78), 'jp': (201, 91, 78), 'tw': (201, 91, 78)}, button={'cn': (1212, 37, 1235, 61), 'en': (1212, 37, 1235, 61), 'jp': (1212, 37, 1235, 61), 'tw': (1212, 37, 1235, 61)}, file={'cn': './assets/cn/combat_ui/PAUSE_SpringInn.png', 'en': './assets/cn/combat_ui/PAUSE_SpringInn.png', 'jp': './assets/cn/combat_ui/PAUSE_SpringInn.png', 'tw': './assets/cn/combat_ui/PAUSE_SpringInn.png'})
PAUSE_Star = Button(area={'cn': (1234, 36, 1250, 57), 'en': (1234, 36, 1250, 57), 'jp': (1234, 36, 1250, 57), 'tw': (1234, 36, 1250, 57)}, color={'cn': (169, 179, 179), 'en': (169, 179, 179), 'jp': (169, 179, 179), 'tw': (169, 179, 179)}, button={'cn': (1234, 36, 1250, 57), 'en': (1234, 36, 1250, 57), 'jp': (1234, 36, 1250, 57), 'tw': (1234, 36, 1250, 57)}, file={'cn': './assets/cn/combat_ui/PAUSE_Star.png', 'en': './assets/cn/combat_ui/PAUSE_Star.png', 'jp': './assets/cn/combat_ui/PAUSE_Star.png', 'tw': './assets/cn/combat_ui/PAUSE_Star.png'}) PAUSE_Star = Button(area={'cn': (1234, 36, 1250, 57), 'en': (1234, 36, 1250, 57), 'jp': (1234, 36, 1250, 57), 'tw': (1234, 36, 1250, 57)}, color={'cn': (169, 179, 179), 'en': (169, 179, 179), 'jp': (169, 179, 179), 'tw': (169, 179, 179)}, button={'cn': (1234, 36, 1250, 57), 'en': (1234, 36, 1250, 57), 'jp': (1234, 36, 1250, 57), 'tw': (1234, 36, 1250, 57)}, file={'cn': './assets/cn/combat_ui/PAUSE_Star.png', 'en': './assets/cn/combat_ui/PAUSE_Star.png', 'jp': './assets/cn/combat_ui/PAUSE_Star.png', 'tw': './assets/cn/combat_ui/PAUSE_Star.png'})
QUIT = Button(area={'cn': (420, 490, 593, 548), 'en': (473, 508, 567, 532), 'jp': (433, 490, 606, 547), 'tw': (433, 490, 606, 547)}, color={'cn': (199, 122, 114), 'en': (216, 168, 164), 'jp': (196, 120, 113), 'tw': (200, 126, 118)}, button={'cn': (420, 490, 593, 548), 'en': (473, 508, 567, 532), 'jp': (433, 490, 606, 547), 'tw': (433, 490, 606, 547)}, file={'cn': './assets/cn/combat_ui/QUIT.png', 'en': './assets/en/combat_ui/QUIT.png', 'jp': './assets/jp/combat_ui/QUIT.png', 'tw': './assets/tw/combat_ui/QUIT.png'}) QUIT = Button(area={'cn': (420, 490, 593, 548), 'en': (473, 508, 567, 532), 'jp': (433, 490, 606, 547), 'tw': (433, 490, 606, 547)}, color={'cn': (199, 122, 114), 'en': (216, 168, 164), 'jp': (196, 120, 113), 'tw': (200, 126, 118)}, button={'cn': (420, 490, 593, 548), 'en': (473, 508, 567, 532), 'jp': (433, 490, 606, 547), 'tw': (433, 490, 606, 547)}, file={'cn': './assets/cn/combat_ui/QUIT.png', 'en': './assets/en/combat_ui/QUIT.png', 'jp': './assets/jp/combat_ui/QUIT.png', 'tw': './assets/tw/combat_ui/QUIT.png'})
QUIT_Christmas = Button(area={'cn': (400, 506, 477, 525), 'en': (410, 507, 469, 524), 'jp': (400, 506, 477, 525), 'tw': (400, 506, 477, 525)}, color={'cn': (195, 139, 166), 'en': (207, 166, 185), 'jp': (195, 139, 166), 'tw': (195, 139, 166)}, button={'cn': (400, 506, 477, 525), 'en': (410, 507, 469, 524), 'jp': (400, 506, 477, 525), 'tw': (400, 506, 477, 525)}, file={'cn': './assets/cn/combat_ui/QUIT_Christmas.png', 'en': './assets/en/combat_ui/QUIT_Christmas.png', 'jp': './assets/cn/combat_ui/QUIT_Christmas.png', 'tw': './assets/cn/combat_ui/QUIT_Christmas.png'}) QUIT_Christmas = Button(area={'cn': (400, 506, 477, 525), 'en': (410, 507, 469, 524), 'jp': (400, 506, 477, 525), 'tw': (400, 506, 477, 525)}, color={'cn': (195, 139, 166), 'en': (207, 166, 185), 'jp': (195, 139, 166), 'tw': (195, 139, 166)}, button={'cn': (400, 506, 477, 525), 'en': (410, 507, 469, 524), 'jp': (400, 506, 477, 525), 'tw': (400, 506, 477, 525)}, file={'cn': './assets/cn/combat_ui/QUIT_Christmas.png', 'en': './assets/en/combat_ui/QUIT_Christmas.png', 'jp': './assets/cn/combat_ui/QUIT_Christmas.png', 'tw': './assets/cn/combat_ui/QUIT_Christmas.png'})
@@ -30,3 +32,4 @@ QUIT_Ninja = Button(area={'cn': (398, 509, 477, 528), 'en': (398, 509, 477, 528)
QUIT_Nurse = Button(area={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, color={'cn': (254, 193, 170), 'en': (254, 193, 170), 'jp': (254, 193, 170), 'tw': (254, 193, 170)}, button={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, file={'cn': './assets/cn/combat_ui/QUIT_Nurse.png', 'en': './assets/cn/combat_ui/QUIT_Nurse.png', 'jp': './assets/cn/combat_ui/QUIT_Nurse.png', 'tw': './assets/cn/combat_ui/QUIT_Nurse.png'}) QUIT_Nurse = Button(area={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, color={'cn': (254, 193, 170), 'en': (254, 193, 170), 'jp': (254, 193, 170), 'tw': (254, 193, 170)}, button={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, file={'cn': './assets/cn/combat_ui/QUIT_Nurse.png', 'en': './assets/cn/combat_ui/QUIT_Nurse.png', 'jp': './assets/cn/combat_ui/QUIT_Nurse.png', 'tw': './assets/cn/combat_ui/QUIT_Nurse.png'})
QUIT_Pharaoh = Button(area={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, color={'cn': (204, 132, 108), 'en': (204, 132, 108), 'jp': (204, 132, 108), 'tw': (204, 132, 108)}, button={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, file={'cn': './assets/cn/combat_ui/QUIT_Pharaoh.png', 'en': './assets/cn/combat_ui/QUIT_Pharaoh.png', 'jp': './assets/cn/combat_ui/QUIT_Pharaoh.png', 'tw': './assets/cn/combat_ui/QUIT_Pharaoh.png'}) QUIT_Pharaoh = Button(area={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, color={'cn': (204, 132, 108), 'en': (204, 132, 108), 'jp': (204, 132, 108), 'tw': (204, 132, 108)}, button={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, file={'cn': './assets/cn/combat_ui/QUIT_Pharaoh.png', 'en': './assets/cn/combat_ui/QUIT_Pharaoh.png', 'jp': './assets/cn/combat_ui/QUIT_Pharaoh.png', 'tw': './assets/cn/combat_ui/QUIT_Pharaoh.png'})
QUIT_Seaside = Button(area={'cn': (398, 509, 476, 528), 'en': (398, 509, 476, 528), 'jp': (398, 509, 476, 528), 'tw': (398, 509, 476, 528)}, color={'cn': (247, 208, 188), 'en': (247, 208, 188), 'jp': (247, 208, 188), 'tw': (247, 208, 188)}, button={'cn': (398, 509, 476, 528), 'en': (398, 509, 476, 528), 'jp': (398, 509, 476, 528), 'tw': (398, 509, 476, 528)}, file={'cn': './assets/cn/combat_ui/QUIT_Seaside.png', 'en': './assets/cn/combat_ui/QUIT_Seaside.png', 'jp': './assets/cn/combat_ui/QUIT_Seaside.png', 'tw': './assets/cn/combat_ui/QUIT_Seaside.png'}) QUIT_Seaside = Button(area={'cn': (398, 509, 476, 528), 'en': (398, 509, 476, 528), 'jp': (398, 509, 476, 528), 'tw': (398, 509, 476, 528)}, color={'cn': (247, 208, 188), 'en': (247, 208, 188), 'jp': (247, 208, 188), 'tw': (247, 208, 188)}, button={'cn': (398, 509, 476, 528), 'en': (398, 509, 476, 528), 'jp': (398, 509, 476, 528), 'tw': (398, 509, 476, 528)}, file={'cn': './assets/cn/combat_ui/QUIT_Seaside.png', 'en': './assets/cn/combat_ui/QUIT_Seaside.png', 'jp': './assets/cn/combat_ui/QUIT_Seaside.png', 'tw': './assets/cn/combat_ui/QUIT_Seaside.png'})
QUIT_SpringInn = Button(area={'cn': (396, 559, 478, 584), 'en': (396, 559, 478, 584), 'jp': (396, 559, 478, 584), 'tw': (396, 559, 478, 584)}, color={'cn': (145, 88, 80), 'en': (145, 88, 80), 'jp': (145, 88, 80), 'tw': (145, 88, 80)}, button={'cn': (396, 559, 478, 584), 'en': (396, 559, 478, 584), 'jp': (396, 559, 478, 584), 'tw': (396, 559, 478, 584)}, file={'cn': './assets/cn/combat_ui/QUIT_SpringInn.png', 'en': './assets/cn/combat_ui/QUIT_SpringInn.png', 'jp': './assets/cn/combat_ui/QUIT_SpringInn.png', 'tw': './assets/cn/combat_ui/QUIT_SpringInn.png'})

File diff suppressed because it is too large Load Diff

View File

@@ -114,6 +114,9 @@ DropRecord:
OpsiRecord: OpsiRecord:
value: do_not value: do_not
option: [ do_not, save, upload, save_and_upload ] option: [ do_not, save, upload, save_and_upload ]
CL1Record:
value: do_not
option: [ do_not, save, upload, save_and_upload ]
AkashiRecord: AkashiRecord:
value: do_not value: do_not
option: [ do_not, save ] option: [ do_not, save ]
@@ -205,6 +208,7 @@ Submarine:
Fleet: Fleet:
value: 0 value: 0
option: [ 0, 1, 2 ] option: [ 0, 1, 2 ]
AutoRecommend: false
Mode: Mode:
value: do_not_use value: do_not_use
option: [ do_not_use, hunt_only, boss_only, hunt_and_boss, every_combat ] option: [ do_not_use, hunt_only, boss_only, hunt_and_boss, every_combat ]
@@ -534,9 +538,14 @@ _Island:
- akashi - akashi
- ying_swei - ying_swei
- chao_ho - chao_ho
- william_d_porter
- chen_hai
- unicorn - unicorn
- cheshire - cheshire
- amagi_chan - amagi_chan
- helena
- atago
- friedrich_der_grobe
Island1: Island1:
Receive: false Receive: false
Option1: *IslandOption8 Option1: *IslandOption8
@@ -670,6 +679,8 @@ GeneralShop:
value: disabled value: disabled
option: [ disabled, unlimited, specified ] option: [ disabled, unlimited, specified ]
BuySkinBoxAmount: 0 BuySkinBoxAmount: 0
SkinBoxPositionFilter: |-
1 > 2 > 3
ConsumeCoins: false ConsumeCoins: false
Filter: |- Filter: |-
BookRedT3 > BookYellowT3 > BookBlueT3 > BookRedT2 BookRedT3 > BookYellowT3 > BookBlueT3 > BookRedT2
@@ -751,7 +762,7 @@ CoreShop:
ShipyardDr: ShipyardDr:
ResearchSeries: ResearchSeries:
value: 2 value: 2
option: [ 2, 3, 4 ] option: [ 2, 3, 4, 5 ]
ShipIndex: ShipIndex:
value: 0 value: 0
option: [ 0, 1, 2, 3, 4, 5, 6 ] option: [ 0, 1, 2, 3, 4, 5, 6 ]
@@ -760,7 +771,7 @@ ShipyardDr:
Shipyard: Shipyard:
ResearchSeries: ResearchSeries:
value: 1 value: 1
option: [ 1, 2, 3, 4, 5 ] option: [ 1, 2, 3, 4, 5, 6 ]
ShipIndex: ShipIndex:
value: 0 value: 0
option: [ 0, 1, 2, 3, 4, 5, 6 ] option: [ 0, 1, 2, 3, 4, 5, 6 ]

View File

@@ -23,11 +23,11 @@
"page": "setting", "page": "setting",
"tasks": [ "tasks": [
"EventGeneral", "EventGeneral",
"Coalition",
"Event", "Event",
"Event2", "Event2",
"Raid", "Raid",
"Hospital", "Hospital",
"Coalition",
"MaritimeEscort", "MaritimeEscort",
"WarArchives" "WarArchives"
] ]
@@ -36,13 +36,13 @@
"menu": "collapse", "menu": "collapse",
"page": "setting", "page": "setting",
"tasks": [ "tasks": [
"CoalitionSp",
"EventA", "EventA",
"EventB", "EventB",
"EventC", "EventC",
"EventD", "EventD",
"EventSp", "EventSp",
"RaidDaily" "RaidDaily",
"CoalitionSp"
] ]
}, },
"Reward": { "Reward": {
@@ -105,6 +105,7 @@
"OpsiDaemon", "OpsiDaemon",
"EventStory", "EventStory",
"BoxDisassemble", "BoxDisassemble",
"IslandPearl",
"Benchmark", "Benchmark",
"AzurLaneUncensored", "AzurLaneUncensored",
"GameManager" "GameManager"

View File

@@ -73,12 +73,6 @@ Event:
EventGeneral: EventGeneral:
- EventGeneral - EventGeneral
- TaskBalancer - TaskBalancer
Coalition:
- Scheduler
- Campaign
- Coalition
- StopCondition
- Emotion
Event: Event:
- Scheduler - Scheduler
- Campaign - Campaign
@@ -108,6 +102,12 @@ Event:
- Hospital - Hospital
- StopCondition - StopCondition
- Emotion - Emotion
Coalition:
- Scheduler
- Campaign
- Coalition
- StopCondition
- Emotion
MaritimeEscort: MaritimeEscort:
- Scheduler - Scheduler
- MaritimeEscort - MaritimeEscort
@@ -129,12 +129,6 @@ EventDaily:
menu: 'collapse' menu: 'collapse'
page: 'setting' page: 'setting'
tasks: tasks:
CoalitionSp:
- Scheduler
- Campaign
- Coalition
- StopCondition
- Emotion
EventA: EventA:
- Scheduler - Scheduler
- EventDaily - EventDaily
@@ -190,6 +184,12 @@ EventDaily:
- Campaign - Campaign
- StopCondition - StopCondition
- Emotion - Emotion
CoalitionSp:
- Scheduler
- Campaign
- Coalition
- StopCondition
- Emotion
# ==================== Reward ==================== # ==================== Reward ====================
@@ -360,6 +360,8 @@ Tool:
- EventStory - EventStory
BoxDisassemble: BoxDisassemble:
- BoxDisassemble - BoxDisassemble
IslandPearl:
- IslandPearl
Benchmark: Benchmark:
- Benchmark - Benchmark
AzurLaneUncensored: AzurLaneUncensored:

View File

@@ -20,7 +20,7 @@ class GeneratedConfig:
# Group `Emulator` # Group `Emulator`
Emulator_Serial = 'auto' Emulator_Serial = 'auto'
Emulator_PackageName = 'auto' # auto, com.bilibili.azurlane, com.YoStarEN.AzurLane, com.YoStarJP.AzurLane, com.hkmanjuu.azurlane.gp, com.bilibili.blhx.huawei, com.bilibili.blhx.honor, com.bilibili.blhx.mi, com.tencent.tmgp.bilibili.blhx, com.bilibili.blhx.baidu, com.bilibili.blhx.qihoo, com.bilibili.blhx.nearme.gamecenter, com.bilibili.blhx.vivo, com.bilibili.blhx.mz, com.bilibili.blhx.dl, com.bilibili.blhx.lenovo, com.bilibili.blhx.uc, com.bilibili.blhx.mzw, com.yiwu.blhx.yx15, com.bilibili.blhx.m4399, com.bilibili.blhx.bilibiliMove, com.hkmanjuu.azurlane.gp.mc Emulator_PackageName = 'auto' # auto, com.bilibili.azurlane, com.YoStarEN.AzurLane, com.YoStarJP.AzurLane, com.hkmanjuu.azurlane.gp, com.bilibili.blhx.huawei, com.bilibili.blhx.honor, com.bilibili.blhx.mi, com.tencent.tmgp.bilibili.blhx, com.bilibili.blhx.baidu, com.bilibili.blhx.qihoo, com.bilibili.blhx.nearme.gamecenter, com.bilibili.blhx.vivo, com.bilibili.blhx.mz, com.bilibili.blhx.dl, com.bilibili.blhx.lenovo, com.bilibili.blhx.uc, com.bilibili.blhx.mzw, com.yiwu.blhx.yx15, com.bilibili.blhx.m4399, com.bilibili.blhx.bilibiliMove, com.hkmanjuu.azurlane.gp.mc
Emulator_ServerName = 'disabled' # disabled, cn_android-0, cn_android-1, cn_android-2, cn_android-3, cn_android-4, cn_android-5, cn_android-6, cn_android-7, cn_android-8, cn_android-9, cn_android-10, cn_android-11, cn_android-12, cn_android-13, cn_android-14, cn_android-15, cn_android-16, cn_android-17, cn_android-18, cn_android-19, cn_android-20, cn_android-21, cn_android-22, cn_android-23, cn_android-24, cn_android-25, cn_android-26, cn_android-27, cn_ios-0, cn_ios-1, cn_ios-2, cn_ios-3, cn_ios-4, cn_ios-5, cn_ios-6, cn_ios-7, cn_ios-8, cn_ios-9, cn_ios-10, cn_channel-0, cn_channel-1, cn_channel-2, cn_channel-3, cn_channel-4, en-0, en-1, en-2, en-3, en-4, en-5, jp-0, jp-1, jp-2, jp-3, jp-4, jp-5, jp-6, jp-7, jp-8, jp-9, jp-10, jp-11, jp-12, jp-13, jp-14, jp-15, jp-16, jp-17 Emulator_ServerName = 'disabled' # disabled, cn_android-0, cn_android-1, cn_android-2, cn_android-3, cn_android-4, cn_android-5, cn_android-6, cn_android-7, cn_android-8, cn_android-9, cn_android-10, cn_android-11, cn_android-12, cn_android-13, cn_android-14, cn_android-15, cn_android-16, cn_android-17, cn_android-18, cn_android-19, cn_android-20, cn_android-21, cn_android-22, cn_android-23, cn_android-24, cn_android-25, cn_android-26, cn_android-27, cn_android-28, cn_ios-0, cn_ios-1, cn_ios-2, cn_ios-3, cn_ios-4, cn_ios-5, cn_ios-6, cn_ios-7, cn_ios-8, cn_ios-9, cn_ios-10, cn_channel-0, cn_channel-1, cn_channel-2, cn_channel-3, cn_channel-4, en-0, en-1, en-2, en-3, en-4, en-5, jp-0, jp-1, jp-2, jp-3, jp-4, jp-5, jp-6, jp-7, jp-8, jp-9, jp-10, jp-11, jp-12, jp-13, jp-14, jp-15, jp-16, jp-17
Emulator_ScreenshotMethod = 'auto' # auto, ADB, ADB_nc, uiautomator2, aScreenCap, aScreenCap_nc, DroidCast, DroidCast_raw, nemu_ipc, ldopengl Emulator_ScreenshotMethod = 'auto' # auto, ADB, ADB_nc, uiautomator2, aScreenCap, aScreenCap_nc, DroidCast, DroidCast_raw, nemu_ipc, ldopengl
Emulator_ControlMethod = 'MaaTouch' # ADB, uiautomator2, minitouch, Hermit, MaaTouch Emulator_ControlMethod = 'MaaTouch' # ADB, uiautomator2, minitouch, Hermit, MaaTouch
Emulator_ScreenshotDedithering = False Emulator_ScreenshotDedithering = False
@@ -52,6 +52,7 @@ class GeneratedConfig:
DropRecord_CommissionRecord = 'do_not' # do_not, save, upload, save_and_upload DropRecord_CommissionRecord = 'do_not' # do_not, save, upload, save_and_upload
DropRecord_CombatRecord = 'do_not' # do_not, save DropRecord_CombatRecord = 'do_not' # do_not, save
DropRecord_OpsiRecord = 'do_not' # do_not, save, upload, save_and_upload DropRecord_OpsiRecord = 'do_not' # do_not, save, upload, save_and_upload
DropRecord_CL1Record = 'do_not' # do_not, save, upload, save_and_upload
DropRecord_AkashiRecord = 'do_not' # do_not, save DropRecord_AkashiRecord = 'do_not' # do_not, save
DropRecord_MeowfficerBuy = 'do_not' # do_not, save DropRecord_MeowfficerBuy = 'do_not' # do_not, save
DropRecord_MeowfficerTalent = 'do_not' # do_not, save, upload, save_and_upload DropRecord_MeowfficerTalent = 'do_not' # do_not, save, upload, save_and_upload
@@ -109,6 +110,7 @@ class GeneratedConfig:
# Group `Submarine` # Group `Submarine`
Submarine_Fleet = 0 # 0, 1, 2 Submarine_Fleet = 0 # 0, 1, 2
Submarine_AutoRecommend = False
Submarine_Mode = 'do_not_use' # do_not_use, hunt_only, boss_only, hunt_and_boss, every_combat Submarine_Mode = 'do_not_use' # do_not_use, hunt_only, boss_only, hunt_and_boss, every_combat
Submarine_AutoSearchMode = 'sub_standby' # sub_standby, sub_auto_call Submarine_AutoSearchMode = 'sub_standby' # sub_standby, sub_auto_call
Submarine_DistanceToBoss = '2_grid_to_boss' # to_boss_position, 1_grid_to_boss, 2_grid_to_boss, use_open_ocean_support Submarine_DistanceToBoss = '2_grid_to_boss' # to_boss_position, 1_grid_to_boss, 2_grid_to_boss, use_open_ocean_support
@@ -279,142 +281,143 @@ class GeneratedConfig:
# Group `Island1` # Group `Island1`
Island1_Receive = False Island1_Receive = False
Island1_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8 Island1_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8
Island1_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island1_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island1_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8 Island1_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8
Island1_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island1_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island1_Option3 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8 Island1_Option3 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8
Island1_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island1_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island1_Option4 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8 Island1_Option4 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8
Island1_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island1_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island2` # Group `Island2`
Island2_Receive = False Island2_Receive = False
Island2_Option1 = 0 # 0, 1 Island2_Option1 = 0 # 0, 1
Island2_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island2_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island2_Option2 = 0 # 0, 2 Island2_Option2 = 0 # 0, 2
Island2_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island2_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island2_Option3 = 0 # 0, 3 Island2_Option3 = 0 # 0, 3
Island2_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island2_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island2_Option4 = 0 # 0, 4 Island2_Option4 = 0 # 0, 4
Island2_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island2_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island3` # Group `Island3`
Island3_Receive = False Island3_Receive = False
Island3_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 Island3_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
Island3_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island3_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island3_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 Island3_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
Island3_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island3_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island3_Option3 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 Island3_Option3 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
Island3_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island3_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island4` # Group `Island4`
Island4_Receive = False Island4_Receive = False
Island4_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6 Island4_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6
Island4_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island4_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island4_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6 Island4_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6
Island4_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island4_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island4_Option3 = 0 # 0, 1, 2, 3, 4, 5, 6 Island4_Option3 = 0 # 0, 1, 2, 3, 4, 5, 6
Island4_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island4_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island4_Option4 = 0 # 0, 1, 2, 3, 4, 5, 6 Island4_Option4 = 0 # 0, 1, 2, 3, 4, 5, 6
Island4_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island4_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island5` # Group `Island5`
Island5_Receive = False Island5_Receive = False
Island5_Option1 = 0 # 0, 1, 2, 3, 4 Island5_Option1 = 0 # 0, 1, 2, 3, 4
Island5_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island5_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island5_Option2 = 0 # 0, 1, 2, 3, 4 Island5_Option2 = 0 # 0, 1, 2, 3, 4
Island5_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island5_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island5_Option3 = 0 # 0, 1, 2, 3, 4 Island5_Option3 = 0 # 0, 1, 2, 3, 4
Island5_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island5_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island5_Option4 = 0 # 0, 1, 2, 3, 4 Island5_Option4 = 0 # 0, 1, 2, 3, 4
Island5_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island5_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island6` # Group `Island6`
Island6_Receive = False Island6_Receive = False
Island6_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7 Island6_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7
Island6_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island6_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island6_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7 Island6_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7
Island6_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island6_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island6_Option3 = 0 # 0, 1, 2, 3, 4, 5, 6, 7 Island6_Option3 = 0 # 0, 1, 2, 3, 4, 5, 6, 7
Island6_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island6_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island6_Option4 = 0 # 0, 1, 2, 3, 4, 5, 6, 7 Island6_Option4 = 0 # 0, 1, 2, 3, 4, 5, 6, 7
Island6_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island6_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island7` # Group `Island7`
Island7_Receive = False Island7_Receive = False
Island7_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Island7_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Island7_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island7_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island7_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Island7_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Island7_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island7_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island8` # Group `Island8`
Island8_Receive = False Island8_Receive = False
Island8_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 Island8_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Island8_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island8_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island8_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 Island8_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Island8_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island8_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island9` # Group `Island9`
Island9_Receive = False Island9_Receive = False
Island9_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 Island9_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Island9_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island9_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island9_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 Island9_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Island9_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island9_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island10` # Group `Island10`
Island10_Receive = False Island10_Receive = False
Island10_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Island10_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Island10_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island10_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island10_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Island10_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Island10_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island10_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island11` # Group `Island11`
Island11_Receive = False Island11_Receive = False
Island11_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Island11_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Island11_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island11_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island11_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Island11_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Island11_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island11_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island12` # Group `Island12`
Island12_Receive = False Island12_Receive = False
Island12_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6 Island12_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6
Island12_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island12_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island12_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6 Island12_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6
Island12_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island12_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island13` # Group `Island13`
Island13_Receive = False Island13_Receive = False
Island13_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6 Island13_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6
Island13_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island13_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island13_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6 Island13_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6
Island13_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island13_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island14` # Group `Island14`
Island14_Receive = False Island14_Receive = False
Island14_Option1 = 0 # 0, 1, 2, 3, 4 Island14_Option1 = 0 # 0, 1, 2, 3, 4
Island14_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island14_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island14_Option2 = 0 # 0, 1, 2, 3, 4 Island14_Option2 = 0 # 0, 1, 2, 3, 4
Island14_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island14_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island15` # Group `Island15`
Island15_Receive = False Island15_Receive = False
Island15_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Island15_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Island15_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island15_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island15_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Island15_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Island15_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island15_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `Island16` # Group `Island16`
Island16_Receive = False Island16_Receive = False
Island16_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Island16_Option1 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Island16_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island16_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
Island16_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Island16_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Island16_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, unicorn, cheshire, amagi_chan Island16_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe
# Group `GeneralShop` # Group `GeneralShop`
GeneralShop_UseGems = False GeneralShop_UseGems = False
GeneralShop_Refresh = False GeneralShop_Refresh = False
GeneralShop_BuySkinBox = 'disabled' # disabled, unlimited, specified GeneralShop_BuySkinBox = 'disabled' # disabled, unlimited, specified
GeneralShop_BuySkinBoxAmount = 0 GeneralShop_BuySkinBoxAmount = 0
GeneralShop_SkinBoxPositionFilter = '1 > 2 > 3'
GeneralShop_ConsumeCoins = False GeneralShop_ConsumeCoins = False
GeneralShop_Filter = 'BookRedT3 > BookYellowT3 > BookBlueT3 > BookRedT2\n> Cube\n> FoodT6 > FoodT5' GeneralShop_Filter = 'BookRedT3 > BookYellowT3 > BookBlueT3 > BookRedT2\n> Cube\n> FoodT6 > FoodT5'
@@ -451,13 +454,13 @@ class GeneratedConfig:
CoreShop_Filter = 'Array' CoreShop_Filter = 'Array'
# Group `ShipyardDr` # Group `ShipyardDr`
ShipyardDr_ResearchSeries = 2 # 2, 3, 4 ShipyardDr_ResearchSeries = 2 # 2, 3, 4, 5
ShipyardDr_ShipIndex = 0 # 0, 1, 2, 3, 4, 5, 6 ShipyardDr_ShipIndex = 0 # 0, 1, 2, 3, 4, 5, 6
ShipyardDr_BuyAmount = 2 ShipyardDr_BuyAmount = 2
ShipyardDr_LastRun = datetime.datetime(2020, 1, 1, 0, 0) ShipyardDr_LastRun = datetime.datetime(2020, 1, 1, 0, 0)
# Group `Shipyard` # Group `Shipyard`
Shipyard_ResearchSeries = 1 # 1, 2, 3, 4, 5 Shipyard_ResearchSeries = 1 # 1, 2, 3, 4, 5, 6
Shipyard_ShipIndex = 0 # 0, 1, 2, 3, 4, 5, 6 Shipyard_ShipIndex = 0 # 0, 1, 2, 3, 4, 5, 6
Shipyard_BuyAmount = 2 Shipyard_BuyAmount = 2
Shipyard_LastRun = datetime.datetime(2020, 1, 1, 0, 0) Shipyard_LastRun = datetime.datetime(2020, 1, 1, 0, 0)

View File

@@ -66,10 +66,6 @@
"name": "Event General", "name": "Event General",
"help": "" "help": ""
}, },
"Coalition": {
"name": "Light & Shadow Fashion Shoot",
"help": ""
},
"Event": { "Event": {
"name": "Event", "name": "Event",
"help": "" "help": ""
@@ -86,6 +82,10 @@
"name": "Valley Hospital Story", "name": "Valley Hospital Story",
"help": "" "help": ""
}, },
"Coalition": {
"name": "Light & Shadow Fashion Shoot",
"help": ""
},
"MaritimeEscort": { "MaritimeEscort": {
"name": "Maritime Escort", "name": "Maritime Escort",
"help": "" "help": ""
@@ -94,10 +94,6 @@
"name": "War Archives", "name": "War Archives",
"help": "Due to the lack of maintenance of war archives, continuous clear may not work normally, if Alas runs abnormally, Please manually finish clearing and use auto search" "help": "Due to the lack of maintenance of war archives, continuous clear may not work normally, if Alas runs abnormally, Please manually finish clearing and use auto search"
}, },
"CoalitionSp": {
"name": "Light & Shadow Fashion Shoot SP",
"help": ""
},
"EventA": { "EventA": {
"name": "Event Daily A", "name": "Event Daily A",
"help": "" "help": ""
@@ -122,6 +118,10 @@
"name": "Raid Daily", "name": "Raid Daily",
"help": "" "help": ""
}, },
"CoalitionSp": {
"name": "Light & Shadow Fashion Shoot SP",
"help": ""
},
"Commission": { "Commission": {
"name": "Commission", "name": "Commission",
"help": "" "help": ""
@@ -274,6 +274,10 @@
"name": "Box Disassemble", "name": "Box Disassemble",
"help": "" "help": ""
}, },
"IslandPearl": {
"name": "Task.IslandPearl.name",
"help": "Task.IslandPearl.help"
},
"Benchmark": { "Benchmark": {
"name": "Performance Test", "name": "Performance Test",
"help": "" "help": ""
@@ -386,6 +390,7 @@
"cn_android-25": "[国服] 水仙行动", "cn_android-25": "[国服] 水仙行动",
"cn_android-26": "[国服] 冬月计划", "cn_android-26": "[国服] 冬月计划",
"cn_android-27": "[国服] 长弓计划", "cn_android-27": "[国服] 长弓计划",
"cn_android-28": "[国服] 裁决协议",
"cn_ios-0": "[国服] 夏威夷", "cn_ios-0": "[国服] 夏威夷",
"cn_ios-1": "[国服] 珊瑚海", "cn_ios-1": "[国服] 珊瑚海",
"cn_ios-2": "[国服] 中途岛", "cn_ios-2": "[国服] 中途岛",
@@ -591,6 +596,14 @@
"upload": "Upload", "upload": "Upload",
"save_and_upload": "Save and upload" "save_and_upload": "Save and upload"
}, },
"CL1Record": {
"name": "CL1 Record",
"help": "Whether to save CL1 drop screenshots is controlled independently by this option",
"do_not": "Do nothing",
"save": "Save",
"upload": "Upload",
"save_and_upload": "Save and upload"
},
"AkashiRecord": { "AkashiRecord": {
"name": "Opsi Akashi Shop Record", "name": "Opsi Akashi Shop Record",
"help": "", "help": "",
@@ -765,7 +778,7 @@
"event_20231026_cn": "Tempesta and the Fountain of Youth", "event_20231026_cn": "Tempesta and the Fountain of Youth",
"event_20231123_cn": "The Ninja Scrolls: Azur Flash", "event_20231123_cn": "The Ninja Scrolls: Azur Flash",
"event_20231221_cn": "Light-Chasing Sea of Stars Rerun", "event_20231221_cn": "Light-Chasing Sea of Stars Rerun",
"event_20240229_cn": "Snowrealm Peregrination", "event_20240229_cn": "Snowrealm Peregrination Rerun",
"event_20240425_cn": "Heart-Linking Harmony", "event_20240425_cn": "Heart-Linking Harmony",
"event_20240521_cn": "Light of the Martyrium", "event_20240521_cn": "Light of the Martyrium",
"event_20240725_cn": "Interlude of Illusions", "event_20240725_cn": "Interlude of Illusions",
@@ -783,6 +796,7 @@
"event_20250912_cn": "A Dance for Amahara Above", "event_20250912_cn": "A Dance for Amahara Above",
"event_20251023_cn": "Tempesta and Islas de Libertád", "event_20251023_cn": "Tempesta and Islas de Libertád",
"event_20251218_cn": "A Note Through the Firmament", "event_20251218_cn": "A Note Through the Firmament",
"event_20260226_cn": "Springtide Inn Online",
"raid_20200624": "Air Raid Drills with Essex Rerun", "raid_20200624": "Air Raid Drills with Essex Rerun",
"raid_20210708": "Cross Wave rerun", "raid_20210708": "Cross Wave rerun",
"raid_20220127": "Mystery Investigation", "raid_20220127": "Mystery Investigation",
@@ -793,6 +807,7 @@
"raid_20240130": "Spring Festive Fiasco", "raid_20240130": "Spring Festive Fiasco",
"raid_20240328": "From Zero to Hero Rerun", "raid_20240328": "From Zero to Hero Rerun",
"raid_20250116": "Spring Fashion Festa", "raid_20250116": "Spring Fashion Festa",
"raid_20260212": "Spring Auction Adventure",
"war_archives_20180607_cn": "archives Ink Stained Steel Sakura", "war_archives_20180607_cn": "archives Ink Stained Steel Sakura",
"war_archives_20180726_cn": "archives Iris of Light and Dark", "war_archives_20180726_cn": "archives Iris of Light and Dark",
"war_archives_20181020_en": "archives Strive Wish and Strategize", "war_archives_20181020_en": "archives Strive Wish and Strategize",
@@ -1008,6 +1023,10 @@
"1": "1", "1": "1",
"2": "2" "2": "2"
}, },
"AutoRecommend": {
"name": "Hard Mode Auto-Recommend",
"help": "Auto-fills empty submarine fleet if using via recommend button in Hard Mode"
},
"Mode": { "Mode": {
"name": "Submarine Mode", "name": "Submarine Mode",
"help": "Effective only when auto search disabled. Reminder: 'Hunt and Boss' is actually a mix of 'Hunt Only' and 'Boss Only', it does hunt and summon submarines at boss if available.", "help": "Effective only when auto search disabled. Reminder: 'Hunt and Boss' is actually a mix of 'Hunt Only' and 'Boss Only', it does hunt and summon submarines at boss if available.",
@@ -1784,9 +1803,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island1.Option2.name", "name": "Island1.Option2.name",
@@ -1813,9 +1837,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island1.Option3.name", "name": "Island1.Option3.name",
@@ -1842,9 +1871,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island1.Option4.name", "name": "Island1.Option4.name",
@@ -1871,9 +1905,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island2": { "Island2": {
@@ -1903,9 +1942,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island2.Option2.name", "name": "Island2.Option2.name",
@@ -1925,9 +1969,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island2.Option3.name", "name": "Island2.Option3.name",
@@ -1947,9 +1996,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island2.Option4.name", "name": "Island2.Option4.name",
@@ -1969,9 +2023,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island3": { "Island3": {
@@ -2016,9 +2075,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island3.Option2.name", "name": "Island3.Option2.name",
@@ -2053,9 +2117,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island3.Option3.name", "name": "Island3.Option3.name",
@@ -2090,9 +2159,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island4": { "Island4": {
@@ -2127,9 +2201,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island4.Option2.name", "name": "Island4.Option2.name",
@@ -2154,9 +2233,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island4.Option3.name", "name": "Island4.Option3.name",
@@ -2181,9 +2265,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island4.Option4.name", "name": "Island4.Option4.name",
@@ -2208,9 +2297,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island5": { "Island5": {
@@ -2243,9 +2337,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island5.Option2.name", "name": "Island5.Option2.name",
@@ -2268,9 +2367,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island5.Option3.name", "name": "Island5.Option3.name",
@@ -2293,9 +2397,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island5.Option4.name", "name": "Island5.Option4.name",
@@ -2318,9 +2427,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island6": { "Island6": {
@@ -2356,9 +2470,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island6.Option2.name", "name": "Island6.Option2.name",
@@ -2384,9 +2503,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island6.Option3.name", "name": "Island6.Option3.name",
@@ -2412,9 +2536,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island6.Option4.name", "name": "Island6.Option4.name",
@@ -2440,9 +2569,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island7": { "Island7": {
@@ -2480,9 +2614,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island7.Option2.name", "name": "Island7.Option2.name",
@@ -2510,9 +2649,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island8": { "Island8": {
@@ -2553,9 +2697,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island8.Option2.name", "name": "Island8.Option2.name",
@@ -2586,9 +2735,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island9": { "Island9": {
@@ -2628,9 +2782,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island9.Option2.name", "name": "Island9.Option2.name",
@@ -2660,9 +2819,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island10": { "Island10": {
@@ -2701,9 +2865,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island10.Option2.name", "name": "Island10.Option2.name",
@@ -2732,9 +2901,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island11": { "Island11": {
@@ -2772,9 +2946,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island11.Option2.name", "name": "Island11.Option2.name",
@@ -2802,9 +2981,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island12": { "Island12": {
@@ -2839,9 +3023,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island12.Option2.name", "name": "Island12.Option2.name",
@@ -2866,9 +3055,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island13": { "Island13": {
@@ -2903,9 +3097,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island13.Option2.name", "name": "Island13.Option2.name",
@@ -2930,9 +3129,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island14": { "Island14": {
@@ -2965,9 +3169,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island14.Option2.name", "name": "Island14.Option2.name",
@@ -2990,9 +3199,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island15": { "Island15": {
@@ -3030,9 +3244,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island15.Option2.name", "name": "Island15.Option2.name",
@@ -3060,9 +3279,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island16": { "Island16": {
@@ -3100,9 +3324,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island16.Option2.name", "name": "Island16.Option2.name",
@@ -3130,9 +3359,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"GeneralShop": { "GeneralShop": {
@@ -3159,6 +3393,10 @@
"name": "Purchase X Skin Boxes", "name": "Purchase X Skin Boxes",
"help": "Takes effect when \"Purchase Specified Quantity\" is selected." "help": "Takes effect when \"Purchase Specified Quantity\" is selected."
}, },
"SkinBoxPositionFilter": {
"name": "Specific Skin Box Filter",
"help": "Used when multiple skin box types are sold simultaneously in the shop. Enter position(s) to target specific skin boxes; positions start from 1 (left to right). Uses the same format as filters, e.g. 1 > 2 > 3.\nLeave empty for no restriction."
},
"ConsumeCoins": { "ConsumeCoins": {
"name": "Consume Spilled Coins", "name": "Consume Spilled Coins",
"help": "Buy all items when the coins exceed 550000" "help": "Buy all items when the coins exceed 550000"
@@ -3376,7 +3614,8 @@
"help": "", "help": "",
"2": "DR2", "2": "DR2",
"3": "DR3", "3": "DR3",
"4": "DR4" "4": "DR4",
"5": "DR5"
}, },
"ShipIndex": { "ShipIndex": {
"name": "Ship Index", "name": "Ship Index",
@@ -3410,7 +3649,8 @@
"2": "PR2", "2": "PR2",
"3": "PR3", "3": "PR3",
"4": "PR4", "4": "PR4",
"5": "PR5" "5": "PR5",
"6": "PR6"
}, },
"ShipIndex": { "ShipIndex": {
"name": "Ship Index", "name": "Ship Index",

View File

@@ -66,10 +66,6 @@
"name": "イベント共通設定", "name": "イベント共通設定",
"help": "" "help": ""
}, },
"Coalition": {
"name": "特集写真-撮影進行中",
"help": ""
},
"Event": { "Event": {
"name": "イベント海域", "name": "イベント海域",
"help": "" "help": ""
@@ -86,6 +82,10 @@
"name": "病院探訪ストーリー", "name": "病院探訪ストーリー",
"help": "" "help": ""
}, },
"Coalition": {
"name": "特集写真-撮影進行中",
"help": ""
},
"MaritimeEscort": { "MaritimeEscort": {
"name": "Maritime Escort", "name": "Maritime Escort",
"help": "" "help": ""
@@ -94,10 +94,6 @@
"name": "作戦履歴", "name": "作戦履歴",
"help": "" "help": ""
}, },
"CoalitionSp": {
"name": "特集写真-撮影進行中SP",
"help": ""
},
"EventA": { "EventA": {
"name": "毎日イベント海域A", "name": "毎日イベント海域A",
"help": "" "help": ""
@@ -122,6 +118,10 @@
"name": "Raid Daily", "name": "Raid Daily",
"help": "" "help": ""
}, },
"CoalitionSp": {
"name": "特集写真-撮影進行中SP",
"help": ""
},
"Commission": { "Commission": {
"name": "委託", "name": "委託",
"help": "" "help": ""
@@ -274,6 +274,10 @@
"name": "Task.BoxDisassemble.name", "name": "Task.BoxDisassemble.name",
"help": "Task.BoxDisassemble.help" "help": "Task.BoxDisassemble.help"
}, },
"IslandPearl": {
"name": "Task.IslandPearl.name",
"help": "Task.IslandPearl.help"
},
"Benchmark": { "Benchmark": {
"name": "機能テスト", "name": "機能テスト",
"help": "" "help": ""
@@ -386,6 +390,7 @@
"cn_android-25": "[国服] 水仙行动", "cn_android-25": "[国服] 水仙行动",
"cn_android-26": "[国服] 冬月计划", "cn_android-26": "[国服] 冬月计划",
"cn_android-27": "[国服] 长弓计划", "cn_android-27": "[国服] 长弓计划",
"cn_android-28": "[国服] 裁决协议",
"cn_ios-0": "[国服] 夏威夷", "cn_ios-0": "[国服] 夏威夷",
"cn_ios-1": "[国服] 珊瑚海", "cn_ios-1": "[国服] 珊瑚海",
"cn_ios-2": "[国服] 中途岛", "cn_ios-2": "[国服] 中途岛",
@@ -591,6 +596,14 @@
"upload": "upload", "upload": "upload",
"save_and_upload": "save_and_upload" "save_and_upload": "save_and_upload"
}, },
"CL1Record": {
"name": "DropRecord.CL1Record.name",
"help": "DropRecord.CL1Record.help",
"do_not": "do_not",
"save": "save",
"upload": "upload",
"save_and_upload": "save_and_upload"
},
"AkashiRecord": { "AkashiRecord": {
"name": "DropRecord.AkashiRecord.name", "name": "DropRecord.AkashiRecord.name",
"help": "DropRecord.AkashiRecord.help", "help": "DropRecord.AkashiRecord.help",
@@ -765,7 +778,7 @@
"event_20231026_cn": "テンペスタと若返りの泉", "event_20231026_cn": "テンペスタと若返りの泉",
"event_20231123_cn": "蒼閃忍法帖", "event_20231123_cn": "蒼閃忍法帖",
"event_20231221_cn": "光追う星の海(復刻)", "event_20231221_cn": "光追う星の海(復刻)",
"event_20240229_cn": "銀界遊廻", "event_20240229_cn": "銀界遊廻(復刻)",
"event_20240425_cn": "共鳴のパッション", "event_20240425_cn": "共鳴のパッション",
"event_20240521_cn": "赫輝のマルティリウム", "event_20240521_cn": "赫輝のマルティリウム",
"event_20240725_cn": "夢幻の間奏曲", "event_20240725_cn": "夢幻の間奏曲",
@@ -783,6 +796,7 @@
"event_20250912_cn": "アマハラに舞い奉れ", "event_20250912_cn": "アマハラに舞い奉れ",
"event_20251023_cn": "テンペスタと自由群島", "event_20251023_cn": "テンペスタと自由群島",
"event_20251218_cn": "天穹に響く音謡", "event_20251218_cn": "天穹に響く音謡",
"event_20260226_cn": "春色旅籠Online",
"raid_20200624": "特別演習超空強襲波(復刻)", "raid_20200624": "特別演習超空強襲波(復刻)",
"raid_20210708": "交錯する新たな波 (復刻)", "raid_20210708": "交錯する新たな波 (復刻)",
"raid_20220127": "秘密事件調査", "raid_20220127": "秘密事件調査",
@@ -793,6 +807,7 @@
"raid_20240130": "新春宴会狂騒曲", "raid_20240130": "新春宴会狂騒曲",
"raid_20240328": "ゼロから頑張る魔王討伐(復刻)", "raid_20240328": "ゼロから頑張る魔王討伐(復刻)",
"raid_20250116": "新春華裳協奏曲", "raid_20250116": "新春華裳協奏曲",
"raid_20260212": "新春玉逸品会",
"war_archives_20180607_cn": "檔案 墨染まりし鋼の桜", "war_archives_20180607_cn": "檔案 墨染まりし鋼の桜",
"war_archives_20180726_cn": "檔案 光と影のアイリス", "war_archives_20180726_cn": "檔案 光と影のアイリス",
"war_archives_20181020_en": "檔案 努力希望と計画", "war_archives_20181020_en": "檔案 努力希望と計画",
@@ -1008,6 +1023,10 @@
"1": "1", "1": "1",
"2": "2" "2": "2"
}, },
"AutoRecommend": {
"name": "Submarine.AutoRecommend.name",
"help": "Submarine.AutoRecommend.help"
},
"Mode": { "Mode": {
"name": "Submarine.Mode.name", "name": "Submarine.Mode.name",
"help": "Submarine.Mode.help", "help": "Submarine.Mode.help",
@@ -1784,9 +1803,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island1.Option2.name", "name": "Island1.Option2.name",
@@ -1813,9 +1837,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island1.Option3.name", "name": "Island1.Option3.name",
@@ -1842,9 +1871,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island1.Option4.name", "name": "Island1.Option4.name",
@@ -1871,9 +1905,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island2": { "Island2": {
@@ -1903,9 +1942,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island2.Option2.name", "name": "Island2.Option2.name",
@@ -1925,9 +1969,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island2.Option3.name", "name": "Island2.Option3.name",
@@ -1947,9 +1996,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island2.Option4.name", "name": "Island2.Option4.name",
@@ -1969,9 +2023,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island3": { "Island3": {
@@ -2016,9 +2075,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island3.Option2.name", "name": "Island3.Option2.name",
@@ -2053,9 +2117,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island3.Option3.name", "name": "Island3.Option3.name",
@@ -2090,9 +2159,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island4": { "Island4": {
@@ -2127,9 +2201,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island4.Option2.name", "name": "Island4.Option2.name",
@@ -2154,9 +2233,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island4.Option3.name", "name": "Island4.Option3.name",
@@ -2181,9 +2265,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island4.Option4.name", "name": "Island4.Option4.name",
@@ -2208,9 +2297,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island5": { "Island5": {
@@ -2243,9 +2337,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island5.Option2.name", "name": "Island5.Option2.name",
@@ -2268,9 +2367,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island5.Option3.name", "name": "Island5.Option3.name",
@@ -2293,9 +2397,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island5.Option4.name", "name": "Island5.Option4.name",
@@ -2318,9 +2427,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island6": { "Island6": {
@@ -2356,9 +2470,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island6.Option2.name", "name": "Island6.Option2.name",
@@ -2384,9 +2503,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island6.Option3.name", "name": "Island6.Option3.name",
@@ -2412,9 +2536,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island6.Option4.name", "name": "Island6.Option4.name",
@@ -2440,9 +2569,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island7": { "Island7": {
@@ -2480,9 +2614,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island7.Option2.name", "name": "Island7.Option2.name",
@@ -2510,9 +2649,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island8": { "Island8": {
@@ -2553,9 +2697,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island8.Option2.name", "name": "Island8.Option2.name",
@@ -2586,9 +2735,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island9": { "Island9": {
@@ -2628,9 +2782,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island9.Option2.name", "name": "Island9.Option2.name",
@@ -2660,9 +2819,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island10": { "Island10": {
@@ -2701,9 +2865,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island10.Option2.name", "name": "Island10.Option2.name",
@@ -2732,9 +2901,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island11": { "Island11": {
@@ -2772,9 +2946,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island11.Option2.name", "name": "Island11.Option2.name",
@@ -2802,9 +2981,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island12": { "Island12": {
@@ -2839,9 +3023,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island12.Option2.name", "name": "Island12.Option2.name",
@@ -2866,9 +3055,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island13": { "Island13": {
@@ -2903,9 +3097,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island13.Option2.name", "name": "Island13.Option2.name",
@@ -2930,9 +3129,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island14": { "Island14": {
@@ -2965,9 +3169,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island14.Option2.name", "name": "Island14.Option2.name",
@@ -2990,9 +3199,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island15": { "Island15": {
@@ -3030,9 +3244,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island15.Option2.name", "name": "Island15.Option2.name",
@@ -3060,9 +3279,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island16": { "Island16": {
@@ -3100,9 +3324,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island16.Option2.name", "name": "Island16.Option2.name",
@@ -3130,9 +3359,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"GeneralShop": { "GeneralShop": {
@@ -3159,6 +3393,10 @@
"name": "GeneralShop.BuySkinBoxAmount.name", "name": "GeneralShop.BuySkinBoxAmount.name",
"help": "GeneralShop.BuySkinBoxAmount.help" "help": "GeneralShop.BuySkinBoxAmount.help"
}, },
"SkinBoxPositionFilter": {
"name": "GeneralShop.SkinBoxPositionFilter.name",
"help": "GeneralShop.SkinBoxPositionFilter.help"
},
"ConsumeCoins": { "ConsumeCoins": {
"name": "GeneralShop.ConsumeCoins.name", "name": "GeneralShop.ConsumeCoins.name",
"help": "GeneralShop.ConsumeCoins.help" "help": "GeneralShop.ConsumeCoins.help"
@@ -3376,7 +3614,8 @@
"help": "ShipyardDr.ResearchSeries.help", "help": "ShipyardDr.ResearchSeries.help",
"2": "2", "2": "2",
"3": "3", "3": "3",
"4": "4" "4": "4",
"5": "5"
}, },
"ShipIndex": { "ShipIndex": {
"name": "ShipyardDr.ShipIndex.name", "name": "ShipyardDr.ShipIndex.name",
@@ -3410,7 +3649,8 @@
"2": "2", "2": "2",
"3": "3", "3": "3",
"4": "4", "4": "4",
"5": "5" "5": "5",
"6": "6"
}, },
"ShipIndex": { "ShipIndex": {
"name": "Shipyard.ShipIndex.name", "name": "Shipyard.ShipIndex.name",

View File

@@ -66,10 +66,6 @@
"name": "活动通用设置", "name": "活动通用设置",
"help": "" "help": ""
}, },
"Coalition": {
"name": "光影风尚-拍摄进行时",
"help": ""
},
"Event": { "Event": {
"name": "活动图", "name": "活动图",
"help": "" "help": ""
@@ -86,6 +82,10 @@
"name": "深谷来信", "name": "深谷来信",
"help": "" "help": ""
}, },
"Coalition": {
"name": "光影风尚-拍摄进行时",
"help": ""
},
"MaritimeEscort": { "MaritimeEscort": {
"name": "商船护航", "name": "商船护航",
"help": "" "help": ""
@@ -94,10 +94,6 @@
"name": "作战档案", "name": "作战档案",
"help": "由于作战档案缺少维护开荒功能不一定能正常使用如果发现Alas运行异常请手动完成开荒后使用自律寻敌功能" "help": "由于作战档案缺少维护开荒功能不一定能正常使用如果发现Alas运行异常请手动完成开荒后使用自律寻敌功能"
}, },
"CoalitionSp": {
"name": "光影风尚-拍摄进行时SP",
"help": ""
},
"EventA": { "EventA": {
"name": "活动每日A图", "name": "活动每日A图",
"help": "" "help": ""
@@ -122,6 +118,10 @@
"name": "共斗活动每日", "name": "共斗活动每日",
"help": "" "help": ""
}, },
"CoalitionSp": {
"name": "光影风尚-拍摄进行时SP",
"help": ""
},
"Commission": { "Commission": {
"name": "委托", "name": "委托",
"help": "" "help": ""
@@ -274,6 +274,10 @@
"name": "拆装备箱", "name": "拆装备箱",
"help": "" "help": ""
}, },
"IslandPearl": {
"name": "岛屿珍珠",
"help": ""
},
"Benchmark": { "Benchmark": {
"name": "性能测试", "name": "性能测试",
"help": "" "help": ""
@@ -386,6 +390,7 @@
"cn_android-25": "[国服] 水仙行动", "cn_android-25": "[国服] 水仙行动",
"cn_android-26": "[国服] 冬月计划", "cn_android-26": "[国服] 冬月计划",
"cn_android-27": "[国服] 长弓计划", "cn_android-27": "[国服] 长弓计划",
"cn_android-28": "[国服] 裁决协议",
"cn_ios-0": "[国服] 夏威夷", "cn_ios-0": "[国服] 夏威夷",
"cn_ios-1": "[国服] 珊瑚海", "cn_ios-1": "[国服] 珊瑚海",
"cn_ios-2": "[国服] 中途岛", "cn_ios-2": "[国服] 中途岛",
@@ -591,6 +596,14 @@
"upload": "上传", "upload": "上传",
"save_and_upload": "保存并上传" "save_and_upload": "保存并上传"
}, },
"CL1Record": {
"name": "侵蚀一掉落截图",
"help": "是否保存侵蚀一掉落截图由该选项单独控制,与 “大世界掉落截图” 选项无关",
"do_not": "无操作",
"save": "保存",
"upload": "上传",
"save_and_upload": "保存并上传"
},
"AkashiRecord": { "AkashiRecord": {
"name": "大世界明石商店截图", "name": "大世界明石商店截图",
"help": "", "help": "",
@@ -765,7 +778,7 @@
"event_20231026_cn": "飓风与青春之泉", "event_20231026_cn": "飓风与青春之泉",
"event_20231123_cn": "苍闪忍法帖", "event_20231123_cn": "苍闪忍法帖",
"event_20231221_cn": "复刻星海逐光", "event_20231221_cn": "复刻星海逐光",
"event_20240229_cn": "雪境迷踪", "event_20240229_cn": "复刻雪境迷踪",
"event_20240425_cn": "共鸣的PASSION", "event_20240425_cn": "共鸣的PASSION",
"event_20240521_cn": "绽放于辉光之城", "event_20240521_cn": "绽放于辉光之城",
"event_20240725_cn": "幻梦间奏曲", "event_20240725_cn": "幻梦间奏曲",
@@ -783,6 +796,7 @@
"event_20250912_cn": "起舞于天原之上", "event_20250912_cn": "起舞于天原之上",
"event_20251023_cn": "飓风与自由群岛", "event_20251023_cn": "飓风与自由群岛",
"event_20251218_cn": "响彻于天穹之音", "event_20251218_cn": "响彻于天穹之音",
"event_20260226_cn": "春满客栈Online",
"raid_20200624": "复刻特别演习埃塞克斯级", "raid_20200624": "复刻特别演习埃塞克斯级",
"raid_20210708": "复刻穿越彼方的水线", "raid_20210708": "复刻穿越彼方的水线",
"raid_20220127": "演习神秘事件调查", "raid_20220127": "演习神秘事件调查",
@@ -793,6 +807,7 @@
"raid_20240130": "寰昌宇定家事忙", "raid_20240130": "寰昌宇定家事忙",
"raid_20240328": "复刻从零开始的魔王讨伐之旅", "raid_20240328": "复刻从零开始的魔王讨伐之旅",
"raid_20250116": "华裳巧展喜事长", "raid_20250116": "华裳巧展喜事长",
"raid_20260212": "春宴怀玉香满庭",
"war_archives_20180607_cn": "档案 墨染的钢铁之花", "war_archives_20180607_cn": "档案 墨染的钢铁之花",
"war_archives_20180726_cn": "档案 光与影的鸢尾之华", "war_archives_20180726_cn": "档案 光与影的鸢尾之华",
"war_archives_20181020_en": "档案 努力希望和计划", "war_archives_20181020_en": "档案 努力希望和计划",
@@ -1008,6 +1023,10 @@
"1": "1 ", "1": "1 ",
"2": "2 " "2": "2 "
}, },
"AutoRecommend": {
"name": "推荐编队",
"help": "困难模式下,如果使用潜艇编队但未配置,会点击推荐自动编队"
},
"Mode": { "Mode": {
"name": "潜艇出击方案", "name": "潜艇出击方案",
"help": "仅在自律寻敌关闭的情况下生效,提醒: '狩猎及BOSS战'为'仅狩猎'与'仅BOSS战'的混合它会在道中进行狩猎打击并在BOSS战尝试召唤潜艇。", "help": "仅在自律寻敌关闭的情况下生效,提醒: '狩猎及BOSS战'为'仅狩猎'与'仅BOSS战'的混合它会在道中进行狩猎打击并在BOSS战尝试召唤潜艇。",
@@ -1784,9 +1803,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -1813,9 +1837,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option3": { "Option3": {
"name": "第 3 格生产物品", "name": "第 3 格生产物品",
@@ -1842,9 +1871,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option4": { "Option4": {
"name": "第 4 格生产物品", "name": "第 4 格生产物品",
@@ -1871,9 +1905,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island2": { "Island2": {
@@ -1903,9 +1942,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -1925,9 +1969,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option3": { "Option3": {
"name": "第 3 格生产物品", "name": "第 3 格生产物品",
@@ -1947,9 +1996,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option4": { "Option4": {
"name": "第 4 格生产物品", "name": "第 4 格生产物品",
@@ -1969,9 +2023,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island3": { "Island3": {
@@ -2016,9 +2075,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2053,9 +2117,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option3": { "Option3": {
"name": "第 3 格生产物品", "name": "第 3 格生产物品",
@@ -2090,9 +2159,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island4": { "Island4": {
@@ -2127,9 +2201,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2154,9 +2233,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option3": { "Option3": {
"name": "第 3 格生产物品", "name": "第 3 格生产物品",
@@ -2181,9 +2265,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option4": { "Option4": {
"name": "第 4 格生产物品", "name": "第 4 格生产物品",
@@ -2208,9 +2297,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island5": { "Island5": {
@@ -2243,9 +2337,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2268,9 +2367,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option3": { "Option3": {
"name": "第 3 格生产物品", "name": "第 3 格生产物品",
@@ -2293,9 +2397,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option4": { "Option4": {
"name": "第 4 格生产物品", "name": "第 4 格生产物品",
@@ -2318,9 +2427,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island6": { "Island6": {
@@ -2356,9 +2470,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2384,9 +2503,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option3": { "Option3": {
"name": "第 3 格生产物品", "name": "第 3 格生产物品",
@@ -2412,9 +2536,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option4": { "Option4": {
"name": "第 4 格生产物品", "name": "第 4 格生产物品",
@@ -2440,9 +2569,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island7": { "Island7": {
@@ -2480,9 +2614,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2510,9 +2649,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island8": { "Island8": {
@@ -2553,9 +2697,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2586,9 +2735,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island9": { "Island9": {
@@ -2628,9 +2782,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2660,9 +2819,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island10": { "Island10": {
@@ -2701,9 +2865,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2732,9 +2901,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island11": { "Island11": {
@@ -2772,9 +2946,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2802,9 +2981,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island12": { "Island12": {
@@ -2824,8 +3008,8 @@
"2": "记事本", "2": "记事本",
"3": "桌椅", "3": "桌椅",
"4": "精选木桶", "4": "精选木桶",
"5": "装饰画", "5": "文件柜",
"6": "文件柜" "6": "装饰画"
}, },
"Character1": { "Character1": {
"name": "第 1 格使用角色", "name": "第 1 格使用角色",
@@ -2839,9 +3023,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2851,8 +3040,8 @@
"2": "记事本", "2": "记事本",
"3": "桌椅", "3": "桌椅",
"4": "精选木桶", "4": "精选木桶",
"5": "装饰画", "5": "文件柜",
"6": "文件柜" "6": "装饰画"
}, },
"Character2": { "Character2": {
"name": "第 2 格使用角色", "name": "第 2 格使用角色",
@@ -2866,9 +3055,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island13": { "Island13": {
@@ -2903,9 +3097,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2930,9 +3129,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island14": { "Island14": {
@@ -2965,9 +3169,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -2990,9 +3199,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island15": { "Island15": {
@@ -3030,9 +3244,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -3060,9 +3279,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"Island16": { "Island16": {
@@ -3100,9 +3324,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
}, },
"Option2": { "Option2": {
"name": "第 2 格生产物品", "name": "第 2 格生产物品",
@@ -3130,9 +3359,14 @@
"akashi": "明石", "akashi": "明石",
"ying_swei": "应瑞", "ying_swei": "应瑞",
"chao_ho": "肇和", "chao_ho": "肇和",
"william_d_porter": "威廉·D·波特",
"chen_hai": "镇海",
"unicorn": "独角兽", "unicorn": "独角兽",
"cheshire": "柴郡", "cheshire": "柴郡",
"amagi_chan": "小天城" "amagi_chan": "小天城",
"helena": "海伦娜",
"atago": "爱宕",
"friedrich_der_grobe": "腓特烈大帝"
} }
}, },
"GeneralShop": { "GeneralShop": {
@@ -3159,6 +3393,10 @@
"name": "购买 X 个外观箱", "name": "购买 X 个外观箱",
"help": "在选择“购买指定数量”时生效" "help": "在选择“购买指定数量”时生效"
}, },
"SkinBoxPositionFilter": {
"name": "外观箱位置过滤器",
"help": "当商店中同时售卖多种外观箱时通过填写外观箱位置指定需要购买的外观箱位置从左至右由1开始1 > 2 > 3\n空格表示无限制"
},
"ConsumeCoins": { "ConsumeCoins": {
"name": "消耗溢出物资", "name": "消耗溢出物资",
"help": "物资超过550000时购买所有消耗物资的物品" "help": "物资超过550000时购买所有消耗物资的物品"
@@ -3376,7 +3614,8 @@
"help": "", "help": "",
"2": "二期科研", "2": "二期科研",
"3": "三期科研", "3": "三期科研",
"4": "四期科研" "4": "四期科研",
"5": "五期科研"
}, },
"ShipIndex": { "ShipIndex": {
"name": "舰船序号", "name": "舰船序号",
@@ -3410,7 +3649,8 @@
"2": "二期科研", "2": "二期科研",
"3": "三期科研", "3": "三期科研",
"4": "四期科研", "4": "四期科研",
"5": "五期科研" "5": "五期科研",
"6": "六期科研"
}, },
"ShipIndex": { "ShipIndex": {
"name": "舰船序号", "name": "舰船序号",

View File

@@ -66,10 +66,6 @@
"name": "活動通用", "name": "活動通用",
"help": "" "help": ""
}, },
"Coalition": {
"name": "光影風尚-拍攝進行時",
"help": ""
},
"Event": { "Event": {
"name": "活動圖", "name": "活動圖",
"help": "" "help": ""
@@ -86,6 +82,10 @@
"name": "深谷来信", "name": "深谷来信",
"help": "" "help": ""
}, },
"Coalition": {
"name": "光影風尚-拍攝進行時",
"help": ""
},
"MaritimeEscort": { "MaritimeEscort": {
"name": "商船護航", "name": "商船護航",
"help": "" "help": ""
@@ -94,10 +94,6 @@
"name": "作戰檔案", "name": "作戰檔案",
"help": "由於作戰檔案缺少維護開荒功能不一定能正常使用如果發現Alas運行異常請手動完成開荒後使用自律尋敵功能" "help": "由於作戰檔案缺少維護開荒功能不一定能正常使用如果發現Alas運行異常請手動完成開荒後使用自律尋敵功能"
}, },
"CoalitionSp": {
"name": "光影風尚-拍攝進行時SP",
"help": ""
},
"EventA": { "EventA": {
"name": "活動每日A圖", "name": "活動每日A圖",
"help": "" "help": ""
@@ -122,6 +118,10 @@
"name": "共鬥活動每日", "name": "共鬥活動每日",
"help": "" "help": ""
}, },
"CoalitionSp": {
"name": "光影風尚-拍攝進行時SP",
"help": ""
},
"Commission": { "Commission": {
"name": "委託", "name": "委託",
"help": "" "help": ""
@@ -274,6 +274,10 @@
"name": "拆裝備箱", "name": "拆裝備箱",
"help": "" "help": ""
}, },
"IslandPearl": {
"name": "Task.IslandPearl.name",
"help": "Task.IslandPearl.help"
},
"Benchmark": { "Benchmark": {
"name": "性能測試", "name": "性能測試",
"help": "" "help": ""
@@ -386,6 +390,7 @@
"cn_android-25": "[国服] 水仙行动", "cn_android-25": "[国服] 水仙行动",
"cn_android-26": "[国服] 冬月计划", "cn_android-26": "[国服] 冬月计划",
"cn_android-27": "[国服] 长弓计划", "cn_android-27": "[国服] 长弓计划",
"cn_android-28": "[国服] 裁决协议",
"cn_ios-0": "[国服] 夏威夷", "cn_ios-0": "[国服] 夏威夷",
"cn_ios-1": "[国服] 珊瑚海", "cn_ios-1": "[国服] 珊瑚海",
"cn_ios-2": "[国服] 中途岛", "cn_ios-2": "[国服] 中途岛",
@@ -591,6 +596,14 @@
"upload": "上傳", "upload": "上傳",
"save_and_upload": "保存並上傳" "save_and_upload": "保存並上傳"
}, },
"CL1Record": {
"name": "侵蝕一掉落截圖",
"help": "是否保存侵蝕一掉落截圖由該選項單獨控制",
"do_not": "無操作",
"save": "保存",
"upload": "上傳",
"save_and_upload": "保存並上傳"
},
"AkashiRecord": { "AkashiRecord": {
"name": "大世界明石商店截圖", "name": "大世界明石商店截圖",
"help": "", "help": "",
@@ -783,6 +796,7 @@
"event_20250912_cn": "起舞於天原之上", "event_20250912_cn": "起舞於天原之上",
"event_20251023_cn": "颶風與自由群島", "event_20251023_cn": "颶風與自由群島",
"event_20251218_cn": "響徹於天穹之音", "event_20251218_cn": "響徹於天穹之音",
"event_20260226_cn": "春滿客棧Online",
"raid_20200624": "特別演習埃塞克斯級(復刻)", "raid_20200624": "特別演習埃塞克斯級(復刻)",
"raid_20210708": "復刻穿越彼方的水線", "raid_20210708": "復刻穿越彼方的水線",
"raid_20220127": "演習神秘事件調查", "raid_20220127": "演習神秘事件調查",
@@ -793,6 +807,7 @@
"raid_20240130": "寰昌宇定家事忙", "raid_20240130": "寰昌宇定家事忙",
"raid_20240328": "從零開始的魔王討伐之旅", "raid_20240328": "從零開始的魔王討伐之旅",
"raid_20250116": "華裳巧展喜事長", "raid_20250116": "華裳巧展喜事長",
"raid_20260212": "春宴懷玉香滿庭",
"war_archives_20180607_cn": "檔案 墨染的鋼鐵之花", "war_archives_20180607_cn": "檔案 墨染的鋼鐵之花",
"war_archives_20180726_cn": "檔案 光與影的鳶尾之華", "war_archives_20180726_cn": "檔案 光與影的鳶尾之華",
"war_archives_20181020_en": "檔案 努力希望和計劃", "war_archives_20181020_en": "檔案 努力希望和計劃",
@@ -1008,6 +1023,10 @@
"1": "1", "1": "1",
"2": "2" "2": "2"
}, },
"AutoRecommend": {
"name": "推薦編隊",
"help": "困難模式下,如果使用潛艦編隊但未配置,會點擊推薦自動編隊"
},
"Mode": { "Mode": {
"name": "潛艇出擊方案", "name": "潛艇出擊方案",
"help": "僅在自律尋敵關閉的情況下生效,提醒: '狩獵及BOSS戰'為'僅狩獵'與'僅BOSS戰'的混合它會在道中進行狩獵打擊並在BOSS戰嘗試召喚潛艇。", "help": "僅在自律尋敵關閉的情況下生效,提醒: '狩獵及BOSS戰'為'僅狩獵'與'僅BOSS戰'的混合它會在道中進行狩獵打擊並在BOSS戰嘗試召喚潛艇。",
@@ -1784,9 +1803,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island1.Option2.name", "name": "Island1.Option2.name",
@@ -1813,9 +1837,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island1.Option3.name", "name": "Island1.Option3.name",
@@ -1842,9 +1871,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island1.Option4.name", "name": "Island1.Option4.name",
@@ -1871,9 +1905,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island2": { "Island2": {
@@ -1903,9 +1942,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island2.Option2.name", "name": "Island2.Option2.name",
@@ -1925,9 +1969,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island2.Option3.name", "name": "Island2.Option3.name",
@@ -1947,9 +1996,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island2.Option4.name", "name": "Island2.Option4.name",
@@ -1969,9 +2023,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island3": { "Island3": {
@@ -2016,9 +2075,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island3.Option2.name", "name": "Island3.Option2.name",
@@ -2053,9 +2117,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island3.Option3.name", "name": "Island3.Option3.name",
@@ -2090,9 +2159,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island4": { "Island4": {
@@ -2127,9 +2201,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island4.Option2.name", "name": "Island4.Option2.name",
@@ -2154,9 +2233,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island4.Option3.name", "name": "Island4.Option3.name",
@@ -2181,9 +2265,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island4.Option4.name", "name": "Island4.Option4.name",
@@ -2208,9 +2297,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island5": { "Island5": {
@@ -2243,9 +2337,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island5.Option2.name", "name": "Island5.Option2.name",
@@ -2268,9 +2367,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island5.Option3.name", "name": "Island5.Option3.name",
@@ -2293,9 +2397,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island5.Option4.name", "name": "Island5.Option4.name",
@@ -2318,9 +2427,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island6": { "Island6": {
@@ -2356,9 +2470,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island6.Option2.name", "name": "Island6.Option2.name",
@@ -2384,9 +2503,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option3": { "Option3": {
"name": "Island6.Option3.name", "name": "Island6.Option3.name",
@@ -2412,9 +2536,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option4": { "Option4": {
"name": "Island6.Option4.name", "name": "Island6.Option4.name",
@@ -2440,9 +2569,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island7": { "Island7": {
@@ -2480,9 +2614,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island7.Option2.name", "name": "Island7.Option2.name",
@@ -2510,9 +2649,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island8": { "Island8": {
@@ -2553,9 +2697,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island8.Option2.name", "name": "Island8.Option2.name",
@@ -2586,9 +2735,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island9": { "Island9": {
@@ -2628,9 +2782,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island9.Option2.name", "name": "Island9.Option2.name",
@@ -2660,9 +2819,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island10": { "Island10": {
@@ -2701,9 +2865,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island10.Option2.name", "name": "Island10.Option2.name",
@@ -2732,9 +2901,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island11": { "Island11": {
@@ -2772,9 +2946,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island11.Option2.name", "name": "Island11.Option2.name",
@@ -2802,9 +2981,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island12": { "Island12": {
@@ -2839,9 +3023,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island12.Option2.name", "name": "Island12.Option2.name",
@@ -2866,9 +3055,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island13": { "Island13": {
@@ -2903,9 +3097,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island13.Option2.name", "name": "Island13.Option2.name",
@@ -2930,9 +3129,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island14": { "Island14": {
@@ -2965,9 +3169,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island14.Option2.name", "name": "Island14.Option2.name",
@@ -2990,9 +3199,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island15": { "Island15": {
@@ -3030,9 +3244,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island15.Option2.name", "name": "Island15.Option2.name",
@@ -3060,9 +3279,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"Island16": { "Island16": {
@@ -3100,9 +3324,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
}, },
"Option2": { "Option2": {
"name": "Island16.Option2.name", "name": "Island16.Option2.name",
@@ -3130,9 +3359,14 @@
"akashi": "akashi", "akashi": "akashi",
"ying_swei": "ying_swei", "ying_swei": "ying_swei",
"chao_ho": "chao_ho", "chao_ho": "chao_ho",
"william_d_porter": "william_d_porter",
"chen_hai": "chen_hai",
"unicorn": "unicorn", "unicorn": "unicorn",
"cheshire": "cheshire", "cheshire": "cheshire",
"amagi_chan": "amagi_chan" "amagi_chan": "amagi_chan",
"helena": "helena",
"atago": "atago",
"friedrich_der_grobe": "friedrich_der_grobe"
} }
}, },
"GeneralShop": { "GeneralShop": {
@@ -3159,6 +3393,10 @@
"name": "購買 X 個外觀箱", "name": "購買 X 個外觀箱",
"help": "在選擇「購買指定數量」時生效" "help": "在選擇「購買指定數量」時生效"
}, },
"SkinBoxPositionFilter": {
"name": "外觀箱位置過濾器",
"help": "當商店中同時售賣多種外觀箱時通過填寫外觀箱位置指定需要購買的外觀箱位置從左至右由1開始1 > 2 > 3\n空格表示無限制"
},
"ConsumeCoins": { "ConsumeCoins": {
"name": "消耗溢出物資", "name": "消耗溢出物資",
"help": "物資超過550000時購買所有消耗物資的物品" "help": "物資超過550000時購買所有消耗物資的物品"
@@ -3376,7 +3614,8 @@
"help": "", "help": "",
"2": "二期科研", "2": "二期科研",
"3": "三期科研", "3": "三期科研",
"4": "四期科研" "4": "四期科研",
"5": "五期科研"
}, },
"ShipIndex": { "ShipIndex": {
"name": "艦船序號", "name": "艦船序號",
@@ -3410,7 +3649,8 @@
"2": "二期科研", "2": "二期科研",
"3": "三期科研", "3": "三期科研",
"4": "四期科研", "4": "四期科研",
"5": "五期科研" "5": "五期科研",
"6": "六期科研"
}, },
"ShipIndex": { "ShipIndex": {
"name": "艦船序號", "name": "艦船序號",

View File

@@ -74,7 +74,7 @@ VALID_SERVER_LIST = {
'小王冠行动', '波茨坦公告', '白色方案', '瓦尔基里行动', '小王冠行动', '波茨坦公告', '白色方案', '瓦尔基里行动',
'曼哈顿计划', '八月风暴', '秋季旅行', '水星行动', '莱茵河卫兵', '曼哈顿计划', '八月风暴', '秋季旅行', '水星行动', '莱茵河卫兵',
'北极光计划', '长戟计划', '暴雨行动', '水仙行动', '冬月计划', '北极光计划', '长戟计划', '暴雨行动', '水仙行动', '冬月计划',
'长弓计划' '长弓计划', '裁决协议',
], ],
'cn_ios': [ 'cn_ios': [
'夏威夷', '珊瑚海', '中途岛', '铁底湾', '所罗门', '马里亚纳', '夏威夷', '珊瑚海', '中途岛', '铁底湾', '所罗门', '马里亚纳',

View File

@@ -85,10 +85,11 @@ class Control(Hermit, Minitouch, Scrcpy, MaaTouch, NemuIpc):
else: else:
self.swipe_adb((x, y), (x, y), duration) self.swipe_adb((x, y), (x, y), duration)
def swipe(self, p1, p2, duration=(0.1, 0.2), name='SWIPE', distance_check=True): def swipe(self, p1, p2, duration=(0.1, 0.2), hold_time=0, name='SWIPE', distance_check=True):
self.handle_control_check(name) self.handle_control_check(name)
p1, p2 = ensure_int(p1, p2) p1, p2 = ensure_int(p1, p2)
duration = ensure_time(duration) duration = ensure_time(duration)
hold_time = ensure_time(hold_time) * 1000
method = self.config.Emulator_ControlMethod method = self.config.Emulator_ControlMethod
if method == 'uiautomator2': if method == 'uiautomator2':
logger.info('Swipe %s -> %s, %s' % (point2str(*p1), point2str(*p2), duration)) logger.info('Swipe %s -> %s, %s' % (point2str(*p1), point2str(*p2), duration))
@@ -107,7 +108,7 @@ class Control(Hermit, Minitouch, Scrcpy, MaaTouch, NemuIpc):
return return
if method == 'minitouch': if method == 'minitouch':
self.swipe_minitouch(p1, p2) self.swipe_minitouch(p1, p2, hold_time=hold_time)
elif method == 'uiautomator2': elif method == 'uiautomator2':
self.swipe_uiautomator2(p1, p2, duration=duration) self.swipe_uiautomator2(p1, p2, duration=duration)
elif method == 'scrcpy': elif method == 'scrcpy':

View File

@@ -679,7 +679,7 @@ class Minitouch(Connection):
builder.send() builder.send()
@retry @retry
def swipe_minitouch(self, p1, p2): def swipe_minitouch(self, p1, p2, hold_time):
points = insert_swipe(p0=p1, p3=p2) points = insert_swipe(p0=p1, p3=p2)
builder = self.minitouch_builder builder = self.minitouch_builder
@@ -689,6 +689,9 @@ class Minitouch(Connection):
for point in points[1:]: for point in points[1:]:
builder.move(*point).commit().wait(10) builder.move(*point).commit().wait(10)
builder.send() builder.send()
if hold_time > 0:
builder.wait(hold_time)
builder.up().commit() builder.up().commit()
builder.send() builder.send()

View File

@@ -202,6 +202,14 @@ class EventStory(CampaignUI, Combat, LoginHandler):
return 'unknown' return 'unknown'
def run(self): def run(self):
event = self.config.cross_get('Event.Campaign.Event', '')
if event in [
# event story is in event minigame
'event_20260226_cn',
]:
logger.info(f'Current event ({event}) does not have event story, stopped')
return
if not self.device.app_is_running(): if not self.device.app_is_running():
logger.warning('Game is not running, start it') logger.warning('Game is not running, start it')
self.app_start() self.app_start()

View File

@@ -76,6 +76,8 @@ class HpDaemon(ModuleBase):
PAUSE_Ninja, PAUSE_Ninja,
PAUSE_ShadowPuppetry, PAUSE_ShadowPuppetry,
PAUSE_MaidCafe, PAUSE_MaidCafe,
PAUSE_Ancient,
PAUSE_SpringInn,
]: ]:
self.attacker_hp = self._calculate_hp(image, area=ATTACKER_HP_AREA_New.area, reverse=True) self.attacker_hp = self._calculate_hp(image, area=ATTACKER_HP_AREA_New.area, reverse=True)
self.defender_hp = self._calculate_hp(image, area=DEFENDER_HP_AREA_New.area, reverse=True) self.defender_hp = self._calculate_hp(image, area=DEFENDER_HP_AREA_New.area, reverse=True)

View File

@@ -2,6 +2,7 @@ import numpy as np
from module.base.button import ButtonGrid from module.base.button import ButtonGrid
from module.base.decorator import Config from module.base.decorator import Config
from module.base.timer import Timer
from module.handler.assets import * from module.handler.assets import *
from module.handler.enemy_searching import EnemySearchingHandler from module.handler.enemy_searching import EnemySearchingHandler
from module.logger import logger from module.logger import logger
@@ -49,21 +50,14 @@ class AutoSearchHandler(EnemySearchingHandler):
origin=(1185, 155 + offset), delta=(0, 111), origin=(1185, 155 + offset), delta=(0, 111),
button_shape=(53, 104), grid_shape=(1, 3), name='FLEET_SIDEBAR') button_shape=(53, 104), grid_shape=(1, 3), name='FLEET_SIDEBAR')
def _fleet_preparation_sidebar_click(self, index): def _fleet_preparation_get(self):
""" """
Args: Returns:
index (int): int:
1 for formation 1 for formation
2 for meowfficers 2 for meowfficers
3 for auto search setting 3 for auto search setting
Returns:
bool: If changed.
""" """
if index <= 0 or index > 3:
logger.warning(f'Sidebar index cannot be clicked, {index}, limit to 1 through 5 only')
return False
current = 0 current = 0
total = 0 total = 0
sidebar = self._fleet_sidebar() sidebar = self._fleet_sidebar()
@@ -81,46 +75,38 @@ class AutoSearchHandler(EnemySearchingHandler):
if not current: if not current:
logger.warning('No fleet sidebar active.') logger.warning('No fleet sidebar active.')
logger.attr('Fleet_sidebar', f'{current}/{total}') logger.attr('Fleet_sidebar', f'{current}/{total}')
if current == index: return current
return False
self.device.click(sidebar[0, index - 1]) def fleet_preparation_sidebar_ensure(self, index):
return True
def fleet_preparation_sidebar_ensure(self, index, skip_first_screenshot=True):
""" """
Args: Args:
index (int): index (int):
1 for formation 1 for formation
2 for meowfficers 2 for meowfficers
3 for auto search setting 3 for auto search setting
skip_first_screenshot (bool):
Returns: Returns:
bool: whether sidebar could be ensured bool: whether sidebar could be ensured
at most 3 attempts are made before at most 3 attempts are made before
return False otherwise True return False otherwise True
""" """
if index <= 0 or index > 5: if index <= 0 or index > 5:
logger.warning(f'Sidebar index cannot be ensured, {index}, limit 1 through 5 only') logger.warning(f'Sidebar index cannot be ensured, {index}, limit 1 through 5 only')
return False return False
counter = 0 interval = Timer(1, count=2)
while 1: sidebar = self._fleet_sidebar()
if skip_first_screenshot: for _ in self.loop(timeout=3):
skip_first_screenshot = False current = self._fleet_preparation_get()
else: if current == index:
self.device.screenshot()
if self._fleet_preparation_sidebar_click(index):
if counter >= 2:
logger.warning('Sidebar could not be ensured')
return False
counter += 1
self.device.sleep((0.3, 0.5))
continue
else:
return True return True
if interval.reached():
self.device.click(sidebar[0, index - 1])
interval.reset()
continue
else:
logger.warning('Sidebar could not be ensured')
return False
def _auto_search_set_click(self, setting): def _auto_search_set_click(self, setting):
""" """

View File

@@ -7,6 +7,11 @@ from module.base.template import Template
GET_ITEMS_ISLAND = Button(area={'cn': (588, 260, 692, 289), 'en': (588, 260, 692, 289), 'jp': (588, 260, 692, 289), 'tw': (588, 260, 692, 289)}, color={'cn': (178, 180, 180), 'en': (149, 151, 152), 'jp': (178, 180, 180), 'tw': (178, 180, 180)}, button={'cn': (0, 263, 129, 555), 'en': (588, 260, 692, 289), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/GET_ITEMS_ISLAND.png', 'en': './assets/en/island/GET_ITEMS_ISLAND.png', 'jp': './assets/cn/island/GET_ITEMS_ISLAND.png', 'tw': './assets/cn/island/GET_ITEMS_ISLAND.png'}) GET_ITEMS_ISLAND = Button(area={'cn': (588, 260, 692, 289), 'en': (588, 260, 692, 289), 'jp': (588, 260, 692, 289), 'tw': (588, 260, 692, 289)}, color={'cn': (178, 180, 180), 'en': (149, 151, 152), 'jp': (178, 180, 180), 'tw': (178, 180, 180)}, button={'cn': (0, 263, 129, 555), 'en': (588, 260, 692, 289), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/GET_ITEMS_ISLAND.png', 'en': './assets/en/island/GET_ITEMS_ISLAND.png', 'jp': './assets/cn/island/GET_ITEMS_ISLAND.png', 'tw': './assets/cn/island/GET_ITEMS_ISLAND.png'})
ISLAND_AMOUNT_MAX = Button(area={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, color={'cn': (72, 72, 78), 'en': (78, 78, 84), 'jp': (72, 72, 78), 'tw': (72, 72, 78)}, button={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, file={'cn': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'en': './assets/en/island/ISLAND_AMOUNT_MAX.png', 'jp': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'tw': './assets/cn/island/ISLAND_AMOUNT_MAX.png'}) ISLAND_AMOUNT_MAX = Button(area={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, color={'cn': (72, 72, 78), 'en': (78, 78, 84), 'jp': (72, 72, 78), 'tw': (72, 72, 78)}, button={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, file={'cn': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'en': './assets/en/island/ISLAND_AMOUNT_MAX.png', 'jp': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'tw': './assets/cn/island/ISLAND_AMOUNT_MAX.png'})
ISLAND_CLICK_SAFE_AREA = Button(area={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, color={'cn': (50, 52, 56), 'en': (50, 52, 56), 'jp': (50, 52, 56), 'tw': (50, 52, 56)}, button={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'en': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'jp': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'tw': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png'}) ISLAND_CLICK_SAFE_AREA = Button(area={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, color={'cn': (50, 52, 56), 'en': (50, 52, 56), 'jp': (50, 52, 56), 'tw': (50, 52, 56)}, button={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'en': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'jp': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'tw': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png'})
ISLAND_FRIEND = Button(area={'cn': (887, 648, 920, 675), 'en': (887, 648, 920, 675), 'jp': (887, 648, 920, 675), 'tw': (887, 648, 920, 675)}, color={'cn': (203, 213, 219), 'en': (203, 213, 219), 'jp': (203, 213, 219), 'tw': (203, 213, 219)}, button={'cn': (887, 648, 920, 675), 'en': (887, 648, 920, 675), 'jp': (887, 648, 920, 675), 'tw': (887, 648, 920, 675)}, file={'cn': './assets/cn/island/ISLAND_FRIEND.png', 'en': './assets/cn/island/ISLAND_FRIEND.png', 'jp': './assets/cn/island/ISLAND_FRIEND.png', 'tw': './assets/cn/island/ISLAND_FRIEND.png'})
ISLAND_FRIEND_CHECK = Button(area={'cn': (171, 22, 217, 45), 'en': (171, 22, 217, 45), 'jp': (171, 22, 217, 45), 'tw': (171, 22, 217, 45)}, color={'cn': (96, 102, 115), 'en': (96, 102, 115), 'jp': (96, 102, 115), 'tw': (96, 102, 115)}, button={'cn': (171, 22, 217, 45), 'en': (171, 22, 217, 45), 'jp': (171, 22, 217, 45), 'tw': (171, 22, 217, 45)}, file={'cn': './assets/cn/island/ISLAND_FRIEND_CHECK.png', 'en': './assets/cn/island/ISLAND_FRIEND_CHECK.png', 'jp': './assets/cn/island/ISLAND_FRIEND_CHECK.png', 'tw': './assets/cn/island/ISLAND_FRIEND_CHECK.png'})
ISLAND_FRIEND_LEAVE = Button(area={'cn': (380, 47, 406, 71), 'en': (380, 47, 406, 71), 'jp': (380, 47, 406, 71), 'tw': (380, 47, 406, 71)}, color={'cn': (183, 183, 183), 'en': (183, 183, 183), 'jp': (183, 183, 183), 'tw': (183, 183, 183)}, button={'cn': (380, 47, 406, 71), 'en': (380, 47, 406, 71), 'jp': (380, 47, 406, 71), 'tw': (380, 47, 406, 71)}, file={'cn': './assets/cn/island/ISLAND_FRIEND_LEAVE.png', 'en': './assets/cn/island/ISLAND_FRIEND_LEAVE.png', 'jp': './assets/cn/island/ISLAND_FRIEND_LEAVE.png', 'tw': './assets/cn/island/ISLAND_FRIEND_LEAVE.png'})
ISLAND_FRIEND_SCROLL = Button(area={'cn': (1256, 98, 1257, 694), 'en': (1256, 98, 1257, 694), 'jp': (1256, 98, 1257, 694), 'tw': (1256, 98, 1257, 694)}, color={'cn': (200, 199, 193), 'en': (200, 199, 193), 'jp': (200, 199, 193), 'tw': (200, 199, 193)}, button={'cn': (1256, 98, 1257, 694), 'en': (1256, 98, 1257, 694), 'jp': (1256, 98, 1257, 694), 'tw': (1256, 98, 1257, 694)}, file={'cn': './assets/cn/island/ISLAND_FRIEND_SCROLL.png', 'en': './assets/cn/island/ISLAND_FRIEND_SCROLL.png', 'jp': './assets/cn/island/ISLAND_FRIEND_SCROLL.png', 'tw': './assets/cn/island/ISLAND_FRIEND_SCROLL.png'})
ISLAND_INFO_EXIT = Button(area={'cn': (907, 160, 933, 187), 'en': (907, 160, 933, 187), 'jp': (907, 160, 933, 187), 'tw': (907, 160, 933, 187)}, color={'cn': (96, 96, 96), 'en': (96, 96, 96), 'jp': (96, 96, 96), 'tw': (96, 96, 96)}, button={'cn': (907, 160, 933, 187), 'en': (907, 160, 933, 187), 'jp': (907, 160, 933, 187), 'tw': (907, 160, 933, 187)}, file={'cn': './assets/cn/island/ISLAND_INFO_EXIT.png', 'en': './assets/cn/island/ISLAND_INFO_EXIT.png', 'jp': './assets/cn/island/ISLAND_INFO_EXIT.png', 'tw': './assets/cn/island/ISLAND_INFO_EXIT.png'})
ISLAND_MANAGEMENT = Button(area={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, color={'cn': (187, 224, 135), 'en': (187, 224, 135), 'jp': (187, 224, 135), 'tw': (187, 224, 135)}, button={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT.png'}) ISLAND_MANAGEMENT = Button(area={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, color={'cn': (187, 224, 135), 'en': (187, 224, 135), 'jp': (187, 224, 135), 'tw': (187, 224, 135)}, button={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT.png'})
ISLAND_MANAGEMENT_CHECK = Button(area={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, color={'cn': (77, 83, 96), 'en': (90, 96, 108), 'jp': (77, 83, 96), 'tw': (77, 83, 96)}, button={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'en': './assets/en/island/ISLAND_MANAGEMENT_CHECK.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png'}) ISLAND_MANAGEMENT_CHECK = Button(area={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, color={'cn': (77, 83, 96), 'en': (90, 96, 108), 'jp': (77, 83, 96), 'tw': (77, 83, 96)}, button={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'en': './assets/en/island/ISLAND_MANAGEMENT_CHECK.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png'})
ISLAND_MANAGEMENT_LOCKED = Button(area={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, color={'cn': (197, 206, 195), 'en': (197, 206, 195), 'jp': (197, 206, 195), 'tw': (197, 206, 195)}, button={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png'}) ISLAND_MANAGEMENT_LOCKED = Button(area={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, color={'cn': (197, 206, 195), 'en': (197, 206, 195), 'jp': (197, 206, 195), 'tw': (197, 206, 195)}, button={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png'})
@@ -19,12 +24,19 @@ OCR_PRODUCTION_TIME_REMAIN = Button(area={'cn': (621, 427, 666, 439), 'en': (621
OCR_TRANSPORT_REFRESH = Button(area={'cn': (716, 211, 805, 231), 'en': (716, 211, 805, 231), 'jp': (716, 211, 805, 231), 'tw': (716, 211, 805, 231)}, color={'cn': (176, 177, 175), 'en': (176, 177, 175), 'jp': (176, 177, 175), 'tw': (176, 177, 175)}, button={'cn': (716, 211, 805, 231), 'en': (716, 211, 805, 231), 'jp': (716, 211, 805, 231), 'tw': (716, 211, 805, 231)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'en': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'jp': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'tw': './assets/cn/island/OCR_TRANSPORT_REFRESH.png'}) OCR_TRANSPORT_REFRESH = Button(area={'cn': (716, 211, 805, 231), 'en': (716, 211, 805, 231), 'jp': (716, 211, 805, 231), 'tw': (716, 211, 805, 231)}, color={'cn': (176, 177, 175), 'en': (176, 177, 175), 'jp': (176, 177, 175), 'tw': (176, 177, 175)}, button={'cn': (716, 211, 805, 231), 'en': (716, 211, 805, 231), 'jp': (716, 211, 805, 231), 'tw': (716, 211, 805, 231)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'en': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'jp': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'tw': './assets/cn/island/OCR_TRANSPORT_REFRESH.png'})
OCR_TRANSPORT_TIME = Button(area={'cn': (611, 139, 687, 154), 'en': (611, 139, 687, 154), 'jp': (611, 139, 687, 154), 'tw': (611, 139, 687, 154)}, color={'cn': (119, 119, 120), 'en': (119, 119, 120), 'jp': (119, 119, 120), 'tw': (119, 119, 120)}, button={'cn': (611, 139, 687, 154), 'en': (611, 139, 687, 154), 'jp': (611, 139, 687, 154), 'tw': (611, 139, 687, 154)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'en': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'jp': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'tw': './assets/cn/island/OCR_TRANSPORT_TIME.png'}) OCR_TRANSPORT_TIME = Button(area={'cn': (611, 139, 687, 154), 'en': (611, 139, 687, 154), 'jp': (611, 139, 687, 154), 'tw': (611, 139, 687, 154)}, color={'cn': (119, 119, 120), 'en': (119, 119, 120), 'jp': (119, 119, 120), 'tw': (119, 119, 120)}, button={'cn': (611, 139, 687, 154), 'en': (611, 139, 687, 154), 'jp': (611, 139, 687, 154), 'tw': (611, 139, 687, 154)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'en': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'jp': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'tw': './assets/cn/island/OCR_TRANSPORT_TIME.png'})
OCR_TRANSPORT_TIME_REMAIN = Button(area={'cn': (753, 210, 842, 230), 'en': (753, 210, 842, 230), 'jp': (753, 210, 842, 230), 'tw': (753, 210, 842, 230)}, color={'cn': (252, 203, 127), 'en': (252, 203, 127), 'jp': (252, 203, 127), 'tw': (252, 203, 127)}, button={'cn': (753, 210, 842, 230), 'en': (753, 210, 842, 230), 'jp': (753, 210, 842, 230), 'tw': (753, 210, 842, 230)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_TIME_REMAIN.png', 'en': './assets/cn/island/OCR_TRANSPORT_TIME_REMAIN.png', 'jp': './assets/cn/island/OCR_TRANSPORT_TIME_REMAIN.png', 'tw': './assets/cn/island/OCR_TRANSPORT_TIME_REMAIN.png'}) OCR_TRANSPORT_TIME_REMAIN = Button(area={'cn': (753, 210, 842, 230), 'en': (753, 210, 842, 230), 'jp': (753, 210, 842, 230), 'tw': (753, 210, 842, 230)}, color={'cn': (252, 203, 127), 'en': (252, 203, 127), 'jp': (252, 203, 127), 'tw': (252, 203, 127)}, button={'cn': (753, 210, 842, 230), 'en': (753, 210, 842, 230), 'jp': (753, 210, 842, 230), 'tw': (753, 210, 842, 230)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_TIME_REMAIN.png', 'en': './assets/cn/island/OCR_TRANSPORT_TIME_REMAIN.png', 'jp': './assets/cn/island/OCR_TRANSPORT_TIME_REMAIN.png', 'tw': './assets/cn/island/OCR_TRANSPORT_TIME_REMAIN.png'})
PEARL_CHECK = Button(area={'cn': (113, 22, 228, 45), 'en': (113, 22, 228, 45), 'jp': (113, 22, 228, 45), 'tw': (113, 22, 228, 45)}, color={'cn': (93, 98, 110), 'en': (93, 98, 110), 'jp': (93, 98, 110), 'tw': (93, 98, 110)}, button={'cn': (113, 22, 228, 45), 'en': (113, 22, 228, 45), 'jp': (113, 22, 228, 45), 'tw': (113, 22, 228, 45)}, file={'cn': './assets/cn/island/PEARL_CHECK.png', 'en': './assets/cn/island/PEARL_CHECK.png', 'jp': './assets/cn/island/PEARL_CHECK.png', 'tw': './assets/cn/island/PEARL_CHECK.png'})
PEARL_ENTER = Button(area={'cn': (809, 380, 836, 407), 'en': (809, 380, 836, 407), 'jp': (809, 380, 836, 407), 'tw': (809, 380, 836, 407)}, color={'cn': (192, 192, 192), 'en': (192, 192, 192), 'jp': (192, 192, 192), 'tw': (192, 192, 192)}, button={'cn': (809, 380, 836, 407), 'en': (809, 380, 836, 407), 'jp': (809, 380, 836, 407), 'tw': (809, 380, 836, 407)}, file={'cn': './assets/cn/island/PEARL_ENTER.png', 'en': './assets/cn/island/PEARL_ENTER.png', 'jp': './assets/cn/island/PEARL_ENTER.png', 'tw': './assets/cn/island/PEARL_ENTER.png'})
PEARL_PRICE_OCR = Button(area={'cn': (257, 357, 300, 377), 'en': (257, 357, 300, 377), 'jp': (257, 357, 300, 377), 'tw': (257, 357, 300, 377)}, color={'cn': (147, 148, 148), 'en': (147, 148, 148), 'jp': (147, 148, 148), 'tw': (147, 148, 148)}, button={'cn': (257, 357, 300, 377), 'en': (257, 357, 300, 377), 'jp': (257, 357, 300, 377), 'tw': (257, 357, 300, 377)}, file={'cn': './assets/cn/island/PEARL_PRICE_OCR.png', 'en': './assets/cn/island/PEARL_PRICE_OCR.png', 'jp': './assets/cn/island/PEARL_PRICE_OCR.png', 'tw': './assets/cn/island/PEARL_PRICE_OCR.png'})
PRODUCT_MANJUU_CHECK = Button(area={'cn': (535, 107, 575, 138), 'en': (535, 107, 575, 138), 'jp': (535, 107, 575, 138), 'tw': (535, 107, 575, 138)}, color={'cn': (199, 181, 124), 'en': (199, 181, 124), 'jp': (199, 181, 124), 'tw': (199, 181, 124)}, button={'cn': (535, 107, 575, 138), 'en': (535, 107, 575, 138), 'jp': (535, 107, 575, 138), 'tw': (535, 107, 575, 138)}, file={'cn': './assets/cn/island/PRODUCT_MANJUU_CHECK.png', 'en': './assets/cn/island/PRODUCT_MANJUU_CHECK.png', 'jp': './assets/cn/island/PRODUCT_MANJUU_CHECK.png', 'tw': './assets/cn/island/PRODUCT_MANJUU_CHECK.png'}) PRODUCT_MANJUU_CHECK = Button(area={'cn': (535, 107, 575, 138), 'en': (535, 107, 575, 138), 'jp': (535, 107, 575, 138), 'tw': (535, 107, 575, 138)}, color={'cn': (199, 181, 124), 'en': (199, 181, 124), 'jp': (199, 181, 124), 'tw': (199, 181, 124)}, button={'cn': (535, 107, 575, 138), 'en': (535, 107, 575, 138), 'jp': (535, 107, 575, 138), 'tw': (535, 107, 575, 138)}, file={'cn': './assets/cn/island/PRODUCT_MANJUU_CHECK.png', 'en': './assets/cn/island/PRODUCT_MANJUU_CHECK.png', 'jp': './assets/cn/island/PRODUCT_MANJUU_CHECK.png', 'tw': './assets/cn/island/PRODUCT_MANJUU_CHECK.png'})
PROJECT_AKASHI_CHECK = Button(area={'cn': (1157, 176, 1217, 209), 'en': (1157, 176, 1217, 209), 'jp': (1157, 176, 1217, 209), 'tw': (1157, 176, 1217, 209)}, color={'cn': (173, 183, 168), 'en': (173, 183, 168), 'jp': (173, 183, 168), 'tw': (173, 183, 168)}, button={'cn': (1157, 176, 1217, 209), 'en': (1157, 176, 1217, 209), 'jp': (1157, 176, 1217, 209), 'tw': (1157, 176, 1217, 209)}, file={'cn': './assets/cn/island/PROJECT_AKASHI_CHECK.png', 'en': './assets/cn/island/PROJECT_AKASHI_CHECK.png', 'jp': './assets/cn/island/PROJECT_AKASHI_CHECK.png', 'tw': './assets/cn/island/PROJECT_AKASHI_CHECK.png'}) PROJECT_AKASHI_CHECK = Button(area={'cn': (1157, 176, 1217, 209), 'en': (1157, 176, 1217, 209), 'jp': (1157, 176, 1217, 209), 'tw': (1157, 176, 1217, 209)}, color={'cn': (173, 183, 168), 'en': (173, 183, 168), 'jp': (173, 183, 168), 'tw': (173, 183, 168)}, button={'cn': (1157, 176, 1217, 209), 'en': (1157, 176, 1217, 209), 'jp': (1157, 176, 1217, 209), 'tw': (1157, 176, 1217, 209)}, file={'cn': './assets/cn/island/PROJECT_AKASHI_CHECK.png', 'en': './assets/cn/island/PROJECT_AKASHI_CHECK.png', 'jp': './assets/cn/island/PROJECT_AKASHI_CHECK.png', 'tw': './assets/cn/island/PROJECT_AKASHI_CHECK.png'})
PROJECT_AMAGI_CHAN_CHECK = Button(area={'cn': (1152, 167, 1229, 215), 'en': (1152, 167, 1229, 215), 'jp': (1152, 167, 1229, 215), 'tw': (1152, 167, 1229, 215)}, color={'cn': (136, 114, 106), 'en': (136, 114, 106), 'jp': (136, 114, 106), 'tw': (136, 114, 106)}, button={'cn': (1152, 167, 1229, 215), 'en': (1152, 167, 1229, 215), 'jp': (1152, 167, 1229, 215), 'tw': (1152, 167, 1229, 215)}, file={'cn': './assets/cn/island/PROJECT_AMAGI_CHAN_CHECK.png', 'en': './assets/cn/island/PROJECT_AMAGI_CHAN_CHECK.png', 'jp': './assets/cn/island/PROJECT_AMAGI_CHAN_CHECK.png', 'tw': './assets/cn/island/PROJECT_AMAGI_CHAN_CHECK.png'}) PROJECT_AMAGI_CHAN_CHECK = Button(area={'cn': (1152, 167, 1229, 215), 'en': (1152, 167, 1229, 215), 'jp': (1152, 167, 1229, 215), 'tw': (1152, 167, 1229, 215)}, color={'cn': (136, 114, 106), 'en': (136, 114, 106), 'jp': (136, 114, 106), 'tw': (136, 114, 106)}, button={'cn': (1152, 167, 1229, 215), 'en': (1152, 167, 1229, 215), 'jp': (1152, 167, 1229, 215), 'tw': (1152, 167, 1229, 215)}, file={'cn': './assets/cn/island/PROJECT_AMAGI_CHAN_CHECK.png', 'en': './assets/cn/island/PROJECT_AMAGI_CHAN_CHECK.png', 'jp': './assets/cn/island/PROJECT_AMAGI_CHAN_CHECK.png', 'tw': './assets/cn/island/PROJECT_AMAGI_CHAN_CHECK.png'})
PROJECT_ATAGO_CHECK = Button(area={'cn': (1161, 180, 1217, 211), 'en': (1161, 180, 1217, 211), 'jp': (1161, 180, 1217, 211), 'tw': (1161, 180, 1217, 211)}, color={'cn': (175, 156, 144), 'en': (175, 156, 144), 'jp': (175, 156, 144), 'tw': (175, 156, 144)}, button={'cn': (1161, 180, 1217, 211), 'en': (1161, 180, 1217, 211), 'jp': (1161, 180, 1217, 211), 'tw': (1161, 180, 1217, 211)}, file={'cn': './assets/cn/island/PROJECT_ATAGO_CHECK.png', 'en': './assets/cn/island/PROJECT_ATAGO_CHECK.png', 'jp': './assets/cn/island/PROJECT_ATAGO_CHECK.png', 'tw': './assets/cn/island/PROJECT_ATAGO_CHECK.png'})
PROJECT_CHAO_HO_CHECK = Button(area={'cn': (1158, 174, 1218, 204), 'en': (1158, 174, 1218, 204), 'jp': (1158, 174, 1218, 204), 'tw': (1158, 174, 1218, 204)}, color={'cn': (182, 145, 150), 'en': (182, 145, 150), 'jp': (182, 145, 150), 'tw': (182, 145, 150)}, button={'cn': (1158, 174, 1218, 204), 'en': (1158, 174, 1218, 204), 'jp': (1158, 174, 1218, 204), 'tw': (1158, 174, 1218, 204)}, file={'cn': './assets/cn/island/PROJECT_CHAO_HO_CHECK.png', 'en': './assets/cn/island/PROJECT_CHAO_HO_CHECK.png', 'jp': './assets/cn/island/PROJECT_CHAO_HO_CHECK.png', 'tw': './assets/cn/island/PROJECT_CHAO_HO_CHECK.png'}) PROJECT_CHAO_HO_CHECK = Button(area={'cn': (1158, 174, 1218, 204), 'en': (1158, 174, 1218, 204), 'jp': (1158, 174, 1218, 204), 'tw': (1158, 174, 1218, 204)}, color={'cn': (182, 145, 150), 'en': (182, 145, 150), 'jp': (182, 145, 150), 'tw': (182, 145, 150)}, button={'cn': (1158, 174, 1218, 204), 'en': (1158, 174, 1218, 204), 'jp': (1158, 174, 1218, 204), 'tw': (1158, 174, 1218, 204)}, file={'cn': './assets/cn/island/PROJECT_CHAO_HO_CHECK.png', 'en': './assets/cn/island/PROJECT_CHAO_HO_CHECK.png', 'jp': './assets/cn/island/PROJECT_CHAO_HO_CHECK.png', 'tw': './assets/cn/island/PROJECT_CHAO_HO_CHECK.png'})
PROJECT_CHEN_HAI_CHECK = Button(area={'cn': (1162, 175, 1215, 206), 'en': (1162, 175, 1215, 206), 'jp': (1162, 175, 1215, 206), 'tw': (1162, 175, 1215, 206)}, color={'cn': (145, 134, 130), 'en': (145, 134, 130), 'jp': (145, 134, 130), 'tw': (145, 134, 130)}, button={'cn': (1162, 175, 1215, 206), 'en': (1162, 175, 1215, 206), 'jp': (1162, 175, 1215, 206), 'tw': (1162, 175, 1215, 206)}, file={'cn': './assets/cn/island/PROJECT_CHEN_HAI_CHECK.png', 'en': './assets/cn/island/PROJECT_CHEN_HAI_CHECK.png', 'jp': './assets/cn/island/PROJECT_CHEN_HAI_CHECK.png', 'tw': './assets/cn/island/PROJECT_CHEN_HAI_CHECK.png'})
PROJECT_CHESHIRE_CHECK = Button(area={'cn': (1161, 163, 1224, 207), 'en': (1161, 163, 1224, 207), 'jp': (1161, 163, 1224, 207), 'tw': (1161, 163, 1224, 207)}, color={'cn': (156, 150, 159), 'en': (156, 150, 159), 'jp': (156, 150, 159), 'tw': (156, 150, 159)}, button={'cn': (1161, 163, 1224, 207), 'en': (1161, 163, 1224, 207), 'jp': (1161, 163, 1224, 207), 'tw': (1161, 163, 1224, 207)}, file={'cn': './assets/cn/island/PROJECT_CHESHIRE_CHECK.png', 'en': './assets/cn/island/PROJECT_CHESHIRE_CHECK.png', 'jp': './assets/cn/island/PROJECT_CHESHIRE_CHECK.png', 'tw': './assets/cn/island/PROJECT_CHESHIRE_CHECK.png'}) PROJECT_CHESHIRE_CHECK = Button(area={'cn': (1161, 163, 1224, 207), 'en': (1161, 163, 1224, 207), 'jp': (1161, 163, 1224, 207), 'tw': (1161, 163, 1224, 207)}, color={'cn': (156, 150, 159), 'en': (156, 150, 159), 'jp': (156, 150, 159), 'tw': (156, 150, 159)}, button={'cn': (1161, 163, 1224, 207), 'en': (1161, 163, 1224, 207), 'jp': (1161, 163, 1224, 207), 'tw': (1161, 163, 1224, 207)}, file={'cn': './assets/cn/island/PROJECT_CHESHIRE_CHECK.png', 'en': './assets/cn/island/PROJECT_CHESHIRE_CHECK.png', 'jp': './assets/cn/island/PROJECT_CHESHIRE_CHECK.png', 'tw': './assets/cn/island/PROJECT_CHESHIRE_CHECK.png'})
PROJECT_COMPLETE = Button(area={'cn': (616, 431, 670, 444), 'en': (616, 431, 670, 444), 'jp': (616, 431, 670, 444), 'tw': (616, 431, 670, 444)}, color={'cn': (158, 222, 255), 'en': (158, 222, 255), 'jp': (158, 222, 255), 'tw': (158, 222, 255)}, button={'cn': (580, 533, 762, 584), 'en': (580, 533, 762, 584), 'jp': (580, 533, 762, 584), 'tw': (580, 533, 762, 584)}, file={'cn': './assets/cn/island/PROJECT_COMPLETE.png', 'en': './assets/cn/island/PROJECT_COMPLETE.png', 'jp': './assets/cn/island/PROJECT_COMPLETE.png', 'tw': './assets/cn/island/PROJECT_COMPLETE.png'}) PROJECT_COMPLETE = Button(area={'cn': (616, 431, 670, 444), 'en': (616, 431, 670, 444), 'jp': (616, 431, 670, 444), 'tw': (616, 431, 670, 444)}, color={'cn': (158, 222, 255), 'en': (158, 222, 255), 'jp': (158, 222, 255), 'tw': (158, 222, 255)}, button={'cn': (580, 533, 762, 584), 'en': (580, 533, 762, 584), 'jp': (580, 533, 762, 584), 'tw': (580, 533, 762, 584)}, file={'cn': './assets/cn/island/PROJECT_COMPLETE.png', 'en': './assets/cn/island/PROJECT_COMPLETE.png', 'jp': './assets/cn/island/PROJECT_COMPLETE.png', 'tw': './assets/cn/island/PROJECT_COMPLETE.png'})
PROJECT_FRIEDRICH_DER_GROBE_CHECK = Button(area={'cn': (1162, 177, 1217, 215), 'en': (1162, 177, 1217, 215), 'jp': (1162, 177, 1217, 215), 'tw': (1162, 177, 1217, 215)}, color={'cn': (106, 102, 100), 'en': (106, 102, 100), 'jp': (106, 102, 100), 'tw': (106, 102, 100)}, button={'cn': (1162, 177, 1217, 215), 'en': (1162, 177, 1217, 215), 'jp': (1162, 177, 1217, 215), 'tw': (1162, 177, 1217, 215)}, file={'cn': './assets/cn/island/PROJECT_FRIEDRICH_DER_GROBE_CHECK.png', 'en': './assets/cn/island/PROJECT_FRIEDRICH_DER_GROBE_CHECK.png', 'jp': './assets/cn/island/PROJECT_FRIEDRICH_DER_GROBE_CHECK.png', 'tw': './assets/cn/island/PROJECT_FRIEDRICH_DER_GROBE_CHECK.png'})
PROJECT_HELENA_CHECK = Button(area={'cn': (1164, 175, 1217, 209), 'en': (1164, 175, 1217, 209), 'jp': (1164, 175, 1217, 209), 'tw': (1164, 175, 1217, 209)}, color={'cn': (184, 178, 195), 'en': (184, 178, 195), 'jp': (184, 178, 195), 'tw': (184, 178, 195)}, button={'cn': (1164, 175, 1217, 209), 'en': (1164, 175, 1217, 209), 'jp': (1164, 175, 1217, 209), 'tw': (1164, 175, 1217, 209)}, file={'cn': './assets/cn/island/PROJECT_HELENA_CHECK.png', 'en': './assets/cn/island/PROJECT_HELENA_CHECK.png', 'jp': './assets/cn/island/PROJECT_HELENA_CHECK.png', 'tw': './assets/cn/island/PROJECT_HELENA_CHECK.png'})
PROJECT_LEMALIN_CHECK = Button(area={'cn': (1165, 173, 1232, 218), 'en': (1165, 173, 1232, 218), 'jp': (1165, 173, 1232, 218), 'tw': (1165, 173, 1232, 218)}, color={'cn': (225, 217, 221), 'en': (225, 217, 221), 'jp': (225, 217, 221), 'tw': (225, 217, 221)}, button={'cn': (1165, 173, 1232, 218), 'en': (1165, 173, 1232, 218), 'jp': (1165, 173, 1232, 218), 'tw': (1165, 173, 1232, 218)}, file={'cn': './assets/cn/island/PROJECT_LEMALIN_CHECK.png', 'en': './assets/cn/island/PROJECT_LEMALIN_CHECK.png', 'jp': './assets/cn/island/PROJECT_LEMALIN_CHECK.png', 'tw': './assets/cn/island/PROJECT_LEMALIN_CHECK.png'}) PROJECT_LEMALIN_CHECK = Button(area={'cn': (1165, 173, 1232, 218), 'en': (1165, 173, 1232, 218), 'jp': (1165, 173, 1232, 218), 'tw': (1165, 173, 1232, 218)}, color={'cn': (225, 217, 221), 'en': (225, 217, 221), 'jp': (225, 217, 221), 'tw': (225, 217, 221)}, button={'cn': (1165, 173, 1232, 218), 'en': (1165, 173, 1232, 218), 'jp': (1165, 173, 1232, 218), 'tw': (1165, 173, 1232, 218)}, file={'cn': './assets/cn/island/PROJECT_LEMALIN_CHECK.png', 'en': './assets/cn/island/PROJECT_LEMALIN_CHECK.png', 'jp': './assets/cn/island/PROJECT_LEMALIN_CHECK.png', 'tw': './assets/cn/island/PROJECT_LEMALIN_CHECK.png'})
PROJECT_MANJUU_CHECK = Button(area={'cn': (1162, 182, 1214, 205), 'en': (1162, 182, 1214, 205), 'jp': (1162, 182, 1214, 205), 'tw': (1162, 182, 1214, 205)}, color={'cn': (221, 192, 128), 'en': (221, 192, 128), 'jp': (221, 192, 128), 'tw': (221, 192, 128)}, button={'cn': (1162, 182, 1214, 205), 'en': (1162, 182, 1214, 205), 'jp': (1162, 182, 1214, 205), 'tw': (1162, 182, 1214, 205)}, file={'cn': './assets/cn/island/PROJECT_MANJUU_CHECK.png', 'en': './assets/cn/island/PROJECT_MANJUU_CHECK.png', 'jp': './assets/cn/island/PROJECT_MANJUU_CHECK.png', 'tw': './assets/cn/island/PROJECT_MANJUU_CHECK.png'}) PROJECT_MANJUU_CHECK = Button(area={'cn': (1162, 182, 1214, 205), 'en': (1162, 182, 1214, 205), 'jp': (1162, 182, 1214, 205), 'tw': (1162, 182, 1214, 205)}, color={'cn': (221, 192, 128), 'en': (221, 192, 128), 'jp': (221, 192, 128), 'tw': (221, 192, 128)}, button={'cn': (1162, 182, 1214, 205), 'en': (1162, 182, 1214, 205), 'jp': (1162, 182, 1214, 205), 'tw': (1162, 182, 1214, 205)}, file={'cn': './assets/cn/island/PROJECT_MANJUU_CHECK.png', 'en': './assets/cn/island/PROJECT_MANJUU_CHECK.png', 'jp': './assets/cn/island/PROJECT_MANJUU_CHECK.png', 'tw': './assets/cn/island/PROJECT_MANJUU_CHECK.png'})
PROJECT_NEW_JERSEY_CHECK = Button(area={'cn': (1158, 170, 1223, 214), 'en': (1158, 170, 1223, 214), 'jp': (1158, 170, 1223, 214), 'tw': (1158, 170, 1223, 214)}, color={'cn': (138, 136, 159), 'en': (138, 136, 159), 'jp': (138, 136, 159), 'tw': (138, 136, 159)}, button={'cn': (1158, 170, 1223, 214), 'en': (1158, 170, 1223, 214), 'jp': (1158, 170, 1223, 214), 'tw': (1158, 170, 1223, 214)}, file={'cn': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'en': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'jp': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'tw': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png'}) PROJECT_NEW_JERSEY_CHECK = Button(area={'cn': (1158, 170, 1223, 214), 'en': (1158, 170, 1223, 214), 'jp': (1158, 170, 1223, 214), 'tw': (1158, 170, 1223, 214)}, color={'cn': (138, 136, 159), 'en': (138, 136, 159), 'jp': (138, 136, 159), 'tw': (138, 136, 159)}, button={'cn': (1158, 170, 1223, 214), 'en': (1158, 170, 1223, 214), 'jp': (1158, 170, 1223, 214), 'tw': (1158, 170, 1223, 214)}, file={'cn': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'en': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'jp': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'tw': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png'})
@@ -33,20 +45,27 @@ PROJECT_SHIMAKAZE_CHECK = Button(area={'cn': (1163, 168, 1212, 218), 'en': (1163
PROJECT_START = Button(area={'cn': (686, 610, 706, 630), 'en': (609, 610, 629, 630), 'jp': (686, 610, 706, 630), 'tw': (686, 610, 706, 630)}, color={'cn': (129, 213, 255), 'en': (128, 212, 254), 'jp': (129, 213, 255), 'tw': (129, 213, 255)}, button={'cn': (494, 599, 1087, 642), 'en': (609, 610, 629, 630), 'jp': (494, 599, 1087, 642), 'tw': (494, 599, 1087, 642)}, file={'cn': './assets/cn/island/PROJECT_START.png', 'en': './assets/en/island/PROJECT_START.png', 'jp': './assets/cn/island/PROJECT_START.png', 'tw': './assets/cn/island/PROJECT_START.png'}) PROJECT_START = Button(area={'cn': (686, 610, 706, 630), 'en': (609, 610, 629, 630), 'jp': (686, 610, 706, 630), 'tw': (686, 610, 706, 630)}, color={'cn': (129, 213, 255), 'en': (128, 212, 254), 'jp': (129, 213, 255), 'tw': (129, 213, 255)}, button={'cn': (494, 599, 1087, 642), 'en': (609, 610, 629, 630), 'jp': (494, 599, 1087, 642), 'tw': (494, 599, 1087, 642)}, file={'cn': './assets/cn/island/PROJECT_START.png', 'en': './assets/en/island/PROJECT_START.png', 'jp': './assets/cn/island/PROJECT_START.png', 'tw': './assets/cn/island/PROJECT_START.png'})
PROJECT_TASHKENT_CHECK = Button(area={'cn': (1164, 176, 1219, 213), 'en': (1164, 176, 1219, 213), 'jp': (1164, 176, 1219, 213), 'tw': (1164, 176, 1219, 213)}, color={'cn': (176, 146, 173), 'en': (176, 146, 173), 'jp': (176, 146, 173), 'tw': (176, 146, 173)}, button={'cn': (1164, 176, 1219, 213), 'en': (1164, 176, 1219, 213), 'jp': (1164, 176, 1219, 213), 'tw': (1164, 176, 1219, 213)}, file={'cn': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'en': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'jp': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'tw': './assets/cn/island/PROJECT_TASHKENT_CHECK.png'}) PROJECT_TASHKENT_CHECK = Button(area={'cn': (1164, 176, 1219, 213), 'en': (1164, 176, 1219, 213), 'jp': (1164, 176, 1219, 213), 'tw': (1164, 176, 1219, 213)}, color={'cn': (176, 146, 173), 'en': (176, 146, 173), 'jp': (176, 146, 173), 'tw': (176, 146, 173)}, button={'cn': (1164, 176, 1219, 213), 'en': (1164, 176, 1219, 213), 'jp': (1164, 176, 1219, 213), 'tw': (1164, 176, 1219, 213)}, file={'cn': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'en': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'jp': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'tw': './assets/cn/island/PROJECT_TASHKENT_CHECK.png'})
PROJECT_UNICORN_CHECK = Button(area={'cn': (1156, 167, 1224, 209), 'en': (1156, 167, 1224, 209), 'jp': (1156, 167, 1224, 209), 'tw': (1156, 167, 1224, 209)}, color={'cn': (199, 184, 218), 'en': (199, 184, 218), 'jp': (199, 184, 218), 'tw': (199, 184, 218)}, button={'cn': (1156, 167, 1224, 209), 'en': (1156, 167, 1224, 209), 'jp': (1156, 167, 1224, 209), 'tw': (1156, 167, 1224, 209)}, file={'cn': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'en': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'jp': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'tw': './assets/cn/island/PROJECT_UNICORN_CHECK.png'}) PROJECT_UNICORN_CHECK = Button(area={'cn': (1156, 167, 1224, 209), 'en': (1156, 167, 1224, 209), 'jp': (1156, 167, 1224, 209), 'tw': (1156, 167, 1224, 209)}, color={'cn': (199, 184, 218), 'en': (199, 184, 218), 'jp': (199, 184, 218), 'tw': (199, 184, 218)}, button={'cn': (1156, 167, 1224, 209), 'en': (1156, 167, 1224, 209), 'jp': (1156, 167, 1224, 209), 'tw': (1156, 167, 1224, 209)}, file={'cn': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'en': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'jp': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'tw': './assets/cn/island/PROJECT_UNICORN_CHECK.png'})
PROJECT_WILLIAM_D_PORTER_CHECK = Button(area={'cn': (1152, 176, 1218, 220), 'en': (1152, 176, 1218, 220), 'jp': (1152, 176, 1218, 220), 'tw': (1152, 176, 1218, 220)}, color={'cn': (210, 179, 166), 'en': (210, 179, 166), 'jp': (210, 179, 166), 'tw': (210, 179, 166)}, button={'cn': (1152, 176, 1218, 220), 'en': (1152, 176, 1218, 220), 'jp': (1152, 176, 1218, 220), 'tw': (1152, 176, 1218, 220)}, file={'cn': './assets/cn/island/PROJECT_WILLIAM_D_PORTER_CHECK.png', 'en': './assets/cn/island/PROJECT_WILLIAM_D_PORTER_CHECK.png', 'jp': './assets/cn/island/PROJECT_WILLIAM_D_PORTER_CHECK.png', 'tw': './assets/cn/island/PROJECT_WILLIAM_D_PORTER_CHECK.png'})
PROJECT_YING_SWEI_CHECK = Button(area={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, color={'cn': (171, 157, 165), 'en': (171, 157, 165), 'jp': (171, 157, 165), 'tw': (171, 157, 165)}, button={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, file={'cn': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'en': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'jp': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'tw': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png'}) PROJECT_YING_SWEI_CHECK = Button(area={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, color={'cn': (171, 157, 165), 'en': (171, 157, 165), 'jp': (171, 157, 165), 'tw': (171, 157, 165)}, button={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, file={'cn': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'en': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'jp': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'tw': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png'})
ROLE_SELECT_CONFIRM = Button(area={'cn': (1068, 597, 1118, 621), 'en': (1068, 597, 1118, 621), 'jp': (1068, 597, 1118, 621), 'tw': (1068, 597, 1118, 621)}, color={'cn': (109, 206, 255), 'en': (125, 211, 255), 'jp': (109, 206, 255), 'tw': (109, 206, 255)}, button={'cn': (948, 585, 1239, 632), 'en': (1068, 597, 1118, 621), 'jp': (948, 585, 1239, 632), 'tw': (948, 585, 1239, 632)}, file={'cn': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'en': './assets/en/island/ROLE_SELECT_CONFIRM.png', 'jp': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'tw': './assets/cn/island/ROLE_SELECT_CONFIRM.png'}) ROLE_SELECT_CONFIRM = Button(area={'cn': (1068, 597, 1118, 621), 'en': (1068, 597, 1118, 621), 'jp': (1068, 597, 1118, 621), 'tw': (1068, 597, 1118, 621)}, color={'cn': (109, 206, 255), 'en': (125, 211, 255), 'jp': (109, 206, 255), 'tw': (109, 206, 255)}, button={'cn': (948, 585, 1239, 632), 'en': (1068, 597, 1118, 621), 'jp': (948, 585, 1239, 632), 'tw': (948, 585, 1239, 632)}, file={'cn': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'en': './assets/en/island/ROLE_SELECT_CONFIRM.png', 'jp': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'tw': './assets/cn/island/ROLE_SELECT_CONFIRM.png'})
ROLE_SELECT_ENTER = Button(area={'cn': (579, 314, 700, 350), 'en': (578, 313, 701, 351), 'jp': (579, 314, 700, 350), 'tw': (579, 314, 700, 350)}, color={'cn': (239, 238, 237), 'en': (237, 237, 236), 'jp': (239, 238, 237), 'tw': (239, 238, 237)}, button={'cn': (534, 206, 747, 483), 'en': (578, 313, 701, 351), 'jp': (534, 206, 747, 483), 'tw': (534, 206, 747, 483)}, file={'cn': './assets/cn/island/ROLE_SELECT_ENTER.png', 'en': './assets/en/island/ROLE_SELECT_ENTER.png', 'jp': './assets/cn/island/ROLE_SELECT_ENTER.png', 'tw': './assets/cn/island/ROLE_SELECT_ENTER.png'}) ROLE_SELECT_ENTER = Button(area={'cn': (579, 314, 700, 350), 'en': (578, 313, 701, 351), 'jp': (579, 314, 700, 350), 'tw': (579, 314, 700, 350)}, color={'cn': (239, 238, 237), 'en': (237, 237, 236), 'jp': (239, 238, 237), 'tw': (239, 238, 237)}, button={'cn': (534, 206, 747, 483), 'en': (578, 313, 701, 351), 'jp': (534, 206, 747, 483), 'tw': (534, 206, 747, 483)}, file={'cn': './assets/cn/island/ROLE_SELECT_ENTER.png', 'en': './assets/en/island/ROLE_SELECT_ENTER.png', 'jp': './assets/cn/island/ROLE_SELECT_ENTER.png', 'tw': './assets/cn/island/ROLE_SELECT_ENTER.png'})
ROLE_SELECT_TITLE_AREA = Button(area={'cn': (518, 147, 763, 200), 'en': (518, 147, 763, 200), 'jp': (518, 147, 763, 200), 'tw': (518, 147, 763, 200)}, color={'cn': (80, 197, 255), 'en': (80, 197, 255), 'jp': (80, 197, 255), 'tw': (80, 197, 255)}, button={'cn': (518, 147, 763, 200), 'en': (518, 147, 763, 200), 'jp': (518, 147, 763, 200), 'tw': (518, 147, 763, 200)}, file={'cn': './assets/cn/island/ROLE_SELECT_TITLE_AREA.png', 'en': './assets/cn/island/ROLE_SELECT_TITLE_AREA.png', 'jp': './assets/cn/island/ROLE_SELECT_TITLE_AREA.png', 'tw': './assets/cn/island/ROLE_SELECT_TITLE_AREA.png'})
ROLE_SORTING_CLICK = Button(area={'cn': (109, 606, 272, 644), 'en': (109, 606, 272, 644), 'jp': (109, 606, 272, 644), 'tw': (109, 606, 272, 644)}, color={'cn': (101, 102, 101), 'en': (101, 102, 101), 'jp': (101, 102, 101), 'tw': (101, 102, 101)}, button={'cn': (109, 606, 272, 644), 'en': (109, 606, 272, 644), 'jp': (109, 606, 272, 644), 'tw': (109, 606, 272, 644)}, file={'cn': './assets/cn/island/ROLE_SORTING_CLICK.png', 'en': './assets/cn/island/ROLE_SORTING_CLICK.png', 'jp': './assets/cn/island/ROLE_SORTING_CLICK.png', 'tw': './assets/cn/island/ROLE_SORTING_CLICK.png'}) ROLE_SORTING_CLICK = Button(area={'cn': (109, 606, 272, 644), 'en': (109, 606, 272, 644), 'jp': (109, 606, 272, 644), 'tw': (109, 606, 272, 644)}, color={'cn': (101, 102, 101), 'en': (101, 102, 101), 'jp': (101, 102, 101), 'tw': (101, 102, 101)}, button={'cn': (109, 606, 272, 644), 'en': (109, 606, 272, 644), 'jp': (109, 606, 272, 644), 'tw': (109, 606, 272, 644)}, file={'cn': './assets/cn/island/ROLE_SORTING_CLICK.png', 'en': './assets/cn/island/ROLE_SORTING_CLICK.png', 'jp': './assets/cn/island/ROLE_SORTING_CLICK.png', 'tw': './assets/cn/island/ROLE_SORTING_CLICK.png'})
ROLE_SORT_ASC = Button(area={'cn': (143, 619, 150, 623), 'en': (143, 619, 150, 623), 'jp': (143, 619, 150, 623), 'tw': (143, 619, 150, 623)}, color={'cn': (244, 244, 244), 'en': (244, 244, 244), 'jp': (244, 244, 244), 'tw': (244, 244, 244)}, button={'cn': (143, 619, 150, 623), 'en': (143, 619, 150, 623), 'jp': (143, 619, 150, 623), 'tw': (143, 619, 150, 623)}, file={'cn': './assets/cn/island/ROLE_SORT_ASC.png', 'en': './assets/cn/island/ROLE_SORT_ASC.png', 'jp': './assets/cn/island/ROLE_SORT_ASC.png', 'tw': './assets/cn/island/ROLE_SORT_ASC.png'}) ROLE_SORT_ASC = Button(area={'cn': (143, 619, 150, 623), 'en': (143, 619, 150, 623), 'jp': (143, 619, 150, 623), 'tw': (143, 619, 150, 623)}, color={'cn': (244, 244, 244), 'en': (244, 244, 244), 'jp': (244, 244, 244), 'tw': (244, 244, 244)}, button={'cn': (143, 619, 150, 623), 'en': (143, 619, 150, 623), 'jp': (143, 619, 150, 623), 'tw': (143, 619, 150, 623)}, file={'cn': './assets/cn/island/ROLE_SORT_ASC.png', 'en': './assets/cn/island/ROLE_SORT_ASC.png', 'jp': './assets/cn/island/ROLE_SORT_ASC.png', 'tw': './assets/cn/island/ROLE_SORT_ASC.png'})
ROLE_SORT_DESC = Button(area={'cn': (143, 627, 150, 631), 'en': (143, 627, 150, 631), 'jp': (143, 627, 150, 631), 'tw': (143, 627, 150, 631)}, color={'cn': (236, 236, 236), 'en': (236, 236, 236), 'jp': (236, 236, 236), 'tw': (236, 236, 236)}, button={'cn': (143, 627, 150, 631), 'en': (143, 627, 150, 631), 'jp': (143, 627, 150, 631), 'tw': (143, 627, 150, 631)}, file={'cn': './assets/cn/island/ROLE_SORT_DESC.png', 'en': './assets/cn/island/ROLE_SORT_DESC.png', 'jp': './assets/cn/island/ROLE_SORT_DESC.png', 'tw': './assets/cn/island/ROLE_SORT_DESC.png'}) ROLE_SORT_DESC = Button(area={'cn': (143, 627, 150, 631), 'en': (143, 627, 150, 631), 'jp': (143, 627, 150, 631), 'tw': (143, 627, 150, 631)}, color={'cn': (236, 236, 236), 'en': (236, 236, 236), 'jp': (236, 236, 236), 'tw': (236, 236, 236)}, button={'cn': (143, 627, 150, 631), 'en': (143, 627, 150, 631), 'jp': (143, 627, 150, 631), 'tw': (143, 627, 150, 631)}, file={'cn': './assets/cn/island/ROLE_SORT_DESC.png', 'en': './assets/cn/island/ROLE_SORT_DESC.png', 'jp': './assets/cn/island/ROLE_SORT_DESC.png', 'tw': './assets/cn/island/ROLE_SORT_DESC.png'})
TEMPLATE_AKASHI = Template(file={'cn': './assets/cn/island/TEMPLATE_AKASHI.png', 'en': './assets/cn/island/TEMPLATE_AKASHI.png', 'jp': './assets/cn/island/TEMPLATE_AKASHI.png', 'tw': './assets/cn/island/TEMPLATE_AKASHI.png'}) TEMPLATE_AKASHI = Template(file={'cn': './assets/cn/island/TEMPLATE_AKASHI.png', 'en': './assets/cn/island/TEMPLATE_AKASHI.png', 'jp': './assets/cn/island/TEMPLATE_AKASHI.png', 'tw': './assets/cn/island/TEMPLATE_AKASHI.png'})
TEMPLATE_AMAGI_CHAN = Template(file={'cn': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'en': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'jp': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'tw': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png'}) TEMPLATE_AMAGI_CHAN = Template(file={'cn': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'en': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'jp': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'tw': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png'})
TEMPLATE_ATAGO = Template(file={'cn': './assets/cn/island/TEMPLATE_ATAGO.png', 'en': './assets/cn/island/TEMPLATE_ATAGO.png', 'jp': './assets/cn/island/TEMPLATE_ATAGO.png', 'tw': './assets/cn/island/TEMPLATE_ATAGO.png'})
TEMPLATE_CARROT = Template(file={'cn': './assets/cn/island/TEMPLATE_CARROT.png', 'en': './assets/cn/island/TEMPLATE_CARROT.png', 'jp': './assets/cn/island/TEMPLATE_CARROT.png', 'tw': './assets/cn/island/TEMPLATE_CARROT.png'}) TEMPLATE_CARROT = Template(file={'cn': './assets/cn/island/TEMPLATE_CARROT.png', 'en': './assets/cn/island/TEMPLATE_CARROT.png', 'jp': './assets/cn/island/TEMPLATE_CARROT.png', 'tw': './assets/cn/island/TEMPLATE_CARROT.png'})
TEMPLATE_CHAO_HO = Template(file={'cn': './assets/cn/island/TEMPLATE_CHAO_HO.png', 'en': './assets/cn/island/TEMPLATE_CHAO_HO.png', 'jp': './assets/cn/island/TEMPLATE_CHAO_HO.png', 'tw': './assets/cn/island/TEMPLATE_CHAO_HO.png'}) TEMPLATE_CHAO_HO = Template(file={'cn': './assets/cn/island/TEMPLATE_CHAO_HO.png', 'en': './assets/cn/island/TEMPLATE_CHAO_HO.png', 'jp': './assets/cn/island/TEMPLATE_CHAO_HO.png', 'tw': './assets/cn/island/TEMPLATE_CHAO_HO.png'})
TEMPLATE_CHEN_HAI = Template(file={'cn': './assets/cn/island/TEMPLATE_CHEN_HAI.png', 'en': './assets/cn/island/TEMPLATE_CHEN_HAI.png', 'jp': './assets/cn/island/TEMPLATE_CHEN_HAI.png', 'tw': './assets/cn/island/TEMPLATE_CHEN_HAI.png'})
TEMPLATE_CHESHIRE = Template(file={'cn': './assets/cn/island/TEMPLATE_CHESHIRE.png', 'en': './assets/cn/island/TEMPLATE_CHESHIRE.png', 'jp': './assets/cn/island/TEMPLATE_CHESHIRE.png', 'tw': './assets/cn/island/TEMPLATE_CHESHIRE.png'}) TEMPLATE_CHESHIRE = Template(file={'cn': './assets/cn/island/TEMPLATE_CHESHIRE.png', 'en': './assets/cn/island/TEMPLATE_CHESHIRE.png', 'jp': './assets/cn/island/TEMPLATE_CHESHIRE.png', 'tw': './assets/cn/island/TEMPLATE_CHESHIRE.png'})
TEMPLATE_COTTON = Template(file={'cn': './assets/cn/island/TEMPLATE_COTTON.png', 'en': './assets/cn/island/TEMPLATE_COTTON.png', 'jp': './assets/cn/island/TEMPLATE_COTTON.png', 'tw': './assets/cn/island/TEMPLATE_COTTON.png'}) TEMPLATE_COTTON = Template(file={'cn': './assets/cn/island/TEMPLATE_COTTON.png', 'en': './assets/cn/island/TEMPLATE_COTTON.png', 'jp': './assets/cn/island/TEMPLATE_COTTON.png', 'tw': './assets/cn/island/TEMPLATE_COTTON.png'})
TEMPLATE_FLEX = Template(file={'cn': './assets/cn/island/TEMPLATE_FLEX.png', 'en': './assets/cn/island/TEMPLATE_FLEX.png', 'jp': './assets/cn/island/TEMPLATE_FLEX.png', 'tw': './assets/cn/island/TEMPLATE_FLEX.png'}) TEMPLATE_FLEX = Template(file={'cn': './assets/cn/island/TEMPLATE_FLEX.png', 'en': './assets/cn/island/TEMPLATE_FLEX.png', 'jp': './assets/cn/island/TEMPLATE_FLEX.png', 'tw': './assets/cn/island/TEMPLATE_FLEX.png'})
TEMPLATE_FRESH_MEAT = Template(file={'cn': './assets/cn/island/TEMPLATE_FRESH_MEAT.png', 'en': './assets/cn/island/TEMPLATE_FRESH_MEAT.png', 'jp': './assets/cn/island/TEMPLATE_FRESH_MEAT.png', 'tw': './assets/cn/island/TEMPLATE_FRESH_MEAT.png'}) TEMPLATE_FRESH_MEAT = Template(file={'cn': './assets/cn/island/TEMPLATE_FRESH_MEAT.png', 'en': './assets/cn/island/TEMPLATE_FRESH_MEAT.png', 'jp': './assets/cn/island/TEMPLATE_FRESH_MEAT.png', 'tw': './assets/cn/island/TEMPLATE_FRESH_MEAT.png'})
TEMPLATE_FRIEDRICH_DER_GROBE = Template(file={'cn': './assets/cn/island/TEMPLATE_FRIEDRICH_DER_GROBE.png', 'en': './assets/cn/island/TEMPLATE_FRIEDRICH_DER_GROBE.png', 'jp': './assets/cn/island/TEMPLATE_FRIEDRICH_DER_GROBE.png', 'tw': './assets/cn/island/TEMPLATE_FRIEDRICH_DER_GROBE.png'})
TEMPLATE_FRIEND_VISIT = Template(file={'cn': './assets/cn/island/TEMPLATE_FRIEND_VISIT.png', 'en': './assets/cn/island/TEMPLATE_FRIEND_VISIT.png', 'jp': './assets/cn/island/TEMPLATE_FRIEND_VISIT.png', 'tw': './assets/cn/island/TEMPLATE_FRIEND_VISIT.png'})
TEMPLATE_HELENA = Template(file={'cn': './assets/cn/island/TEMPLATE_HELENA.png', 'en': './assets/cn/island/TEMPLATE_HELENA.png', 'jp': './assets/cn/island/TEMPLATE_HELENA.png', 'tw': './assets/cn/island/TEMPLATE_HELENA.png'})
TEMPLATE_ITEM_SATISFIED = Template(file={'cn': './assets/cn/island/TEMPLATE_ITEM_SATISFIED.png', 'en': './assets/cn/island/TEMPLATE_ITEM_SATISFIED.png', 'jp': './assets/cn/island/TEMPLATE_ITEM_SATISFIED.png', 'tw': './assets/cn/island/TEMPLATE_ITEM_SATISFIED.png'}) TEMPLATE_ITEM_SATISFIED = Template(file={'cn': './assets/cn/island/TEMPLATE_ITEM_SATISFIED.png', 'en': './assets/cn/island/TEMPLATE_ITEM_SATISFIED.png', 'jp': './assets/cn/island/TEMPLATE_ITEM_SATISFIED.png', 'tw': './assets/cn/island/TEMPLATE_ITEM_SATISFIED.png'})
TEMPLATE_LEMALIN = Template(file={'cn': './assets/cn/island/TEMPLATE_LEMALIN.png', 'en': './assets/cn/island/TEMPLATE_LEMALIN.png', 'jp': './assets/cn/island/TEMPLATE_LEMALIN.png', 'tw': './assets/cn/island/TEMPLATE_LEMALIN.png'}) TEMPLATE_LEMALIN = Template(file={'cn': './assets/cn/island/TEMPLATE_LEMALIN.png', 'en': './assets/cn/island/TEMPLATE_LEMALIN.png', 'jp': './assets/cn/island/TEMPLATE_LEMALIN.png', 'tw': './assets/cn/island/TEMPLATE_LEMALIN.png'})
TEMPLATE_MANJUU = Template(file={'cn': './assets/cn/island/TEMPLATE_MANJUU.png', 'en': './assets/cn/island/TEMPLATE_MANJUU.png', 'jp': './assets/cn/island/TEMPLATE_MANJUU.png', 'tw': './assets/cn/island/TEMPLATE_MANJUU.png'}) TEMPLATE_MANJUU = Template(file={'cn': './assets/cn/island/TEMPLATE_MANJUU.png', 'en': './assets/cn/island/TEMPLATE_MANJUU.png', 'jp': './assets/cn/island/TEMPLATE_MANJUU.png', 'tw': './assets/cn/island/TEMPLATE_MANJUU.png'})
@@ -63,6 +82,7 @@ TEMPLATE_SLOT_LOCKED = Template(file={'cn': './assets/cn/island/TEMPLATE_SLOT_LO
TEMPLATE_STRAWBERRIES = Template(file={'cn': './assets/cn/island/TEMPLATE_STRAWBERRIES.png', 'en': './assets/cn/island/TEMPLATE_STRAWBERRIES.png', 'jp': './assets/cn/island/TEMPLATE_STRAWBERRIES.png', 'tw': './assets/cn/island/TEMPLATE_STRAWBERRIES.png'}) TEMPLATE_STRAWBERRIES = Template(file={'cn': './assets/cn/island/TEMPLATE_STRAWBERRIES.png', 'en': './assets/cn/island/TEMPLATE_STRAWBERRIES.png', 'jp': './assets/cn/island/TEMPLATE_STRAWBERRIES.png', 'tw': './assets/cn/island/TEMPLATE_STRAWBERRIES.png'})
TEMPLATE_TASHKENT = Template(file={'cn': './assets/cn/island/TEMPLATE_TASHKENT.png', 'en': './assets/cn/island/TEMPLATE_TASHKENT.png', 'jp': './assets/cn/island/TEMPLATE_TASHKENT.png', 'tw': './assets/cn/island/TEMPLATE_TASHKENT.png'}) TEMPLATE_TASHKENT = Template(file={'cn': './assets/cn/island/TEMPLATE_TASHKENT.png', 'en': './assets/cn/island/TEMPLATE_TASHKENT.png', 'jp': './assets/cn/island/TEMPLATE_TASHKENT.png', 'tw': './assets/cn/island/TEMPLATE_TASHKENT.png'})
TEMPLATE_UNICORN = Template(file={'cn': './assets/cn/island/TEMPLATE_UNICORN.png', 'en': './assets/cn/island/TEMPLATE_UNICORN.png', 'jp': './assets/cn/island/TEMPLATE_UNICORN.png', 'tw': './assets/cn/island/TEMPLATE_UNICORN.png'}) TEMPLATE_UNICORN = Template(file={'cn': './assets/cn/island/TEMPLATE_UNICORN.png', 'en': './assets/cn/island/TEMPLATE_UNICORN.png', 'jp': './assets/cn/island/TEMPLATE_UNICORN.png', 'tw': './assets/cn/island/TEMPLATE_UNICORN.png'})
TEMPLATE_WILLIAM_D_PORTER = Template(file={'cn': './assets/cn/island/TEMPLATE_WILLIAM_D_PORTER.png', 'en': './assets/cn/island/TEMPLATE_WILLIAM_D_PORTER.png', 'jp': './assets/cn/island/TEMPLATE_WILLIAM_D_PORTER.png', 'tw': './assets/cn/island/TEMPLATE_WILLIAM_D_PORTER.png'})
TEMPLATE_YING_SWEI = Template(file={'cn': './assets/cn/island/TEMPLATE_YING_SWEI.png', 'en': './assets/cn/island/TEMPLATE_YING_SWEI.png', 'jp': './assets/cn/island/TEMPLATE_YING_SWEI.png', 'tw': './assets/cn/island/TEMPLATE_YING_SWEI.png'}) TEMPLATE_YING_SWEI = Template(file={'cn': './assets/cn/island/TEMPLATE_YING_SWEI.png', 'en': './assets/cn/island/TEMPLATE_YING_SWEI.png', 'jp': './assets/cn/island/TEMPLATE_YING_SWEI.png', 'tw': './assets/cn/island/TEMPLATE_YING_SWEI.png'})
TRANSPORT_LOCKED = Button(area={'cn': (659, 380, 683, 412), 'en': (659, 380, 683, 412), 'jp': (659, 380, 683, 412), 'tw': (659, 380, 683, 412)}, color={'cn': (192, 192, 190), 'en': (192, 192, 190), 'jp': (192, 192, 190), 'tw': (192, 192, 190)}, button={'cn': (659, 380, 683, 412), 'en': (659, 380, 683, 412), 'jp': (659, 380, 683, 412), 'tw': (659, 380, 683, 412)}, file={'cn': './assets/cn/island/TRANSPORT_LOCKED.png', 'en': './assets/cn/island/TRANSPORT_LOCKED.png', 'jp': './assets/cn/island/TRANSPORT_LOCKED.png', 'tw': './assets/cn/island/TRANSPORT_LOCKED.png'}) TRANSPORT_LOCKED = Button(area={'cn': (659, 380, 683, 412), 'en': (659, 380, 683, 412), 'jp': (659, 380, 683, 412), 'tw': (659, 380, 683, 412)}, color={'cn': (192, 192, 190), 'en': (192, 192, 190), 'jp': (192, 192, 190), 'tw': (192, 192, 190)}, button={'cn': (659, 380, 683, 412), 'en': (659, 380, 683, 412), 'jp': (659, 380, 683, 412), 'tw': (659, 380, 683, 412)}, file={'cn': './assets/cn/island/TRANSPORT_LOCKED.png', 'en': './assets/cn/island/TRANSPORT_LOCKED.png', 'jp': './assets/cn/island/TRANSPORT_LOCKED.png', 'tw': './assets/cn/island/TRANSPORT_LOCKED.png'})
TRANSPORT_RECEIVE = Button(area={'cn': (938, 206, 1065, 235), 'en': (938, 206, 1065, 235), 'jp': (938, 206, 1065, 235), 'tw': (938, 206, 1065, 235)}, color={'cn': (76, 195, 255), 'en': (76, 195, 255), 'jp': (76, 195, 255), 'tw': (76, 195, 255)}, button={'cn': (938, 206, 1065, 235), 'en': (938, 206, 1065, 235), 'jp': (938, 206, 1065, 235), 'tw': (938, 206, 1065, 235)}, file={'cn': './assets/cn/island/TRANSPORT_RECEIVE.png', 'en': './assets/cn/island/TRANSPORT_RECEIVE.png', 'jp': './assets/cn/island/TRANSPORT_RECEIVE.png', 'tw': './assets/cn/island/TRANSPORT_RECEIVE.png'}) TRANSPORT_RECEIVE = Button(area={'cn': (938, 206, 1065, 235), 'en': (938, 206, 1065, 235), 'jp': (938, 206, 1065, 235), 'tw': (938, 206, 1065, 235)}, color={'cn': (76, 195, 255), 'en': (76, 195, 255), 'jp': (76, 195, 255), 'tw': (76, 195, 255)}, button={'cn': (938, 206, 1065, 235), 'en': (938, 206, 1065, 235), 'jp': (938, 206, 1065, 235), 'tw': (938, 206, 1065, 235)}, file={'cn': './assets/cn/island/TRANSPORT_RECEIVE.png', 'en': './assets/cn/island/TRANSPORT_RECEIVE.png', 'jp': './assets/cn/island/TRANSPORT_RECEIVE.png', 'tw': './assets/cn/island/TRANSPORT_RECEIVE.png'})

View File

@@ -63,7 +63,6 @@ class Island(IslandProjectRun, IslandTransportRun):
project = any(project_config) project = any(project_config)
names = self.island_config_to_names(project_config) names = self.island_config_to_names(project_config)
if transport or project: if transport or project:
self.ui_goto_island()
self.ui_ensure(page_island_phone) self.ui_ensure(page_island_phone)
self.island_run(transport=transport, project=project, names=names) self.island_run(transport=transport, project=project, names=names)
self.ui_goto(page_main, get_ship=False) self.ui_goto(page_main, get_ship=False)

View File

@@ -0,0 +1,277 @@
from rich.table import Table
from rich.text import Text
from module.base.timer import Timer
from module.island.assets import *
from module.island.ui import IslandUI
from module.logger import logger
from module.map.map_grids import SelectedGrids
from module.ocr.ocr import Digit, Ocr
from module.ui.page import page_island, page_island_phone
from module.ui.scroll import Scroll
ISLAND_FRIEND_SCROLL = Scroll(ISLAND_FRIEND_SCROLL, color=(255, 255, 255))
ISLAND_FRIEND_SCROLL.drag_threshold = 0.05
ISLAND_FRIEND_SCROLL.edge_threshold = 0.05
PEARL_PRICE_OCR = Digit(PEARL_PRICE_OCR, letter=(255, 255, 255), threshold=128)
class FriendNameOcr(Ocr):
def after_process(self, result):
result = super().after_process(result)
result = result.replace('/', '').replace('\\', '').replace('`', '').replace('_', '')
return result
class IslandFriend:
# If success to parse project
valid: bool
# button to visit
visit_button: Button
# OCR result
name: str
# if visited
visited: bool
# pearl price on this island
pearl_price: int
def __init__(self, image, visit_button, crop_area):
"""
Args:
image:
visit_button:
crop_area:
"""
self.image = image
self.visit_button = visit_button.move((crop_area[0], crop_area[1]))
self.crop_area = crop_area
self.x1, self.y1, self.x2, self.y2 = self.visit_button.area
self.valid = True
self.visited = False
self.pearl_price = 0
self.friend_parse()
def friend_parse(self):
area = (self.x1 - 504, self.y1 - 25, self.x1 - 504 + 168, self.y1 - 25 + 22)
if area[0] < 360 or area[1] < 98 or area[2] > 593 or area[3] > 693:
self.valid = False
return
button = Button(area=area, color=(), button=area, name='FRIEND_NAME')
ocr = FriendNameOcr(button, lang='cnocr', letter=(63, 64, 66), threshold=128)
self.name = ocr.ocr(self.image)
if not self.name:
self.valid = False
return
def __eq__(self, other):
"""
Args:
other (IslandFriend):
Returns:
bool:
"""
if not isinstance(other, IslandFriend):
return False
if not self.valid or not other.valid:
return False
if self.name != other.name:
return False
return True
def __str__(self):
return self.name
class IslandPearl(IslandUI):
def pearl_enter(self):
"""
Pages:
in: ISLAND_FRIEND_LEAVE
out: PEARL_CHECK
"""
logger.hr('Pearl Enter')
self.move_up(2.8)
self.move_right(1.6)
self.move_down(1.8)
for _ in self.loop():
if self.appear_then_click(PEARL_ENTER, offset=(20, 20), interval=2):
continue
if self.appear(PEARL_CHECK, offset=(20, 20)):
break
def pearl_price_get(self):
"""
Returns:
int: pearl price ocr result
"""
ocr = 0
for _ in self.loop(timeout=1.5):
ocr = PEARL_PRICE_OCR.ocr(self.device.image)
if ocr >= 200:
break
return ocr
def friend_detect(self):
"""
Get all friends from an image.
Args:
image (np.ndarray):
Returns:
SelectedGrids:
"""
self.handle_info_bar()
area = (880, 98, 960, 693)
friends = SelectedGrids(
[IslandFriend(self.device.image, button, area) for button in
TEMPLATE_FRIEND_VISIT.match_multi(self.image_crop(area, copy=False))]
)
return friends.select(valid=True)
def _friend_visit(self, friend):
"""
Args:
friend (IslandFriend):
Returns:
bool: if visited
"""
logger.info(f'Visiting {friend}')
confirm_timer = Timer(1, count=2).start()
for _ in self.loop():
if self.island_in_friend(interval=5):
self.device.click(friend.visit_button)
continue
if self.info_bar_count():
return False
if self.appear(ISLAND_FRIEND_LEAVE, offset=(20, 20)):
if confirm_timer.reached():
break
continue
else:
confirm_timer.reset()
return True
def friend_leave(self):
logger.hr('Friend Leave')
self.island_ui_back()
for _ in self.loop():
if self.appear_then_click(ISLAND_FRIEND_LEAVE, offset=(20, 20), interval=2):
continue
if self.ui_page_appear(page_island):
break
if self.ui_page_appear(page_island_phone):
break
self.device.sleep(1.5)
self.device.click_record_clear()
self.ui_ensure_friend_page()
# ISLAND_FRIEND_SCROLL.set_top(main=self)
def friend_visit(self, current_friends, friends):
"""
Visit a friend's island, get the pearl price then leave
Args:
current_friends (SelectedGrids):
friends (SelectedGrids):
Returns:
SelectedGrids:
"""
logger.hr('Friend Visit')
friend: IslandFriend = friends.intersect_by_eq(current_friends).select(visited=False).first_or_none()
if friend is None or friend.name not in current_friends.get('name'):
return friends
if self._friend_visit(friend):
self.device.sleep(2)
self.pearl_enter()
friend.pearl_price = self.pearl_price_get()
print(friend.name)
self.friend_leave()
friend.visited = True
return friends
def pearl_run(self):
"""
Visit each friend's island, get the pearl price, and show in the logger
Returns:
SelectedGrids:
"""
logger.hr('Island Pearl', level=1)
bottom = False
friends = SelectedGrids([])
if ISLAND_FRIEND_SCROLL.appear(main=self):
ISLAND_FRIEND_SCROLL.set_top(main=self)
count = 0
for _ in self.loop():
if count > 2:
break
current_friends = self.friend_detect()
friends = friends.add_by_eq(current_friends)
friends = self.friend_visit(current_friends, friends)
current_friends = friends.intersect_by_eq(current_friends)
if ISLAND_FRIEND_SCROLL.appear(main=self):
if ISLAND_FRIEND_SCROLL.at_bottom(main=self):
if not bottom:
ISLAND_FRIEND_SCROLL.drag_threshold = 0.01
ISLAND_FRIEND_SCROLL.edge_threshold = 0.01
bottom = True
continue
logger.info('Island friend reach bottom, stop')
break
elif not current_friends.select(visited=False):
ISLAND_FRIEND_SCROLL.next_page(main=self)
count += 1
return friends
@staticmethod
def show(data):
"""
+----------+---------------+
| Player | Pearl Price |
+----------+---------------+
| a | 200 |
| b | 300 |
| c | 400 |
+----------+---------------+
"""
table = Table(show_lines=True)
table.add_column(
'Player', header_style="bright_cyan", style="cyan", no_wrap=True
)
table.add_column("Pearl Price", style="magenta")
for row in zip(data.get('name'), data.get('pearl_price')):
table.add_row(
row[0],
str(row[1]),
)
logger.print(table, justify='center')
def run(self):
self.device.screenshot()
self.ui_ensure_friend_page()
friends = self.pearl_run()
friends = friends.select(visited=True)
self.show(friends)
if __name__ == '__main__':
self = IslandPearl('alas')
self.device.screenshot()
self.run()

View File

@@ -345,7 +345,61 @@ class IslandProjectRun(IslandUI):
for button in TEMPLATE_PROJECT.match_multi(image_gray)]) for button in TEMPLATE_PROJECT.match_multi(image_gray)])
return projects.select(valid=True) return projects.select(valid=True)
def project_receive(self, button, skip_first_screenshot=True): def ensure_project(self, name, trial=7, skip_first_screenshot=True):
"""
Ensure the specific project is in the current page.
Args:
name (str|IslandProject): the project name to ensure
trial (int): retry times
skip_first_screenshot (bool):
"""
logger.hr('Project ensure')
if isinstance(name, IslandProject):
name = name.name
for _ in range(trial):
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
projects = self.project_detect(self.device.image)
if not projects:
continue
if name in projects.get('name'):
logger.info(f'Ensured project: {name}')
break
keys = list(name_to_slot.keys())
if name in keys:
project_id = keys.index(name) + 1
projects_id = projects.get('id')
if project_id > projects_id[0]:
self.drag_page((0, -500), ISLAND_PROJECT_SWIPE.area, 0.6)
else:
self.drag_page((0, 500), ISLAND_PROJECT_SWIPE.area, 0.6)
continue
else:
logger.warning(f'Wrong project name {name}, skip ensuring')
break
def drag_page(self, vector, box, sleep=0.5):
"""
Drag the management page.
Args:
vector (tuple):
box (tuple):
sleep (float):
"""
p1, p2 = random_rectangle_vector(vector, box=box, random_range=(0, -5, 0, 5))
self.device.drag(p1, p2, segments=2, shake=(0, 25), point_random=(0, 0, 0, 0), shake_random=(0, -5, 0, 5))
self.device.sleep(sleep)
def is_in_enter_page(self):
return self.image_color_count(ROLE_SELECT_TITLE_AREA, color=(57, 189, 255), threshold=221, count=8000)
def project_receive(self, button):
""" """
Receive a project and enter role select page. Receive a project and enter role select page.
@@ -359,16 +413,12 @@ class IslandProjectRun(IslandUI):
self.interval_clear([ISLAND_MANAGEMENT_CHECK, PROJECT_COMPLETE, self.interval_clear([ISLAND_MANAGEMENT_CHECK, PROJECT_COMPLETE,
GET_ITEMS_ISLAND, ROLE_SELECT_ENTER]) GET_ITEMS_ISLAND, ROLE_SELECT_ENTER])
success = False success = False
enter = True
click_timer = Timer(5, count=10).start() click_timer = Timer(5, count=10).start()
while 1: for _ in self.loop():
if skip_first_screenshot: # UI additional
skip_first_screenshot = False
else:
self.device.screenshot()
if self.island_in_management(interval=5): if self.island_in_management(interval=5):
self.device.click(button) self.device.click(button)
self.device.sleep(0.1)
click_timer.reset() click_timer.reset()
continue continue
@@ -380,7 +430,9 @@ class IslandProjectRun(IslandUI):
click_timer.reset() click_timer.reset()
continue continue
if enter and self.appear_then_click(ROLE_SELECT_ENTER, threshold=10, interval=2): # Enter page
if self.is_in_enter_page() and \
self.appear_then_click(ROLE_SELECT_ENTER, threshold=10, interval=2):
success = True success = True
self.interval_clear(GET_ITEMS_ISLAND) self.interval_clear(GET_ITEMS_ISLAND)
click_timer.reset() click_timer.reset()
@@ -388,25 +440,24 @@ class IslandProjectRun(IslandUI):
if self.appear_then_click(PROJECT_COMPLETE, offset=(20, 20), interval=1): if self.appear_then_click(PROJECT_COMPLETE, offset=(20, 20), interval=1):
success = True success = True
enter = False
self.interval_clear(GET_ITEMS_ISLAND) self.interval_clear(GET_ITEMS_ISLAND)
self.interval_reset(ROLE_SELECT_ENTER) self.interval_reset(ROLE_SELECT_ENTER)
click_timer.reset() click_timer.reset()
continue continue
if self.handle_get_items(): if self.handle_get_items():
enter = True
self.interval_clear(ROLE_SELECT_ENTER) self.interval_clear(ROLE_SELECT_ENTER)
click_timer.reset() click_timer.reset()
continue continue
# handle island level up # handle island level up
if not enter and click_timer.reached(): if click_timer.reached():
self.device.click(GET_ITEMS_ISLAND) self.device.click(GET_ITEMS_ISLAND)
self.device.sleep(0.3) self.device.sleep(0.3)
click_timer.reset() click_timer.reset()
continue continue
# End
if self.appear(ROLE_SELECT_CONFIRM, offset=(20, 20)): if self.appear(ROLE_SELECT_CONFIRM, offset=(20, 20)):
break break
@@ -429,12 +480,7 @@ class IslandProjectRun(IslandUI):
click_button (Button): character button to click click_button (Button): character button to click
check_button (Button): check_button (Button):
""" """
skip_first_screenshot=True for _ in self.loop():
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
if self.appear(check_button, offset=(20, 20)): if self.appear(check_button, offset=(20, 20)):
break break
if self.appear(ROLE_SELECT_CONFIRM, offset=(20, 20), interval=2): if self.appear(ROLE_SELECT_CONFIRM, offset=(20, 20), interval=2):
@@ -442,12 +488,8 @@ class IslandProjectRun(IslandUI):
continue continue
self.interval_clear(ROLE_SELECT_CONFIRM) self.interval_clear(ROLE_SELECT_CONFIRM)
skip_first_screenshot=True
while 1: for _ in self.loop():
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
# End # End
if self.appear(ISLAND_AMOUNT_MAX, offset=(20, 20)): if self.appear(ISLAND_AMOUNT_MAX, offset=(20, 20)):
return True return True
@@ -459,13 +501,12 @@ class IslandProjectRun(IslandUI):
self.interval_clear(ISLAND_MANAGEMENT_CHECK) self.interval_clear(ISLAND_MANAGEMENT_CHECK)
continue continue
def project_character_select(self, character='manjuu', skip_first_screenshot=True): def project_character_select(self, character='manjuu'):
""" """
Select a role to produce. Select a role to produce.
Args: Args:
character (str): character name to select character (str): character name to select
skip_first_screenshot (bool):
Returns: Returns:
bool: if selected bool: if selected
@@ -474,12 +515,7 @@ class IslandProjectRun(IslandUI):
ROLE_SORTING.set('Descending', main=self) ROLE_SORTING.set('Descending', main=self)
timeout = Timer(5, count=3).start() timeout = Timer(5, count=3).start()
count = 0 count = 0
while 1: for _ in self.loop():
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
if timeout.reached(): if timeout.reached():
self.ui_ensure_management_page() self.ui_ensure_management_page()
return False return False
@@ -531,28 +567,23 @@ class IslandProjectRun(IslandUI):
peaks = np.array(peaks) + y_top peaks = np.array(peaks) + y_top
return ProductItem(self.device.image, peaks, project_id) return ProductItem(self.device.image, peaks, project_id)
def product_select(self, option, project_id, trial=2, skip_first_screenshot=True): def product_select(self, option, project_id, trial=2):
""" """
Select a product in items list. Select a product in items list.
Args: Args:
option (str): option to select option (str): option to select
trail (int): retry times trail (int): retry times
skip_first_screenshot (bool):
Returns: Returns:
bool: if selected bool: if selected
""" """
logger.hr('Island Select Product') logger.hr('Island Select Product')
last = None last_item = None
bottom_item = None
retry = trial retry = trial
click_interval = Timer(1) click_interval = Timer(1)
while 1: for _ in self.loop():
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
current = self.get_current_product(project_id) current = self.get_current_product(project_id)
if trial > 0 and not len(current.items): if trial > 0 and not len(current.items):
trial -= 1 trial -= 1
@@ -574,7 +605,7 @@ class IslandProjectRun(IslandUI):
click_interval.reset() click_interval.reset()
drag = False drag = False
if last == current.items[-1]: if bottom_item == current.items[-1]:
if retry > 0: if retry > 0:
retry -= 1 retry -= 1
continue continue
@@ -582,18 +613,21 @@ class IslandProjectRun(IslandUI):
self.ui_ensure_management_page() self.ui_ensure_management_page()
return False return False
if drag: # clear record if current product is different during 2 drags
last = current.items[-1] if last_item is not None and last_item != current:
self.device.click(last.button) self.device.click_record.pop()
self.island_drag_next_page((0, -300), ISLAND_PRODUCT_ITEMS.area, 0.5) self.device.click_record.pop()
def product_select_confirm(self, skip_first_screenshot=True): if drag:
last_item = current
bottom_item = current.items[-1]
self.device.click(bottom_item.button)
self.drag_page((0, -300), ISLAND_PRODUCT_ITEMS.area, 0.5)
def product_select_confirm(self):
""" """
Start the product after product selected. Start the product after product selected.
Args:
skip_first_screenshot (bool):
Returns: Returns:
bool: if success bool: if success
""" """
@@ -601,12 +635,7 @@ class IslandProjectRun(IslandUI):
last = None last = None
success = False success = False
timeout = Timer(1.5, count=3).start() timeout = Timer(1.5, count=3).start()
while 1: for _ in self.loop():
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
if timeout.reached(): if timeout.reached():
break break
@@ -647,45 +676,6 @@ class IslandProjectRun(IslandUI):
if self.island_in_management(): if self.island_in_management():
return True return True
def island_drag_next_page(self, vector, box, sleep=0.5):
"""
Drag to the next page.
Args:
vector (tuple):
box (tuple):
sleep (float):
"""
logger.info('Island drag to next page')
p1, p2 = random_rectangle_vector(vector, box=box, random_range=(0, -5, 0, 5))
self.device.drag(p1, p2, segments=2, shake=(0, 25), point_random=(0, 0, 0, 0), shake_random=(0, -5, 0, 5))
self.device.sleep(sleep)
def ensure_project(self, project, trial=7, skip_first_screenshot=True):
"""
Ensure the specific project is in the current page.
Args:
project (IslandProject): the project to ensure
trial (int): retry times
skip_first_screenshot (bool):
"""
logger.hr('Project ensure')
for _ in range(trial):
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
projects = self.project_detect(self.device.image)
if not projects:
continue
if project.name in projects.get('name'):
logger.info(f'Ensured project: {project}')
break
self.island_drag_next_page((0, -500), ISLAND_PROJECT_SWIPE.area, 0.6)
def project_receive_and_start(self, proj, button, character, option, project_id, ensure=True): def project_receive_and_start(self, proj, button, character, option, project_id, ensure=True):
""" """
Receive and start a project is in the current page. Receive and start a project is in the current page.
@@ -743,27 +733,22 @@ class IslandProjectRun(IslandUI):
slot_option.append(deep_get(items_data, [proj_id, option])) slot_option.append(deep_get(items_data, [proj_id, option]))
return slot_option return slot_option
def island_project_run(self, names, trial=2, skip_first_screenshot=True): def island_project_run(self, names, trial=2):
""" """
Execute island run to receive and start project. Execute island run to receive and start project.
Args: Args:
names (list[str]): a list of name for island receive names (list[str]): a list of name for island receive
trial (int): retry times trial (int): retry times
skip_first_screenshot (bool):
Returns: Returns:
list[timedelta]: future finish timedelta list[timedelta]: future finish timedelta
""" """
logger.hr('Island Project Run', level=1) logger.hr('Island Project Run', level=1)
self.ensure_project(names[0])
end = False end = False
timeout = Timer(3, count=3).start() timeout = Timer(3, count=3).start()
while 1: for _ in self.loop():
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
if timeout.reached(): if timeout.reached():
break break
@@ -798,7 +783,7 @@ class IslandProjectRun(IslandUI):
if end: if end:
break break
self.island_drag_next_page((0, -500), ISLAND_PROJECT_SWIPE.area, 0.6) self.drag_page((0, -500), ISLAND_PROJECT_SWIPE.area, 0.6)
# task delay # task delay
future_finish = sorted([f for f in self.total.get('finish_time') if f is not None]) future_finish = sorted([f for f in self.total.get('finish_time') if f is not None])

Some files were not shown because too many files have changed in this diff Show More