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 = | ||||
|     player | ||||
|     |> Player.getItems itemType | ||||
|     |> Array.sortBy (fun i -> i.Power) | ||||
|     |> Array.map (fun item -> | ||||
|         let action = | ||||
|             player.Events | ||||
| @ -58,13 +59,17 @@ let pickDefense actionId player isTrainer = | ||||
| 
 | ||||
|     let embed = | ||||
|         DiscordEmbedBuilder() | ||||
|             .WithTitle("Shields") | ||||
|             .WithTitle("Shield Defense") | ||||
|             .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() | ||||
|         .AddComponents(buttons) | ||||
|         .AddEmbed(embed) | ||||
|         .AddEmbeds([ DiscordEmbedBuilder().WithImageUrl(shieldGif).Build() ; embed.Build() ]) | ||||
|         .AsEphemeral(true) | ||||
| 
 | ||||
| let pickHack actionId attacker defender isTrainer = | ||||
| @ -72,13 +77,16 @@ let pickHack actionId attacker defender isTrainer = | ||||
| 
 | ||||
|     let embed = | ||||
|         DiscordEmbedBuilder() | ||||
|             .WithTitle("Hacks") | ||||
|             .WithDescription($"Pick the hack that you want to use against {defender.Name}") | ||||
|             .WithImageUrl(hackGif) | ||||
|             .WithTitle("Hack Attack") | ||||
|             .WithDescription($"{defender.Name} has **{defender.Bank} $GBT** we can take from them. Pick the hack you want to use.") | ||||
| 
 | ||||
|     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() | ||||
|         .AddComponents(buttons) | ||||
|         .AddEmbed(embed.Build()) | ||||
|         .AddEmbeds([ DiscordEmbedBuilder().WithImageUrl(hackGif).Build() ; embed.Build() ]) | ||||
|         .AsEphemeral true | ||||
| 
 | ||||
| let responseSuccessfulHack earnedMoney (targetId : uint64) amountTaken (hack : Item) = | ||||
|  | ||||
| @ -21,8 +21,8 @@ module Game = | ||||
| 
 | ||||
|     let getGoodAgainst = function | ||||
|         | 0     -> ( ShieldId.Firewall   , HackId.Virus        ) | ||||
|         | 1     -> ( ShieldId.Cypher     , HackId.RemoteAccess ) | ||||
|         | _     -> ( ShieldId.Encryption , HackId.Worm         ) | ||||
|         | 1     -> ( ShieldId.Encryption , HackId.RemoteAccess ) | ||||
|         | _     -> ( ShieldId.Cypher     , HackId.Worm         ) | ||||
| 
 | ||||
|     let executePlayerAction (ctx : IDiscordContext) (dispatch : PlayerData -> Async<unit>) = | ||||
|         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" | ||||
|     | 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) = | ||||
|     if hack.Class = shield.Class | ||||
|         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}." | ||||
|        | 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 = | ||||
|     attacker | ||||
|     |> Player.removeExpiredActions | ||||
| @ -211,7 +216,8 @@ let handleSteal (ctx : IDiscordContext) = | ||||
|             do! attacker | ||||
|                 |> Player.removeExpiredActions | ||||
| //                |> checkVictimStealingCooldown defender | ||||
|                 |>  checkThiefCooldown | ||||
|                 |> checkThiefCooldown | ||||
|                 >>= checkTargetHasFunds defender | ||||
|                 |> handleResultWithResponse ctx (handleYes defender ) | ||||
|         }) | ||||
|     else | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user