You're comparing the contents of a variable to literal text, not the contents of two variables.
I.E. the contents of a text variable named ">Current Ship Type", to the literal string "~~New Ship Type".
Also note that checking for both "Equals" and "Does Not Equal" is redundant, unless you're specifically doing so in case the variable is not set.
If you have the "Evaluate 'Not Set' as empty (blank)" option checked, there are only two possible outcomes, so you can do one check, and use the "Condition Else" action instead of the "Add Else If to Conditional Block" action.