Remove shield if they sell it
This commit is contained in:
parent
52e263bb90
commit
34d5d9c42a
12
Bot/Store.fs
12
Bot/Store.fs
@ -60,18 +60,22 @@ let handleBuyItem (ctx : IDiscordContext) itemId =
|
||||
let handleSell (ctx : IDiscordContext) itemId =
|
||||
Game.executePlayerAction ctx (fun player -> async {
|
||||
let item = Armory.getItem itemId
|
||||
do! player
|
||||
do!
|
||||
player
|
||||
|> checkSoldItemAlready item
|
||||
|> handleResultWithResponse ctx (fun player -> async {
|
||||
let updatedPlayer = {
|
||||
player with
|
||||
Bank = player.Bank + item.Price
|
||||
Inventory = player.Inventory |> Array.filter (fun i -> i.Id <> itemId)
|
||||
Events = player.Events |> Array.filter (fun e -> match e.Type with Shielding _ -> true | _ -> false)
|
||||
}
|
||||
do! DbService.updatePlayer GuildEnvironment.pgDb updatedPlayer
|
||||
do!
|
||||
[ DbService.updatePlayer GuildEnvironment.pgDb updatedPlayer |> Async.Ignore
|
||||
DbService.removeShieldEvent GuildEnvironment.pgDb updatedPlayer.DiscordId itemId |> Async.Ignore
|
||||
sendFollowUpMessage ctx $"Sold {item.Type} {item.Name} for {item.Price}! Current Balance: {updatedPlayer.Bank}" ]
|
||||
|> Async.Parallel
|
||||
|> Async.Ignore
|
||||
do! sendFollowUpMessage ctx $"Sold {item.Type} {item.Name} for {item.Price}! Current Balance: {updatedPlayer.Bank}"
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -122,6 +122,19 @@ let checkHasAchievement connStr (did : uint64) (achievement : string) = async {
|
||||
return List.isEmpty result |> not
|
||||
}
|
||||
|
||||
let removeShieldEvent connStr (did : uint64) shieldId =
|
||||
connStr
|
||||
|> Sql.connect
|
||||
|> Sql.parameters
|
||||
[ ( "did" , Sql.string (string did) )
|
||||
( "shield_id", Sql.int shieldId ) ]
|
||||
|> Sql.query """
|
||||
WITH usr AS (SELECT id FROM "user" WHERE discord_id = @did)
|
||||
DELETE FROM player_event USING usr WHERE user_id = usr.id and event_type = 'Shielding' and item_id = @shield_id
|
||||
"""
|
||||
|> Sql.executeNonQueryAsync
|
||||
|> Async.AwaitTask
|
||||
|
||||
let addPlayerEvent connStr (did : uint64) (playerEvent : PlayerEvent) =
|
||||
let sqlParams , query =
|
||||
match playerEvent.Type with
|
||||
|
Loading…
x
Reference in New Issue
Block a user