I want two series of printed words to happen with the same start. AlphafruitTable should deliver one word {“apple”, “banana”, “canteloupe”, “dingleberry”, “eevocado”} each turn for five turns and then stop. BloomTable is a repeating cycle of {“seed”, “sprout”, “leaf”, “bud”, “flower”}. I’d like this cycle to run indefinitely.
I can make the either series run once with
For every turn during myScene:
say "[event entry][paragraph break]";
blank out the whole row;
rule succeeds.
I’m not able to run two “Every turn during” loops at the same time; the second loop doesn’t start. I tried putting one loop in AlphaScene and the other in BloomScene, with both scenes starting at the same cue. The second scene never starts.
I tried making one loop that draws from AlphaBloomTable (two columns). I can get both the Alphafruit value and the Bloom value if I include “blank out the whole row,” but I won’t be able to cycle through the BloomTable values again.
If I remove <blank out the entire row;>, it will print the first Alphafruit entry and the first Bloom entry on every turn. It will not advance.
If I <blank out Alphafruit entry;> I get a run-time error (attempt to look up a non-existent entry in table P23).
Every turn during this particular scene:
say "[one of]apple[or]banana[or][stopping] [one of]seed[or]sprout[cycling]".
I only used two entries in each group, to make it clear what’s going on, but you can add more by just putting in more [or]s. The reason for the [or][stopping] in the first one is so that when it stops, it stops on a blank instead of on “banana”.
I’m a little unclear on exactly what you’re trying to do and how your code currently works, but here’s a simpler approach that seems like it might work?
Every turn while MyScene is happening:
Say "[AlphaFruit][Bloom][paragraph break]".
To say AlphaFruit:
Say "[one of]apple [or]banana [or]cantelope [or]dingleberry [or]eevocado [or][stopping]".
To say Bloom:
Say "[one of]seed[or]sprout[or]leaf[or]bud[or]flower[cycling]".
EDIT: ninja’d. This is the same thing as what Daniel suggested, I just used two to-say phrases for ease of reading and in case you’re using those lists elsewhere (though note that if you do, the cycling won’t reset).
Mille grazie, @Draconis and @DeusIrae! These both work for what I described. Now it’s on me to elaborate.
Two things are happening in this moment of my game. Alphafruit represents the steps of a curse being cast. If the player stays for the whole sequence, the story ends. Bloom represents an immortal plant going through a life cycle. At certain stages, take-able fruit becomes available (and then goes away). The player will need to snag one of these objects to solve something else.
So the end of the Alphafruit scene/empty table was meant to trigger ThreeMovesToPlayerDeathScene. The endless Bloom cycle is to allow the player to 1) take the fruit and leave before the curse comes to fullness, or 2) leave and come back for the fruit after the sorcerer has walked away. I thought I could use a second column of the Bloomtable as an index with a lot of <if…> statements to bring the fruit on- and off-stage.
As a bonus, I was allowing the player to collect the fruit unripe/ripe/rotten and then magick that into the required form in another part of the game, because why make it simple.
Maybe I can still use the index idea: I’ll try setting PlayerDeathScene to happen X number of moves after the start of the scene. I can create a myIndex number to increment every turn and then reset it at the end of each cycle.
Just on this point, it’s because you have rule succeeds. in the rule, which tells Inform not to run any other rules of the same type (every turn). Without that, it’ll happily run as many every turn rules as you have.
When I took out “Rule succeeds.” from my old structure, I got all of my table entries printed in one turn. I did get them from both “Every turn” rules, so that was good, though.