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."
 | 
					           Error $"Whoa there you clepto, wait at least another {minutes} before you try stealing again."
 | 
				
			||||||
       | None -> Ok attacker
 | 
					       | 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 calculateWinPercentage amountRequested bank attackerStrength defenderStrength =
 | 
				
			||||||
    let powerPercentage = float (attackerStrength - defenderStrength) * 0.005 + 0.1
 | 
					    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) =
 | 
					let steal target amount (ctx : IDiscordContext) =
 | 
				
			||||||
    Game.executePlayerActionWithTarget target ctx (fun thief victim -> async { do!
 | 
					    Game.executePlayerActionWithTarget target ctx (fun thief victim -> async { do!
 | 
				
			||||||
//        thief
 | 
					        thief
 | 
				
			||||||
 | 
					        |> checkPlayerIsAttackingThemselves victim
 | 
				
			||||||
//        |> checkVictimStealingCooldown victim
 | 
					//        |> checkVictimStealingCooldown victim
 | 
				
			||||||
        Ok thief
 | 
					 | 
				
			||||||
        |> handleResultWithResponse ctx (fun _ -> async {
 | 
					        |> handleResultWithResponse ctx (fun _ -> async {
 | 
				
			||||||
            let cappedPrize , winPercentage , wasCapped =
 | 
					            let cappedPrize , winPercentage , wasCapped =
 | 
				
			||||||
                calculateWinPercentage amount (int victim.Bank) thief.Traits.Strength victim.Traits.Strength
 | 
					                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.updatePlayer GuildEnvironment.pgDb { thief with Bank = thief.Bank + prize } |> Async.Ignore
 | 
				
			||||||
            do! DbService.addPlayerEvent GuildEnvironment.pgDb victim.DiscordId stole |> 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 ->
 | 
					        | false ->
 | 
				
			||||||
            let embed = getResultEmbed' WentToPrison
 | 
					            let embed = getResultEmbed' WentToPrison
 | 
				
			||||||
            let imprisoned = {
 | 
					            let imprisoned = {
 | 
				
			||||||
@ -188,6 +198,12 @@ let handleSteal (ctx : IDiscordContext) =
 | 
				
			|||||||
            do! Async.Sleep 2000
 | 
					            do! Async.Sleep 2000
 | 
				
			||||||
            let role = ctx.GetGuild().GetRole(GuildEnvironment.rolePrisoner)
 | 
					            let role = ctx.GetGuild().GetRole(GuildEnvironment.rolePrisoner)
 | 
				
			||||||
            do! ctx.GetDiscordMember().GrantRoleAsync(role) |> Async.AwaitTask
 | 
					            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
 | 
					    if answer = "yes" then
 | 
				
			||||||
        let targetId = uint64 tokens.[2]
 | 
					        let targetId = uint64 tokens.[2]
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user