ACharacter defaults bUseControllerRotationYaw to true, which makes the Controller's rotation overwrite the actor's rotation every tick -- stomping our manual AddActorLocalRotation calls almost immediately (visible as a barely-perceptible tick instead of a turn). Plain Pawn (the ship) doesn't have this default, which is why the same rotation logic worked fine there. Disabled it on both the class default and the placed instance.