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