2022-02-27 15:12:30 +07:00

54 lines
1.5 KiB
Forth

module Degenz.XP
open DSharpPlus
open DSharpPlus.Entities
type RewardType =
| Currency of int<GBT>
// | RandomItem of itemType : ItemType * amount : int
| SpecialItem of id : int
[<Literal>]
let ToroRojo = 13
[<Literal>]
let AnabolicCycle = 14
let levels = [|
50
100
160
250
|]
let getLevel totalXp = levels |> Array.toList |> List.foldi (fun i acc elem -> if totalXp < elem then acc else i + 1) 0
let RewardTable = [|
[| Currency 100<GBT> ; SpecialItem ToroRojo |]
[| Currency 150<GBT> ; SpecialItem AnabolicCycle |]
[| Currency 200<GBT> ; SpecialItem ToroRojo |]
[| Currency 100<GBT> ; SpecialItem AnabolicCycle |]
|]
let getRewardsEmbed level (player : PlayerData) =
let buttons =
[ DiscordButtonComponent(ButtonStyle.Success, $"Reward-levelup-{level}", "Claim") ]
|> Seq.cast<DiscordComponent>
let header =
DiscordEmbedBuilder()
.WithTitle($"Level Up")
.WithDescription($"You reached Level {level}")
.WithImageUrl("https://thumbs.dreamstime.com/z/pixel-art-design-outdoor-landscape-background-colorful-arcade-screen-game-banner-button-level-up-concept-retro-style-180858223.jpg")
let footer =
DiscordEmbedBuilder()
.WithTitle("Rewards")
.AddField("$GBT", $"{RewardTable.[level].[0]}", true)
.AddField("Items", $"{RewardTable.[level].[1]}", true)
DiscordFollowupMessageBuilder()
.AddEmbeds([ header ; footer ] |> List.map (fun e -> e.Build()))
.AddComponents(buttons)
.AsEphemeral(true)