1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| using BaseLib.Abstracts; using MegaCrit.Sts2.Core.Commands; using MegaCrit.Sts2.Core.Entities.Gold; using MegaCrit.Sts2.Core.Events; using MegaCrit.Sts2.Core.GameActions.Multiplayer; using MegaCrit.Sts2.Core.Localization.DynamicVars; using MegaCrit.Sts2.Core.Rewards; using MegaCrit.Sts2.Core.Runs; using MegaCrit.Sts2.Core.ValueProps;
namespace Test.Scripts;
public sealed class TestEvent : CustomEventModel { public override string? CustomInitialPortraitPath => "res://images/events/battleworn_dummy.png";
protected override IEnumerable<DynamicVar> CanonicalVars => [ new DamageVar(10m, ValueProp.Unblockable | ValueProp.Unpowered), new GoldVar(60) ];
public override bool IsAllowed(IRunState runState) => runState.Players.All(p => p.Gold >= DynamicVars.Gold.BaseValue);
protected override Task BeforeEventStarted(bool isPreFinished) { Owner!.CanRemovePotions = false; return Task.CompletedTask; }
protected override void OnEventFinished() { Owner!.CanRemovePotions = true; }
protected override IReadOnlyList<EventOption> GenerateInitialOptions() => [ Option(TakeDamage), Option(LoseGold), ];
private async Task TakeDamage() { await CreatureCmd.Damage(new ThrowingPlayerChoiceContext(), Owner!.Creature, DynamicVars.Damage, null, null); ChooseRewardTypePage(); }
private async Task LoseGold() { await PlayerCmd.LoseGold(DynamicVars.Gold.BaseValue, Owner!, GoldLossType.Stolen); ChooseRewardTypePage(); }
private void ChooseRewardTypePage() { SetEventState(PageDescription("CHOOSE_TYPE"), [ Option(ChoosePotions, "CHOOSE_TYPE"), Option(ChooseCards, "CHOOSE_TYPE"), ]); }
private async Task ChoosePotions() { await RewardsCmd.OfferCustom(Owner!, [new PotionReward(Owner!)]); SetEventFinished(PageDescription("POTIONS_CHOSEN")); }
private async Task ChooseCards() { await RewardsCmd.OfferCustom(Owner!, [new CardReward(CardCreationOptions.ForNonCombatWithDefaultOdds([Owner!.Character.CardPool]), 3, Owner)]); SetEventFinished(PageDescription("CARDS_CHOSEN")); } }
|