diff --git a/config/template.json b/config/template.json index 6d9cc227e..85f345438 100644 --- a/config/template.json +++ b/config/template.json @@ -68,8 +68,11 @@ "ServerUpdate": "04:00" }, "Assignment": { - "Filter": "Nameless Land Nameless People > Akashic Records > The Invisible Hand > Root Out the Turpitude", - "Duration": 20 + "Duration": 20, + "Name_1": "Nameless_Land_Nameless_People", + "Name_2": "Akashic_Records", + "Name_3": "The_Invisible_Hand", + "Name_4": "Nine_Billion_Names" } } } \ No newline at end of file diff --git a/module/base/base.py b/module/base/base.py index c44c758c5..a091c3b75 100644 --- a/module/base/base.py +++ b/module/base/base.py @@ -209,7 +209,7 @@ class ModuleBase: def interval_reset(self, button, interval=5): if isinstance(button, (list, tuple)): for b in button: - self.interval_reset(b) + self.interval_reset(b, interval) return if button.name in self.interval_timer: @@ -220,7 +220,7 @@ class ModuleBase: def interval_clear(self, button, interval=5): if isinstance(button, (list, tuple)): for b in button: - self.interval_clear(b) + self.interval_clear(b, interval) return if button.name in self.interval_timer: diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 59513ff00..6f4f95fc0 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -282,10 +282,6 @@ } }, "Assignment": { - "Filter": { - "type": "textarea", - "value": "Nameless Land Nameless People > Akashic Records > The Invisible Hand > Root Out the Turpitude" - }, "Duration": { "type": "select", "value": 20, @@ -295,6 +291,82 @@ 12, 20 ] + }, + "Name_1": { + "type": "select", + "value": "Nameless_Land_Nameless_People", + "option": [ + "Nine_Billion_Names", + "Destruction_of_the_Destroyer", + "Winter_Soldiers", + "Born_to_Obey", + "Root_Out_the_Turpitude", + "Fire_Lord_Inflames_Blades_of_War", + "Nameless_Land_Nameless_People", + "Akashic_Records", + "The_Invisible_Hand", + "Abandoned_and_Insulted", + "Spring_of_Life", + "The_Land_of_Gold", + "The_Blossom_in_the_Storm" + ] + }, + "Name_2": { + "type": "select", + "value": "Akashic_Records", + "option": [ + "Nine_Billion_Names", + "Destruction_of_the_Destroyer", + "Winter_Soldiers", + "Born_to_Obey", + "Root_Out_the_Turpitude", + "Fire_Lord_Inflames_Blades_of_War", + "Nameless_Land_Nameless_People", + "Akashic_Records", + "The_Invisible_Hand", + "Abandoned_and_Insulted", + "Spring_of_Life", + "The_Land_of_Gold", + "The_Blossom_in_the_Storm" + ] + }, + "Name_3": { + "type": "select", + "value": "The_Invisible_Hand", + "option": [ + "Nine_Billion_Names", + "Destruction_of_the_Destroyer", + "Winter_Soldiers", + "Born_to_Obey", + "Root_Out_the_Turpitude", + "Fire_Lord_Inflames_Blades_of_War", + "Nameless_Land_Nameless_People", + "Akashic_Records", + "The_Invisible_Hand", + "Abandoned_and_Insulted", + "Spring_of_Life", + "The_Land_of_Gold", + "The_Blossom_in_the_Storm" + ] + }, + "Name_4": { + "type": "select", + "value": "Nine_Billion_Names", + "option": [ + "Nine_Billion_Names", + "Destruction_of_the_Destroyer", + "Winter_Soldiers", + "Born_to_Obey", + "Root_Out_the_Turpitude", + "Fire_Lord_Inflames_Blades_of_War", + "Nameless_Land_Nameless_People", + "Akashic_Records", + "The_Invisible_Hand", + "Abandoned_and_Insulted", + "Spring_of_Life", + "The_Land_of_Gold", + "The_Blossom_in_the_Storm" + ] } } } diff --git a/module/config/argument/argument.yaml b/module/config/argument/argument.yaml index df4c8c937..f597cf5a9 100644 --- a/module/config/argument/argument.yaml +++ b/module/config/argument/argument.yaml @@ -79,8 +79,19 @@ Dungeon: option: [ 1, 2, 3, 4, 5, 6 ] Assignment: - Filter: |- - Nameless Land Nameless People > Akashic Records > The Invisible Hand > Root Out the Turpitude Duration: value: 20 - option: [4, 8, 12, 20] \ No newline at end of file + option: [4, 8, 12, 20] + # Options in Name_x will be injected in config updater + Name_1: + value: Nameless_Land_Nameless_People + option: [Nameless_Land_Nameless_People, ] + Name_2: + value: Akashic_Records + option: [Nameless_Land_Nameless_People, ] + Name_3: + value: The_Invisible_Hand + option: [Nameless_Land_Nameless_People, ] + Name_4: + value: Nine_Billion_Names + option: [Nameless_Land_Nameless_People, ] \ No newline at end of file diff --git a/module/config/config_generated.py b/module/config/config_generated.py index 606ae94c2..8a6b3d014 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -43,5 +43,8 @@ class GeneratedConfig: Dungeon_Team = 1 # 1, 2, 3, 4, 5, 6 # Group `Assignment` - Assignment_Filter = 'Nameless Land Nameless People > Akashic Records > The Invisible Hand > Root Out the Turpitude' Assignment_Duration = 20 # 4, 8, 12, 20 + Assignment_Name_1 = 'Nameless_Land_Nameless_People' # Nine_Billion_Names, Destruction_of_the_Destroyer, Winter_Soldiers, Born_to_Obey, Root_Out_the_Turpitude, Fire_Lord_Inflames_Blades_of_War, Nameless_Land_Nameless_People, Akashic_Records, The_Invisible_Hand, Abandoned_and_Insulted, Spring_of_Life, The_Land_of_Gold, The_Blossom_in_the_Storm + Assignment_Name_2 = 'Akashic_Records' # Nine_Billion_Names, Destruction_of_the_Destroyer, Winter_Soldiers, Born_to_Obey, Root_Out_the_Turpitude, Fire_Lord_Inflames_Blades_of_War, Nameless_Land_Nameless_People, Akashic_Records, The_Invisible_Hand, Abandoned_and_Insulted, Spring_of_Life, The_Land_of_Gold, The_Blossom_in_the_Storm + Assignment_Name_3 = 'The_Invisible_Hand' # Nine_Billion_Names, Destruction_of_the_Destroyer, Winter_Soldiers, Born_to_Obey, Root_Out_the_Turpitude, Fire_Lord_Inflames_Blades_of_War, Nameless_Land_Nameless_People, Akashic_Records, The_Invisible_Hand, Abandoned_and_Insulted, Spring_of_Life, The_Land_of_Gold, The_Blossom_in_the_Storm + Assignment_Name_4 = 'Nine_Billion_Names' # Nine_Billion_Names, Destruction_of_the_Destroyer, Winter_Soldiers, Born_to_Obey, Root_Out_the_Turpitude, Fire_Lord_Inflames_Blades_of_War, Nameless_Land_Nameless_People, Akashic_Records, The_Invisible_Hand, Abandoned_and_Insulted, Spring_of_Life, The_Land_of_Gold, The_Blossom_in_the_Storm diff --git a/module/config/config_updater.py b/module/config/config_updater.py index 3aed912ad..a863d94a9 100644 --- a/module/config/config_updater.py +++ b/module/config/config_updater.py @@ -355,6 +355,13 @@ class ConfigGenerator: dungeons = [dungeon.name for dungeon in DungeonList.instances.values() if dungeon.is_daily_dungeon] deep_set(self.argument, keys='Dungeon.Name.option', value=dungeons) deep_set(self.args, keys='Dungeon.Dungeon.Name.option', value=dungeons) + + def insert_assignment(self): + from tasks.assignment.keywords import AssignmentEntry + assignments = [entry.name for entry in AssignmentEntry.instances.values()] + for i in range(4): + deep_set(self.argument, keys=f'Assignment.Name_{i+1}.option', value=assignments) + deep_set(self.args, keys=f'Assignment.Assignment.Name_{i+1}.option', value=assignments) def insert_package(self): option = deep_get(self.argument, keys='Emulator.PackageName.option') @@ -369,6 +376,7 @@ class ConfigGenerator: _ = self.menu # _ = self.event self.insert_dungeon() + self.insert_assignment() self.insert_package() # self.insert_server() write_file(filepath_args(), self.args) diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index e7e8cdb62..fdf7934b5 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -225,17 +225,81 @@ "name": "Assignment Settings", "help": "Claim rewards and dispatch, handling specified assignments first\nIf the assignment limit is not reached after that, others will be dispatched according to preset priority (EXP Materials/Credits → Character Materials → Synthesis Materials)" }, - "Filter": { - "name": "Assignment Priority", - "help": "Make sure there are no typos\nExample: Nameless Land Nameless People > Akashic Records > The Invisible Hand > Root Out the Turpitude" - }, "Duration": { - "name": "Assignment Duration", + "name": "Dispatch Duration", "help": "", "4": "4", "8": "8", "12": "12", "20": "20" + }, + "Name_1": { + "name": "Assignment 1 Preference", + "help": "", + "Nine_Billion_Names": "Extinguished Core (Nine Billion Names)", + "Destruction_of_the_Destroyer": "Thief's Instinct (Destruction of the Destroyer)", + "Winter_Soldiers": "Silvermane Badge (Winter Soldiers)", + "Born_to_Obey": "Ancient Part (Born to Obey)", + "Root_Out_the_Turpitude": "Immortal Scionette (Root Out the Turpitude)", + "Fire_Lord_Inflames_Blades_of_War": "Artifex's Module (Fire Lord Inflames Blades of War)", + "Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)", + "Akashic_Records": "Light Cone EXP Material (Akashic Records)", + "The_Invisible_Hand": "Credit (The Invisible Hand)", + "Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)", + "Spring_of_Life": "Virtual Particle & Solid Water (Spring of Life)", + "The_Land_of_Gold": "Protein Rice & Basic Ingredients (The Land of Gold)", + "The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)" + }, + "Name_2": { + "name": "Assignment 2 Preference", + "help": "", + "Nine_Billion_Names": "Extinguished Core (Nine Billion Names)", + "Destruction_of_the_Destroyer": "Thief's Instinct (Destruction of the Destroyer)", + "Winter_Soldiers": "Silvermane Badge (Winter Soldiers)", + "Born_to_Obey": "Ancient Part (Born to Obey)", + "Root_Out_the_Turpitude": "Immortal Scionette (Root Out the Turpitude)", + "Fire_Lord_Inflames_Blades_of_War": "Artifex's Module (Fire Lord Inflames Blades of War)", + "Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)", + "Akashic_Records": "Light Cone EXP Material (Akashic Records)", + "The_Invisible_Hand": "Credit (The Invisible Hand)", + "Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)", + "Spring_of_Life": "Virtual Particle & Solid Water (Spring of Life)", + "The_Land_of_Gold": "Protein Rice & Basic Ingredients (The Land of Gold)", + "The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)" + }, + "Name_3": { + "name": "Assignment 3 Preference", + "help": "", + "Nine_Billion_Names": "Extinguished Core (Nine Billion Names)", + "Destruction_of_the_Destroyer": "Thief's Instinct (Destruction of the Destroyer)", + "Winter_Soldiers": "Silvermane Badge (Winter Soldiers)", + "Born_to_Obey": "Ancient Part (Born to Obey)", + "Root_Out_the_Turpitude": "Immortal Scionette (Root Out the Turpitude)", + "Fire_Lord_Inflames_Blades_of_War": "Artifex's Module (Fire Lord Inflames Blades of War)", + "Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)", + "Akashic_Records": "Light Cone EXP Material (Akashic Records)", + "The_Invisible_Hand": "Credit (The Invisible Hand)", + "Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)", + "Spring_of_Life": "Virtual Particle & Solid Water (Spring of Life)", + "The_Land_of_Gold": "Protein Rice & Basic Ingredients (The Land of Gold)", + "The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)" + }, + "Name_4": { + "name": "Assignment 4 Preference", + "help": "", + "Nine_Billion_Names": "Extinguished Core (Nine Billion Names)", + "Destruction_of_the_Destroyer": "Thief's Instinct (Destruction of the Destroyer)", + "Winter_Soldiers": "Silvermane Badge (Winter Soldiers)", + "Born_to_Obey": "Ancient Part (Born to Obey)", + "Root_Out_the_Turpitude": "Immortal Scionette (Root Out the Turpitude)", + "Fire_Lord_Inflames_Blades_of_War": "Artifex's Module (Fire Lord Inflames Blades of War)", + "Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)", + "Akashic_Records": "Light Cone EXP Material (Akashic Records)", + "The_Invisible_Hand": "Credit (The Invisible Hand)", + "Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)", + "Spring_of_Life": "Virtual Particle & Solid Water (Spring of Life)", + "The_Land_of_Gold": "Protein Rice & Basic Ingredients (The Land of Gold)", + "The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)" } }, "Gui": { diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index 4a4b759b3..7abd6f0b7 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -31,8 +31,8 @@ "help": "" }, "Assignment": { - "name": "Task.Assignment.name", - "help": "Task.Assignment.help" + "name": "依頼設定", + "help": "" } }, "Scheduler": { @@ -222,20 +222,84 @@ }, "Assignment": { "_info": { - "name": "Assignment._info.name", - "help": "Assignment._info.help" - }, - "Filter": { - "name": "Assignment.Filter.name", - "help": "Assignment.Filter.help" + "name": "依頼設定", + "help": "" }, "Duration": { - "name": "Assignment.Duration.name", - "help": "Assignment.Duration.help", + "name": "派遣時間", + "help": "", "4": "4", "8": "8", "12": "12", "20": "20" + }, + "Name_1": { + "name": "依頼 1", + "help": "", + "Nine_Billion_Names": "消滅した原核(九十億の御名)", + "Destruction_of_the_Destroyer": "略奪の本能(壊滅者の覆没)", + "Winter_Soldiers": "シルバーメインの釦(寒冬の戦士たち)", + "Born_to_Obey": "古代パーツ(生まれながらに服従する)", + "Root_Out_the_Turpitude": "永寿の萌芽(悪孽を根絶やしに)", + "Fire_Lord_Inflames_Blades_of_War": "工造機関(剣戟を焼却する火帝炉)", + "Nameless_Land_Nameless_People": "キャラクターの経験値素材(無名の地、無名の人)", + "Akashic_Records": "光円錐強化素材(アーカーシャの記録)", + "The_Invisible_Hand": "信用ポイント(見えざる手)", + "Abandoned_and_Insulted": "燃素と金属(捨てられしものと傷つけられしもの)", + "Spring_of_Life": "仮想粒子と固形純水(生命の泉)", + "The_Land_of_Gold": "タンパク米と基本食材(黄金の大地)", + "The_Blossom_in_the_Storm": "気態流体と種子(嵐の中で咲き誇る花)" + }, + "Name_2": { + "name": "依頼 2", + "help": "", + "Nine_Billion_Names": "消滅した原核(九十億の御名)", + "Destruction_of_the_Destroyer": "略奪の本能(壊滅者の覆没)", + "Winter_Soldiers": "シルバーメインの釦(寒冬の戦士たち)", + "Born_to_Obey": "古代パーツ(生まれながらに服従する)", + "Root_Out_the_Turpitude": "永寿の萌芽(悪孽を根絶やしに)", + "Fire_Lord_Inflames_Blades_of_War": "工造機関(剣戟を焼却する火帝炉)", + "Nameless_Land_Nameless_People": "キャラクターの経験値素材(無名の地、無名の人)", + "Akashic_Records": "光円錐強化素材(アーカーシャの記録)", + "The_Invisible_Hand": "信用ポイント(見えざる手)", + "Abandoned_and_Insulted": "燃素と金属(捨てられしものと傷つけられしもの)", + "Spring_of_Life": "仮想粒子と固形純水(生命の泉)", + "The_Land_of_Gold": "タンパク米と基本食材(黄金の大地)", + "The_Blossom_in_the_Storm": "気態流体と種子(嵐の中で咲き誇る花)" + }, + "Name_3": { + "name": "依頼 3", + "help": "", + "Nine_Billion_Names": "消滅した原核(九十億の御名)", + "Destruction_of_the_Destroyer": "略奪の本能(壊滅者の覆没)", + "Winter_Soldiers": "シルバーメインの釦(寒冬の戦士たち)", + "Born_to_Obey": "古代パーツ(生まれながらに服従する)", + "Root_Out_the_Turpitude": "永寿の萌芽(悪孽を根絶やしに)", + "Fire_Lord_Inflames_Blades_of_War": "工造機関(剣戟を焼却する火帝炉)", + "Nameless_Land_Nameless_People": "キャラクターの経験値素材(無名の地、無名の人)", + "Akashic_Records": "光円錐強化素材(アーカーシャの記録)", + "The_Invisible_Hand": "信用ポイント(見えざる手)", + "Abandoned_and_Insulted": "燃素と金属(捨てられしものと傷つけられしもの)", + "Spring_of_Life": "仮想粒子と固形純水(生命の泉)", + "The_Land_of_Gold": "タンパク米と基本食材(黄金の大地)", + "The_Blossom_in_the_Storm": "気態流体と種子(嵐の中で咲き誇る花)" + }, + "Name_4": { + "name": "依頼 4", + "help": "", + "Nine_Billion_Names": "消滅した原核(九十億の御名)", + "Destruction_of_the_Destroyer": "略奪の本能(壊滅者の覆没)", + "Winter_Soldiers": "シルバーメインの釦(寒冬の戦士たち)", + "Born_to_Obey": "古代パーツ(生まれながらに服従する)", + "Root_Out_the_Turpitude": "永寿の萌芽(悪孽を根絶やしに)", + "Fire_Lord_Inflames_Blades_of_War": "工造機関(剣戟を焼却する火帝炉)", + "Nameless_Land_Nameless_People": "キャラクターの経験値素材(無名の地、無名の人)", + "Akashic_Records": "光円錐強化素材(アーカーシャの記録)", + "The_Invisible_Hand": "信用ポイント(見えざる手)", + "Abandoned_and_Insulted": "燃素と金属(捨てられしものと傷つけられしもの)", + "Spring_of_Life": "仮想粒子と固形純水(生命の泉)", + "The_Land_of_Gold": "タンパク米と基本食材(黄金の大地)", + "The_Blossom_in_the_Storm": "気態流体と種子(嵐の中で咲き誇る花)" } }, "Gui": { diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index e81b6c236..4801577da 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -225,17 +225,81 @@ "name": "委托设置", "help": "领取奖励并派遣,优先处理指定委托\n若处理指定委托之后未达到上限,则按经验材料 → 角色专属素材 → 合成材料的顺序来派遣委托" }, - "Filter": { - "name": "委托优先级", - "help": "中文或英文皆可,须保证没有错字漏字\n比如:无名之地,无名之人 > 阿卡夏记录 > The Invisible Hand > 根除恶孽" - }, "Duration": { - "name": "委托时长", + "name": "派遣时长", "help": "", "4": "4", "8": "8", "12": "12", "20": "20" + }, + "Name_1": { + "name": "第1个委托选择", + "help": "", + "Nine_Billion_Names": "熄灭原核(九十亿个名字)", + "Destruction_of_the_Destroyer": "掠夺的本能(毁灭者的覆灭)", + "Winter_Soldiers": "铁卫扣饰(寒冬的战士们)", + "Born_to_Obey": "古代零件(生而服从)", + "Root_Out_the_Turpitude": "永寿幼芽(根除恶孽)", + "Fire_Lord_Inflames_Blades_of_War": "工造机杼(火帝动炉销剑戟)", + "Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)", + "Akashic_Records": "光锥强化材料(阿卡夏记录)", + "The_Invisible_Hand": "信用点(看不见的手)", + "Abandoned_and_Insulted": "燃素&金属(被废弃与损害的)", + "Spring_of_Life": "虚粒子&固态净水(生命之泉)", + "The_Land_of_Gold": "蛋白米&基本食材(黄金大地)", + "The_Blossom_in_the_Storm": "气态流体&种子(风暴中怒放的花)" + }, + "Name_2": { + "name": "第2个委托选择", + "help": "", + "Nine_Billion_Names": "熄灭原核(九十亿个名字)", + "Destruction_of_the_Destroyer": "掠夺的本能(毁灭者的覆灭)", + "Winter_Soldiers": "铁卫扣饰(寒冬的战士们)", + "Born_to_Obey": "古代零件(生而服从)", + "Root_Out_the_Turpitude": "永寿幼芽(根除恶孽)", + "Fire_Lord_Inflames_Blades_of_War": "工造机杼(火帝动炉销剑戟)", + "Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)", + "Akashic_Records": "光锥强化材料(阿卡夏记录)", + "The_Invisible_Hand": "信用点(看不见的手)", + "Abandoned_and_Insulted": "燃素&金属(被废弃与损害的)", + "Spring_of_Life": "虚粒子&固态净水(生命之泉)", + "The_Land_of_Gold": "蛋白米&基本食材(黄金大地)", + "The_Blossom_in_the_Storm": "气态流体&种子(风暴中怒放的花)" + }, + "Name_3": { + "name": "第3个委托选择", + "help": "", + "Nine_Billion_Names": "熄灭原核(九十亿个名字)", + "Destruction_of_the_Destroyer": "掠夺的本能(毁灭者的覆灭)", + "Winter_Soldiers": "铁卫扣饰(寒冬的战士们)", + "Born_to_Obey": "古代零件(生而服从)", + "Root_Out_the_Turpitude": "永寿幼芽(根除恶孽)", + "Fire_Lord_Inflames_Blades_of_War": "工造机杼(火帝动炉销剑戟)", + "Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)", + "Akashic_Records": "光锥强化材料(阿卡夏记录)", + "The_Invisible_Hand": "信用点(看不见的手)", + "Abandoned_and_Insulted": "燃素&金属(被废弃与损害的)", + "Spring_of_Life": "虚粒子&固态净水(生命之泉)", + "The_Land_of_Gold": "蛋白米&基本食材(黄金大地)", + "The_Blossom_in_the_Storm": "气态流体&种子(风暴中怒放的花)" + }, + "Name_4": { + "name": "第4个委托选择", + "help": "", + "Nine_Billion_Names": "熄灭原核(九十亿个名字)", + "Destruction_of_the_Destroyer": "掠夺的本能(毁灭者的覆灭)", + "Winter_Soldiers": "铁卫扣饰(寒冬的战士们)", + "Born_to_Obey": "古代零件(生而服从)", + "Root_Out_the_Turpitude": "永寿幼芽(根除恶孽)", + "Fire_Lord_Inflames_Blades_of_War": "工造机杼(火帝动炉销剑戟)", + "Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)", + "Akashic_Records": "光锥强化材料(阿卡夏记录)", + "The_Invisible_Hand": "信用点(看不见的手)", + "Abandoned_and_Insulted": "燃素&金属(被废弃与损害的)", + "Spring_of_Life": "虚粒子&固态净水(生命之泉)", + "The_Land_of_Gold": "蛋白米&基本食材(黄金大地)", + "The_Blossom_in_the_Storm": "气态流体&种子(风暴中怒放的花)" } }, "Gui": { diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index c2c1b1724..da98b1d65 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -225,17 +225,81 @@ "name": "委託設置", "help": "領取獎勵並派遣,優先處理指定委託\n若處理指定委託之後未達到上限,則按經驗材料 → 角色專屬素材 → 合成材料的順序來派遣委託" }, - "Filter": { - "name": "委託優先級", - "help": "中文或英文皆可,須保證沒有錯字漏字\n比如:無名之地,無名之人 > 阿卡夏記錄 > The Invisible Hand > 根除惡孽" - }, "Duration": { - "name": "委託時長", + "name": "派遣時間", "help": "", "4": "4", "8": "8", "12": "12", "20": "20" + }, + "Name_1": { + "name": "第1個委託選擇", + "help": "", + "Nine_Billion_Names": "熄滅原核(九十億個名字)", + "Destruction_of_the_Destroyer": "掠奪的本能(毀滅者的覆滅)", + "Winter_Soldiers": "鐵衛扣飾(寒冬的戰士們)", + "Born_to_Obey": "古代零件(生而服從)", + "Root_Out_the_Turpitude": "永壽幼芽(根除惡孽)", + "Fire_Lord_Inflames_Blades_of_War": "工造機杼(火帝動爐銷劍戟)", + "Nameless_Land_Nameless_People": "角色經驗材料(無名之地,無名之人)", + "Akashic_Records": "光錐強化材料(阿卡夏記錄)", + "The_Invisible_Hand": "信用點(看不見的手)", + "Abandoned_and_Insulted": "燃素&金屬(被廢棄與損害的)", + "Spring_of_Life": "虛粒子&固態淨水(生命之泉)", + "The_Land_of_Gold": "蛋白米&基本食材(黃金大地)", + "The_Blossom_in_the_Storm": "氣態流體&種子(風暴中怒放的花)" + }, + "Name_2": { + "name": "第2個委託選擇", + "help": "", + "Nine_Billion_Names": "熄滅原核(九十億個名字)", + "Destruction_of_the_Destroyer": "掠奪的本能(毀滅者的覆滅)", + "Winter_Soldiers": "鐵衛扣飾(寒冬的戰士們)", + "Born_to_Obey": "古代零件(生而服從)", + "Root_Out_the_Turpitude": "永壽幼芽(根除惡孽)", + "Fire_Lord_Inflames_Blades_of_War": "工造機杼(火帝動爐銷劍戟)", + "Nameless_Land_Nameless_People": "角色經驗材料(無名之地,無名之人)", + "Akashic_Records": "光錐強化材料(阿卡夏記錄)", + "The_Invisible_Hand": "信用點(看不見的手)", + "Abandoned_and_Insulted": "燃素&金屬(被廢棄與損害的)", + "Spring_of_Life": "虛粒子&固態淨水(生命之泉)", + "The_Land_of_Gold": "蛋白米&基本食材(黃金大地)", + "The_Blossom_in_the_Storm": "氣態流體&種子(風暴中怒放的花)" + }, + "Name_3": { + "name": "第3個委託選擇", + "help": "", + "Nine_Billion_Names": "熄滅原核(九十億個名字)", + "Destruction_of_the_Destroyer": "掠奪的本能(毀滅者的覆滅)", + "Winter_Soldiers": "鐵衛扣飾(寒冬的戰士們)", + "Born_to_Obey": "古代零件(生而服從)", + "Root_Out_the_Turpitude": "永壽幼芽(根除惡孽)", + "Fire_Lord_Inflames_Blades_of_War": "工造機杼(火帝動爐銷劍戟)", + "Nameless_Land_Nameless_People": "角色經驗材料(無名之地,無名之人)", + "Akashic_Records": "光錐強化材料(阿卡夏記錄)", + "The_Invisible_Hand": "信用點(看不見的手)", + "Abandoned_and_Insulted": "燃素&金屬(被廢棄與損害的)", + "Spring_of_Life": "虛粒子&固態淨水(生命之泉)", + "The_Land_of_Gold": "蛋白米&基本食材(黃金大地)", + "The_Blossom_in_the_Storm": "氣態流體&種子(風暴中怒放的花)" + }, + "Name_4": { + "name": "第4個委託選擇", + "help": "", + "Nine_Billion_Names": "熄滅原核(九十億個名字)", + "Destruction_of_the_Destroyer": "掠奪的本能(毀滅者的覆滅)", + "Winter_Soldiers": "鐵衛扣飾(寒冬的戰士們)", + "Born_to_Obey": "古代零件(生而服從)", + "Root_Out_the_Turpitude": "永壽幼芽(根除惡孽)", + "Fire_Lord_Inflames_Blades_of_War": "工造機杼(火帝動爐銷劍戟)", + "Nameless_Land_Nameless_People": "角色經驗材料(無名之地,無名之人)", + "Akashic_Records": "光錐強化材料(阿卡夏記錄)", + "The_Invisible_Hand": "信用點(看不見的手)", + "Abandoned_and_Insulted": "燃素&金屬(被廢棄與損害的)", + "Spring_of_Life": "虛粒子&固態淨水(生命之泉)", + "The_Land_of_Gold": "蛋白米&基本食材(黃金大地)", + "The_Blossom_in_the_Storm": "氣態流體&種子(風暴中怒放的花)" } }, "Gui": { diff --git a/module/ui/draggable_list.py b/module/ui/draggable_list.py index 9ddc6468e..acb32d399 100644 --- a/module/ui/draggable_list.py +++ b/module/ui/draggable_list.py @@ -28,6 +28,7 @@ class DraggableList: keyword_class, ocr_class, search_button: ButtonWrapper, + check_row_order: bool = True, active_color: tuple[int, int, int] = (190, 175, 124) ): """ @@ -43,6 +44,7 @@ class DraggableList: keyword_class = keyword_class[0] self.known_rows = list(keyword_class.instances.values()) self.search_button = search_button + self.check_row_order = check_row_order self.active_color = active_color self.row_min = 1 @@ -89,7 +91,7 @@ class DraggableList: for row in self.cur_buttons] indexes = [index for index in indexes if index] # Check row order - if len(indexes) >= 2: + if self.check_row_order and len(indexes) >= 2: if not np.all(np.diff(indexes) > 0): logger.warning( f'Rows given to {self} are not ascending sorted') diff --git a/tasks/assignment/assignment.py b/tasks/assignment/assignment.py index ab768a247..804641f14 100644 --- a/tasks/assignment/assignment.py +++ b/tasks/assignment/assignment.py @@ -15,8 +15,15 @@ from tasks.daily.synthesize import SynthesizeUI class Assignment(AssignmentClaim, SynthesizeUI): def run(self, assignments: list[AssignmentEntry] = None, duration: int = None): if assignments is None: - assignments = [AssignmentEntry.find( - x.strip()) for x in self.config.Assignment_Filter.split('>')] + assignments = ( + getattr(self.config, f'Assignment_Name_{i+1}', None) for i in range(4)) + # remove duplicate while keeping order + assignments = list(dict.fromkeys( + x for x in assignments if x is not None)) + assignments = [AssignmentEntry.find(x) for x in assignments] + if len(assignments) < 4: + logger.warning( + 'There are duplicate assignments in config, check it out') if duration is None: duration = self.config.Assignment_Duration diff --git a/tasks/assignment/dispatch.py b/tasks/assignment/dispatch.py index c60e8f14b..04405f1f9 100644 --- a/tasks/assignment/dispatch.py +++ b/tasks/assignment/dispatch.py @@ -47,8 +47,8 @@ class AssignmentDispatch(AssignmentUI): out: CHARACTER_LIST """ skip_first_screenshot = True - list_timer = Timer(2, count=3) - select_timer = Timer(2, count=3) + self.interval_clear( + (CHARACTER_LIST, CHARACTER_1_SELECTED, CHARACTER_2_SELECTED), interval=2) while 1: if skip_first_screenshot: skip_first_screenshot = False @@ -60,13 +60,17 @@ class AssignmentDispatch(AssignmentUI): break # Ensure character list if not self.appear(CHARACTER_LIST): - if list_timer.reached_and_reset(): + if self.interval_is_reached(CHARACTER_LIST, interval=2): + self.interval_reset(CHARACTER_LIST, interval=2) self.device.click(EMPTY_SLOT) continue # Select - if select_timer.reached_and_reset(): + if self.interval_is_reached(CHARACTER_1_SELECTED, interval=2): + self.interval_reset(CHARACTER_1_SELECTED, interval=2) if not self.image_color_count(CHARACTER_1_SELECTED, (240, 240, 240)): self.device.click(CHARACTER_1) + if self.interval_is_reached(CHARACTER_2_SELECTED, interval=2): + self.interval_reset(CHARACTER_2_SELECTED, interval=2) if not self.image_color_count(CHARACTER_2_SELECTED, (240, 240, 240)): self.device.click(CHARACTER_2) diff --git a/tasks/assignment/ui.py b/tasks/assignment/ui.py index b071627af..adabd863e 100644 --- a/tasks/assignment/ui.py +++ b/tasks/assignment/ui.py @@ -93,6 +93,7 @@ ASSIGNMENT_ENTRY_LIST = DraggableList( keyword_class=AssignmentEntry, ocr_class=AssignmentOcr, search_button=OCR_ASSIGNMENT_LIST, + check_row_order=False, active_color=(40, 40, 40) )