Make sure you refund the point as well, so you can finish reassigning. Example:
//remove perk:
pc.removePerk("Attack Drone")
pc.unclaimedClassPerks += 1
Thanks for reporting. It's a known bug that we don't have a fix for right now.
The work around is to make sure you close vendors with a click on the back button, instead of a shortcut key.
This issue is pretty specific. If you spam a certain attack too many times, Kane will "cancel" it before it hits and you get some text.
It seems the attack is being canceled, but the function that explains this is not being called.
Hmm, for others poking at this the behavior is KANE_AI_SKIP, caused by spamming one attack I think.
However, kaneRangedInterrupt() is not hooked up so the player doesn't get an explanation of what is happening.