Merge branch 'bug_fix' into dev
BIN
assets/cn/rogue/ui/CURIO_FIXED.png
Normal file
After Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
BIN
assets/share/base/page/MAP_EXIT.2.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 5.2 KiB |
@ -5,6 +5,22 @@ from dev_tools.keywords.base import UI_LANGUAGES, GenerateKeyword
|
||||
from module.config.utils import deep_get
|
||||
|
||||
|
||||
def resort(dic: dict):
|
||||
# Poor assigment sort for 2.2
|
||||
order = [
|
||||
1008, 1007, 1006, 1005, 1004, 1003, 1002, 1001,
|
||||
3001, 2001, 4001,
|
||||
5008, 5006, 5005, 5003, 5002, 5007, 5004, 5001,
|
||||
]
|
||||
out = {}
|
||||
for index in order:
|
||||
value = dic.pop(index)
|
||||
out[index] = value
|
||||
for k, v, in dic.items():
|
||||
out[k] = v
|
||||
return out
|
||||
|
||||
|
||||
@cache
|
||||
def get_assignment_entry_data():
|
||||
"""
|
||||
@ -16,6 +32,9 @@ def get_assignment_entry_data():
|
||||
deep_get(expedition, 'Name.Hash'): deep_get(expedition, 'ExpeditionID')
|
||||
for expedition in GenerateKeyword.read_file('./ExcelOutput/ExpeditionData.json').values()
|
||||
}
|
||||
rev = {v: k for k, v in expedition_namehash_to_id.items()}
|
||||
rev = resort(rev)
|
||||
expedition_namehash_to_id = {v: k for k, v in rev.items()}
|
||||
expedition_id_to_reward_id = {
|
||||
deep_get(expedition, '4.2.ExpeditionID'): deep_get(expedition, '4.2.RewardID')
|
||||
for expedition in GenerateKeyword.read_file('./ExcelOutput/ExpeditionReward.json').values()
|
||||
@ -119,5 +138,6 @@ class GenerateAssignmentEventEntry(GenerateKeyword):
|
||||
|
||||
if __name__ == "__main__":
|
||||
from dev_tools.keywords.base import TextMap
|
||||
|
||||
TextMap.DATA_FOLDER = '../StarRailData'
|
||||
GenerateAssignment()()
|
||||
|
@ -55,8 +55,13 @@ class Button(Resource):
|
||||
def image(self):
|
||||
return load_image(self.file, self.area)
|
||||
|
||||
@cached_property
|
||||
def image_binary(self):
|
||||
return rgb2gray(self.image)
|
||||
|
||||
def resource_release(self):
|
||||
del_cached_property(self, 'image')
|
||||
del_cached_property(self, 'image_binary')
|
||||
self.clear_offset()
|
||||
|
||||
def __str__(self):
|
||||
@ -113,6 +118,29 @@ class Button(Resource):
|
||||
self._button_offset = np.array(point) + self.search[:2] - self.area[:2]
|
||||
return sim > similarity
|
||||
|
||||
def match_template_binary(self, image, similarity=0.85, direct_match=False) -> bool:
|
||||
"""
|
||||
Detects assets by template matching.
|
||||
|
||||
To Some buttons, its location may not be static, `_button_offset` will be set.
|
||||
|
||||
Args:
|
||||
image: Screenshot.
|
||||
similarity (float): 0-1.
|
||||
direct_match: True to ignore `self.search`
|
||||
|
||||
Returns:
|
||||
bool.
|
||||
"""
|
||||
if not direct_match:
|
||||
image = crop(image, self.search, copy=False)
|
||||
image = rgb2gray(image)
|
||||
res = cv2.matchTemplate(self.image_binary, image, cv2.TM_CCOEFF_NORMED)
|
||||
_, sim, _, point = cv2.minMaxLoc(res)
|
||||
|
||||
self._button_offset = np.array(point) + self.search[:2] - self.area[:2]
|
||||
return sim > similarity
|
||||
|
||||
def match_multi_template(self, image, similarity=0.85, direct_match=False):
|
||||
"""
|
||||
Detects assets by template matching, return multiple reults
|
||||
@ -225,6 +253,13 @@ class ButtonWrapper(Resource):
|
||||
return True
|
||||
return False
|
||||
|
||||
def match_template_binary(self, image, similarity=0.85, direct_match=False) -> bool:
|
||||
for assets in self.buttons:
|
||||
if assets.match_template_binary(image, similarity=similarity, direct_match=direct_match):
|
||||
self._matched_button = assets
|
||||
return True
|
||||
return False
|
||||
|
||||
def match_multi_template(self, image, similarity=0.85, threshold=5, direct_match=False):
|
||||
"""
|
||||
Detects assets by template matching, return multiple results
|
||||
|
@ -1076,100 +1076,100 @@
|
||||
"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",
|
||||
"A_Startling_Night_Terror",
|
||||
"Tranquility_of_Vimala_bhumi",
|
||||
"Nameless_Land_Nameless_People",
|
||||
"A_Startling_Night_Terror",
|
||||
"Fire_Lord_Inflames_Blades_of_War",
|
||||
"Root_Out_the_Turpitude",
|
||||
"Born_to_Obey",
|
||||
"Winter_Soldiers",
|
||||
"Destruction_of_the_Destroyer",
|
||||
"Nine_Billion_Names",
|
||||
"Akashic_Records",
|
||||
"Nameless_Land_Nameless_People",
|
||||
"The_Invisible_Hand",
|
||||
"Abandoned_and_Insulted",
|
||||
"Spring_of_Life",
|
||||
"The_Land_of_Gold",
|
||||
"The_Blossom_in_the_Storm",
|
||||
"Legend_of_the_Puppet_Master",
|
||||
"Scalpel_and_Screwdriver",
|
||||
"The_Wages_of_Humanity",
|
||||
"Legend_of_the_Puppet_Master",
|
||||
"The_Land_of_Gold",
|
||||
"Spring_of_Life",
|
||||
"Fragments_of_Illusory_Dreams",
|
||||
"Scalpel_and_Screwdriver"
|
||||
"The_Blossom_in_the_Storm",
|
||||
"Abandoned_and_Insulted"
|
||||
]
|
||||
},
|
||||
"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",
|
||||
"A_Startling_Night_Terror",
|
||||
"Tranquility_of_Vimala_bhumi",
|
||||
"Nameless_Land_Nameless_People",
|
||||
"A_Startling_Night_Terror",
|
||||
"Fire_Lord_Inflames_Blades_of_War",
|
||||
"Root_Out_the_Turpitude",
|
||||
"Born_to_Obey",
|
||||
"Winter_Soldiers",
|
||||
"Destruction_of_the_Destroyer",
|
||||
"Nine_Billion_Names",
|
||||
"Akashic_Records",
|
||||
"Nameless_Land_Nameless_People",
|
||||
"The_Invisible_Hand",
|
||||
"Abandoned_and_Insulted",
|
||||
"Spring_of_Life",
|
||||
"The_Land_of_Gold",
|
||||
"The_Blossom_in_the_Storm",
|
||||
"Legend_of_the_Puppet_Master",
|
||||
"Scalpel_and_Screwdriver",
|
||||
"The_Wages_of_Humanity",
|
||||
"Legend_of_the_Puppet_Master",
|
||||
"The_Land_of_Gold",
|
||||
"Spring_of_Life",
|
||||
"Fragments_of_Illusory_Dreams",
|
||||
"Scalpel_and_Screwdriver"
|
||||
"The_Blossom_in_the_Storm",
|
||||
"Abandoned_and_Insulted"
|
||||
]
|
||||
},
|
||||
"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",
|
||||
"A_Startling_Night_Terror",
|
||||
"Tranquility_of_Vimala_bhumi",
|
||||
"Nameless_Land_Nameless_People",
|
||||
"A_Startling_Night_Terror",
|
||||
"Fire_Lord_Inflames_Blades_of_War",
|
||||
"Root_Out_the_Turpitude",
|
||||
"Born_to_Obey",
|
||||
"Winter_Soldiers",
|
||||
"Destruction_of_the_Destroyer",
|
||||
"Nine_Billion_Names",
|
||||
"Akashic_Records",
|
||||
"Nameless_Land_Nameless_People",
|
||||
"The_Invisible_Hand",
|
||||
"Abandoned_and_Insulted",
|
||||
"Spring_of_Life",
|
||||
"The_Land_of_Gold",
|
||||
"The_Blossom_in_the_Storm",
|
||||
"Legend_of_the_Puppet_Master",
|
||||
"Scalpel_and_Screwdriver",
|
||||
"The_Wages_of_Humanity",
|
||||
"Legend_of_the_Puppet_Master",
|
||||
"The_Land_of_Gold",
|
||||
"Spring_of_Life",
|
||||
"Fragments_of_Illusory_Dreams",
|
||||
"Scalpel_and_Screwdriver"
|
||||
"The_Blossom_in_the_Storm",
|
||||
"Abandoned_and_Insulted"
|
||||
]
|
||||
},
|
||||
"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",
|
||||
"A_Startling_Night_Terror",
|
||||
"Tranquility_of_Vimala_bhumi",
|
||||
"Nameless_Land_Nameless_People",
|
||||
"A_Startling_Night_Terror",
|
||||
"Fire_Lord_Inflames_Blades_of_War",
|
||||
"Root_Out_the_Turpitude",
|
||||
"Born_to_Obey",
|
||||
"Winter_Soldiers",
|
||||
"Destruction_of_the_Destroyer",
|
||||
"Nine_Billion_Names",
|
||||
"Akashic_Records",
|
||||
"Nameless_Land_Nameless_People",
|
||||
"The_Invisible_Hand",
|
||||
"Abandoned_and_Insulted",
|
||||
"Spring_of_Life",
|
||||
"The_Land_of_Gold",
|
||||
"The_Blossom_in_the_Storm",
|
||||
"Legend_of_the_Puppet_Master",
|
||||
"Scalpel_and_Screwdriver",
|
||||
"The_Wages_of_Humanity",
|
||||
"Legend_of_the_Puppet_Master",
|
||||
"The_Land_of_Gold",
|
||||
"Spring_of_Life",
|
||||
"Fragments_of_Illusory_Dreams",
|
||||
"Scalpel_and_Screwdriver"
|
||||
"The_Blossom_in_the_Storm",
|
||||
"Abandoned_and_Insulted"
|
||||
]
|
||||
},
|
||||
"Duration": {
|
||||
|
@ -119,10 +119,10 @@ class GeneratedConfig:
|
||||
BattlePassStorage_BattlePassQuestTrailblazePower = {}
|
||||
|
||||
# Group `Assignment`
|
||||
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, A_Startling_Night_Terror, Tranquility_of_Vimala_bhumi, Nameless_Land_Nameless_People, Akashic_Records, The_Invisible_Hand, Abandoned_and_Insulted, Spring_of_Life, The_Land_of_Gold, The_Blossom_in_the_Storm, Legend_of_the_Puppet_Master, The_Wages_of_Humanity, Fragments_of_Illusory_Dreams, Scalpel_and_Screwdriver
|
||||
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, A_Startling_Night_Terror, Tranquility_of_Vimala_bhumi, Nameless_Land_Nameless_People, Akashic_Records, The_Invisible_Hand, Abandoned_and_Insulted, Spring_of_Life, The_Land_of_Gold, The_Blossom_in_the_Storm, Legend_of_the_Puppet_Master, The_Wages_of_Humanity, Fragments_of_Illusory_Dreams, Scalpel_and_Screwdriver
|
||||
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, A_Startling_Night_Terror, Tranquility_of_Vimala_bhumi, Nameless_Land_Nameless_People, Akashic_Records, The_Invisible_Hand, Abandoned_and_Insulted, Spring_of_Life, The_Land_of_Gold, The_Blossom_in_the_Storm, Legend_of_the_Puppet_Master, The_Wages_of_Humanity, Fragments_of_Illusory_Dreams, Scalpel_and_Screwdriver
|
||||
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, A_Startling_Night_Terror, Tranquility_of_Vimala_bhumi, Nameless_Land_Nameless_People, Akashic_Records, The_Invisible_Hand, Abandoned_and_Insulted, Spring_of_Life, The_Land_of_Gold, The_Blossom_in_the_Storm, Legend_of_the_Puppet_Master, The_Wages_of_Humanity, Fragments_of_Illusory_Dreams, Scalpel_and_Screwdriver
|
||||
Assignment_Name_1 = 'Nameless_Land_Nameless_People' # Tranquility_of_Vimala_bhumi, A_Startling_Night_Terror, Fire_Lord_Inflames_Blades_of_War, Root_Out_the_Turpitude, Born_to_Obey, Winter_Soldiers, Destruction_of_the_Destroyer, Nine_Billion_Names, Akashic_Records, Nameless_Land_Nameless_People, The_Invisible_Hand, Scalpel_and_Screwdriver, The_Wages_of_Humanity, Legend_of_the_Puppet_Master, The_Land_of_Gold, Spring_of_Life, Fragments_of_Illusory_Dreams, The_Blossom_in_the_Storm, Abandoned_and_Insulted
|
||||
Assignment_Name_2 = 'Akashic_Records' # Tranquility_of_Vimala_bhumi, A_Startling_Night_Terror, Fire_Lord_Inflames_Blades_of_War, Root_Out_the_Turpitude, Born_to_Obey, Winter_Soldiers, Destruction_of_the_Destroyer, Nine_Billion_Names, Akashic_Records, Nameless_Land_Nameless_People, The_Invisible_Hand, Scalpel_and_Screwdriver, The_Wages_of_Humanity, Legend_of_the_Puppet_Master, The_Land_of_Gold, Spring_of_Life, Fragments_of_Illusory_Dreams, The_Blossom_in_the_Storm, Abandoned_and_Insulted
|
||||
Assignment_Name_3 = 'The_Invisible_Hand' # Tranquility_of_Vimala_bhumi, A_Startling_Night_Terror, Fire_Lord_Inflames_Blades_of_War, Root_Out_the_Turpitude, Born_to_Obey, Winter_Soldiers, Destruction_of_the_Destroyer, Nine_Billion_Names, Akashic_Records, Nameless_Land_Nameless_People, The_Invisible_Hand, Scalpel_and_Screwdriver, The_Wages_of_Humanity, Legend_of_the_Puppet_Master, The_Land_of_Gold, Spring_of_Life, Fragments_of_Illusory_Dreams, The_Blossom_in_the_Storm, Abandoned_and_Insulted
|
||||
Assignment_Name_4 = 'Nine_Billion_Names' # Tranquility_of_Vimala_bhumi, A_Startling_Night_Terror, Fire_Lord_Inflames_Blades_of_War, Root_Out_the_Turpitude, Born_to_Obey, Winter_Soldiers, Destruction_of_the_Destroyer, Nine_Billion_Names, Akashic_Records, Nameless_Land_Nameless_People, The_Invisible_Hand, Scalpel_and_Screwdriver, The_Wages_of_Humanity, Legend_of_the_Puppet_Master, The_Land_of_Gold, Spring_of_Life, Fragments_of_Illusory_Dreams, The_Blossom_in_the_Storm, Abandoned_and_Insulted
|
||||
Assignment_Duration = 20 # 4, 8, 12, 20
|
||||
Assignment_Event = True
|
||||
Assignment_Assignment = {}
|
||||
|
@ -809,94 +809,94 @@
|
||||
"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)",
|
||||
"A_Startling_Night_Terror": "Dream Collection Component (A Startling Night Terror)",
|
||||
"Tranquility_of_Vimala_bhumi": "Tatters of Thought (Tranquility of Vimala-bhumi)",
|
||||
"Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)",
|
||||
"A_Startling_Night_Terror": "Dream Collection Component (A Startling Night Terror)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Artifex's Module (Fire Lord Inflames Blades of War)",
|
||||
"Root_Out_the_Turpitude": "Immortal Scionette (Root Out the Turpitude)",
|
||||
"Born_to_Obey": "Ancient Part (Born to Obey)",
|
||||
"Winter_Soldiers": "Silvermane Badge (Winter Soldiers)",
|
||||
"Destruction_of_the_Destroyer": "Thief's Instinct (Destruction of the Destroyer)",
|
||||
"Nine_Billion_Names": "Extinguished Core (Nine Billion Names)",
|
||||
"Akashic_Records": "Light Cone EXP Material (Akashic Records)",
|
||||
"Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)",
|
||||
"The_Invisible_Hand": "Credit (The Invisible Hand)",
|
||||
"Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)",
|
||||
"Spring_of_Life": "Solid Water & Virtual Particle (Spring of Life)",
|
||||
"The_Land_of_Gold": "Basic Ingredients & Protein Rice (The Land of Gold)",
|
||||
"The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)",
|
||||
"Legend_of_the_Puppet_Master": "Discarded Ingenium Parts & Jade Abacus Unit (Legend of the Puppet Master)",
|
||||
"Scalpel_and_Screwdriver": "Rusty Gear & Old Molar (Scalpel and Screwdriver)",
|
||||
"The_Wages_of_Humanity": "Human-Height Auspicious Crops & Extract of Medicinal Herbs (The Wages of Humanity)",
|
||||
"Legend_of_the_Puppet_Master": "Discarded Ingenium Parts & Jade Abacus Unit (Legend of the Puppet Master)",
|
||||
"The_Land_of_Gold": "Basic Ingredients & Protein Rice (The Land of Gold)",
|
||||
"Spring_of_Life": "Solid Water & Virtual Particle (Spring of Life)",
|
||||
"Fragments_of_Illusory_Dreams": "Tranquility & Broken Dreams (Fragments of Illusory Dreams)",
|
||||
"Scalpel_and_Screwdriver": "Rusty Gear & Old Molar (Scalpel and Screwdriver)"
|
||||
"The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)",
|
||||
"Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)"
|
||||
},
|
||||
"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)",
|
||||
"A_Startling_Night_Terror": "Dream Collection Component (A Startling Night Terror)",
|
||||
"Tranquility_of_Vimala_bhumi": "Tatters of Thought (Tranquility of Vimala-bhumi)",
|
||||
"Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)",
|
||||
"A_Startling_Night_Terror": "Dream Collection Component (A Startling Night Terror)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Artifex's Module (Fire Lord Inflames Blades of War)",
|
||||
"Root_Out_the_Turpitude": "Immortal Scionette (Root Out the Turpitude)",
|
||||
"Born_to_Obey": "Ancient Part (Born to Obey)",
|
||||
"Winter_Soldiers": "Silvermane Badge (Winter Soldiers)",
|
||||
"Destruction_of_the_Destroyer": "Thief's Instinct (Destruction of the Destroyer)",
|
||||
"Nine_Billion_Names": "Extinguished Core (Nine Billion Names)",
|
||||
"Akashic_Records": "Light Cone EXP Material (Akashic Records)",
|
||||
"Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)",
|
||||
"The_Invisible_Hand": "Credit (The Invisible Hand)",
|
||||
"Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)",
|
||||
"Spring_of_Life": "Solid Water & Virtual Particle (Spring of Life)",
|
||||
"The_Land_of_Gold": "Basic Ingredients & Protein Rice (The Land of Gold)",
|
||||
"The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)",
|
||||
"Legend_of_the_Puppet_Master": "Discarded Ingenium Parts & Jade Abacus Unit (Legend of the Puppet Master)",
|
||||
"Scalpel_and_Screwdriver": "Rusty Gear & Old Molar (Scalpel and Screwdriver)",
|
||||
"The_Wages_of_Humanity": "Human-Height Auspicious Crops & Extract of Medicinal Herbs (The Wages of Humanity)",
|
||||
"Legend_of_the_Puppet_Master": "Discarded Ingenium Parts & Jade Abacus Unit (Legend of the Puppet Master)",
|
||||
"The_Land_of_Gold": "Basic Ingredients & Protein Rice (The Land of Gold)",
|
||||
"Spring_of_Life": "Solid Water & Virtual Particle (Spring of Life)",
|
||||
"Fragments_of_Illusory_Dreams": "Tranquility & Broken Dreams (Fragments of Illusory Dreams)",
|
||||
"Scalpel_and_Screwdriver": "Rusty Gear & Old Molar (Scalpel and Screwdriver)"
|
||||
"The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)",
|
||||
"Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)"
|
||||
},
|
||||
"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)",
|
||||
"A_Startling_Night_Terror": "Dream Collection Component (A Startling Night Terror)",
|
||||
"Tranquility_of_Vimala_bhumi": "Tatters of Thought (Tranquility of Vimala-bhumi)",
|
||||
"Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)",
|
||||
"A_Startling_Night_Terror": "Dream Collection Component (A Startling Night Terror)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Artifex's Module (Fire Lord Inflames Blades of War)",
|
||||
"Root_Out_the_Turpitude": "Immortal Scionette (Root Out the Turpitude)",
|
||||
"Born_to_Obey": "Ancient Part (Born to Obey)",
|
||||
"Winter_Soldiers": "Silvermane Badge (Winter Soldiers)",
|
||||
"Destruction_of_the_Destroyer": "Thief's Instinct (Destruction of the Destroyer)",
|
||||
"Nine_Billion_Names": "Extinguished Core (Nine Billion Names)",
|
||||
"Akashic_Records": "Light Cone EXP Material (Akashic Records)",
|
||||
"Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)",
|
||||
"The_Invisible_Hand": "Credit (The Invisible Hand)",
|
||||
"Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)",
|
||||
"Spring_of_Life": "Solid Water & Virtual Particle (Spring of Life)",
|
||||
"The_Land_of_Gold": "Basic Ingredients & Protein Rice (The Land of Gold)",
|
||||
"The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)",
|
||||
"Legend_of_the_Puppet_Master": "Discarded Ingenium Parts & Jade Abacus Unit (Legend of the Puppet Master)",
|
||||
"Scalpel_and_Screwdriver": "Rusty Gear & Old Molar (Scalpel and Screwdriver)",
|
||||
"The_Wages_of_Humanity": "Human-Height Auspicious Crops & Extract of Medicinal Herbs (The Wages of Humanity)",
|
||||
"Legend_of_the_Puppet_Master": "Discarded Ingenium Parts & Jade Abacus Unit (Legend of the Puppet Master)",
|
||||
"The_Land_of_Gold": "Basic Ingredients & Protein Rice (The Land of Gold)",
|
||||
"Spring_of_Life": "Solid Water & Virtual Particle (Spring of Life)",
|
||||
"Fragments_of_Illusory_Dreams": "Tranquility & Broken Dreams (Fragments of Illusory Dreams)",
|
||||
"Scalpel_and_Screwdriver": "Rusty Gear & Old Molar (Scalpel and Screwdriver)"
|
||||
"The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)",
|
||||
"Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)"
|
||||
},
|
||||
"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)",
|
||||
"A_Startling_Night_Terror": "Dream Collection Component (A Startling Night Terror)",
|
||||
"Tranquility_of_Vimala_bhumi": "Tatters of Thought (Tranquility of Vimala-bhumi)",
|
||||
"Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)",
|
||||
"A_Startling_Night_Terror": "Dream Collection Component (A Startling Night Terror)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Artifex's Module (Fire Lord Inflames Blades of War)",
|
||||
"Root_Out_the_Turpitude": "Immortal Scionette (Root Out the Turpitude)",
|
||||
"Born_to_Obey": "Ancient Part (Born to Obey)",
|
||||
"Winter_Soldiers": "Silvermane Badge (Winter Soldiers)",
|
||||
"Destruction_of_the_Destroyer": "Thief's Instinct (Destruction of the Destroyer)",
|
||||
"Nine_Billion_Names": "Extinguished Core (Nine Billion Names)",
|
||||
"Akashic_Records": "Light Cone EXP Material (Akashic Records)",
|
||||
"Nameless_Land_Nameless_People": "Character EXP Material (Nameless Land, Nameless People)",
|
||||
"The_Invisible_Hand": "Credit (The Invisible Hand)",
|
||||
"Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)",
|
||||
"Spring_of_Life": "Solid Water & Virtual Particle (Spring of Life)",
|
||||
"The_Land_of_Gold": "Basic Ingredients & Protein Rice (The Land of Gold)",
|
||||
"The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)",
|
||||
"Legend_of_the_Puppet_Master": "Discarded Ingenium Parts & Jade Abacus Unit (Legend of the Puppet Master)",
|
||||
"Scalpel_and_Screwdriver": "Rusty Gear & Old Molar (Scalpel and Screwdriver)",
|
||||
"The_Wages_of_Humanity": "Human-Height Auspicious Crops & Extract of Medicinal Herbs (The Wages of Humanity)",
|
||||
"Legend_of_the_Puppet_Master": "Discarded Ingenium Parts & Jade Abacus Unit (Legend of the Puppet Master)",
|
||||
"The_Land_of_Gold": "Basic Ingredients & Protein Rice (The Land of Gold)",
|
||||
"Spring_of_Life": "Solid Water & Virtual Particle (Spring of Life)",
|
||||
"Fragments_of_Illusory_Dreams": "Tranquility & Broken Dreams (Fragments of Illusory Dreams)",
|
||||
"Scalpel_and_Screwdriver": "Rusty Gear & Old Molar (Scalpel and Screwdriver)"
|
||||
"The_Blossom_in_the_Storm": "Gaseous Liquid & Seed (The Blossom in the Storm)",
|
||||
"Abandoned_and_Insulted": "Phlogiston & Metal (Abandoned and Insulted)"
|
||||
},
|
||||
"Duration": {
|
||||
"name": "Dispatch Duration",
|
||||
|
@ -809,94 +809,94 @@
|
||||
"Name_1": {
|
||||
"name": "Preferencia de Encargo 1",
|
||||
"help": "",
|
||||
"Nine_Billion_Names": "Núcleo apagado (Nueve mil millones de nombres)",
|
||||
"Destruction_of_the_Destroyer": "Instinto del ladrón (La destrucción del destructor)",
|
||||
"Winter_Soldiers": "Pin del guardia (Los guerreros del invierno)",
|
||||
"Born_to_Obey": "Componente antiguo (Creados para obedecer)",
|
||||
"Root_Out_the_Turpitude": "Brote verde inmortal (La raíz del mal)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Componente artificial mecánico (Prendan los fuelles, fundan las armas)",
|
||||
"A_Startling_Night_Terror": "Componente del acumulador de sueños (Pesadilla aterradora)",
|
||||
"Tranquility_of_Vimala_bhumi": "Jirones de pensamientos (Limpieza y purificación)",
|
||||
"Nameless_Land_Nameless_People": "Material de EXP de personaje (Lugar anónimo, personas anónimas)",
|
||||
"A_Startling_Night_Terror": "Componente del acumulador de sueños (Pesadilla aterradora)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Componente artificial mecánico (Prendan los fuelles, fundan las armas)",
|
||||
"Root_Out_the_Turpitude": "Brote verde inmortal (La raíz del mal)",
|
||||
"Born_to_Obey": "Componente antiguo (Creados para obedecer)",
|
||||
"Winter_Soldiers": "Pin del guardia (Los guerreros del invierno)",
|
||||
"Destruction_of_the_Destroyer": "Instinto del ladrón (La destrucción del destructor)",
|
||||
"Nine_Billion_Names": "Núcleo apagado (Nueve mil millones de nombres)",
|
||||
"Akashic_Records": "Material de EXP de conos de luz (Los Registros de Akasha)",
|
||||
"Nameless_Land_Nameless_People": "Material de EXP de personaje (Lugar anónimo, personas anónimas)",
|
||||
"The_Invisible_Hand": "Crédito (La mano invisible)",
|
||||
"Abandoned_and_Insulted": "Flogisto & Metal (Abandonado e insultado)",
|
||||
"Spring_of_Life": "Agua sólida & Partícula virtual (La fuente de la vida)",
|
||||
"The_Land_of_Gold": "Ingredientes básicos & Arroz proteico (Tierra de oportunidades)",
|
||||
"The_Blossom_in_the_Storm": "Líquido gaseoso & Semilla (Flores en la tormenta)",
|
||||
"Legend_of_the_Puppet_Master": "Componentes mecánicos abandonados & Unidad de ábaco de jade (La leyenda del titiritero)",
|
||||
"Scalpel_and_Screwdriver": "Engranaje oxidado & Muela vieja (Bisturí y destornillador)",
|
||||
"The_Wages_of_Humanity": "Cosecha tan alta como una persona & Extracto de hierbas medicinales (La paga de la humanidad)",
|
||||
"Legend_of_the_Puppet_Master": "Componentes mecánicos abandonados & Unidad de ábaco de jade (La leyenda del titiritero)",
|
||||
"The_Land_of_Gold": "Ingredientes básicos & Arroz proteico (Tierra de oportunidades)",
|
||||
"Spring_of_Life": "Agua sólida & Partícula virtual (La fuente de la vida)",
|
||||
"Fragments_of_Illusory_Dreams": "Tranquilidad & Sueños rotos (Fragmentos de sueños ilusorios)",
|
||||
"Scalpel_and_Screwdriver": "Engranaje oxidado & Muela vieja (Bisturí y destornillador)"
|
||||
"The_Blossom_in_the_Storm": "Líquido gaseoso & Semilla (Flores en la tormenta)",
|
||||
"Abandoned_and_Insulted": "Flogisto & Metal (Abandonado e insultado)"
|
||||
},
|
||||
"Name_2": {
|
||||
"name": "Preferencia de Encargo 2",
|
||||
"help": "",
|
||||
"Nine_Billion_Names": "Núcleo apagado (Nueve mil millones de nombres)",
|
||||
"Destruction_of_the_Destroyer": "Instinto del ladrón (La destrucción del destructor)",
|
||||
"Winter_Soldiers": "Pin del guardia (Los guerreros del invierno)",
|
||||
"Born_to_Obey": "Componente antiguo (Creados para obedecer)",
|
||||
"Root_Out_the_Turpitude": "Brote verde inmortal (La raíz del mal)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Componente artificial mecánico (Prendan los fuelles, fundan las armas)",
|
||||
"A_Startling_Night_Terror": "Componente del acumulador de sueños (Pesadilla aterradora)",
|
||||
"Tranquility_of_Vimala_bhumi": "Jirones de pensamientos (Limpieza y purificación)",
|
||||
"Nameless_Land_Nameless_People": "Material de EXP de personaje (Lugar anónimo, personas anónimas)",
|
||||
"A_Startling_Night_Terror": "Componente del acumulador de sueños (Pesadilla aterradora)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Componente artificial mecánico (Prendan los fuelles, fundan las armas)",
|
||||
"Root_Out_the_Turpitude": "Brote verde inmortal (La raíz del mal)",
|
||||
"Born_to_Obey": "Componente antiguo (Creados para obedecer)",
|
||||
"Winter_Soldiers": "Pin del guardia (Los guerreros del invierno)",
|
||||
"Destruction_of_the_Destroyer": "Instinto del ladrón (La destrucción del destructor)",
|
||||
"Nine_Billion_Names": "Núcleo apagado (Nueve mil millones de nombres)",
|
||||
"Akashic_Records": "Material de EXP de conos de luz (Los Registros de Akasha)",
|
||||
"Nameless_Land_Nameless_People": "Material de EXP de personaje (Lugar anónimo, personas anónimas)",
|
||||
"The_Invisible_Hand": "Crédito (La mano invisible)",
|
||||
"Abandoned_and_Insulted": "Flogisto & Metal (Abandonado e insultado)",
|
||||
"Spring_of_Life": "Agua sólida & Partícula virtual (La fuente de la vida)",
|
||||
"The_Land_of_Gold": "Ingredientes básicos & Arroz proteico (Tierra de oportunidades)",
|
||||
"The_Blossom_in_the_Storm": "Líquido gaseoso & Semilla (Flores en la tormenta)",
|
||||
"Legend_of_the_Puppet_Master": "Componentes mecánicos abandonados & Unidad de ábaco de jade (La leyenda del titiritero)",
|
||||
"Scalpel_and_Screwdriver": "Engranaje oxidado & Muela vieja (Bisturí y destornillador)",
|
||||
"The_Wages_of_Humanity": "Cosecha tan alta como una persona & Extracto de hierbas medicinales (La paga de la humanidad)",
|
||||
"Legend_of_the_Puppet_Master": "Componentes mecánicos abandonados & Unidad de ábaco de jade (La leyenda del titiritero)",
|
||||
"The_Land_of_Gold": "Ingredientes básicos & Arroz proteico (Tierra de oportunidades)",
|
||||
"Spring_of_Life": "Agua sólida & Partícula virtual (La fuente de la vida)",
|
||||
"Fragments_of_Illusory_Dreams": "Tranquilidad & Sueños rotos (Fragmentos de sueños ilusorios)",
|
||||
"Scalpel_and_Screwdriver": "Engranaje oxidado & Muela vieja (Bisturí y destornillador)"
|
||||
"The_Blossom_in_the_Storm": "Líquido gaseoso & Semilla (Flores en la tormenta)",
|
||||
"Abandoned_and_Insulted": "Flogisto & Metal (Abandonado e insultado)"
|
||||
},
|
||||
"Name_3": {
|
||||
"name": "Preferencia de Encargo 3",
|
||||
"help": "",
|
||||
"Nine_Billion_Names": "Núcleo apagado (Nueve mil millones de nombres)",
|
||||
"Destruction_of_the_Destroyer": "Instinto del ladrón (La destrucción del destructor)",
|
||||
"Winter_Soldiers": "Pin del guardia (Los guerreros del invierno)",
|
||||
"Born_to_Obey": "Componente antiguo (Creados para obedecer)",
|
||||
"Root_Out_the_Turpitude": "Brote verde inmortal (La raíz del mal)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Componente artificial mecánico (Prendan los fuelles, fundan las armas)",
|
||||
"A_Startling_Night_Terror": "Componente del acumulador de sueños (Pesadilla aterradora)",
|
||||
"Tranquility_of_Vimala_bhumi": "Jirones de pensamientos (Limpieza y purificación)",
|
||||
"Nameless_Land_Nameless_People": "Material de EXP de personaje (Lugar anónimo, personas anónimas)",
|
||||
"A_Startling_Night_Terror": "Componente del acumulador de sueños (Pesadilla aterradora)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Componente artificial mecánico (Prendan los fuelles, fundan las armas)",
|
||||
"Root_Out_the_Turpitude": "Brote verde inmortal (La raíz del mal)",
|
||||
"Born_to_Obey": "Componente antiguo (Creados para obedecer)",
|
||||
"Winter_Soldiers": "Pin del guardia (Los guerreros del invierno)",
|
||||
"Destruction_of_the_Destroyer": "Instinto del ladrón (La destrucción del destructor)",
|
||||
"Nine_Billion_Names": "Núcleo apagado (Nueve mil millones de nombres)",
|
||||
"Akashic_Records": "Material de EXP de conos de luz (Los Registros de Akasha)",
|
||||
"Nameless_Land_Nameless_People": "Material de EXP de personaje (Lugar anónimo, personas anónimas)",
|
||||
"The_Invisible_Hand": "Crédito (La mano invisible)",
|
||||
"Abandoned_and_Insulted": "Flogisto & Metal (Abandonado e insultado)",
|
||||
"Spring_of_Life": "Agua sólida & Partícula virtual (La fuente de la vida)",
|
||||
"The_Land_of_Gold": "Ingredientes básicos & Arroz proteico (Tierra de oportunidades)",
|
||||
"The_Blossom_in_the_Storm": "Líquido gaseoso & Semilla (Flores en la tormenta)",
|
||||
"Legend_of_the_Puppet_Master": "Componentes mecánicos abandonados & Unidad de ábaco de jade (La leyenda del titiritero)",
|
||||
"Scalpel_and_Screwdriver": "Engranaje oxidado & Muela vieja (Bisturí y destornillador)",
|
||||
"The_Wages_of_Humanity": "Cosecha tan alta como una persona & Extracto de hierbas medicinales (La paga de la humanidad)",
|
||||
"Legend_of_the_Puppet_Master": "Componentes mecánicos abandonados & Unidad de ábaco de jade (La leyenda del titiritero)",
|
||||
"The_Land_of_Gold": "Ingredientes básicos & Arroz proteico (Tierra de oportunidades)",
|
||||
"Spring_of_Life": "Agua sólida & Partícula virtual (La fuente de la vida)",
|
||||
"Fragments_of_Illusory_Dreams": "Tranquilidad & Sueños rotos (Fragmentos de sueños ilusorios)",
|
||||
"Scalpel_and_Screwdriver": "Engranaje oxidado & Muela vieja (Bisturí y destornillador)"
|
||||
"The_Blossom_in_the_Storm": "Líquido gaseoso & Semilla (Flores en la tormenta)",
|
||||
"Abandoned_and_Insulted": "Flogisto & Metal (Abandonado e insultado)"
|
||||
},
|
||||
"Name_4": {
|
||||
"name": "Preferencia de Encargo 4",
|
||||
"help": "",
|
||||
"Nine_Billion_Names": "Núcleo apagado (Nueve mil millones de nombres)",
|
||||
"Destruction_of_the_Destroyer": "Instinto del ladrón (La destrucción del destructor)",
|
||||
"Winter_Soldiers": "Pin del guardia (Los guerreros del invierno)",
|
||||
"Born_to_Obey": "Componente antiguo (Creados para obedecer)",
|
||||
"Root_Out_the_Turpitude": "Brote verde inmortal (La raíz del mal)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Componente artificial mecánico (Prendan los fuelles, fundan las armas)",
|
||||
"A_Startling_Night_Terror": "Componente del acumulador de sueños (Pesadilla aterradora)",
|
||||
"Tranquility_of_Vimala_bhumi": "Jirones de pensamientos (Limpieza y purificación)",
|
||||
"Nameless_Land_Nameless_People": "Material de EXP de personaje (Lugar anónimo, personas anónimas)",
|
||||
"A_Startling_Night_Terror": "Componente del acumulador de sueños (Pesadilla aterradora)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "Componente artificial mecánico (Prendan los fuelles, fundan las armas)",
|
||||
"Root_Out_the_Turpitude": "Brote verde inmortal (La raíz del mal)",
|
||||
"Born_to_Obey": "Componente antiguo (Creados para obedecer)",
|
||||
"Winter_Soldiers": "Pin del guardia (Los guerreros del invierno)",
|
||||
"Destruction_of_the_Destroyer": "Instinto del ladrón (La destrucción del destructor)",
|
||||
"Nine_Billion_Names": "Núcleo apagado (Nueve mil millones de nombres)",
|
||||
"Akashic_Records": "Material de EXP de conos de luz (Los Registros de Akasha)",
|
||||
"Nameless_Land_Nameless_People": "Material de EXP de personaje (Lugar anónimo, personas anónimas)",
|
||||
"The_Invisible_Hand": "Crédito (La mano invisible)",
|
||||
"Abandoned_and_Insulted": "Flogisto & Metal (Abandonado e insultado)",
|
||||
"Spring_of_Life": "Agua sólida & Partícula virtual (La fuente de la vida)",
|
||||
"The_Land_of_Gold": "Ingredientes básicos & Arroz proteico (Tierra de oportunidades)",
|
||||
"The_Blossom_in_the_Storm": "Líquido gaseoso & Semilla (Flores en la tormenta)",
|
||||
"Legend_of_the_Puppet_Master": "Componentes mecánicos abandonados & Unidad de ábaco de jade (La leyenda del titiritero)",
|
||||
"Scalpel_and_Screwdriver": "Engranaje oxidado & Muela vieja (Bisturí y destornillador)",
|
||||
"The_Wages_of_Humanity": "Cosecha tan alta como una persona & Extracto de hierbas medicinales (La paga de la humanidad)",
|
||||
"Legend_of_the_Puppet_Master": "Componentes mecánicos abandonados & Unidad de ábaco de jade (La leyenda del titiritero)",
|
||||
"The_Land_of_Gold": "Ingredientes básicos & Arroz proteico (Tierra de oportunidades)",
|
||||
"Spring_of_Life": "Agua sólida & Partícula virtual (La fuente de la vida)",
|
||||
"Fragments_of_Illusory_Dreams": "Tranquilidad & Sueños rotos (Fragmentos de sueños ilusorios)",
|
||||
"Scalpel_and_Screwdriver": "Engranaje oxidado & Muela vieja (Bisturí y destornillador)"
|
||||
"The_Blossom_in_the_Storm": "Líquido gaseoso & Semilla (Flores en la tormenta)",
|
||||
"Abandoned_and_Insulted": "Flogisto & Metal (Abandonado e insultado)"
|
||||
},
|
||||
"Duration": {
|
||||
"name": "Duración del encargo",
|
||||
|
@ -809,94 +809,94 @@
|
||||
"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": "工造機関(剣戟を焼却する火帝炉)",
|
||||
"A_Startling_Night_Terror": "ドリームコレクションパーツ(魂震える悪夢)",
|
||||
"Tranquility_of_Vimala_bhumi": "思考の粉末(離垢清浄)",
|
||||
"Nameless_Land_Nameless_People": "キャラクター経験値素材(無名の地、無名の人)",
|
||||
"A_Startling_Night_Terror": "ドリームコレクションパーツ(魂震える悪夢)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造機関(剣戟を焼却する火帝炉)",
|
||||
"Root_Out_the_Turpitude": "永寿の萌芽(悪孽を根絶やしに)",
|
||||
"Born_to_Obey": "古代パーツ(生まれながらに服従する)",
|
||||
"Winter_Soldiers": "シルバーメインの釦(寒冬の戦士たち)",
|
||||
"Destruction_of_the_Destroyer": "略奪の本能(壊滅者の覆没)",
|
||||
"Nine_Billion_Names": "消滅した原核(九十億の御名)",
|
||||
"Akashic_Records": "光円錐経験値素材(アーカーシャの記録)",
|
||||
"Nameless_Land_Nameless_People": "キャラクター経験値素材(無名の地、無名の人)",
|
||||
"The_Invisible_Hand": "信用ポイント(見えざる手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(捨てられしものと傷つけられしもの)",
|
||||
"Spring_of_Life": "固形純水 & 仮想粒子(生命の泉)",
|
||||
"The_Land_of_Gold": "基本食材 & タンパク米(黄金の大地)",
|
||||
"The_Blossom_in_the_Storm": "気態流体 & 種子(嵐の中で咲き誇る花)",
|
||||
"Legend_of_the_Puppet_Master": "廃棄された機巧部品 & 玉兆単元(傀儡師伝説)",
|
||||
"Scalpel_and_Screwdriver": "錆びた歯車 & 古びた大臼歯(メスとスクリュードライバー)",
|
||||
"The_Wages_of_Humanity": "一人稲 & 薬草抽出物(人類扶養)",
|
||||
"Legend_of_the_Puppet_Master": "廃棄された機巧部品 & 玉兆単元(傀儡師伝説)",
|
||||
"The_Land_of_Gold": "基本食材 & タンパク米(黄金の大地)",
|
||||
"Spring_of_Life": "固形純水 & 仮想粒子(生命の泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 砕けた夢(幻夢の残片)",
|
||||
"Scalpel_and_Screwdriver": "錆びた歯車 & 古びた大臼歯(メスとスクリュードライバー)"
|
||||
"The_Blossom_in_the_Storm": "気態流体 & 種子(嵐の中で咲き誇る花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(捨てられしものと傷つけられしもの)"
|
||||
},
|
||||
"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": "工造機関(剣戟を焼却する火帝炉)",
|
||||
"A_Startling_Night_Terror": "ドリームコレクションパーツ(魂震える悪夢)",
|
||||
"Tranquility_of_Vimala_bhumi": "思考の粉末(離垢清浄)",
|
||||
"Nameless_Land_Nameless_People": "キャラクター経験値素材(無名の地、無名の人)",
|
||||
"A_Startling_Night_Terror": "ドリームコレクションパーツ(魂震える悪夢)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造機関(剣戟を焼却する火帝炉)",
|
||||
"Root_Out_the_Turpitude": "永寿の萌芽(悪孽を根絶やしに)",
|
||||
"Born_to_Obey": "古代パーツ(生まれながらに服従する)",
|
||||
"Winter_Soldiers": "シルバーメインの釦(寒冬の戦士たち)",
|
||||
"Destruction_of_the_Destroyer": "略奪の本能(壊滅者の覆没)",
|
||||
"Nine_Billion_Names": "消滅した原核(九十億の御名)",
|
||||
"Akashic_Records": "光円錐経験値素材(アーカーシャの記録)",
|
||||
"Nameless_Land_Nameless_People": "キャラクター経験値素材(無名の地、無名の人)",
|
||||
"The_Invisible_Hand": "信用ポイント(見えざる手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(捨てられしものと傷つけられしもの)",
|
||||
"Spring_of_Life": "固形純水 & 仮想粒子(生命の泉)",
|
||||
"The_Land_of_Gold": "基本食材 & タンパク米(黄金の大地)",
|
||||
"The_Blossom_in_the_Storm": "気態流体 & 種子(嵐の中で咲き誇る花)",
|
||||
"Legend_of_the_Puppet_Master": "廃棄された機巧部品 & 玉兆単元(傀儡師伝説)",
|
||||
"Scalpel_and_Screwdriver": "錆びた歯車 & 古びた大臼歯(メスとスクリュードライバー)",
|
||||
"The_Wages_of_Humanity": "一人稲 & 薬草抽出物(人類扶養)",
|
||||
"Legend_of_the_Puppet_Master": "廃棄された機巧部品 & 玉兆単元(傀儡師伝説)",
|
||||
"The_Land_of_Gold": "基本食材 & タンパク米(黄金の大地)",
|
||||
"Spring_of_Life": "固形純水 & 仮想粒子(生命の泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 砕けた夢(幻夢の残片)",
|
||||
"Scalpel_and_Screwdriver": "錆びた歯車 & 古びた大臼歯(メスとスクリュードライバー)"
|
||||
"The_Blossom_in_the_Storm": "気態流体 & 種子(嵐の中で咲き誇る花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(捨てられしものと傷つけられしもの)"
|
||||
},
|
||||
"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": "工造機関(剣戟を焼却する火帝炉)",
|
||||
"A_Startling_Night_Terror": "ドリームコレクションパーツ(魂震える悪夢)",
|
||||
"Tranquility_of_Vimala_bhumi": "思考の粉末(離垢清浄)",
|
||||
"Nameless_Land_Nameless_People": "キャラクター経験値素材(無名の地、無名の人)",
|
||||
"A_Startling_Night_Terror": "ドリームコレクションパーツ(魂震える悪夢)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造機関(剣戟を焼却する火帝炉)",
|
||||
"Root_Out_the_Turpitude": "永寿の萌芽(悪孽を根絶やしに)",
|
||||
"Born_to_Obey": "古代パーツ(生まれながらに服従する)",
|
||||
"Winter_Soldiers": "シルバーメインの釦(寒冬の戦士たち)",
|
||||
"Destruction_of_the_Destroyer": "略奪の本能(壊滅者の覆没)",
|
||||
"Nine_Billion_Names": "消滅した原核(九十億の御名)",
|
||||
"Akashic_Records": "光円錐経験値素材(アーカーシャの記録)",
|
||||
"Nameless_Land_Nameless_People": "キャラクター経験値素材(無名の地、無名の人)",
|
||||
"The_Invisible_Hand": "信用ポイント(見えざる手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(捨てられしものと傷つけられしもの)",
|
||||
"Spring_of_Life": "固形純水 & 仮想粒子(生命の泉)",
|
||||
"The_Land_of_Gold": "基本食材 & タンパク米(黄金の大地)",
|
||||
"The_Blossom_in_the_Storm": "気態流体 & 種子(嵐の中で咲き誇る花)",
|
||||
"Legend_of_the_Puppet_Master": "廃棄された機巧部品 & 玉兆単元(傀儡師伝説)",
|
||||
"Scalpel_and_Screwdriver": "錆びた歯車 & 古びた大臼歯(メスとスクリュードライバー)",
|
||||
"The_Wages_of_Humanity": "一人稲 & 薬草抽出物(人類扶養)",
|
||||
"Legend_of_the_Puppet_Master": "廃棄された機巧部品 & 玉兆単元(傀儡師伝説)",
|
||||
"The_Land_of_Gold": "基本食材 & タンパク米(黄金の大地)",
|
||||
"Spring_of_Life": "固形純水 & 仮想粒子(生命の泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 砕けた夢(幻夢の残片)",
|
||||
"Scalpel_and_Screwdriver": "錆びた歯車 & 古びた大臼歯(メスとスクリュードライバー)"
|
||||
"The_Blossom_in_the_Storm": "気態流体 & 種子(嵐の中で咲き誇る花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(捨てられしものと傷つけられしもの)"
|
||||
},
|
||||
"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": "工造機関(剣戟を焼却する火帝炉)",
|
||||
"A_Startling_Night_Terror": "ドリームコレクションパーツ(魂震える悪夢)",
|
||||
"Tranquility_of_Vimala_bhumi": "思考の粉末(離垢清浄)",
|
||||
"Nameless_Land_Nameless_People": "キャラクター経験値素材(無名の地、無名の人)",
|
||||
"A_Startling_Night_Terror": "ドリームコレクションパーツ(魂震える悪夢)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造機関(剣戟を焼却する火帝炉)",
|
||||
"Root_Out_the_Turpitude": "永寿の萌芽(悪孽を根絶やしに)",
|
||||
"Born_to_Obey": "古代パーツ(生まれながらに服従する)",
|
||||
"Winter_Soldiers": "シルバーメインの釦(寒冬の戦士たち)",
|
||||
"Destruction_of_the_Destroyer": "略奪の本能(壊滅者の覆没)",
|
||||
"Nine_Billion_Names": "消滅した原核(九十億の御名)",
|
||||
"Akashic_Records": "光円錐経験値素材(アーカーシャの記録)",
|
||||
"Nameless_Land_Nameless_People": "キャラクター経験値素材(無名の地、無名の人)",
|
||||
"The_Invisible_Hand": "信用ポイント(見えざる手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(捨てられしものと傷つけられしもの)",
|
||||
"Spring_of_Life": "固形純水 & 仮想粒子(生命の泉)",
|
||||
"The_Land_of_Gold": "基本食材 & タンパク米(黄金の大地)",
|
||||
"The_Blossom_in_the_Storm": "気態流体 & 種子(嵐の中で咲き誇る花)",
|
||||
"Legend_of_the_Puppet_Master": "廃棄された機巧部品 & 玉兆単元(傀儡師伝説)",
|
||||
"Scalpel_and_Screwdriver": "錆びた歯車 & 古びた大臼歯(メスとスクリュードライバー)",
|
||||
"The_Wages_of_Humanity": "一人稲 & 薬草抽出物(人類扶養)",
|
||||
"Legend_of_the_Puppet_Master": "廃棄された機巧部品 & 玉兆単元(傀儡師伝説)",
|
||||
"The_Land_of_Gold": "基本食材 & タンパク米(黄金の大地)",
|
||||
"Spring_of_Life": "固形純水 & 仮想粒子(生命の泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 砕けた夢(幻夢の残片)",
|
||||
"Scalpel_and_Screwdriver": "錆びた歯車 & 古びた大臼歯(メスとスクリュードライバー)"
|
||||
"The_Blossom_in_the_Storm": "気態流体 & 種子(嵐の中で咲き誇る花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(捨てられしものと傷つけられしもの)"
|
||||
},
|
||||
"Duration": {
|
||||
"name": "派遣時間",
|
||||
|
@ -809,94 +809,94 @@
|
||||
"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": "工造机杼(火帝动炉销剑戟)",
|
||||
"A_Startling_Night_Terror": "蓄梦元件(劫梦惊魂)",
|
||||
"Tranquility_of_Vimala_bhumi": "思绪末屑(离垢清净)",
|
||||
"Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)",
|
||||
"A_Startling_Night_Terror": "蓄梦元件(劫梦惊魂)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造机杼(火帝动炉销剑戟)",
|
||||
"Root_Out_the_Turpitude": "永寿幼芽(根除恶孽)",
|
||||
"Born_to_Obey": "古代零件(生而服从)",
|
||||
"Winter_Soldiers": "铁卫扣饰(寒冬的战士们)",
|
||||
"Destruction_of_the_Destroyer": "掠夺的本能(毁灭者的覆灭)",
|
||||
"Nine_Billion_Names": "熄灭原核(九十亿个名字)",
|
||||
"Akashic_Records": "光锥经验材料(阿卡夏记录)",
|
||||
"Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)",
|
||||
"The_Invisible_Hand": "信用点(看不见的手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(被废弃与损害的)",
|
||||
"Spring_of_Life": "固态净水 & 虚粒子(生命之泉)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黄金大地)",
|
||||
"The_Blossom_in_the_Storm": "气态流体 & 种子(风暴中怒放的花)",
|
||||
"Legend_of_the_Puppet_Master": "废弃机巧零件 & 玉兆单元(偃师传说)",
|
||||
"Scalpel_and_Screwdriver": "锈迹齿轮 & 老旧臼齿(手术刀与螺丝刀)",
|
||||
"The_Wages_of_Humanity": "一人嘉禾 & 药草提取物(赡养人类)",
|
||||
"Legend_of_the_Puppet_Master": "废弃机巧零件 & 玉兆单元(偃师传说)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黄金大地)",
|
||||
"Spring_of_Life": "固态净水 & 虚粒子(生命之泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 碎梦(幻梦的残片)",
|
||||
"Scalpel_and_Screwdriver": "锈迹齿轮 & 老旧臼齿(手术刀与螺丝刀)"
|
||||
"The_Blossom_in_the_Storm": "气态流体 & 种子(风暴中怒放的花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(被废弃与损害的)"
|
||||
},
|
||||
"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": "工造机杼(火帝动炉销剑戟)",
|
||||
"A_Startling_Night_Terror": "蓄梦元件(劫梦惊魂)",
|
||||
"Tranquility_of_Vimala_bhumi": "思绪末屑(离垢清净)",
|
||||
"Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)",
|
||||
"A_Startling_Night_Terror": "蓄梦元件(劫梦惊魂)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造机杼(火帝动炉销剑戟)",
|
||||
"Root_Out_the_Turpitude": "永寿幼芽(根除恶孽)",
|
||||
"Born_to_Obey": "古代零件(生而服从)",
|
||||
"Winter_Soldiers": "铁卫扣饰(寒冬的战士们)",
|
||||
"Destruction_of_the_Destroyer": "掠夺的本能(毁灭者的覆灭)",
|
||||
"Nine_Billion_Names": "熄灭原核(九十亿个名字)",
|
||||
"Akashic_Records": "光锥经验材料(阿卡夏记录)",
|
||||
"Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)",
|
||||
"The_Invisible_Hand": "信用点(看不见的手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(被废弃与损害的)",
|
||||
"Spring_of_Life": "固态净水 & 虚粒子(生命之泉)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黄金大地)",
|
||||
"The_Blossom_in_the_Storm": "气态流体 & 种子(风暴中怒放的花)",
|
||||
"Legend_of_the_Puppet_Master": "废弃机巧零件 & 玉兆单元(偃师传说)",
|
||||
"Scalpel_and_Screwdriver": "锈迹齿轮 & 老旧臼齿(手术刀与螺丝刀)",
|
||||
"The_Wages_of_Humanity": "一人嘉禾 & 药草提取物(赡养人类)",
|
||||
"Legend_of_the_Puppet_Master": "废弃机巧零件 & 玉兆单元(偃师传说)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黄金大地)",
|
||||
"Spring_of_Life": "固态净水 & 虚粒子(生命之泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 碎梦(幻梦的残片)",
|
||||
"Scalpel_and_Screwdriver": "锈迹齿轮 & 老旧臼齿(手术刀与螺丝刀)"
|
||||
"The_Blossom_in_the_Storm": "气态流体 & 种子(风暴中怒放的花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(被废弃与损害的)"
|
||||
},
|
||||
"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": "工造机杼(火帝动炉销剑戟)",
|
||||
"A_Startling_Night_Terror": "蓄梦元件(劫梦惊魂)",
|
||||
"Tranquility_of_Vimala_bhumi": "思绪末屑(离垢清净)",
|
||||
"Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)",
|
||||
"A_Startling_Night_Terror": "蓄梦元件(劫梦惊魂)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造机杼(火帝动炉销剑戟)",
|
||||
"Root_Out_the_Turpitude": "永寿幼芽(根除恶孽)",
|
||||
"Born_to_Obey": "古代零件(生而服从)",
|
||||
"Winter_Soldiers": "铁卫扣饰(寒冬的战士们)",
|
||||
"Destruction_of_the_Destroyer": "掠夺的本能(毁灭者的覆灭)",
|
||||
"Nine_Billion_Names": "熄灭原核(九十亿个名字)",
|
||||
"Akashic_Records": "光锥经验材料(阿卡夏记录)",
|
||||
"Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)",
|
||||
"The_Invisible_Hand": "信用点(看不见的手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(被废弃与损害的)",
|
||||
"Spring_of_Life": "固态净水 & 虚粒子(生命之泉)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黄金大地)",
|
||||
"The_Blossom_in_the_Storm": "气态流体 & 种子(风暴中怒放的花)",
|
||||
"Legend_of_the_Puppet_Master": "废弃机巧零件 & 玉兆单元(偃师传说)",
|
||||
"Scalpel_and_Screwdriver": "锈迹齿轮 & 老旧臼齿(手术刀与螺丝刀)",
|
||||
"The_Wages_of_Humanity": "一人嘉禾 & 药草提取物(赡养人类)",
|
||||
"Legend_of_the_Puppet_Master": "废弃机巧零件 & 玉兆单元(偃师传说)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黄金大地)",
|
||||
"Spring_of_Life": "固态净水 & 虚粒子(生命之泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 碎梦(幻梦的残片)",
|
||||
"Scalpel_and_Screwdriver": "锈迹齿轮 & 老旧臼齿(手术刀与螺丝刀)"
|
||||
"The_Blossom_in_the_Storm": "气态流体 & 种子(风暴中怒放的花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(被废弃与损害的)"
|
||||
},
|
||||
"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": "工造机杼(火帝动炉销剑戟)",
|
||||
"A_Startling_Night_Terror": "蓄梦元件(劫梦惊魂)",
|
||||
"Tranquility_of_Vimala_bhumi": "思绪末屑(离垢清净)",
|
||||
"Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)",
|
||||
"A_Startling_Night_Terror": "蓄梦元件(劫梦惊魂)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造机杼(火帝动炉销剑戟)",
|
||||
"Root_Out_the_Turpitude": "永寿幼芽(根除恶孽)",
|
||||
"Born_to_Obey": "古代零件(生而服从)",
|
||||
"Winter_Soldiers": "铁卫扣饰(寒冬的战士们)",
|
||||
"Destruction_of_the_Destroyer": "掠夺的本能(毁灭者的覆灭)",
|
||||
"Nine_Billion_Names": "熄灭原核(九十亿个名字)",
|
||||
"Akashic_Records": "光锥经验材料(阿卡夏记录)",
|
||||
"Nameless_Land_Nameless_People": "角色经验材料(无名之地,无名之人)",
|
||||
"The_Invisible_Hand": "信用点(看不见的手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(被废弃与损害的)",
|
||||
"Spring_of_Life": "固态净水 & 虚粒子(生命之泉)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黄金大地)",
|
||||
"The_Blossom_in_the_Storm": "气态流体 & 种子(风暴中怒放的花)",
|
||||
"Legend_of_the_Puppet_Master": "废弃机巧零件 & 玉兆单元(偃师传说)",
|
||||
"Scalpel_and_Screwdriver": "锈迹齿轮 & 老旧臼齿(手术刀与螺丝刀)",
|
||||
"The_Wages_of_Humanity": "一人嘉禾 & 药草提取物(赡养人类)",
|
||||
"Legend_of_the_Puppet_Master": "废弃机巧零件 & 玉兆单元(偃师传说)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黄金大地)",
|
||||
"Spring_of_Life": "固态净水 & 虚粒子(生命之泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 碎梦(幻梦的残片)",
|
||||
"Scalpel_and_Screwdriver": "锈迹齿轮 & 老旧臼齿(手术刀与螺丝刀)"
|
||||
"The_Blossom_in_the_Storm": "气态流体 & 种子(风暴中怒放的花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金属(被废弃与损害的)"
|
||||
},
|
||||
"Duration": {
|
||||
"name": "派遣时长",
|
||||
|
@ -809,94 +809,94 @@
|
||||
"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": "工造機杼(火帝動爐銷劍戟)",
|
||||
"A_Startling_Night_Terror": "蓄夢元件(劫夢驚魂)",
|
||||
"Tranquility_of_Vimala_bhumi": "思緒末屑(離垢清淨)",
|
||||
"Nameless_Land_Nameless_People": "角色經驗素材(無名之地,無名之人)",
|
||||
"A_Startling_Night_Terror": "蓄夢元件(劫夢驚魂)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造機杼(火帝動爐銷劍戟)",
|
||||
"Root_Out_the_Turpitude": "永壽幼芽(根除惡孽)",
|
||||
"Born_to_Obey": "古代零件(生而服從)",
|
||||
"Winter_Soldiers": "鐵衛扣飾(寒冬的戰士們)",
|
||||
"Destruction_of_the_Destroyer": "掠奪的本能(毀滅者的覆滅)",
|
||||
"Nine_Billion_Names": "熄滅原核(九十億個名字)",
|
||||
"Akashic_Records": "光錐經驗素材(阿卡夏紀錄)",
|
||||
"Nameless_Land_Nameless_People": "角色經驗素材(無名之地,無名之人)",
|
||||
"The_Invisible_Hand": "信用點(看不見的手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金屬(被廢棄與損害的)",
|
||||
"Spring_of_Life": "固態淨水 & 虛粒子(生命之泉)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黃金大地)",
|
||||
"The_Blossom_in_the_Storm": "氣態流體 & 種子(風暴中怒放的花)",
|
||||
"Legend_of_the_Puppet_Master": "廢棄機巧零件 & 玉兆單元(偃師傳說)",
|
||||
"Scalpel_and_Screwdriver": "鏽跡齒輪 & 老舊臼齒(手術刀與螺絲起子)",
|
||||
"The_Wages_of_Humanity": "一人嘉禾 & 藥草萃取物(贍養人類)",
|
||||
"Legend_of_the_Puppet_Master": "廢棄機巧零件 & 玉兆單元(偃師傳說)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黃金大地)",
|
||||
"Spring_of_Life": "固態淨水 & 虛粒子(生命之泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 碎夢(幻夢的殘片)",
|
||||
"Scalpel_and_Screwdriver": "鏽跡齒輪 & 老舊臼齒(手術刀與螺絲起子)"
|
||||
"The_Blossom_in_the_Storm": "氣態流體 & 種子(風暴中怒放的花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金屬(被廢棄與損害的)"
|
||||
},
|
||||
"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": "工造機杼(火帝動爐銷劍戟)",
|
||||
"A_Startling_Night_Terror": "蓄夢元件(劫夢驚魂)",
|
||||
"Tranquility_of_Vimala_bhumi": "思緒末屑(離垢清淨)",
|
||||
"Nameless_Land_Nameless_People": "角色經驗素材(無名之地,無名之人)",
|
||||
"A_Startling_Night_Terror": "蓄夢元件(劫夢驚魂)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造機杼(火帝動爐銷劍戟)",
|
||||
"Root_Out_the_Turpitude": "永壽幼芽(根除惡孽)",
|
||||
"Born_to_Obey": "古代零件(生而服從)",
|
||||
"Winter_Soldiers": "鐵衛扣飾(寒冬的戰士們)",
|
||||
"Destruction_of_the_Destroyer": "掠奪的本能(毀滅者的覆滅)",
|
||||
"Nine_Billion_Names": "熄滅原核(九十億個名字)",
|
||||
"Akashic_Records": "光錐經驗素材(阿卡夏紀錄)",
|
||||
"Nameless_Land_Nameless_People": "角色經驗素材(無名之地,無名之人)",
|
||||
"The_Invisible_Hand": "信用點(看不見的手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金屬(被廢棄與損害的)",
|
||||
"Spring_of_Life": "固態淨水 & 虛粒子(生命之泉)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黃金大地)",
|
||||
"The_Blossom_in_the_Storm": "氣態流體 & 種子(風暴中怒放的花)",
|
||||
"Legend_of_the_Puppet_Master": "廢棄機巧零件 & 玉兆單元(偃師傳說)",
|
||||
"Scalpel_and_Screwdriver": "鏽跡齒輪 & 老舊臼齒(手術刀與螺絲起子)",
|
||||
"The_Wages_of_Humanity": "一人嘉禾 & 藥草萃取物(贍養人類)",
|
||||
"Legend_of_the_Puppet_Master": "廢棄機巧零件 & 玉兆單元(偃師傳說)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黃金大地)",
|
||||
"Spring_of_Life": "固態淨水 & 虛粒子(生命之泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 碎夢(幻夢的殘片)",
|
||||
"Scalpel_and_Screwdriver": "鏽跡齒輪 & 老舊臼齒(手術刀與螺絲起子)"
|
||||
"The_Blossom_in_the_Storm": "氣態流體 & 種子(風暴中怒放的花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金屬(被廢棄與損害的)"
|
||||
},
|
||||
"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": "工造機杼(火帝動爐銷劍戟)",
|
||||
"A_Startling_Night_Terror": "蓄夢元件(劫夢驚魂)",
|
||||
"Tranquility_of_Vimala_bhumi": "思緒末屑(離垢清淨)",
|
||||
"Nameless_Land_Nameless_People": "角色經驗素材(無名之地,無名之人)",
|
||||
"A_Startling_Night_Terror": "蓄夢元件(劫夢驚魂)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造機杼(火帝動爐銷劍戟)",
|
||||
"Root_Out_the_Turpitude": "永壽幼芽(根除惡孽)",
|
||||
"Born_to_Obey": "古代零件(生而服從)",
|
||||
"Winter_Soldiers": "鐵衛扣飾(寒冬的戰士們)",
|
||||
"Destruction_of_the_Destroyer": "掠奪的本能(毀滅者的覆滅)",
|
||||
"Nine_Billion_Names": "熄滅原核(九十億個名字)",
|
||||
"Akashic_Records": "光錐經驗素材(阿卡夏紀錄)",
|
||||
"Nameless_Land_Nameless_People": "角色經驗素材(無名之地,無名之人)",
|
||||
"The_Invisible_Hand": "信用點(看不見的手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金屬(被廢棄與損害的)",
|
||||
"Spring_of_Life": "固態淨水 & 虛粒子(生命之泉)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黃金大地)",
|
||||
"The_Blossom_in_the_Storm": "氣態流體 & 種子(風暴中怒放的花)",
|
||||
"Legend_of_the_Puppet_Master": "廢棄機巧零件 & 玉兆單元(偃師傳說)",
|
||||
"Scalpel_and_Screwdriver": "鏽跡齒輪 & 老舊臼齒(手術刀與螺絲起子)",
|
||||
"The_Wages_of_Humanity": "一人嘉禾 & 藥草萃取物(贍養人類)",
|
||||
"Legend_of_the_Puppet_Master": "廢棄機巧零件 & 玉兆單元(偃師傳說)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黃金大地)",
|
||||
"Spring_of_Life": "固態淨水 & 虛粒子(生命之泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 碎夢(幻夢的殘片)",
|
||||
"Scalpel_and_Screwdriver": "鏽跡齒輪 & 老舊臼齒(手術刀與螺絲起子)"
|
||||
"The_Blossom_in_the_Storm": "氣態流體 & 種子(風暴中怒放的花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金屬(被廢棄與損害的)"
|
||||
},
|
||||
"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": "工造機杼(火帝動爐銷劍戟)",
|
||||
"A_Startling_Night_Terror": "蓄夢元件(劫夢驚魂)",
|
||||
"Tranquility_of_Vimala_bhumi": "思緒末屑(離垢清淨)",
|
||||
"Nameless_Land_Nameless_People": "角色經驗素材(無名之地,無名之人)",
|
||||
"A_Startling_Night_Terror": "蓄夢元件(劫夢驚魂)",
|
||||
"Fire_Lord_Inflames_Blades_of_War": "工造機杼(火帝動爐銷劍戟)",
|
||||
"Root_Out_the_Turpitude": "永壽幼芽(根除惡孽)",
|
||||
"Born_to_Obey": "古代零件(生而服從)",
|
||||
"Winter_Soldiers": "鐵衛扣飾(寒冬的戰士們)",
|
||||
"Destruction_of_the_Destroyer": "掠奪的本能(毀滅者的覆滅)",
|
||||
"Nine_Billion_Names": "熄滅原核(九十億個名字)",
|
||||
"Akashic_Records": "光錐經驗素材(阿卡夏紀錄)",
|
||||
"Nameless_Land_Nameless_People": "角色經驗素材(無名之地,無名之人)",
|
||||
"The_Invisible_Hand": "信用點(看不見的手)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金屬(被廢棄與損害的)",
|
||||
"Spring_of_Life": "固態淨水 & 虛粒子(生命之泉)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黃金大地)",
|
||||
"The_Blossom_in_the_Storm": "氣態流體 & 種子(風暴中怒放的花)",
|
||||
"Legend_of_the_Puppet_Master": "廢棄機巧零件 & 玉兆單元(偃師傳說)",
|
||||
"Scalpel_and_Screwdriver": "鏽跡齒輪 & 老舊臼齒(手術刀與螺絲起子)",
|
||||
"The_Wages_of_Humanity": "一人嘉禾 & 藥草萃取物(贍養人類)",
|
||||
"Legend_of_the_Puppet_Master": "廢棄機巧零件 & 玉兆單元(偃師傳說)",
|
||||
"The_Land_of_Gold": "基本食材 & 蛋白米(黃金大地)",
|
||||
"Spring_of_Life": "固態淨水 & 虛粒子(生命之泉)",
|
||||
"Fragments_of_Illusory_Dreams": "安逸 & 碎夢(幻夢的殘片)",
|
||||
"Scalpel_and_Screwdriver": "鏽跡齒輪 & 老舊臼齒(手術刀與螺絲起子)"
|
||||
"The_Blossom_in_the_Storm": "氣態流體 & 種子(風暴中怒放的花)",
|
||||
"Abandoned_and_Insulted": "燃素 & 金屬(被廢棄與損害的)"
|
||||
},
|
||||
"Duration": {
|
||||
"name": "派遣時間",
|
||||
|
@ -7,7 +7,7 @@ import module.config.server as server
|
||||
from module.exception import ScriptError
|
||||
|
||||
# ord('.') = 65294
|
||||
REGEX_PUNCTUATION = re.compile(r'[ ,..\'"“”,。…::;;!!??·・•●〇°*※\-—–-/\\\n\t()\[\]()「」『』【】《》[]]')
|
||||
REGEX_PUNCTUATION = re.compile(r'[ ,..\'"“”,。…::;;!!??·・•●〇°*※\-—–-/\\|丨\n\t()\[\]()「」『』【】《》[]]')
|
||||
|
||||
|
||||
def parse_name(n):
|
||||
|
@ -422,9 +422,12 @@ class Duration(Ocr):
|
||||
|
||||
|
||||
class OcrWhiteLetterOnComplexBackground(Ocr):
|
||||
white_preprocess = True
|
||||
|
||||
def pre_process(self, image):
|
||||
image = extract_white_letters(image, threshold=255)
|
||||
image = cv2.merge([image, image, image])
|
||||
if self.white_preprocess:
|
||||
image = extract_white_letters(image, threshold=255)
|
||||
image = cv2.merge([image, image, image])
|
||||
return image
|
||||
|
||||
def detect_and_ocr(self, *args, **kwargs):
|
||||
|
@ -15,6 +15,7 @@ class Route(RouteBase):
|
||||
| enemy1 | Waypoint((46.2, 328.2)), | 12.6 | 8 |
|
||||
| item2 | Waypoint((42.4, 299.0)), | 352.8 | 348 |
|
||||
| door2 | Waypoint((46.4, 284.5)), | 4.2 | 1 |
|
||||
| door2end | Waypoint((47.2, 274.8)), | 11.1 | 4 |
|
||||
| enemy2left | Waypoint((31.2, 248.8)), | 183.8 | 84 |
|
||||
| enemy2right | Waypoint((55.2, 247.2)), | 96.7 | 91 |
|
||||
| item3 | Waypoint((68.5, 226.5)), | 30.2 | 29 |
|
||||
@ -32,6 +33,7 @@ class Route(RouteBase):
|
||||
enemy1 = Waypoint((46.2, 328.2))
|
||||
item2 = Waypoint((42.4, 299.0))
|
||||
door2 = Waypoint((46.4, 284.5))
|
||||
door2end = Waypoint((47.2, 274.8))
|
||||
enemy2left = Waypoint((31.2, 248.8))
|
||||
enemy2right = Waypoint((55.2, 247.2))
|
||||
item3 = Waypoint((68.5, 226.5))
|
||||
@ -47,6 +49,7 @@ class Route(RouteBase):
|
||||
# self.clear_item(item2)
|
||||
self.clear_enemy(
|
||||
door2.set_threshold(3),
|
||||
door2end.set_threshold(3),
|
||||
# Go through door
|
||||
enemy2left,
|
||||
enemy2right.straight_run(),
|
||||
@ -58,6 +61,7 @@ class Route(RouteBase):
|
||||
self.clear_enemy(
|
||||
enemy3.straight_run(),
|
||||
)
|
||||
# ('Combat_Herta_SupplyZone_F2_X45Y369', 0.243, (57.2, 351.6))
|
||||
|
||||
def Herta_SupplyZone_F2_X397Y233(self):
|
||||
"""
|
||||
|
@ -63,7 +63,7 @@ class Route(RouteBase):
|
||||
)
|
||||
# 2
|
||||
self.clear_enemy(
|
||||
node2,
|
||||
node2.set_threshold(3),
|
||||
enemy2.straight_run(),
|
||||
)
|
||||
# 3
|
||||
@ -116,6 +116,43 @@ class Route(RouteBase):
|
||||
self.clear_enemy(enemy2left.straight_run())
|
||||
self.clear_enemy(enemy3.straight_run())
|
||||
|
||||
def Jarilo_BackwaterPass_F1_X503Y736(self):
|
||||
"""
|
||||
| Waypoint | Position | Direction | Rotation |
|
||||
| ---------- | ------------------------- | --------- | -------- |
|
||||
| spawn | Waypoint((507.2, 733.7)), | 6.7 | 4 |
|
||||
| enemy1 | Waypoint((507.0, 644.0)), | 12.6 | 6 |
|
||||
| enemy2left | Waypoint((536.0, 630.5)), | 48.1 | 43 |
|
||||
| enemy3 | Waypoint((557.0, 585.2)), | 114.1 | 6 |
|
||||
| exit_ | Waypoint((557.0, 585.2)), | 114.1 | 6 |
|
||||
| exit1 | Waypoint((549.5, 575.4)), | 356.2 | 354 |
|
||||
| exit2 | Waypoint((565.4, 575.6)), | 4.1 | 359 |
|
||||
"""
|
||||
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(503.2, 736.9))
|
||||
self.register_domain_exit(
|
||||
Waypoint((557.0, 585.2)), end_rotation=6,
|
||||
left_door=Waypoint((549.5, 575.4)), right_door=Waypoint((565.4, 575.6)))
|
||||
enemy1 = Waypoint((507.0, 644.0))
|
||||
enemy2left = Waypoint((536.0, 630.5))
|
||||
enemy3 = Waypoint((557.0, 585.2))
|
||||
# ===== End of generated waypoints =====
|
||||
|
||||
self.clear_enemy(enemy1)
|
||||
self.clear_enemy(enemy2left.straight_run())
|
||||
self.clear_enemy(enemy3.straight_run())
|
||||
|
||||
"""
|
||||
Notes
|
||||
Herta_SupplyZone_F2_X397Y239 is the same as Herta_SupplyZone_F2_X397Y233
|
||||
but for wrong spawn point detected
|
||||
"""
|
||||
# Best 3 predictions: [
|
||||
# ('Combat_Jarilo_BackwaterPass_F1_X507Y733', 0.26, (503.2, 736.9)),
|
||||
# ('Combat_Luofu_ArtisanshipCommission_F1_X41Y640', 0.18, (50.7, 644.4)),
|
||||
# ('Combat_Luofu_DivinationCommission_F1_X737Y372', 0.174, (717.2, 355.4)),
|
||||
# ('Combat_Herta_SupplyZone_F2_X45Y369', 0.168, (46.5, 370.0))
|
||||
# ]
|
||||
|
||||
def Jarilo_BackwaterPass_F1_X555Y643(self):
|
||||
"""
|
||||
| Waypoint | Position | Direction | Rotation |
|
||||
|
@ -31,6 +31,7 @@ class Route(RouteBase):
|
||||
| ----------- | -------------------------- | --------- | -------- |
|
||||
| spawn | Waypoint((201.2, 1071.4)), | 6.7 | 4 |
|
||||
| enemy1right | Waypoint((200.3, 1032.4)), | 342.0 | 343 |
|
||||
| node1 | Waypoint((194.6, 1023.4)), | 109.3 | 294 |
|
||||
| enemy1left | Waypoint((168.6, 1022.3)), | 279.8 | 89 |
|
||||
| node2 | Waypoint((118.4, 1019.0)), | 282.9 | 285 |
|
||||
| enemy2left | Waypoint((105.2, 1012.0)), | 317.9 | 315 |
|
||||
@ -46,6 +47,7 @@ class Route(RouteBase):
|
||||
Waypoint((103.4, 919.2)), end_rotation=4,
|
||||
left_door=Waypoint((98.8, 908.9)), right_door=Waypoint((111.4, 909.8)))
|
||||
enemy1right = Waypoint((200.3, 1032.4))
|
||||
node1 = Waypoint((194.6, 1023.4))
|
||||
enemy1left = Waypoint((168.6, 1022.3))
|
||||
node2 = Waypoint((118.4, 1019.0))
|
||||
enemy2left = Waypoint((105.2, 1012.0))
|
||||
@ -57,20 +59,22 @@ class Route(RouteBase):
|
||||
# 1
|
||||
self.rotation_set(315)
|
||||
self.clear_enemy(
|
||||
enemy1right.set_threshold(5),
|
||||
enemy1left.set_threshold(5),
|
||||
enemy1right.set_threshold(3),
|
||||
node1.set_threshold(3),
|
||||
enemy1left.set_threshold(3),
|
||||
)
|
||||
# 2
|
||||
self.clear_enemy(
|
||||
enemy1left.set_threshold(5),
|
||||
enemy1left.set_threshold(3),
|
||||
node2.set_threshold(5),
|
||||
enemy2left,
|
||||
enemy2right,
|
||||
)
|
||||
# 3
|
||||
self.rotation_set(0)
|
||||
self.clear_enemy(
|
||||
node3.set_threshold(5),
|
||||
enemy3.straight_run(),
|
||||
node3.set_threshold(3),
|
||||
enemy3,
|
||||
)
|
||||
|
||||
def Jarilo_CorridorofFadingEchoes_F1_X266Y457(self):
|
||||
|
@ -256,3 +256,58 @@ class Route(RouteBase):
|
||||
)
|
||||
self.clear_item(item4)
|
||||
self.clear_enemy(enemy4)
|
||||
|
||||
def Luofu_Cloudford_F1_X432Y685(self):
|
||||
"""
|
||||
| Waypoint | Position | Direction | Rotation |
|
||||
| -------- | ------------------------- | --------- | -------- |
|
||||
| spawn | Waypoint((435.4, 669.2)), | 6.7 | 4 |
|
||||
| item1 | Waypoint((432.2, 628.3)), | 2.7 | 357 |
|
||||
| enemy1 | Waypoint((428.6, 598.8)), | 8.0 | 177 |
|
||||
| node2 | Waypoint((421.2, 590.8)), | 44.2 | 285 |
|
||||
| node3 | Waypoint((366.6, 588.2)), | 274.2 | 274 |
|
||||
| enemy3 | Waypoint((344.9, 590.4)), | 191.8 | 357 |
|
||||
| item4 | Waypoint((309.6, 580.2)), | 290.1 | 281 |
|
||||
| enemy4 | Waypoint((271.3, 585.5)), | 285.0 | 274 |
|
||||
| exit_ | Waypoint((271.3, 585.5)), | 285.0 | 274 |
|
||||
| exit1 | Waypoint((267.9, 592.3)), | 275.9 | 274 |
|
||||
| exit2 | Waypoint((267.8, 580.0)), | 275.8 | 274 |
|
||||
"""
|
||||
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(432.8, 685.1))
|
||||
self.register_domain_exit(
|
||||
Waypoint((271.3, 585.5)), end_rotation=274,
|
||||
left_door=Waypoint((267.9, 592.3)), right_door=Waypoint((267.8, 580.0)))
|
||||
item1 = Waypoint((432.2, 628.3))
|
||||
enemy1 = Waypoint((428.6, 598.8))
|
||||
node2 = Waypoint((421.2, 590.8))
|
||||
node3 = Waypoint((366.6, 588.2))
|
||||
enemy3 = Waypoint((344.9, 590.4))
|
||||
item4 = Waypoint((309.6, 580.2))
|
||||
enemy4 = Waypoint((271.3, 585.5))
|
||||
# ===== End of generated waypoints =====
|
||||
|
||||
self.clear_item(item1)
|
||||
self.clear_enemy(enemy1)
|
||||
# Go through bridges
|
||||
self.rotation_set(270)
|
||||
self.minimap.lock_rotation(270)
|
||||
self.clear_enemy(
|
||||
node2.set_threshold(3),
|
||||
node3.set_threshold(3),
|
||||
enemy3,
|
||||
)
|
||||
self.clear_item(item4)
|
||||
self.clear_enemy(enemy4)
|
||||
|
||||
"""
|
||||
Notes
|
||||
Luofu_Cloudford_F1_X435Y685 is the same as Luofu_Cloudford_F1_X435Y669
|
||||
but for wrong spawn point detected
|
||||
"""
|
||||
# Best 3 predictions: [
|
||||
# ('Combat_Luofu_Cloudford_F1_X433Y617', 0.195, (432.8, 668.4)),
|
||||
# ('Combat_Herta_SupplyZone_F2_X45Y369', 0.18, (24.2, 372.2)),
|
||||
# ('Combat_Luofu_Cloudford_F1_X435Y669', 0.18, (432.8, 685.1))
|
||||
# ]
|
||||
# (432.9, 684.9)
|
||||
# ('Combat_Luofu_Cloudford_F1_X435Y669', 0.172, (432.8, 685.0))
|
||||
|
@ -30,6 +30,36 @@ class Route(RouteBase):
|
||||
but for wrong spawn point detected
|
||||
"""
|
||||
|
||||
def Jarilo_CorridorofFadingEchoes_F1_X415Y953(self):
|
||||
"""
|
||||
| Waypoint | Position | Direction | Rotation |
|
||||
| -------- | ------------------------- | --------- | -------- |
|
||||
| spawn | Waypoint((415.5, 947.9)), | 96.7 | 91 |
|
||||
| enemy | Waypoint((464.0, 953.0)), | 96.8 | 94 |
|
||||
| reward | Waypoint((472.7, 958.5)), | 214.6 | 114 |
|
||||
| exit_ | Waypoint((480.0, 944.0)), | 92.7 | 84 |
|
||||
"""
|
||||
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(415.4, 953.3))
|
||||
enemy = Waypoint((464.0, 953.0))
|
||||
reward = Waypoint((472.7, 958.5))
|
||||
exit_ = Waypoint((480.0, 944.0))
|
||||
|
||||
self.clear_elite(enemy)
|
||||
self.domain_reward(reward)
|
||||
self.domain_single_exit(exit_)
|
||||
# ===== End of generated waypoints =====
|
||||
|
||||
"""
|
||||
Notes
|
||||
Jarilo_CorridorofFadingEchoes_F1_X415Y953 is the same as Jarilo_CorridorofFadingEchoes_F1_X415Y947
|
||||
but for wrong spawn point detected
|
||||
"""
|
||||
# Best 3 predictions: [
|
||||
# ('Elite_Jarilo_CorridorofFadingEchoes_F1_X415Y933', 0.169, (415.4, 953.3)),
|
||||
# ('Elite_Jarilo_CorridorofFadingEchoes_F1_X415Y947', 0.169, (415.4, 953.3)),
|
||||
# ('Elite_Herta_SupplyZone_F2_X680Y247', 0.162, (738.4, 252.2))
|
||||
# ]
|
||||
|
||||
def Jarilo_CorridorofFadingEchoes_F1_X415Y947(self):
|
||||
"""
|
||||
| Waypoint | Position | Direction | Rotation |
|
||||
|
@ -24,6 +24,36 @@ class Route(RouteBase):
|
||||
self.domain_single_exit(exit_)
|
||||
# ===== End of generated waypoints =====
|
||||
|
||||
def Luofu_ArtisanshipCommission_F1_X391Y493(self):
|
||||
"""
|
||||
| Waypoint | Position | Direction | Rotation |
|
||||
| -------- | ------------------------- | --------- | -------- |
|
||||
| spawn | Waypoint((385.2, 494.6)), | 94.2 | 91 |
|
||||
| enemy | Waypoint((444.2, 490.5)), | 94.2 | 91 |
|
||||
| reward | Waypoint((448.6, 497.2)), | 149.7 | 91 |
|
||||
| exit_ | Waypoint((458.0, 483.7)), | 94.2 | 91 |
|
||||
"""
|
||||
self.map_init(plane=Luofu_ArtisanshipCommission, floor="F1", position=(391.1, 493.2))
|
||||
enemy = Waypoint((444.2, 490.5))
|
||||
reward = Waypoint((448.6, 497.2))
|
||||
exit_ = Waypoint((458.0, 483.7))
|
||||
|
||||
self.clear_elite(enemy)
|
||||
self.domain_reward(reward)
|
||||
self.domain_single_exit(exit_)
|
||||
# ===== End of generated waypoints =====
|
||||
|
||||
"""
|
||||
Notes
|
||||
Luofu_ArtisanshipCommission_F1_X391Y493 is the same as Luofu_ArtisanshipCommission_F1_X385Y494
|
||||
but for wrong spawn point detected
|
||||
"""
|
||||
# Best 3 predictions: [
|
||||
# ('Elite_Luofu_ArtisanshipCommission_F1_X385Y494', 0.182, (391.1, 493.2)),
|
||||
# ('Elite_Jarilo_CorridorofFadingEchoes_F1_X415Y933', 0.157, (364.0, 951.0)),
|
||||
# ('Elite_Jarilo_CorridorofFadingEchoes_F1_X415Y947', 0.157, (364.0, 951.0))
|
||||
# ]
|
||||
|
||||
def Luofu_ArtisanshipCommission_F1_X504Y493(self):
|
||||
"""
|
||||
| Waypoint | Position | Direction | Rotation |
|
||||
|
@ -25,3 +25,34 @@ class Route(RouteBase):
|
||||
self.domain_reward(reward)
|
||||
self.domain_single_exit(exit_)
|
||||
# ===== End of generated waypoints =====
|
||||
|
||||
@locked_rotation(0)
|
||||
def Luofu_Cloudford_F1_X342Y1003(self):
|
||||
"""
|
||||
| Waypoint | Position | Direction | Rotation |
|
||||
| -------- | -------------------------- | --------- | -------- |
|
||||
| spawn | Waypoint((337.3, 1003.4)), | 6.7 | 4 |
|
||||
| enemy | Waypoint((336.2, 962.2)), | 6.7 | 4 |
|
||||
| reward | Waypoint((342.9, 950.8)), | 44.2 | 31 |
|
||||
| exit_ | Waypoint((328.8, 942.8)), | 316.1 | 331 |
|
||||
"""
|
||||
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(342.3, 1003.4))
|
||||
enemy = Waypoint((336.2, 962.2))
|
||||
reward = Waypoint((342.9, 950.8))
|
||||
exit_ = Waypoint((328.8, 942.8))
|
||||
|
||||
self.clear_elite(enemy)
|
||||
self.domain_reward(reward)
|
||||
self.domain_single_exit(exit_)
|
||||
# ===== End of generated waypoints =====
|
||||
|
||||
"""
|
||||
Notes
|
||||
Luofu_Cloudford_F1_X342Y1003 is the same as Luofu_Cloudford_F1_X337Y1003
|
||||
but for wrong spawn point detected
|
||||
"""
|
||||
# Best 3 predictions: [
|
||||
# ('Elite_Luofu_Cloudford_F1_X337Y1003', 0.169, (342.3, 1002.7)),
|
||||
# ('Elite_Luofu_ArtisanshipCommission_F1_X504Y493', 0.106, (519.3, 452.7)),
|
||||
# ('Elite_Jarilo_CorridorofFadingEchoes_F1_X415Y933', 0.104, (433.8, 982.0))
|
||||
# ]
|
||||
|
@ -25,3 +25,34 @@ class Route(RouteBase):
|
||||
self.domain_reward(reward)
|
||||
self.domain_single_exit(exit_)
|
||||
# ===== End of generated waypoints =====
|
||||
|
||||
@locked_rotation(90)
|
||||
def Luofu_StargazerNavalia_F1_X617Y511(self):
|
||||
"""
|
||||
| Waypoint | Position | Direction | Rotation |
|
||||
| -------- | ------------------------- | --------- | -------- |
|
||||
| spawn | Waypoint((617.5, 511.5)), | 96.7 | 91 |
|
||||
| enemy | Waypoint((664.6, 512.6)), | 96.8 | 94 |
|
||||
| reward | Waypoint((677.1, 521.2)), | 212.8 | 108 |
|
||||
| exit_ | Waypoint((684.6, 505.0)), | 91.3 | 82 |
|
||||
"""
|
||||
self.map_init(plane=Luofu_StargazerNavalia, floor="F1", position=(617.5, 511.5))
|
||||
enemy = Waypoint((664.6, 512.6))
|
||||
reward = Waypoint((677.1, 521.2))
|
||||
exit_ = Waypoint((684.6, 505.0))
|
||||
|
||||
self.clear_elite(enemy)
|
||||
self.domain_reward(reward)
|
||||
self.domain_single_exit(exit_)
|
||||
# ===== End of generated waypoints =====
|
||||
|
||||
"""
|
||||
Notes
|
||||
Herta_SupplyZone_F2_X397Y239 is the same as Herta_SupplyZone_F2_X397Y233
|
||||
but for wrong spawn point detected
|
||||
"""
|
||||
# Best 3 predictions: [
|
||||
# ('Elite_Luofu_StargazerNavalia_F1_X617Y511', 0.338, (621.0, 507.0)),
|
||||
# ('Elite_Luofu_ArtisanshipCommission_F1_X385Y494', 0.203, (329.2, 492.8)),
|
||||
# ('Elite_Jarilo_SilvermaneGuardRestrictedZone_F1_X225Y425', 0.181, (224.8, 423.2))
|
||||
# ]
|
||||
|
@ -241,6 +241,17 @@
|
||||
],
|
||||
"domain": "Combat"
|
||||
},
|
||||
{
|
||||
"name": "Combat_Jarilo_BackwaterPass_F1_X503Y736",
|
||||
"route": "route.rogue.Combat.Jarilo_BackwaterPass_F1:Jarilo_BackwaterPass_F1_X503Y736",
|
||||
"plane": "Jarilo_BackwaterPass",
|
||||
"floor": "F1",
|
||||
"position": [
|
||||
503.2,
|
||||
736.9
|
||||
],
|
||||
"domain": "Combat"
|
||||
},
|
||||
{
|
||||
"name": "Combat_Jarilo_BackwaterPass_F1_X555Y643",
|
||||
"route": "route.rogue.Combat.Jarilo_BackwaterPass_F1:Jarilo_BackwaterPass_F1_X555Y643",
|
||||
@ -901,6 +912,17 @@
|
||||
],
|
||||
"domain": "Combat"
|
||||
},
|
||||
{
|
||||
"name": "Combat_Luofu_Cloudford_F1_X432Y685",
|
||||
"route": "route.rogue.Combat.Luofu_Cloudford_F1:Luofu_Cloudford_F1_X432Y685",
|
||||
"plane": "Luofu_Cloudford",
|
||||
"floor": "F1",
|
||||
"position": [
|
||||
432.8,
|
||||
685.1
|
||||
],
|
||||
"domain": "Combat"
|
||||
},
|
||||
{
|
||||
"name": "Combat_Luofu_Cloudford_F1Rogue_X59Y405",
|
||||
"route": "route.rogue.Combat.Luofu_Cloudford_F1Rogue:Luofu_Cloudford_F1Rogue_X59Y405",
|
||||
@ -1286,6 +1308,17 @@
|
||||
],
|
||||
"domain": "Elite"
|
||||
},
|
||||
{
|
||||
"name": "Elite_Jarilo_CorridorofFadingEchoes_F1_X415Y953",
|
||||
"route": "route.rogue.Elite.Jarilo_CorridorofFadingEchoes_F1:Jarilo_CorridorofFadingEchoes_F1_X415Y953",
|
||||
"plane": "Jarilo_CorridorofFadingEchoes",
|
||||
"floor": "F1",
|
||||
"position": [
|
||||
415.4,
|
||||
953.3
|
||||
],
|
||||
"domain": "Elite"
|
||||
},
|
||||
{
|
||||
"name": "Elite_Jarilo_CorridorofFadingEchoes_F1_X415Y947",
|
||||
"route": "route.rogue.Elite.Jarilo_CorridorofFadingEchoes_F1:Jarilo_CorridorofFadingEchoes_F1_X415Y947",
|
||||
@ -1385,6 +1418,17 @@
|
||||
],
|
||||
"domain": "Elite"
|
||||
},
|
||||
{
|
||||
"name": "Elite_Luofu_ArtisanshipCommission_F1_X391Y493",
|
||||
"route": "route.rogue.Elite.Luofu_ArtisanshipCommission_F1:Luofu_ArtisanshipCommission_F1_X391Y493",
|
||||
"plane": "Luofu_ArtisanshipCommission",
|
||||
"floor": "F1",
|
||||
"position": [
|
||||
391.1,
|
||||
493.2
|
||||
],
|
||||
"domain": "Elite"
|
||||
},
|
||||
{
|
||||
"name": "Elite_Luofu_ArtisanshipCommission_F1_X504Y493",
|
||||
"route": "route.rogue.Elite.Luofu_ArtisanshipCommission_F1:Luofu_ArtisanshipCommission_F1_X504Y493",
|
||||
@ -1407,6 +1451,17 @@
|
||||
],
|
||||
"domain": "Elite"
|
||||
},
|
||||
{
|
||||
"name": "Elite_Luofu_Cloudford_F1_X342Y1003",
|
||||
"route": "route.rogue.Elite.Luofu_Cloudford_F1:Luofu_Cloudford_F1_X342Y1003",
|
||||
"plane": "Luofu_Cloudford",
|
||||
"floor": "F1",
|
||||
"position": [
|
||||
342.3,
|
||||
1003.4
|
||||
],
|
||||
"domain": "Elite"
|
||||
},
|
||||
{
|
||||
"name": "Elite_Luofu_DivinationCommission_F2_X338Y345",
|
||||
"route": "route.rogue.Elite.Luofu_DivinationCommission_F2:Luofu_DivinationCommission_F2_X338Y345",
|
||||
@ -1440,6 +1495,17 @@
|
||||
],
|
||||
"domain": "Elite"
|
||||
},
|
||||
{
|
||||
"name": "Elite_Luofu_StargazerNavalia_F1_X617Y511",
|
||||
"route": "route.rogue.Elite.Luofu_StargazerNavalia_F1:Luofu_StargazerNavalia_F1_X617Y511",
|
||||
"plane": "Luofu_StargazerNavalia",
|
||||
"floor": "F1",
|
||||
"position": [
|
||||
617.5,
|
||||
511.5
|
||||
],
|
||||
"domain": "Elite"
|
||||
},
|
||||
{
|
||||
"name": "Occurrence_Herta_StorageZone_F1_X273Y93",
|
||||
"route": "route.rogue.Occurrence.Herta_StorageZone_F1:Herta_StorageZone_F1_X273Y93",
|
||||
|
@ -34,40 +34,40 @@ CHARACTER_1 = ButtonWrapper(
|
||||
name='CHARACTER_1',
|
||||
share=Button(
|
||||
file='./assets/share/assignment/dispatch/CHARACTER_1.png',
|
||||
area=(110, 202, 202, 309),
|
||||
search=(90, 182, 222, 329),
|
||||
area=(96, 200, 188, 307),
|
||||
search=(76, 180, 208, 327),
|
||||
color=(153, 141, 159),
|
||||
button=(110, 202, 202, 309),
|
||||
button=(96, 200, 188, 307),
|
||||
),
|
||||
)
|
||||
CHARACTER_1_SELECTED = ButtonWrapper(
|
||||
name='CHARACTER_1_SELECTED',
|
||||
share=Button(
|
||||
file='./assets/share/assignment/dispatch/CHARACTER_1_SELECTED.png',
|
||||
area=(107, 199, 126, 217),
|
||||
search=(87, 179, 146, 237),
|
||||
area=(93, 197, 112, 215),
|
||||
search=(73, 177, 132, 235),
|
||||
color=(217, 218, 216),
|
||||
button=(107, 199, 126, 217),
|
||||
button=(93, 197, 112, 215),
|
||||
),
|
||||
)
|
||||
CHARACTER_2 = ButtonWrapper(
|
||||
name='CHARACTER_2',
|
||||
share=Button(
|
||||
file='./assets/share/assignment/dispatch/CHARACTER_2.png',
|
||||
area=(222, 202, 314, 309),
|
||||
search=(202, 182, 334, 329),
|
||||
area=(208, 200, 300, 307),
|
||||
search=(188, 180, 320, 327),
|
||||
color=(120, 120, 138),
|
||||
button=(222, 202, 314, 309),
|
||||
button=(208, 200, 300, 307),
|
||||
),
|
||||
)
|
||||
CHARACTER_2_SELECTED = ButtonWrapper(
|
||||
name='CHARACTER_2_SELECTED',
|
||||
share=Button(
|
||||
file='./assets/share/assignment/dispatch/CHARACTER_2_SELECTED.png',
|
||||
area=(219, 199, 238, 217),
|
||||
search=(199, 179, 258, 237),
|
||||
area=(205, 197, 224, 215),
|
||||
search=(185, 177, 244, 235),
|
||||
color=(206, 207, 204),
|
||||
button=(219, 199, 238, 217),
|
||||
button=(205, 197, 224, 215),
|
||||
),
|
||||
)
|
||||
CHARACTER_LIST = ButtonWrapper(
|
||||
|
@ -3,71 +3,8 @@ from .classes import AssignmentEntry
|
||||
# This file was auto-generated, do not modify it manually. To generate:
|
||||
# ``` python -m dev_tools.keyword_extract ```
|
||||
|
||||
Nine_Billion_Names = AssignmentEntry(
|
||||
id=1,
|
||||
name='Nine_Billion_Names',
|
||||
cn='九十亿个名字',
|
||||
cht='九十億個名字',
|
||||
en='Nine Billion Names',
|
||||
jp='九十億の御名',
|
||||
es='Nueve mil millones de nombres',
|
||||
)
|
||||
Destruction_of_the_Destroyer = AssignmentEntry(
|
||||
id=2,
|
||||
name='Destruction_of_the_Destroyer',
|
||||
cn='毁灭者的覆灭',
|
||||
cht='毀滅者的覆滅',
|
||||
en='Destruction of the Destroyer',
|
||||
jp='壊滅者の覆没',
|
||||
es='La destrucción del destructor',
|
||||
)
|
||||
Winter_Soldiers = AssignmentEntry(
|
||||
id=3,
|
||||
name='Winter_Soldiers',
|
||||
cn='寒冬的战士们',
|
||||
cht='寒冬的戰士們',
|
||||
en='Winter Soldiers',
|
||||
jp='寒冬の戦士たち',
|
||||
es='Los guerreros del invierno',
|
||||
)
|
||||
Born_to_Obey = AssignmentEntry(
|
||||
id=4,
|
||||
name='Born_to_Obey',
|
||||
cn='生而服从',
|
||||
cht='生而服從',
|
||||
en='Born to Obey',
|
||||
jp='生まれながらに服従する',
|
||||
es='Creados para obedecer',
|
||||
)
|
||||
Root_Out_the_Turpitude = AssignmentEntry(
|
||||
id=5,
|
||||
name='Root_Out_the_Turpitude',
|
||||
cn='根除恶孽',
|
||||
cht='根除惡孽',
|
||||
en='Root Out the Turpitude',
|
||||
jp='悪孽を根絶やしに',
|
||||
es='La raíz del mal',
|
||||
)
|
||||
Fire_Lord_Inflames_Blades_of_War = AssignmentEntry(
|
||||
id=6,
|
||||
name='Fire_Lord_Inflames_Blades_of_War',
|
||||
cn='火帝动炉销剑戟',
|
||||
cht='火帝動爐銷劍戟',
|
||||
en='Fire Lord Inflames Blades of War',
|
||||
jp='剣戟を焼却する火帝炉',
|
||||
es='Prendan los fuelles, fundan las armas',
|
||||
)
|
||||
A_Startling_Night_Terror = AssignmentEntry(
|
||||
id=7,
|
||||
name='A_Startling_Night_Terror',
|
||||
cn='劫梦惊魂',
|
||||
cht='劫夢驚魂',
|
||||
en='A Startling Night Terror',
|
||||
jp='魂震える悪夢',
|
||||
es='Pesadilla aterradora',
|
||||
)
|
||||
Tranquility_of_Vimala_bhumi = AssignmentEntry(
|
||||
id=8,
|
||||
id=1,
|
||||
name='Tranquility_of_Vimala_bhumi',
|
||||
cn='离垢清净',
|
||||
cht='離垢清淨',
|
||||
@ -75,17 +12,71 @@ Tranquility_of_Vimala_bhumi = AssignmentEntry(
|
||||
jp='離垢清浄',
|
||||
es='Limpieza y purificación',
|
||||
)
|
||||
Nameless_Land_Nameless_People = AssignmentEntry(
|
||||
id=9,
|
||||
name='Nameless_Land_Nameless_People',
|
||||
cn='无名之地,无名之人',
|
||||
cht='無名之地,無名之人',
|
||||
en='Nameless Land, Nameless People',
|
||||
jp='無名の地、無名の人',
|
||||
es='Lugar anónimo, personas anónimas',
|
||||
A_Startling_Night_Terror = AssignmentEntry(
|
||||
id=2,
|
||||
name='A_Startling_Night_Terror',
|
||||
cn='劫梦惊魂',
|
||||
cht='劫夢驚魂',
|
||||
en='A Startling Night Terror',
|
||||
jp='魂震える悪夢',
|
||||
es='Pesadilla aterradora',
|
||||
)
|
||||
Fire_Lord_Inflames_Blades_of_War = AssignmentEntry(
|
||||
id=3,
|
||||
name='Fire_Lord_Inflames_Blades_of_War',
|
||||
cn='火帝动炉销剑戟',
|
||||
cht='火帝動爐銷劍戟',
|
||||
en='Fire Lord Inflames Blades of War',
|
||||
jp='剣戟を焼却する火帝炉',
|
||||
es='Prendan los fuelles, fundan las armas',
|
||||
)
|
||||
Root_Out_the_Turpitude = AssignmentEntry(
|
||||
id=4,
|
||||
name='Root_Out_the_Turpitude',
|
||||
cn='根除恶孽',
|
||||
cht='根除惡孽',
|
||||
en='Root Out the Turpitude',
|
||||
jp='悪孽を根絶やしに',
|
||||
es='La raíz del mal',
|
||||
)
|
||||
Born_to_Obey = AssignmentEntry(
|
||||
id=5,
|
||||
name='Born_to_Obey',
|
||||
cn='生而服从',
|
||||
cht='生而服從',
|
||||
en='Born to Obey',
|
||||
jp='生まれながらに服従する',
|
||||
es='Creados para obedecer',
|
||||
)
|
||||
Winter_Soldiers = AssignmentEntry(
|
||||
id=6,
|
||||
name='Winter_Soldiers',
|
||||
cn='寒冬的战士们',
|
||||
cht='寒冬的戰士們',
|
||||
en='Winter Soldiers',
|
||||
jp='寒冬の戦士たち',
|
||||
es='Los guerreros del invierno',
|
||||
)
|
||||
Destruction_of_the_Destroyer = AssignmentEntry(
|
||||
id=7,
|
||||
name='Destruction_of_the_Destroyer',
|
||||
cn='毁灭者的覆灭',
|
||||
cht='毀滅者的覆滅',
|
||||
en='Destruction of the Destroyer',
|
||||
jp='壊滅者の覆没',
|
||||
es='La destrucción del destructor',
|
||||
)
|
||||
Nine_Billion_Names = AssignmentEntry(
|
||||
id=8,
|
||||
name='Nine_Billion_Names',
|
||||
cn='九十亿个名字',
|
||||
cht='九十億個名字',
|
||||
en='Nine Billion Names',
|
||||
jp='九十億の御名',
|
||||
es='Nueve mil millones de nombres',
|
||||
)
|
||||
Akashic_Records = AssignmentEntry(
|
||||
id=10,
|
||||
id=9,
|
||||
name='Akashic_Records',
|
||||
cn='阿卡夏记录',
|
||||
cht='阿卡夏紀錄',
|
||||
@ -93,6 +84,15 @@ Akashic_Records = AssignmentEntry(
|
||||
jp='アーカーシャの記録',
|
||||
es='Los Registros de Akasha',
|
||||
)
|
||||
Nameless_Land_Nameless_People = AssignmentEntry(
|
||||
id=10,
|
||||
name='Nameless_Land_Nameless_People',
|
||||
cn='无名之地,无名之人',
|
||||
cht='無名之地,無名之人',
|
||||
en='Nameless Land, Nameless People',
|
||||
jp='無名の地、無名の人',
|
||||
es='Lugar anónimo, personas anónimas',
|
||||
)
|
||||
The_Invisible_Hand = AssignmentEntry(
|
||||
id=11,
|
||||
name='The_Invisible_Hand',
|
||||
@ -102,71 +102,8 @@ The_Invisible_Hand = AssignmentEntry(
|
||||
jp='見えざる手',
|
||||
es='La mano invisible',
|
||||
)
|
||||
Abandoned_and_Insulted = AssignmentEntry(
|
||||
id=12,
|
||||
name='Abandoned_and_Insulted',
|
||||
cn='被废弃与损害的',
|
||||
cht='被廢棄與損害的',
|
||||
en='Abandoned and Insulted',
|
||||
jp='捨てられしものと傷つけられしもの',
|
||||
es='Abandonado e insultado',
|
||||
)
|
||||
Spring_of_Life = AssignmentEntry(
|
||||
id=13,
|
||||
name='Spring_of_Life',
|
||||
cn='生命之泉',
|
||||
cht='生命之泉',
|
||||
en='Spring of Life',
|
||||
jp='生命の泉',
|
||||
es='La fuente de la vida',
|
||||
)
|
||||
The_Land_of_Gold = AssignmentEntry(
|
||||
id=14,
|
||||
name='The_Land_of_Gold',
|
||||
cn='黄金大地',
|
||||
cht='黃金大地',
|
||||
en='The Land of Gold',
|
||||
jp='黄金の大地',
|
||||
es='Tierra de oportunidades',
|
||||
)
|
||||
The_Blossom_in_the_Storm = AssignmentEntry(
|
||||
id=15,
|
||||
name='The_Blossom_in_the_Storm',
|
||||
cn='风暴中怒放的花',
|
||||
cht='風暴中怒放的花',
|
||||
en='The Blossom in the Storm',
|
||||
jp='嵐の中で咲き誇る花',
|
||||
es='Flores en la tormenta',
|
||||
)
|
||||
Legend_of_the_Puppet_Master = AssignmentEntry(
|
||||
id=16,
|
||||
name='Legend_of_the_Puppet_Master',
|
||||
cn='偃师传说',
|
||||
cht='偃師傳說',
|
||||
en='Legend of the Puppet Master',
|
||||
jp='傀儡師伝説',
|
||||
es='La leyenda del titiritero',
|
||||
)
|
||||
The_Wages_of_Humanity = AssignmentEntry(
|
||||
id=17,
|
||||
name='The_Wages_of_Humanity',
|
||||
cn='赡养人类',
|
||||
cht='贍養人類',
|
||||
en='The Wages of Humanity',
|
||||
jp='人類扶養',
|
||||
es='La paga de la humanidad',
|
||||
)
|
||||
Fragments_of_Illusory_Dreams = AssignmentEntry(
|
||||
id=18,
|
||||
name='Fragments_of_Illusory_Dreams',
|
||||
cn='幻梦的残片',
|
||||
cht='幻夢的殘片',
|
||||
en='Fragments of Illusory Dreams',
|
||||
jp='幻夢の残片',
|
||||
es='Fragmentos de sueños ilusorios',
|
||||
)
|
||||
Scalpel_and_Screwdriver = AssignmentEntry(
|
||||
id=19,
|
||||
id=12,
|
||||
name='Scalpel_and_Screwdriver',
|
||||
cn='手术刀与螺丝刀',
|
||||
cht='手術刀與螺絲起子',
|
||||
@ -174,3 +111,66 @@ Scalpel_and_Screwdriver = AssignmentEntry(
|
||||
jp='メスとスクリュードライバー',
|
||||
es='Bisturí y destornillador',
|
||||
)
|
||||
The_Wages_of_Humanity = AssignmentEntry(
|
||||
id=13,
|
||||
name='The_Wages_of_Humanity',
|
||||
cn='赡养人类',
|
||||
cht='贍養人類',
|
||||
en='The Wages of Humanity',
|
||||
jp='人類扶養',
|
||||
es='La paga de la humanidad',
|
||||
)
|
||||
Legend_of_the_Puppet_Master = AssignmentEntry(
|
||||
id=14,
|
||||
name='Legend_of_the_Puppet_Master',
|
||||
cn='偃师传说',
|
||||
cht='偃師傳說',
|
||||
en='Legend of the Puppet Master',
|
||||
jp='傀儡師伝説',
|
||||
es='La leyenda del titiritero',
|
||||
)
|
||||
The_Land_of_Gold = AssignmentEntry(
|
||||
id=15,
|
||||
name='The_Land_of_Gold',
|
||||
cn='黄金大地',
|
||||
cht='黃金大地',
|
||||
en='The Land of Gold',
|
||||
jp='黄金の大地',
|
||||
es='Tierra de oportunidades',
|
||||
)
|
||||
Spring_of_Life = AssignmentEntry(
|
||||
id=16,
|
||||
name='Spring_of_Life',
|
||||
cn='生命之泉',
|
||||
cht='生命之泉',
|
||||
en='Spring of Life',
|
||||
jp='生命の泉',
|
||||
es='La fuente de la vida',
|
||||
)
|
||||
Fragments_of_Illusory_Dreams = AssignmentEntry(
|
||||
id=17,
|
||||
name='Fragments_of_Illusory_Dreams',
|
||||
cn='幻梦的残片',
|
||||
cht='幻夢的殘片',
|
||||
en='Fragments of Illusory Dreams',
|
||||
jp='幻夢の残片',
|
||||
es='Fragmentos de sueños ilusorios',
|
||||
)
|
||||
The_Blossom_in_the_Storm = AssignmentEntry(
|
||||
id=18,
|
||||
name='The_Blossom_in_the_Storm',
|
||||
cn='风暴中怒放的花',
|
||||
cht='風暴中怒放的花',
|
||||
en='The Blossom in the Storm',
|
||||
jp='嵐の中で咲き誇る花',
|
||||
es='Flores en la tormenta',
|
||||
)
|
||||
Abandoned_and_Insulted = AssignmentEntry(
|
||||
id=19,
|
||||
name='Abandoned_and_Insulted',
|
||||
cn='被废弃与损害的',
|
||||
cht='被廢棄與損害的',
|
||||
en='Abandoned and Insulted',
|
||||
jp='捨てられしものと傷つけられしもの',
|
||||
es='Abandonado e insultado',
|
||||
)
|
||||
|
@ -3,71 +3,8 @@ from .classes import AssignmentEntryDetailed
|
||||
# This file was auto-generated, do not modify it manually. To generate:
|
||||
# ``` python -m dev_tools.keyword_extract ```
|
||||
|
||||
Nine_Billion_Names = AssignmentEntryDetailed(
|
||||
id=1,
|
||||
name='Nine_Billion_Names',
|
||||
cn='熄灭原核(九十亿个名字)',
|
||||
cht='熄滅原核(九十億個名字)',
|
||||
en='Extinguished Core (Nine Billion Names)',
|
||||
jp='消滅した原核(九十億の御名)',
|
||||
es='Núcleo apagado (Nueve mil millones de nombres)',
|
||||
)
|
||||
Destruction_of_the_Destroyer = AssignmentEntryDetailed(
|
||||
id=2,
|
||||
name='Destruction_of_the_Destroyer',
|
||||
cn='掠夺的本能(毁灭者的覆灭)',
|
||||
cht='掠奪的本能(毀滅者的覆滅)',
|
||||
en="Thief's Instinct (Destruction of the Destroyer)",
|
||||
jp='略奪の本能(壊滅者の覆没)',
|
||||
es='Instinto del ladrón (La destrucción del destructor)',
|
||||
)
|
||||
Winter_Soldiers = AssignmentEntryDetailed(
|
||||
id=3,
|
||||
name='Winter_Soldiers',
|
||||
cn='铁卫扣饰(寒冬的战士们)',
|
||||
cht='鐵衛扣飾(寒冬的戰士們)',
|
||||
en='Silvermane Badge (Winter Soldiers)',
|
||||
jp='シルバーメインの釦(寒冬の戦士たち)',
|
||||
es='Pin del guardia (Los guerreros del invierno)',
|
||||
)
|
||||
Born_to_Obey = AssignmentEntryDetailed(
|
||||
id=4,
|
||||
name='Born_to_Obey',
|
||||
cn='古代零件(生而服从)',
|
||||
cht='古代零件(生而服從)',
|
||||
en='Ancient Part (Born to Obey)',
|
||||
jp='古代パーツ(生まれながらに服従する)',
|
||||
es='Componente antiguo (Creados para obedecer)',
|
||||
)
|
||||
Root_Out_the_Turpitude = AssignmentEntryDetailed(
|
||||
id=5,
|
||||
name='Root_Out_the_Turpitude',
|
||||
cn='永寿幼芽(根除恶孽)',
|
||||
cht='永壽幼芽(根除惡孽)',
|
||||
en='Immortal Scionette (Root Out the Turpitude)',
|
||||
jp='永寿の萌芽(悪孽を根絶やしに)',
|
||||
es='Brote verde inmortal (La raíz del mal)',
|
||||
)
|
||||
Fire_Lord_Inflames_Blades_of_War = AssignmentEntryDetailed(
|
||||
id=6,
|
||||
name='Fire_Lord_Inflames_Blades_of_War',
|
||||
cn='工造机杼(火帝动炉销剑戟)',
|
||||
cht='工造機杼(火帝動爐銷劍戟)',
|
||||
en="Artifex's Module (Fire Lord Inflames Blades of War)",
|
||||
jp='工造機関(剣戟を焼却する火帝炉)',
|
||||
es='Componente artificial mecánico (Prendan los fuelles, fundan las armas)',
|
||||
)
|
||||
A_Startling_Night_Terror = AssignmentEntryDetailed(
|
||||
id=7,
|
||||
name='A_Startling_Night_Terror',
|
||||
cn='蓄梦元件(劫梦惊魂)',
|
||||
cht='蓄夢元件(劫夢驚魂)',
|
||||
en='Dream Collection Component (A Startling Night Terror)',
|
||||
jp='ドリームコレクションパーツ(魂震える悪夢)',
|
||||
es='Componente del acumulador de sueños (Pesadilla aterradora)',
|
||||
)
|
||||
Tranquility_of_Vimala_bhumi = AssignmentEntryDetailed(
|
||||
id=8,
|
||||
id=1,
|
||||
name='Tranquility_of_Vimala_bhumi',
|
||||
cn='思绪末屑(离垢清净)',
|
||||
cht='思緒末屑(離垢清淨)',
|
||||
@ -75,17 +12,71 @@ Tranquility_of_Vimala_bhumi = AssignmentEntryDetailed(
|
||||
jp='思考の粉末(離垢清浄)',
|
||||
es='Jirones de pensamientos (Limpieza y purificación)',
|
||||
)
|
||||
Nameless_Land_Nameless_People = AssignmentEntryDetailed(
|
||||
id=9,
|
||||
name='Nameless_Land_Nameless_People',
|
||||
cn='角色经验材料(无名之地,无名之人)',
|
||||
cht='角色經驗素材(無名之地,無名之人)',
|
||||
en='Character EXP Material (Nameless Land, Nameless People)',
|
||||
jp='キャラクター経験値素材(無名の地、無名の人)',
|
||||
es='Material de EXP de personaje (Lugar anónimo, personas anónimas)',
|
||||
A_Startling_Night_Terror = AssignmentEntryDetailed(
|
||||
id=2,
|
||||
name='A_Startling_Night_Terror',
|
||||
cn='蓄梦元件(劫梦惊魂)',
|
||||
cht='蓄夢元件(劫夢驚魂)',
|
||||
en='Dream Collection Component (A Startling Night Terror)',
|
||||
jp='ドリームコレクションパーツ(魂震える悪夢)',
|
||||
es='Componente del acumulador de sueños (Pesadilla aterradora)',
|
||||
)
|
||||
Fire_Lord_Inflames_Blades_of_War = AssignmentEntryDetailed(
|
||||
id=3,
|
||||
name='Fire_Lord_Inflames_Blades_of_War',
|
||||
cn='工造机杼(火帝动炉销剑戟)',
|
||||
cht='工造機杼(火帝動爐銷劍戟)',
|
||||
en="Artifex's Module (Fire Lord Inflames Blades of War)",
|
||||
jp='工造機関(剣戟を焼却する火帝炉)',
|
||||
es='Componente artificial mecánico (Prendan los fuelles, fundan las armas)',
|
||||
)
|
||||
Root_Out_the_Turpitude = AssignmentEntryDetailed(
|
||||
id=4,
|
||||
name='Root_Out_the_Turpitude',
|
||||
cn='永寿幼芽(根除恶孽)',
|
||||
cht='永壽幼芽(根除惡孽)',
|
||||
en='Immortal Scionette (Root Out the Turpitude)',
|
||||
jp='永寿の萌芽(悪孽を根絶やしに)',
|
||||
es='Brote verde inmortal (La raíz del mal)',
|
||||
)
|
||||
Born_to_Obey = AssignmentEntryDetailed(
|
||||
id=5,
|
||||
name='Born_to_Obey',
|
||||
cn='古代零件(生而服从)',
|
||||
cht='古代零件(生而服從)',
|
||||
en='Ancient Part (Born to Obey)',
|
||||
jp='古代パーツ(生まれながらに服従する)',
|
||||
es='Componente antiguo (Creados para obedecer)',
|
||||
)
|
||||
Winter_Soldiers = AssignmentEntryDetailed(
|
||||
id=6,
|
||||
name='Winter_Soldiers',
|
||||
cn='铁卫扣饰(寒冬的战士们)',
|
||||
cht='鐵衛扣飾(寒冬的戰士們)',
|
||||
en='Silvermane Badge (Winter Soldiers)',
|
||||
jp='シルバーメインの釦(寒冬の戦士たち)',
|
||||
es='Pin del guardia (Los guerreros del invierno)',
|
||||
)
|
||||
Destruction_of_the_Destroyer = AssignmentEntryDetailed(
|
||||
id=7,
|
||||
name='Destruction_of_the_Destroyer',
|
||||
cn='掠夺的本能(毁灭者的覆灭)',
|
||||
cht='掠奪的本能(毀滅者的覆滅)',
|
||||
en="Thief's Instinct (Destruction of the Destroyer)",
|
||||
jp='略奪の本能(壊滅者の覆没)',
|
||||
es='Instinto del ladrón (La destrucción del destructor)',
|
||||
)
|
||||
Nine_Billion_Names = AssignmentEntryDetailed(
|
||||
id=8,
|
||||
name='Nine_Billion_Names',
|
||||
cn='熄灭原核(九十亿个名字)',
|
||||
cht='熄滅原核(九十億個名字)',
|
||||
en='Extinguished Core (Nine Billion Names)',
|
||||
jp='消滅した原核(九十億の御名)',
|
||||
es='Núcleo apagado (Nueve mil millones de nombres)',
|
||||
)
|
||||
Akashic_Records = AssignmentEntryDetailed(
|
||||
id=10,
|
||||
id=9,
|
||||
name='Akashic_Records',
|
||||
cn='光锥经验材料(阿卡夏记录)',
|
||||
cht='光錐經驗素材(阿卡夏紀錄)',
|
||||
@ -93,6 +84,15 @@ Akashic_Records = AssignmentEntryDetailed(
|
||||
jp='光円錐経験値素材(アーカーシャの記録)',
|
||||
es='Material de EXP de conos de luz (Los Registros de Akasha)',
|
||||
)
|
||||
Nameless_Land_Nameless_People = AssignmentEntryDetailed(
|
||||
id=10,
|
||||
name='Nameless_Land_Nameless_People',
|
||||
cn='角色经验材料(无名之地,无名之人)',
|
||||
cht='角色經驗素材(無名之地,無名之人)',
|
||||
en='Character EXP Material (Nameless Land, Nameless People)',
|
||||
jp='キャラクター経験値素材(無名の地、無名の人)',
|
||||
es='Material de EXP de personaje (Lugar anónimo, personas anónimas)',
|
||||
)
|
||||
The_Invisible_Hand = AssignmentEntryDetailed(
|
||||
id=11,
|
||||
name='The_Invisible_Hand',
|
||||
@ -102,71 +102,8 @@ The_Invisible_Hand = AssignmentEntryDetailed(
|
||||
jp='信用ポイント(見えざる手)',
|
||||
es='Crédito (La mano invisible)',
|
||||
)
|
||||
Abandoned_and_Insulted = AssignmentEntryDetailed(
|
||||
id=12,
|
||||
name='Abandoned_and_Insulted',
|
||||
cn='燃素 & 金属(被废弃与损害的)',
|
||||
cht='燃素 & 金屬(被廢棄與損害的)',
|
||||
en='Phlogiston & Metal (Abandoned and Insulted)',
|
||||
jp='燃素 & 金属(捨てられしものと傷つけられしもの)',
|
||||
es='Flogisto & Metal (Abandonado e insultado)',
|
||||
)
|
||||
Spring_of_Life = AssignmentEntryDetailed(
|
||||
id=13,
|
||||
name='Spring_of_Life',
|
||||
cn='固态净水 & 虚粒子(生命之泉)',
|
||||
cht='固態淨水 & 虛粒子(生命之泉)',
|
||||
en='Solid Water & Virtual Particle (Spring of Life)',
|
||||
jp='固形純水 & 仮想粒子(生命の泉)',
|
||||
es='Agua sólida & Partícula virtual (La fuente de la vida)',
|
||||
)
|
||||
The_Land_of_Gold = AssignmentEntryDetailed(
|
||||
id=14,
|
||||
name='The_Land_of_Gold',
|
||||
cn='基本食材 & 蛋白米(黄金大地)',
|
||||
cht='基本食材 & 蛋白米(黃金大地)',
|
||||
en='Basic Ingredients & Protein Rice (The Land of Gold)',
|
||||
jp='基本食材 & タンパク米(黄金の大地)',
|
||||
es='Ingredientes básicos & Arroz proteico (Tierra de oportunidades)',
|
||||
)
|
||||
The_Blossom_in_the_Storm = AssignmentEntryDetailed(
|
||||
id=15,
|
||||
name='The_Blossom_in_the_Storm',
|
||||
cn='气态流体 & 种子(风暴中怒放的花)',
|
||||
cht='氣態流體 & 種子(風暴中怒放的花)',
|
||||
en='Gaseous Liquid & Seed (The Blossom in the Storm)',
|
||||
jp='気態流体 & 種子(嵐の中で咲き誇る花)',
|
||||
es='Líquido gaseoso & Semilla (Flores en la tormenta)',
|
||||
)
|
||||
Legend_of_the_Puppet_Master = AssignmentEntryDetailed(
|
||||
id=16,
|
||||
name='Legend_of_the_Puppet_Master',
|
||||
cn='废弃机巧零件 & 玉兆单元(偃师传说)',
|
||||
cht='廢棄機巧零件 & 玉兆單元(偃師傳說)',
|
||||
en='Discarded Ingenium Parts & Jade Abacus Unit (Legend of the Puppet Master)',
|
||||
jp='廃棄された機巧部品 & 玉兆単元(傀儡師伝説)',
|
||||
es='Componentes mecánicos abandonados & Unidad de ábaco de jade (La leyenda del titiritero)',
|
||||
)
|
||||
The_Wages_of_Humanity = AssignmentEntryDetailed(
|
||||
id=17,
|
||||
name='The_Wages_of_Humanity',
|
||||
cn='一人嘉禾 & 药草提取物(赡养人类)',
|
||||
cht='一人嘉禾 & 藥草萃取物(贍養人類)',
|
||||
en='Human-Height Auspicious Crops & Extract of Medicinal Herbs (The Wages of Humanity)',
|
||||
jp='一人稲 & 薬草抽出物(人類扶養)',
|
||||
es='Cosecha tan alta como una persona & Extracto de hierbas medicinales (La paga de la humanidad)',
|
||||
)
|
||||
Fragments_of_Illusory_Dreams = AssignmentEntryDetailed(
|
||||
id=18,
|
||||
name='Fragments_of_Illusory_Dreams',
|
||||
cn='安逸 & 碎梦(幻梦的残片)',
|
||||
cht='安逸 & 碎夢(幻夢的殘片)',
|
||||
en='Tranquility & Broken Dreams (Fragments of Illusory Dreams)',
|
||||
jp='安逸 & 砕けた夢(幻夢の残片)',
|
||||
es='Tranquilidad & Sueños rotos (Fragmentos de sueños ilusorios)',
|
||||
)
|
||||
Scalpel_and_Screwdriver = AssignmentEntryDetailed(
|
||||
id=19,
|
||||
id=12,
|
||||
name='Scalpel_and_Screwdriver',
|
||||
cn='锈迹齿轮 & 老旧臼齿(手术刀与螺丝刀)',
|
||||
cht='鏽跡齒輪 & 老舊臼齒(手術刀與螺絲起子)',
|
||||
@ -174,3 +111,66 @@ Scalpel_and_Screwdriver = AssignmentEntryDetailed(
|
||||
jp='錆びた歯車 & 古びた大臼歯(メスとスクリュードライバー)',
|
||||
es='Engranaje oxidado & Muela vieja (Bisturí y destornillador)',
|
||||
)
|
||||
The_Wages_of_Humanity = AssignmentEntryDetailed(
|
||||
id=13,
|
||||
name='The_Wages_of_Humanity',
|
||||
cn='一人嘉禾 & 药草提取物(赡养人类)',
|
||||
cht='一人嘉禾 & 藥草萃取物(贍養人類)',
|
||||
en='Human-Height Auspicious Crops & Extract of Medicinal Herbs (The Wages of Humanity)',
|
||||
jp='一人稲 & 薬草抽出物(人類扶養)',
|
||||
es='Cosecha tan alta como una persona & Extracto de hierbas medicinales (La paga de la humanidad)',
|
||||
)
|
||||
Legend_of_the_Puppet_Master = AssignmentEntryDetailed(
|
||||
id=14,
|
||||
name='Legend_of_the_Puppet_Master',
|
||||
cn='废弃机巧零件 & 玉兆单元(偃师传说)',
|
||||
cht='廢棄機巧零件 & 玉兆單元(偃師傳說)',
|
||||
en='Discarded Ingenium Parts & Jade Abacus Unit (Legend of the Puppet Master)',
|
||||
jp='廃棄された機巧部品 & 玉兆単元(傀儡師伝説)',
|
||||
es='Componentes mecánicos abandonados & Unidad de ábaco de jade (La leyenda del titiritero)',
|
||||
)
|
||||
The_Land_of_Gold = AssignmentEntryDetailed(
|
||||
id=15,
|
||||
name='The_Land_of_Gold',
|
||||
cn='基本食材 & 蛋白米(黄金大地)',
|
||||
cht='基本食材 & 蛋白米(黃金大地)',
|
||||
en='Basic Ingredients & Protein Rice (The Land of Gold)',
|
||||
jp='基本食材 & タンパク米(黄金の大地)',
|
||||
es='Ingredientes básicos & Arroz proteico (Tierra de oportunidades)',
|
||||
)
|
||||
Spring_of_Life = AssignmentEntryDetailed(
|
||||
id=16,
|
||||
name='Spring_of_Life',
|
||||
cn='固态净水 & 虚粒子(生命之泉)',
|
||||
cht='固態淨水 & 虛粒子(生命之泉)',
|
||||
en='Solid Water & Virtual Particle (Spring of Life)',
|
||||
jp='固形純水 & 仮想粒子(生命の泉)',
|
||||
es='Agua sólida & Partícula virtual (La fuente de la vida)',
|
||||
)
|
||||
Fragments_of_Illusory_Dreams = AssignmentEntryDetailed(
|
||||
id=17,
|
||||
name='Fragments_of_Illusory_Dreams',
|
||||
cn='安逸 & 碎梦(幻梦的残片)',
|
||||
cht='安逸 & 碎夢(幻夢的殘片)',
|
||||
en='Tranquility & Broken Dreams (Fragments of Illusory Dreams)',
|
||||
jp='安逸 & 砕けた夢(幻夢の残片)',
|
||||
es='Tranquilidad & Sueños rotos (Fragmentos de sueños ilusorios)',
|
||||
)
|
||||
The_Blossom_in_the_Storm = AssignmentEntryDetailed(
|
||||
id=18,
|
||||
name='The_Blossom_in_the_Storm',
|
||||
cn='气态流体 & 种子(风暴中怒放的花)',
|
||||
cht='氣態流體 & 種子(風暴中怒放的花)',
|
||||
en='Gaseous Liquid & Seed (The Blossom in the Storm)',
|
||||
jp='気態流体 & 種子(嵐の中で咲き誇る花)',
|
||||
es='Líquido gaseoso & Semilla (Flores en la tormenta)',
|
||||
)
|
||||
Abandoned_and_Insulted = AssignmentEntryDetailed(
|
||||
id=19,
|
||||
name='Abandoned_and_Insulted',
|
||||
cn='燃素 & 金属(被废弃与损害的)',
|
||||
cht='燃素 & 金屬(被廢棄與損害的)',
|
||||
en='Phlogiston & Metal (Abandoned and Insulted)',
|
||||
jp='燃素 & 金属(捨てられしものと傷つけられしもの)',
|
||||
es='Flogisto & Metal (Abandonado e insultado)',
|
||||
)
|
||||
|
@ -280,13 +280,22 @@ MAP_CHECK = ButtonWrapper(
|
||||
)
|
||||
MAP_EXIT = ButtonWrapper(
|
||||
name='MAP_EXIT',
|
||||
share=Button(
|
||||
file='./assets/share/base/page/MAP_EXIT.png',
|
||||
area=(27, 46, 44, 74),
|
||||
search=(7, 26, 64, 94),
|
||||
color=(142, 144, 148),
|
||||
button=(27, 46, 44, 74),
|
||||
),
|
||||
share=[
|
||||
Button(
|
||||
file='./assets/share/base/page/MAP_EXIT.png',
|
||||
area=(27, 46, 44, 74),
|
||||
search=(7, 26, 64, 94),
|
||||
color=(142, 144, 148),
|
||||
button=(27, 46, 44, 74),
|
||||
),
|
||||
Button(
|
||||
file='./assets/share/base/page/MAP_EXIT.2.png',
|
||||
area=(27, 46, 44, 74),
|
||||
search=(7, 26, 64, 94),
|
||||
color=(160, 187, 206),
|
||||
button=(27, 46, 44, 74),
|
||||
),
|
||||
],
|
||||
)
|
||||
MAP_GOTO_WORLD = ButtonWrapper(
|
||||
name='MAP_GOTO_WORLD',
|
||||
|
@ -5,11 +5,9 @@ from module.config.server import VALID_LANG
|
||||
from module.exception import RequestHumanTakeover, ScriptError
|
||||
from module.logger import logger
|
||||
from module.ocr.ocr import OcrWhiteLetterOnComplexBackground
|
||||
from tasks.base.assets.assets_base_main_page import OCR_MAP_NAME, ROGUE_LEAVE_FOR_NOW
|
||||
from tasks.base.assets.assets_base_page import CLOSE, MAP_EXIT
|
||||
from tasks.base.page import Page, page_gacha, page_main
|
||||
from tasks.base.assets.assets_base_main_page import OCR_MAP_NAME
|
||||
from tasks.base.page import Page, page_main
|
||||
from tasks.base.popup import PopupHandler
|
||||
from tasks.daily.assets.assets_daily_trial import START_TRIAL
|
||||
from tasks.map.keywords import KEYWORDS_MAP_PLANE, MapPlane
|
||||
|
||||
|
||||
@ -39,9 +37,11 @@ class OcrPlaneName(OcrWhiteLetterOnComplexBackground):
|
||||
# 区域-战
|
||||
result = re.sub(r'区域.*战$', '区域战斗', result)
|
||||
# 区域-事
|
||||
result = re.sub(r'区域.*事$', '区域事件', result)
|
||||
result = re.sub(r'区域.*[事件]$', '区域事件', result)
|
||||
# 区域-战
|
||||
result = re.sub(r'区域.*交$', '区域交易', result)
|
||||
# 区域-战
|
||||
result = re.sub(r'区域.*[精英]$', '区域精英', result)
|
||||
# 区域-事伴, 区域-事祥
|
||||
result = re.sub(r'事[伴祥]', '事件', result)
|
||||
# 医域-战斗
|
||||
@ -158,49 +158,3 @@ class MainPage(PopupHandler):
|
||||
|
||||
self.handle_lang_check(page=page_main)
|
||||
return True
|
||||
|
||||
def ui_leave_special(self):
|
||||
"""
|
||||
Leave from:
|
||||
- Rogue domains
|
||||
- Character trials
|
||||
|
||||
Returns:
|
||||
bool: If left a special plane
|
||||
|
||||
Pages:
|
||||
in: Any
|
||||
out: page_main
|
||||
"""
|
||||
if not self.appear(MAP_EXIT):
|
||||
return False
|
||||
|
||||
logger.info('UI leave special')
|
||||
skip_first_screenshot = True
|
||||
clicked = False
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
# End
|
||||
if clicked:
|
||||
if self.appear(page_main.check_button):
|
||||
logger.info(f'Leave to {page_main}')
|
||||
break
|
||||
|
||||
if self.appear_then_click(MAP_EXIT, interval=2):
|
||||
continue
|
||||
if self.handle_popup_confirm():
|
||||
continue
|
||||
if self.match_template_color(START_TRIAL, interval=2):
|
||||
logger.info(f'{START_TRIAL} -> {CLOSE}')
|
||||
self.device.click(CLOSE)
|
||||
clicked = True
|
||||
continue
|
||||
if self.handle_ui_close(page_gacha.check_button, interval=2):
|
||||
continue
|
||||
if self.appear_then_click(ROGUE_LEAVE_FOR_NOW, interval=2):
|
||||
clicked = True
|
||||
continue
|
||||
|
@ -4,13 +4,14 @@ from module.base.timer import Timer
|
||||
from module.exception import GameNotRunningError, GamePageUnknownError
|
||||
from module.logger import logger
|
||||
from module.ocr.ocr import Ocr
|
||||
from tasks.base.assets.assets_base_page import MAP_EXIT
|
||||
from tasks.base.assets.assets_base_main_page import ROGUE_LEAVE_FOR_NOW
|
||||
from tasks.base.assets.assets_base_page import CLOSE, MAIN_GOTO_CHARACTER, MAP_EXIT
|
||||
from tasks.base.main_page import MainPage
|
||||
from tasks.base.page import Page, page_main
|
||||
from tasks.base.page import Page, page_gacha, page_main
|
||||
from tasks.combat.assets.assets_combat_finish import COMBAT_EXIT
|
||||
from tasks.combat.assets.assets_combat_interact import MAP_LOADING
|
||||
from tasks.combat.assets.assets_combat_prepare import COMBAT_PREPARE
|
||||
from tasks.daily.assets.assets_daily_trial import INFO_CLOSE
|
||||
from tasks.daily.assets.assets_daily_trial import INFO_CLOSE, START_TRIAL
|
||||
from tasks.login.assets.assets_login import LOGIN_CONFIRM
|
||||
|
||||
|
||||
@ -24,6 +25,8 @@ class UI(MainPage):
|
||||
page (Page):
|
||||
interval:
|
||||
"""
|
||||
if page == page_main:
|
||||
return self.is_in_main(interval=interval)
|
||||
return self.appear(page.check_button, interval=interval)
|
||||
|
||||
def ui_get_current_page(self, skip_first_screenshot=True):
|
||||
@ -139,7 +142,7 @@ class UI(MainPage):
|
||||
for page in Page.iter_pages():
|
||||
if page.parent is None or page.check_button is None:
|
||||
continue
|
||||
if self.appear(page.check_button, interval=5):
|
||||
if self.ui_page_appear(page, interval=5):
|
||||
logger.info(f'Page switch: {page} -> {page.parent}')
|
||||
self.handle_lang_check(page)
|
||||
if self.ui_page_confirm(page):
|
||||
@ -297,14 +300,41 @@ class UI(MainPage):
|
||||
if additional():
|
||||
continue
|
||||
|
||||
def is_in_main(self):
|
||||
if self.appear(page_main.check_button):
|
||||
if self.image_color_count(page_main.check_button, color=(235, 235, 235), threshold=234, count=400):
|
||||
return True
|
||||
if self.appear(MAP_EXIT):
|
||||
def is_in_main(self, interval=0):
|
||||
self.device.stuck_record_add(MAIN_GOTO_CHARACTER)
|
||||
|
||||
if interval and not self.interval_is_reached(MAIN_GOTO_CHARACTER, interval=interval):
|
||||
return False
|
||||
|
||||
appear = False
|
||||
if MAIN_GOTO_CHARACTER.match_template_binary(self.device.image):
|
||||
if self.image_color_count(MAIN_GOTO_CHARACTER, color=(235, 235, 235), threshold=234, count=400):
|
||||
appear = True
|
||||
if not appear:
|
||||
if MAP_EXIT.match_template_binary(self.device.image):
|
||||
if self.image_color_count(MAP_EXIT, color=(235, 235, 235), threshold=221, count=50):
|
||||
appear = True
|
||||
|
||||
if appear and interval:
|
||||
self.interval_reset(MAIN_GOTO_CHARACTER, interval=interval)
|
||||
|
||||
return appear
|
||||
|
||||
def is_in_map_exit(self, interval=0):
|
||||
self.device.stuck_record_add(MAP_EXIT)
|
||||
|
||||
if interval and not self.interval_is_reached(MAP_EXIT, interval=interval):
|
||||
return False
|
||||
|
||||
appear = False
|
||||
if MAP_EXIT.match_template_binary(self.device.image):
|
||||
if self.image_color_count(MAP_EXIT, color=(235, 235, 235), threshold=221, count=50):
|
||||
return True
|
||||
return False
|
||||
appear = True
|
||||
|
||||
if appear and interval:
|
||||
self.interval_reset(MAP_EXIT, interval=interval)
|
||||
|
||||
return appear
|
||||
|
||||
def ui_goto_main(self):
|
||||
return self.ui_ensure(destination=page_main)
|
||||
@ -380,3 +410,50 @@ class UI(MainPage):
|
||||
button (Button):
|
||||
"""
|
||||
pass
|
||||
|
||||
def ui_leave_special(self):
|
||||
"""
|
||||
Leave from:
|
||||
- Rogue domains
|
||||
- Character trials
|
||||
|
||||
Returns:
|
||||
bool: If left a special plane
|
||||
|
||||
Pages:
|
||||
in: Any
|
||||
out: page_main
|
||||
"""
|
||||
if not self.is_in_map_exit():
|
||||
return False
|
||||
|
||||
logger.info('UI leave special')
|
||||
skip_first_screenshot = True
|
||||
clicked = False
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
# End
|
||||
if clicked:
|
||||
if self.is_in_main():
|
||||
logger.info(f'Leave to {page_main}')
|
||||
break
|
||||
|
||||
if self.is_in_map_exit(interval=2):
|
||||
self.device.click(MAP_EXIT)
|
||||
continue
|
||||
if self.handle_popup_confirm():
|
||||
continue
|
||||
if self.match_template_color(START_TRIAL, interval=2):
|
||||
logger.info(f'{START_TRIAL} -> {CLOSE}')
|
||||
self.device.click(CLOSE)
|
||||
clicked = True
|
||||
continue
|
||||
if self.handle_ui_close(page_gacha.check_button, interval=2):
|
||||
continue
|
||||
if self.appear_then_click(ROGUE_LEAVE_FOR_NOW, interval=2):
|
||||
clicked = True
|
||||
continue
|
||||
|
@ -96,6 +96,10 @@ class BattlePassUI(UI):
|
||||
MAX_LEVEL = 70
|
||||
|
||||
def _battle_pass_wait_rewards_loaded(self, skip_first_screenshot=True):
|
||||
"""
|
||||
Returns:
|
||||
bool: If load success
|
||||
"""
|
||||
timeout = Timer(2, count=4).start()
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
@ -105,12 +109,16 @@ class BattlePassUI(UI):
|
||||
|
||||
if timeout.reached():
|
||||
logger.warning('Wait rewards tab loaded timeout')
|
||||
break
|
||||
return False
|
||||
if self.appear(REWARDS_LOADED):
|
||||
logger.info('Rewards tab loaded')
|
||||
break
|
||||
return True
|
||||
|
||||
def _battle_pass_wait_missions_loaded(self, skip_first_screenshot=True):
|
||||
"""
|
||||
Returns:
|
||||
bool: If load success
|
||||
"""
|
||||
timeout = Timer(2, count=4).start()
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
@ -120,14 +128,14 @@ class BattlePassUI(UI):
|
||||
|
||||
if timeout.reached():
|
||||
logger.warning('Wait missions tab loaded timeout')
|
||||
break
|
||||
return False
|
||||
|
||||
# Has scroll and last mission loaded
|
||||
if self.appear(MISSION_PAGE_SCROLL):
|
||||
color = get_color(self.device.image, MISSIONS_LOADED.area)
|
||||
if np.mean(color) > 128:
|
||||
logger.info('Missions tab loaded')
|
||||
break
|
||||
return True
|
||||
|
||||
def battle_pass_goto(self, state: KEYWORDS_BATTLE_PASS_TAB):
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@ from tasks.character.keywords import CharacterList, DICT_SORTED_RANGES, KEYWORDS
|
||||
|
||||
class OcrCharacterName(OcrWhiteLetterOnComplexBackground):
|
||||
merge_thres_x = 20
|
||||
merge_thres_y = 20
|
||||
merge_thres_y = 10
|
||||
|
||||
def after_process(self, result):
|
||||
result = result.replace('蛆', '妲')
|
||||
|
@ -43,16 +43,6 @@ COMBAT_SUPPORT_LIST_SCROLL = ButtonWrapper(
|
||||
button=(472, 162, 476, 598),
|
||||
),
|
||||
)
|
||||
COMBAT_SUPPORT_SELECTED = ButtonWrapper(
|
||||
name='COMBAT_SUPPORT_SELECTED',
|
||||
share=Button(
|
||||
file='./assets/share/combat/support/COMBAT_SUPPORT_SELECTED.png',
|
||||
area=(69, 114, 91, 116),
|
||||
search=(49, 94, 111, 136),
|
||||
color=(254, 254, 254),
|
||||
button=(69, 114, 91, 116),
|
||||
),
|
||||
)
|
||||
SUPPORT_SELECTED = ButtonWrapper(
|
||||
name='SUPPORT_SELECTED',
|
||||
share=[
|
||||
|
@ -82,14 +82,11 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo
|
||||
logger.hr('Combat prepare')
|
||||
skip_first_screenshot = True
|
||||
if support_character:
|
||||
# To set team before support set
|
||||
pre_set_team = True
|
||||
# Block COMBAT_TEAM_PREPARE before support set
|
||||
support_set = False
|
||||
else:
|
||||
pre_set_team = False
|
||||
support_set = True
|
||||
logger.info([support_character, pre_set_team, support_set])
|
||||
logger.info([support_character, support_set])
|
||||
trial = 0
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
@ -107,18 +104,17 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo
|
||||
raise RequestHumanTakeover
|
||||
|
||||
# Click
|
||||
if support_character and self.appear(COMBAT_TEAM_SUPPORT):
|
||||
if pre_set_team:
|
||||
self.team_set(team)
|
||||
pre_set_team = False
|
||||
continue
|
||||
if support_character and self.appear(COMBAT_TEAM_SUPPORT, interval=2):
|
||||
self.team_set(team)
|
||||
self.support_set(support_character)
|
||||
self.interval_reset(COMBAT_TEAM_SUPPORT)
|
||||
support_set = True
|
||||
continue
|
||||
if support_set and self.appear(COMBAT_TEAM_PREPARE, interval=2):
|
||||
self.team_set(team)
|
||||
self.device.click(COMBAT_TEAM_PREPARE)
|
||||
self.interval_reset(COMBAT_TEAM_PREPARE)
|
||||
self.interval_reset(COMBAT_TEAM_SUPPORT)
|
||||
continue
|
||||
if self.appear(COMBAT_TEAM_PREPARE):
|
||||
self.interval_reset(COMBAT_PREPARE)
|
||||
@ -131,6 +127,7 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo
|
||||
trial += 1
|
||||
continue
|
||||
if self.handle_combat_interact():
|
||||
self.map_A_timer.reset()
|
||||
continue
|
||||
if self.handle_ascension_dungeon_prepare():
|
||||
continue
|
||||
@ -160,7 +157,8 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo
|
||||
if callable(expected_end) and expected_end():
|
||||
logger.info(f'Combat execute ended at {expected_end.__name__}')
|
||||
break
|
||||
if self.appear(COMBAT_AGAIN):
|
||||
if (self.appear(COMBAT_AGAIN) and
|
||||
self.image_color_count(COMBAT_AGAIN, color=(227, 227, 228), threshold=221, count=50)):
|
||||
logger.info(f'Combat execute ended at {COMBAT_AGAIN}')
|
||||
break
|
||||
if self.is_in_main():
|
||||
@ -177,6 +175,9 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo
|
||||
is_executing = False
|
||||
if self.handle_combat_state():
|
||||
continue
|
||||
# Battle pass popup appears just after combat finished and before blessings
|
||||
if self.handle_battle_pass_notification():
|
||||
continue
|
||||
|
||||
def _combat_can_again(self) -> bool:
|
||||
"""
|
||||
@ -215,6 +216,9 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo
|
||||
Returns:
|
||||
bool: True to re-enter combat and run with another wave settings
|
||||
"""
|
||||
if self.config.stored.TrailblazePower.value < self.combat_wave_cost:
|
||||
logger.info('Current trailblaze power is not enough for next run')
|
||||
return False
|
||||
# Wave limit
|
||||
if self.combat_wave_limit:
|
||||
if self.combat_wave_done < self.combat_wave_limit:
|
||||
@ -227,6 +231,7 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo
|
||||
if self.config.stored.TrailblazePower.value >= self.combat_wave_cost:
|
||||
logger.info('Still having some trailblaze power run with less waves to empty it')
|
||||
return True
|
||||
return False
|
||||
|
||||
def combat_finish(self) -> bool:
|
||||
"""
|
||||
|
@ -9,7 +9,7 @@ from module.ui.scroll import AdaptiveScroll
|
||||
from tasks.base.assets.assets_base_popup import POPUP_CANCEL
|
||||
from tasks.base.ui import UI
|
||||
from tasks.combat.assets.assets_combat_support import COMBAT_SUPPORT_ADD, COMBAT_SUPPORT_LIST, \
|
||||
COMBAT_SUPPORT_LIST_GRID, COMBAT_SUPPORT_LIST_SCROLL, COMBAT_SUPPORT_SELECTED, SUPPORT_SELECTED
|
||||
COMBAT_SUPPORT_LIST_GRID, COMBAT_SUPPORT_LIST_SCROLL, SUPPORT_SELECTED
|
||||
from tasks.combat.assets.assets_combat_team import COMBAT_TEAM_DISMISSSUPPORT, COMBAT_TEAM_SUPPORT
|
||||
|
||||
|
||||
@ -79,8 +79,8 @@ class SupportCharacter:
|
||||
Returns:
|
||||
tuple: (x1, y1, x2, y2) of selected icon search area
|
||||
"""
|
||||
return (
|
||||
self.button[0], self.button[1] - 5, self.button[0] + 30, self.button[1]) if self.button else None
|
||||
# Check the left of character avatar
|
||||
return 0, self.button[1], self.button[0], self.button[3]
|
||||
|
||||
|
||||
class NextSupportCharacter:
|
||||
@ -130,6 +130,7 @@ class CombatSupport(UI):
|
||||
out: COMBAT_PREPARE
|
||||
"""
|
||||
logger.hr("Combat support")
|
||||
self.interval_clear(COMBAT_TEAM_SUPPORT)
|
||||
skip_first_screenshot = True
|
||||
selected_support = False
|
||||
while 1:
|
||||
@ -143,7 +144,7 @@ class CombatSupport(UI):
|
||||
return True
|
||||
|
||||
# Click
|
||||
if self.appear(COMBAT_TEAM_SUPPORT, interval=1):
|
||||
if self.appear(COMBAT_TEAM_SUPPORT, interval=2):
|
||||
self.device.click(COMBAT_TEAM_SUPPORT)
|
||||
self.interval_reset(COMBAT_TEAM_SUPPORT)
|
||||
continue
|
||||
@ -154,15 +155,30 @@ class CombatSupport(UI):
|
||||
self._select_next_support()
|
||||
self.interval_reset(POPUP_CANCEL)
|
||||
continue
|
||||
if self.appear(COMBAT_SUPPORT_LIST, interval=1):
|
||||
if self.appear(COMBAT_SUPPORT_LIST, interval=2):
|
||||
scroll = AdaptiveScroll(area=COMBAT_SUPPORT_LIST_SCROLL.area,
|
||||
name=COMBAT_SUPPORT_LIST_SCROLL.name)
|
||||
if not scroll.appear(main=self):
|
||||
self.interval_clear(COMBAT_SUPPORT_LIST)
|
||||
continue
|
||||
if not selected_support and support_character_name != "FirstCharacter":
|
||||
self._search_support(
|
||||
support_character_name) # Search support
|
||||
self._search_support(support_character_name) # Search support
|
||||
selected_support = True
|
||||
self.device.click(COMBAT_SUPPORT_ADD)
|
||||
self.interval_reset(COMBAT_SUPPORT_LIST)
|
||||
continue
|
||||
|
||||
def _get_character(self, support_character_name: str) -> SupportCharacter:
|
||||
if support_character_name.startswith("Trailblazer"):
|
||||
character = SupportCharacter(f"Stelle{support_character_name[11:]}", self.device.image)
|
||||
if character:
|
||||
return character
|
||||
character = SupportCharacter(f"Caelum{support_character_name[11:]}", self.device.image)
|
||||
# Should return something
|
||||
return character
|
||||
else:
|
||||
return SupportCharacter(support_character_name, self.device.image)
|
||||
|
||||
def _search_support(self, support_character_name: str = "JingYuan"):
|
||||
"""
|
||||
Args:
|
||||
@ -176,6 +192,14 @@ class CombatSupport(UI):
|
||||
out: COMBAT_SUPPORT_LIST
|
||||
"""
|
||||
logger.hr("Combat support search")
|
||||
# Search prioritize characters
|
||||
character = self._get_character(support_character_name)
|
||||
if character:
|
||||
logger.info("Support found in first page")
|
||||
if self._select_support(character):
|
||||
return True
|
||||
|
||||
# Search in the following pages
|
||||
scroll = AdaptiveScroll(area=COMBAT_SUPPORT_LIST_SCROLL.area,
|
||||
name=COMBAT_SUPPORT_LIST_SCROLL.name)
|
||||
if scroll.appear(main=self):
|
||||
@ -186,37 +210,30 @@ class CombatSupport(UI):
|
||||
scroll.drag_threshold = backup
|
||||
scroll.set_top(main=self)
|
||||
|
||||
logger.info("Searching support")
|
||||
skip_first_screenshot = False
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
logger.info("Searching support")
|
||||
skip_first_screenshot = True
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
if not support_character_name.startswith("Trailblazer"):
|
||||
character = SupportCharacter(
|
||||
support_character_name, self.device.image)
|
||||
character = self._get_character(support_character_name)
|
||||
if character:
|
||||
logger.info("Support found")
|
||||
if self._select_support(character):
|
||||
return True
|
||||
else:
|
||||
character = SupportCharacter(f"Stelle{support_character_name[11:]}",
|
||||
self.device.image) or SupportCharacter(
|
||||
f"Caelum{support_character_name[11:]}", self.device.image)
|
||||
|
||||
if character:
|
||||
logger.info("Support found")
|
||||
if self._select_support(character):
|
||||
return True
|
||||
else:
|
||||
logger.warning("Support not selected")
|
||||
return False
|
||||
|
||||
if not scroll.at_bottom(main=self):
|
||||
scroll.next_page(main=self)
|
||||
continue
|
||||
else:
|
||||
logger.info("Support not found")
|
||||
logger.warning("Support not selected")
|
||||
return False
|
||||
|
||||
if not scroll.at_bottom(main=self):
|
||||
scroll.next_page(main=self)
|
||||
continue
|
||||
else:
|
||||
logger.info("Support not found")
|
||||
return False
|
||||
|
||||
def _select_support(self, character: SupportCharacter):
|
||||
"""
|
||||
Args:
|
||||
@ -227,7 +244,7 @@ class CombatSupport(UI):
|
||||
out: COMBAT_SUPPORT_LIST
|
||||
"""
|
||||
logger.hr("Combat support select")
|
||||
COMBAT_SUPPORT_SELECTED.matched_button.search = character.selected_icon_search()
|
||||
logger.info(f'Select: {character}')
|
||||
skip_first_screenshot = False
|
||||
interval = Timer(2)
|
||||
while 1:
|
||||
@ -237,7 +254,10 @@ class CombatSupport(UI):
|
||||
self.device.screenshot()
|
||||
|
||||
# End
|
||||
if self.appear(COMBAT_SUPPORT_SELECTED, similarity=0.75):
|
||||
area = character.selected_icon_search()
|
||||
image = self.image_crop(area, copy=False)
|
||||
if SUPPORT_SELECTED.match_template(image, similarity=0.75, direct_match=True):
|
||||
logger.info('Character support selected')
|
||||
return True
|
||||
|
||||
if interval.reached():
|
||||
@ -274,6 +294,7 @@ class CombatSupport(UI):
|
||||
in: COMBAT_SUPPORT_LIST
|
||||
out: COMBAT_SUPPORT_LIST
|
||||
"""
|
||||
logger.hr("Next support select")
|
||||
skip_first_screenshot = True
|
||||
scroll = AdaptiveScroll(area=COMBAT_SUPPORT_LIST_SCROLL.area,
|
||||
name=COMBAT_SUPPORT_LIST_SCROLL.name)
|
||||
@ -288,6 +309,7 @@ class CombatSupport(UI):
|
||||
|
||||
# End
|
||||
if next_support is not None and next_support.is_next_support_character_selected(self.device.image):
|
||||
logger.info('Next support selected')
|
||||
return
|
||||
|
||||
if interval.reached():
|
||||
|
@ -60,12 +60,13 @@ class CombatTeam(UI):
|
||||
logger.warning('Wait current team timeout')
|
||||
break
|
||||
current = self._get_team()
|
||||
if current == index:
|
||||
logger.attr('Team', current)
|
||||
logger.info(f'Already selected to the correct team')
|
||||
return False
|
||||
else:
|
||||
break
|
||||
if current:
|
||||
if current == index:
|
||||
logger.attr('Team', current)
|
||||
logger.info(f'Already selected to the correct team')
|
||||
return False
|
||||
else:
|
||||
break
|
||||
|
||||
# Set team
|
||||
retry = Timer(2, count=10)
|
||||
|
@ -90,7 +90,8 @@ class CharacterTrial(UI):
|
||||
|
||||
if self.match_template_color(START_TRIAL):
|
||||
break
|
||||
if self.appear_then_click(MAP_EXIT):
|
||||
if self.is_in_map_exit(interval=2):
|
||||
self.device.click(MAP_EXIT)
|
||||
continue
|
||||
if self.handle_popup_confirm():
|
||||
continue
|
||||
|
@ -21,6 +21,10 @@ class WeeklyDungeon(Dungeon):
|
||||
dungeon=dungeon, team=team, wave_limit=wave_limit,
|
||||
support_character=support_character, skip_ui_switch=skip_ui_switch)
|
||||
|
||||
def handle_ascension_dungeon_prepare(self):
|
||||
# combat_wave_cost==30 in weekly, but no handle_ascension_dungeon_prepare required
|
||||
return False
|
||||
|
||||
def get_weekly_remain(self) -> int:
|
||||
"""
|
||||
Pages:
|
||||
|
@ -210,7 +210,8 @@ class ForgottenHallUI(DungeonUI, ForgottenHallTeam):
|
||||
logger.info("Forgotten hall dungeon exited")
|
||||
break
|
||||
|
||||
if self.appear_then_click(MAP_EXIT):
|
||||
if self.is_in_map_exit(interval=2):
|
||||
self.device.click(MAP_EXIT)
|
||||
continue
|
||||
if self.handle_popup_confirm():
|
||||
continue
|
||||
|
@ -133,6 +133,7 @@ class MapControl(Combat, AimDetectorMixin):
|
||||
"""
|
||||
logger.hr('Goto', level=2)
|
||||
logger.info(f'Goto {waypoint}')
|
||||
self.screenshot_tracking_add()
|
||||
self.waypoint = waypoint
|
||||
self.device.stuck_record_clear()
|
||||
self.device.click_record_clear()
|
||||
@ -353,7 +354,6 @@ class MapControl(Combat, AimDetectorMixin):
|
||||
list[str]: A list of walk result
|
||||
"""
|
||||
logger.hr('Goto', level=1)
|
||||
self.screenshot_tracking_add()
|
||||
self.map_A_timer.clear()
|
||||
self.map_E_timer.clear()
|
||||
self.map_run_2x_timer.clear()
|
||||
|
@ -77,6 +77,17 @@ COSMIC_FRAGMENT = ButtonWrapper(
|
||||
button=(1146, 19, 1181, 55),
|
||||
),
|
||||
)
|
||||
CURIO_FIXED = ButtonWrapper(
|
||||
name='CURIO_FIXED',
|
||||
cn=Button(
|
||||
file='./assets/cn/rogue/ui/CURIO_FIXED.png',
|
||||
area=(558, 54, 626, 75),
|
||||
search=(538, 34, 646, 95),
|
||||
color=(126, 123, 122),
|
||||
button=(558, 54, 626, 75),
|
||||
),
|
||||
en=None,
|
||||
)
|
||||
CURIO_OBTAINED = ButtonWrapper(
|
||||
name='CURIO_OBTAINED',
|
||||
cn=[
|
||||
|
@ -80,4 +80,9 @@ class RogueUI(UI):
|
||||
logger.info(f'{CURIO_OBTAINED} -> {BLESSING_CONFIRM}')
|
||||
self.device.click(BLESSING_CONFIRM)
|
||||
return True
|
||||
# Fixed a curio from occurrence
|
||||
if self.appear(CURIO_FIXED, interval=2):
|
||||
logger.info(f'{CURIO_FIXED} -> {BLESSING_CONFIRM}')
|
||||
self.device.click(BLESSING_CONFIRM)
|
||||
return True
|
||||
return False
|
||||
|
@ -292,7 +292,8 @@ class RogueEntry(RouteBase, RogueRewardHandler, RoguePathHandler, DungeonUI):
|
||||
if self.handle_ui_back(self._is_page_rogue_path):
|
||||
continue
|
||||
# From ui_leave_special()
|
||||
if self.appear_then_click(MAP_EXIT, interval=2):
|
||||
if self.is_in_map_exit(interval=2):
|
||||
self.device.click(MAP_EXIT)
|
||||
continue
|
||||
if self.handle_popup_confirm():
|
||||
continue
|
||||
|
@ -188,7 +188,11 @@ class RogueEvent(RogueUI):
|
||||
# Only one option, click directly
|
||||
if count == 1:
|
||||
if self.interval_is_reached(CHOOSE_OPTION, interval=2):
|
||||
self.device.click(self.valid_options[0].prefix_icon)
|
||||
button = self.valid_options[0].prefix_icon
|
||||
# Option at bottom
|
||||
if button.area[1] > 500 and SCROLL_OPTION.appear(main=self):
|
||||
SCROLL_OPTION.set_bottom(main=self)
|
||||
self.device.click(button)
|
||||
self.interval_reset(CHOOSE_OPTION, interval=2)
|
||||
return True
|
||||
|
||||
|
@ -235,6 +235,10 @@ class RogueExit(CombatInteract):
|
||||
|
||||
ocr = OcrDomainExit(OCR_DOMAIN_EXIT)
|
||||
results = ocr.matched_ocr(image, keyword_classes=MapPlane)
|
||||
# Try without preprocess
|
||||
if not len(results):
|
||||
ocr.white_preprocess = False
|
||||
results = ocr.matched_ocr(image, keyword_classes=MapPlane)
|
||||
centers = [area_center(result.area) for result in results]
|
||||
logger.info(f'DomainDoor: {centers}')
|
||||
directions = [self.screen2direction(center) for center in centers]
|
||||
@ -249,8 +253,17 @@ class RogueExit(CombatInteract):
|
||||
else:
|
||||
return None, results[0].matched_keyword
|
||||
else:
|
||||
results = [r for d, r in sorted(zip(directions, results))]
|
||||
return results[0].matched_keyword, results[-1].matched_keyword
|
||||
left = [r for d, r in sorted(zip(directions, results)) if d < 0]
|
||||
right = [r for d, r in sorted(zip(directions, results)) if d >= 0]
|
||||
if len(left):
|
||||
left = left[0].matched_keyword
|
||||
else:
|
||||
left = None
|
||||
if len(right):
|
||||
right = right[-1].matched_keyword
|
||||
else:
|
||||
right = None
|
||||
return left, right
|
||||
|
||||
def choose_door(self, left_door: MapPlane | None, right_door: MapPlane | None) -> str | None:
|
||||
"""
|
||||
|
@ -177,6 +177,10 @@ class RouteLoader(RogueUI, MinimapWrapper, RouteLoader_, CharacterSwitch):
|
||||
return True
|
||||
# Before Combat_Luofu_Cloudford_F1_X281Y873
|
||||
if route.name in [
|
||||
# ('Combat_Jarilo_BackwaterPass_F1_X507Y733', 0.26, (503.2, 736.9)),
|
||||
# ('Combat_Herta_SupplyZone_F2_X45Y369', 0.168, (46.5, 370.0))
|
||||
'Jarilo_BackwaterPass_F1_X507Y733',
|
||||
'Jarilo_BackwaterPass_F1_X555Y643',
|
||||
'Occurrence_Jarilo_BackwaterPass_F1_X553Y643',
|
||||
'Combat_Jarilo_GreatMine_F1_X545Y513',
|
||||
'Combat_Herta_SupplyZone_F2_X45Y369',
|
||||
@ -188,6 +192,15 @@ class RouteLoader(RogueUI, MinimapWrapper, RouteLoader_, CharacterSwitch):
|
||||
# ('Occurrence_Luofu_DivinationCommission_F2_X149Y659', 0.237, (148.9, 658.8)),
|
||||
# ('Occurrence_Luofu_DivinationCommission_F2_X425Y791', 0.11, (425.2, 793.8))
|
||||
'Occurrence_Luofu_DivinationCommission_F2_X149Y659',
|
||||
# ('Combat_Luofu_DivinationCommission_F1_X97Y457', 0.222, (97.8, 456.9)),
|
||||
# ('Combat_Luofu_ScalegorgeWaterscape_F1_X415Y261', 0.112, (371.8, 289.4)),
|
||||
# ('Combat_Herta_SupplyZone_F2_X45Y369', 0.104, (11.7, 367.6))
|
||||
'Combat_Luofu_DivinationCommission_F1_X97Y457',
|
||||
# ('Occurrence_Jarilo_BackwaterPass_F1_X613Y755', 0.206, (611.3, 759.0)),
|
||||
# ('Occurrence_Jarilo_BackwaterPass_F1_X611Y761', 0.206, (611.3, 759.0)),
|
||||
# ('Occurrence_Luofu_DivinationCommission_F2_X425Y791', 0.105, (429.7, 791.6))
|
||||
'Occurrence_Jarilo_BackwaterPass_F1_X613Y755',
|
||||
'Occurrence_Jarilo_BackwaterPass_F1_X611Y761',
|
||||
] and similarity > 0.15:
|
||||
return True
|
||||
if route.name in [
|
||||
|