Oh, I didn't realise that. Of course it would; I'm using param_base when it's called. This actually isn't a problem for the commission the script was made for because Clyve will only be using this in his mercenary system when you first say you want to hire someone (to set their initial stats and determine how much they'll cost to hire).
However, for anyone else who wants to use this, that's a pretty huge issue that I'll need to fix!
To have characters gain distribute points after a level it'd be easy enough to slot a call to the script in the level up code, but I suppose I could add in an alias that does this if you've set an option in the script setup. I have a long-overdue battle ranking script to finish first, though.
Having it call on actor ID was because Clyve needed to be able to set stats for actors that weren't in the party, but it should be easy enough to add another command for providing party IDs instead.
Update: Okay, I've fixed the initial value bug, thanks for that. Trying to implement your other suggestions but I'm having trouble making the scene work when called from the change_exp method. With the Fiber.yield it gives a "can't yield from root fiber" error, but without it you assign stats and then it goes back to the victory screen and loops. I have an idea that might fix that however.