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 =
|
let handleSell (ctx : IDiscordContext) itemId =
|
||||||
Game.executePlayerAction ctx (fun player -> async {
|
Game.executePlayerAction ctx (fun player -> async {
|
||||||
let item = Armory.getItem itemId
|
let item = Armory.getItem itemId
|
||||||
do! player
|
do!
|
||||||
|
player
|
||||||
|> checkSoldItemAlready item
|
|> checkSoldItemAlready item
|
||||||
|> handleResultWithResponse ctx (fun player -> async {
|
|> handleResultWithResponse ctx (fun player -> async {
|
||||||
let updatedPlayer = {
|
let updatedPlayer = {
|
||||||
player with
|
player with
|
||||||
Bank = player.Bank + item.Price
|
Bank = player.Bank + item.Price
|
||||||
Inventory = player.Inventory |> Array.filter (fun i -> i.Id <> itemId)
|
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
|
|> 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
|
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 addPlayerEvent connStr (did : uint64) (playerEvent : PlayerEvent) =
|
||||||
let sqlParams , query =
|
let sqlParams , query =
|
||||||
match playerEvent.Type with
|
match playerEvent.Type with
|
||||||
|
Loading…
x
Reference in New Issue
Block a user