That makes my head spin.
Here’s how I would make random non-repeatable events:
*create event0 false
*create event1 false
*create event2 false
*create event3 false
*create event4 false
*create random_event 0
...
*label new_event
*rand random_event 0 4
*if (random_event = 0)
*if (event0 = false)
*set event0 true
*gosub_scene event0
*finish
*else
*goto new_event
*if (random_event = 1)
*if (event1 = false)
*set event1 true
*gosub_scene event1
*finish
*else
*goto new_event
*if (random_event = 2)
*if (event2 = false)
*set event2 true
*gosub_scene event2
*finish
*else
*goto new_event
*if (random_event = 3)
*if (event3 = false)
*set event3 true
*gosub_scene event3
*finish
*else
*goto new_event
*if (random_event = 4)
*if (event4 = false)
*set event4 true
*gosub_scene event4
*finish
*else
*goto new_event
It’s super boring, but it’s pretty clear what’s happening!
(by the way, it’d crash if you do it six times, so I would also probably include an *if statement for if all the events have already triggered, as well).
Another way I can think of, not sure if it would actually work:
*create cards 0
*create opponent_cards 0
*create card_name ""
*create opponent_card_name ""
...
*label new_game
*rand cards 0 53
*gosub assign_cards
You've just drawn the ${card_name}! Do you think you have a higher card than your opponent?
*choice
# Yes!
*if (cards > opponent_cards)
You win!
*goto play_again
*else
Eat shit! Your opponent drew the ${opponent_card_name}!
*goto play_again
# No! Fold!
You get nothing.
*goto play_again
*label play_again
Play again?
*choice
# Yes.
*goto new_game
# No.
*finish
*label assign_cards
*rand opponent_cards 0 53
*if (cards = opponent_cards)
*goto assign_cards
*if cards = 0
*set card_name "Ace of Spades"
...
*if opponent_cards = 0
*set opponent_card_name "Ace of Spades"
...
*return
A bit laborious to do all the card name strings, but you’d have to do that for your version as well. Mine’s just a simple check of whether the two cards drawn are the same. I think trying to code more complex games like poker or crazy eights or whatever is probably a bad idea in ChoiceScript.
