@@ -402,7 +402,7 @@ def get_max_times(self, client: pcrclient, quest_id: int) -> int:
402402 116901 , # 电子龙
403403]
404404@conditional_execution1 ("very_hard_sweep_run_time" , ["vh庆典" ])
405- @description ('储备专二需求的150碎片(目标角色见模块内 `unique_equip_2_pure_memory_id`)' )
405+ @description ('储备专二需求的150碎片' + ',' . join ( db . get_unit_name ( unit_id ) for unit_id in unique_equip_2_pure_memory_id ) )
406406@name ('专二纯净碎片储备' )
407407@default (False )
408408@tag_stamina_consume
@@ -432,6 +432,92 @@ def get_need_quest(self, token: ItemType) -> List[QuestDatum]:
432432 def get_max_times (self , client : pcrclient , quest_id : int ) -> int :
433433 return 5 if db .is_shiori_quest (quest_id ) else 3
434434
435+ unique_equip_1_sp_memory_id = [
436+ # 103201, # 哈哈剑 送515
437+ # 102801, # 充电宝 送515
438+ # 100101, # 猫拳 送515
439+ # 101001, # 真步 送515
440+ # 100401, # 炸弹人 商店换
441+ # 106101, # 611 商店换
442+ # 103601, # xcw 送515
443+ # 106401, # 雪菲 送515
444+ # 107701, # 水女仆 商店换
445+ # 107901, # 水猫剑 商店换
446+ 104801 , # 子龙
447+ 108001 , # 水子龙
448+ # 102301, # 熊锤 商店换
449+ 106301 , # yls
450+ 102101 , # 铃铛
451+ # 105901, # 普白 送515
452+ # 103701, # 智 送515
453+ 102001 , # 兔子
454+ # 101401, # 驴 送515
455+ 105701 , # 姬塔
456+ # 101601, # 暴击弓 商店换
457+ # 101201, # 星法 送515
458+ # 105801, # 吃货 送515
459+ # 103401, # 黄骑 商店换
460+ # 100601, # 妹法 商店换
461+ 104401 , # yly
462+ # 106001, # 黑猫 送515
463+ # 105101, # 深月 商店换
464+ # 100701, # 布丁 商店换
465+ # 102201, # 姐法 商店换
466+ ]
467+ @conditional_not_execution ("mirai_sp1_h_sweep_not_run_time" , [])
468+ @conditional_execution1 ("mirai_sp1_h_sweep_run_time" , ["h庆典" ])
469+ @description ('储备专一SP需求的300碎片' + ',' .join (db .get_unit_name (unit_id ) for unit_id in unique_equip_1_sp_memory_id ))
470+ @name ('专一SP碎片储备(H本)' )
471+ @default (False )
472+ @tag_stamina_consume
473+ class mirai_sp1_h_sweep (simple_demand_sweep_base ):
474+
475+ async def get_need_list (self , client : pcrclient ) -> List [Tuple [ItemType , int ]]:
476+ memory_gap = client .data .get_memory_demand_gap ()
477+ target = Counter ()
478+ need_list = []
479+ for unit in unique_equip_1_sp_memory_id :
480+ token = (eInventoryType .Item , db .unit_to_memory [unit ])
481+ target [unit ] += 300
482+ if - memory_gap [token ] < target [unit ]:
483+ need_list .append ((token , target [unit ] - memory_gap [token ]))
484+ if not need_list :
485+ raise SkipError ("所有角色碎片均已盈余" )
486+ return need_list
487+
488+ def get_need_quest (self , token : ItemType ) -> List [QuestDatum ]:
489+ return db .memory_hard_quest .get (token , [])
490+
491+ def get_max_times (self , client : pcrclient , quest_id : int ) -> int :
492+ return 3
493+
494+ @conditional_not_execution ("mirai_sp1_shiori_sweep_not_run_time" , ["n3" , 'n4及以上' ])
495+ @conditional_execution1 ("mirai_sp1_shiori_sweep_run_time" , ["无庆典" ])
496+ @description ('储备专一SP需求的300碎片' + ',' .join (db .get_unit_name (unit_id ) for unit_id in unique_equip_1_sp_memory_id ))
497+ @name ('专一SP碎片储备(外传)' )
498+ @default (False )
499+ @tag_stamina_consume
500+ class mirai_sp1_shiori_sweep (simple_demand_sweep_base ):
501+
502+ async def get_need_list (self , client : pcrclient ) -> List [Tuple [ItemType , int ]]:
503+ memory_gap = client .data .get_memory_demand_gap ()
504+ target = Counter ()
505+ need_list = []
506+ for unit in unique_equip_1_sp_memory_id :
507+ token = (eInventoryType .Item , db .unit_to_memory [unit ])
508+ target [unit ] += 300
509+ if - memory_gap [token ] < target [unit ]:
510+ need_list .append ((token , target [unit ] - memory_gap [token ]))
511+ if not need_list :
512+ raise SkipError ("所有角色碎片均已盈余" )
513+ return need_list
514+
515+ def get_need_quest (self , token : ItemType ) -> List [QuestDatum ]:
516+ return db .memory_shiori_quest .get (token , [])
517+
518+ def get_max_times (self , client : pcrclient , quest_id : int ) -> int :
519+ return 5
520+
435521@singlechoice ("vh_sweep_campaign_times" , "庆典次数" , 3 , [0 , 3 , 6 ])
436522@singlechoice ("vh_sweep_times" , "非庆典次数" , 3 , [0 , 3 , 6 ])
437523@description ('根据纯净碎片缺口智能刷vh图' )
0 commit comments