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())); }
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); }