class Magnetic : ActionRole() { var force = 0 val delta = Vector2() val angle = Angle() override fun begin() { super.begin() force = Options.instance.magneticStrength } override fun createAction() : Action { val seconds = 0.8 return ( Colorize( actor.color, seconds, Color( 0.8, 0.6, 0.6 ), Eases.easeIn ) then Colorize( actor.color, seconds, Color( 1, 1, 1 ), Eases.easeOut ) ).forever() } override fun tick() { super.tick() val ship = Play.instance.ship if (ship == null) return delta.setMinus( ship.actor.position, actor.position ) val distance = delta.length() delta.setMagnitude( force / distance / distance ) ship.velocity += delta } }