Skip to content

Commit e6a87f5

Browse files
authored
Merge pull request #225 from cc004/dev
Dev
2 parents 52e4c5e + c308fb1 commit e6a87f5

8 files changed

Lines changed: 455 additions & 97 deletions

File tree

autopcr/core/pcrclient.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,19 @@ async def caravan_dish_sell(self, season_id: int, block_id: int, dish_list: List
7979
req.surplus_dish_list = surplus_dish_list
8080
return await self.request(req)
8181

82+
async def caravan_spots_choice(self, season_id: int, choice: int):
83+
req = CaravanSpotsChoiceRequest()
84+
req.season_id = season_id
85+
req.choice = choice
86+
return await self.request(req)
87+
88+
async def caravan_dice_reroll(self, season_id: int, current_count: int, roll_num: int):
89+
req = CaravanDiceRerollRequest()
90+
req.season_id = season_id
91+
req.current_count = current_count
92+
req.roll_num = roll_num
93+
return await self.request(req)
94+
8295
async def caravan_dice_roll(self, season_id: int, current_num: int, roll_num: int):
8396
req = CaravanDiceRollRequest()
8497
req.season_id = season_id
@@ -135,6 +148,18 @@ async def caravan_gacha_block_exec(self, season_id: int, block_id: int, gacha_ty
135148
req.current_currency_num = current_currency_num
136149
return await self.request(req)
137150

151+
async def caravan_minigame_bs_start(self, season_id: int):
152+
req = CaravanMinigameCccBsStartRequest()
153+
req.season_id = season_id
154+
return await self.request(req)
155+
156+
async def caravan_minigame_bs_finish(self, season_id: int, play_id: int, items: Dict[int, int]):
157+
req = CaravanMinigameCccBsFinishRequest()
158+
req.season_id = season_id
159+
req.play_id = play_id
160+
req.object_list = [CccFinishItemCountInfo(ccc_object_id=item_id, count=count) for item_id, count in items.items()]
161+
return await self.request(req)
162+
138163
async def caravan_minigame_start(self):
139164
req = CaravanMinigameCccStartRequest()
140165
return await self.request(req)
@@ -609,6 +634,11 @@ async def read_story(self, story_id: int):
609634
await self.story_check(story_id)
610635
return await self.story_view(story_id)
611636

637+
async def read_xac_story(self, sub_story_id: int):
638+
req = SubStoryXacReadStoryRequest()
639+
req.sub_story_id = sub_story_id
640+
await self.request(req)
641+
612642
async def read_asb_story(self, sub_story_id: int):
613643
req = SubStoryAsbReadStoryRequest()
614644
req.sub_story_id = sub_story_id
@@ -1202,6 +1232,8 @@ async def unlock_quest_id(self, quest: int):
12021232
async def quest_skip_aware(self, quest: int, times: int, recover: bool = False, is_total: bool = False):
12031233
name = db.get_quest_name(quest)
12041234
if db.is_hatsune_quest(quest):
1235+
if not quest in db.quest_to_event:
1236+
raise AbortError(f"任务{name}不存在")
12051237
event = db.quest_to_event[quest].event_id
12061238
if not quest in self.data.hatsune_quest_dict[event]:
12071239
raise AbortError(f"任务{name}未通关或不存在")

autopcr/db/database.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,14 @@ def redeem_unit(self) -> Dict[int, Dict[int, RedeemUnit]]:
6666
.to_dict(lambda x: x.key, lambda x: x.to_dict(lambda x: x.slot_id, lambda x: x))
6767
)
6868

69+
@lazy_property
70+
def caravan_buddy(self) -> Dict[int, CaravanBuddy]:
71+
with self.dbmgr.session() as db:
72+
return (
73+
CaravanBuddy.query(db)
74+
.to_dict(lambda x: x.buddy_id, lambda x: x)
75+
)
76+
6977
@lazy_property
7078
def caravan_dish(self) -> Dict[int, CaravanDish]:
7179
with self.dbmgr.session() as db:
@@ -1192,6 +1200,14 @@ def hatsune_item(self) -> Dict[int, HatsuneItem]:
11921200
.to_dict(lambda x: x.event_id, lambda x: x)
11931201
)
11941202

1203+
@lazy_property
1204+
def xac_story_data(self) -> Dict[int, XacStoryDatum]:
1205+
with self.dbmgr.session() as db:
1206+
return (
1207+
XacStoryDatum.query(db)
1208+
.to_dict(lambda x: x.sub_story_id, lambda x: x)
1209+
)
1210+
11951211
@lazy_property
11961212
def asb_story_data(self) -> Dict[int, AsbStoryDatum]:
11971213
with self.dbmgr.session() as db:

autopcr/db/methods.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,14 @@ def get_effect_desc(self, lasting = True) -> str:
112112
lasting_msg = ""
113113
return lasting_msg
114114

115+
@method
116+
class CaravanBuddy(models.CaravanBuddy):
117+
def get_effect_desc(self, lasting = True) -> str:
118+
lasting_msg = f"持续{self.effect_turn}回合" if self.effect_turn > 0 else "一次性"
119+
if not lasting:
120+
lasting_msg = ""
121+
return f"{self.description.format(self.effect_value_1, self.effect_value_2)} {lasting_msg}"
122+
115123
@method
116124
class EnemyRewardDatum(models.EnemyRewardDatum):
117125
def get_rewards(self) -> Iterator[Reward]:

autopcr/model/handlers.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,13 @@ async def update(self, mgr: datamgr, request):
7373
for item in self.reward_list:
7474
mgr.update_inventory(item)
7575

76+
@handles
77+
class CaravanMinigameCccBsFinishResponse(responses.CaravanMinigameCccBsFinishResponse):
78+
async def update(self, mgr: datamgr, request):
79+
if self.reward_list:
80+
for item in self.reward_list:
81+
mgr.update_inventory(item)
82+
7683
@handles
7784
class CaravanDishUseResponse(responses.CaravanDishUseResponse):
7885
async def update(self, mgr: datamgr, request):
@@ -83,6 +90,20 @@ async def update(self, mgr: datamgr, request):
8390
for item in self.sub_reward_list:
8491
mgr.update_inventory(item)
8592

93+
@handles
94+
class CaravanDiceRollResponse(responses.CaravanDiceRollResponse):
95+
async def update(self, mgr: datamgr, request):
96+
if self.buddy_reward_list:
97+
for item in self.buddy_reward_list:
98+
mgr.update_inventory(item)
99+
100+
@handles
101+
class CaravanProgressTurnResponse(responses.CaravanProgressTurnResponse):
102+
async def update(self, mgr: datamgr, request):
103+
if self.buddy_reward_list:
104+
for item in self.buddy_reward_list:
105+
mgr.update_inventory(item)
106+
86107
@handles
87108
class CaravanGachaBlockExecResponse(responses.CaravanGachaBlockExecResponse):
88109
async def update(self, mgr: datamgr, request):
@@ -674,6 +695,13 @@ async def update(self, mgr: datamgr, request):
674695
for reward in self.rewards:
675696
mgr.update_inventory(reward)
676697

698+
@handles
699+
class SubStoryXacReadStoryResponse(responses.SubStoryXacReadStoryResponse):
700+
async def update(self, mgr: datamgr, request):
701+
if self.reward_info:
702+
for reward in self.reward_info:
703+
mgr.update_inventory(reward)
704+
677705
@handles
678706
class SubStoryAsbReadStoryResponse(responses.SubStoryAsbReadStoryResponse):
679707
async def update(self, mgr: datamgr, request):

autopcr/module/modules/autosweep.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ def get_max_times(self, client: pcrclient, quest_id: int) -> int:
288288
113301, # 水七七香
289289
117001, # 水娇
290290
117101, # 水姐姐
291+
113401, # 水星
292+
113601, # 水黑骑
291293
]
292294
@conditional_execution1("very_hard_sweep_run_time", ["vh庆典"])
293295
@description('储备专二需求的150碎片,包括' + ','.join(db.get_unit_name(unit_id) for unit_id in unique_equip_2_pure_memory_id))

0 commit comments

Comments
 (0)