Embeds for bonus
This commit is contained in:
parent
f555b2f95a
commit
56525f2ac2
@ -49,7 +49,7 @@ let pickDefense actionId player isTrainer =
|
|||||||
.AddEmbeds([ DiscordEmbedBuilder().WithImageUrl(shieldGif).Build() ; embed.Build() ])
|
.AddEmbeds([ DiscordEmbedBuilder().WithImageUrl(shieldGif).Build() ; embed.Build() ])
|
||||||
.AsEphemeral(true)
|
.AsEphemeral(true)
|
||||||
|
|
||||||
let pickHack actionId attacker defender isTrainer =
|
let pickHack actionId attacker defender bonus isTrainer =
|
||||||
let hackItems =
|
let hackItems =
|
||||||
attacker.Inventory
|
attacker.Inventory
|
||||||
|> Inventory.getItemsByType ItemType.Hack
|
|> Inventory.getItemsByType ItemType.Hack
|
||||||
@ -57,10 +57,11 @@ let pickHack actionId attacker defender isTrainer =
|
|||||||
let buttons = constructButtons actionId $"{defender.DiscordId}-{defender.Name}" attacker hackItems isTrainer
|
let buttons = constructButtons actionId $"{defender.DiscordId}-{defender.Name}" attacker hackItems isTrainer
|
||||||
|
|
||||||
let stealMsg = if not isTrainer then $"{defender.Name} has **{defender.Bank} $GBT** we can take from them. " else ""
|
let stealMsg = if not isTrainer then $"{defender.Name} has **{defender.Bank} $GBT** we can take from them. " else ""
|
||||||
|
let strengthMsg = $"You have `{attacker.Stats.Strength.Amount}` strength, while they have `{defender.Stats.Strength.Amount}`\n**Bonus:** `{bonus} 💰$GBT`"
|
||||||
let embed =
|
let embed =
|
||||||
DiscordEmbedBuilder()
|
DiscordEmbedBuilder()
|
||||||
.WithTitle("Hack Attack")
|
.WithTitle("Hack Attack")
|
||||||
.WithDescription($"{stealMsg}Pick the hack you want to use.")
|
.WithDescription($"{stealMsg}\n\n{strengthMsg}\n\nPick the hack you want to use.")
|
||||||
|
|
||||||
if not isTrainer then
|
if not isTrainer then
|
||||||
for hack in Inventory.getHacks attacker.Inventory do
|
for hack in Inventory.getHacks attacker.Inventory do
|
||||||
@ -72,14 +73,23 @@ let pickHack actionId attacker defender isTrainer =
|
|||||||
.AddEmbeds([ DiscordEmbedBuilder().WithImageUrl(hackGif).Build() ; embed.Build() ])
|
.AddEmbeds([ DiscordEmbedBuilder().WithImageUrl(hackGif).Build() ; embed.Build() ])
|
||||||
.AsEphemeral true
|
.AsEphemeral true
|
||||||
|
|
||||||
let responseSuccessfulHack earnedMoney (targetId : uint64) amountTaken (hack : HackItem) =
|
let responseSuccessfulHack (hacker : PlayerData) (target : PlayerData) totalTaken bonus (hack : HackItem) =
|
||||||
|
let earnedMoney = totalTaken > 0<GBT>
|
||||||
let embed =
|
let embed =
|
||||||
DiscordEmbedBuilder()
|
DiscordEmbedBuilder()
|
||||||
.WithImageUrl(hack.ImageUrl)
|
.WithImageUrl(hack.ImageUrl)
|
||||||
.WithTitle("Hack Attack")
|
.WithTitle("Hack Attack")
|
||||||
.WithDescription($"You successfully hacked <@{targetId}> using {hack.Name}"
|
.WithDescription($"You successfully hacked <@{target.DiscordId}> using {hack.Name}"
|
||||||
+ (if earnedMoney then $", and took {amountTaken} 💰$GBT from them!" else "!"))
|
+ (if earnedMoney then $", and took {totalTaken} 💰$GBT from them!" else "!"))
|
||||||
|
|
||||||
|
embed.AddField("Prize", $"`{totalTaken} 💰$GBT`", true) |> ignore
|
||||||
|
let bonusMsg =
|
||||||
|
if bonus > 0<GBT>
|
||||||
|
then $"{hacker.Stats.Strength.Amount} **VS** {target.Stats.Strength.Amount} -> `+{bonus} $GBT`"
|
||||||
|
else "None"
|
||||||
|
embed.AddField("Strength Bonus", bonusMsg, true) |> ignore
|
||||||
|
|
||||||
|
embed.AddField("New $GBT Balance", $"`💰` {hacker.Bank} ⋙ `💰` {hacker.Bank + totalTaken} `(+{totalTaken} $GBT)`") |> ignore
|
||||||
DiscordFollowupMessageBuilder()
|
DiscordFollowupMessageBuilder()
|
||||||
.AddEmbed(embed.Build())
|
.AddEmbed(embed.Build())
|
||||||
.AsEphemeral(true)
|
.AsEphemeral(true)
|
||||||
|
@ -69,6 +69,14 @@ let checkTargetHasFunds target player =
|
|||||||
| true -> Error $"Looks like the poor bastard has no $GBT... pick a different victim."
|
| true -> Error $"Looks like the poor bastard has no $GBT... pick a different victim."
|
||||||
| false -> Ok player
|
| false -> Ok player
|
||||||
|
|
||||||
|
let strengthBonus attacker defender =
|
||||||
|
attacker - defender
|
||||||
|
|> max 0
|
||||||
|
|> float
|
||||||
|
|> (*) 0.01
|
||||||
|
|> (*) 200.0 // Bonus
|
||||||
|
|> int
|
||||||
|
|
||||||
let runHackerBattle defender (hack : HackItem) =
|
let runHackerBattle defender (hack : HackItem) =
|
||||||
defender
|
defender
|
||||||
|> Player.removeExpiredActions
|
|> Player.removeExpiredActions
|
||||||
@ -102,19 +110,13 @@ let updateCombatants successfulHack (attacker : PlayerData) (defender : PlayerDa
|
|||||||
|> Async.Ignore
|
|> Async.Ignore
|
||||||
|
|
||||||
let successfulHack (ctx : IDiscordContext) attacker defender (hack : HackItem) =
|
let successfulHack (ctx : IDiscordContext) attacker defender (hack : HackItem) =
|
||||||
let strengthBonus attacker defender =
|
|
||||||
attacker - defender
|
|
||||||
|> max 0
|
|
||||||
|> float
|
|
||||||
|> (*) 0.01
|
|
||||||
|> (*) 200.0 // Bonus
|
|
||||||
|> int
|
|
||||||
async {
|
async {
|
||||||
let bonus = strengthBonus attacker.Stats.Strength.Amount defender.Stats.Strength.Amount
|
let bonus = strengthBonus attacker.Stats.Strength.Amount defender.Stats.Strength.Amount |> (*) 1<GBT>
|
||||||
let prizeAmount = if hack.Power + bonus < int defender.Bank then hack.Power + bonus else int defender.Bank
|
let basePrize = hack.Power * 1<GBT>
|
||||||
do! updateCombatants true attacker defender hack (prizeAmount * 1<GBT>)
|
let prizeAmount = if basePrize + bonus < defender.Bank then basePrize + bonus else defender.Bank
|
||||||
|
do! updateCombatants true attacker defender hack prizeAmount
|
||||||
|
|
||||||
let embed = Embeds.responseSuccessfulHack true defender.DiscordId prizeAmount hack
|
let embed = Embeds.responseSuccessfulHack attacker defender prizeAmount bonus hack
|
||||||
do! ctx.FollowUp embed |> Async.AwaitTask
|
do! ctx.FollowUp embed |> Async.AwaitTask
|
||||||
|
|
||||||
let builder = Embeds.eventSuccessfulHack ctx defender prizeAmount
|
let builder = Embeds.eventSuccessfulHack ctx defender prizeAmount
|
||||||
@ -150,7 +152,8 @@ let hack (target : DiscordUser) (ctx : IDiscordContext) =
|
|||||||
>>= checkPlayerIsAttackingThemselves defender
|
>>= checkPlayerIsAttackingThemselves defender
|
||||||
|> function
|
|> function
|
||||||
| Ok atkr -> async {
|
| Ok atkr -> async {
|
||||||
let embed = Embeds.pickHack "Attack" atkr defender false
|
let bonus = strengthBonus attacker.Stats.Strength.Amount defender.Stats.Strength.Amount
|
||||||
|
let embed = Embeds.pickHack "Attack" atkr defender bonus false
|
||||||
do! ctx.FollowUp(embed) |> Async.AwaitTask
|
do! ctx.FollowUp(embed) |> Async.AwaitTask
|
||||||
// TODO: Add a call when it's an error with the error type, must include an error code
|
// TODO: Add a call when it's an error with the error type, must include an error code
|
||||||
do! Analytics.hackCommand (ctx.GetDiscordMember())
|
do! Analytics.hackCommand (ctx.GetDiscordMember())
|
||||||
|
@ -126,7 +126,7 @@ let hack (target : DiscordUser) (ctx : IDiscordContext) =
|
|||||||
| true ->
|
| true ->
|
||||||
let player = { PlayerData.empty with Inventory = [ hackItem ] }
|
let player = { PlayerData.empty with Inventory = [ hackItem ] }
|
||||||
let bot = { PlayerData.empty with DiscordId = Sensei.Id ; Name = Sensei.Name }
|
let bot = { PlayerData.empty with DiscordId = Sensei.Id ; Name = Sensei.Name }
|
||||||
let embed = Embeds.pickHack "Trainer-4" player bot true
|
let embed = Embeds.pickHack "Trainer-4" player bot 0 true
|
||||||
|
|
||||||
do! ctx.FollowUp(embed) |> Async.AwaitTask
|
do! ctx.FollowUp(embed) |> Async.AwaitTask
|
||||||
| false ->
|
| false ->
|
||||||
@ -143,7 +143,8 @@ let handleHack (ctx : IDiscordContext) =
|
|||||||
PlayerInteractions.executePlayerAction ctx (fun player -> async {
|
PlayerInteractions.executePlayerAction ctx (fun player -> async {
|
||||||
let sendMessage' = sendFollowUpMessage ctx
|
let sendMessage' = sendFollowUpMessage ctx
|
||||||
do! Async.Sleep 1000
|
do! Async.Sleep 1000
|
||||||
let embed = Embeds.responseSuccessfulHack false Sensei.Id defaultHack.Power defaultHack
|
let bot = { PlayerData.empty with DiscordId = Sensei.Id ; Name = Sensei.Name }
|
||||||
|
let embed = Embeds.responseSuccessfulHack player bot (defaultHack.Power * 1<GBT>) 0<GBT> defaultHack
|
||||||
do! ctx.FollowUp(embed) |> Async.AwaitTask
|
do! ctx.FollowUp(embed) |> Async.AwaitTask
|
||||||
do! Async.Sleep 1000
|
do! Async.Sleep 1000
|
||||||
do! sendMessage'
|
do! sendMessage'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user