Fix issues where people don't have money and improve hack/shield embeds
This commit is contained in:
		
							parent
							
								
									658c57f97b
								
							
						
					
					
						commit
						ad17e139c6
					
				| @ -36,6 +36,7 @@ let getShieldGif = function | |||||||
| let constructButtons (actionId: string) (buttonInfo : string) (player: PlayerData) itemType ignoreCooldown = | let constructButtons (actionId: string) (buttonInfo : string) (player: PlayerData) itemType ignoreCooldown = | ||||||
|     player |     player | ||||||
|     |> Player.getItems itemType |     |> Player.getItems itemType | ||||||
|  |     |> Array.sortBy (fun i -> i.Power) | ||||||
|     |> Array.map (fun item -> |     |> Array.map (fun item -> | ||||||
|         let action = |         let action = | ||||||
|             player.Events |             player.Events | ||||||
| @ -58,13 +59,17 @@ let pickDefense actionId player isTrainer = | |||||||
| 
 | 
 | ||||||
|     let embed = |     let embed = | ||||||
|         DiscordEmbedBuilder() |         DiscordEmbedBuilder() | ||||||
|             .WithTitle("Shields") |             .WithTitle("Shield Defense") | ||||||
|             .WithDescription("Pick a shield to protect yourself from hacks") |             .WithDescription("Pick a shield to protect yourself from hacks") | ||||||
|             .WithImageUrl(shieldGif) | 
 | ||||||
|  |     for s in Player.getShields player |> Array.sortBy (fun i -> i.Power) do | ||||||
|  |         let hours = TimeSpan.FromMinutes(int s.Cooldown).TotalHours | ||||||
|  |         let against = Game.getGoodAgainst(s.Class) |> snd | ||||||
|  |         embed.AddField(s.Name, $"Active {hours} hours\nDefeats {against}", true) |> ignore | ||||||
| 
 | 
 | ||||||
|     DiscordFollowupMessageBuilder() |     DiscordFollowupMessageBuilder() | ||||||
|         .AddComponents(buttons) |         .AddComponents(buttons) | ||||||
|         .AddEmbed(embed) |         .AddEmbeds([ DiscordEmbedBuilder().WithImageUrl(shieldGif).Build() ; embed.Build() ]) | ||||||
|         .AsEphemeral(true) |         .AsEphemeral(true) | ||||||
| 
 | 
 | ||||||
| let pickHack actionId attacker defender isTrainer = | let pickHack actionId attacker defender isTrainer = | ||||||
| @ -72,13 +77,16 @@ let pickHack actionId attacker defender isTrainer = | |||||||
| 
 | 
 | ||||||
|     let embed = |     let embed = | ||||||
|         DiscordEmbedBuilder() |         DiscordEmbedBuilder() | ||||||
|             .WithTitle("Hacks") |             .WithTitle("Hack Attack") | ||||||
|             .WithDescription($"Pick the hack that you want to use against {defender.Name}") |             .WithDescription($"{defender.Name} has **{defender.Bank} $GBT** we can take from them. Pick the hack you want to use.") | ||||||
|             .WithImageUrl(hackGif) | 
 | ||||||
|  |     for h in Player.getHacks attacker |> Array.sortBy (fun i -> i.Power) do | ||||||
|  |         let amount = if h.Power > int defender.Bank then int defender.Bank else h.Power | ||||||
|  |         embed.AddField(h.Name, $"Extract {amount}", true) |> ignore | ||||||
| 
 | 
 | ||||||
|     DiscordFollowupMessageBuilder() |     DiscordFollowupMessageBuilder() | ||||||
|         .AddComponents(buttons) |         .AddComponents(buttons) | ||||||
|         .AddEmbed(embed.Build()) |         .AddEmbeds([ DiscordEmbedBuilder().WithImageUrl(hackGif).Build() ; embed.Build() ]) | ||||||
|         .AsEphemeral true |         .AsEphemeral true | ||||||
| 
 | 
 | ||||||
| let responseSuccessfulHack earnedMoney (targetId : uint64) amountTaken (hack : Item) = | let responseSuccessfulHack earnedMoney (targetId : uint64) amountTaken (hack : Item) = | ||||||
|  | |||||||
| @ -21,8 +21,8 @@ module Game = | |||||||
| 
 | 
 | ||||||
|     let getGoodAgainst = function |     let getGoodAgainst = function | ||||||
|         | 0     -> ( ShieldId.Firewall   , HackId.Virus        ) |         | 0     -> ( ShieldId.Firewall   , HackId.Virus        ) | ||||||
|         | 1     -> ( ShieldId.Cypher     , HackId.RemoteAccess ) |         | 1     -> ( ShieldId.Encryption , HackId.RemoteAccess ) | ||||||
|         | _     -> ( ShieldId.Encryption , HackId.Worm         ) |         | _     -> ( ShieldId.Cypher     , HackId.Worm         ) | ||||||
| 
 | 
 | ||||||
|     let executePlayerAction (ctx : IDiscordContext) (dispatch : PlayerData -> Async<unit>) = |     let executePlayerAction (ctx : IDiscordContext) (dispatch : PlayerData -> Async<unit>) = | ||||||
|         async { |         async { | ||||||
|  | |||||||
| @ -62,6 +62,11 @@ let checkPlayerHasShieldSlotsAvailable (shield : Item) player = | |||||||
|         Error $"You are only allowed three shields at a time. Wait {cooldown} to add another shield" |         Error $"You are only allowed three shields at a time. Wait {cooldown} to add another shield" | ||||||
|     | false -> Ok updatedPlayer |     | false -> Ok updatedPlayer | ||||||
| 
 | 
 | ||||||
|  | let checkTargetHasFunds target player = | ||||||
|  |     match target.Bank = 0<GBT> with | ||||||
|  |     | true -> Error $"Looks like the poor bastard has no $GBT... pick a different victim." | ||||||
|  |     | false -> Ok player | ||||||
|  | 
 | ||||||
| let calculateDamage (hack : Item) (shield : Item) = | let calculateDamage (hack : Item) (shield : Item) = | ||||||
|     if hack.Class = shield.Class |     if hack.Class = shield.Class | ||||||
|         then Weak |         then Weak | ||||||
|  | |||||||
| @ -80,6 +80,11 @@ let checkVictimStealingCooldown defender attacker = | |||||||
|            Error $"{defender.Name} was robbed recently so they won't be going out for at least another {hours}." |            Error $"{defender.Name} was robbed recently so they won't be going out for at least another {hours}." | ||||||
|        | None -> Ok attacker |        | None -> Ok attacker | ||||||
| 
 | 
 | ||||||
|  | let checkTargetHasFunds target player = | ||||||
|  |     match target.Bank = 0<GBT> with | ||||||
|  |     | true -> Error $"Looks like the poor bastard has no $GBT... pick a different victim." | ||||||
|  |     | false -> Ok player | ||||||
|  | 
 | ||||||
| let checkThiefCooldown attacker = | let checkThiefCooldown attacker = | ||||||
|     attacker |     attacker | ||||||
|     |> Player.removeExpiredActions |     |> Player.removeExpiredActions | ||||||
| @ -211,7 +216,8 @@ let handleSteal (ctx : IDiscordContext) = | |||||||
|             do! attacker |             do! attacker | ||||||
|                 |> Player.removeExpiredActions |                 |> Player.removeExpiredActions | ||||||
| //                |> checkVictimStealingCooldown defender | //                |> checkVictimStealingCooldown defender | ||||||
|                 |>  checkThiefCooldown |                 |> checkThiefCooldown | ||||||
|  |                 >>= checkTargetHasFunds defender | ||||||
|                 |> handleResultWithResponse ctx (handleYes defender ) |                 |> handleResultWithResponse ctx (handleYes defender ) | ||||||
|         }) |         }) | ||||||
|     else |     else | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user