--
You received this message because you are subscribed to the Google Groups "PuzzleScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puzzlescript+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
You can get shorter code if, instead of character sprites for each combination, you had 4 different sprites layers, like
player0, player1, player2 (invisible)
headRed, headGreen, headBlue (head)
legsRed, legsGreen, legsBlue (legs)
player (just a pair of eyes)
And then the legend
. = background
1 = activePlayer and headRed and legsGreen (you can add numbers here instead of in the rules if you don't want the switching order to be random)
A = headRed and legsGreen
....
head = headRed or headGreen or headBlue
legs = legsRed or legsGreen or legsBlue
number = player0 or player1 or player2
playerPart = head or legs or number
partRed = headRed or legsRed
partGreen = headGreen or legsGreen
partBlue = headBlue or legsBlue
And set up with
random [ playerPart no number ] -> [ playerPart number0 ]
random [ playerPart no number ] -> [ playerPart number1 ]
random [ playerPart no number ] -> [ playerPart number2 ] (add more numbers as needed)
[ > player | playerPart] -> [ player | playerPart]
[ > player playerPart] -> [ > player > playerPart]
Then the switching can be simply
[ action player number0 ] [ number1 ] -> [ number0 ] [ player number1 ]
[ action player number1 ] [ number2 ] -> [ number1 ] [ player number2 ]
[ action player ] [ number0 ] -> [] [ player number0 ] (we don't need the number2 here, and if we leave it out then this also acts as a failsafe for levels with only 2 characters)
It also makes the cancel part much shorter
[player partRed tileRed] -> cancel
[player partGreen tileGreen] -> cancel
[player partBlue tileBlue] -> cancel