public override bool CanUse()
        {
            var world    = Curio.GetWorld();
            var delta    = world.PlayerCurio.GetVisualTarget() - Curio.GetVisualTarget();
            var distance = delta.Length();

            return(distance < 24f);
        }
        public override bool CanUse()
        {
            var world = Curio.GetWorld();
            var tile  = Curio.GetMainTile();
            var map   = tile.Map;
            var mace  = Curio.GetBehavior <BehaviorMace>();

            return(mace != null && mace.IsInArea(world.PlayerCurio) && map.CanSee(Curio.GetVisualTarget(), world.PlayerCurio.GetVisualTarget()));
        }
Exemple #3
0
        public void Draw(SceneGame scene, DrawPass pass)
        {
            var tile   = Curio.GetMainTile();
            var shadow = SpriteLoader.Instance.AddSprite("content/ring_shadow");

            if (pass == DrawPass.EffectLow)
            {
                scene.FlushSpriteBatch();
                scene.DrawCircle(shadow, SamplerState, Curio.GetVisualTarget(), 20, 0, MathHelper.TwoPi, 12, 0, 1, 0, 1, ColorMatrix.Tint(Color.Black), scene.NonPremultiplied);
            }
            if (pass == DrawPass.EffectLowAdditive)
            {
                scene.SpriteBatch.Draw(scene.Pixel, tile.VisualPosition, new Rectangle(0, 0, 16, 16), new Color(159, 74, 153, 32));
            }
        }
        public override void Perform()
        {
            var world        = Curio.GetWorld();
            var delta        = world.PlayerCurio.GetVisualTarget() - Curio.GetVisualTarget();
            var orientable   = Curio.GetBehavior <BehaviorOrientable>();
            var angleCurrent = orientable.Angle;
            var angleTarget  = Enumerable.Range(0, 8).Select(x => MathHelper.PiOver4 * x).GetClosestAngle(Util.VectorToAngle(delta));
            var angleDelta   = MathHelper.WrapAngle(angleTarget - angleCurrent);
            var attack       = new List <ActionWrapper>()
            {
                new ActionMaceGoreAttack(Curio, world.PlayerCurio, UpSwingTime, UpSwingSlashTime, DownSwingTime).InSlot(ActionSlot.Active),
                new ActionTurn(Curio, angleDelta, TurnTime).InSlot(ActionSlot.Active),
            };

            attack.Apply(Curio);
        }