There is probably a more elegant way to do this, but I can’t think of it.
My only advice is, if this is a type of check you’re going to do more than once, it might make sense to create a subroutine and a seperate variable tracking the highest stat.
So create, e.g., high_stat = "charm"
and a subroutine along the lines of what you have already:
*label high_stat_check
*if ((((charm > genuine ) and (charm > friendly ) and (charm > outgoing ) and (charm > emotional ))))
*set high_stat = "charm"
*return
*elseif (((genuine > charm) and (genuine > friendly ) and (genuine > outgoing ) and (genuine > emotional ))))
*set high_stat = "genuine"
*return
and so on (you’ll also have to deal with ties!).
And then when you want to run the test, you can just do, e.g.,
I know it’s not a multi-variable *if statement, but as a gosub routine, you can employ it anytime you want. The subroutine will shuffle through every stat you have and the end result will be whichever stat is the highest. You can add as many variables to this as you want, and I’ve used this kind of code before
EDIT: you need two lines, one to name your variable (that’s the ones with the “”) and one to set the value of highest_stat (that’s the one without the “”)–that’s because the code needs a value to check highest_stat against