diff --git a/Bot/GuildEnvironment.fs b/Bot/GuildEnvironment.fs index a7e5eb7..d099329 100644 --- a/Bot/GuildEnvironment.fs +++ b/Bot/GuildEnvironment.fs @@ -19,6 +19,7 @@ let channelEventsHackerBattle = getId "CHANNEL_EVENTS_HACKER_BATTLE" let channelTraining = getId "CHANNEL_TRAINING" let channelArmory = getId "CHANNEL_ARMORY" let channelBattle = getId "CHANNEL_BATTLE" +let channelThievery = getId "CHANNEL_THIEVERY" let botIdHackerBattle = getId "BOT_HACKER_BATTLE" let botIdArmory = getId "BOT_ARMORY" let roleTrainee = getId "ROLE_TRAINEE" diff --git a/Bot/Thief.fs b/Bot/Thief.fs index 3efd4c5..1701d83 100644 --- a/Bot/Thief.fs +++ b/Bot/Thief.fs @@ -18,7 +18,7 @@ let VictimRecovery = TimeSpan.FromHours(12) type StealResult = | Success | WentToPrison - | TargetRanAway + | VictimRanAway let getRandomStealBtnLabels () = let rand = Random(Guid.NewGuid().GetHashCode()) @@ -75,7 +75,7 @@ let getResultEmbed targetName result = "Looks like you went to prison" , $"{targetName} knows Karate and elbowed you in the nose. While unconscious, they called the cops. You're on your way to prison now... " , "https://thumbs.dreamstime.com/b/vector-pixel-art-prisoner-isolated-cartoon-vector-pixel-art-prisoner-129807237.jpg" - | TargetRanAway -> + | VictimRanAway -> "You tried to snatch their money and they ran away" , $"{targetName} got nervous seeing a shadowy figure and ran in the opposite direction" , "https://i.imgur.com/NLHMvVK.jpg" @@ -140,28 +140,32 @@ let handleSteal (ctx : IDiscordContext) = let rand = Random(Guid.NewGuid().GetHashCode()) let result = chance >= rand.NextDouble() , rand.Next(0,3) = 0 + let dp = { DiscordPlayer.Id = targetId ; DiscordPlayer.Name = targetName } + let stealAction = { ActionId = StealActionId ; Type = Attack { AttackResult.Result = false ; AttackResult.Target = dp } ; Timestamp = DateTime.UtcNow } + // TODO: Send event to the hall of privacy match result with | true , _ -> let xp = 15 let embed = getResultEmbed targetName Success embed.AddField("$GBT Stolen", string prize) |> ignore - embed.AddField("XP Gained", $"{xp}+") |> ignore + embed.AddField("XP Gained", $"{xp}") |> ignore do! Messaging.sendFollowUpEmbed ctx (embed.Build()) match! DbService.tryFindPlayer targetId with | Some t -> let action = { ActionId = VictimDefenseActionId ; Type = Defense ; Timestamp = DateTime.UtcNow } do! DbService.updatePlayer { t with Bank = max (t.Bank - prize) 0 ; Actions = Array.append [| action |] t.Actions } | None -> () - let dp = { DiscordPlayer.Id = targetId ; DiscordPlayer.Name = targetName } let action = { ActionId = StealActionId ; Type = Attack { AttackResult.Result = true ; AttackResult.Target = dp } ; Timestamp = DateTime.UtcNow } do! DbService.updatePlayer { player with Bank = player.Bank + prize ; XP = player.XP + xp ; Actions = Array.append [| action |] player.Actions } | false , false -> - let embed = getResultEmbed targetName TargetRanAway + let embed = getResultEmbed targetName VictimRanAway + do! DbService.updatePlayer { player with Actions = Array.append [| stealAction |] player.Actions } do! Messaging.sendFollowUpEmbed ctx (embed.Build()) | false , true -> let embed = getResultEmbed targetName WentToPrison + do! DbService.updatePlayer { player with Actions = Array.append [| stealAction |] player.Actions } do! Messaging.sendFollowUpEmbed ctx (embed.Build()) - do! Async.Sleep 5000 + do! Async.Sleep 2000 let role = ctx.GetGuild().GetRole(GuildEnvironment.rolePrisoner) do! ctx.GetDiscordMember().GrantRoleAsync(role) |> Async.AwaitTask } @@ -185,16 +189,16 @@ type StealGame() = let enforceChannel (ctx : IDiscordContext) (storeFn : IDiscordContext -> Task) = match ctx.GetChannel().Id with - | id when id = GuildEnvironment.channelArmory -> storeFn ctx + | id when id = GuildEnvironment.channelThievery -> storeFn ctx | _ -> task { - let msg = $"You must go to <#{GuildEnvironment.channelArmory}> channel to buy or sell weapons" + let msg = $"You must go to <#{GuildEnvironment.channelThievery}> channel if you want to mug some unsuspecting doofs" do! Messaging.sendSimpleResponse ctx msg } [] member this.Steal (ctx : InteractionContext, [] target : DiscordUser) = -// enforceChannel (DiscordInteractionContext ctx) (steal target) - steal target (DiscordInteractionContext ctx) + enforceChannel (DiscordInteractionContext ctx) (steal target) +// steal target (DiscordInteractionContext ctx)