How I made multiple endings for my fish game.

Hey guys. I'm just wanting to put a way to add multiple endings to a game, and change the alias of a monster.

It's "The Legend of the Secret of the Smelly, Stinky Fish." http://textadventures.co.uk/games/view/xb0ge9kzbewhodrtmxnnqw/the-legend-of-the-secret-of-the-smelly-stinky-fish

I actually had The Pixie help me with the code. It was really hard getting it right. I just perfected it today. (I though I did it earlier, but oh well...)

Oh, and I use the web version of Quest.

So now that it's in a presentable form, here's what it looks like:

if (this.hitpoints < 2) {
  this.dead = true
  player.gold = player.gold + 120
  player.exp = player.exp + 40
  this.alias = "Giant Fish Mom"
  this.listalias = "Giant Fish Mom"
  love
  EnableTimer (End game)
  if (Got(spade)) {
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and as quickly as it came, it leaves. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
  }
  else if (Got(pistol)) {
    if (not Got(spade)) {
      msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the pistol fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it moans some more. It leaves, sinking into the abyss. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
    }
  }
  else if (Got(spade)) {
    if (Got(pistol)) {
      msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it stares at the pistol fish too. You give the pistol fish, and as quickly as it came, it leaves. You figure it must be their mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
    }
  }
}
else {
  if (this.hitpoints < 2) {
    this.dead = true
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks directly at you. After staring for a moment, it slowly leaves, slowly sinking into the abyss.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
    player.gold = player.gold + 120
    player.exp = player.exp + 40
    this.alias = "Giant Fish Mom"
    this.listalias = "Giant Fish Mom"
    love
    EnableTimer (End game)
  }
}

I have a bunch of checks to check what type of weapon the player is carrying. The Pixie suggested I check the Hitpoints first before I checked everything else, so I moved things around, which took me a long time... But, now at least the code works!

The this.dead makes sure the enemy stops attacking. (If you don't know about The Pixie's combat tutorial, don't worry about it.)
The gold and exp are just there for show.
The alias are supposed to change "Unknown Giant Monster" to "Giant Fish Mom."
love is my level up function, it's inspired by Undertale.
The Enable Timer enables the timer "End game"... which ends the game after 6 seconds.


I'm thinking maybe you posted an older version of the code by mistake.
If I'm reading this right...

  • The first message appears if you have less than 2 HP, and have the spade
  • The second message appears if you have less than 2 HP, and don't have the spade, and don't have the spade, and have the pistol
  • The third message appears if you have less than 2 HP, and don't have the spade, and don't have the pistol, and have the spade, and have the pistol
  • The fourth message appears if you have less than 2 HP, and have 2 or more HP.
  • No message appears if you have 2 or more HP, or if you Got neither pistol nor spade.

Is that the intended behaviour?


No. I don't think you are reading that right. ...But, I might have to test it...

"The fourth message appears if you have less than 2 HP, and have 2 or more HP."

But this is definitely not right!


Alright, alright, you were about it not printing a message if no pistol or spade was found.

This is what my code looks like now.

if (this.hitpoints < 2) {
  this.dead = true
  game.progress = game.progress + 1
  player.gold = player.gold + 120
  player.exp = player.exp + 40
  this.alias = "Giant Fish Mom"
  this.listalias = "Giant Fish Mom"
  love
  EnableTimer (End game)
  if (Got(spade)) {
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and as quickly as it came, it leaves. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
  }
  else if (Got(pistol)) {
    if (not Got(spade)) {
      msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the pistol fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it moans some more. It leaves, sinking into the abyss. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
    }
  }
  else if (Got(spade)) {
    if (Got(pistol)) {
      msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it stares at the pistol fish too. You give the pistol fish, and as quickly as it came, it leaves. You figure it must be their mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
    }
  }
  else {
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks directly at you. After staring for a moment, it slowly leaves, slowly sinking into the abyss.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
  }
}

I actually made the game.progress attribute, as a request from XanMag.


The third block is still unreachable.

If the initial if (Got(spade)) { is true, then all the else blocks are skipped. If the second else if (Got(pistol)) { is true, then all the remaining else blocks are skipped. So the 3rd condition else if (Got(spade)) { is only even checked if Got(spade) and Got(pistol) are both false. I stand by my earlier analysis, "The third message appears if you don't have the spade, and don't have the pistol, and have the spade, and have the pistol".

As it's the same message as the first one as far as I can see, you could probably cut it out.

The if (not Got(spade)) { around the second message also has no effect. If you had the spade, the first message would already have been output and the else if clause wouldn't have been checked.

So unless Got can return false and then true without changing anything in between, you can cut your code down to:

if (this.hitpoints < 2) {
  this.dead = true
  game.progress = game.progress + 1
  player.gold = player.gold + 120
  player.exp = player.exp + 40
  this.alias = "Giant Fish Mom"
  this.listalias = "Giant Fish Mom"
  love
  EnableTimer (End game)
  if (Got(spade)) {
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and as quickly as it came, it leaves. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
  }
  else if (Got(pistol)) {
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the pistol fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it moans some more. It leaves, sinking into the abyss. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
  }
  else {
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks directly at you. After staring for a moment, it slowly leaves, slowly sinking into the abyss.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
  }
}

Well... I need there to be an option for having both the pistol and the spade, I do. If only for the dialogue option.


Ah, I didn't see the difference in the text.

As you have it, the one for both won't be displayed. It just checks if you've got the spade, and displays that message. To choose based on two things, either, or both, you'd want either:

if (Got(spade)) {
  if (Got(pistol)) {
    // code for both here
  }
  else {
    // code for spade only here
  }
}
else {
  if (Got(pistol)) {
    // code for pistol only here
  }
  else {
    // code for neither here
  }
}

or:

if (Got(spade) and Got(pistol)) {
  // code for both here
}
else if (Got(spade)) {
  // code for spade only here
}
else if (Got(pistol)) {
  // code for pistol only here
}
else {
  // code for neither here
}

Or, one that stays kind of managable if you might have more things to check in future:

conditions = ""
if (Got(pistol)) {
  conditions = conditions + "pistol"
}
if (Got(spade)) {
  conditions = conditions + "spade"
}

switch (conditions) {
  case ("pistolspade") {
    // both
  }
  case ("pistol") {
    // pistol
  }
  case ("spade") {
    // spade
  }
  default {
    // neither
  }
}

(I tend to use the last one if there's three or more different things the text will depend on, or if I might be adding another fish in future edits, because it means I can just add more options to the switch statement rather than making a more complex block of code. I find it's more readable that way)


Alright. So I have this now.

this.dead = true
game.progress = game.progress + 1
player.gold = player.gold + 120
player.exp = player.exp + 40
this.alias = "Giant Fish Mom"
this.listalias = "Giant Fish Mom"
love
EnableTimer (End game)
if (Got(spade)) {
  msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and as quickly as it came, it leaves. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
}
else if (Got(pistol)) {
  if (not Got(spade)) {
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the pistol fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it moans some more. It leaves, sinking into the abyss. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
  }
}
else if (Got(spade) and Got(pistol)) {
  msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it stares at the pistol fish too. You give the pistol fish, and as quickly as it came, it leaves. You figure it must be their mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
}
else {
  msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks directly at you. After staring for a moment, it slowly leaves, slowly sinking into the abyss.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
}

As before, the conditional else if (Got(spade) and Got(pistol)) { will never be true. If you have the spade, it will already have displayed the first message, so won't get that far. If the player has both a spade and a pistol, the first test Got(spade) is true. And in a list of else if clauses, it will only do the first true one.

If you're using a list of else if clauses, you need to have the 'and' one first. Either that or make it explicit:

if (Got(spade) and not Got(pistol)) {
  ...
}
else if (Got(pistol) and not Got(spade)) {
  ...
}
else if (Got(spade) and Got(pistol)) {
  ...
}
else {
  ...
}

it takes awahile to understand this 'code/if' logic (and logic in general is not easy for everyone. It's like math, some people get it quickly/well, and others don't and/or struggle with it), whereas, we've been coding for awhile, having trained our brain to this 'code/if' logic, but it took us (well at least me anyways) quite some time too to understand it, and how to sequence/order our scripting so it works correctly.


here's some examples of various logics:

(see if you can understand them, and if not, ask us, and we'll try to help explain it to/for you)

// max to min:

(I do '> 89' instead of '>= 90' because it's less operations/more-efficient, but you can certainly do '>= 90', as it's much more human-friendly)

if (test.score > 89) {
  test.grade = "A"
} else if (test.score > 79) {
  test.grade = "B"
} else if (test.score > 69) {
  test.grade = "C"
} else if (test.score > 59) {
  test.grade = "D"
} else {
  test.grade = "F"
}

// min to max:

if (test.score < 60) {
  test.grade = "F"
} else if (test.score < 70) {
  test.grade = "D"
} else if (test.score < 80) {
  test.grade = "C"
} else if (test.score < 90) {
  test.grade = "B"
} else {
  test.grade = "A"
}

// ---------------------------

// differences between a single 'if/else-if' if block and multiple 'if' if blocks:

player.strength = 75
player.endurance = 25

if (player.strength = 75) {
  msg ("A")
} else if (player.endurance = 25) {
  msg ("B")
}

// output/results:
A

// ---------

player.strength = 75
player.endurance = 25

if (player.strength = 75) {
  msg ("A")
}
if (player.endurance = 25) {
  msg ("B")
}

// output/results:
A
B

// -------

player.strength = 50
player.endurance = 25

if (player.strength = 75) {
  msg ("A")
} else if (player.endurance = 25) {
  msg ("B")
}

// output/results:
B

------------

// more conditions to fewer conditions (WORKS CORRECTLY):

if (player.poisoned and player.paralyzed) {
  msg ("you're poisoned and paralyzed")
} else if (player.poisoned) {
  msg ("You're poisoned, but not paralyzed")
} else if (player.paralyzed) {
  msg ("You're paralyzed, but not poisoned")
} else {
  msg ("you're neither poisoned nor paralyzed")
}

// ----------------

// fewer conditions to more conditions (does NOT work correctly):

if (player.paralyzed) {
  msg ("ERROR: you're paralyzed (and maybe also poisoned too!)")
} else if (player.poisoned) {
  msg ("You're poisoned but not paralyzed")
} else if (player.paralyzed and player.poisoned) {
  msg ("ERROR: this can never happen / never be reached")
} else {
  msg ("you're neither poisoned nor paralyzed")
}

// ---------

// from complement (not/opposite) conditions to conditions (WORKS CORRECTLY: more conditions to less conditions):

if (not player.poisoned and not player.paralyzed) {
  msg ("you're neither poisoned nor paralyzed")
} else if (player.poisoned and not player.paralyzed) {
  msg ("You're poisoned but not paralyzed")
} else if (player.poisoned) {
  msg ("You're poisoned and paralyzed")
} else if (player.paralyzed) {
  msg ("You're paralyzed but not poisoned")
}

// or:

if (not player.poisoned and not player.paralyzed) {
  msg ("you're neither poisoned nor paralyzed")
} else if (player.poisoned and player.paralyzed) {
  msg ("You're poisoned and paralyzed")
} else if (player.poisoned) {
  msg ("You're poisoned but not paralyzed")
} else if (player.paralyzed) {
  msg ("You're paralyzed but not poisoned")
}

// ---------

// does NOT work correctly:

if (not player.poisoned and not player.paralyzed) {
  msg ("you're neither poisoned nor paralyzed")
} else if (player.poisoned) {
  msg ("ERROR: You're poisoned (and maybe also paralyzed too!)")
} else if (player.paralyzed) {
  msg ("You're paralyzed but not poisoned")
} else if (player.poisoned and player.paralyzed) {
  msg ("ERROR: this is never reached / never gotten to")
}

Maybe you like putting everything in backwards (which from every fancy code I've seen, seems to be the most common practice), but I prefer putting a bunch of Nots.
Of course your way is fine too.

if (this.hitpoints < 2) {
  this.dead = true
  game.progress = game.progress + 1
  player.gold = player.gold + 120
  player.exp = player.exp + 40
  this.alias = "Giant Fish Mom"
  this.listalias = "Giant Fish Mom"
  love
  EnableTimer (End game)
  if (Got(spade)) {
    if (not Got(pistol)) {
      msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and as quickly as it came, it leaves. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
    }
  }
  else if (Got(pistol)) {
    if (not Got(spade)) {
      msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the pistol fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it moans some more. It leaves, sinking into the abyss. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
    }
  }
  else if (Got(spade) and Got(pistol)) {
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it stares at the pistol fish too. You give the pistol fish, and as quickly as it came, it leaves. You figure it must be their mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
  }
  else {
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks directly at you. After staring for a moment, it slowly leaves, slowly sinking into the abyss.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
  }
}

using 'not' is fine, and sometimes it is more human-friendly and/or more common-sensical in understanding what you're trying to do by using it.

it is an extra operation, but one of the quickest operations, so it's not a big deal at all. We just like removing this extra operation of 'not' when/if we can, but sometimes to do that, you got to be more creative or think weirdly-backward'ly on how to order around your scripts, it's a "puzzle" that we enjoy, lol. It takes time though to train your brain to think in this way, as it is often times back-wards from normal/natural thinking. Some of us just like being as efficient as we can with code, but efficiency doesn't matter unless you actually experience a slow-down in performance speed of the program using your code, and/or if you're coding for a critical (life and death) system (like a car's/air-plane's/jet's controls' response times) and/or are working with a very small physical volume that can't hold much computer parts, then is code efficiency of vital importance, obviously. Otherwise, again, efficiency only matters if you actually notice a slow-down in performance when using the program that has your code. If you don't notice any sluggishness/slowness, then your efficiency is fine, as it's not making any impact.


The Pixie

At least from everything I've seen, The Pixie always codes everything backwards, putting the exception s to the codes first.

This is just an attack command.

if (not HasBoolean(object, "dead")) {
  msg ("That's not something you can attack.")
}
else if (object.dead) {
  msg ("That one is already dead.")
}
else {
  if (player.equipped = null) {
    DoAttack (player, player, object, false)
    attackturnscript
  }
  else {
    DoAttack (player, player.equipped, object, false)
    attackturnscript
  }
}

Beware of nested 'if' statements in a block with an 'else' case.

You have

  if (Got(spade)) {
    if (not Got(pistol)) {

which I think should be:

  if (Got(spade) and not Got(pistol)) {

The difference is that in the first one, having the spade is sufficient to make it ignore all the 'else if' cases. So if the player has both a spade and a pistol, nothing is printed.


The difference is that in the first one, having the spade is sufficient to make it ignore all the 'else if' cases. So if the player has both a spade and a pistol, nothing is printed.

Dude!

You just solved an issue I was having in one of my scripts!


mrangel, you rock, sir!


you can still do it, but it'd take more if/else and you have to be careful in your scripting order and nesting to cover all combinations correctly:

if (Got(spade)) {
  msg ("spade")
  if (not Got(pistol)) {
    msg ("spade but no pistol")
  } else {
    msg ("spade and pistol")
  }
} else {
  msg ("no spade")
  if (not Got(pistol)) {
    msg ("no spade and no pistol")
  } else {
    msg ("pistol but no spade")
  }
}

different designs are better (less lines and/or less operations) or worse (more lines and/or more operations), but there's a lot of different designs that will work, lots of combinations of designs.


I had an else if, but no else. I forgot. (DOH!)


oh, just a simple 'left -off-code-part' mistake, it happens all of the time, laughs.


There. I got this now.

I still think it shouldn't ignore everything after the "if (Got(spade)) {".
It seems stupid... it makes the machine look stupid.

if (this.hitpoints < 2) {
  this.dead = true
  game.progress = game.progress + 1
  player.gold = player.gold + 120
  player.exp = player.exp + 40
  this.alias = "Giant Fish Mom"
  this.listalias = "Giant Fish Mom"
  love
  EnableTimer (End game)
  if (Got(spade)) {
    if (not Got(pistol)) {
      msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and as quickly as it came, it leaves. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
    }
    else if (Got(spade) and Got(pistol)) {
      msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the stinky fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it stares at the pistol fish too. You give the pistol fish, and as quickly as it came, it leaves. You figure it must be their mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
    }
  }
  else if (Got(pistol)) {
    if (not Got(spade)) {
      msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks at the pistol fish you are holding. At first you don't know why, but then you figure it wants the fish. You hold it out. It grabs the fish, and it moans some more. It leaves, sinking into the abyss. You figure it must be its mother.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
    }
  }
  else {
    msg ("The monster crashes. You freeze in fear. You stare at the monster in silence for a moment. Then, the monster starts moaning, almost crying. It then looks directly at you. After staring for a moment, it slowly leaves, slowly sinking into the abyss.<br/>You then see some light pouring in. You follow it, and find the way out. After that, you live out your normal life.")
  }
}

By the way, it turns out HK was right, instead of mrangel. Oddly enough.


there's lots of code designs you can do (better and worse designs, mine was just showing that you can get that design to work to it'd take more if/else-if/else code lines and operations: thus being a worse/less-efficient design), and also in whether you want to address every combination (4 combinations = 2 items = 2^2 = spade and pistol, spade but no pistol, pistol but no spade, and no spade and no pistol) or not.


4 combinations = 2 items (spade and pistol) with 2 states (yes:1/no:0 :: have:1/don't_have:0) = 2^2 = (2 states)^( 2 items)

xxxxxxxxx | spade | pistol | no spade | no pistol
spade ......| ......... | ....1.... | .............. | .....2 .....
pistol ...... | ...3..... | ......... | .....4...... | .............

you always have 2 states: have and don't have

so the formula for combinations:

number of combinations = 2^N
// N = the number of items
// 2 = the number of states

for example, 3 items:

2^3 = 8 combinations

xxxxxxxxx | spade | pistol | ....axe.....| no spade | no pistol | no axe
spade ......| ......... | ....1.... | ......2....... | ................| .....3 ...... | ....4....
pistol ...... | ......... | .......... | ......5....... | .............. | ................| ....6.....
axe ..........| ..........|........... | ...............| ......7....... | .......8...... | ...........

(if you're a computer person, you get these memorized... lol. computers are digital: binary: 2 states: 1=on=true=X_volts and 0=off=false=Y_volts, computer memory especially, look at your computer memory... it'll be a multiple of 2, aka: 2^N)

2^4 = 16 combinations
2^5 = 32 combinations
2^6 = 64 combinations
2^7 = 128 combinations
2^8 = 256 combinations
2^9 = 512 combinations
2^10 = 1024 combinations
2^11 = 2048 combinations
2^12 = 4096 combinations


Log in to post a reply.

Support

Forums