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 85 86 87 88 89 90
| 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.Helpers; using MegaCrit.Sts2.Core.Localization.DynamicVars; using MegaCrit.Sts2.Core.Rewards; using MegaCrit.Sts2.Core.Runs; using MegaCrit.Sts2.Core.ValueProps; using STS2RitsuLib.Scaffolding.Content;
namespace Test.Scripts;
[RegisterActEvent(typeof(Glory))]
public sealed class TestEvent : ModEventTemplate { public override EventAssetProfile AssetProfile => new( InitialPortraitPath: "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() => [ new EventOption(this, TakeDamage, InitialOptionKey("TAKE_DAMAGE")), new EventOption(this, LoseGold, InitialOptionKey("LOSE_GOLD")), ];
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(L10NLookup($"{Id.Entry}.pages.CHOOSE_TYPE.description"), [ new EventOption(this, ChoosePotions, ModOptionKey("CHOOSE_TYPE", "CHOOSE_POTIONS")), new EventOption(this, ChooseCards, ModOptionKey("CHOOSE_TYPE", "CHOOSE_CARDS")), ]); }
private async Task ChoosePotions() { await RewardsCmd.OfferCustom(Owner!, [new PotionReward(Owner!)]); SetEventFinished(L10NLookup($"{Id.Entry}.pages.POTIONS_CHOSEN.description")); }
private async Task ChooseCards() { await RewardsCmd.OfferCustom(Owner!, [new CardReward(CardCreationOptions.ForNonCombatWithDefaultOdds([Owner!.Character.CardPool]), 3, Owner)]); SetEventFinished(L10NLookup($"{Id.Entry}.pages.CARDS_CHOSEN.description")); } }
|