Пример #1
0
        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)));
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
 public override void Update()
 {
     base.Update();
     if (Stacks >= 1)
     {
         Creature.AddStatusEffect(new DefenseDown()
         {
             Buildup  = 0.1,
             Duration = new Slider(20),
         });
     }
 }
Пример #4
0
        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));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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));
        }
Пример #7
0
        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);
        }
Пример #8
0
 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);
 }