Well if you really want to use that many inputs; than you could try using your points system and use if's or defines to mark output zones. Zones could e.g. look like this (just a basic example with pseudo code from the top out of my head):
//Neutral
if (points < 100) {
_action = random(points);
if (_action < 10) stand... return;....
if (_action < 20) wander... return;...
....
}
//Friendly
if (points < 200) {
_action = 100 + random(points-100);
if (_action < 110) wave... return;....
if (_action < 120) talk... return;...
....
}
//Aggressive
if (points < 300) {
_action = 200 + random(points-200);
if (_action < 210) insult... return;....
if (_action < 220) attack... return;...
....
}
etc etc. This should save save you lots of if's, and you can use defines to make it more readable ofcourse.
ps: you could remove or change the random()'s lines if you dont want the randomized results.