This requires a couple of small edits really. Since you can't set the str stat to be 0 in the database, you'll have to set it to 0 through the standard scripts. I'll take str as an example, but it's the same with all the other stats
first off, in Game_Actor, find the line "def base_str"
there's a couple of things you need to change in this method
firstly, this line
n = $data_actors[@actor_id].parameters[2, @level]
change that to
n = $data_actors[@actor_id].parameters[2, @level] - 1
sadly, enterbrain was determined in making our lives hell, so you'll also have to change this line
return[[n,1].max, 999].min
to this:
return[[n,0].max, 999].min
I hear you saying...yay, that seems like it would do the trick...
Sadly, no. There's a similar line in Game_Battler, that has a similar clause in it.
so change these 2 lines under def str (note: they're not actually consecutive in the script):
n = [[base_str + @str_plus, 1].max, 999].min
n = [[Integer(n), 1].max,999].min
to these 2 lines
n = [[base_str + @str_plus, 0].max, 999].min
n = [[Integer(n), 0].max, 999].min
and NOW you're done. This bit of code change simply means that, anytime an actor has "1" as a stat it shows up, and acts like,0
Another possible way to do this is through an event script call, that way you wouldn't have to alter the actual scripts.
The call would look like
$data_actors[actor_number].parameters[stat, level] = 0
actor_number needs to be replaced by an actor's number in the database
the stat needs to be replaced with one of the following
0 for max hp
1 for max sp
2 for str
3 for dex
4 for agi
5 for int
and finally, level needs to be replaced by the value of the level at which you want to change the str.
Note that you still won't have 0 str if you have anything equipped that will increase your str...duhz :P
Also, one thing I forgot to mention, if you still want to be able to have 999 points in an edited stat, you'd have to change 999 to 1000 in all the lines I just mentioned