public override IEnumerable <Wait> RoutineUse(Creature user, object target) { if (target is Creature targetCreature) { List <Creature> targets = new List <Creature>(); Consume(); user.VisualPose = user.FlickPose(CreaturePose.Cast, CreaturePose.Stand, 70); yield return(user.WaitSome(10)); int chiralStacks = user.GetStatusStacks <Chirality>(); int hits = 0; List <Wait> waits = new List <Wait>(); for (int i = 0; i < chiralStacks + 1; i++) { targets.Add(targetCreature); waits.Add(Scheduler.Instance.RunAndWait(RoutineHand(user, targetCreature, hits))); hits++; yield return(user.WaitSome(7)); } yield return(new WaitAll(waits)); double chiralBuildup = 0.2 * hits; if (targetCreature.HasStatusEffect <DeltaMark>()) { chiralBuildup *= 3; } //chiralBuildup = Math.Min(chiralBuildup, 5); user.AddStatusEffect(new Chirality() { Buildup = chiralBuildup, Duration = new Slider(float.PositiveInfinity), }); yield return(new WaitAll(targets.Select(GetCurrentAction))); } }
private IEnumerable <Wait> OnWater(TurnEvent turn) { Creature creature = turn.Creature; creature.AddStatusEffect(new Wet() { Buildup = 1.0, Duration = new Slider(10), }); yield return(Wait.NoWait); }
public override void Update() { base.Update(); if (Stacks >= 1) { Creature.AddStatusEffect(new DefenseDown() { Buildup = 0.1, Duration = new Slider(20), }); } }
public override IEnumerable <Wait> RoutineUse(Creature user, object target) { Consume(); user.VisualPose = user.FlickPose(CreaturePose.Cast, CreaturePose.Stand, 70); yield return(user.WaitSome(50)); SpriteReference cinder = SpriteLoader.Instance.AddSprite("content/cinder_ender"); new FlarePower(user.World, cinder, user, 50); new ScreenFlashPowerUp(user, () => ColorMatrix.Ender(), 100, 100, 50, 50); user.AddStatusEffect(new PoweredUp()); yield return(user.WaitSome(20)); }
public override IEnumerable <Wait> RoutineUse(Creature user, object target) { Consume(); user.VisualPose = user.FlickPose(CreaturePose.Cast, CreaturePose.Stand, 70); yield return(user.WaitSome(50)); user.AddStatusEffect(new MagicPower() { Duration = new Slider(15), Buildup = 1, }); yield return(user.WaitSome(20)); }
public override IEnumerable <Wait> RoutineUse(Creature user, object target) { Consume(); user.VisualPose = user.FlickPose(CreaturePose.Cast, CreaturePose.Stand, 70); yield return(user.WaitSome(50)); var weakElement = Element.MagicalElements.Pick(Random); user.AddStatusEffect(new Forcefield() { Buildup = 1, }.SetElement(weakElement)); yield return(user.WaitSome(20)); }
private IEnumerable <Wait> OnBog(TurnEvent turn) { Creature creature = turn.Creature; creature.AddStatusEffect(new Muddy() { Buildup = 1.0, Duration = new Slider(20), }); yield return(Wait.NoWait); //yield return creature.AttackSelf(BogAttack); }
public override void OnStackChange(int delta) { if (delta > 0) { //TODO: Rewrite this so it uses an Attack double damage = delta * 30; Creature.TakeDamage(damage, Element.Bleed); Creature.TakeStatDamage(damage, Stat.Blood); } if (Creature.GetStatDamage(Stat.Blood) >= Creature.GetStat(Stat.HP)) { Creature.AddStatusEffect(new Anemia() { Buildup = 0.1, }); } base.OnStackChange(delta); }