54 lines
1.5 KiB
Forth
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)
|
|
|