1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-06-11 09:35:06 +08:00

Merge pull request #8 from xiaomcingn/island_dev

Fix: use drag_page instead of ROLE_SORTING to fix character detection failure
This commit is contained in:
ArecaSapling
2026-05-25 11:55:04 +08:00
committed by GitHub
11 changed files with 9069 additions and 1891 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -1572,136 +1572,179 @@
"Island1": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu",
"Option3": 0,
"Character3": "manjuu",
"Option4": 0,
"Character4": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu",
"Character3": "manjuu",
"SecondaryCharacter3": "manjuu",
"Character4": "manjuu",
"SecondaryCharacter4": "manjuu"
},
"Island2": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu",
"Option3": 0,
"Character3": "manjuu",
"Option4": 0,
"Character4": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu",
"Character3": "manjuu",
"SecondaryCharacter3": "manjuu",
"Character4": "manjuu",
"SecondaryCharacter4": "manjuu"
},
"Island3": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu",
"Option3": 0,
"Character3": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu",
"Character3": "manjuu",
"SecondaryCharacter3": "manjuu"
},
"Island4": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu",
"Option3": 0,
"Character3": "manjuu",
"Option4": 0,
"Character4": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu",
"Character3": "manjuu",
"SecondaryCharacter3": "manjuu",
"Character4": "manjuu",
"SecondaryCharacter4": "manjuu"
},
"Island5": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu",
"Option3": 0,
"Character3": "manjuu",
"Option4": 0,
"Character4": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu",
"Character3": "manjuu",
"SecondaryCharacter3": "manjuu",
"Character4": "manjuu",
"SecondaryCharacter4": "manjuu"
},
"Island6": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu",
"Option3": 0,
"Character3": "manjuu",
"Option4": 0,
"Character4": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu",
"Character3": "manjuu",
"SecondaryCharacter3": "manjuu",
"Character4": "manjuu",
"SecondaryCharacter4": "manjuu"
},
"Island7": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu"
},
"Island8": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu"
},
"Island9": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu"
},
"Island10": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu"
},
"Island11": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu"
},
"Island12": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu"
},
"Island13": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu"
},
"Island14": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu"
},
"Island15": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu"
},
"Island16": {
"Receive": false,
"Option1": 0,
"Character1": "manjuu",
"Option2": 0,
"Character2": "manjuu"
"Character1": "manjuu",
"SecondaryCharacter1": "manjuu",
"Character2": "manjuu",
"SecondaryCharacter2": "manjuu"
},
"Storage": {
"Storage": {}

File diff suppressed because it is too large Load Diff

View File

@@ -547,132 +547,177 @@ _Island:
- yat_sen
- fei_yuen
- august_von_parseval
IslandSecondaryCharacter: &IslandSecondaryCharacter
<<: *IslandCharacter
Island1:
Receive: false
Option1: *IslandOption8
Character1: *IslandCharacter
Option2: *IslandOption8
Character2: *IslandCharacter
Option3: *IslandOption8
Character3: *IslandCharacter
Option4: *IslandOption8
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Character3: *IslandCharacter
SecondaryCharacter3: *IslandSecondaryCharacter
Character4: *IslandCharacter
SecondaryCharacter4: *IslandSecondaryCharacter
Island2:
Receive: false
Option1:
value: 0
option: [ 0, 1 ]
Character1: *IslandCharacter
Option2:
value: 0
option: [ 0, 2 ]
Character2: *IslandCharacter
Option3:
value: 0
option: [ 0, 3 ]
Character3: *IslandCharacter
Option4:
value: 0
option: [ 0, 4 ]
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Character3: *IslandCharacter
SecondaryCharacter3: *IslandSecondaryCharacter
Character4: *IslandCharacter
SecondaryCharacter4: *IslandSecondaryCharacter
Island3:
Receive: false
Option1: *IslandOption16
Character1: *IslandCharacter
Option2: *IslandOption16
Character2: *IslandCharacter
Option3: *IslandOption16
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Character3: *IslandCharacter
SecondaryCharacter3: *IslandSecondaryCharacter
Island4:
Receive: false
Option1: *IslandOption6
Character1: *IslandCharacter
Option2: *IslandOption6
Character2: *IslandCharacter
Option3: *IslandOption6
Character3: *IslandCharacter
Option4: *IslandOption6
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Character3: *IslandCharacter
SecondaryCharacter3: *IslandSecondaryCharacter
Character4: *IslandCharacter
SecondaryCharacter4: *IslandSecondaryCharacter
Island5:
Receive: false
Option1: *IslandOption4
Character1: *IslandCharacter
Option2: *IslandOption4
Character2: *IslandCharacter
Option3: *IslandOption4
Character3: *IslandCharacter
Option4: *IslandOption4
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Character3: *IslandCharacter
SecondaryCharacter3: *IslandSecondaryCharacter
Character4: *IslandCharacter
SecondaryCharacter4: *IslandSecondaryCharacter
Island6:
Receive: false
Option1: *IslandOption7
Character1: *IslandCharacter
Option2: *IslandOption7
Character2: *IslandCharacter
Option3: *IslandOption7
Character3: *IslandCharacter
Option4: *IslandOption7
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Character3: *IslandCharacter
SecondaryCharacter3: *IslandSecondaryCharacter
Character4: *IslandCharacter
SecondaryCharacter4: *IslandSecondaryCharacter
Island7:
Receive: false
Option1: *IslandOption9
Character1: *IslandCharacter
Option2: *IslandOption9
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Island8:
Receive: false
Option1: *IslandOption12
Character1: *IslandCharacter
Option2: *IslandOption12
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Island9:
Receive: false
Option1: *IslandOption11
Character1: *IslandCharacter
Option2: *IslandOption11
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Island10:
Receive: false
Option1: *IslandOption10
Character1: *IslandCharacter
Option2: *IslandOption10
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Island11:
Receive: false
Option1: *IslandOption9
Character1: *IslandCharacter
Option2: *IslandOption9
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Island12:
Receive: false
Option1: *IslandOption6
Character1: *IslandCharacter
Option2: *IslandOption6
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Island13:
Receive: false
Option1: *IslandOption6
Character1: *IslandCharacter
Option2: *IslandOption6
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Island14:
Receive: false
Option1: *IslandOption4
Character1: *IslandCharacter
Option2: *IslandOption4
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Island15:
Receive: false
Option1: *IslandOption9
Character1: *IslandCharacter
Option2: *IslandOption9
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
Island16:
Receive: false
Option1: *IslandOption9
Character1: *IslandCharacter
Option2: *IslandOption9
Character1: *IslandCharacter
SecondaryCharacter1: *IslandSecondaryCharacter
Character2: *IslandCharacter
SecondaryCharacter2: *IslandSecondaryCharacter
GeneralShop:
UseGems: false
Refresh: false

View File

@@ -274,136 +274,179 @@ class GeneratedConfig:
# Group `Island1`
Island1_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island1_Option4 = 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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island1_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island1_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island1_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island1_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island1_SecondaryCharacter3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island1_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island1_SecondaryCharacter4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island2`
Island2_Receive = False
Island2_Option1 = 0 # 0, 1
Island2_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island2_Option2 = 0 # 0, 2
Island2_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island2_Option3 = 0 # 0, 3
Island2_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island2_Option4 = 0 # 0, 4
Island2_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island2_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island2_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island2_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island2_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island2_SecondaryCharacter3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island2_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island2_SecondaryCharacter4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island3`
Island3_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island3_Option3 = 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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island3_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island3_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island3_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island3_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island3_SecondaryCharacter3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island4`
Island4_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island4_Option4 = 0 # 0, 1, 2, 3, 4, 5, 6
Island4_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island4_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island4_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island4_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island4_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island4_SecondaryCharacter3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island4_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island4_SecondaryCharacter4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island5`
Island5_Receive = False
Island5_Option1 = 0 # 0, 1, 2, 3, 4
Island5_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island5_Option2 = 0 # 0, 1, 2, 3, 4
Island5_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island5_Option3 = 0 # 0, 1, 2, 3, 4
Island5_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island5_Option4 = 0 # 0, 1, 2, 3, 4
Island5_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island5_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island5_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island5_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island5_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island5_SecondaryCharacter3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island5_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island5_SecondaryCharacter4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island6`
Island6_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island6_Option4 = 0 # 0, 1, 2, 3, 4, 5, 6, 7
Island6_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island6_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island6_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island6_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island6_Character3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island6_SecondaryCharacter3 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island6_Character4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island6_SecondaryCharacter4 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island7`
Island7_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island7_Option2 = 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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island7_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island7_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island7_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island8`
Island8_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island8_Option2 = 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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island8_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island8_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island8_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island9`
Island9_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island9_Option2 = 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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island9_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island9_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island9_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island10`
Island10_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island10_Option2 = 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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island10_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island10_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island10_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island11`
Island11_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island11_Option2 = 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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island11_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island11_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island11_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island12`
Island12_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island12_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6
Island12_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island12_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island12_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island12_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island13`
Island13_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island13_Option2 = 0 # 0, 1, 2, 3, 4, 5, 6
Island13_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island13_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island13_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island13_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island14`
Island14_Receive = False
Island14_Option1 = 0 # 0, 1, 2, 3, 4
Island14_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island14_Option2 = 0 # 0, 1, 2, 3, 4
Island14_Character1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island14_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island14_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island14_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island15`
Island15_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island15_Option2 = 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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island15_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island15_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island15_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `Island16`
Island16_Receive = False
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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island16_Option2 = 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, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island16_SecondaryCharacter1 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island16_Character2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
Island16_SecondaryCharacter2 = 'manjuu' # manjuu, saratoga, new_jersey, tashkent, lemalin, shimakaze, akashi, ying_swei, chao_ho, william_d_porter, chen_hai, hood, prinz_eugen, tb, oceana, explorer, unicorn, cheshire, amagi_chan, helena, atago, friedrich_der_grobe, javelin, laffey, takao, yat_sen, fei_yuen, august_von_parseval
# Group `GeneralShop`
GeneralShop_UseGems = False

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,7 @@ ISLAND_MANAGEMENT = Button(area={'cn': (1077, 493, 1119, 533), 'en': (1077, 493,
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_PRODUCT_ITEMS = Button(area={'cn': (166, 68, 477, 652), 'en': (166, 68, 477, 652), 'jp': (166, 68, 477, 652), 'tw': (166, 68, 477, 652)}, color={'cn': (189, 200, 198), 'en': (189, 200, 198), 'jp': (189, 200, 198), 'tw': (189, 200, 198)}, button={'cn': (166, 68, 477, 652), 'en': (166, 68, 477, 652), 'jp': (166, 68, 477, 652), 'tw': (166, 68, 477, 652)}, file={'cn': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'en': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'jp': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'tw': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png'})
ISLAND_PROJECT_CHARACTER = Button(area={'cn': (544, 149, 640, 549), 'en': (544, 149, 640, 549), 'jp': (544, 149, 640, 549), 'tw': (544, 149, 640, 549)}, color={'cn': (128, 128, 128), 'en': (128, 128, 128), 'jp': (128, 128, 128), 'tw': (128, 128, 128)}, button={'cn': (544, 149, 640, 549), 'en': (544, 149, 640, 549), 'jp': (544, 149, 640, 549), 'tw': (544, 149, 640, 549)}, file={'cn': './assets/cn/island/ISLAND_PROJECT_CHARACTER.png', 'en': './assets/cn/island/ISLAND_PROJECT_CHARACTER.png', 'jp': './assets/cn/island/ISLAND_PROJECT_CHARACTER.png', 'tw': './assets/cn/island/ISLAND_PROJECT_CHARACTER.png'})
ISLAND_PROJECT_SWIPE = Button(area={'cn': (690, 80, 721, 641), 'en': (690, 80, 721, 641), 'jp': (690, 80, 721, 641), 'tw': (690, 80, 721, 641)}, color={'cn': (215, 218, 213), 'en': (215, 218, 213), 'jp': (215, 218, 213), 'tw': (215, 218, 213)}, button={'cn': (690, 80, 721, 641), 'en': (690, 80, 721, 641), 'jp': (690, 80, 721, 641), 'tw': (690, 80, 721, 641)}, file={'cn': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'en': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'jp': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'tw': './assets/cn/island/ISLAND_PROJECT_SWIPE.png'})
ISLAND_TRANSPORT = Button(area={'cn': (905, 335, 986, 358), 'en': (905, 335, 986, 358), 'jp': (905, 335, 986, 358), 'tw': (905, 335, 986, 358)}, color={'cn': (228, 192, 122), 'en': (234, 192, 102), 'jp': (228, 192, 122), 'tw': (228, 192, 122)}, button={'cn': (898, 328, 1031, 459), 'en': (905, 335, 986, 358), 'jp': (898, 328, 1031, 459), 'tw': (898, 328, 1031, 459)}, file={'cn': './assets/cn/island/ISLAND_TRANSPORT.png', 'en': './assets/en/island/ISLAND_TRANSPORT.png', 'jp': './assets/cn/island/ISLAND_TRANSPORT.png', 'tw': './assets/cn/island/ISLAND_TRANSPORT.png'})
ISLAND_TRANSPORT_CHECK = Button(area={'cn': (264, 154, 317, 180), 'en': (264, 154, 317, 180), 'jp': (264, 154, 317, 180), 'tw': (264, 154, 317, 180)}, color={'cn': (142, 143, 143), 'en': (22, 0, 0), 'jp': (142, 143, 143), 'tw': (142, 143, 143)}, button={'cn': (264, 154, 317, 180), 'en': (264, 154, 317, 180), 'jp': (264, 154, 317, 180), 'tw': (264, 154, 317, 180)}, file={'cn': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'en': './assets/en/island/ISLAND_TRANSPORT_CHECK.png', 'jp': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'tw': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png'})

View File

@@ -501,43 +501,93 @@ class IslandProjectRun(IslandUI):
self.interval_clear(ISLAND_MANAGEMENT_CHECK)
continue
def project_character_select(self, character='manjuu'):
def match_and_select_character(self, character, image):
"""
Match character template and select if found.
Args:
character (str): character name to select
image: cropped image
Returns:
bool: True if matched and selected, False otherwise
"""
sim, click_button = self.get_character_template(character).match_result(image)
if sim > 0.9:
check_button = self.get_character_check_button(character)
return self._project_character_select(click_button, check_button)
return False
def project_character_select(self, character='manjuu', reset_swipe=False):
"""
Select a role to produce.
Args:
character (str): character name to select
reset_swipe (bool): if drag page to top before selecting
Returns:
bool: if selected
"""
logger.info('Island select role')
ROLE_SORTING.set('Descending', main=self)
logger.info(f'Island select role: {character}')
if reset_swipe:
logger.info('Resetting role page to top')
for _ in range(2):
self.drag_page((0, 350), ISLAND_PROJECT_CHARACTER.area, 0.6)
self.device.screenshot()
image = self.image_crop((0, 0, 1280, 720), copy=False)
if self.match_and_select_character(character, image):
return True
timeout = Timer(5, count=3).start()
count = 0
max_swipe = 2
swipe_count = 0
for _ in self.loop():
if timeout.reached():
self.ui_ensure_management_page()
return False
image = self.image_crop((0, 0, 910, 1280), copy=False)
sim, click_button = self.get_character_template(character).match_result(image)
if sim > 0.9:
check_button = self.get_character_check_button(character)
return self._project_character_select(click_button, check_button)
image = self.image_crop((0, 0, 1280, 720), copy=False)
if self.match_and_select_character(character, image):
return True
if swipe_count < max_swipe:
logger.info(f'Character {character} not found, dragging down to find')
self.drag_page((0, -300), ISLAND_PROJECT_CHARACTER.area, 0.6)
swipe_count += 1
timeout.reset()
else:
name = ' '.join(map(lambda x: x.capitalize(), character.split('_')))
# retry 2 times for character select
if 1 <= count < 3:
logger.info(f'No character {name} was found, try reversed order')
ROLE_SORTING.set('Ascending', main=self)
# select manjuu after 4 trials
elif count >= 3:
logger.info(f'No character {name} was found, use manjuu')
ROLE_SORTING.set('Ascending', main=self)
character = 'manjuu'
count += 1
continue
logger.warning(f'Character {character} not found after {max_swipe} swipes')
return False
def retry_character_select(self, button, secondary_character=None):
"""
Retry selecting a character when primary is not available.
Directly try secondary or manjuu in the current role select page.
Args:
button (Button): project button to click to re-enter (reserved for re-entering from main page)
secondary_character (str): secondary character name to select
Returns:
tuple(bool, str): (if selected, character selected)
"""
# Try secondary character if provided, reset swipe to top before searching
if secondary_character and secondary_character != 'manjuu':
logger.info(f'Trying secondary character: {secondary_character}')
if self.project_character_select(secondary_character, reset_swipe=True):
return True, secondary_character
# Fallback to manjuu directly since page is already at the bottom
logger.info('Falling back to manjuu')
self.device.screenshot()
image = self.image_crop((0, 0, 1280, 720), copy=False)
if self.match_and_select_character('manjuu', image):
return True, 'manjuu'
else:
logger.warning('Manjuu not found')
return False, None
@staticmethod
def get_character_template(character):
@@ -676,7 +726,7 @@ class IslandProjectRun(IslandUI):
if self.island_in_management():
return True
def project_receive_and_start(self, proj, button, character, option, project_id, ensure=True):
def project_receive_and_start(self, proj, button, character, secondary_character, option, project_id, ensure=True):
"""
Receive and start a project is in the current page.
@@ -684,35 +734,64 @@ class IslandProjectRun(IslandUI):
proj (IslandProject): the project to ensure
button (Button): project button to click
character (str): character to select
secondary_character (str): secondary character to select
option (str): option to select
ensure (bool): whether to call ensure_project() after project start
"""
if not self.project_receive(button):
return True
selected_character = character
if not self.project_character_select(character):
logger.warning('Island select role failed due to game bug, retrying')
return False
# Primary character failed, directly try secondary or manjuu in current page
success, selected_character = self.retry_character_select(button, secondary_character)
if not success:
logger.warning('Island select role failed completely, retrying project')
return False
self.character = selected_character
if not self.product_select(option, project_id):
return True
if not self.product_select_confirm():
self.character = 'manjuu'
self.ensure_project(proj)
return False
# Confirm failed (gray button), game has returned to main page
# Retry with secondary or manjuu by re-entering role select page
logger.warning('Product confirm failed, retrying character selection')
if not self.project_receive(button):
return True
success, selected_character = self.retry_character_select(button, secondary_character)
if not success:
self.character = 'manjuu'
self.ensure_project(proj)
return False
self.character = selected_character
# Re-select product and confirm
if not self.product_select(option, project_id):
return True
if not self.product_select_confirm():
self.character = 'manjuu'
self.ensure_project(proj)
return False
self.ui_ensure_management_page()
if ensure:
self.ensure_project(proj)
return True
def island_project_character(self, project: IslandProject):
def island_project_character(self, project: IslandProject, secondary=False):
"""
Args:
project (IslandProject):
secondary (bool): If True, get secondary character config
Returns:
list[str]: a list of options of characters
"""
proj_id = project.id
return [self.config.__getattribute__(f'Island{proj_id}_Character{proj_slot}')
prefix = 'Secondary' if secondary else ''
return [self.config.__getattribute__(f'Island{proj_id}_{prefix}Character{proj_slot}')
for proj_slot in range(1, project.slot + 1)]
def island_project_option(self, project: IslandProject):
@@ -767,17 +846,18 @@ class IslandProjectRun(IslandUI):
end = True
character_config = self.island_project_character(proj)
secondary_character_config = self.island_project_character(proj, secondary=True)
option_config = self.island_project_option(proj)
option_num = len(option_config)
for button, character, option, index in zip(
proj.slot_buttons.buttons, character_config, option_config, range(option_num)):
for button, character, secondary_character, option, index in zip(
proj.slot_buttons.buttons, character_config, secondary_character_config, option_config, range(option_num)):
if option is None:
continue
self.character = character
# retry 3 times because of a game bug
for _ in range(3):
ensure = not end or index != option_num - 1
if self.project_receive_and_start(proj, button, self.character, option, proj.id, ensure):
if self.project_receive_and_start(proj, button, self.character, secondary_character, option, proj.id, ensure):
break
timeout.reset()