diff --git a/resource/roguelike_recruit.json b/resource/roguelike_recruit.json index cdbd2c24e4..96e01ba6ae 100644 --- a/resource/roguelike_recruit.json +++ b/resource/roguelike_recruit.json @@ -1,845 +1,1692 @@ { - "roles": [ - "Warrior", - "Pioneer", - "Tank", - "Sniper", - "Caster", - "Special", - "Medic", - "Support", - "Alternate" - ], - "Warrior": { - "opers": [ - { - "name": "Sharp", - "skill": 1, - "recruit_priority": 990, - "recruit_priority_when_team_full": 890, - "recruit_priority_when_team_full_Doc": "不填默认 recruit_priority - 100", - "promote_priority": 650, - "promote_priority_when_team_full": 750, - "promote_priority_when_team_full_Doc": "不填默认 promote_priority + 100", - "Doc": "编队满了且编队内所有干员 promote_priority 均大于200,才会走两个 when_team_full 的逻辑", - "recruit_priority_offset": [ - [ - 100, - 100 - ], - [ - 200, - -200 - ] - ], - "offset_doc": "队伍内已有100人同职业则权重+100,200人-200,已有数量从小到大", - "offset_melee": true, - "offset_melee_doc": "为true时判断同职业总数变为判断近卫、重装、先锋职业下的近战干员总数,默认false" - }, - { - "name": "海沫", - "skill": 1, - "recruit_priority": 500, - "promote_priority": 650, - "promote_priority_when_team_full": 750, - "recruit_priority_offset": [ - [ - 0, - 600 - ], - [ - 2, - -500 - ] - ] - }, - { - "name": "羽毛笔", - "skill": 1, - "recruit_priority": 490, - "promote_priority": 650, - "promote_priority_when_team_full": 750, - "recruit_priority_offset": [ - [ - 0, - 600 - ], - [ - 2, - -490 - ] - ] - }, - { - "name": "百炼嘉维尔", - "skill": 2, - "recruit_priority": 900, - "promote_priority": 750, - "promote_priority_when_team_full": 950 - }, - { - "name": "棘刺", - "skill": 3, - "alternate_skill": 1, - "recruit_priority": 800, - "promote_priority": 1000, - "promote_priority_when_team_full": 1200, - "offset_melee": true, - "recruit_priority_offset": [ - [ - 0, - -780 - ], - [ - 2, - 1000 - ] - ] - }, - { - "name": "山", - "skill": 2, - "skill_usage": 2, - "recruit_priority": 400, - "promote_priority": 550, - "promote_priority_when_team_full": 750, - "offset_melee": true, - "recruit_priority_offset": [ - [ - 0, - 600 - ], - [ - 1, - -400 - ] - ] - }, - { - "name": "玛恩纳", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 750, - "promote_priority": 700, - "promote_priority_when_team_full": 750, - "recruit_priority_offset": [ - [ - 0, - -750 - ], - [ - 4, - 100 - ] - ] - }, - { - "name": "煌", - "skill": 2, - "alternate_skill": 1, - "recruit_priority": 750, - "promote_priority": 640, - "promote_priority_when_team_full": 750 - }, - { - "name": "拉普兰德", - "skill": 2, - "recruit_priority": 750, - "promote_priority": 750, - "promote_priority_when_team_full": 800 - }, - { - "name": "银灰", - "skill": 3, - "alternate_skill": 1, - "recruit_priority": 750, - "promote_priority": 800, - "promote_priority_when_team_full": 800, - "offset_melee": true, - "recruit_priority_offset": [ - [ - 3, - 100 - ] - ] - }, - { - "name": "艾丽妮", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 750, - "promote_priority": 750, - "offset_melee": true, - "recruit_priority_offset": [ - [ - 0, - -750 - ], - [ - 2, - 200 - ] - ] - }, - { - "name": "陈", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 750, - "promote_priority": 700 - }, - { - "name": "帕拉斯", - "skill": 1, - "recruit_priority": 400, - "promote_priority": 600 - }, - { - "name": "幽灵鲨", - "skill": 2, - "recruit_priority": 450, - "promote_priority": 400 - }, - { - "name": "龙舌兰", - "skill": 1, - "recruit_priority": 400, - "promote_priority": 400 - }, - { - "name": "星极", - "skill": 2, - "recruit_priority": 400, - "promote_priority": 400 - }, - { - "name": "柏喙", - "skill": 2, - "recruit_priority": 350, - "promote_priority": 300 - }, - { - "name": "泡普卡", - "skill": 1, - "recruit_priority": 10, - "promote_priority": 0 - }, - { - "name": "月见夜", - "skill": 1, - "recruit_priority": 10, - "promote_priority": 0 - }, - { - "name": "玫兰莎", - "skill": 1, - "recruit_priority": 10, - "promote_priority": 0 - } - ] - }, - "Pioneer": { - "opers": [ - { - "name": "郁金香", - "skill": 1, - "recruit_priority": 990, - "promote_priority": 600 - }, - { - "name": "风笛", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 600, - "promote_priority": 610, - "promote_priority_when_team_full": 850, - "offset_melee": true, - "recruit_priority_offset": [ - [ - 0, - -600 - ], - [ - 5, - 200 - ] - ] - }, - { - "name": "推进之王", - "skill": 2, - "recruit_priority": 600, - "promote_priority": 610 - }, - { - "name": "嵯峨", - "skill": 2, - "skill_usage": 1, - "recruit_priority": 600, - "promote_priority": 610 - }, - { - "name": "焰尾", - "skill": 2, - "recruit_priority": 700, - "promote_priority": 610 - }, - { - "name": "德克萨斯", - "skill": 2, - "recruit_priority": 650, - "promote_priority": 500 - }, - { - "name": "芬", - "skill": 1, - "recruit_priority": 200, - "promote_priority": 0 - }, - { - "name": "桃金娘", - "skill": 1, - "skill_usage": 1, - "recruit_priority": 190, - "promote_priority": 550 - }, - { - "name": "翎羽", - "skill": 1, - "recruit_priority": 10, - "promote_priority": 0 - } - ] - }, - "Tank": { - "role_priority_offset": [ - [ - 2, - -1000 - ] + "Mizuki": { + "roles": [ + "Warrior", + "Pioneer", + "Tank", + "Sniper", + "Caster", + "Special", + "Medic", + "Support", + "Alternate" ], - "opers": [ - { - "name": "泥岩", - "skill": 2, - "recruit_priority": 750, - "promote_priority": 650 - }, - { - "name": "塞雷娅", - "skill": 2, - "recruit_priority": 800, - "promote_priority": 760, - "promote_priority_when_team_full": 850 - }, - { - "name": "瑕光", - "skill": 1, - "recruit_priority": 200, - "promote_priority": 200 - }, - { - "name": "临光", - "skill": 1, - "recruit_priority": 400, - "promote_priority": 200, - "promote_priority_when_team_full": 750 - }, - { - "name": "古米", - "skill": 1, - "recruit_priority": 200, - "promote_priority": 1 - }, - { - "name": "斑点", - "skill": 1, - "recruit_priority": 100, - "promote_priority": 0 - }, - { - "name": "卡缇", - "skill": 1, - "recruit_priority": 80, - "promote_priority": 0 - } - ] - }, - "Sniper": { - "opers": [ - { - "name": "Stormeye", - "skill": 1, - "recruit_priority": 900, - "promote_priority": 650, - "promote_priority_when_team_full": 100 - }, - { - "name": "能天使", - "skill": 3, - "alternate_skill": 1, - "recruit_priority": 900, - "promote_priority": 1000, - "promote_priority_when_team_full": 1200 - }, - { - "name": "假日威龙陈", - "skill": 3, - "alternate_skill": 1, - "recruit_priority": 810, - "promote_priority": 1000, - "promote_priority_when_team_full": 1000 - }, - { - "name": "空弦", - "skill": 1, - "recruit_priority": 800, - "promote_priority": 800, - "promote_priority_when_team_full": 800 - }, - { - "name": "鸿雪", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 700, - "promote_priority": 650 - }, - { - "name": "黑", - "skill": 3, - "alternate_skill": 1, - "recruit_priority": 700, - "promote_priority": 650 - }, - { - "name": "远牙", - "skill": 2, - "recruit_priority": 700, - "promote_priority": 650 - }, - { - "name": "早露", - "skill": 2, - "recruit_priority": 650, - "promote_priority": 650 - }, - { - "name": "白金", - "skill": 2, - "recruit_priority": 550, - "promote_priority": 550, - "promote_priority_when_team_full": 750, - "recruit_priority_offset": [ - [ - 2, - -550 + "Warrior": { + "opers": [ + { + "name": "Sharp", + "skill": 1, + "recruit_priority": 990, + "recruit_priority_when_team_full": 890, + "recruit_priority_when_team_full_Doc": "不填默认 recruit_priority - 100", + "promote_priority": 650, + "promote_priority_when_team_full": 750, + "promote_priority_when_team_full_Doc": "不填默认 promote_priority + 100", + "Doc": "编队满了且编队内所有干员 promote_priority 均大于200,才会走两个 when_team_full 的逻辑", + "recruit_priority_offset": [ + [ + 100, + 100 + ], + [ + 200, + -200 + ] + ], + "offset_doc": "队伍内已有100人同职业则权重+100,200人-200,已有数量从小到大", + "offset_melee": true, + "offset_melee_doc": "为true时判断同职业总数变为判断近卫、重装、先锋职业下的近战干员总数,默认false" + }, + { + "name": "海沫", + "skill": 1, + "recruit_priority": 500, + "promote_priority": 650, + "promote_priority_when_team_full": 750, + "recruit_priority_offset": [ + [ + 0, + 600 + ], + [ + 2, + -500 + ] ] - ] - }, - { - "name": "蓝毒", - "skill": 1, - "recruit_priority": 550, - "promote_priority": 550, - "promote_priority_when_team_full": 750, - "recruit_priority_offset": [ - [ - 2, - -550 + }, + { + "name": "羽毛笔", + "skill": 1, + "recruit_priority": 490, + "promote_priority": 650, + "promote_priority_when_team_full": 750, + "recruit_priority_offset": [ + [ + 0, + 600 + ], + [ + 2, + -490 + ] ] - ] - }, - { - "name": "梅", - "skill": 1, - "recruit_priority": 450, - "promote_priority": 450 - }, - { - "name": "克洛丝", - "skill": 1, - "recruit_priority": 150, - "promote_priority": 0 - }, - { - "name": "安德切尔", - "skill": 1, - "recruit_priority": 100, - "promote_priority": 0 - }, - { - "name": "空爆", - "skill": 1, - "recruit_priority": 80, - "promote_priority": 0 - } - ] - }, - "Caster": { - "role_priority_offset": [ - [ - 3, - -1000 + }, + { + "name": "百炼嘉维尔", + "skill": 2, + "recruit_priority": 900, + "promote_priority": 750, + "promote_priority_when_team_full": 950 + }, + { + "name": "棘刺", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 800, + "promote_priority": 1000, + "promote_priority_when_team_full": 1200, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 0, + -780 + ], + [ + 2, + 1000 + ] + ] + }, + { + "name": "山", + "skill": 2, + "skill_usage": 2, + "recruit_priority": 400, + "promote_priority": 550, + "promote_priority_when_team_full": 750, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 0, + 600 + ], + [ + 1, + -400 + ] + ] + }, + { + "name": "玛恩纳", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 750, + "promote_priority": 700, + "promote_priority_when_team_full": 750, + "recruit_priority_offset": [ + [ + 0, + -750 + ], + [ + 4, + 100 + ] + ] + }, + { + "name": "煌", + "skill": 2, + "alternate_skill": 1, + "recruit_priority": 750, + "promote_priority": 640, + "promote_priority_when_team_full": 750 + }, + { + "name": "拉普兰德", + "skill": 2, + "recruit_priority": 750, + "promote_priority": 750, + "promote_priority_when_team_full": 800 + }, + { + "name": "银灰", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 750, + "promote_priority": 800, + "promote_priority_when_team_full": 800, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 3, + 100 + ] + ] + }, + { + "name": "艾丽妮", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 750, + "promote_priority": 750, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 0, + -750 + ], + [ + 2, + 200 + ] + ] + }, + { + "name": "陈", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 750, + "promote_priority": 700 + }, + { + "name": "帕拉斯", + "skill": 1, + "recruit_priority": 400, + "promote_priority": 600 + }, + { + "name": "幽灵鲨", + "skill": 2, + "recruit_priority": 450, + "promote_priority": 400 + }, + { + "name": "龙舌兰", + "skill": 1, + "recruit_priority": 400, + "promote_priority": 400 + }, + { + "name": "星极", + "skill": 2, + "recruit_priority": 400, + "promote_priority": 400 + }, + { + "name": "柏喙", + "skill": 2, + "recruit_priority": 350, + "promote_priority": 300 + }, + { + "name": "泡普卡", + "skill": 1, + "recruit_priority": 10, + "promote_priority": 0 + }, + { + "name": "月见夜", + "skill": 1, + "recruit_priority": 10, + "promote_priority": 0 + }, + { + "name": "玫兰莎", + "skill": 1, + "recruit_priority": 10, + "promote_priority": 0 + } ] - ], - "opers": [ - { - "name": "Pith", - "skill": 1, - "recruit_priority": 900, - "promote_priority": 600, - "promote_priority_when_team_full": 100 - }, - { - "name": "澄闪", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 700, - "promote_priority": 1000, - "promote_priority_when_team_full": 1200 - }, - { - "name": "艾雅法拉", - "skill": 2, - "recruit_priority": 600, - "promote_priority": 700, - "promote_priority_when_team_full": 1000 - }, - { - "name": "异客", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 500, - "promote_priority": 550 - }, - { - "name": "刻俄柏", - "skill": 2, - "recruit_priority": 500, - "promote_priority": 550 - }, - { - "name": "夕", - "skill": 3, - "alternate_skill": 1, - "recruit_priority": 450, - "promote_priority": 500 - }, - { - "name": "莫斯提马", - "skill": 3, - "alternate_skill": 1, - "recruit_priority": 440, - "promote_priority": 490 - }, - { - "name": "伊芙利特", - "skill": 2, - "recruit_priority": 450, - "promote_priority": 500 - }, - { - "name": "黑键", - "skill": 2, - "recruit_priority": 440, - "promote_priority": 490 - }, - { - "name": "卡涅利安", - "skill": 2, - "recruit_priority": 440, - "promote_priority": 490 - }, - { - "name": "阿米娅", - "skill": 1, - "recruit_priority": 400, - "promote_priority": 400 - }, - { - "name": "史都华德", - "skill": 1, - "recruit_priority": 100, - "promote_priority": 0 - }, - { - "name": "炎熔", - "skill": 1, - "recruit_priority": 80, - "promote_priority": 0 - } - ] - }, - "Special": { - "role_priority_offset": [ - [ - 2, - -1000 + }, + "Pioneer": { + "opers": [ + { + "name": "郁金香", + "skill": 1, + "recruit_priority": 990, + "promote_priority": 600 + }, + { + "name": "风笛", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 600, + "promote_priority": 610, + "promote_priority_when_team_full": 850, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 0, + -600 + ], + [ + 5, + 200 + ] + ] + }, + { + "name": "推进之王", + "skill": 2, + "recruit_priority": 600, + "promote_priority": 610 + }, + { + "name": "嵯峨", + "skill": 2, + "skill_usage": 1, + "recruit_priority": 600, + "promote_priority": 610 + }, + { + "name": "焰尾", + "skill": 2, + "recruit_priority": 700, + "promote_priority": 610 + }, + { + "name": "德克萨斯", + "skill": 2, + "recruit_priority": 650, + "promote_priority": 500 + }, + { + "name": "芬", + "skill": 1, + "recruit_priority": 200, + "promote_priority": 0 + }, + { + "name": "桃金娘", + "skill": 1, + "skill_usage": 1, + "recruit_priority": 190, + "promote_priority": 550 + }, + { + "name": "翎羽", + "skill": 1, + "recruit_priority": 10, + "promote_priority": 0 + } ] - ], - "opers": [ - { - "name": "归溟幽灵鲨", - "skill": 2, - "recruit_priority": 700, - "promote_priority": 700, - "promote_priority_when_team_full": 100 - }, - { - "name": "砾", - "skill": 2, - "recruit_priority": 400, - "promote_priority": 400 - }, - { - "name": "风丸", - "skill": 2, - "recruit_priority": 340, - "promote_priority": 400 - }, - { - "name": "老鲤", - "skill": 3, - "alternate_skill": 1, - "recruit_priority": 330, - "promote_priority": 650 - }, - { - "name": "贝娜", - "skill": 2, - "recruit_priority": 320, - "promote_priority": 600 - }, - { - "name": "伊桑", - "skill": 2, - "recruit_priority": 10, - "promote_priority": 400, - "offset_melee": true, - "recruit_priority_offset": [ - [ - 2, - 400 - ] + }, + "Tank": { + "role_priority_offset": [ + [ + 2, + -1000 ] - }, - { - "name": "狮蝎", - "skill": 2, - "recruit_priority": 10, - "promote_priority": 500, - "offset_melee": true, - "recruit_priority_offset": [ - [ - 2, - 400 - ] - ] - }, - { - "name": "水月", - "skill": 2, - "recruit_priority": 10, - "promote_priority": 550, - "offset_melee": true, - "recruit_priority_offset": [ - [ - 2, - 400 - ] - ] - }, - { - "name": "温蒂", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 100, - "promote_priority": 650 - } - ] - }, - "Medic": { - "opers": [ - { - "name": "Touch", - "skill": 1, - "recruit_priority": 1000, - "promote_priority": 500 - }, - { - "name": "凯尔希", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 650, - "promote_priority": 600 - }, - { - "name": "蜜莓", - "skill": 1, - "recruit_priority": 700, - "promote_priority": 610, - "promote_priority_when_team_full": 850 - }, - { - "name": "桑葚", - "skill": 1, - "recruit_priority": 600, - "promote_priority": 500, - "promote_priority_when_team_full": 850 - }, - { - "name": "白面鸮", - "skill": 2, - "recruit_priority": 550, - "promote_priority": 550, - "promote_priority_when_team_full": 600 - }, - { - "name": "华法琳", - "skill": 2, - "recruit_priority": 540, - "promote_priority": 550, - "promote_priority_when_team_full": 600 - }, - { - "name": "赫默", - "skill": 2, - "recruit_priority": 530, - "promote_priority": 550 - }, - { - "name": "流明", - "skill": 3, - "alternate_skill": 1, - "recruit_priority": 460, - "promote_priority": 550 - }, - { - "name": "夜莺", - "skill": 2, - "recruit_priority": 450, - "promote_priority": 450 - }, - { - "name": "闪灵", - "skill": 2, - "recruit_priority": 430, - "promote_priority": 450 - }, - { - "name": "苏苏洛", - "skill": 2, - "recruit_priority": 400, - "promote_priority": 400 - }, - { - "name": "调香师", - "skill": 1, - "recruit_priority": 420, - "promote_priority": 650 - }, - { - "name": "安赛尔", - "skill": 1, - "recruit_priority": 100, - "promote_priority": 0 - }, - { - "name": "芙蓉", - "skill": 1, - "recruit_priority": 80, - "promote_priority": 0 - } - ] - }, - "Support": { - "role_priority_offset_Doc": "按此职业已招募数量进行全局权重调整", - "role_priority_offset": [ - [ - 2, - -1000 + ], + "opers": [ + { + "name": "泥岩", + "skill": 2, + "recruit_priority": 750, + "promote_priority": 650 + }, + { + "name": "塞雷娅", + "skill": 2, + "recruit_priority": 800, + "promote_priority": 760, + "promote_priority_when_team_full": 850 + }, + { + "name": "瑕光", + "skill": 1, + "recruit_priority": 200, + "promote_priority": 200 + }, + { + "name": "临光", + "skill": 1, + "recruit_priority": 400, + "promote_priority": 200, + "promote_priority_when_team_full": 750 + }, + { + "name": "古米", + "skill": 1, + "recruit_priority": 200, + "promote_priority": 1 + }, + { + "name": "斑点", + "skill": 1, + "recruit_priority": 100, + "promote_priority": 0 + }, + { + "name": "卡缇", + "skill": 1, + "recruit_priority": 80, + "promote_priority": 0 + } ] - ], - "opers": [ - { - "name": "灵知", - "skill": 1, - "recruit_priority": 20, - "promote_priority": 500, - "promote_priority_when_team_full": 900 - }, - { - "name": "令", - "skill": 3, - "alternate_skill": 1, - "recruit_priority": 0, - "promote_priority": 900 - }, - { - "name": "铃兰", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 0, - "promote_priority": 300 - }, - { - "name": "安洁莉娜", - "skill": 3, - "alternate_skill": 2, - "recruit_priority": 0, - "promote_priority": 200 - }, - { - "name": "浊心斯卡蒂", - "skill": 2, - "recruit_priority": 0, - "promote_priority": 500 - }, - { - "name": "梓兰", - "skill": 1, - "recruit_priority": 10, - "promote_priority": 0 - } - ] + }, + "Sniper": { + "opers": [ + { + "name": "Stormeye", + "skill": 1, + "recruit_priority": 900, + "promote_priority": 650, + "promote_priority_when_team_full": 100 + }, + { + "name": "能天使", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 900, + "promote_priority": 1000, + "promote_priority_when_team_full": 1200 + }, + { + "name": "假日威龙陈", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 810, + "promote_priority": 1000, + "promote_priority_when_team_full": 1000 + }, + { + "name": "空弦", + "skill": 1, + "recruit_priority": 800, + "promote_priority": 800, + "promote_priority_when_team_full": 800 + }, + { + "name": "鸿雪", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 700, + "promote_priority": 650 + }, + { + "name": "黑", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 700, + "promote_priority": 650 + }, + { + "name": "远牙", + "skill": 2, + "recruit_priority": 700, + "promote_priority": 650 + }, + { + "name": "早露", + "skill": 2, + "recruit_priority": 650, + "promote_priority": 650 + }, + { + "name": "白金", + "skill": 2, + "recruit_priority": 550, + "promote_priority": 550, + "promote_priority_when_team_full": 750, + "recruit_priority_offset": [ + [ + 2, + -550 + ] + ] + }, + { + "name": "蓝毒", + "skill": 1, + "recruit_priority": 550, + "promote_priority": 550, + "promote_priority_when_team_full": 750, + "recruit_priority_offset": [ + [ + 2, + -550 + ] + ] + }, + { + "name": "梅", + "skill": 1, + "recruit_priority": 450, + "promote_priority": 450 + }, + { + "name": "克洛丝", + "skill": 1, + "recruit_priority": 150, + "promote_priority": 0 + }, + { + "name": "安德切尔", + "skill": 1, + "recruit_priority": 100, + "promote_priority": 0 + }, + { + "name": "空爆", + "skill": 1, + "recruit_priority": 80, + "promote_priority": 0 + } + ] + }, + "Caster": { + "role_priority_offset": [ + [ + 3, + -1000 + ] + ], + "opers": [ + { + "name": "Pith", + "skill": 1, + "recruit_priority": 900, + "promote_priority": 600, + "promote_priority_when_team_full": 100 + }, + { + "name": "澄闪", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 700, + "promote_priority": 1000, + "promote_priority_when_team_full": 1200 + }, + { + "name": "艾雅法拉", + "skill": 2, + "recruit_priority": 600, + "promote_priority": 700, + "promote_priority_when_team_full": 1000 + }, + { + "name": "异客", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 500, + "promote_priority": 550 + }, + { + "name": "刻俄柏", + "skill": 2, + "recruit_priority": 500, + "promote_priority": 550 + }, + { + "name": "夕", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 450, + "promote_priority": 500 + }, + { + "name": "莫斯提马", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 440, + "promote_priority": 490 + }, + { + "name": "伊芙利特", + "skill": 2, + "recruit_priority": 450, + "promote_priority": 500 + }, + { + "name": "黑键", + "skill": 2, + "recruit_priority": 440, + "promote_priority": 490 + }, + { + "name": "卡涅利安", + "skill": 2, + "recruit_priority": 440, + "promote_priority": 490 + }, + { + "name": "阿米娅", + "skill": 1, + "recruit_priority": 400, + "promote_priority": 400 + }, + { + "name": "史都华德", + "skill": 1, + "recruit_priority": 100, + "promote_priority": 0 + }, + { + "name": "炎熔", + "skill": 1, + "recruit_priority": 80, + "promote_priority": 0 + } + ] + }, + "Special": { + "role_priority_offset": [ + [ + 2, + -1000 + ] + ], + "opers": [ + { + "name": "归溟幽灵鲨", + "skill": 2, + "recruit_priority": 700, + "promote_priority": 700, + "promote_priority_when_team_full": 100 + }, + { + "name": "砾", + "skill": 2, + "recruit_priority": 400, + "promote_priority": 400 + }, + { + "name": "风丸", + "skill": 2, + "recruit_priority": 340, + "promote_priority": 400 + }, + { + "name": "老鲤", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 330, + "promote_priority": 650 + }, + { + "name": "贝娜", + "skill": 2, + "recruit_priority": 320, + "promote_priority": 600 + }, + { + "name": "伊桑", + "skill": 2, + "recruit_priority": 10, + "promote_priority": 400, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 2, + 400 + ] + ] + }, + { + "name": "狮蝎", + "skill": 2, + "recruit_priority": 10, + "promote_priority": 500, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 2, + 400 + ] + ] + }, + { + "name": "水月", + "skill": 2, + "recruit_priority": 10, + "promote_priority": 550, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 2, + 400 + ] + ] + }, + { + "name": "温蒂", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 100, + "promote_priority": 650 + } + ] + }, + "Medic": { + "opers": [ + { + "name": "Touch", + "skill": 1, + "recruit_priority": 1000, + "promote_priority": 500 + }, + { + "name": "凯尔希", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 650, + "promote_priority": 600 + }, + { + "name": "蜜莓", + "skill": 1, + "recruit_priority": 700, + "promote_priority": 610, + "promote_priority_when_team_full": 850 + }, + { + "name": "桑葚", + "skill": 1, + "recruit_priority": 600, + "promote_priority": 500, + "promote_priority_when_team_full": 850 + }, + { + "name": "白面鸮", + "skill": 2, + "recruit_priority": 550, + "promote_priority": 550, + "promote_priority_when_team_full": 600 + }, + { + "name": "华法琳", + "skill": 2, + "recruit_priority": 540, + "promote_priority": 550, + "promote_priority_when_team_full": 600 + }, + { + "name": "赫默", + "skill": 2, + "recruit_priority": 530, + "promote_priority": 550 + }, + { + "name": "流明", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 460, + "promote_priority": 550 + }, + { + "name": "夜莺", + "skill": 2, + "recruit_priority": 450, + "promote_priority": 450 + }, + { + "name": "闪灵", + "skill": 2, + "recruit_priority": 430, + "promote_priority": 450 + }, + { + "name": "苏苏洛", + "skill": 2, + "recruit_priority": 400, + "promote_priority": 400 + }, + { + "name": "调香师", + "skill": 1, + "recruit_priority": 420, + "promote_priority": 650 + }, + { + "name": "安赛尔", + "skill": 1, + "recruit_priority": 100, + "promote_priority": 0 + }, + { + "name": "芙蓉", + "skill": 1, + "recruit_priority": 80, + "promote_priority": 0 + } + ] + }, + "Support": { + "role_priority_offset_Doc": "按此职业已招募数量进行全局权重调整", + "role_priority_offset": [ + [ + 2, + -1000 + ] + ], + "opers": [ + { + "name": "灵知", + "skill": 1, + "recruit_priority": 20, + "promote_priority": 500, + "promote_priority_when_team_full": 900 + }, + { + "name": "令", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 0, + "promote_priority": 900 + }, + { + "name": "铃兰", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 0, + "promote_priority": 300 + }, + { + "name": "安洁莉娜", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 0, + "promote_priority": 200 + }, + { + "name": "浊心斯卡蒂", + "skill": 2, + "recruit_priority": 0, + "promote_priority": 500 + }, + { + "name": "梓兰", + "skill": 1, + "recruit_priority": 10, + "promote_priority": 0 + } + ] + }, + "Alternate": { + "opers": [ + { + "name": "预备干员-近战", + "skill": 0, + "recruit_priority": 5, + "promote_priority": 0, + "is_alternate": true + }, + { + "name": "预备干员-狙击", + "skill": 0, + "recruit_priority": 5, + "promote_priority": 0, + "is_alternate": true + }, + { + "name": "预备干员-术师", + "skill": 0, + "recruit_priority": 5, + "promote_priority": 0, + "is_alternate": true + }, + { + "name": "预备干员-后勤", + "skill": 0, + "recruit_priority": 5, + "promote_priority": 0, + "is_alternate": true + }, + { + "name": "预备干员-重装", + "skill": 0, + "recruit_priority": 5, + "promote_priority": 0, + "is_alternate": true + } + ] + } }, - "Alternate": { - "opers": [ - { - "name": "预备干员-近战", - "skill": 0, - "recruit_priority": 5, - "promote_priority": 0, - "is_alternate": true - }, - { - "name": "预备干员-狙击", - "skill": 0, - "recruit_priority": 5, - "promote_priority": 0, - "is_alternate": true - }, - { - "name": "预备干员-术师", - "skill": 0, - "recruit_priority": 5, - "promote_priority": 0, - "is_alternate": true - }, - { - "name": "预备干员-后勤", - "skill": 0, - "recruit_priority": 5, - "promote_priority": 0, - "is_alternate": true - }, - { - "name": "预备干员-重装", - "skill": 0, - "recruit_priority": 5, - "promote_priority": 0, - "is_alternate": true - } - ] + "Phantom": { + "roles": [ + "Warrior", + "Pioneer", + "Tank", + "Sniper", + "Caster", + "Special", + "Medic", + "Support", + "Alternate" + ], + "Warrior": { + "opers": [ + { + "name": "Sharp", + "skill": 1, + "recruit_priority": 990, + "recruit_priority_when_team_full": 890, + "recruit_priority_when_team_full_Doc": "不填默认 recruit_priority - 100", + "promote_priority": 650, + "promote_priority_when_team_full": 750, + "promote_priority_when_team_full_Doc": "不填默认 promote_priority + 100", + "Doc": "编队满了且编队内所有干员 promote_priority 均大于200,才会走两个 when_team_full 的逻辑", + "recruit_priority_offset": [ + [ + 100, + 100 + ], + [ + 200, + -200 + ] + ], + "offset_doc": "队伍内已有100人同职业则权重+100,200人-200,已有数量从小到大", + "offset_melee": true, + "offset_melee_doc": "为true时判断同职业总数变为判断近卫、重装、先锋职业下的近战干员总数,默认false" + }, + { + "name": "海沫", + "skill": 1, + "recruit_priority": 500, + "promote_priority": 650, + "promote_priority_when_team_full": 750, + "recruit_priority_offset": [ + [ + 0, + 600 + ], + [ + 2, + -500 + ] + ] + }, + { + "name": "羽毛笔", + "skill": 1, + "recruit_priority": 490, + "promote_priority": 650, + "promote_priority_when_team_full": 750, + "recruit_priority_offset": [ + [ + 0, + 600 + ], + [ + 2, + -490 + ] + ] + }, + { + "name": "百炼嘉维尔", + "skill": 2, + "recruit_priority": 900, + "promote_priority": 750, + "promote_priority_when_team_full": 950 + }, + { + "name": "棘刺", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 800, + "promote_priority": 1000, + "promote_priority_when_team_full": 1200, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 0, + -780 + ], + [ + 2, + 1000 + ] + ] + }, + { + "name": "山", + "skill": 2, + "skill_usage": 2, + "recruit_priority": 400, + "promote_priority": 550, + "promote_priority_when_team_full": 750, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 0, + 600 + ], + [ + 1, + -400 + ] + ] + }, + { + "name": "玛恩纳", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 750, + "promote_priority": 700, + "promote_priority_when_team_full": 750, + "recruit_priority_offset": [ + [ + 0, + -750 + ], + [ + 4, + 100 + ] + ] + }, + { + "name": "煌", + "skill": 2, + "alternate_skill": 1, + "recruit_priority": 750, + "promote_priority": 640, + "promote_priority_when_team_full": 750 + }, + { + "name": "拉普兰德", + "skill": 2, + "recruit_priority": 750, + "promote_priority": 750, + "promote_priority_when_team_full": 800 + }, + { + "name": "银灰", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 750, + "promote_priority": 800, + "promote_priority_when_team_full": 800, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 3, + 100 + ] + ] + }, + { + "name": "艾丽妮", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 750, + "promote_priority": 750, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 0, + -750 + ], + [ + 2, + 200 + ] + ] + }, + { + "name": "陈", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 750, + "promote_priority": 700 + }, + { + "name": "帕拉斯", + "skill": 1, + "recruit_priority": 400, + "promote_priority": 600 + }, + { + "name": "幽灵鲨", + "skill": 2, + "recruit_priority": 450, + "promote_priority": 400 + }, + { + "name": "龙舌兰", + "skill": 1, + "recruit_priority": 400, + "promote_priority": 400 + }, + { + "name": "星极", + "skill": 2, + "recruit_priority": 400, + "promote_priority": 400 + }, + { + "name": "柏喙", + "skill": 2, + "recruit_priority": 350, + "promote_priority": 300 + }, + { + "name": "泡普卡", + "skill": 1, + "recruit_priority": 10, + "promote_priority": 0 + }, + { + "name": "月见夜", + "skill": 1, + "recruit_priority": 10, + "promote_priority": 0 + }, + { + "name": "玫兰莎", + "skill": 1, + "recruit_priority": 10, + "promote_priority": 0 + } + ] + }, + "Pioneer": { + "opers": [ + { + "name": "郁金香", + "skill": 1, + "recruit_priority": 990, + "promote_priority": 600 + }, + { + "name": "风笛", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 600, + "promote_priority": 610, + "promote_priority_when_team_full": 850, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 0, + -600 + ], + [ + 5, + 200 + ] + ] + }, + { + "name": "推进之王", + "skill": 2, + "recruit_priority": 600, + "promote_priority": 610 + }, + { + "name": "嵯峨", + "skill": 2, + "skill_usage": 1, + "recruit_priority": 600, + "promote_priority": 610 + }, + { + "name": "焰尾", + "skill": 2, + "recruit_priority": 700, + "promote_priority": 610 + }, + { + "name": "德克萨斯", + "skill": 2, + "recruit_priority": 650, + "promote_priority": 500 + }, + { + "name": "芬", + "skill": 1, + "recruit_priority": 200, + "promote_priority": 0 + }, + { + "name": "桃金娘", + "skill": 1, + "skill_usage": 1, + "recruit_priority": 190, + "promote_priority": 550 + }, + { + "name": "翎羽", + "skill": 1, + "recruit_priority": 10, + "promote_priority": 0 + } + ] + }, + "Tank": { + "role_priority_offset": [ + [ + 2, + -1000 + ] + ], + "opers": [ + { + "name": "泥岩", + "skill": 2, + "recruit_priority": 750, + "promote_priority": 650 + }, + { + "name": "塞雷娅", + "skill": 2, + "recruit_priority": 800, + "promote_priority": 760, + "promote_priority_when_team_full": 850 + }, + { + "name": "瑕光", + "skill": 1, + "recruit_priority": 200, + "promote_priority": 200 + }, + { + "name": "临光", + "skill": 1, + "recruit_priority": 400, + "promote_priority": 200, + "promote_priority_when_team_full": 750 + }, + { + "name": "古米", + "skill": 1, + "recruit_priority": 200, + "promote_priority": 1 + }, + { + "name": "斑点", + "skill": 1, + "recruit_priority": 100, + "promote_priority": 0 + }, + { + "name": "卡缇", + "skill": 1, + "recruit_priority": 80, + "promote_priority": 0 + } + ] + }, + "Sniper": { + "opers": [ + { + "name": "Stormeye", + "skill": 1, + "recruit_priority": 900, + "promote_priority": 650, + "promote_priority_when_team_full": 100 + }, + { + "name": "能天使", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 900, + "promote_priority": 1000, + "promote_priority_when_team_full": 1200 + }, + { + "name": "假日威龙陈", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 810, + "promote_priority": 1000, + "promote_priority_when_team_full": 1000 + }, + { + "name": "空弦", + "skill": 1, + "recruit_priority": 800, + "promote_priority": 800, + "promote_priority_when_team_full": 800 + }, + { + "name": "鸿雪", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 700, + "promote_priority": 650 + }, + { + "name": "黑", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 700, + "promote_priority": 650 + }, + { + "name": "远牙", + "skill": 2, + "recruit_priority": 700, + "promote_priority": 650 + }, + { + "name": "早露", + "skill": 2, + "recruit_priority": 650, + "promote_priority": 650 + }, + { + "name": "白金", + "skill": 2, + "recruit_priority": 550, + "promote_priority": 550, + "promote_priority_when_team_full": 750, + "recruit_priority_offset": [ + [ + 2, + -550 + ] + ] + }, + { + "name": "蓝毒", + "skill": 1, + "recruit_priority": 550, + "promote_priority": 550, + "promote_priority_when_team_full": 750, + "recruit_priority_offset": [ + [ + 2, + -550 + ] + ] + }, + { + "name": "梅", + "skill": 1, + "recruit_priority": 450, + "promote_priority": 450 + }, + { + "name": "克洛丝", + "skill": 1, + "recruit_priority": 150, + "promote_priority": 0 + }, + { + "name": "安德切尔", + "skill": 1, + "recruit_priority": 100, + "promote_priority": 0 + }, + { + "name": "空爆", + "skill": 1, + "recruit_priority": 80, + "promote_priority": 0 + } + ] + }, + "Caster": { + "role_priority_offset": [ + [ + 3, + -1000 + ] + ], + "opers": [ + { + "name": "Pith", + "skill": 1, + "recruit_priority": 900, + "promote_priority": 600, + "promote_priority_when_team_full": 100 + }, + { + "name": "澄闪", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 700, + "promote_priority": 1000, + "promote_priority_when_team_full": 1200 + }, + { + "name": "艾雅法拉", + "skill": 2, + "recruit_priority": 600, + "promote_priority": 700, + "promote_priority_when_team_full": 1000 + }, + { + "name": "异客", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 500, + "promote_priority": 550 + }, + { + "name": "刻俄柏", + "skill": 2, + "recruit_priority": 500, + "promote_priority": 550 + }, + { + "name": "夕", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 450, + "promote_priority": 500 + }, + { + "name": "莫斯提马", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 440, + "promote_priority": 490 + }, + { + "name": "伊芙利特", + "skill": 2, + "recruit_priority": 450, + "promote_priority": 500 + }, + { + "name": "黑键", + "skill": 2, + "recruit_priority": 440, + "promote_priority": 490 + }, + { + "name": "卡涅利安", + "skill": 2, + "recruit_priority": 440, + "promote_priority": 490 + }, + { + "name": "阿米娅", + "skill": 1, + "recruit_priority": 400, + "promote_priority": 400 + }, + { + "name": "史都华德", + "skill": 1, + "recruit_priority": 100, + "promote_priority": 0 + }, + { + "name": "炎熔", + "skill": 1, + "recruit_priority": 80, + "promote_priority": 0 + } + ] + }, + "Special": { + "role_priority_offset": [ + [ + 2, + -1000 + ] + ], + "opers": [ + { + "name": "归溟幽灵鲨", + "skill": 2, + "recruit_priority": 700, + "promote_priority": 700, + "promote_priority_when_team_full": 100 + }, + { + "name": "砾", + "skill": 2, + "recruit_priority": 400, + "promote_priority": 400 + }, + { + "name": "风丸", + "skill": 2, + "recruit_priority": 340, + "promote_priority": 400 + }, + { + "name": "老鲤", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 330, + "promote_priority": 650 + }, + { + "name": "贝娜", + "skill": 2, + "recruit_priority": 320, + "promote_priority": 600 + }, + { + "name": "伊桑", + "skill": 2, + "recruit_priority": 10, + "promote_priority": 400, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 2, + 400 + ] + ] + }, + { + "name": "狮蝎", + "skill": 2, + "recruit_priority": 10, + "promote_priority": 500, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 2, + 400 + ] + ] + }, + { + "name": "水月", + "skill": 2, + "recruit_priority": 10, + "promote_priority": 550, + "offset_melee": true, + "recruit_priority_offset": [ + [ + 2, + 400 + ] + ] + }, + { + "name": "温蒂", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 100, + "promote_priority": 650 + } + ] + }, + "Medic": { + "opers": [ + { + "name": "Touch", + "skill": 1, + "recruit_priority": 1000, + "promote_priority": 500 + }, + { + "name": "凯尔希", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 650, + "promote_priority": 600 + }, + { + "name": "蜜莓", + "skill": 1, + "recruit_priority": 700, + "promote_priority": 610, + "promote_priority_when_team_full": 850 + }, + { + "name": "桑葚", + "skill": 1, + "recruit_priority": 600, + "promote_priority": 500, + "promote_priority_when_team_full": 850 + }, + { + "name": "白面鸮", + "skill": 2, + "recruit_priority": 550, + "promote_priority": 550, + "promote_priority_when_team_full": 600 + }, + { + "name": "华法琳", + "skill": 2, + "recruit_priority": 540, + "promote_priority": 550, + "promote_priority_when_team_full": 600 + }, + { + "name": "赫默", + "skill": 2, + "recruit_priority": 530, + "promote_priority": 550 + }, + { + "name": "流明", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 460, + "promote_priority": 550 + }, + { + "name": "夜莺", + "skill": 2, + "recruit_priority": 450, + "promote_priority": 450 + }, + { + "name": "闪灵", + "skill": 2, + "recruit_priority": 430, + "promote_priority": 450 + }, + { + "name": "苏苏洛", + "skill": 2, + "recruit_priority": 400, + "promote_priority": 400 + }, + { + "name": "调香师", + "skill": 1, + "recruit_priority": 420, + "promote_priority": 650 + }, + { + "name": "安赛尔", + "skill": 1, + "recruit_priority": 100, + "promote_priority": 0 + }, + { + "name": "芙蓉", + "skill": 1, + "recruit_priority": 80, + "promote_priority": 0 + } + ] + }, + "Support": { + "role_priority_offset_Doc": "按此职业已招募数量进行全局权重调整", + "role_priority_offset": [ + [ + 2, + -1000 + ] + ], + "opers": [ + { + "name": "灵知", + "skill": 1, + "recruit_priority": 20, + "promote_priority": 500, + "promote_priority_when_team_full": 900 + }, + { + "name": "令", + "skill": 3, + "alternate_skill": 1, + "recruit_priority": 0, + "promote_priority": 900 + }, + { + "name": "铃兰", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 0, + "promote_priority": 300 + }, + { + "name": "安洁莉娜", + "skill": 3, + "alternate_skill": 2, + "recruit_priority": 0, + "promote_priority": 200 + }, + { + "name": "浊心斯卡蒂", + "skill": 2, + "recruit_priority": 0, + "promote_priority": 500 + }, + { + "name": "梓兰", + "skill": 1, + "recruit_priority": 10, + "promote_priority": 0 + } + ] + }, + "Alternate": { + "opers": [ + { + "name": "预备干员-近战", + "skill": 0, + "recruit_priority": 5, + "promote_priority": 0, + "is_alternate": true + }, + { + "name": "预备干员-狙击", + "skill": 0, + "recruit_priority": 5, + "promote_priority": 0, + "is_alternate": true + }, + { + "name": "预备干员-术师", + "skill": 0, + "recruit_priority": 5, + "promote_priority": 0, + "is_alternate": true + }, + { + "name": "预备干员-后勤", + "skill": 0, + "recruit_priority": 5, + "promote_priority": 0, + "is_alternate": true + }, + { + "name": "预备干员-重装", + "skill": 0, + "recruit_priority": 5, + "promote_priority": 0, + "is_alternate": true + } + ] + } } } diff --git a/resource/roguelike_shopping.json b/resource/roguelike_shopping.json index a9f7866d5b..7a04b79b1b 100644 --- a/resource/roguelike_shopping.json +++ b/resource/roguelike_shopping.json @@ -1,870 +1,1742 @@ -[ - { - "name": "锈蚀的铁锤" - }, - { - "name": "鸭爵金砖" - }, - { - "name": "“碎片大厦的回忆”" - }, - { - "name": "一份演讲稿" - }, - { - "name": "古旧铸物" - }, - { - "name": "立体艺术装置" - }, - { - "name": "阿卡胡拉饭碗" - }, - { - "name": "长生者之证" - }, - { - "name": "血魔的寝床" - }, - { - "name": "嵌体甲片" - }, - { - "name": "《旧高卢地名源流考》" - }, - { - "name": "御2" - }, - { - "name": "石像鬼塑像" - }, - { - "name": "《杜林地上环游记》" - }, - { - "name": "特殊抑制器" - }, - { - "name": "《特级馥郁咖啡豆》" - }, - { - "name": "“多功能”发夹" - }, - { - "name": "“审判庭之火”" - }, - { - "name": "金酒之杯", - "no_longer_buy": true, - "ignore_no_longer_buy": true - }, - { - "name": "骑士戒律·新编", - "no_longer_buy": true, - "ignore_no_longer_buy": true - }, - { - "name": "投币玩具", - "no_longer_buy": true, - "ignore_no_longer_buy": true - }, - { - "name": "扩散之手", - "chars": [ - "异客" - ] - }, - { - "name": "撕扯之手", - "chars": [ - "帕拉斯" - ] - }, - { - "name": "永流之手", - "chars": [ - "艾雅法拉", - "刻俄柏", - "黑键", - "令" - ] - }, - { - "name": "扼喉之手", - "chars": [ - "鸿雪", - "黑", - "远牙", - "早露" - ] - }, - { - "name": "碎靶之手", - "chars": [ - "夕", - "莫斯提马", - "Pith" - ] - }, - { - "name": "扣挠之手", - "chars": [ - "安洁莉娜", - "灵知", - "铃兰" - ] - }, - { - "name": "净尘之手", - "chars": [ - "浊心斯卡蒂", - "卡涅利安", - "流明" - ] - }, - { - "name": "散轶诗简", - "chars": [ - "令" - ] - }, - { - "name": "衍生者终端-超级改", - "chars": [ - "令" - ] - }, - { - "name": "人事部密信" - }, - { - "name": "残弩-典训", - "roles": [ - "SNIPER" - ], - "promotion": 1 - }, - { - "name": "叙拉古人的愤怒" - }, - { - "name": "绿叶菜罐头" - }, - { - "name": "073号安全试剂" - }, - { - "name": "Miss.Christine摸摸券", - "promotion": 2 - }, - { - "name": "残弩-神速", - "roles": [ - "SNIPER" - ] - }, - { - "name": "残弩-交叉火力", - "roles": [ - "SNIPER" - ] - }, - { - "name": "折戟-浴血", - "roles": [ - "WARRIOR" - ] - }, - { - "name": "赤金的远征" - }, - { - "name": "源石鸢尾花" - }, - { - "name": "玻璃小鸟" - }, - { - "name": "《第二经济改革法》" - }, - { - "name": "独奏八音盒" - }, - { - "name": "被撬开的道具箱" - }, - { - "name": "游戏室管理员权限卡", - "promotion": 1 - }, - { - "name": "尖笑鬼牌", - "promotion": 1 - }, - { - "name": "缠梦古堡模型" - }, - { - "name": "“时光之末”" - }, - { - "name": "捕鳞蓑" - }, - { - "name": "“绽放”" - }, - { - "name": "乌萨斯毡毯" - }, - { - "name": "沃特大叔养护套装" - }, - { - "name": "“古堡的子嗣”" - }, - { - "name": "折戟-典训", - "roles": [ - "WARRIOR" - ], - "promotion": 1 - }, - { - "name": "第二经济改革法" - }, - { - "name": "高卢银行支票" - }, - { - "name": "古乔治营养原浆" - }, - { - "name": "折戟-破釜沉舟", - "roles": [ - "WARRIOR" - ] - }, - { - "name": "折戟-一夫当关", - "roles": [ - "WARRIOR" - ] - }, - { - "name": "全局作战文件" - }, - { - "name": "折戟-锋刃", - "roles": [ - "WARRIOR" - ] - }, - { - "name": "皇家利口酒" - }, - { - "name": "断杖-典训", - "roles": [ - "CASTER" - ], - "promotion": 1 - }, - { - "name": "涌动之餐" - }, +{ + "Mizuki": [ + { + "name": "锈蚀的铁锤" + }, + { + "name": "鸭爵金砖" + }, + { + "name": "“碎片大厦的回忆”" + }, + { + "name": "一份演讲稿" + }, + { + "name": "古旧铸物" + }, + { + "name": "立体艺术装置" + }, + { + "name": "阿卡胡拉饭碗" + }, + { + "name": "长生者之证" + }, + { + "name": "血魔的寝床" + }, + { + "name": "嵌体甲片" + }, + { + "name": "《旧高卢地名源流考》" + }, + { + "name": "御2" + }, + { + "name": "石像鬼塑像" + }, + { + "name": "《杜林地上环游记》" + }, + { + "name": "特殊抑制器" + }, + { + "name": "《特级馥郁咖啡豆》" + }, + { + "name": "“多功能”发夹" + }, + { + "name": "“审判庭之火”" + }, + { + "name": "金酒之杯", + "no_longer_buy": true, + "ignore_no_longer_buy": true + }, + { + "name": "骑士戒律·新编", + "no_longer_buy": true, + "ignore_no_longer_buy": true + }, + { + "name": "投币玩具", + "no_longer_buy": true, + "ignore_no_longer_buy": true + }, + { + "name": "扩散之手", + "chars": [ + "异客" + ] + }, + { + "name": "撕扯之手", + "chars": [ + "帕拉斯" + ] + }, + { + "name": "永流之手", + "chars": [ + "艾雅法拉", + "刻俄柏", + "黑键", + "令" + ] + }, + { + "name": "扼喉之手", + "chars": [ + "鸿雪", + "黑", + "远牙", + "早露" + ] + }, + { + "name": "碎靶之手", + "chars": [ + "夕", + "莫斯提马", + "Pith" + ] + }, + { + "name": "扣挠之手", + "chars": [ + "安洁莉娜", + "灵知", + "铃兰" + ] + }, + { + "name": "净尘之手", + "chars": [ + "浊心斯卡蒂", + "卡涅利安", + "流明" + ] + }, + { + "name": "散轶诗简", + "chars": [ + "令" + ] + }, + { + "name": "衍生者终端-超级改", + "chars": [ + "令" + ] + }, + { + "name": "人事部密信" + }, + { + "name": "残弩-典训", + "roles": [ + "SNIPER" + ], + "promotion": 1 + }, + { + "name": "叙拉古人的愤怒" + }, + { + "name": "绿叶菜罐头" + }, + { + "name": "073号安全试剂" + }, + { + "name": "Miss.Christine摸摸券", + "promotion": 2 + }, + { + "name": "残弩-神速", + "roles": [ + "SNIPER" + ] + }, + { + "name": "残弩-交叉火力", + "roles": [ + "SNIPER" + ] + }, + { + "name": "折戟-浴血", + "roles": [ + "WARRIOR" + ] + }, + { + "name": "赤金的远征" + }, + { + "name": "源石鸢尾花" + }, + { + "name": "玻璃小鸟" + }, + { + "name": "《第二经济改革法》" + }, + { + "name": "独奏八音盒" + }, + { + "name": "被撬开的道具箱" + }, + { + "name": "游戏室管理员权限卡", + "promotion": 1 + }, + { + "name": "尖笑鬼牌", + "promotion": 1 + }, + { + "name": "缠梦古堡模型" + }, + { + "name": "“时光之末”" + }, + { + "name": "捕鳞蓑" + }, + { + "name": "“绽放”" + }, + { + "name": "乌萨斯毡毯" + }, + { + "name": "沃特大叔养护套装" + }, + { + "name": "“古堡的子嗣”" + }, + { + "name": "折戟-典训", + "roles": [ + "WARRIOR" + ], + "promotion": 1 + }, + { + "name": "第二经济改革法" + }, + { + "name": "高卢银行支票" + }, + { + "name": "古乔治营养原浆" + }, + { + "name": "折戟-破釜沉舟", + "roles": [ + "WARRIOR" + ] + }, + { + "name": "折戟-一夫当关", + "roles": [ + "WARRIOR" + ] + }, + { + "name": "全局作战文件" + }, + { + "name": "折戟-锋刃", + "roles": [ + "WARRIOR" + ] + }, + { + "name": "皇家利口酒" + }, + { + "name": "断杖-典训", + "roles": [ + "CASTER" + ], + "promotion": 1 + }, + { + "name": "涌动之餐" + }, - { - "name": "女妖之吻" - }, - { - "name": "万能钥匙" - }, - { - "name": "古旧乐谱残章" - }, - { - "name": "高卢小圆饼" - }, - { - "name": "尖叫樱桃" - }, - { - "name": "咖啡平原咖啡糖" - }, - { - "name": "微缩舞台模型" - }, - { - "name": "解约协议" - }, - { - "name": "红色蝴蝶结" - }, - { - "name": "蓝色丝巾" - }, - { - "name": "古怪的长笛" - }, - { - "name": "钝爪-典训", - "roles": [ - "PIONEER" - ], - "promotion": 1 - }, - { - "name": "残弩-百步穿杨", - "roles": [ - "SNIPER" - ] - }, - { - "name": "支柱-援护", - "roles": [ - "SUPPORT" - ] - }, - { - "name": "支柱-枯法", - "roles": [ - "SUPPORT" - ] - }, - { - "name": "黑色郁金香" - }, - { - "name": "“苦痛的快乐”" - }, - { - "name": "“法术杀手”" - }, - { - "name": "猩红剧团票根" - }, - { - "name": "老蒲扇" - }, - { - "name": "空白名片" - }, - { - "name": "“复仇者”" - }, - { - "name": "赶车夫的长鞭" - }, - { - "name": "锈蚀刀片" - }, - { - "name": "未知仪器" - }, - { - "name": "急救药箱" - }, - { - "name": "难闻的止血剂" - }, - { - "name": "大静谧" - }, - { - "name": "镶金骨骰" - }, - { - "name": "“黑夜呢喃”" - }, - { - "name": "迷迭香之拥" - }, - { - "name": "恐鱼干" - }, - { - "name": "残破合影" - }, - { - "name": "老近卫军之锋" - }, - { - "name": "贵族刺剑" - }, - { - "name": "皇帝的恩宠" - }, - { - "name": "损坏的左轮弹巢" - }, - { - "name": "银餐叉" - }, - { - "name": "显圣吊坠" - }, - { - "name": "古旧的蒸汽甲胄" - }, - { - "name": "军团护心镜" - }, - { - "name": "异铁小圆盾" - }, - { - "name": "断杖-苦难巫咒", - "roles": [ - "CASTER" - ] - }, - { - "name": "断杖-织法者", - "roles": [ - "CASTER" - ] - }, - { - "name": "“荣耀绶带”" - }, - { - "name": "“当红歌手”" - }, - { - "name": "Scout的狙击镜" - }, - { - "name": "维多利亚“废铁”勋章" - }, - { - "name": "折戟-突破", - "roles": [ - "WARRIOR" - ] - }, - { - "name": "莱塔尼亚荣誉勋章" - }, - { - "name": "突击协议-利刃", - "roles": [ - "WARRIOR", - "PIONEER" - ] - }, - { - "name": "爱丽舍钱袋" - }, - { - "name": "至宝指环", - "ignore_no_longer_buy": true - }, - { - "name": "幸运硬币", - "ignore_no_longer_buy": true - }, - { - "name": "维多利亚蛋糕" - }, - { - "name": "皮特水果什锦" - }, - { - "name": "残弩-战场依存", - "roles": [ - "SNIPER" - ] - }, - { - "name": "断杖-咏唱", - "roles": [ - "CASTER" - ] - }, - { - "name": "支柱-典训", - "roles": [ - "SUPPORT" - ], - "promotion": 1 - }, - { - "name": "医者-典训", - "roles": [ - "MEDIC" - ], - "promotion": 1 - }, - { - "name": "香草沙士汽水" - }, - { - "name": "悬丝傀儡" - }, - { - "name": "钝爪-爆发", - "roles": [ - "PIONEER" - ] - }, - { - "name": "作者的喉舌" - }, - { - "name": "设计师量尺" - }, - { - "name": "古高卢银币" - }, - { - "name": "铁卫-典训", - "roles": [ - "TANK" - ], - "promotion": 1 - }, - { - "name": "医者-妙手", - "roles": [ - "MEDIC" - ] - }, - { - "name": "钝爪-百战", - "roles": [ - "PIONEER" - ] - }, - { - "name": "锈刃-典训", - "roles": [ - "SPECIAL" - ], - "promotion": 1 - }, - { - "name": "医者-固化序列", - "roles": [ - "MEDIC" - ] - }, - { - "name": "医者-妙手", - "roles": [ - "MEDIC" - ] - }, - { - "name": "精选兽肉罐头" - }, - { - "name": "“璀璨悲泣”" - }, - { - "name": "制式防暴用具" - }, - { - "name": "皇帝的收藏" - }, - { - "name": "制式防暴用具" - }, - { - "name": "演出用香水" - }, - { - "name": "断杖-凝神", - "roles": [ - "CASTER" - ] - }, - { - "name": "迷梦香精" - }, - { - "name": "人偶之家" - }, - { - "name": "路线说明图" - }, - { - "name": "林间夜话" - }, - { - "name": "教堂救济餐券" - }, - { - "name": "地形图" - }, - { - "name": "神音海螺" - }, - { - "name": "摩根队长佳酿" - }, - { - "name": "试制巧克力" - }, - { - "name": "黄铜指南针" - }, - { - "name": "“噤声”" - }, - { - "name": "“童趣玩偶”" - }, - { - "name": "远程协议-遥击", - "roles": [ - "SNIPER", - "MEDIC" - ] - }, - { - "name": "破坏协议-消除", - "roles": [ - "CASTER", - "SPECIAL" - ] - }, - { - "name": "破坏协议-压制", - "roles": [ - "CASTER", - "SPECIAL" - ] - }, - { - "name": "地区行动方案" - }, - { - "name": "舞者手链" - }, - { - "name": "安洁莉娜的创想" - }, - { - "name": "破损的面具" - }, - { - "name": "羽兽肝酱" - }, - { - "name": "苍白花冠" - }, - { - "name": "活玫瑰" - }, - { - "name": "“聚焦”" - }, - { - "name": "钝爪-熟稔", - "roles": [ - "PIONEER" - ] - }, - { - "name": "球球果汁" - }, - { - "name": "女皇之愿" - }, - { - "name": "荒地龙舌兰" - }, - { - "name": "医者-理智固剂", - "roles": [ - "MEDIC" - ] - }, - { - "name": "生命之水" - }, - { - "name": "教母的信物" - }, - { - "name": "奇渊面具" - }, - { - "name": "昏暗的提灯" - }, - { - "name": "皇族金胸针" - }, - { - "name": "开裂的束缚带" - }, - { - "name": "疗养特供卡" - }, - { - "name": "疗养体验卡" - }, - { - "name": "精神治疗录像带" - }, - { - "name": "“迷醉荷谟伊”" - }, - { - "name": "食腐者手杖" - }, - { - "name": "高闪相机" - }, - { - "name": "凯旋号角" - }, - { - "name": "紧急活性剂" - }, - { - "name": "假面舞会面具", - "ignore_no_longer_buy": true - }, - { - "name": "“逝者垂泪”" - }, - { - "name": "四叶草化石" - }, - { - "name": "苦行者泡芙" - }, - { - "name": "乌萨斯列巴" - }, - { - "name": "铁棍面包" - }, - { - "name": "遗落之帜" - }, - { - "name": "遥乡之引" - }, - { - "name": "王庭盟约" - }, - { - "name": "凉拌海草" - }, - { - "name": "橙味风暴" - }, - { - "name": "诸王的冠冕" - }, - { - "name": "国王的新枪" - }, - { - "name": "国王的圆饼" - }, - { - "name": "国王的枝条" - }, - { - "name": "光耀卡西米尔" - }, - { - "name": "归来" - }, - { - "name": "积攒之手" - }, - { - "name": "极速之手" - }, - { - "name": "尖刺之手" - }, - { - "name": "深洋主宰刻像" - }, - { - "name": "三钥协定" - }, - { - "name": "便携经书" - }, - { - "name": "判官经文布" - }, - { - "name": "郁金香的秘方" - }, - { - "name": "“文明的存续”" - }, - { - "name": "“荣耀套餐”" - }, - { - "name": "“岁怒”" - }, - { - "name": "铁卫-突破", - "roles": [ - "TANK" - ] - }, - { - "name": "铁卫-侵掠", - "roles": [ - "TANK" - ] - }, - { - "name": "铁卫-推进", - "roles": [ - "TANK" - ] - }, - { - "name": "铁卫-无锋", - "roles": [ - "TANK" - ] - }, - { - "name": "铁卫-临时要塞", - "roles": [ - "TANK" - ] - }, - { - "name": "锈刃-突破", - "roles": [ - "SPECIAL" - ] - }, - { - "name": "锈刃-研磨", - "roles": [ - "SPECIAL" - ] - }, - { - "name": "锈刃-单兵", - "roles": [ - "SPECIAL" - ] - }, - { - "name": "锈刃-可视静谧", - "roles": [ - "SPECIAL" - ] - }, - { - "name": "锈刃-神力", - "roles": [ - "SPECIAL" - ] - } -] + { + "name": "女妖之吻" + }, + { + "name": "万能钥匙" + }, + { + "name": "古旧乐谱残章" + }, + { + "name": "高卢小圆饼" + }, + { + "name": "尖叫樱桃" + }, + { + "name": "咖啡平原咖啡糖" + }, + { + "name": "微缩舞台模型" + }, + { + "name": "解约协议" + }, + { + "name": "红色蝴蝶结" + }, + { + "name": "蓝色丝巾" + }, + { + "name": "古怪的长笛" + }, + { + "name": "钝爪-典训", + "roles": [ + "PIONEER" + ], + "promotion": 1 + }, + { + "name": "残弩-百步穿杨", + "roles": [ + "SNIPER" + ] + }, + { + "name": "支柱-援护", + "roles": [ + "SUPPORT" + ] + }, + { + "name": "支柱-枯法", + "roles": [ + "SUPPORT" + ] + }, + { + "name": "黑色郁金香" + }, + { + "name": "“苦痛的快乐”" + }, + { + "name": "“法术杀手”" + }, + { + "name": "猩红剧团票根" + }, + { + "name": "老蒲扇" + }, + { + "name": "空白名片" + }, + { + "name": "“复仇者”" + }, + { + "name": "赶车夫的长鞭" + }, + { + "name": "锈蚀刀片" + }, + { + "name": "未知仪器" + }, + { + "name": "急救药箱" + }, + { + "name": "难闻的止血剂" + }, + { + "name": "大静谧" + }, + { + "name": "镶金骨骰" + }, + { + "name": "“黑夜呢喃”" + }, + { + "name": "迷迭香之拥" + }, + { + "name": "恐鱼干" + }, + { + "name": "残破合影" + }, + { + "name": "老近卫军之锋" + }, + { + "name": "贵族刺剑" + }, + { + "name": "皇帝的恩宠" + }, + { + "name": "损坏的左轮弹巢" + }, + { + "name": "银餐叉" + }, + { + "name": "显圣吊坠" + }, + { + "name": "古旧的蒸汽甲胄" + }, + { + "name": "军团护心镜" + }, + { + "name": "异铁小圆盾" + }, + { + "name": "断杖-苦难巫咒", + "roles": [ + "CASTER" + ] + }, + { + "name": "断杖-织法者", + "roles": [ + "CASTER" + ] + }, + { + "name": "“荣耀绶带”" + }, + { + "name": "“当红歌手”" + }, + { + "name": "Scout的狙击镜" + }, + { + "name": "维多利亚“废铁”勋章" + }, + { + "name": "折戟-突破", + "roles": [ + "WARRIOR" + ] + }, + { + "name": "莱塔尼亚荣誉勋章" + }, + { + "name": "突击协议-利刃", + "roles": [ + "WARRIOR", + "PIONEER" + ] + }, + { + "name": "爱丽舍钱袋" + }, + { + "name": "至宝指环", + "ignore_no_longer_buy": true + }, + { + "name": "幸运硬币", + "ignore_no_longer_buy": true + }, + { + "name": "维多利亚蛋糕" + }, + { + "name": "皮特水果什锦" + }, + { + "name": "残弩-战场依存", + "roles": [ + "SNIPER" + ] + }, + { + "name": "断杖-咏唱", + "roles": [ + "CASTER" + ] + }, + { + "name": "支柱-典训", + "roles": [ + "SUPPORT" + ], + "promotion": 1 + }, + { + "name": "医者-典训", + "roles": [ + "MEDIC" + ], + "promotion": 1 + }, + { + "name": "香草沙士汽水" + }, + { + "name": "悬丝傀儡" + }, + { + "name": "钝爪-爆发", + "roles": [ + "PIONEER" + ] + }, + { + "name": "作者的喉舌" + }, + { + "name": "设计师量尺" + }, + { + "name": "古高卢银币" + }, + { + "name": "铁卫-典训", + "roles": [ + "TANK" + ], + "promotion": 1 + }, + { + "name": "医者-妙手", + "roles": [ + "MEDIC" + ] + }, + { + "name": "钝爪-百战", + "roles": [ + "PIONEER" + ] + }, + { + "name": "锈刃-典训", + "roles": [ + "SPECIAL" + ], + "promotion": 1 + }, + { + "name": "医者-固化序列", + "roles": [ + "MEDIC" + ] + }, + { + "name": "医者-妙手", + "roles": [ + "MEDIC" + ] + }, + { + "name": "精选兽肉罐头" + }, + { + "name": "“璀璨悲泣”" + }, + { + "name": "制式防暴用具" + }, + { + "name": "皇帝的收藏" + }, + { + "name": "制式防暴用具" + }, + { + "name": "演出用香水" + }, + { + "name": "断杖-凝神", + "roles": [ + "CASTER" + ] + }, + { + "name": "迷梦香精" + }, + { + "name": "人偶之家" + }, + { + "name": "路线说明图" + }, + { + "name": "林间夜话" + }, + { + "name": "教堂救济餐券" + }, + { + "name": "地形图" + }, + { + "name": "神音海螺" + }, + { + "name": "摩根队长佳酿" + }, + { + "name": "试制巧克力" + }, + { + "name": "黄铜指南针" + }, + { + "name": "“噤声”" + }, + { + "name": "“童趣玩偶”" + }, + { + "name": "远程协议-遥击", + "roles": [ + "SNIPER", + "MEDIC" + ] + }, + { + "name": "破坏协议-消除", + "roles": [ + "CASTER", + "SPECIAL" + ] + }, + { + "name": "破坏协议-压制", + "roles": [ + "CASTER", + "SPECIAL" + ] + }, + { + "name": "地区行动方案" + }, + { + "name": "舞者手链" + }, + { + "name": "安洁莉娜的创想" + }, + { + "name": "破损的面具" + }, + { + "name": "羽兽肝酱" + }, + { + "name": "苍白花冠" + }, + { + "name": "活玫瑰" + }, + { + "name": "“聚焦”" + }, + { + "name": "钝爪-熟稔", + "roles": [ + "PIONEER" + ] + }, + { + "name": "球球果汁" + }, + { + "name": "女皇之愿" + }, + { + "name": "荒地龙舌兰" + }, + { + "name": "医者-理智固剂", + "roles": [ + "MEDIC" + ] + }, + { + "name": "生命之水" + }, + { + "name": "教母的信物" + }, + { + "name": "奇渊面具" + }, + { + "name": "昏暗的提灯" + }, + { + "name": "皇族金胸针" + }, + { + "name": "开裂的束缚带" + }, + { + "name": "疗养特供卡" + }, + { + "name": "疗养体验卡" + }, + { + "name": "精神治疗录像带" + }, + { + "name": "“迷醉荷谟伊”" + }, + { + "name": "食腐者手杖" + }, + { + "name": "高闪相机" + }, + { + "name": "凯旋号角" + }, + { + "name": "紧急活性剂" + }, + { + "name": "假面舞会面具", + "ignore_no_longer_buy": true + }, + { + "name": "“逝者垂泪”" + }, + { + "name": "四叶草化石" + }, + { + "name": "苦行者泡芙" + }, + { + "name": "乌萨斯列巴" + }, + { + "name": "铁棍面包" + }, + { + "name": "遗落之帜" + }, + { + "name": "遥乡之引" + }, + { + "name": "王庭盟约" + }, + { + "name": "凉拌海草" + }, + { + "name": "橙味风暴" + }, + { + "name": "诸王的冠冕" + }, + { + "name": "国王的新枪" + }, + { + "name": "国王的圆饼" + }, + { + "name": "国王的枝条" + }, + { + "name": "光耀卡西米尔" + }, + { + "name": "归来" + }, + { + "name": "积攒之手" + }, + { + "name": "极速之手" + }, + { + "name": "尖刺之手" + }, + { + "name": "深洋主宰刻像" + }, + { + "name": "三钥协定" + }, + { + "name": "便携经书" + }, + { + "name": "判官经文布" + }, + { + "name": "郁金香的秘方" + }, + { + "name": "“文明的存续”" + }, + { + "name": "“荣耀套餐”" + }, + { + "name": "“岁怒”" + }, + { + "name": "铁卫-突破", + "roles": [ + "TANK" + ] + }, + { + "name": "铁卫-侵掠", + "roles": [ + "TANK" + ] + }, + { + "name": "铁卫-推进", + "roles": [ + "TANK" + ] + }, + { + "name": "铁卫-无锋", + "roles": [ + "TANK" + ] + }, + { + "name": "铁卫-临时要塞", + "roles": [ + "TANK" + ] + }, + { + "name": "锈刃-突破", + "roles": [ + "SPECIAL" + ] + }, + { + "name": "锈刃-研磨", + "roles": [ + "SPECIAL" + ] + }, + { + "name": "锈刃-单兵", + "roles": [ + "SPECIAL" + ] + }, + { + "name": "锈刃-可视静谧", + "roles": [ + "SPECIAL" + ] + }, + { + "name": "锈刃-神力", + "roles": [ + "SPECIAL" + ] + } + ], + "Phantom": [ + { + "name": "锈蚀的铁锤" + }, + { + "name": "鸭爵金砖" + }, + { + "name": "“碎片大厦的回忆”" + }, + { + "name": "一份演讲稿" + }, + { + "name": "古旧铸物" + }, + { + "name": "立体艺术装置" + }, + { + "name": "阿卡胡拉饭碗" + }, + { + "name": "长生者之证" + }, + { + "name": "血魔的寝床" + }, + { + "name": "嵌体甲片" + }, + { + "name": "《旧高卢地名源流考》" + }, + { + "name": "御2" + }, + { + "name": "石像鬼塑像" + }, + { + "name": "《杜林地上环游记》" + }, + { + "name": "特殊抑制器" + }, + { + "name": "《特级馥郁咖啡豆》" + }, + { + "name": "“多功能”发夹" + }, + { + "name": "“审判庭之火”" + }, + { + "name": "金酒之杯", + "no_longer_buy": true, + "ignore_no_longer_buy": true + }, + { + "name": "骑士戒律·新编", + "no_longer_buy": true, + "ignore_no_longer_buy": true + }, + { + "name": "投币玩具", + "no_longer_buy": true, + "ignore_no_longer_buy": true + }, + { + "name": "扩散之手", + "chars": [ + "异客" + ] + }, + { + "name": "撕扯之手", + "chars": [ + "帕拉斯" + ] + }, + { + "name": "永流之手", + "chars": [ + "艾雅法拉", + "刻俄柏", + "黑键", + "令" + ] + }, + { + "name": "扼喉之手", + "chars": [ + "鸿雪", + "黑", + "远牙", + "早露" + ] + }, + { + "name": "碎靶之手", + "chars": [ + "夕", + "莫斯提马", + "Pith" + ] + }, + { + "name": "扣挠之手", + "chars": [ + "安洁莉娜", + "灵知", + "铃兰" + ] + }, + { + "name": "净尘之手", + "chars": [ + "浊心斯卡蒂", + "卡涅利安", + "流明" + ] + }, + { + "name": "散轶诗简", + "chars": [ + "令" + ] + }, + { + "name": "衍生者终端-超级改", + "chars": [ + "令" + ] + }, + { + "name": "人事部密信" + }, + { + "name": "残弩-典训", + "roles": [ + "SNIPER" + ], + "promotion": 1 + }, + { + "name": "叙拉古人的愤怒" + }, + { + "name": "绿叶菜罐头" + }, + { + "name": "073号安全试剂" + }, + { + "name": "Miss.Christine摸摸券", + "promotion": 2 + }, + { + "name": "残弩-神速", + "roles": [ + "SNIPER" + ] + }, + { + "name": "残弩-交叉火力", + "roles": [ + "SNIPER" + ] + }, + { + "name": "折戟-浴血", + "roles": [ + "WARRIOR" + ] + }, + { + "name": "赤金的远征" + }, + { + "name": "源石鸢尾花" + }, + { + "name": "玻璃小鸟" + }, + { + "name": "《第二经济改革法》" + }, + { + "name": "独奏八音盒" + }, + { + "name": "被撬开的道具箱" + }, + { + "name": "游戏室管理员权限卡", + "promotion": 1 + }, + { + "name": "尖笑鬼牌", + "promotion": 1 + }, + { + "name": "缠梦古堡模型" + }, + { + "name": "“时光之末”" + }, + { + "name": "捕鳞蓑" + }, + { + "name": "“绽放”" + }, + { + "name": "乌萨斯毡毯" + }, + { + "name": "沃特大叔养护套装" + }, + { + "name": "“古堡的子嗣”" + }, + { + "name": "折戟-典训", + "roles": [ + "WARRIOR" + ], + "promotion": 1 + }, + { + "name": "第二经济改革法" + }, + { + "name": "高卢银行支票" + }, + { + "name": "古乔治营养原浆" + }, + { + "name": "折戟-破釜沉舟", + "roles": [ + "WARRIOR" + ] + }, + { + "name": "折戟-一夫当关", + "roles": [ + "WARRIOR" + ] + }, + { + "name": "全局作战文件" + }, + { + "name": "折戟-锋刃", + "roles": [ + "WARRIOR" + ] + }, + { + "name": "皇家利口酒" + }, + { + "name": "断杖-典训", + "roles": [ + "CASTER" + ], + "promotion": 1 + }, + { + "name": "涌动之餐" + }, + + { + "name": "女妖之吻" + }, + { + "name": "万能钥匙" + }, + { + "name": "古旧乐谱残章" + }, + { + "name": "高卢小圆饼" + }, + { + "name": "尖叫樱桃" + }, + { + "name": "咖啡平原咖啡糖" + }, + { + "name": "微缩舞台模型" + }, + { + "name": "解约协议" + }, + { + "name": "红色蝴蝶结" + }, + { + "name": "蓝色丝巾" + }, + { + "name": "古怪的长笛" + }, + { + "name": "钝爪-典训", + "roles": [ + "PIONEER" + ], + "promotion": 1 + }, + { + "name": "残弩-百步穿杨", + "roles": [ + "SNIPER" + ] + }, + { + "name": "支柱-援护", + "roles": [ + "SUPPORT" + ] + }, + { + "name": "支柱-枯法", + "roles": [ + "SUPPORT" + ] + }, + { + "name": "黑色郁金香" + }, + { + "name": "“苦痛的快乐”" + }, + { + "name": "“法术杀手”" + }, + { + "name": "猩红剧团票根" + }, + { + "name": "老蒲扇" + }, + { + "name": "空白名片" + }, + { + "name": "“复仇者”" + }, + { + "name": "赶车夫的长鞭" + }, + { + "name": "锈蚀刀片" + }, + { + "name": "未知仪器" + }, + { + "name": "急救药箱" + }, + { + "name": "难闻的止血剂" + }, + { + "name": "大静谧" + }, + { + "name": "镶金骨骰" + }, + { + "name": "“黑夜呢喃”" + }, + { + "name": "迷迭香之拥" + }, + { + "name": "恐鱼干" + }, + { + "name": "残破合影" + }, + { + "name": "老近卫军之锋" + }, + { + "name": "贵族刺剑" + }, + { + "name": "皇帝的恩宠" + }, + { + "name": "损坏的左轮弹巢" + }, + { + "name": "银餐叉" + }, + { + "name": "显圣吊坠" + }, + { + "name": "古旧的蒸汽甲胄" + }, + { + "name": "军团护心镜" + }, + { + "name": "异铁小圆盾" + }, + { + "name": "断杖-苦难巫咒", + "roles": [ + "CASTER" + ] + }, + { + "name": "断杖-织法者", + "roles": [ + "CASTER" + ] + }, + { + "name": "“荣耀绶带”" + }, + { + "name": "“当红歌手”" + }, + { + "name": "Scout的狙击镜" + }, + { + "name": "维多利亚“废铁”勋章" + }, + { + "name": "折戟-突破", + "roles": [ + "WARRIOR" + ] + }, + { + "name": "莱塔尼亚荣誉勋章" + }, + { + "name": "突击协议-利刃", + "roles": [ + "WARRIOR", + "PIONEER" + ] + }, + { + "name": "爱丽舍钱袋" + }, + { + "name": "至宝指环", + "ignore_no_longer_buy": true + }, + { + "name": "幸运硬币", + "ignore_no_longer_buy": true + }, + { + "name": "维多利亚蛋糕" + }, + { + "name": "皮特水果什锦" + }, + { + "name": "残弩-战场依存", + "roles": [ + "SNIPER" + ] + }, + { + "name": "断杖-咏唱", + "roles": [ + "CASTER" + ] + }, + { + "name": "支柱-典训", + "roles": [ + "SUPPORT" + ], + "promotion": 1 + }, + { + "name": "医者-典训", + "roles": [ + "MEDIC" + ], + "promotion": 1 + }, + { + "name": "香草沙士汽水" + }, + { + "name": "悬丝傀儡" + }, + { + "name": "钝爪-爆发", + "roles": [ + "PIONEER" + ] + }, + { + "name": "作者的喉舌" + }, + { + "name": "设计师量尺" + }, + { + "name": "古高卢银币" + }, + { + "name": "铁卫-典训", + "roles": [ + "TANK" + ], + "promotion": 1 + }, + { + "name": "医者-妙手", + "roles": [ + "MEDIC" + ] + }, + { + "name": "钝爪-百战", + "roles": [ + "PIONEER" + ] + }, + { + "name": "锈刃-典训", + "roles": [ + "SPECIAL" + ], + "promotion": 1 + }, + { + "name": "医者-固化序列", + "roles": [ + "MEDIC" + ] + }, + { + "name": "医者-妙手", + "roles": [ + "MEDIC" + ] + }, + { + "name": "精选兽肉罐头" + }, + { + "name": "“璀璨悲泣”" + }, + { + "name": "制式防暴用具" + }, + { + "name": "皇帝的收藏" + }, + { + "name": "制式防暴用具" + }, + { + "name": "演出用香水" + }, + { + "name": "断杖-凝神", + "roles": [ + "CASTER" + ] + }, + { + "name": "迷梦香精" + }, + { + "name": "人偶之家" + }, + { + "name": "路线说明图" + }, + { + "name": "林间夜话" + }, + { + "name": "教堂救济餐券" + }, + { + "name": "地形图" + }, + { + "name": "神音海螺" + }, + { + "name": "摩根队长佳酿" + }, + { + "name": "试制巧克力" + }, + { + "name": "黄铜指南针" + }, + { + "name": "“噤声”" + }, + { + "name": "“童趣玩偶”" + }, + { + "name": "远程协议-遥击", + "roles": [ + "SNIPER", + "MEDIC" + ] + }, + { + "name": "破坏协议-消除", + "roles": [ + "CASTER", + "SPECIAL" + ] + }, + { + "name": "破坏协议-压制", + "roles": [ + "CASTER", + "SPECIAL" + ] + }, + { + "name": "地区行动方案" + }, + { + "name": "舞者手链" + }, + { + "name": "安洁莉娜的创想" + }, + { + "name": "破损的面具" + }, + { + "name": "羽兽肝酱" + }, + { + "name": "苍白花冠" + }, + { + "name": "活玫瑰" + }, + { + "name": "“聚焦”" + }, + { + "name": "钝爪-熟稔", + "roles": [ + "PIONEER" + ] + }, + { + "name": "球球果汁" + }, + { + "name": "女皇之愿" + }, + { + "name": "荒地龙舌兰" + }, + { + "name": "医者-理智固剂", + "roles": [ + "MEDIC" + ] + }, + { + "name": "生命之水" + }, + { + "name": "教母的信物" + }, + { + "name": "奇渊面具" + }, + { + "name": "昏暗的提灯" + }, + { + "name": "皇族金胸针" + }, + { + "name": "开裂的束缚带" + }, + { + "name": "疗养特供卡" + }, + { + "name": "疗养体验卡" + }, + { + "name": "精神治疗录像带" + }, + { + "name": "“迷醉荷谟伊”" + }, + { + "name": "食腐者手杖" + }, + { + "name": "高闪相机" + }, + { + "name": "凯旋号角" + }, + { + "name": "紧急活性剂" + }, + { + "name": "假面舞会面具", + "ignore_no_longer_buy": true + }, + { + "name": "“逝者垂泪”" + }, + { + "name": "四叶草化石" + }, + { + "name": "苦行者泡芙" + }, + { + "name": "乌萨斯列巴" + }, + { + "name": "铁棍面包" + }, + { + "name": "遗落之帜" + }, + { + "name": "遥乡之引" + }, + { + "name": "王庭盟约" + }, + { + "name": "凉拌海草" + }, + { + "name": "橙味风暴" + }, + { + "name": "诸王的冠冕" + }, + { + "name": "国王的新枪" + }, + { + "name": "国王的圆饼" + }, + { + "name": "国王的枝条" + }, + { + "name": "光耀卡西米尔" + }, + { + "name": "归来" + }, + { + "name": "积攒之手" + }, + { + "name": "极速之手" + }, + { + "name": "尖刺之手" + }, + { + "name": "深洋主宰刻像" + }, + { + "name": "三钥协定" + }, + { + "name": "便携经书" + }, + { + "name": "判官经文布" + }, + { + "name": "郁金香的秘方" + }, + { + "name": "“文明的存续”" + }, + { + "name": "“荣耀套餐”" + }, + { + "name": "“岁怒”" + }, + { + "name": "铁卫-突破", + "roles": [ + "TANK" + ] + }, + { + "name": "铁卫-侵掠", + "roles": [ + "TANK" + ] + }, + { + "name": "铁卫-推进", + "roles": [ + "TANK" + ] + }, + { + "name": "铁卫-无锋", + "roles": [ + "TANK" + ] + }, + { + "name": "铁卫-临时要塞", + "roles": [ + "TANK" + ] + }, + { + "name": "锈刃-突破", + "roles": [ + "SPECIAL" + ] + }, + { + "name": "锈刃-研磨", + "roles": [ + "SPECIAL" + ] + }, + { + "name": "锈刃-单兵", + "roles": [ + "SPECIAL" + ] + }, + { + "name": "锈刃-可视静谧", + "roles": [ + "SPECIAL" + ] + }, + { + "name": "锈刃-神力", + "roles": [ + "SPECIAL" + ] + } + ] +} diff --git a/src/MeoAssistant/ImageAnalyzer/RoguelikeSkillSelectionImageAnalyzer.cpp b/src/MeoAssistant/ImageAnalyzer/RoguelikeSkillSelectionImageAnalyzer.cpp index c307d972d6..001dba8ea0 100644 --- a/src/MeoAssistant/ImageAnalyzer/RoguelikeSkillSelectionImageAnalyzer.cpp +++ b/src/MeoAssistant/ImageAnalyzer/RoguelikeSkillSelectionImageAnalyzer.cpp @@ -54,7 +54,6 @@ std::string asst::RoguelikeSkillSelectionImageAnalyzer::name_analyze(const Rect& analyzer.set_task_info(name_task_ptr); analyzer.set_image(m_image); analyzer.set_roi(roi.move(name_task_ptr->roi)); - analyzer.set_required(RoguelikeRecruit.get_oper_order()); analyzer.set_replace(std::dynamic_pointer_cast(Task.get("CharsNameOcrReplace"))->replace_map); if (!analyzer.analyze()) { diff --git a/src/MeoAssistant/Resource/RoguelikeRecruitConfiger.cpp b/src/MeoAssistant/Resource/RoguelikeRecruitConfiger.cpp index d49684d51e..f229dcc8c7 100644 --- a/src/MeoAssistant/Resource/RoguelikeRecruitConfiger.cpp +++ b/src/MeoAssistant/Resource/RoguelikeRecruitConfiger.cpp @@ -4,10 +4,11 @@ #include -const asst::RoguelikeOperInfo& asst::RoguelikeRecruitConfiger::get_oper_info(const std::string& name) const noexcept - +const asst::RoguelikeOperInfo& asst::RoguelikeRecruitConfiger::get_oper_info(const std::string& theme, + const std::string& name) const noexcept { - if (auto find_iter = m_all_opers.find(name); find_iter != m_all_opers.cend()) { + auto& opers = m_all_opers.at(theme); + if (auto find_iter = opers.find(name); find_iter != opers.cend()) { return find_iter->second; } else { @@ -16,10 +17,14 @@ const asst::RoguelikeOperInfo& asst::RoguelikeRecruitConfiger::get_oper_info(con } } -const std::vector> asst::RoguelikeRecruitConfiger::get_role_info(const BattleRole& role) const noexcept +const std::vector> asst::RoguelikeRecruitConfiger::get_role_info( + const std::string& theme, const BattleRole& role) const noexcept { - if (role == BattleRole::Unknown) return std::vector>(); - if (auto iter = m_role_offset_map.find(role); iter != m_role_offset_map.end()) { + if (role == BattleRole::Unknown) { + return std::vector>(); + } + auto& map = m_role_offset_map.at(theme); + if (auto iter = map.find(role); iter != map.end()) { return iter->second; } return std::vector>(); @@ -29,42 +34,46 @@ bool asst::RoguelikeRecruitConfiger::parse(const json::value& json) { clear(); - for (const auto& role_name : json.at("roles").as_array()) { - std::string str_role = role_name.as_string(); - const auto& role_json = json.at(str_role); - std::vector> role_offset; - if (auto opt = role_json.find("role_priority_offset")) { - for (const auto& offset : opt.value()) { - std::pair offset_pair = std::make_pair(offset[0].as_integer(), offset[1].as_integer()); - role_offset.emplace_back(offset_pair); - } - } - m_role_offset_map.emplace(get_role_type(str_role), std::move(role_offset)); - for (const auto& oper_info : role_json.at("opers").as_array()) { - std::string name = oper_info.at("name").as_string(); - RoguelikeOperInfo info; - info.name = name; - info.recruit_priority = oper_info.get("recruit_priority", 0); - info.promote_priority = oper_info.get("promote_priority", 0); - info.recruit_priority_when_team_full = - oper_info.get("recruit_priority_when_team_full", info.recruit_priority - 100); - info.promote_priority_when_team_full = - oper_info.get("promote_priority_when_team_full", info.promote_priority + 100); - info.is_alternate = oper_info.get("is_alternate", false); - info.skill = oper_info.at("skill").as_integer(); - info.alternate_skill = oper_info.get("alternate_skill", 0); - info.skill_usage = static_cast(oper_info.get("skill_usage", 1)); - info.alternate_skill_usage = static_cast(oper_info.get("alternate_skill_usage", 1)); - if (auto opt = oper_info.find("recruit_priority_offset")) { + for (const auto& theme_view : { RoguelikePhantomThemeName, RoguelikeMizukiThemeName }) { + const std::string theme(theme_view); + const auto& theme_json = json.at(theme); + for (const auto& role_name : theme_json.at("roles").as_array()) { + std::string str_role = role_name.as_string(); + const auto& role_json = theme_json.at(str_role); + std::vector> role_offset; + if (auto opt = role_json.find("role_priority_offset")) { for (const auto& offset : opt.value()) { std::pair offset_pair = std::make_pair(offset[0].as_integer(), offset[1].as_integer()); - info.recruit_priority_offset.emplace_back(offset_pair); + role_offset.emplace_back(offset_pair); } } - info.offset_melee = oper_info.get("offset_melee", false); + m_role_offset_map[theme].emplace(get_role_type(str_role), std::move(role_offset)); + for (const auto& oper_info : role_json.at("opers").as_array()) { + std::string name = oper_info.at("name").as_string(); + RoguelikeOperInfo info; + info.name = name; + info.recruit_priority = oper_info.get("recruit_priority", 0); + info.promote_priority = oper_info.get("promote_priority", 0); + info.recruit_priority_when_team_full = + oper_info.get("recruit_priority_when_team_full", info.recruit_priority - 100); + info.promote_priority_when_team_full = + oper_info.get("promote_priority_when_team_full", info.promote_priority + 100); + info.is_alternate = oper_info.get("is_alternate", false); + info.skill = oper_info.at("skill").as_integer(); + info.alternate_skill = oper_info.get("alternate_skill", 0); + info.skill_usage = static_cast(oper_info.get("skill_usage", 1)); + info.alternate_skill_usage = static_cast(oper_info.get("alternate_skill_usage", 1)); + if (auto opt = oper_info.find("recruit_priority_offset")) { + for (const auto& offset : opt.value()) { + std::pair offset_pair = + std::make_pair(offset[0].as_integer(), offset[1].as_integer()); + info.recruit_priority_offset.emplace_back(offset_pair); + } + } + info.offset_melee = oper_info.get("offset_melee", false); - m_all_opers.emplace(name, std::move(info)); - m_ordered_all_opers_name.emplace_back(name); + m_all_opers[theme].emplace(name, std::move(info)); + } } } @@ -74,5 +83,5 @@ bool asst::RoguelikeRecruitConfiger::parse(const json::value& json) void asst::RoguelikeRecruitConfiger::clear() { m_all_opers.clear(); - m_ordered_all_opers_name.clear(); + m_role_offset_map.clear(); } diff --git a/src/MeoAssistant/Resource/RoguelikeRecruitConfiger.h b/src/MeoAssistant/Resource/RoguelikeRecruitConfiger.h index ca284f92fa..3101f3da12 100644 --- a/src/MeoAssistant/Resource/RoguelikeRecruitConfiger.h +++ b/src/MeoAssistant/Resource/RoguelikeRecruitConfiger.h @@ -27,23 +27,24 @@ namespace asst BattleSkillUsage skill_usage = BattleSkillUsage::Possibly; BattleSkillUsage alternate_skill_usage = BattleSkillUsage::Possibly; }; + class RoguelikeRecruitConfiger final : public SingletonHolder, public AbstractConfiger { public: virtual ~RoguelikeRecruitConfiger() override = default; - const RoguelikeOperInfo& get_oper_info(const std::string& name) const noexcept; - const std::vector> get_role_info(const BattleRole& role) const noexcept; - const auto& get_oper_order() const noexcept { return m_ordered_all_opers_name; } + const RoguelikeOperInfo& get_oper_info(const std::string& theme, const std::string& name) const noexcept; + const std::vector> get_role_info(const std::string& theme, + const BattleRole& role) const noexcept; protected: virtual bool parse(const json::value& json) override; void clear(); - std::unordered_map m_all_opers; - std::unordered_map>> m_role_offset_map; - std::vector m_ordered_all_opers_name; + std::unordered_map> m_all_opers; + std::unordered_map>>> + m_role_offset_map; }; inline static auto& RoguelikeRecruit = RoguelikeRecruitConfiger::get_instance(); diff --git a/src/MeoAssistant/Resource/RoguelikeShoppingConfiger.cpp b/src/MeoAssistant/Resource/RoguelikeShoppingConfiger.cpp index 022891c566..c9c606adcc 100644 --- a/src/MeoAssistant/Resource/RoguelikeShoppingConfiger.cpp +++ b/src/MeoAssistant/Resource/RoguelikeShoppingConfiger.cpp @@ -6,37 +6,41 @@ bool asst::RoguelikeShoppingConfiger::parse(const json::value& json) { clear(); - for (const auto& goods_json : json.as_array()) { - std::string name = goods_json.at("name").as_string(); + for (const auto& theme_view : { RoguelikePhantomThemeName, RoguelikeMizukiThemeName }) { + const std::string theme(theme_view); + const auto& theme_json = json.at(theme); + for (const auto& goods_json : theme_json.as_array()) { + std::string name = goods_json.at("name").as_string(); - std::vector roles; - if (auto roles_opt = goods_json.find("roles")) { - for (const auto& role_json : roles_opt.value()) { - static const std::unordered_map RoleMap = { - { "CASTER", BattleRole::Caster }, { "MEDIC", BattleRole::Medic }, - { "PIONEER", BattleRole::Pioneer }, { "SNIPER", BattleRole::Sniper }, - { "SPECIAL", BattleRole::Special }, { "SUPPORT", BattleRole::Support }, - { "TANK", BattleRole::Tank }, { "WARRIOR", BattleRole::Warrior }, - }; - roles.emplace_back(RoleMap.at(role_json.as_string())); + std::vector roles; + if (auto roles_opt = goods_json.find("roles")) { + for (const auto& role_json : roles_opt.value()) { + static const std::unordered_map RoleMap = { + { "CASTER", BattleRole::Caster }, { "MEDIC", BattleRole::Medic }, + { "PIONEER", BattleRole::Pioneer }, { "SNIPER", BattleRole::Sniper }, + { "SPECIAL", BattleRole::Special }, { "SUPPORT", BattleRole::Support }, + { "TANK", BattleRole::Tank }, { "WARRIOR", BattleRole::Warrior }, + }; + roles.emplace_back(RoleMap.at(role_json.as_string())); + } } - } - std::vector chars; - if (auto chars_opt = goods_json.find("chars")) { - for (const auto& char_json : chars_opt.value()) { - chars.emplace_back(char_json.as_string()); + std::vector chars; + if (auto chars_opt = goods_json.find("chars")) { + for (const auto& char_json : chars_opt.value()) { + chars.emplace_back(char_json.as_string()); + } } + + RoguelikeGoods goods; + goods.name = std::move(name); + goods.roles = std::move(roles); + goods.chars = std::move(chars); + goods.promotion = goods_json.get("promotion", 0); + goods.no_longer_buy = goods_json.get("no_longer_buy", false); + goods.ignore_no_longer_buy = goods_json.get("ignore_no_longer_buy", false); + + m_goods.at(theme).emplace_back(std::move(goods)); } - - RoguelikeGoods goods; - goods.name = std::move(name); - goods.roles = std::move(roles); - goods.chars = std::move(chars); - goods.promotion = goods_json.get("promotion", 0); - goods.no_longer_buy = goods_json.get("no_longer_buy", false); - goods.ignore_no_longer_buy = goods_json.get("ignore_no_longer_buy", false); - - m_goods.emplace_back(std::move(goods)); } return true; } diff --git a/src/MeoAssistant/Resource/RoguelikeShoppingConfiger.h b/src/MeoAssistant/Resource/RoguelikeShoppingConfiger.h index 52ccfe338a..ac948f738c 100644 --- a/src/MeoAssistant/Resource/RoguelikeShoppingConfiger.h +++ b/src/MeoAssistant/Resource/RoguelikeShoppingConfiger.h @@ -23,14 +23,14 @@ namespace asst public: virtual ~RoguelikeShoppingConfiger() override = default; - const auto& get_goods() const noexcept { return m_goods; } + const auto& get_goods(const std::string& theme) const noexcept {return m_goods.at(theme); } private: virtual bool parse(const json::value& json) override; void clear(); - std::vector m_goods; + std::unordered_map> m_goods; }; inline static auto& RoguelikeShopping = RoguelikeShoppingConfiger::get_instance(); diff --git a/src/MeoAssistant/Task/Plugin/RoguelikeRecruitTaskPlugin.cpp b/src/MeoAssistant/Task/Plugin/RoguelikeRecruitTaskPlugin.cpp index babfd56908..d6f7a7aef8 100644 --- a/src/MeoAssistant/Task/Plugin/RoguelikeRecruitTaskPlugin.cpp +++ b/src/MeoAssistant/Task/Plugin/RoguelikeRecruitTaskPlugin.cpp @@ -132,7 +132,8 @@ bool asst::RoguelikeRecruitTaskPlugin::_run() } // 查询招募配置 - auto& recruit_info = RoguelikeRecruit.get_oper_info(oper_info.name); + auto& recruit_info = RoguelikeRecruit.get_oper_info( + m_status->get_properties(RuntimeStatus::RoguelikeTheme).value(), oper_info.name); if (recruit_info.name.empty()) { continue; } @@ -184,7 +185,8 @@ bool asst::RoguelikeRecruitTaskPlugin::_run() } } role_num = team_roles[oper_role]; - const auto role_info = RoguelikeRecruit.get_role_info(oper_role); + const auto role_info = RoguelikeRecruit.get_role_info( + m_status->get_properties(RuntimeStatus::RoguelikeTheme).value(), oper_role); for (const auto& offset_pair : ranges::reverse_view(role_info)) { if (role_num >= offset_pair.first) { priority += offset_pair.second; diff --git a/src/MeoAssistant/Task/Plugin/RoguelikeShoppingTaskPlugin.cpp b/src/MeoAssistant/Task/Plugin/RoguelikeShoppingTaskPlugin.cpp index c0bf4ad17b..7cb52ff981 100644 --- a/src/MeoAssistant/Task/Plugin/RoguelikeShoppingTaskPlugin.cpp +++ b/src/MeoAssistant/Task/Plugin/RoguelikeShoppingTaskPlugin.cpp @@ -93,7 +93,8 @@ bool asst::RoguelikeShoppingTaskPlugin::_run() const auto& result = analyzer.get_result(); bool bought = false; - for (const auto& goods : RoguelikeShopping.get_goods()) { + auto& all_goods = RoguelikeShopping.get_goods(m_status->get_properties(RuntimeStatus::RoguelikeTheme).value()); + for (const auto& goods : all_goods) { if (need_exit()) { return false; } @@ -166,4 +167,4 @@ bool asst::RoguelikeShoppingTaskPlugin::_run() } return true; -} \ No newline at end of file +} diff --git a/src/MeoAssistant/Task/Plugin/RoguelikeSkillSelectionTaskPlugin.cpp b/src/MeoAssistant/Task/Plugin/RoguelikeSkillSelectionTaskPlugin.cpp index aa9763bc00..70f13c2767 100644 --- a/src/MeoAssistant/Task/Plugin/RoguelikeSkillSelectionTaskPlugin.cpp +++ b/src/MeoAssistant/Task/Plugin/RoguelikeSkillSelectionTaskPlugin.cpp @@ -47,10 +47,12 @@ bool asst::RoguelikeSkillSelectionTaskPlugin::_run() int delay = Task.get("RoguelikeSkillSelectionMove1")->post_delay; bool has_rookie = false; for (const auto& [name, skill_vec] : analyzer.get_result()) { - if (name.empty()) { + const auto& oper_info = + RoguelikeRecruit.get_oper_info(m_status->get_properties(RuntimeStatus::RoguelikeTheme).value(), name); + if (oper_info.name.empty()) { + Log.warn("Unknown oper", name); continue; } - const auto& oper_info = RoguelikeRecruit.get_oper_info(name); if (oper_info.alternate_skill > 0) { Log.info(__FUNCTION__, name, " select alternate skill:", oper_info.alternate_skill); @@ -89,4 +91,4 @@ bool asst::RoguelikeSkillSelectionTaskPlugin::_run() m_status->set_number(RuntimeStatus::RoguelikeTeamFullWithoutRookie, 0); } return true; -} \ No newline at end of file +} diff --git a/src/MeoAssistant/Task/RoguelikeTask.cpp b/src/MeoAssistant/Task/RoguelikeTask.cpp index be39448e87..71b692177c 100644 --- a/src/MeoAssistant/Task/RoguelikeTask.cpp +++ b/src/MeoAssistant/Task/RoguelikeTask.cpp @@ -12,6 +12,7 @@ #include "RuntimeStatus.h" #include "Sub/ProcessTask.h" #include "Utils/Logger.hpp" +#include "Utils/AsstBattleDef.h" asst::RoguelikeTask::RoguelikeTask(const AsstCallback& callback, void* callback_arg) : PackageTask(callback, callback_arg, TaskType), @@ -38,21 +39,24 @@ asst::RoguelikeTask::RoguelikeTask(const AsstCallback& callback, void* callback_ bool asst::RoguelikeTask::set_params(const json::value& params) { + std::string theme = params.get("theme", std::string(RoguelikePhantomThemeName)); + if (theme != RoguelikePhantomThemeName && theme != RoguelikeMizukiThemeName) { + Log.error("Unknown roguelike theme", theme); + return false; + } + + if (m_status == nullptr) { + m_roguelike_task_ptr->set_tasks({ "Stop" }); + Log.error(__FUNCTION__, "m_status is null"); + return false; + } + m_status->set_properties(RuntimeStatus::RoguelikeTheme, theme); + m_roguelike_task_ptr->set_tasks({ theme + "@Roguelike@Begin" }); + // 0 - 刷蜡烛,尽可能稳定地打更多层数 // 1 - 刷源石锭,第一层投资完就退出 // 2 - 【弃用】两者兼顾,投资过后再退出,没有投资就继续往后打 // 3 - 尝试通关,激进策略(TODO) - - std::string theme = params.get("theme", "Phantom"); - if (m_status == nullptr) { - m_roguelike_task_ptr->set_tasks({ "Stop" }); - Log.error(__FUNCTION__, "| Cannot set roguelike name!"); - return false; - } - m_status->set_properties(RuntimeStatus::RoguelikeTheme, theme); - theme += "@"; - m_roguelike_task_ptr->set_tasks({ theme + "Roguelike@Begin" }); - int mode = params.get("mode", 0); switch (mode) { case 0: @@ -63,8 +67,9 @@ bool asst::RoguelikeTask::set_params(const json::value& params) m_roguelike_task_ptr->set_times_limit("StageTraderLeaveConfirm", 0, ProcessTask::TimesLimitType::Post); break; case 2: + [[unlikely]] m_debug_task_ptr->set_enable(true); - [[unlikely]] m_roguelike_task_ptr->set_times_limit("StageTraderInvestCancel", 0); + m_roguelike_task_ptr->set_times_limit("StageTraderInvestCancel", 0); break; default: Log.error(__FUNCTION__, "| Unknown mode", mode); @@ -72,7 +77,7 @@ bool asst::RoguelikeTask::set_params(const json::value& params) } int number_of_starts = params.get("starts_count", INT_MAX); - m_roguelike_task_ptr->set_times_limit(theme + "Roguelike@StartExplore", number_of_starts); + m_roguelike_task_ptr->set_times_limit(theme + "@Roguelike@StartExplore", number_of_starts); bool investment_enabled = params.get("investment_enabled", true); if (!investment_enabled) { diff --git a/src/MeoAssistant/Utils/AsstBattleDef.h b/src/MeoAssistant/Utils/AsstBattleDef.h index 35451389d4..992660cf39 100644 --- a/src/MeoAssistant/Utils/AsstBattleDef.h +++ b/src/MeoAssistant/Utils/AsstBattleDef.h @@ -222,4 +222,7 @@ namespace asst }; using BattleAttackRange = std::vector; + + static constexpr std::string_view RoguelikePhantomThemeName = "Phantom"; + static constexpr std::string_view RoguelikeMizukiThemeName = "Mizuki"; } // namespace asst