1 Commits
Author SHA1 Message Date
YoursFunny 7c33bd42c6 feat(cafe): add invitation 2023-11-27 21:04:52 +08:00
109 changed files with 371 additions and 861 deletions
+1 -1
View File
@@ -12,7 +12,7 @@
The script is still under active development. The following features have been implemented: The script is still under active development. The following features have been implemented:
- [x] **Cafe** Claim rewards / Interact / Invitation / Second floor - [x] **Cafe** Claim rewards / Interact / Second floor
- [x] **Club** Claim AP - [x] **Club** Claim AP
- [x] **Mailbox** Claim rewards - [x] **Mailbox** Claim rewards
- [x] **Bounty** Auto sweep - [x] **Bounty** Auto sweep
+1 -1
View File
@@ -12,7 +12,7 @@
当前脚本还在活跃开发中,已经实现的功能有: 当前脚本还在活跃开发中,已经实现的功能有:
- [x] **咖啡厅** 领取奖励 / 互动 / 邀请 / 第二咖啡厅 - [x] **咖啡厅** 领取奖励 / 互动 / 第二咖啡厅
- [x] **公会** 领取体力 - [x] **公会** 领取体力
- [x] **邮箱** 领取奖励 - [x] **邮箱** 领取奖励
- [x] **悬赏通缉** 自动扫荡 - [x] **悬赏通缉** 自动扫荡
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

+7 -16
View File
@@ -48,10 +48,9 @@
}, },
"Invitation": { "Invitation": {
"Enable": true, "Enable": true,
"WaitingHour": 0,
"Choice": "list_top", "Choice": "list_top",
"Name": null, "Name": null,
"Substitute": false "Substitute": true
} }
}, },
"Circle": { "Circle": {
@@ -81,24 +80,16 @@
"OnError": "skip" "OnError": "skip"
}, },
"Highway": { "Highway": {
"Stage": 0, "Stage": 1,
"Count": 2 "Count": 2
}, },
"DesertRailroad": { "DesertRailroad": {
"Stage": 0, "Stage": 1,
"Count": 2 "Count": 2
}, },
"Schoolhouse": { "Schoolhouse": {
"Stage": 0, "Stage": 1,
"Count": 2 "Count": 2
},
"Road": {
"Stage": 0,
"Count": 0
},
"Mansion": {
"Stage": 0,
"Count": 0
} }
}, },
"Scrimmage": { "Scrimmage": {
@@ -112,15 +103,15 @@
"OnError": "skip" "OnError": "skip"
}, },
"Trinity": { "Trinity": {
"Stage": 0, "Stage": 1,
"Count": 2 "Count": 2
}, },
"Gehenna": { "Gehenna": {
"Stage": 0, "Stage": 1,
"Count": 2 "Count": 2
}, },
"Millennium": { "Millennium": {
"Stage": 0, "Stage": 1,
"Count": 2 "Count": 2
} }
}, },
+10 -75
View File
@@ -211,16 +211,6 @@
"type": "checkbox", "type": "checkbox",
"value": true "value": true
}, },
"WaitingHour": {
"type": "select",
"value": 0,
"option": [
0,
3,
6,
9
]
},
"Choice": { "Choice": {
"type": "select", "type": "select",
"value": "list_top", "value": "list_top",
@@ -235,7 +225,7 @@
}, },
"Substitute": { "Substitute": {
"type": "checkbox", "type": "checkbox",
"value": false "value": true
} }
} }
}, },
@@ -332,9 +322,8 @@
"Highway": { "Highway": {
"Stage": { "Stage": {
"type": "select", "type": "select",
"value": 0, "value": 1,
"option": [ "option": [
0,
1, 1,
2, 2,
3, 3,
@@ -343,8 +332,7 @@
6, 6,
7, 7,
8, 8,
9, 9
10
] ]
}, },
"Count": { "Count": {
@@ -355,9 +343,8 @@
"DesertRailroad": { "DesertRailroad": {
"Stage": { "Stage": {
"type": "select", "type": "select",
"value": 0, "value": 1,
"option": [ "option": [
0,
1, 1,
2, 2,
3, 3,
@@ -366,8 +353,7 @@
6, 6,
7, 7,
8, 8,
9, 9
10
] ]
}, },
"Count": { "Count": {
@@ -378,9 +364,8 @@
"Schoolhouse": { "Schoolhouse": {
"Stage": { "Stage": {
"type": "select", "type": "select",
"value": 0, "value": 1,
"option": [ "option": [
0,
1, 1,
2, 2,
3, 3,
@@ -389,60 +374,13 @@
6, 6,
7, 7,
8, 8,
9, 9
10
] ]
}, },
"Count": { "Count": {
"type": "input", "type": "input",
"value": 2 "value": 2
} }
},
"Road": {
"Stage": {
"type": "select",
"value": 0,
"option": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
]
},
"Count": {
"type": "input",
"value": 0
}
},
"Mansion": {
"Stage": {
"type": "select",
"value": 0,
"option": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
]
},
"Count": {
"type": "input",
"value": 0
}
} }
}, },
"Scrimmage": { "Scrimmage": {
@@ -484,9 +422,8 @@
"Trinity": { "Trinity": {
"Stage": { "Stage": {
"type": "select", "type": "select",
"value": 0, "value": 1,
"option": [ "option": [
0,
1, 1,
2, 2,
3, 3,
@@ -501,9 +438,8 @@
"Gehenna": { "Gehenna": {
"Stage": { "Stage": {
"type": "select", "type": "select",
"value": 0, "value": 1,
"option": [ "option": [
0,
1, 1,
2, 2,
3, 3,
@@ -518,9 +454,8 @@
"Millennium": { "Millennium": {
"Stage": { "Stage": {
"type": "select", "type": "select",
"value": 0, "value": 1,
"option": [ "option": [
0,
1, 1,
2, 2,
3, 3,
+13 -26
View File
@@ -82,16 +82,13 @@ Cafe:
SecondCafe: true SecondCafe: true
Invitation: Invitation:
Enable: true Enable: true
WaitingHour:
value: 0
option: [ 0, 3, 6, 9 ]
Choice: Choice:
value: list_top value: list_top
option: [ list_top, by_name ] option: [ list_top, by_name ]
Name: Name:
value: null value: null
type: textarea type: textarea
Substitute: false Substitute: true
Bounty: Bounty:
OnError: OnError:
@@ -100,29 +97,19 @@ Bounty:
Highway: Highway:
Stage: Stage:
value: 0 value: 1
option: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] option: [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
Count: 2 Count: 2
DesertRailroad: DesertRailroad:
Stage: Stage:
value: 0 value: 1
option: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] option: [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
Count: 2 Count: 2
Schoolhouse: Schoolhouse:
Stage: Stage:
value: 0 value: 1
option: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] option: [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
Count: 2 Count: 2
Road:
Stage:
value: 0
option: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
Count: 0
Mansion:
Stage:
value: 0
option: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
Count: 0
Scrimmage: Scrimmage:
OnError: OnError:
@@ -131,18 +118,18 @@ Scrimmage:
Trinity: Trinity:
Stage: Stage:
value: 0 value: 1
option: [ 0, 1, 2, 3, 4 ] option: [ 1, 2, 3, 4 ]
Count: 2 Count: 2
Gehenna: Gehenna:
Stage: Stage:
value: 0 value: 1
option: [ 0, 1, 2, 3, 4 ] option: [ 1, 2, 3, 4 ]
Count: 2 Count: 2
Millennium: Millennium:
Stage: Stage:
value: 0 value: 1
option: [ 0, 1, 2, 3, 4 ] option: [ 1, 2, 3, 4 ]
Count: 2 Count: 2
TacticalChallenge: TacticalChallenge:
-2
View File
@@ -36,8 +36,6 @@ Daily:
- Highway - Highway
- DesertRailroad - DesertRailroad
- Schoolhouse - Schoolhouse
- Road
- Mansion
Scrimmage: Scrimmage:
- Scheduler - Scheduler
- Scrimmage - Scrimmage
+7 -16
View File
@@ -47,47 +47,38 @@ class GeneratedConfig:
# Group `Invitation` # Group `Invitation`
Invitation_Enable = True Invitation_Enable = True
Invitation_WaitingHour = 0 # 0, 3, 6, 9
Invitation_Choice = 'list_top' # list_top, by_name Invitation_Choice = 'list_top' # list_top, by_name
Invitation_Name = None Invitation_Name = None
Invitation_Substitute = False Invitation_Substitute = True
# Group `Bounty` # Group `Bounty`
Bounty_OnError = 'skip' # stop, skip Bounty_OnError = 'skip' # stop, skip
# Group `Highway` # Group `Highway`
Highway_Stage = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Highway_Stage = 1 # 1, 2, 3, 4, 5, 6, 7, 8, 9
Highway_Count = 2 Highway_Count = 2
# Group `DesertRailroad` # Group `DesertRailroad`
DesertRailroad_Stage = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 DesertRailroad_Stage = 1 # 1, 2, 3, 4, 5, 6, 7, 8, 9
DesertRailroad_Count = 2 DesertRailroad_Count = 2
# Group `Schoolhouse` # Group `Schoolhouse`
Schoolhouse_Stage = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Schoolhouse_Stage = 1 # 1, 2, 3, 4, 5, 6, 7, 8, 9
Schoolhouse_Count = 2 Schoolhouse_Count = 2
# Group `Road`
Road_Stage = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Road_Count = 0
# Group `Mansion`
Mansion_Stage = 0 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Mansion_Count = 0
# Group `Scrimmage` # Group `Scrimmage`
Scrimmage_OnError = 'skip' # stop, skip Scrimmage_OnError = 'skip' # stop, skip
# Group `Trinity` # Group `Trinity`
Trinity_Stage = 0 # 0, 1, 2, 3, 4 Trinity_Stage = 1 # 1, 2, 3, 4
Trinity_Count = 2 Trinity_Count = 2
# Group `Gehenna` # Group `Gehenna`
Gehenna_Stage = 0 # 0, 1, 2, 3, 4 Gehenna_Stage = 1 # 1, 2, 3, 4
Gehenna_Count = 2 Gehenna_Count = 2
# Group `Millennium` # Group `Millennium`
Millennium_Stage = 0 # 0, 1, 2, 3, 4 Millennium_Stage = 1 # 1, 2, 3, 4
Millennium_Count = 2 Millennium_Count = 2
# Group `TacticalChallenge` # Group `TacticalChallenge`
+8 -75
View File
@@ -218,7 +218,7 @@
}, },
"SecondCafe": { "SecondCafe": {
"name": "Second Floor", "name": "Second Floor",
"help": "Enable auto switch to second floor and perform interaction" "help": "JP server only\nEnable auto switch to second floor and perform interaction"
} }
}, },
"Invitation": { "Invitation": {
@@ -228,29 +228,21 @@
}, },
"Enable": { "Enable": {
"name": "Enable", "name": "Enable",
"help": "Enable cafe invitation" "help": ""
},
"WaitingHour": {
"name": "Invitation Condition",
"help": "Choose whether to invite students based on the remaining time before next cafe refresh\nThis is for obtaining maximum student interation and maximum affection when AFK. Recommended option:\n24*7 AFK:\t\t Choose \"If 9 more hours remaining\"\nNormal usage:\t Choose \"Invite immediately\"",
"0": "Invite immediately",
"3": "If 3 more hours remaining",
"6": "If 6 more hours remaining",
"9": "If 9 more hours remaining"
}, },
"Choice": { "Choice": {
"name": "Choose Inviting Student", "name": "Choose Inviting Student",
"help": "Top first student of list: Invite the student at the top first of the list\nBy name: Invite the student with the name you set below", "help": "",
"list_top": "Top first student of list", "list_top": "Top first student of list",
"by_name": "By name" "by_name": "By name"
}, },
"Name": { "Name": {
"name": "Inviting Student Name", "name": "Invited Student Name",
"help": "Fill in the name of the student to be invited. Use in-game text language. Use > to connect multiple students. Example:\nJP: ホシノ(水着) > 御坂美琴 > ユズ\nOVERSEA: Hoshino(Swimsuit) > Yuuka > Kayoko(New Year)" "help": "Fill in the name of the student to be invited. Use in-game text language. Use > to connect multiple students. Example:\nJP: ホシノ(水着) > 御坂美琴 > ユズ\nOVERSEA: Hoshino(Swimsuit) > Yuuka > Kayoko(New Year)"
}, },
"Substitute": { "Substitute": {
"name": "Replace existing student", "name": "Replace existing student",
"help": "Whether to replace the existing student with their alt.\nIf not, try to match the next student" "help": "!TO BE CHANGED!Whether to replace the existing student with another costume.\nIf not, try to match the next student"
} }
}, },
"Bounty": { "Bounty": {
@@ -273,7 +265,6 @@
"Stage": { "Stage": {
"name": "Select Stage", "name": "Select Stage",
"help": "", "help": "",
"0": "Auto select",
"1": "01 - Overpass A", "1": "01 - Overpass A",
"2": "02 - Overpass B", "2": "02 - Overpass B",
"3": "03 - Overpass C", "3": "03 - Overpass C",
@@ -282,8 +273,7 @@
"6": "06 - Overpass F", "6": "06 - Overpass F",
"7": "07 - Overpass G", "7": "07 - Overpass G",
"8": "08 - Overpass H", "8": "08 - Overpass H",
"9": "09 - Overpass I", "9": "09 - Overpass I"
"10": "10 - Overpass J"
}, },
"Count": { "Count": {
"name": "Sweep X times", "name": "Sweep X times",
@@ -298,7 +288,6 @@
"Stage": { "Stage": {
"name": "Select Stage", "name": "Select Stage",
"help": "", "help": "",
"0": "Auto select",
"1": "01 - Abandoned Train A", "1": "01 - Abandoned Train A",
"2": "02 - Abandoned Train B", "2": "02 - Abandoned Train B",
"3": "03 - Abandoned Train C", "3": "03 - Abandoned Train C",
@@ -307,8 +296,7 @@
"6": "06 - Abandoned Train F", "6": "06 - Abandoned Train F",
"7": "07 - Abandoned Train G", "7": "07 - Abandoned Train G",
"8": "08 - Abandoned Train H", "8": "08 - Abandoned Train H",
"9": "09 - Abandoned Train I", "9": "09 - Abandoned Train I"
"10": "10 - Abandoned Train J"
}, },
"Count": { "Count": {
"name": "Sweep X times", "name": "Sweep X times",
@@ -323,7 +311,6 @@
"Stage": { "Stage": {
"name": "Select Stage", "name": "Select Stage",
"help": "", "help": "",
"0": "Auto select",
"1": "01 - Besieged Classroom A", "1": "01 - Besieged Classroom A",
"2": "02 - Besieged Classroom B", "2": "02 - Besieged Classroom B",
"3": "03 - Besieged Classroom C", "3": "03 - Besieged Classroom C",
@@ -332,58 +319,7 @@
"6": "06 - Besieged Classroom F", "6": "06 - Besieged Classroom F",
"7": "07 - Besieged Classroom G", "7": "07 - Besieged Classroom G",
"8": "08 - Besieged Classroom H", "8": "08 - Besieged Classroom H",
"9": "09 - Besieged Classroom I", "9": "09 - Besieged Classroom I"
"10": "10 - Besieged Classroom J"
},
"Count": {
"name": "Sweep X times",
"help": "Sweep the selected stage for X times"
}
},
"Road": {
"_info": {
"name": "Road",
"help": ""
},
"Stage": {
"name": "Select Stage",
"help": "",
"0": "Auto select",
"1": "01 - Burning Road A",
"2": "02 - Burning Road B",
"3": "03 - Burning Road C",
"4": "04 - Burning Road D",
"5": "05 - Burning Road E",
"6": "06 - Burning Road F",
"7": "07 - Burning Road G",
"8": "08 - Burning Road H",
"9": "09 - Burning Road I",
"10": "10 - Burning Road J"
},
"Count": {
"name": "Sweep X times",
"help": "Sweep the selected stage for X times"
}
},
"Mansion": {
"_info": {
"name": "Mansion",
"help": ""
},
"Stage": {
"name": "Select Stage",
"help": "",
"0": "Auto select",
"1": "01 - Historic Mansion A",
"2": "02 - Historic Mansion B",
"3": "03 - Historic Mansion C",
"4": "04 - Historic Mansion D",
"5": "05 - Historic Mansion E",
"6": "06 - Historic Mansion F",
"7": "07 - Historic Mansion G",
"8": "08 - Historic Mansion H",
"9": "09 - Historic Mansion I",
"10": "10 - Historic Mansion J"
}, },
"Count": { "Count": {
"name": "Sweep X times", "name": "Sweep X times",
@@ -410,7 +346,6 @@
"Stage": { "Stage": {
"name": "Select Stage", "name": "Select Stage",
"help": "", "help": "",
"0": "Auto select",
"1": "01 - Trinity A", "1": "01 - Trinity A",
"2": "02 - Trinity B", "2": "02 - Trinity B",
"3": "03 - Trinity C", "3": "03 - Trinity C",
@@ -429,7 +364,6 @@
"Stage": { "Stage": {
"name": "Select Stage", "name": "Select Stage",
"help": "", "help": "",
"0": "Auto select",
"1": "01 - Gehenna A", "1": "01 - Gehenna A",
"2": "02 - Gehenna B", "2": "02 - Gehenna B",
"3": "03 - Gehenna C", "3": "03 - Gehenna C",
@@ -448,7 +382,6 @@
"Stage": { "Stage": {
"name": "Select Stage", "name": "Select Stage",
"help": "", "help": "",
"0": "Auto select",
"1": "01 - Millennium A", "1": "01 - Millennium A",
"2": "02 - Millennium B", "2": "02 - Millennium B",
"3": "03 - Millennium C", "3": "03 - Millennium C",
+8 -75
View File
@@ -218,7 +218,7 @@
}, },
"SecondCafe": { "SecondCafe": {
"name": "第二咖啡厅", "name": "第二咖啡厅",
"help": "自动切换第二咖啡厅进行互动点击" "help": "仅支持日服\n自动切换第二咖啡厅进行互动点击"
} }
}, },
"Invitation": { "Invitation": {
@@ -228,25 +228,17 @@
}, },
"Enable": { "Enable": {
"name": "启用", "name": "启用",
"help": "是否启用咖啡厅邀请功能" "help": ""
},
"WaitingHour": {
"name": "邀请条件",
"help": "根据距离下一次咖啡厅刷新的时长,选择是否邀请学生\n此项设立是为了后台挂机最大化收益,使得邀请券能被最大化利用。推荐选项:\n常驻挂机:\t选择“离下次刷新 9 小时以上”\n非常驻挂机:\t选择“不等待刷新,立即邀请”,或根据自己挂机时长选择",
"0": "不等待刷新,立即邀请",
"3": "离下次刷新 3 小时以上",
"6": "离下次刷新 6 小时以上",
"9": "离下次刷新 9 小时以上"
}, },
"Choice": { "Choice": {
"name": "选择邀请学生", "name": "选择被邀请学生",
"help": "按列表第一个:优先邀请列表中第一个学生,若失败则则尝试下一个\n按名字:优先邀请下方填写学生名的第一个,若失败则尝试下一个", "help": "",
"list_top": "按列表第一个", "list_top": "按列表第一个",
"by_name": "按名字" "by_name": "按名字"
}, },
"Name": { "Name": {
"name": "邀请学生名", "name": "邀请学生名",
"help": "填写要邀请的学生的名字,使用游戏内语言填写,多个学生使用 > 连接。例:\n日服:\tホシノ(水着) > 御坂美琴 > ユズ\n国际服:\tHoshino(Swimsuit) > Yuuka > Kayoko(New Year)" "help": "填写要邀请的学生的名字,使用游戏内语言填写,多个学生使用 > 连接。例:\n日服:ホシノ(水着) > 御坂美琴 > ユズ\n国际服:Hoshino(Swimsuit) > Yuuka > Kayoko(New Year)"
}, },
"Substitute": { "Substitute": {
"name": "是否替换已存在学生", "name": "是否替换已存在学生",
@@ -273,7 +265,6 @@
"Stage": { "Stage": {
"name": "选择关卡", "name": "选择关卡",
"help": "", "help": "",
"0": "自动选择",
"1": "01 - 高架公路 A", "1": "01 - 高架公路 A",
"2": "02 - 高架公路 B", "2": "02 - 高架公路 B",
"3": "03 - 高架公路 C", "3": "03 - 高架公路 C",
@@ -282,8 +273,7 @@
"6": "06 - 高架公路 F", "6": "06 - 高架公路 F",
"7": "07 - 高架公路 G", "7": "07 - 高架公路 G",
"8": "08 - 高架公路 H", "8": "08 - 高架公路 H",
"9": "09 - 高架公路 I", "9": "09 - 高架公路 I"
"10": "10 - 高架公路 J"
}, },
"Count": { "Count": {
"name": "扫荡次数", "name": "扫荡次数",
@@ -298,7 +288,6 @@
"Stage": { "Stage": {
"name": "选择关卡", "name": "选择关卡",
"help": "", "help": "",
"0": "自动选择",
"1": "01 - 被遗弃的列车 A", "1": "01 - 被遗弃的列车 A",
"2": "02 - 被遗弃的列车 B", "2": "02 - 被遗弃的列车 B",
"3": "03 - 被遗弃的列车 C", "3": "03 - 被遗弃的列车 C",
@@ -307,8 +296,7 @@
"6": "06 - 被遗弃的列车 F", "6": "06 - 被遗弃的列车 F",
"7": "07 - 被遗弃的列车 G", "7": "07 - 被遗弃的列车 G",
"8": "08 - 被遗弃的列车 H", "8": "08 - 被遗弃的列车 H",
"9": "09 - 被遗弃的列车 I", "9": "09 - 被遗弃的列车 I"
"10": "10 - 被遗弃的列车 J"
}, },
"Count": { "Count": {
"name": "扫荡次数", "name": "扫荡次数",
@@ -323,7 +311,6 @@
"Stage": { "Stage": {
"name": "选择关卡", "name": "选择关卡",
"help": "", "help": "",
"0": "自动选择",
"1": "01 - 被袭击的教室 A", "1": "01 - 被袭击的教室 A",
"2": "02 - 被袭击的教室 B", "2": "02 - 被袭击的教室 B",
"3": "03 - 被袭击的教室 C", "3": "03 - 被袭击的教室 C",
@@ -332,58 +319,7 @@
"6": "06 - 被袭击的教室 F", "6": "06 - 被袭击的教室 F",
"7": "07 - 被袭击的教室 G", "7": "07 - 被袭击的教室 G",
"8": "08 - 被袭击的教室 H", "8": "08 - 被袭击的教室 H",
"9": "09 - 被袭击的教室 I", "9": "09 - 被袭击的教室 I"
"10": "10 - 被袭击的教室 J"
},
"Count": {
"name": "扫荡次数",
"help": "扫荡所选择关卡 X 次"
}
},
"Road": {
"_info": {
"name": "道路",
"help": ""
},
"Stage": {
"name": "选择关卡",
"help": "",
"0": "自动选择",
"1": "01 - 燃烧道路 A",
"2": "02 - 燃烧道路 B",
"3": "03 - 燃烧道路 C",
"4": "04 - 燃烧道路 D",
"5": "05 - 燃烧道路 E",
"6": "06 - 燃烧道路 F",
"7": "07 - 燃烧道路 G",
"8": "08 - 燃烧道路 H",
"9": "09 - 燃烧道路 I",
"10": "10 - 燃烧道路 J"
},
"Count": {
"name": "扫荡次数",
"help": "扫荡所选择关卡 X 次"
}
},
"Mansion": {
"_info": {
"name": "宅邸",
"help": ""
},
"Stage": {
"name": "选择关卡",
"help": "",
"0": "自动选择",
"1": "01 - 古老宅邸 A",
"2": "02 - 古老宅邸 B",
"3": "03 - 古老宅邸 C",
"4": "04 - 古老宅邸 D",
"5": "05 - 古老宅邸 E",
"6": "06 - 古老宅邸 F",
"7": "07 - 古老宅邸 G",
"8": "08 - 古老宅邸 H",
"9": "09 - 古老宅邸 I",
"10": "10 - 古老宅邸 J"
}, },
"Count": { "Count": {
"name": "扫荡次数", "name": "扫荡次数",
@@ -410,7 +346,6 @@
"Stage": { "Stage": {
"name": "选择关卡", "name": "选择关卡",
"help": "", "help": "",
"0": "自动选择",
"1": "01 - 三一 A", "1": "01 - 三一 A",
"2": "02 - 三一 B", "2": "02 - 三一 B",
"3": "03 - 三一 C", "3": "03 - 三一 C",
@@ -429,7 +364,6 @@
"Stage": { "Stage": {
"name": "选择关卡", "name": "选择关卡",
"help": "", "help": "",
"0": "自动选择",
"1": "01 - 格黑娜 A", "1": "01 - 格黑娜 A",
"2": "02 - 格黑娜 B", "2": "02 - 格黑娜 B",
"3": "03 - 格黑娜 C", "3": "03 - 格黑娜 C",
@@ -448,7 +382,6 @@
"Stage": { "Stage": {
"name": "选择关卡", "name": "选择关卡",
"help": "", "help": "",
"0": "自动选择",
"1": "01 - 千年 A", "1": "01 - 千年 A",
"2": "02 - 千年 B", "2": "02 - 千年 B",
"3": "03 - 千年 C", "3": "03 - 千年 C",
+108 -157
View File
@@ -51,17 +51,17 @@ CAFE_CHECK = ButtonWrapper(
name='CAFE_CHECK', name='CAFE_CHECK',
jp=Button( jp=Button(
file='./assets/jp/base/page/CAFE_CHECK.png', file='./assets/jp/base/page/CAFE_CHECK.png',
area=(108, 11, 182, 36), area=(264, 11, 337, 35),
search=(88, 0, 202, 56), search=(244, 0, 357, 55),
color=(191, 200, 208), color=(188, 197, 205),
button=(108, 11, 182, 36), button=(264, 11, 337, 35),
), ),
en=Button( en=Button(
file='./assets/en/base/page/CAFE_CHECK.png', file='./assets/en/base/page/CAFE_CHECK.png',
area=(106, 12, 167, 36), area=(196, 8, 259, 37),
search=(86, 0, 187, 56), search=(176, 0, 279, 57),
color=(173, 184, 194), color=(188, 197, 206),
button=(106, 12, 167, 36), button=(196, 8, 259, 37),
), ),
) )
CIRCLE_CHECK = ButtonWrapper( CIRCLE_CHECK = ButtonWrapper(
@@ -136,10 +136,10 @@ HOME = ButtonWrapper(
name='HOME', name='HOME',
share=Button( share=Button(
file='./assets/share/base/page/HOME.png', file='./assets/share/base/page/HOME.png',
area=(1224, 10, 1250, 35), area=(1218, 8, 1253, 41),
search=(1204, 0, 1270, 55), search=(1198, 0, 1273, 61),
color=(162, 176, 202), color=(168, 182, 205),
button=(1224, 10, 1250, 35), button=(1218, 8, 1253, 41),
), ),
) )
LOADING_CHECK = ButtonWrapper( LOADING_CHECK = ButtonWrapper(
@@ -171,168 +171,119 @@ MAIL_CHECK = ButtonWrapper(
) )
MAIN_GO_TO_CAFE = ButtonWrapper( MAIN_GO_TO_CAFE = ButtonWrapper(
name='MAIN_GO_TO_CAFE', name='MAIN_GO_TO_CAFE',
jp=Button(
file='./assets/jp/base/page/MAIN_GO_TO_CAFE.png',
area=(86, 636, 112, 674),
search=(66, 616, 132, 694),
color=(177, 223, 246),
button=(86, 636, 112, 674),
),
share=Button( share=Button(
file='./assets/share/base/page/MAIN_GO_TO_CAFE.png', file='./assets/share/base/page/MAIN_GO_TO_CAFE.png',
area=(85, 637, 113, 674), area=(81, 638, 102, 668),
search=(65, 617, 133, 694), search=(61, 618, 122, 688),
color=(178, 224, 246), color=(156, 209, 233),
button=(85, 637, 113, 674), button=(81, 638, 102, 668),
), ),
) )
MAIN_GO_TO_CIRCLE = ButtonWrapper( MAIN_GO_TO_CIRCLE = ButtonWrapper(
name='MAIN_GO_TO_CIRCLE', name='MAIN_GO_TO_CIRCLE',
jp=Button(
file='./assets/jp/base/page/MAIN_GO_TO_CIRCLE.png',
area=(533, 633, 558, 661),
search=(513, 613, 578, 681),
color=(171, 228, 255),
button=(533, 633, 558, 661),
),
share=Button( share=Button(
file='./assets/share/base/page/MAIN_GO_TO_CIRCLE.png', file='./assets/share/base/page/MAIN_GO_TO_CIRCLE.png',
area=(533, 636, 558, 661), area=(540, 631, 583, 660),
search=(513, 616, 578, 681), search=(520, 611, 603, 680),
color=(162, 224, 255), color=(131, 204, 234),
button=(533, 636, 558, 661), button=(540, 631, 583, 660),
), ),
) )
MAIN_GO_TO_CRAFTING = ButtonWrapper( MAIN_GO_TO_CRAFTING = ButtonWrapper(
name='MAIN_GO_TO_CRAFTING', name='MAIN_GO_TO_CRAFTING',
jp=Button(
file='./assets/jp/base/page/MAIN_GO_TO_CRAFTING.png',
area=(643, 632, 669, 664),
search=(623, 612, 689, 684),
color=(210, 237, 252),
button=(643, 632, 669, 664),
),
share=Button( share=Button(
file='./assets/share/base/page/MAIN_GO_TO_CRAFTING.png', file='./assets/share/base/page/MAIN_GO_TO_CRAFTING.png',
area=(644, 636, 666, 665), area=(665, 622, 693, 664),
search=(624, 616, 686, 685), search=(645, 602, 713, 684),
color=(205, 234, 251), color=(192, 229, 241),
button=(644, 636, 666, 665), button=(665, 622, 693, 664),
), ),
) )
MAIN_GO_TO_GACHA = ButtonWrapper( MAIN_GO_TO_GACHA = ButtonWrapper(
name='MAIN_GO_TO_GACHA', name='MAIN_GO_TO_GACHA',
jp=Button(
file='./assets/jp/base/page/MAIN_GO_TO_GACHA.png',
area=(874, 650, 895, 669),
search=(854, 630, 915, 689),
color=(158, 228, 254),
button=(874, 650, 895, 669),
),
share=Button( share=Button(
file='./assets/share/base/page/MAIN_GO_TO_GACHA.png', file='./assets/share/base/page/MAIN_GO_TO_GACHA.png',
area=(871, 655, 896, 674), area=(900, 623, 924, 670),
search=(851, 635, 916, 694), search=(880, 603, 944, 690),
color=(139, 221, 249), color=(157, 219, 241),
button=(871, 655, 896, 674), button=(900, 623, 924, 670),
), ),
) )
MAIN_GO_TO_MAIL = ButtonWrapper( MAIN_GO_TO_MAIL = ButtonWrapper(
name='MAIN_GO_TO_MAIL', name='MAIN_GO_TO_MAIL',
share=Button( share=Button(
file='./assets/share/base/page/MAIN_GO_TO_MAIL.png', file='./assets/share/base/page/MAIN_GO_TO_MAIL.png',
area=(1144, 27, 1165, 44), area=(1130, 29, 1156, 49),
search=(1124, 7, 1185, 64), search=(1110, 9, 1176, 69),
color=(102, 125, 168), color=(94, 121, 166),
button=(1144, 27, 1165, 44), button=(1130, 29, 1156, 49),
), ),
) )
MAIN_GO_TO_MOMOTALK = ButtonWrapper( MAIN_GO_TO_MOMOTALK = ButtonWrapper(
name='MAIN_GO_TO_MOMOTALK', name='MAIN_GO_TO_MOMOTALK',
share=Button( share=Button(
file='./assets/share/base/page/MAIN_GO_TO_MOMOTALK.png', file='./assets/share/base/page/MAIN_GO_TO_MOMOTALK.png',
area=(125, 118, 146, 151), area=(154, 134, 177, 158),
search=(105, 98, 166, 171), search=(134, 114, 197, 178),
color=(244, 200, 211), color=(255, 219, 227),
button=(125, 118, 146, 151), button=(154, 134, 177, 158),
), ),
) )
MAIN_GO_TO_PURCHASE = ButtonWrapper( MAIN_GO_TO_PURCHASE = ButtonWrapper(
name='MAIN_GO_TO_PURCHASE', name='MAIN_GO_TO_PURCHASE',
share=Button( share=Button(
file='./assets/share/base/page/MAIN_GO_TO_PURCHASE.png', file='./assets/share/base/page/MAIN_GO_TO_PURCHASE.png',
area=(122, 209, 148, 243), area=(148, 204, 183, 253),
search=(102, 189, 168, 263), search=(128, 184, 203, 273),
color=(190, 222, 246), color=(172, 214, 239),
button=(122, 209, 148, 243), button=(148, 204, 183, 253),
), ),
) )
MAIN_GO_TO_SCHEDULE = ButtonWrapper( MAIN_GO_TO_SCHEDULE = ButtonWrapper(
name='MAIN_GO_TO_SCHEDULE', name='MAIN_GO_TO_SCHEDULE',
jp=Button(
file='./assets/jp/base/page/MAIN_GO_TO_SCHEDULE.png',
area=(197, 637, 216, 668),
search=(177, 617, 236, 688),
color=(181, 224, 241),
button=(197, 637, 216, 668),
),
share=Button( share=Button(
file='./assets/share/base/page/MAIN_GO_TO_SCHEDULE.png', file='./assets/share/base/page/MAIN_GO_TO_SCHEDULE.png',
area=(196, 650, 225, 670), area=(194, 638, 216, 672),
search=(176, 630, 245, 690), search=(174, 618, 236, 692),
color=(196, 228, 242), color=(149, 194, 222),
button=(196, 650, 225, 670), button=(194, 638, 216, 672),
), ),
) )
MAIN_GO_TO_SHOP = ButtonWrapper( MAIN_GO_TO_SHOP = ButtonWrapper(
name='MAIN_GO_TO_SHOP', name='MAIN_GO_TO_SHOP',
jp=Button(
file='./assets/jp/base/page/MAIN_GO_TO_SHOP.png',
area=(753, 632, 787, 668),
search=(733, 612, 807, 688),
color=(167, 220, 247),
button=(753, 632, 787, 668),
),
share=Button( share=Button(
file='./assets/share/base/page/MAIN_GO_TO_SHOP.png', file='./assets/share/base/page/MAIN_GO_TO_SHOP.png',
area=(750, 633, 788, 666), area=(773, 630, 816, 667),
search=(730, 613, 808, 686), search=(753, 610, 836, 687),
color=(168, 220, 246), color=(146, 208, 235),
button=(750, 633, 788, 666), button=(773, 630, 816, 667),
), ),
) )
MAIN_GO_TO_TASK = ButtonWrapper( MAIN_GO_TO_TASK = ButtonWrapper(
name='MAIN_GO_TO_TASK', name='MAIN_GO_TO_TASK',
jp=Button(
file='./assets/jp/base/page/MAIN_GO_TO_TASK.png',
area=(30, 214, 55, 248),
search=(10, 194, 75, 268),
color=(186, 218, 245),
button=(30, 214, 55, 248),
),
share=Button( share=Button(
file='./assets/share/base/page/MAIN_GO_TO_TASK.png', file='./assets/share/base/page/MAIN_GO_TO_TASK.png',
area=(37, 216, 60, 247), area=(52, 220, 78, 248),
search=(17, 196, 80, 267), search=(32, 200, 98, 268),
color=(195, 225, 248), color=(226, 207, 203),
button=(37, 216, 60, 247), button=(52, 220, 78, 248),
), ),
) )
MAIN_GO_TO_WORK = ButtonWrapper( MAIN_GO_TO_WORK = ButtonWrapper(
name='MAIN_GO_TO_WORK', name='MAIN_GO_TO_WORK',
jp=Button( jp=Button(
file='./assets/jp/base/page/MAIN_GO_TO_WORK.png', file='./assets/jp/base/page/MAIN_GO_TO_WORK.png',
area=(1167, 668, 1222, 688), area=(1167, 605, 1241, 632),
search=(1147, 648, 1242, 708), search=(1147, 585, 1261, 652),
color=(141, 156, 174), color=(135, 149, 169),
button=(1167, 668, 1222, 688), button=(1167, 605, 1241, 632),
), ),
en=Button( en=Button(
file='./assets/en/base/page/MAIN_GO_TO_WORK.png', file='./assets/en/base/page/MAIN_GO_TO_WORK.png',
area=(1155, 669, 1250, 690), area=(1127, 605, 1250, 637),
search=(1135, 649, 1270, 710), search=(1107, 585, 1270, 657),
color=(116, 136, 159), color=(90, 112, 141),
button=(1155, 669, 1250, 690), button=(1127, 605, 1250, 637),
), ),
) )
MISSION_CHECK = ButtonWrapper( MISSION_CHECK = ButtonWrapper(
@@ -495,101 +446,101 @@ WORK_GO_TO_BOUNTY = ButtonWrapper(
name='WORK_GO_TO_BOUNTY', name='WORK_GO_TO_BOUNTY',
jp=Button( jp=Button(
file='./assets/jp/base/page/WORK_GO_TO_BOUNTY.png', file='./assets/jp/base/page/WORK_GO_TO_BOUNTY.png',
area=(679, 401, 741, 417), area=(669, 412, 765, 436),
search=(659, 381, 761, 437), search=(649, 392, 785, 456),
color=(155, 164, 186), color=(165, 181, 208),
button=(679, 401, 741, 417), button=(669, 412, 765, 436),
), ),
en=Button( en=Button(
file='./assets/en/base/page/WORK_GO_TO_BOUNTY.png', file='./assets/en/base/page/WORK_GO_TO_BOUNTY.png',
area=(679, 402, 736, 421), area=(671, 409, 760, 440),
search=(659, 382, 756, 441), search=(651, 389, 780, 460),
color=(188, 196, 211), color=(183, 202, 227),
button=(679, 402, 736, 421), button=(671, 409, 760, 440),
), ),
) )
WORK_GO_TO_COMMISSIONS = ButtonWrapper( WORK_GO_TO_COMMISSIONS = ButtonWrapper(
name='WORK_GO_TO_COMMISSIONS', name='WORK_GO_TO_COMMISSIONS',
jp=Button( jp=Button(
file='./assets/jp/base/page/WORK_GO_TO_COMMISSIONS.png', file='./assets/jp/base/page/WORK_GO_TO_COMMISSIONS.png',
area=(661, 504, 724, 521), area=(655, 494, 751, 518),
search=(641, 484, 744, 541), search=(635, 474, 771, 538),
color=(155, 163, 184), color=(165, 179, 204),
button=(661, 504, 724, 521), button=(655, 494, 751, 518),
), ),
en=Button( en=Button(
file='./assets/en/base/page/WORK_GO_TO_COMMISSIONS.png', file='./assets/en/base/page/WORK_GO_TO_COMMISSIONS.png',
area=(661, 504, 762, 520), area=(656, 494, 803, 517),
search=(641, 484, 782, 540), search=(636, 474, 823, 537),
color=(169, 178, 195), color=(192, 204, 221),
button=(661, 504, 762, 520), button=(656, 494, 803, 517),
), ),
) )
WORK_GO_TO_MISSION = ButtonWrapper( WORK_GO_TO_MISSION = ButtonWrapper(
name='WORK_GO_TO_MISSION', name='WORK_GO_TO_MISSION',
jp=Button( jp=Button(
file='./assets/jp/base/page/WORK_GO_TO_MISSION.png', file='./assets/jp/base/page/WORK_GO_TO_MISSION.png',
area=(703, 231, 742, 252), area=(720, 160, 803, 199),
search=(683, 211, 762, 272), search=(700, 140, 823, 219),
color=(144, 158, 184), color=(165, 178, 204),
button=(703, 231, 742, 252), button=(720, 160, 803, 199),
), ),
en=Button( en=Button(
file='./assets/en/base/page/WORK_GO_TO_MISSION.png', file='./assets/en/base/page/WORK_GO_TO_MISSION.png',
area=(712, 221, 819, 247), area=(720, 160, 871, 206),
search=(692, 201, 839, 267), search=(700, 140, 891, 226),
color=(140, 162, 190), color=(192, 204, 221),
button=(712, 221, 819, 247), button=(720, 160, 871, 206),
), ),
) )
WORK_GO_TO_SCHOOL_EXCHANGE = ButtonWrapper( WORK_GO_TO_SCHOOL_EXCHANGE = ButtonWrapper(
name='WORK_GO_TO_SCHOOL_EXCHANGE', name='WORK_GO_TO_SCHOOL_EXCHANGE',
jp=Button( jp=Button(
file='./assets/jp/base/page/WORK_GO_TO_SCHOOL_EXCHANGE.png', file='./assets/jp/base/page/WORK_GO_TO_SCHOOL_EXCHANGE.png',
area=(642, 606, 721, 624), area=(641, 575, 758, 599),
search=(622, 586, 741, 644), search=(621, 555, 778, 619),
color=(167, 174, 192), color=(165, 179, 204),
button=(642, 606, 721, 624), button=(641, 575, 758, 599),
), ),
en=Button( en=Button(
file='./assets/en/base/page/WORK_GO_TO_SCHOOL_EXCHANGE.png', file='./assets/en/base/page/WORK_GO_TO_SCHOOL_EXCHANGE.png',
area=(642, 607, 729, 627), area=(643, 572, 778, 602),
search=(622, 587, 749, 647), search=(623, 552, 798, 622),
color=(196, 200, 211), color=(190, 203, 221),
button=(642, 607, 729, 627), button=(643, 572, 778, 602),
), ),
) )
WORK_GO_TO_STORY = ButtonWrapper( WORK_GO_TO_STORY = ButtonWrapper(
name='WORK_GO_TO_STORY', name='WORK_GO_TO_STORY',
jp=Button( jp=Button(
file='./assets/jp/base/page/WORK_GO_TO_STORY.png', file='./assets/jp/base/page/WORK_GO_TO_STORY.png',
area=(1074, 232, 1169, 251), area=(995, 163, 1032, 197),
search=(1054, 212, 1189, 271), search=(975, 143, 1052, 217),
color=(202, 207, 220), color=(191, 201, 219),
button=(1074, 232, 1169, 251), button=(995, 163, 1032, 197),
), ),
en=Button( en=Button(
file='./assets/en/base/page/WORK_GO_TO_STORY.png', file='./assets/en/base/page/WORK_GO_TO_STORY.png',
area=(992, 221, 1075, 255), area=(994, 159, 1109, 211),
search=(972, 201, 1095, 275), search=(974, 139, 1129, 231),
color=(192, 198, 213), color=(208, 215, 228),
button=(992, 221, 1075, 255), button=(994, 159, 1109, 211),
), ),
) )
WORK_GO_TO_TACTICAL_CHALLENGE = ButtonWrapper( WORK_GO_TO_TACTICAL_CHALLENGE = ButtonWrapper(
name='WORK_GO_TO_TACTICAL_CHALLENGE', name='WORK_GO_TO_TACTICAL_CHALLENGE',
jp=Button( jp=Button(
file='./assets/jp/base/page/WORK_GO_TO_TACTICAL_CHALLENGE.png', file='./assets/jp/base/page/WORK_GO_TO_TACTICAL_CHALLENGE.png',
area=(821, 600, 911, 620), area=(1012, 535, 1151, 562),
search=(801, 580, 931, 640), search=(992, 515, 1171, 582),
color=(156, 164, 185), color=(159, 174, 200),
button=(821, 600, 911, 620), button=(1012, 535, 1151, 562),
), ),
en=Button( en=Button(
file='./assets/en/base/page/WORK_GO_TO_TACTICAL_CHALLENGE.png', file='./assets/en/base/page/WORK_GO_TO_TACTICAL_CHALLENGE.png',
area=(818, 608, 923, 623), area=(1034, 435, 1162, 466),
search=(798, 588, 943, 643), search=(1014, 415, 1182, 486),
color=(198, 202, 215), color=(179, 199, 221),
button=(818, 608, 923, 623), button=(1034, 435, 1162, 466),
), ),
) )
+1 -1
View File
@@ -69,7 +69,7 @@ class Page:
# Main Page # Main Page
page_main = Page(MAIN_GO_TO_TASK) page_main = Page(MAIN_GO_TO_PURCHASE)
# Cafe # Cafe
page_cafe = Page(CAFE_CHECK) page_cafe = Page(CAFE_CHECK)
+8 -52
View File
@@ -54,28 +54,6 @@ CHECK_HIGHWAY = ButtonWrapper(
button=(104, 143, 391, 188), button=(104, 143, 391, 188),
), ),
) )
CHECK_MANSION = ButtonWrapper(
name='CHECK_MANSION',
jp=Button(
file='./assets/jp/bounty/CHECK_MANSION.png',
area=(108, 148, 313, 178),
search=(88, 128, 333, 198),
color=(167, 173, 178),
button=(108, 148, 313, 178),
),
en=None,
)
CHECK_ROAD = ButtonWrapper(
name='CHECK_ROAD',
jp=Button(
file='./assets/jp/bounty/CHECK_ROAD.png',
area=(108, 148, 313, 178),
search=(88, 128, 333, 198),
color=(168, 175, 179),
button=(108, 148, 313, 178),
),
en=None,
)
CHECK_SCHOOLHOUSE = ButtonWrapper( CHECK_SCHOOLHOUSE = ButtonWrapper(
name='CHECK_SCHOOLHOUSE', name='CHECK_SCHOOLHOUSE',
jp=Button( jp=Button(
@@ -114,10 +92,10 @@ SELECT_DESERT_RAILROAD = ButtonWrapper(
name='SELECT_DESERT_RAILROAD', name='SELECT_DESERT_RAILROAD',
jp=Button( jp=Button(
file='./assets/jp/bounty/SELECT_DESERT_RAILROAD.png', file='./assets/jp/bounty/SELECT_DESERT_RAILROAD.png',
area=(1071, 290, 1219, 321), area=(1066, 271, 1224, 311),
search=(1051, 270, 1239, 341), search=(1046, 251, 1244, 331),
color=(155, 166, 181), color=(178, 188, 199),
button=(1071, 290, 1219, 321), button=(1066, 271, 1224, 311),
), ),
en=Button( en=Button(
file='./assets/en/bounty/SELECT_DESERT_RAILROAD.png', file='./assets/en/bounty/SELECT_DESERT_RAILROAD.png',
@@ -144,36 +122,14 @@ SELECT_HIGHWAY = ButtonWrapper(
button=(1073, 167, 1223, 202), button=(1073, 167, 1223, 202),
), ),
) )
SELECT_MANSION = ButtonWrapper(
name='SELECT_MANSION',
jp=Button(
file='./assets/jp/bounty/SELECT_MANSION.png',
area=(1156, 657, 1221, 688),
search=(1136, 637, 1241, 708),
color=(145, 158, 175),
button=(1156, 657, 1221, 688),
),
en=None,
)
SELECT_ROAD = ButtonWrapper(
name='SELECT_ROAD',
jp=Button(
file='./assets/jp/bounty/SELECT_ROAD.png',
area=(1156, 535, 1219, 565),
search=(1136, 515, 1239, 585),
color=(146, 159, 175),
button=(1156, 535, 1219, 565),
),
en=None,
)
SELECT_SCHOOLHOUSE = ButtonWrapper( SELECT_SCHOOLHOUSE = ButtonWrapper(
name='SELECT_SCHOOLHOUSE', name='SELECT_SCHOOLHOUSE',
jp=Button( jp=Button(
file='./assets/jp/bounty/SELECT_SCHOOLHOUSE.png', file='./assets/jp/bounty/SELECT_SCHOOLHOUSE.png',
area=(1157, 412, 1220, 443), area=(1154, 381, 1223, 417),
search=(1137, 392, 1240, 463), search=(1134, 361, 1243, 437),
color=(157, 170, 185), color=(173, 185, 198),
button=(1157, 412, 1220, 443), button=(1154, 381, 1223, 417),
), ),
en=Button( en=Button(
file='./assets/en/bounty/SELECT_SCHOOLHOUSE.png', file='./assets/en/bounty/SELECT_SCHOOLHOUSE.png',
+4 -6
View File
@@ -21,12 +21,10 @@ class BountyStatus(Flag):
class Bounty(BountyUI): class Bounty(BountyUI):
@property @property
def bounty_info(self): def bounty_info(self):
bounty = (SELECT_HIGHWAY, SELECT_DESERT_RAILROAD, SELECT_SCHOOLHOUSE, SELECT_ROAD, SELECT_MANSION) bounty = (SELECT_HIGHWAY, SELECT_DESERT_RAILROAD, SELECT_SCHOOLHOUSE)
check = (CHECK_HIGHWAY, CHECK_DESERT_RAILROAD, CHECK_SCHOOLHOUSE, CHECK_ROAD, CHECK_MANSION) check = (CHECK_HIGHWAY, CHECK_DESERT_RAILROAD, CHECK_SCHOOLHOUSE)
stage = (self.config.Highway_Stage, self.config.DesertRailroad_Stage, self.config.Schoolhouse_Stage, stage = (self.config.Highway_Stage, self.config.DesertRailroad_Stage, self.config.Schoolhouse_Stage)
self.config.Road_Stage, self.config.Mansion_Stage) count = (self.config.Highway_Count, self.config.DesertRailroad_Count, self.config.Schoolhouse_Count)
count = (self.config.Highway_Count, self.config.DesertRailroad_Count, self.config.Schoolhouse_Count,
self.config.Road_Count, self.config.Mansion_Count)
info = zip(bounty, check, stage, count) info = zip(bounty, check, stage, count)
return filter(lambda x: x[3] > 0, info) return filter(lambda x: x[3] > 0, info)
-2
View File
@@ -22,8 +22,6 @@ class BountyUI(UI):
return False return False
def enter_stage(self, index: int) -> bool: def enter_stage(self, index: int) -> bool:
if not index:
index = BOUNTY_LIST.insight_max_sweepable_index(self)
if BOUNTY_LIST.select_index_enter(self, index): if BOUNTY_LIST.select_index_enter(self, index):
return True return True
return False return False
+97 -129
View File
@@ -27,68 +27,90 @@ CAFE_FIRST = ButtonWrapper(
name='CAFE_FIRST', name='CAFE_FIRST',
jp=Button( jp=Button(
file='./assets/jp/cafe/CAFE_FIRST.png', file='./assets/jp/cafe/CAFE_FIRST.png',
area=(96, 92, 111, 110), area=(82, 152, 136, 175),
search=(76, 72, 131, 130), search=(62, 132, 156, 195),
color=(185, 192, 200), color=(111, 127, 147),
button=(96, 92, 111, 110), button=(82, 152, 136, 175),
), ),
en=Button( en=Button(
file='./assets/en/cafe/CAFE_FIRST.png', file='./assets/en/cafe/CAFE_FIRST.png',
area=(205, 96, 215, 107), area=(82, 152, 136, 175),
search=(185, 76, 235, 127), search=(62, 132, 156, 195),
color=(176, 184, 194), color=(111, 127, 147),
button=(205, 96, 215, 107), button=(82, 152, 136, 175),
), ),
) )
CAFE_INVITE = ButtonWrapper( CAFE_INVITE = ButtonWrapper(
name='CAFE_INVITE', name='CAFE_INVITE',
jp=Button( jp=Button(
file='./assets/jp/cafe/CAFE_INVITE.png', file='./assets/jp/cafe/CAFE_INVITE.png',
area=(870, 637, 903, 663), area=(816, 635, 845, 655),
search=(850, 617, 923, 683), search=(796, 615, 865, 675),
color=(253, 217, 235), color=(173, 182, 192),
button=(870, 637, 903, 663), button=(816, 635, 845, 655),
),
en=Button(
file='./assets/en/cafe/CAFE_INVITE.png',
area=(870, 637, 903, 663),
search=(850, 617, 923, 683),
color=(253, 217, 235),
button=(870, 637, 903, 663),
), ),
en=None,
) )
CAFE_INVITED = ButtonWrapper( CAFE_INVITED = ButtonWrapper(
name='CAFE_INVITED', name='CAFE_INVITED',
jp=Button( jp=Button(
file='./assets/jp/cafe/CAFE_INVITED.png', file='./assets/jp/cafe/CAFE_INVITED.png',
area=(870, 637, 903, 663), area=(815, 633, 847, 657),
search=(850, 617, 923, 683), search=(795, 613, 867, 677),
color=(111, 109, 109), color=(144, 144, 146),
button=(870, 637, 903, 663), button=(815, 633, 847, 657),
),
en=Button(
file='./assets/en/cafe/CAFE_INVITED.png',
area=(870, 637, 903, 663),
search=(850, 617, 923, 683),
color=(111, 109, 109),
button=(870, 637, 903, 663),
), ),
en=None,
) )
CAFE_SECOND = ButtonWrapper( CAFE_SECOND = ButtonWrapper(
name='CAFE_SECOND', name='CAFE_SECOND',
jp=Button( jp=Button(
file='./assets/jp/cafe/CAFE_SECOND.png', file='./assets/jp/cafe/CAFE_SECOND.png',
area=(99, 92, 108, 110), area=(219, 152, 279, 175),
search=(79, 72, 128, 130), search=(199, 132, 299, 195),
color=(193, 200, 209), color=(110, 126, 146),
button=(99, 92, 108, 110), button=(219, 152, 279, 175),
), ),
en=Button( en=Button(
file='./assets/en/cafe/CAFE_SECOND.png', file='./assets/en/cafe/CAFE_SECOND.png',
area=(207, 96, 214, 107), area=(219, 152, 279, 175),
search=(187, 76, 234, 127), search=(199, 132, 299, 195),
color=(174, 182, 192), color=(110, 126, 146),
button=(207, 96, 214, 107), button=(219, 152, 279, 175),
),
)
CHANGE_CAFE_NOT_SELECTED = ButtonWrapper(
name='CHANGE_CAFE_NOT_SELECTED',
jp=Button(
file='./assets/jp/cafe/CHANGE_CAFE_NOT_SELECTED.png',
area=(84, 89, 178, 109),
search=(64, 69, 198, 129),
color=(185, 193, 203),
button=(84, 89, 178, 109),
),
en=Button(
file='./assets/en/cafe/CHANGE_CAFE_NOT_SELECTED.png',
area=(84, 89, 178, 109),
search=(64, 69, 198, 129),
color=(185, 193, 203),
button=(84, 89, 178, 109),
),
)
CHANGE_CAFE_SELECTED = ButtonWrapper(
name='CHANGE_CAFE_SELECTED',
jp=Button(
file='./assets/jp/cafe/CHANGE_CAFE_SELECTED.png',
area=(40, 87, 191, 112),
search=(20, 67, 211, 132),
color=(82, 105, 130),
button=(40, 87, 191, 112),
),
en=Button(
file='./assets/en/cafe/CHANGE_CAFE_SELECTED.png',
area=(40, 87, 191, 112),
search=(20, 67, 211, 132),
color=(82, 105, 130),
button=(40, 87, 191, 112),
), ),
) )
CHECK_MOMOTALK = ButtonWrapper( CHECK_MOMOTALK = ButtonWrapper(
@@ -100,29 +122,23 @@ CHECK_MOMOTALK = ButtonWrapper(
color=(253, 203, 212), color=(253, 203, 212),
button=(421, 83, 447, 108), button=(421, 83, 447, 108),
), ),
en=Button( en=None,
file='./assets/en/cafe/CHECK_MOMOTALK.png',
area=(421, 83, 447, 108),
search=(401, 63, 467, 128),
color=(253, 203, 212),
button=(421, 83, 447, 108),
),
) )
CHECK_REWARD = ButtonWrapper( CHECK_REWARD = ButtonWrapper(
name='CHECK_REWARD', name='CHECK_REWARD',
jp=Button( jp=Button(
file='./assets/jp/cafe/CHECK_REWARD.png', file='./assets/jp/cafe/CHECK_REWARD.png',
area=(1120, 635, 1166, 651), area=(1095, 621, 1146, 637),
search=(1100, 615, 1186, 671), search=(1075, 601, 1166, 657),
color=(79, 102, 127), color=(82, 105, 129),
button=(1109, 627, 1239, 691), button=(1086, 607, 1225, 685),
), ),
en=Button( en=Button(
file='./assets/en/cafe/CHECK_REWARD.png', file='./assets/en/cafe/CHECK_REWARD.png',
area=(1116, 636, 1218, 654), area=(1090, 613, 1229, 644),
search=(1096, 616, 1238, 674), search=(1070, 593, 1249, 664),
color=(77, 100, 125), color=(64, 88, 115),
button=(1113, 625, 1239, 692), button=(1086, 611, 1229, 685),
), ),
) )
CLICKABLE_TEMPLATE = ButtonWrapper( CLICKABLE_TEMPLATE = ButtonWrapper(
@@ -146,10 +162,10 @@ GET_REWARD = ButtonWrapper(
), ),
en=Button( en=Button(
file='./assets/en/cafe/GET_REWARD.png', file='./assets/en/cafe/GET_REWARD.png',
area=(593, 506, 687, 548), area=(581, 503, 692, 536),
search=(573, 486, 707, 568), search=(561, 483, 712, 556),
color=(211, 193, 64), color=(208, 190, 63),
button=(543, 492, 736, 564), button=(539, 491, 741, 555),
), ),
) )
GET_REWARD_CLOSE = ButtonWrapper( GET_REWARD_CLOSE = ButtonWrapper(
@@ -163,10 +179,10 @@ GET_REWARD_CLOSE = ButtonWrapper(
), ),
en=Button( en=Button(
file='./assets/en/cafe/GET_REWARD_CLOSE.png', file='./assets/en/cafe/GET_REWARD_CLOSE.png',
area=(968, 132, 997, 162), area=(883, 134, 926, 178),
search=(948, 112, 1017, 182), search=(863, 114, 946, 198),
color=(187, 193, 201), color=(215, 220, 224),
button=(968, 132, 997, 162), button=(883, 134, 926, 178),
), ),
) )
GOT_REWARD = ButtonWrapper( GOT_REWARD = ButtonWrapper(
@@ -180,10 +196,10 @@ GOT_REWARD = ButtonWrapper(
), ),
en=Button( en=Button(
file='./assets/en/cafe/GOT_REWARD.png', file='./assets/en/cafe/GOT_REWARD.png',
area=(544, 493, 735, 563), area=(543, 489, 741, 558),
search=(524, 473, 755, 583), search=(523, 469, 761, 578),
color=(213, 213, 212), color=(211, 212, 212),
button=(544, 493, 735, 563), button=(543, 489, 741, 558),
), ),
) )
INVENTORY = ButtonWrapper( INVENTORY = ButtonWrapper(
@@ -212,13 +228,7 @@ INVITE_CONFIRM = ButtonWrapper(
color=(152, 164, 177), color=(152, 164, 177),
button=(665, 471, 870, 533), button=(665, 471, 870, 533),
), ),
en=Button( en=None,
file='./assets/en/cafe/INVITE_CONFIRM.png',
area=(592, 149, 689, 176),
search=(572, 129, 709, 196),
color=(169, 179, 191),
button=(664, 470, 872, 534),
),
) )
INVITE_IN_SECOND = ButtonWrapper( INVITE_IN_SECOND = ButtonWrapper(
name='INVITE_IN_SECOND', name='INVITE_IN_SECOND',
@@ -229,13 +239,7 @@ INVITE_IN_SECOND = ButtonWrapper(
color=(166, 177, 188), color=(166, 177, 188),
button=(482, 147, 799, 177), button=(482, 147, 799, 177),
), ),
en=Button( en=None,
file='./assets/en/cafe/INVITE_IN_SECOND.png',
area=(482, 147, 799, 177),
search=(462, 127, 819, 197),
color=(166, 177, 188),
button=(482, 147, 799, 177),
),
) )
INVITE_IN_SECOND_CLOSE = ButtonWrapper( INVITE_IN_SECOND_CLOSE = ButtonWrapper(
name='INVITE_IN_SECOND_CLOSE', name='INVITE_IN_SECOND_CLOSE',
@@ -246,13 +250,7 @@ INVITE_IN_SECOND_CLOSE = ButtonWrapper(
color=(180, 189, 198), color=(180, 189, 198),
button=(874, 150, 900, 176), button=(874, 150, 900, 176),
), ),
en=Button( en=None,
file='./assets/en/cafe/INVITE_IN_SECOND_CLOSE.png',
area=(874, 150, 900, 176),
search=(854, 130, 920, 196),
color=(180, 189, 198),
button=(874, 150, 900, 176),
),
) )
INVITE_SUBSTITUTE = ButtonWrapper( INVITE_SUBSTITUTE = ButtonWrapper(
name='INVITE_SUBSTITUTE', name='INVITE_SUBSTITUTE',
@@ -263,13 +261,7 @@ INVITE_SUBSTITUTE = ButtonWrapper(
color=(154, 166, 179), color=(154, 166, 179),
button=(673, 478, 858, 541), button=(673, 478, 858, 541),
), ),
en=Button( en=None,
file='./assets/en/cafe/INVITE_SUBSTITUTE.png',
area=(506, 157, 775, 186),
search=(486, 137, 795, 206),
color=(176, 186, 196),
button=(673, 477, 857, 542),
),
) )
INVITE_SUBSTITUTE_CLOSE = ButtonWrapper( INVITE_SUBSTITUTE_CLOSE = ButtonWrapper(
name='INVITE_SUBSTITUTE_CLOSE', name='INVITE_SUBSTITUTE_CLOSE',
@@ -280,13 +272,7 @@ INVITE_SUBSTITUTE_CLOSE = ButtonWrapper(
color=(180, 189, 199), color=(180, 189, 199),
button=(867, 158, 893, 184), button=(867, 158, 893, 184),
), ),
en=Button( en=None,
file='./assets/en/cafe/INVITE_SUBSTITUTE_CLOSE.png',
area=(867, 158, 893, 184),
search=(847, 138, 913, 204),
color=(180, 189, 199),
button=(867, 158, 893, 184),
),
) )
MOMOTALK_CLOSE = ButtonWrapper( MOMOTALK_CLOSE = ButtonWrapper(
name='MOMOTALK_CLOSE', name='MOMOTALK_CLOSE',
@@ -314,13 +300,7 @@ MOMOTALK_INVITE = ButtonWrapper(
color=(90, 163, 195), color=(90, 163, 195),
button=(764, 211, 809, 234), button=(764, 211, 809, 234),
), ),
en=Button( en=None,
file='./assets/en/cafe/MOMOTALK_INVITE.png',
area=(755, 210, 817, 233),
search=(735, 190, 837, 253),
color=(98, 179, 211),
button=(755, 210, 817, 233),
),
) )
MOMOTALK_ITEM = ButtonWrapper( MOMOTALK_ITEM = ButtonWrapper(
name='MOMOTALK_ITEM', name='MOMOTALK_ITEM',
@@ -331,29 +311,23 @@ MOMOTALK_ITEM = ButtonWrapper(
color=(203, 230, 240), color=(203, 230, 240),
button=(489, 193, 864, 259), button=(489, 193, 864, 259),
), ),
en=Button( en=None,
file='./assets/en/cafe/MOMOTALK_ITEM.png',
area=(489, 193, 864, 259),
search=(469, 173, 884, 279),
color=(203, 230, 240),
button=(489, 193, 864, 259),
),
) )
OCR_CAFE = ButtonWrapper( OCR_CAFE = ButtonWrapper(
name='OCR_CAFE', name='OCR_CAFE',
jp=Button( jp=Button(
file='./assets/jp/cafe/OCR_CAFE.png', file='./assets/jp/cafe/OCR_CAFE.png',
area=(1127, 657, 1219, 682), area=(1103, 642, 1202, 672),
search=(1107, 637, 1239, 702), search=(1083, 622, 1222, 692),
color=(93, 112, 134), color=(87, 107, 129),
button=(1127, 657, 1219, 682), button=(1103, 642, 1202, 672),
), ),
en=Button( en=Button(
file='./assets/en/cafe/OCR_CAFE.png', file='./assets/en/cafe/OCR_CAFE.png',
area=(1127, 657, 1219, 682), area=(1105, 639, 1195, 674),
search=(1107, 637, 1239, 702), search=(1085, 619, 1215, 694),
color=(93, 112, 134), color=(84, 104, 127),
button=(1127, 657, 1219, 682), button=(1105, 639, 1195, 674),
), ),
) )
OCR_NAME = ButtonWrapper( OCR_NAME = ButtonWrapper(
@@ -365,13 +339,7 @@ OCR_NAME = ButtonWrapper(
color=(237, 239, 241), color=(237, 239, 241),
button=(488, 194, 704, 588), button=(488, 194, 704, 588),
), ),
en=Button( en=None,
file='./assets/en/cafe/OCR_NAME.png',
area=(488, 194, 704, 588),
search=(468, 174, 724, 608),
color=(237, 239, 241),
button=(488, 194, 704, 588),
),
) )
STUDENT_LIST = ButtonWrapper( STUDENT_LIST = ButtonWrapper(
name='STUDENT_LIST', name='STUDENT_LIST',
+32 -8
View File
@@ -1,5 +1,6 @@
from enum import Enum from enum import Enum
from module.base.decorator import Config
from module.base.timer import Timer from module.base.timer import Timer
from module.logger import logger from module.logger import logger
from module.ui.switch import Switch from module.ui.switch import Switch
@@ -8,6 +9,10 @@ from tasks.cafe.assets.assets_cafe import *
from tasks.cafe.invitation import handle_invitation from tasks.cafe.invitation import handle_invitation
from tasks.cafe.ui import CafeUI from tasks.cafe.ui import CafeUI
SWITCH_CAFE = Switch('Cafe_switch')
SWITCH_CAFE.add_state('off', CHANGE_CAFE_NOT_SELECTED)
SWITCH_CAFE.add_state('on', CHANGE_CAFE_SELECTED)
SWITCH_CAFE_SELECT = Switch('Cafe_switch_select') SWITCH_CAFE_SELECT = Switch('Cafe_switch_select')
SWITCH_CAFE_SELECT.add_state('1', CAFE_FIRST) SWITCH_CAFE_SELECT.add_state('1', CAFE_FIRST)
SWITCH_CAFE_SELECT.add_state('2', CAFE_SECOND) SWITCH_CAFE_SELECT.add_state('2', CAFE_SECOND)
@@ -25,10 +30,16 @@ class CafeStatus(Enum):
class Cafe(CafeUI): class Cafe(CafeUI):
@property @Config.when(Emulator_GameLanguage='jp')
def is_second_cafe_on(self): def _is_second_cafe_on(self):
return self.config.Cafe_SecondCafe return self.config.Cafe_SecondCafe
@Config.when(Emulator_GameLanguage=None)
def _is_second_cafe_on(self):
return False
is_second_cafe_on = property(_is_second_cafe_on)
def _handle_cafe(self, status): def _handle_cafe(self, status):
match status: match status:
case CafeStatus.STUDENT_LIST: case CafeStatus.STUDENT_LIST:
@@ -59,7 +70,7 @@ class Cafe(CafeUI):
if handle_invitation(self): if handle_invitation(self):
return CafeStatus.CLICK return CafeStatus.CLICK
case CafeStatus.CLICK: case CafeStatus.CLICK:
buttons = self.get_clickable_buttons() buttons = self.get_clickable_buttons(offset=(45, 10))
self.click = len(buttons) self.click = len(buttons)
logger.attr('Clickable', self.click) logger.attr('Clickable', self.click)
if not buttons: if not buttons:
@@ -105,6 +116,7 @@ class Cafe(CafeUI):
status = CafeStatus.STUDENT_LIST status = CafeStatus.STUDENT_LIST
loading_timer = Timer(2).start() loading_timer = Timer(2).start()
action_timer = Timer(1, count=1) action_timer = Timer(1, count=1)
is_list = False
is_reset = False is_reset = False
is_second = False is_second = False
is_enable = is_reward_on or is_touch_on is_enable = is_reward_on or is_touch_on
@@ -121,6 +133,11 @@ class Cafe(CafeUI):
if not loading_timer.reached(): if not loading_timer.reached():
continue continue
if not is_list and status == CafeStatus.STUDENT_LIST and self.appear(STUDENT_LIST):
is_list = True
loading_timer = Timer(3).start()
continue
if not is_reward_on and status == CafeStatus.OCR: if not is_reward_on and status == CafeStatus.OCR:
logger.info('Skip reward') logger.info('Skip reward')
status = CafeStatus.CLICK status = CafeStatus.CLICK
@@ -137,19 +154,26 @@ class Cafe(CafeUI):
continue continue
if self.is_second_cafe_on and not is_second and status == CafeStatus.FINISHED: if self.is_second_cafe_on and not is_second and status == CafeStatus.FINISHED:
if not SWITCH_CAFE_SELECT.appear(main=self): if not SWITCH_CAFE.appear(main=self):
logger.info('Cafe switch not found') logger.warning('Cafe switch not found')
continue continue
match SWITCH_CAFE_SELECT.get(main=self): if SWITCH_CAFE.get(main=self) == 'off':
SWITCH_CAFE.set('on', main=self)
logger.info('Switching to second cafe')
if not SWITCH_CAFE_SELECT.appear(main=self):
logger.info('Cafe switch select not found')
continue
match (SWITCH_CAFE_SELECT.get(main=self)):
case '1': case '1':
if self.click_with_interval(CAFE_FIRST): if self.click_with_interval(CAFE_SECOND):
continue continue
case '2': case '2':
logger.info('Cafe second arrived') logger.info('Cafe second arrived')
SWITCH_CAFE.set('off', main=self)
status = CafeStatus.STUDENT_LIST status = CafeStatus.STUDENT_LIST
is_list = False
is_second = True is_second = True
self.check = 0 self.check = 0
loading_timer.reset().start()
if action_timer.reached_and_reset(): if action_timer.reached_and_reset():
logger.attr('Status', status) logger.attr('Status', status)
+7 -23
View File
@@ -1,13 +1,11 @@
import re import re
from datetime import datetime, timedelta
from enum import Enum from enum import Enum
import numpy as np import numpy as np
from module.base.base import ModuleBase from module.base.base import ModuleBase
from module.base.timer import Timer from module.base.timer import Timer
from module.base.utils import area_offset, area_size from module.base.utils import area_size, area_offset
from module.config.utils import get_server_next_update
from module.logger import logger from module.logger import logger
from module.ocr.ocr import Ocr from module.ocr.ocr import Ocr
from tasks.cafe.assets.assets_cafe import * from tasks.cafe.assets.assets_cafe import *
@@ -34,7 +32,6 @@ class InvitationStatus(Enum):
class Invitation: class Invitation:
swipe_vector_range = (0.65, 0.85) swipe_vector_range = (0.65, 0.85)
cafe_update = ["04:00", "16:00"]
def __init__(self, name: str): def __init__(self, name: str):
self.name = name self.name = name
@@ -44,7 +41,6 @@ class Invitation:
self.invite = MOMOTALK_INVITE self.invite = MOMOTALK_INVITE
self.target_names = [] self.target_names = []
self.waiting_hour = None
self.substitute = None self.substitute = None
self.choice = None self.choice = None
@@ -99,10 +95,6 @@ class Invitation:
continue continue
self.current_names.append((name, name_.box)) self.current_names.append((name, name_.box))
@property
def is_invitation(self) -> bool:
return get_server_next_update(self.cafe_update) - datetime.now() > timedelta(hours=self.waiting_hour)
@property @property
def names(self): def names(self):
return list(map(lambda x: x[0], self.current_names)) return list(map(lambda x: x[0], self.current_names))
@@ -214,19 +206,16 @@ class Invitation:
return False return False
invitation = Invitation('CafeInvitation') invitation = Invitation('test')
def handle_invitation_status(status: InvitationStatus, main: ModuleBase) -> InvitationStatus: def handle_invitation_status(status: InvitationStatus, main: ModuleBase) -> InvitationStatus:
match status: match status:
case InvitationStatus.MOMOTALK: case InvitationStatus.MOMOTALK:
if not invitation.is_invitation: if main.appear(CAFE_INVITED):
logger.info('Invitation waiting until next refresh')
return InvitationStatus.FINISHED
if main.match_color(CAFE_INVITED):
logger.info('Invitation in cooldown') logger.info('Invitation in cooldown')
return InvitationStatus.FINISHED return InvitationStatus.FINISHED
if invitation.choice != 'list_top' and invitation.target_name is None: if invitation.target_name is None:
logger.warning('No student to be invited or all invitations failed') logger.warning('No student to be invited or all invitations failed')
return InvitationStatus.FINISHED return InvitationStatus.FINISHED
if main.appear(CHECK_MOMOTALK): if main.appear(CHECK_MOMOTALK):
@@ -243,7 +232,7 @@ def handle_invitation_status(status: InvitationStatus, main: ModuleBase) -> Invi
case InvitationStatus.SELECT: case InvitationStatus.SELECT:
if main.appear(INVITE_CONFIRM): if main.appear(INVITE_CONFIRM):
return InvitationStatus.CONFIRM return InvitationStatus.CONFIRM
if main.appear(INVITE_IN_SECOND): if main.config.Emulator_GameLanguage == 'jp' and main.appear(INVITE_IN_SECOND):
return InvitationStatus.IN_SECOND return InvitationStatus.IN_SECOND
if main.appear(INVITE_SUBSTITUTE): if main.appear(INVITE_SUBSTITUTE):
return InvitationStatus.SUBSTITUTE return InvitationStatus.SUBSTITUTE
@@ -282,16 +271,11 @@ def handle_invitation_status(status: InvitationStatus, main: ModuleBase) -> Invi
def handle_invitation(main: ModuleBase): def handle_invitation(main: ModuleBase):
if not main.config.Invitation_Enable: if not main.config.Invitation_Enable:
logger.info('Invitation disabled') logger.info('Invitation disabled')
return True return
invitation.waiting_hour = main.config.Invitation_WaitingHour
invitation.substitute = main.config.Invitation_Substitute
if invitation.choice is None:
invitation.choice = main.config.Invitation_Choice invitation.choice = main.config.Invitation_Choice
invitation.substitute = main.config.Invitation_Substitute
if invitation.choice == 'by_name' and not invitation.target_names: if invitation.choice == 'by_name' and not invitation.target_names:
name = main.config.Invitation_Name name = main.config.Invitation_Name
if name is None:
logger.warning('Choose By Name but Inviting Student Name is blank')
return True
name = re.sub(r'[ \t\r\n]', '', name) name = re.sub(r'[ \t\r\n]', '', name)
name = re.sub(r'[>﹥›˃ᐳ❯]', '>', name) name = re.sub(r'[>﹥›˃ᐳ❯]', '>', name)
name = re.sub(r'(', '(', name) name = re.sub(r'(', '(', name)
+1 -1
View File
@@ -31,7 +31,7 @@ class CafeUI(UI):
# generate result # generate result
return cv2.bitwise_and(image, image, mask=mask) return cv2.bitwise_and(image, image, mask=mask)
def get_clickable_buttons(self, similarity=0.8, offset=(40, 10)): def get_clickable_buttons(self, similarity=0.8, offset=(45, 10)):
image = self.extract_clickable_from_image(self.device.image) image = self.extract_clickable_from_image(self.device.image)
self.template.matched_button._button_offset = offset self.template.matched_button._button_offset = offset
self.template.load_offset(self.template) self.template.load_offset(self.template)

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