Hmmm... that is very odd. There is absolutely, positively nothing wrong with your syntax there, at all. The original version should work.
The only things I can think of that might cause a problem, plainly aren't causing it here.
A couple of debugging checks that I'd do.
1.) rewrite that initial script to give you a little info at the beginning:
hint format["S1 alive: %1 S2 alive: %2 S3 alive: %3 S4 alive: %4",alive s1,alive s2, alive s3, alive s4]
#player1
?! (alive s1): goto "player2"
titleText [format["East Officer \n%1", name s1], "PLAIN DOWN"]
~5
#player2
?! (alive s2): goto "player3"
titleText [format["East Soldier One \n%1", name s2], "PLAIN DOWN"]
~5
#player3
?! (alive s3): goto "player4"
titleText [format["East Soldier Two \n%1", name s3], "PLAIN DOWN"]
~5
#player4
?! (alive s4): goto "player5"
titleText [format["East Soldier Three \n%1", name s4], "PLAIN DOWN"]
~5
#player5
?! (alive s5): goto "player6"
titleText [format["East Soldier Four \n%1", name s5], "PLAIN DOWN"]
~5
#player6
?! (alive s6): goto "end"
titleText [format["East Soldier Five \n%1", name s6], "PLAIN DOWN"]
~5
#end
titleText ["End", "PLAIN DOWN"]
~5
exit
2.) Are your titlecuts working? Check to see if the flow of control is getting to each of those labels... if they are, then the titlecut might be badly formed. From memory, titlecut won't work if you don't pass it a valid string (and an error message might not appear).
#player1
hint "I am at 1"
?! (alive s1): goto "player2"
titleText [format["East Officer \n%1", name s1], "PLAIN DOWN"]
~5
#player2
hint "I am at 2"
?! (alive s2): goto "player3"
titleText [format["East Soldier One \n%1", name s2], "PLAIN DOWN"]
~5
...
exit