Trouble coding gosub for multiple personality traits

edit: okay, yeah, it’s definitely something weird with the if else, else, can’t fall into, etc. I’m not sure exactly what’s causing it, but i was able to replicate, even retyping from scratch

Here’s a subroutine that should work fine. It’s a lot of lines but not much code, and if it does break it should be easier to troubleshoot than all the nested *if statements

*label findtrait
*temp tvalue 0
*temp tname "unknown"
*temp mixedflag 0
*if dom_personality = "true"
    *if (tvalue = adaptable)
        *set mixedflag 1
    *if (tvalue < adaptable)
        *set tvalue adaptable
        *set tname "adaptable"
        *set mixedflag 0
    *if (tvalue = aggressive)
        *set mixedflag 1
    *if (tvalue < aggressive)
        *set tvalue aggressive
        *set tname "aggressive"
        *set mixedflag 0
    *if (tvalue = benevolent)
        *set mixedflag 1
    *if (tvalue < benevolent)
        *set tvalue benevolent
        *set tname "benevolent"
        *set mixedflag 0
    *if (tvalue = charming)
        *set mixedflag 1
    *if (tvalue < charming)
        *set tvalue charming
        *set tname "charming"
        *set mixedflag 0
    *if (tvalue = cruel)
        *set mixedflag 1
    *if (tvalue < cruel)
        *set tvalue cruel
        *set tname "cruel"
        *set mixedflag 0
    *if (tvalue = deceptive)
        *set mixedflag 1
    *if (tvalue < deceptive)
        *set tvalue deceptive
        *set tname "deceptive"
        *set mixedflag 0
    *if (tvalue = diplomatic)
        *set mixedflag 1
    *if (tvalue < diplomatic)
        *set tvalue diplomatic
        *set tname "diplomatic"
        *set mixedflag 0    
    *if (tvalue = emotional)
        *set mixedflag 1
    *if (tvalue < emotional)
        *set tvalue emotional
        *set tname "emotional"
        *set mixedflag 0
    *if (tvalue = honest)
        *set mixedflag 1
    *if (tvalue < honest)
        *set tvalue honest
        *set tname "honest"
        *set mixedflag 0
    *if (tvalue = reserved)
        *set mixedflag 1
    *if (tvalue < reserved)
        *set tvalue reserved
        *set tname "reserved"
        *set mixedflag 0
    *if (tvalue = stoic)
        *set mixedflag 1
    *if (tvalue < stoic)
        *set tvalue stoic
        *set tname "stoic"
        *set mixedflag 0
    *if (tvalue = stubborn)
        *set mixedflag 1
    *if (tvalue < stubborn)
        *set tvalue stubborn
        *set tname "stubborn"
        *set mixedflag 0    
    *if (mixedflag = 1)
        *set dom_trait "mixed"
        *set dom_value tvalue
        *return
    *set dom_trait tname
    *set dom_value tvalue
    *return
1 Like