@Glitchy (and @learningiscaring)
There is a logic error in the conditional expressions of your (if:) and (else-if:) macros, the expression $a > $b and $c doesn't equate the way you think it does. Because the expression contains the and operator it is first broken into two parts and then evaluated as follows:
(note: for the sake of this explanation I will assume that $a equals 1, $b equals 2, and $c equals 3)
1. The $a > $b part equates to true if the current value of $a is greater than the current value of $b, otherwise it equates to false. In our example 1 ($a) isn't greater than 2 (b$) so this part would equate to false.
2. The $c part equates to true if the current value is considered Truthy, in the case of numbers this is any value other than 0 (zero), otherwise it equates to false. In our example 3 ($c) isn't equal to 0 (zero) so this part would equate to true.
3. The Boolean outcomes of each of the two parts are recombined to determine the overall outcome of the whole expression. The and operator equates to true if both it's left and right conditions equate to true, otherwase it equates to false. In our example the outcome of part 1 was false and the outcome of part 2 was true, so when the and operator is applied (eg. false and true) the overall outcome would be false.
The issue with each of your condition expressions is that the right side of each of the and operators will only equate to false if the referenced variable equals zero, and this isn't what you're trying to test for. Your conditional expressions should look as follows
(if: $a > $b and $a > $c)[(goto: "Ending A")]
(else-if: $b > $a and $b > $c)[(goto: "Ending B")]
(else-if: $c > $a and $c > $b)[(goto: "Ending C")]