Well, there is a "better" way, though you need to prepare things way earlier. So you set up "foe tricky" before you set up the main character. At the same time, you create a variable "foe disadvantage". The values will be foe tricky = 9 -> foe disadvantage = 3 foe tricky = 10 -> foe disadvantage = 2 foe tricky = 11 -> foe disadvantage = 1 foe tricky = 12 -> foe disadvantage = 0 When you later set up the main character, you change the variable foe disadvantage in the same chapter you set (choose) the variable tricky. tricky = 9 -> foe disadvantage + 0 tricky = 10 -> foe disadvantage + 1 tricky = 11 -> foe disadvantage + 2 tricky = 12 -> foe disadvantage + 3 (Depending on when you create the opponent, it might even be better to do it the other way around and create a variable "advantage" during character creation. When you later set up the variable foe tricky, you modify the variable "advantage".) If you later change the variable tricky or foe tricky, change the variable foe disadvantage accordingly. Though there might be issues with this approach. E.g. if you have multiple possible opponents, you might need to set up a set of variables for each of them. Another way that might be possible later would be to use an intermediate chapter to precalculate the value. (E.g. right before the match.) In that case, you would offer 4 options to set the variable foe disadvantage and use the following chapter question with 4 options to modify it. (You need a landing chapter for both steps and to keep it easy, I suggest a non-accessible chapter at the same level as mentioned in earlier posts.) Changing things back at the beginning of the story can make the game "break" for readers with an old save game. So you might want to let readers know that their save game is outdated. (E.g. using a variable "version") Whether the suggested ways might actually be better or not, depends on more factors. E.g. the number of possible opponents or how often you might need the value.
First, I'm so early in the process of creating the game that going back to fix things is not that difficult. Second, I already have several variables in play including strength, agility, stamina, skill, tricky, arousal, and more and foe counterparts for all of these variables. The success of a move depends on what kind of move it is. If it's an agility move like putting the opponent in a cradle hold, it would be "if agility > foe agility". I did think of something though that would be better than my original idea. Chapter 18 would have the following chapters: If tricky = 9 then result = 3 If tricky = 10 then result = 4 If tricky = 11 then result = 5 If tricky = 12 then result = 6 Then chapter 19 would have the following chapters: If foe tricky = 9 then no change If foe tricky = 10 then result - 1 If foe tricky = 11 then result - 2 If foe tricky = 12 then result - 3 Then I would have the same result chapters I spelled out earlier. Then I would clear the result variable so that it can be used again to calculate the next move. Points, victories and a few other variables would also change to keep track of the long term results. For example, if "you" succeed at stripping the shorts off your opponent, then foe shorts = 0 and that would affect what moves "you" could try next. You wouldn't be able to strip your opponent of his shorts if he's no longer wearing shorts.
Well, it might be no problem for the author to change things. The issue I was pointing at was that readers might start a game and play until chapter 3. Then you introduce a new variable in chapter 1. When the reader continues from their chapter 3 savegame, they won't have the new variable and might run into a dead end in chapter 5 where the variable is needed. So if such a situation could occur, you might want to implement some kind of safeguard. E.g. telling the reader to reset their game progress. Doing these comparisons often and with new values, that approach is certainly better.
I am aware of this which is why I put an Under Construction notice on page one. The game isn't really ready to be played at this time and when it is ready to be played, I'll put a message an page one telling readers that if they did start playing before such and such a date, they should reset.
That might work. There are also ways to do that depending on the "version" of the reader's save game. (That would be another variable that is added in the introduction chapter.)
I'm curious what you meant by this. Did you mean a never-accessible chapter or were you instead talking about a chapter that is only accessible depending on conditions? I can't figure out any reason to have a never-accessible chapter so I'm assuming you meant the latter.
I meant a chapter that can't be accessed (directly) If you have a chapter with the condition anyVariableName > 100000 it is impossible to directly access the chapter as the maximum value of a variable is 100000, so the condition will always fail. The actual name of the variable doesn't matter. It also doesn't matter if the variable name is in use or whether it might exist in the reader's score or not. While this chapter can't be accessed directly, you can still choose it as the destination chapter of a link chapter. So if the reader clicks on the link chapter, they get forwarded to the chapter even though the condition isn't met. (The conditions of destination chapters aren't checked.) While the conditions aren't checked, the Score Changes are still applied. This means that Score Changes of both chapters (link chapter and destination chapter) are applied. In general, that can be an advantage or a disadvantage. So if you have a hub chapter H with two options A and B. Chapter A would be a regular chapter that "continues" the branch. Chapter B would link to chapter A, so the different outcomes would be displayed in chapter A with if statements. If both chapters have Score Changes, - choosing chapter A will apply the Score Changes of chapter A - choosing chapter B will apply the Score Changes of chapter B and then the Score Changes of chapter A. With this construction, you might need to consider the Score Changes of chapter A in chapter B. So if you are going to do "variable + 5" in A, you might need to do "variable -5" in B to achieve the intended result. The alternative is to have a hub chapter H with three options A, B, and C. Chapter A would be a regular chapter that "continues" the branch and displays the different outcomes. It has a condition that blocks direct access. Chapter B would link to chapter A. Chapter C would link to chapter A. So - chapter A can't be chosen as the condition isn't met - chapter B will apply the Score Changes of chapter B and chapter A - chapter C will apply the Score Changes of chapter C and chapter A With this construction, you can keep the Score Changes of chapter A empty or apply Score Changes that apply to all chapter options. (E.g. introducing new variables that are necessary in later chapters.) The Score Changes in chapter B and C don't have to be adjusted to achieve the intended result, so it might be clearer what Score Changes are applied with each choice. Another advantage is that you can have different titles. Let's say that you named the options in the first example A "Left door" and B "Right door" then choosing link chapter B "Right door" will forward you to chapter A and the title will say "Left door" even though the chapter text will display the event "Right door". Using the alternative with chapters A, B, and C, you can have three different chapter titles. E.g. A "The Room" B "Left door" C "Right door" So the chapter option would show the choice. Then, the user gets forwarded to chapter A and the title will be "The Room", no matter whether the user chose B or C. With "landing chapter" I mean the destination chapter of the link chapters. I guess you could also branch out for each step but then you would have quite a lot of redundant chapters, leading to a lot of effort to maintain it when you want to change some details.
So let me see if I understand. Currently, I have the following: Chapter 1: You are John Doe. You have participated in wrestling competitions in the past but this will be your first time sex wrestling. But it isn't like . . . Chapter 2: You are okay with incest. incest = true Chapter 3: link to chapter 3 You think about your lover.Chapter 2: You are not okay with incest. incest = false Chapter 3: You think about your lover. (This is the landing pad) What you are suggesting is that I could organize it the following way: Chapter 1: You are John Doe. You have participated in wrestling competitions in the past but this will be your first time sex wrestling. But it isn't like . . . Chapter 2: condition unavailable > 100000 You think about your lover. (This is the landing pad) Chapter 2: You are okay with incest. incest = true Chapter 3: link to chapter 2 You think about your lover.Chapter 2: You are not okay with incest. incest = false Chapter 3: link to chapter 2 You think about your lover. I still don't see how that is a useful method. Maybe you could make up a better example of how it might be used.
In your first example, the reader clicks the first of the options "Chapter 2" they will land in the chapter with the content Code: You are okay with incest. Then they have to click on "Chapter 3: You think about your lover" to get to the landing pad. So the reader has to click 2 times to effectively achieve one step. For the second click, there is no choice as it would always be the landing pad or a link to the landing pad. What I suggested would be more like Code: Chapter 1.1: You are John Doe. You have participated in wrestling competitions in the past but this will be your first time sex wrestling. But it isn't like . . . Chapter 2.1 (landing pad): condition unavailable > 100000 You think about your lover. Chapter 2.2 (links to 2.1): You are okay with incest. incest = true Chapter 2.3 (links to 2.1): You are not okay with incest. incest = false Chapter content of 2.1 Code: {if incest = true}You are okay with incest.{else}You are not okay with incest.{endif} You think about your lover. Here, the reader only has to click 1 time to achieve the same step. So it might be more convenient for the reader. If you use a similar "1-click structure", you might run into the problem I mentioned. Code: Chapter 1.1: You are John Doe. You have participated in wrestling competitions in the past but this will be your first time sex wrestling. But it isn't like . . . Chapter 2.1 (landing pad): You are okay with incest. incest = true Chapter 2.2 (links to 2.1): You are not okay with incest. incest = false Chapter content of 2.1 Code: {if incest = true}You are okay with incest.{else}You are not okay with incest.{endif} You think about your lover. The problem with this is that the chapter 2.1 will always show Code: You are okay with incest. You think about your lover. even if you clicked Chapter 2.2. In chapter 2.2, the variable incest will be set to false. Then, you get forwarded to chapter 2.1 and there, the score changes will be applied. So incest will be set to true. There are ways to still use the "1-click structure" and show the right result but it might be more complicated Code: Chapter 1.1: You are John Doe. You have participated in wrestling competitions in the past but this will be your first time sex wrestling. But it isn't like . . . incest = true Chapter 2.1 (landing pad): You are okay with incest. NO SCORE CHANGE Chapter 2.2 (links to 2.1): You are not okay with incest. incest = false Here, you define the value for the landing pad in chapter 1.1 and only change it when the reader chooses 2.1
Alright, I understand now and thank you. This will reduce the amount of repetitive chapters I'm forced to create. Along those lines, I have a question. Because of what you suggest, I will be moving chapters around and eliminating almost every other chapter but as it is now: Chapter 12 determines your position variable Chapter 15 determines your foe tricky variable Chapter 17 determines your move variable Chapters 19 and 21 do some calculation to determine your result If you choose Ryan and your first move is to go for his shorts, position = 1, foe tricky = 9, move = 1 and you get a certain chapter as your result. (Currently, Ryan is the only opponent I have defined so I'm making the other opponents up just for illustration.) If you choose Carl and your first move is to go for his shorts, position = 1, foe tricky = 10, move = 1 and you get a completely different chapter as your result. But if you choose Chad and your first move is to go for his shorts, position = 1, foe tricky = 9, move = 1 and you get the same exact chapter as you got with Ryan except with Chad in his place. Now I do not want to make this overly complicated. The reason I stopped working on Ganymede University is because it got overly complicated and if I do anything with that story it will be to reorganize it into something simpler. But are there some simple ways I can improve this or is it okay since Chad and Ryan are similar?
While I'm at it, I might as well ask, is there a way that I can cause a reader to receive a message that they need to reset the game no matter which chapter they click on? Would it be to create a game version variable and set every chapter to be only available if the game version equals the right number and if the game version is less than that number, the only chapter available to them is the one that tells them to reset? Or is there a better way?
I'm not completely sure what the meaning of all variables is. I guess position is the MC's position relative to the opponent and allows different moves. And moves might describe grips or actions the MC can do. I also assume that there is an earlier chapter where the opponent is chosen. Here an example of a structure I could imagine to have a rather low number of chapters. The example has 3 moves using 2 trait combinations Code: 5.1 Choose your opponent 6.1 Choose your move; Condition: inaccessible > 100000 7.1 Calculation of result (part 1); Condition: inaccessible > 100000 8.1A Calculation of result (part 2); Condition: inaccessible > 100000 9.1A Result of all moves; Condition: inaccessible > 100000 9.2 Continue; Condition foe tricky = 9 -> links to 9.1A 9.3 Continue; Condition foe tricky = 10; Score Change: result - 1 -> links to 9.1A 9.4 Continue; Condition foe tricky = 11; Score Change: result - 2 -> links to 9.1A 9.5 Continue; Condition foe tricky = 12; Score Change: result - 3 -> links to 9.1A 8.2 Continue; Condition: tricky = 9; Score Change: result = 3 -> links to 8.1A 8.3 Continue; Condition: tricky = 10; Score Change: result = 4 -> links to 8.1A 8.4 Continue; Condition: tricky = 11; Score Change: result = 5 -> links to 8.1A 8.5 Continue; Condition: tricky = 12; Score Change: result = 6 -> links to 8.1A 7.2 Calculation of result (part 1); Condition: inaccessible > 100000 8.1B Calculation of result (part 2); Condition: inaccessible > 100000 9.1B Continue; Condition foe strength = 9 -> links to 9.1A 9.2 Continue; Condition foe strength = 10; Score Change: result - 1 -> links to 9.1A 9.3 Continue; Condition foe strength = 11; Score Change: result - 2 -> links to 9.1A 9.4 Continue; Condition foe strength = 12; Score Change: result - 3 -> links to 9.1A 8.2 Continue; Condition: strength = 9; Score Change: result = 3 -> links to 8.1B 8.3 Continue; Condition: strength = 10; Score Change: result = 4 -> links to 8.1B 8.4 Continue; Condition: strength = 11; Score Change: result = 5 -> links to 8.1B 8.5 Continue; Condition: strength = 12; Score Change: result = 6 -> links to 8.1B 7.3 Go for his pants (tricky vs. foe tricky); Score Change: move = 1 -> links to 7.1 7.4 Twist his arm (tricky vs. foe tricky); Score Change: move = 2 -> links to 7.1 7.5 Push him down (strength vs. foe strength); Score Change: move = 3 -> links to 7.2 6.2 Ryan; character = 1, foe tricky = 9, foe strength = 10 -> links to 6.1 6.3 Carl; character = 2, foe tricky = 10, foe strength = 9 -> links to 6.1 6.4 Chad; character = 3, foe tricky = 9, foe strength = 11 -> links to 6.1 (In the calculation chapters 7.1, 7.2, 8.1A, and 8.1B, you could already hint at the move, traits, or sth.) (You might need to add Score Changes or another chapter level for things like physical exertion or sth.) Then, in chapter 9.1A you could write the all results, e.g. Code: {if move = 1 }You go for {if character =1 }Ryan's{elseif character =2 }Carl's{elseif character =3 }Chad's{else }[error: character not specified]{endif } shorts and {if result > 0 }pull them all the way down.{else }try to pull them down but he takes a step back.{endif }{elseif move = 2 }You grab {if character =1 }Ryan's{elseif character =2 }Carl's{elseif character =3 }Chad's{else }[error: character not specified]{endif } arm and {if result > 0 }twist it around, making him fall flat on the ground.{else }try to twist it around but he slips his arm out of your grip.{endif }{elseif move = 3 }You push {if character =1 }Ryan{elseif character =2 }Carl{elseif character =3 }Chad{else }[error: character not specified]{endif } and {if result > 0 }pin him to the ground.{else }try to pin him to the ground but he uses your momentum and yanks you over his head, sending you on the ground.{endif }{else }[error: no move specified]{endif} Though you could also use different chapters for the moves if you want to keep that separated. Let's say you define a variable version = 1 in the Introduction chapter. (Or the earliest chapter where important variables are initialized.) Then you can use sth like this Code: {if@ version >= 1}{else}There have been changes in the game structure that might make it necessary to reset your game. {endif}Put your chapter content here. or Code: {if version < 1}There have been changes in the game structure that might make it necessary to reset your game. {else}{endif}Put your chapter content here. at strategic points in your story. If you add an important variable to the early point, you edit the Introduction to version = 2 and adjust it in some or only the latest chapter to version >= 2 This doesn't ensure they follow the note and reset the game but without the variable they most likely end up at a dead end. (There is also a way to do the same if the variable version doesn't exist.)
You're pretty close. When each match begins, both you and your opponent start in position one and then as you move, your position changes and will probably never be one again until your next match begins. And yes, there is a chapter in which you choose your opponent although your choices are limited based on a few variables. For example, if you indicated that you're not okay with incest than your brother and your father are not available as opponents you may choose. That's pretty good although I would make the following changes Code: 5.1 Choose your opponent 6.1 Choose your move; Condition: unavailable > 100000 7.1 Calculation of result (part 1); Condition: unavailable > 100000 8.1 Calculation of result (part 2); Condition: unavailable > 100000 9.1 Result of all moves; Condition: unavailable > 100000 10.1 Arousal result; Condition: unavailable > 100000 10.2 Your opponent counters your move successfully by getting you in a cradle hold; Condition: move = 1, result = 0; Score change: foe points + 4, position = 12 10.3 Your opponent counters your move successfully by nabbing your shorts; Condition: move = 1, result = 1; Score change: foe points + 2, position = 7, shorts = 0% 10.4 Your opponent counters your move successfully by nabbing your tank top; Condition: move = 1, result = 2; Score change: foe poins + 1, position = 9, tank top = 0% 10.5 Your opponent evades your move but fails to countermove; Condition: move = 1, result = 3 10.6 You partially succeed; Condition: move = 1, result = 4; Score change: position = 5, foe shorts = 50% 10.7 You strip him of his shorts; Condition: move = 1, result = 5; Score change: points + 2, position = 23, foe shorts = 0% 10.8 You manage not only to strip him of his shorts but you also pin him to the mat; Condition: move = 1, result = 6; Score change: points + 4, position = 17, foe shorts = 0% 10.9 I'll write this part later; Condition: move = 2, result = 0; Score change: position = 42, foe points = 4 -> links to 10.1 10.10 I'll write this part later; Condition: move = 2, result = 1; Score change: position = 32, foe points = 2 -> links to 10.1 10.11 I'll write this part later; Condition: move = 2, result = 2; Score change: position = 22, foe points = 1 -> links to 10.1 10.12 I'll write this part later; Condition: move = 2, result = 3; Score change: -> links to 10.1 10.13 I'll write this part later; Condition: move = 2, result = 4; Score change: position = 72, points = 1 -> links to 10.1 10.14 I'll write this part later; Condition: move = 2, result = 5; Score change: position = 71, points = 2 -> links to 10.1 10.15 I'll write this part later; Condition: move = 2, result = 6; Score change: position = 69, points = 4 -> links to 10.1 10.16 I'll write this part later; Condition: move = 3, result = 0; Score change: position = 54, foe points = 4 -> links to 10.1 10.17 I'll write this part later; Condition: move = 3, result = 1; Score change: position = 52, foe points = 2 -> links to 10.1 10.18 I'll write this part later; Condition: move = 3, result = 2; Score change: position = 53, foe points = 1 -> links to 10.1 10.19 I'll write this part later; Condition: move = 3, result = 3; Score change: -> links to 10.1 10.20 I'll write this part later; Condition: move = 3, result = 4; Score change: position = 38, points = 1 -> links to 10.1 10.21 I'll write this part later; Condition: move = 3, result = 5; Score change: position = 44, points = 2 -> links to 10.1 10.22 I'll write this part later; Condition: move = 3, result = 6; Score change: position = 50, points = 4 -> links to 10.1 9.2 Continue; Condition move = 1, foe tricky = 9 -> links to 9.1 9.3 Continue; Condition move = 1, foe tricky = 10; Score Change: result - 1 -> links to 9.1 9.4 Continue; Condition move = 1, foe tricky = 11; Score Change: result - 2 -> links to 9.1 9.5 Continue; Condition move = 1, foe tricky = 12; Score Change: result - 3 -> links to 9.1 9.6 Continue; Condition move = 2, foe skill = 9; -> links to 9.1 9.7 Continue; Condition move = 2, foe skill = 10; Score Change: result - 1 -> links to 9.1 9.8 Continue; Condition move = 2, foe skill = 11; Score Change: result - 2 -> links to 9.1 9.9 Continue; Condition move = 2, foe skill = 12; Score Change: result - 3 -> links to 9.1 9.10 Continue; Condition move = 3, foe agility = 9 -> links to 9.1 9.11 Continue; Condition move = 3, foe agility = 10; Score Change: result - 1 -> links to 9.1 9.12 Continue; Condition move = 3, foe agility = 11; Score Change: result - 2 -> links to 9.1 9.13 Continue; Condition move = 3, foe agility = 12; Score Change: result - 3 -> links to 9.1 8.2 Continue; Condition: move = 1, tricky = 9; Score Change: result = 3 -> links to 8.1 8.3 Continue; Condition: move = 1, tricky = 10; Score Change: result = 4 -> links to 8.1 8.4 Continue; Condition: move = 1, tricky = 11; Score Change: result = 5 -> links to 8.1 8.5 Continue; Condition: move = 1, tricky = 12; Score Change: result = 6 -> links to 8.1 8.6 Continue; Condition: move = 2, skill = 9; Score Change: result = 3 -> links to 8.1 8.7 Continue; Condition: move = 2, skill = 10; Score Change: result = 4 -> links to 8.1 8.8 Continue; Condition: move = 2, skill = 11; Score Change: result = 5 -> links to 8.1 8.9 Continue; Condition: move = 2, skill = 12; Score Change: result = 6 -> links to 8.1 8.10 Continue; Condition: move = 3, strength = 9; Score Change: result = 3 -> links to 8.1 8.11 Continue; Condition: move = 3, strength = 10; Score Change: result = 4 -> links to 8.1 8.12 Continue; Condition: move = 3, strength = 11; Score Change: result = 5 -> links to 8.1 8.13 Continue; Condition: move = 3, strength = 12; Score Change: result = 6 -> links to 8.1 7.2 Go for his shorts (tricky vs. foe tricky); Score Change: move = 1 -> links to 7.1 (Their regulation uniforms are tank top, shorts, and jockstrap. No more. No less.) 7.3 Twist his arm (skill vs. foe skill); Score Change: move = 2 -> links to 7.2 7.4 Push him down (strength vs. foe agility); Score Change: move = 3 -> links to 7.3 6.2 Ryan; opponent = 1, foe strength = 9, foe agility = 9, foe stamina = 90, foe skill = 9, foe tricky = 9 -> links to 6.1 (Ryan is a poor wrestler, good for a first match) 6.3 Carl; opponent = 2, foe strength = 9, foe agility = 10, foe stamina = 100, foe skill = 11, foe tricky = 10 -> links to 6.1 6.4 Chad; character = 3, foe strength = 11, foe agility = 12, foe stamina = 120, foe skill = 9, foe tricky = 9 -> links to 6.1 Then it would be more like having chapter 10.2 read: Code: You make as if you're going for {if opponent = 1 }Ryan's{elseif opponent = 2 }Carl's{elseif opponent = 3 }Chad's{else }[error: character not specified]{endif } legs but at the last second, you reach for his shorts. However, he isn't fooled by your trickiness. You'll have to wait until later to figure out whether you fumbled or he was just too savvy himself to fall for it. Either way, right now you find yourself being rolled into a ball and the next thing you know {if opponent = 1 }Ryan{elseif opponent = 2 }Carl{elseif opponent = 3 }Chad{else }[error: character not specified]{endif } has you in a cradle hold. He scores 4 points for his brilliant maneuver and you are severely limited as to what you can do about it. I don't mind having to write several chapters as long as I don't have to write every single branch. But this does mean the potential for both Ryan and Chad to lead to the same result chapter.
(The links on 7.2 to 7.4 should all go to 7.1) Depending on how linear the advantages of the traits are, I kinda feel precalculating the advantage might be advantageous. (E.g. set the base values during character creation or in the Introduction and adjust the values when the opponent is chosen.) If you have 4 traits for each character and you can combine them in any way (e.g. strength against foe tricky) you would need 16 variables. (so [nubmer of traits]^2 variables.) It should be possible to set them without additional chapters. If you can change the opponents and increase the traits between matches, two levels of chapters prior to the match might do the same. (This might also be an advantage if you want to adjust the advantage during the match due to fatigue of the MC or the opponent.) That way, you might be able to avoid all chapters 7.x, 8.x, and 9.x. The chapters 10.2 to 10.8 would then all be titled "Go for his shorts" and link to 10.1. The conditions would be the advantage of move 1. (As you could check for a range of the advantage (e.g. 2 and 3 using the conditions: advantage > 1; advantage < 4) you could use fewer chapters and fallbacks (e.g. advantage > 5 would cover 6 and any possible value due to changes in a trait)) The title of the result would be part of the result chapter. As mentioned, the advantages would need to be linear, so like Code: traitAdvantage = (mcTrait + 3) - (foeTrait) (Though I'm currently not sure whether it would make much sense to do it another way.) Well, you can always modify the text depending on the actual opponent/character. That should work as well, though you would need a child chapter for each of 10.2 to 10.8 that links to the hub chapter 10.1. There might be an advantage in doing something like that as you have more non-link chapters. If they are contained in a single hub chapter, users can only like the chapter once and if they don't realize that they already read the "same" chapter with a different move/result due to a loop, they might accidentally unlike the chapter when they try to like it. On the other hand, users might only reach one or two outcomes of any move, so the likes might be spread over all outcomes and result in a lower "average" (Though as of now, such a stat isn't calculated.) (If the three example opponents are all possible characters, some results can't be reached and you could reduce the number of chapters accordingly.)
Oops. typo. I would not be able to avoid 7.x. As for 8.x and 9.x, I would like to avoid them but trying to work them in earlier might be more complicated than it's worth. How can I precalculate the values before the opponent is chosen. I might be able to precalculate the values for 8.x before the opponent is chosen but 9.x would have to be done immediately after the opponent is chosen. Still, I'll take this into consideration. The only way I could precalculate before the opponent is chosen is to preset all potential opponents which means if I have 32 potential opponents, I would need a minimum of 32^6 = 2,176,782,336 variables. Setting the variables when the opponent is chosen means using only 7 variables: foe strength, foe agility, foe stamina, foe skill, foe tricky, foe level and result. By the way, most of the traits do not change. When you pick what kind of wrestler you are, four of those traits are permanent throughout the whole game. Each opponent has those same four traits and the only changes to foe traits happens when you choose a different foe for your next match. (And you are severely limited in your ability to choose your opponent just like what would happen in a real championship. Your various stats determine who your opponent will be but in this game, your stats allow you to choose from a very limited set of potential opponents.) Ryan's four traits are always the same. Chad's four traits are always the same. Then there is stamina and level. Stamina decreases throughout the match and doesn't fully recover before the next match. Level increases +1 between each match. I would move the texts from 10.2 through 10.22 and more to 10.1 but I plan on expanding those texts a lot and trying to put them all in 10.1 will make 10.1 into one honkingly huge beast of a chapter. I will probably have to break it up anyway just because it's going to wind up that humongous. Huh? The only advantage of move one would be if your tricky was higher than your opponent's tricky. If during the first few chapters, you chose to be a tricky wrestler, your tricky would equal twelve but if you chose say to be a kinky wrestler instead, your tricky would equal 9. The only way to calculate advantage is to either compare tricky to foe tricky and calculate a result, or create a whole bunch more variables. I'm not sure what you mean by linear but I am guessing that my game is not linear at all. It loops several times like a major case of Groundhog's Day. Now I don't know yet where all the chapters will wind up but there is a good chance that it will go something like the following: Code: 1 Itnro 2.1 Are you okay with inces? 3.1 What's the gender of your lover? 4.1 What's your preferred role? 5.1 What type of body does your lover have? 6.1 What type of body do you have? 7.1 What kind of wrestler are you? (This is the one that sets your traits and other similar variables) 8.1 Choose your opponent from this limited set. 9.1 Choose your move. 10.1 Result 11.1 Do you orgasm? 12.1 Are you too tired to continue? Do you call for a timeout? 13.1 If points < 20 and foe points < 20 link to 9.1 13.2 If foe points >19 link to 13.5 13.3 If points >19 and victories < 5 victories + 1, level + 1, arousal = 0, points = 0, stamina + n, foe n = opponent, tank top = 100, shorts = 100, jock strap = 100, position = 1, result = 0, (essentially a reset) link to 8.1 13.4 If victories = 5 link to 13.5 13.5 (this essentially would determine which ending you get. Do you celebrate with your lover or did you lose and several variables will determine how you celebrate or commiserate.) That's just it. I don't want to have to write a bunch of chapters. I might be able to make some small modifications depending on the actual opponent but I don't want to have to create each opponent's entire backstory.
Well, not before the opponent is chosen but when he is chosen or directly after that. Yes, that also wouldn't work for all actual chapters within the match. If you did that, you would need to have that structure 32 times. Here an example of how it would look like. I used 3 traits, so you would end up using 3^2 = 9 variables. The traits of the MC are A, B, and C and the traits of the opponent X, Y, and Z. A would be the equivalent of X and all traits could be used against each other. (Means AX, AY, AZ, BX, BY, BZ, CX, CY, CZ) The base advantage of the MC is 9 = 3, 10 = 4, 11 = 5, 12 =6, and the modifier of the opponents modifier of the advantage are 9 = - 0, 10 = -1, 11 = -2, 12 = -3 The variable "adAX" means advantage MC trait A vs. opponent trait X. (E.g. A = tricky and X = foe tricky) (Depending on implementation there might be additional things to keep in mind but let's do this simplified version first. E.g. you need to "rechoose" the MC type before the match depending on the type you've chosen first by using link chapters to 8.2 to 8.4 before the new match.) Code: 7.1 What kind of wrestler are you? (This is the one that sets your traits and other similar variables) 8.1 Choose your opponent from this limited set. 9.1 Choose your move. 10.1 Do you orgasm? 11.1 [...] 10.2 Go for his shorts; move = 1; Condition: adAX = 0 10.3 Go for his shorts; move = 1; Condition: adAX = 1 10.4 Go for his shorts; move = 1; Condition: adAX = 2 10.5 Go for his shorts; move = 1; Condition: adAX = 3 10.6 Go for his shorts; move = 1; Condition: adAX = 4 10.7 Go for his shorts; move = 1; Condition: adAX = 5 10.8 Go for his shorts; move = 1; Condition: adAX = 6 10.9 Twist his arm; move = 2; Condition: adBZ = 0 10.10 Twist his arm; move = 2; Condition: adBZ = 1 10.11 Twist his arm; move = 2; Condition: adBZ = 2 10.12 Twist his arm; move= 2; Condition: adBZ = 3 10.13 Twist his arm; move = 2; Condition: adBZ = 4 10.14 Twist his arm; move = 2; Condition: adBZ = 5 10.15 Twist his arm; move = 2; Condition: adBZ = 6 10.nn [more moves with results and outcomes] 9.2 Ryan; opponent = 1, X = 9, Y = 10, Z = 9; adAX - 0, adBX - 0, adCX - 0, adAY - 1, adBY - 1, adCY - 1, adAZ - 0, adBZ - 0, adCZ - 0 -> links to 9.1 9.3 Carl; opponent = 2, X = 9, Y = 10, Z = 11; adAX - 0, adBX - 0, adCX - 0, adAY - 1, adBY - 1, adCY - 1, adAZ - 2, adBZ - 2, adCZ - 2 -> links to 9.1 9.4 Chad; character = 3, X = 11, Y = 12, Z = 9; adAX - 2, adBX - 2, adCX - 2, adAY - 3, adBY - 3, adCY - 3, adAZ - 0, adBZ - 0, adCZ - 0 -> links to 9.1 8.2 Type 1; A = 9, B = 10, C = 11; adAX = 3, adAY = 3, adAZ = 3, adBX = 4, adBY = 4, adBZ = 4, adCX = 5, adCY = 5, adCZ = 5 -> links to 8.1 8.3 Type 2; A = 10, B = 11, C = 9; adAX = 4, adAY = 4, adAZ = 4, adBX = 5, adBY = 5, adBZ = 5, adCX = 3, adCY = 3, adCZ = 3 -> links to 8.1 8.4 Type 3; A = 9, B = 9, C = 12; adAX = 3, adAY = 3, adAZ = 3, adBX = 3, adBY = 3, adBZ = 3, adCX = 6, adCY = 6, adCZ = 6 -> links to 8.1 (The chapters 10.nn would also contain the description of the outcome as you mentioned and would each need a link chapter to 10.1.) In the chapters 8.2 to 8.4, the base values of the advantage variables are set. In the chapters 9.2 to 9.4, the modifier gets applied. If you view it like a table with A, B, and C as columns, and X, Y, and Z as rows, then the chapters 8.n would put the same number within each cell of a single row, and the chapters 9.n would modify the numbers with the same modifier within a single column. That way, you can precalculate all later results in these two chapter levels. The possible outcomes of advantage variables are between 0 and 6. If you have a difficult move, you might want to shift the scale, so you might only succeed when the value is 5 or 6, with 0 to 4 leading to different levels of failure. If you want to temporarily change the advantage within a match, it would be no problem as long as the advantage is supposed to be "reset" after the match. E.g. the MC tries a move "Twist his arm (A vs. X)" and fails badly. Due to the outcome (adAX = 0), the MC strained their wrist and their skill B (agility) is reduced by 1. To take that into account, you modify all advantages with B by - 1. As the pain goes away after the match, the change is only temporary. (If you do something like that, you have to take into account values below 0 (e.g. <1) and above 6 (e.g. >5)) (With this approach, you wouldn't really need the variables A, B, C, X, Y, and Z. So you would end up with [number of traits]^2 variables instead of [number of traits]*2 variables. All traits that don't have to interact with the opponent's traits can be counted separately.) There is a difference in the approach if it is even possible that only one trait changes. In that case, you can't do it directly in the Type and Opponent chapter. So let's say the base value A, B, or C can change between matches and due to the possible change, the values can be 9, 10, 11, 12, 13, and 14. Then you need to have one level for A with 6 chapters (for each number 8 to 14), one level for B with 6 chapters, and one level for C with 6 chapters. After that, you choose the opponent. If their values X, Y, and Z could change between matches, you would need to set X, Y, and Z first and then do the same as with A, B, and C. Though I assume that you don't want to do that as you would have to keep track of all opponents' traits even after switching between them. But if you want to go for changes like that, let me know. No, that wasn't about the game being linear. If one point more in a trait always results in one point more in the advantage, it is linear. It wouldn't be linear if a higher difference in the trait points would lead to a higher bonus/penalty in the advantage. E.g. A = 12, X = 12 (difference 0) -> adAX = 3 A = 11, X = 12 (difference 1) -> adAX = 2 A = 10, X = 12 (difference 2) -> adAX = 0 A = 9, X = 12 (difference 3) -> adAX = -3 Here, the last two advantages drop down more than the difference, so it wouldn't be linear. As noted, I guess that doesn't make much sense.