Send messages and check for same player
This commit is contained in:
parent
902d96d877
commit
658c57f97b
20
Bot/Thief.fs
20
Bot/Thief.fs
@ -92,6 +92,10 @@ let checkThiefCooldown attacker =
|
||||
Error $"Whoa there you clepto, wait at least another {minutes} before you try stealing again."
|
||||
| None -> Ok attacker
|
||||
|
||||
let checkPlayerIsAttackingThemselves defender attacker =
|
||||
match attacker.DiscordId = defender.DiscordId with
|
||||
| true -> Error "You think you're clever? You can't steal your own money, you dingleberry."
|
||||
| false -> Ok attacker
|
||||
|
||||
let calculateWinPercentage amountRequested bank attackerStrength defenderStrength =
|
||||
let powerPercentage = float (attackerStrength - defenderStrength) * 0.005 + 0.1
|
||||
@ -106,9 +110,9 @@ let calculateWinPercentage amountRequested bank attackerStrength defenderStrengt
|
||||
|
||||
let steal target amount (ctx : IDiscordContext) =
|
||||
Game.executePlayerActionWithTarget target ctx (fun thief victim -> async { do!
|
||||
// thief
|
||||
thief
|
||||
|> checkPlayerIsAttackingThemselves victim
|
||||
// |> checkVictimStealingCooldown victim
|
||||
Ok thief
|
||||
|> handleResultWithResponse ctx (fun _ -> async {
|
||||
let cappedPrize , winPercentage , wasCapped =
|
||||
calculateWinPercentage amount (int victim.Bank) thief.Traits.Strength victim.Traits.Strength
|
||||
@ -176,6 +180,12 @@ let handleSteal (ctx : IDiscordContext) =
|
||||
}
|
||||
do! DbService.updatePlayer GuildEnvironment.pgDb { thief with Bank = thief.Bank + prize } |> Async.Ignore
|
||||
do! DbService.addPlayerEvent GuildEnvironment.pgDb victim.DiscordId stole |> Async.Ignore
|
||||
let builder = DiscordMessageBuilder()
|
||||
builder.WithContent($"{thief.Name} stole {prize} from <@{victim.DiscordId}>!") |> ignore
|
||||
let channel = ctx.GetGuild().GetChannel(GuildEnvironment.channelEventsHackerBattle)
|
||||
do! channel.SendMessageAsync(builder)
|
||||
|> Async.AwaitTask
|
||||
|> Async.Ignore
|
||||
| false ->
|
||||
let embed = getResultEmbed' WentToPrison
|
||||
let imprisoned = {
|
||||
@ -188,6 +198,12 @@ let handleSteal (ctx : IDiscordContext) =
|
||||
do! Async.Sleep 2000
|
||||
let role = ctx.GetGuild().GetRole(GuildEnvironment.rolePrisoner)
|
||||
do! ctx.GetDiscordMember().GrantRoleAsync(role) |> Async.AwaitTask
|
||||
let builder = DiscordMessageBuilder()
|
||||
builder.WithContent($"{thief.Name} went to prison for trying to steal from {victim.Name}!") |> ignore
|
||||
let channel = ctx.GetGuild().GetChannel(GuildEnvironment.channelEventsHackerBattle)
|
||||
do! channel.SendMessageAsync(builder)
|
||||
|> Async.AwaitTask
|
||||
|> Async.Ignore
|
||||
}
|
||||
if answer = "yes" then
|
||||
let targetId = uint64 tokens.[2]
|
||||
|
Loading…
x
Reference in New Issue
Block a user