Fix prize/loss numbers in hacker game
This commit is contained in:
parent
cc39bb26a0
commit
3203842249
@ -11,8 +11,8 @@ module Game =
|
|||||||
|
|
||||||
let getClassButtonColor = function
|
let getClassButtonColor = function
|
||||||
| 0 -> ButtonStyle.Danger
|
| 0 -> ButtonStyle.Danger
|
||||||
| 1 -> ButtonStyle.Success
|
| 1 -> ButtonStyle.Primary
|
||||||
| _ -> ButtonStyle.Primary
|
| _ -> ButtonStyle.Success
|
||||||
|
|
||||||
let getClassEmbedColor = function
|
let getClassEmbedColor = function
|
||||||
| 0 -> DiscordColor.Red
|
| 0 -> DiscordColor.Red
|
||||||
|
@ -101,13 +101,13 @@ let updateCombatants successfulHack (attacker : PlayerData) (defender : PlayerDa
|
|||||||
|
|
||||||
let successfulHack (ctx : IDiscordContext) attacker defender hack =
|
let successfulHack (ctx : IDiscordContext) attacker defender hack =
|
||||||
async {
|
async {
|
||||||
let finalAmount = max 0 (int defender.Bank - hack.Power) * 1<GBT>
|
let prizeAmount = if hack.Power < int defender.Bank then hack.Power else int defender.Bank
|
||||||
do! updateCombatants true attacker defender hack finalAmount
|
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
|
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)
|
let channel = ctx.GetGuild().GetChannel(GuildEnvironment.channelEventsHackerBattle)
|
||||||
do! channel.SendMessageAsync(builder)
|
do! channel.SendMessageAsync(builder)
|
||||||
|> Async.AwaitTask
|
|> Async.AwaitTask
|
||||||
@ -116,14 +116,14 @@ let successfulHack (ctx : IDiscordContext) attacker defender hack =
|
|||||||
|
|
||||||
let failedHack (ctx : IDiscordContext) attacker defender hack =
|
let failedHack (ctx : IDiscordContext) attacker defender hack =
|
||||||
async {
|
async {
|
||||||
let finalAmount = max 0 (int defender.Bank - hack.Power) * 1<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 {finalAmount} $GBT!"
|
let msg = $"Hack failed! {defender.Name} was able to mount a successful defense! You lost {lostAmount} $GBT!"
|
||||||
do! sendFollowUpMessage ctx msg
|
do! sendFollowUpMessage ctx msg
|
||||||
|
|
||||||
do! updateCombatants false attacker defender hack -finalAmount
|
do! updateCombatants false attacker defender hack (-lostAmount * 1<GBT>)
|
||||||
|
|
||||||
let builder = DiscordMessageBuilder()
|
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))
|
let channel = (ctx.GetGuild().GetChannel(GuildEnvironment.channelEventsHackerBattle))
|
||||||
do! channel.SendMessageAsync(builder)
|
do! channel.SendMessageAsync(builder)
|
||||||
|> Async.AwaitTask
|
|> Async.AwaitTask
|
||||||
|
@ -52,8 +52,7 @@ let handleBuyItem (ctx : IDiscordContext) itemId =
|
|||||||
|> handleResultWithResponse ctx (fun player -> async {
|
|> handleResultWithResponse ctx (fun player -> async {
|
||||||
let newBalance = player.Bank - item.Price
|
let newBalance = player.Bank - item.Price
|
||||||
let p = { player with Bank = newBalance ; Inventory = Array.append [| item |] player.Inventory }
|
let p = { player with Bank = newBalance ; Inventory = Array.append [| item |] player.Inventory }
|
||||||
do! DbService.updatePlayer GuildEnvironment.pgDb p
|
do! DbService.updatePlayer GuildEnvironment.pgDb p |> Async.Ignore
|
||||||
|> Async.Ignore
|
|
||||||
do! sendFollowUpMessage ctx $"Successfully purchased {item.Name}! You now have {newBalance} 💰$GBT remaining"
|
do! sendFollowUpMessage ctx $"Successfully purchased {item.Name}! You now have {newBalance} 💰$GBT remaining"
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -3,8 +3,6 @@
|
|||||||
open Degenz.Types
|
open Degenz.Types
|
||||||
|
|
||||||
open System
|
open System
|
||||||
//open MongoDB.Bson
|
|
||||||
//open MongoDB.Driver
|
|
||||||
open Npgsql.FSharp
|
open Npgsql.FSharp
|
||||||
|
|
||||||
type User = {
|
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))
|
Inventory = user.Inventory |> Array.choose (fun id -> Armory.battleItems |> Array.tryFind (fun i -> i.Id = id))
|
||||||
Events = [||]
|
Events = [||]
|
||||||
Traits = { PlayerTraits.empty with Strength = user.Strength }
|
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
|
Bank = user.Bank
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user