From ff75ed15d0a216cb225f59b08cff95624b09c550 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Sun, 26 Jun 2022 11:45:59 +0700 Subject: [PATCH] Update events before updating the currency --- Bot/Games/HackerBattle.fs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Bot/Games/HackerBattle.fs b/Bot/Games/HackerBattle.fs index a0c00b5..c6334bd 100644 --- a/Bot/Games/HackerBattle.fs +++ b/Bot/Games/HackerBattle.fs @@ -90,7 +90,7 @@ let runHackerBattle defender (hack : HackItem) = | _ -> false | _ -> false) -let updateCombatants successfulHack (attacker : PlayerData) (defender : PlayerData) (hack : HackItem) prize = +let updateEvents successfulHack (attacker : PlayerData) (defender : PlayerData) (hack : HackItem) = let event isDefenderEvent = let hackEvent = { HackId = hack.Id @@ -102,12 +102,16 @@ let updateCombatants successfulHack (attacker : PlayerData) (defender : PlayerDa Timestamp = DateTime.UtcNow Cooldown = if isDefenderEvent then int WeaponClass.SameTargetAttackCooldown.TotalMinutes * 1 else hack.Cooldown } - [ DbService.updatePlayerCurrency prize attacker.DiscordId - DbService.updatePlayerCurrency -prize defender.DiscordId - DbService.addPlayerEvent attacker.DiscordId (event false) + [ DbService.addPlayerEvent attacker.DiscordId (event false) DbService.addPlayerEvent defender.DiscordId (event true) ] |> Async.Parallel |> Async.Ignore + +let updatePrizes (attacker : PlayerData) (defender : PlayerData) prize = + [ DbService.updatePlayerCurrency prize attacker.DiscordId + DbService.updatePlayerCurrency -prize defender.DiscordId ] + |> Async.Parallel + |> Async.Ignore let hackerResult successfulHack (ctx : IDiscordContext) attacker defender (hack : HackItem) = async { @@ -121,6 +125,8 @@ let hackerResult successfulHack (ctx : IDiscordContext) attacker defender (hack then gbt hack.Power , 0 else attacker.Bank , 0 + do! updateEvents successfulHack attacker defender hack + let! defenderMember = ctx.GetGuild().GetMemberAsync(defender.DiscordId) |> Async.AwaitTask // let failedMsg = $"Hack failed! {defender.Name} was able to mount a successful defense! You lost {lostAmount} 💰$GBT!" let embed = Embeds.responseSuccessfulHack2 successfulHack attacker defender (ctx.GetDiscordMember()) defenderMember prizeAmount bonus hack @@ -128,7 +134,7 @@ let hackerResult successfulHack (ctx : IDiscordContext) attacker defender (hack |> Async.AwaitTask |> Async.Ignore - do! updateCombatants successfulHack attacker defender hack prizeAmount + do! updatePrizes attacker defender prizeAmount let builder = DiscordMessageBuilder().WithAllowedMention(UserMention(defender.DiscordId)) if successfulHack then