Remove shield if they sell it
This commit is contained in:
		
							parent
							
								
									52e263bb90
								
							
						
					
					
						commit
						34d5d9c42a
					
				
							
								
								
									
										28
									
								
								Bot/Store.fs
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								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!
 | 
				
			||||||
            |> checkSoldItemAlready item
 | 
					        player
 | 
				
			||||||
            |> handleResultWithResponse ctx (fun player -> async {
 | 
					        |> checkSoldItemAlready item
 | 
				
			||||||
                let updatedPlayer = {
 | 
					        |> handleResultWithResponse ctx (fun player -> async {
 | 
				
			||||||
                    player with
 | 
					            let updatedPlayer = {
 | 
				
			||||||
                        Bank = player.Bank + item.Price
 | 
					                player with
 | 
				
			||||||
                        Inventory = player.Inventory |> Array.filter (fun i -> i.Id <> itemId)
 | 
					                    Bank = player.Bank + item.Price
 | 
				
			||||||
                        Events = player.Events |> Array.filter (fun e -> match e.Type with Shielding _ -> true | _ -> false)
 | 
					                    Inventory = player.Inventory |> Array.filter (fun i -> i.Id <> itemId)
 | 
				
			||||||
                }
 | 
					            }
 | 
				
			||||||
                do! DbService.updatePlayer GuildEnvironment.pgDb updatedPlayer
 | 
					            do!
 | 
				
			||||||
                    |> Async.Ignore
 | 
					            [ DbService.updatePlayer GuildEnvironment.pgDb updatedPlayer |> Async.Ignore
 | 
				
			||||||
                do! sendFollowUpMessage ctx $"Sold {item.Type} {item.Name} for {item.Price}! Current Balance: {updatedPlayer.Bank}"
 | 
					              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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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