修改了STEP_INSTRUCTIONS

This commit is contained in:
mannaandpoem 2023-09-28 23:47:35 +08:00
parent e5140fd6a5
commit fd03751e1d
2 changed files with 16 additions and 12 deletions

View file

@ -35,15 +35,14 @@ STEP_INSTRUCTIONS = {
7: {"content": "Witch, please open your eyes!",
"send_to": "Moderator",
"restricted_to": ""},
8: {"content": """Witch, you have a bottle of poison, who are you going to kill tonight?
Choose one from the following living options: {living_players}.""",
8: {"content": """Witch, tonight {killed_player} has been killed by the werewolves.
You have a bottle of antidote, would you like to save him/her? If not, simply Pass.""",
"send_to": "Witch",
"restricted_to": "Witch"},
9: {"content": """Witch, you have a bottle of antidote and a bottle of poison.
Who are you going to save tonight or kill tonight? Choose one from the following living options:
{living_players}.""",
"restricted_to": "Witch"}, # 要先判断女巫是否有解药,再去询问女巫是否使用解药救人
9: {"content": """Witch, you also have a bottle of poison, would you like to use it to kill one of the living players?
Choose one from the following living options: {living_players}. If not, simply Pass.""",
"send_to": "Witch",
"restricted_to": "Witch"},
"restricted_to": "Witch"}, #
10: {"content": "Witch, close your eyes",
"send_to": "Moderator",
"restricted_to": ""},
@ -71,7 +70,7 @@ STEP_INSTRUCTIONS = {
17: {"content": """Now vote and tell me who you think is the werewolf. Dont mention your role.
You only choose one from the following living options please:
{living_players}. Or you can pass. For example: I vote to kill ...""",
"send_to": "Moderator",
"send_to": "",
"restricted_to": ""},
18: {"content": """{voted_out_player} was eliminated.""",
"send_to": "Moderator",
@ -108,7 +107,7 @@ VOTE_PROMPT = """
PARSE_INSTRUCTIONS = {
0: "Now it's time to vote",
1: "The {winner} have won! They successfully eliminated all the {loser}}."
1: "The {winner} have won! They successfully eliminated all the {loser}."
"The game has ended. Thank you for playing Werewolf!",
2: "The night has ended, and it's time to reveal the casualties."
"During the night, the Werewolves made their move. Unfortunately, they targeted {PlayerName}, who is now dead."
@ -193,6 +192,11 @@ class SummarizeNight(Action):
async def run(self, events):
# 假设events是一个字典代表夜晚发生的多个事件key是事件类型value是该事件对应的玩家
# 例如被狼人杀的玩家:{"killed_by_werewolves": "Player1"}
# 被守卫守护的玩家:{"protected_by_guard": "Player2"}
# 被女巫救的玩家:{"saved_by_witch": "Player3"}
# 被女巫毒的玩家:{"poisoned_by_witch": "Player4"}
# 被预言家查验的玩家:{"verified_by_seer": "Player5"}
# 若没有事件发生则events为空字典
killed_by_werewolves = events.get("killed_by_werewolves", "")
protected_by_guard = events.get("protected_by_guard", "")
saved_by_witch = events.get("saved_by_witch", "")
@ -226,7 +230,7 @@ class SummarizeDay(Action):
# 假设votes是一个字典代表白天投票的结果key是被投票的玩家value是得票数
# 例如:{"Player1": 2, "Player2": 1, "Player3": 1, "Player4": 0}
# 表示Player1得到2票Player2和Player3各得到1票Player4得到0票
# 若平票,则无人死亡
# 若平票,则随机选一个人出局
if not votes:
return "No votes were cast. No one was killed."

View file

@ -31,7 +31,7 @@ class Moderator(Role):
# 假设votes代表白天投票的结果key是被投票的玩家value是得票数
self.votes = {"Player1": 1, "Player2": 2, "Player3": 1, "Player4": 0, "Player5": 0}
async def _instruct_speak(self, context):
async def _instruct_speak(self):
step_idx = self.step_idx % len(STEP_INSTRUCTIONS)
self.step_idx += 1
return await InstructSpeak().run(step_idx,
@ -85,7 +85,7 @@ class Moderator(Role):
# 根据_think的结果执行InstructSpeak还是ParseSpeak, 并将结果返回
if isinstance(todo, InstructSpeak):
msg_content, msg_to_send_to, msg_restriced_to = await self._instruct_speak(memories)
msg_content, msg_to_send_to, msg_restriced_to = await self._instruct_speak()
msg = Message(content=msg_content, role=self.profile, sent_from=self.name,
cause_by=InstructSpeak, send_to=msg_to_send_to, restricted_to=msg_restriced_to)