Fix prize/loss numbers in hacker game

This commit is contained in:
Joseph Ferano 2022-02-24 11:59:58 +07:00
parent cc39bb26a0
commit 3203842249
4 changed files with 11 additions and 18 deletions

View File

@ -11,8 +11,8 @@ module Game =
let getClassButtonColor = function
| 0 -> ButtonStyle.Danger
| 1 -> ButtonStyle.Success
| _ -> ButtonStyle.Primary
| 1 -> ButtonStyle.Primary
| _ -> ButtonStyle.Success
let getClassEmbedColor = function
| 0 -> DiscordColor.Red

View File

@ -101,13 +101,13 @@ let updateCombatants successfulHack (attacker : PlayerData) (defender : PlayerDa
let successfulHack (ctx : IDiscordContext) attacker defender hack =
async {
let finalAmount = max 0 (int defender.Bank - hack.Power) * 1<GBT>
do! updateCombatants true attacker defender hack finalAmount
let prizeAmount = if hack.Power < int defender.Bank then hack.Power else int defender.Bank
do! updateCombatants true attacker defender hack (prizeAmount * 1<GBT>)
let embed = Embeds.responseSuccessfulHack true defender.DiscordId finalAmount hack
let embed = Embeds.responseSuccessfulHack true defender.DiscordId prizeAmount hack
do! ctx.FollowUp embed |> Async.AwaitTask
let builder = Embeds.eventSuccessfulHack ctx defender finalAmount
let builder = Embeds.eventSuccessfulHack ctx defender prizeAmount
let channel = ctx.GetGuild().GetChannel(GuildEnvironment.channelEventsHackerBattle)
do! channel.SendMessageAsync(builder)
|> Async.AwaitTask
@ -116,14 +116,14 @@ let successfulHack (ctx : IDiscordContext) attacker defender hack =
let failedHack (ctx : IDiscordContext) attacker defender hack =
async {
let finalAmount = max 0 (int defender.Bank - hack.Power) * 1<GBT>
let msg = $"Hack failed! {defender.Name} was able to mount a successful defense! You lost {finalAmount} $GBT!"
let lostAmount = if hack.Power < int attacker.Bank then hack.Power else int attacker.Bank
let msg = $"Hack failed! {defender.Name} was able to mount a successful defense! You lost {lostAmount} $GBT!"
do! sendFollowUpMessage ctx msg
do! updateCombatants false attacker defender hack -finalAmount
do! updateCombatants false attacker defender hack (-lostAmount * 1<GBT>)
let builder = DiscordMessageBuilder()
builder.WithContent($"Hacking attempt failed! <@{defender.DiscordId}> defended hack from {ctx.GetDiscordMember().Username} and took {finalAmount} $GBT from them! ") |> ignore
builder.WithContent($"Hacking attempt failed! <@{defender.DiscordId}> defended hack from {ctx.GetDiscordMember().Username} and took {lostAmount} $GBT from them! ") |> ignore
let channel = (ctx.GetGuild().GetChannel(GuildEnvironment.channelEventsHackerBattle))
do! channel.SendMessageAsync(builder)
|> Async.AwaitTask

View File

@ -52,8 +52,7 @@ let handleBuyItem (ctx : IDiscordContext) itemId =
|> handleResultWithResponse ctx (fun player -> async {
let newBalance = player.Bank - item.Price
let p = { player with Bank = newBalance ; Inventory = Array.append [| item |] player.Inventory }
do! DbService.updatePlayer GuildEnvironment.pgDb p
|> Async.Ignore
do! DbService.updatePlayer GuildEnvironment.pgDb p |> Async.Ignore
do! sendFollowUpMessage ctx $"Successfully purchased {item.Name}! You now have {newBalance} 💰$GBT remaining"
})
})

View File

@ -3,8 +3,6 @@
open Degenz.Types
open System
//open MongoDB.Bson
//open MongoDB.Driver
open Npgsql.FSharp
type User = {
@ -21,10 +19,6 @@ let mapBack user : PlayerData =
Inventory = user.Inventory |> Array.choose (fun id -> Armory.battleItems |> Array.tryFind (fun i -> i.Id = id))
Events = [||]
Traits = { PlayerTraits.empty with Strength = user.Strength }
// Achievements =
// tryWithDefault bson "Achievements" [||] (fun v ->
// v.AsBsonArray |> Seq.map (fun (bv : BsonValue) -> bv.AsString) |> Seq.toArray)
// XP = tryWithDefault bson "XP" 0 (fun v -> v.AsInt32)
Bank = user.Bank
}