Skip to content

Commit

Permalink
Retest system now lets players know about tracked retests.
Browse files Browse the repository at this point in the history
  • Loading branch information
luke-hdl committed Apr 17, 2024
1 parent 5a1c330 commit 5660717
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/run/challenge.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ def __init__(self, channel_for_challenge, aggressor, defenders):
self.time_of_issue = time.time()
self.responses = {aggressor: Response(aggressor, Role.AGGRESSOR)}
self.aggressor_response = self.responses[aggressor]
self.total_rounds = 0
for defender in defenders:
self.responses[defender] = Response(defender, Role.DEFENDER)

Expand Down
28 changes: 27 additions & 1 deletion src/run/message_responder.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ async def process_guild_message_text_from_player(self, channel, message):
retest = "Not Specified"
if len(tokenized_message_text) >= 3:
retest = tokenized_message_text[2]
await channel.send("Your retest round has begun!")
await self.begin_retest(message.author, retest)
return

Expand Down Expand Up @@ -247,6 +248,7 @@ async def decline_retest(self, player):

async def begin_retest(self, player, retest):
challenge = self.challenges_by_player.get(player)
challenge.total_rounds += 1
challenge.responses[player].log_retest(retest)
for player in challenge.responses.keys():
challenge.responses[player].begin_retest()
Expand All @@ -263,18 +265,42 @@ async def process_challenge_status_for_player(self, player):
response_2 = challenge.responses[players[1]]
await players[0].send("This round of chops is done! Go to the channel to see results or rebid.")
await players[1].send("This round of chops is done! Go to the channel to see results or rebid.")
players_who_may_retest = []
if automatically_determine_winner(response_1.response, response_2.response) == RecognizedResult.PLAYER_1_WIN:
challenge.responses[players[0]].reset_retest_status()
challenge.responses[players[1]].reset_retest_status()
challenge.responses[players[0]].decline_retest() #Winner automatically denies.
players_who_may_retest.append(players[1])
elif automatically_determine_winner(response_1.response, response_2.response) == RecognizedResult.PLAYER_1_LOSS:
challenge.responses[players[0]].reset_retest_status()
challenge.responses[players[1]].reset_retest_status()
challenge.responses[players[1]].decline_retest() #Winner automatically denies.
players_who_may_retest.append(players[0])
else:
challenge.responses[players[0]].reset_retest_status()
challenge.responses[players[1]].reset_retest_status()
await challenge.channel.send("Anyone who didn't automatically get found winner and would like to retest may post \r\n\r\n " + self.client.user.mention + " retest ability\r\n\r\n now (replacing ability with the nature of the retest - like Brawl, Lucky, or Orisha's Fortune.\r\nIf you don't want to retest, please instead post \r\n\r\n" + self.client.user.mention + " decline\r\n\r\n so that I know the challenge is over.")
players_who_may_retest.append(players[0])
players_who_may_retest.append(players[1])

if challenge.total_rounds == 0: #More detailed guidance on the first retest round.
mentions = ""
for retesting_player in players_who_may_retest:
mentions += retesting_player.mention + " "
await challenge.channel.send(mentions + "- you may retest if you'd like by posting: \r\n\r\n " + self.client.user.mention + " retest ability\r\n\r\n now (replacing ability with the nature of the retest - like Brawl or Lucky.\r\nIf you don't want to retest, please instead post \r\n\r\n" + self.client.user.mention + " decline\r\n\r\n")
else:
mentions = "Players who can retest: "
for retesting_player in players_who_may_retest:
mentions += retesting_player.mention
retest_response = challenge.responses[retesting_player]
if len(retest_response.retests) == 0:
mentions += " (No retests yet.)"
else:
mentions += " (Used retests this challenge: "
for retest in retest_response.retests:
mentions += retest + " x" + str(retest_response.retests[retest]) + " "
mentions += ")"
mentions += " - "
await challenge.channel.send(mentions + "retest or decline now.")

async def finalize_challenge(self, challenge):
with self.alter_challenges_lock:
Expand Down

0 comments on commit 5660717

Please sign in to comment.