How many options are too many options?


Before I break QT and RT and other things:

is a choicebody with 202 options (only 4 will show per playthrough) too much?
Should I split it into various choicebodies under ifs/labels?



Well, in all seriousness, it obviously depends on many factors. But I only call a choice too much when you have to scroll the screen all the way to see the options (though, again, I don’t mind it like in ZE where you can sell your stuffs in a list).

If you want, you can make a choicebody made from 4 options, and then use {reference} method to assign the actual choice codes to these slots.

At least that’s how I do it with my combat system.


I don’t know how to do that.
Right now it’s using the

*if (x) #option


and yes this is the superpowered bing codename suggestion list thing


Well, then you don’t need the variable {reference} way.

It can be a bit hard to explain, so I’ll return to edit this once I’m back home (apartment).

P.s. Actually, there’s a quick explanation on here, under “truly bizarre references”

Alright, now I’m back, here goes nothing

Choose a skill
   *selectable_if ((ep >= {sp_move1_ep}) and ({sp_move1_cd} = 0)) #${sp_move1_title}
      *if not ({sp_move1_go})
         *set {sp_move1_go} true
         *set ep -{sp_move1_ep}
         *set {sp_move1_go} false
         *set ep +{sp_move1_ep}
   *selectable_if ((ep >= {sp_move2_ep}) and ({sp_move2_cd} = 0)) #${sp_move2_title}
      *if not ({sp_move2_go})
         *set {sp_move2_go} true
         *set ep -{sp_move2_ep}
         *set {sp_move2_go} false
         *set ep +{sp_move2_ep}

<<Ability roll pick>>
*label sp_moves
*rand sp_move1 1 4
*rand sp_move2 1 4
*label sp_reroll
*set rollcheck false
*if sp_move2 = sp_move1
	*set rollcheck true
	*rand sp_move2 1 4
*if rollcheck = true
	*goto sp_reroll

*gosub sp_slot 1 sp_move1
*gosub sp_slot 2 sp_move2

<<Assigning to slots>>
*label sp_slot
*params slot num
*temp sp_move_cd "sp_move${slot}_cd"
*temp sp_move_ep "sp_move${slot}_ep"
*temp sp_move_go "sp_move${slot}_go"
*temp sp_move_title "sp_move${slot}_title"

*set {sp_move_cd} "abi${num}_cd"
*set {sp_move_ep} "abi${num}_ep"
*if num = 1
	*set {sp_move_title} "[1 ❖ |${abi1_cd *"-1"}/2 🕒] [b]Shred[/b] @{abi1 ✓|}[n/]Deal 3 damage and remove 1 [i]Entangled[/i]."
*elseif num = 2
	*set {sp_move_title} "[0 ❖ | @10 Rush] [b]Fast Strike[/b] @{abi2 ✓|}[n/]Deal 4 damage. Consumes Rush, adding +1 damage for every 10 Rush."
*elseif num = 3
	*set {sp_move_title} "[1 ❖] [b]Rage[/b] @{abi3 ✓|}[n/]Gain 3 blocks. Generate 30 [b]Rush[/b]."
*set {sp_move_go} "abi${num}"
*elseif num = 4
	*set {sp_move_title} "[0 ❖] [b]All Out[/b] @{abi4 ✓|}[n/]Gain (3) [b]Bloodrage:[/b] Gain (3) STR for every unblocked attacks you dealt; lose them and the Bloodrage when taking attack damage."

In nutshell, it’s basically a choicebody of 2 options (which I’d call “slots”). Each slot will be assigned with a random skill from a pool by random rolls, so players can make extra moves in addition to the basic 2 moves: attacks and blocks (hence the keyword “sp_move,” special move).

Code Legends:
ep = Energy Points. Mana. ❖
cd = cooldown. “Current cooldown/Ready to use.” :clock3:
title = the text that’ll appear on the choice. It’s basically the stuff after the hash # in CS

So… that’s a snippet from my whole subroutine. Definitely a WIP, but it does what it must do, at least so far.


Mnnn… i dunno if this would even work for this case if i understand things right. But thanks


I think that depends on how it’s easiest for you to think about it. One massive or 50 smaller ones with 4 choices each?

You know best how your brain works.


202 does sound a huge amount. If the user only ever sees 4, that’s not a problem though. Unless you’re asking for performance reasons? In which case, in theory it won’t be particularly performant, but I don’t think you’ll notice too much. I would suggest you look at an alternative way of doing it, however. Even if just for your own sanity. Maintaining the code for 202 option long choice sounds really painful.


I turned it into 11 labels with 19 options each