Axure HQ has another “Random” game to share with you today!
Our Random arcade already includes instant classics such as Rock, Paper, Scissors, Lizard, Spock, Threes!, Simon’s Great Sloth Hunt, and great nostalgic games like Axure Quest VIII, The Monty Hall Problem, Julie's Game of Cards, and Deal or No Deal. Today I’m here to present you with another throwback to the days when you wanted to battle as many little monsters as possible with your own little monsters.
It’s Something Monsters! You gotta get some of ‘em, if you want to be a Something Monster Master. Something Monsters has you choose a name, a monster, and then allows you begin your journey into the monster realm by teaming up with your friend, another Monster trainer, and challenging the two of you to a double monster trainers battle. Each Something Monster has its own strengths and weaknesses, so choosing the right move to use in the trainer challenge can make a Something world of difference. Pick a move, then watch your friend pick a move, and see if the pair of you can win the trainer challenge together! If you win the battle, you can return to the title screen, tell the forgetful Professor your name again, and try the challenge with the other Something Monster!
Try it for yourself here!
Here’s a breakdown of how the Something Monster universe works:
Choosing your monster
Choosing your monster on the title screen and then clicking the “Start” button will direct you to one of two different versions of the battle (two different pages). Which monster you choose will affect the moves you have access to, the moves your friend has access to, and the order in which the monsters battle.
To ensure that all the monsters wait their turn to attack, there are monster move global variables that start at zero. When the user chooses an attack, a move is added to their monster’s move variable.The next monster in line is inclined to take their turn if the monsters before them have the same number of moves, and the number of moves for that particular monster is one less than the move used by the previous monster in the turn rotation.
When all four monsters have had a turn and have the same move count, the user is able to choose their next move, and the turns begin again. When an enemy monster has fainted, their move count is made to equal the user monster’s move count, so that the fainted monsters move is effectively skipped over.
Randomizing which move to use
When it is a monster’s turn, a Math.Random event fires. It is tied to a global variable for the monster, and the value is used to select which move the monster will use. Each monster has three possible moves, so the game needs a random number between 1 and 3.
[[Math.floor(Math.random() * 3) + 1]]
The value created by the Math.Random function fires an OnClick event for one of the three move options for the monster.
Randomizing which monster to target and move accuracy
When a user or a randomized monster has chosen their move, more randomization is used to decide whether the move will hit or miss, and in the randomized monsters case, it also decides which monster they will target.
For the user’s moves and for monster moves where there is no outside target, the randomize function is made to range between 1 and 20. When a randomized move is chosen that requires an outside target, the range is between 1 and 40. Each move has its own accuracy, and that accuracy affects what amount of the range will count as a hit or a miss.
This requires a maximum and minimum range for the Math.Random function. To disallow a return of zero, maximums are made to be either “21” or “41” depending on the user and the move, and a minimum of 1 is added to the total.
In this game’s case, the random number is within a text box that the move events pull from.
When Flyflyfly’s Exo Polish’s OnClick case is fired (either by the user or by the randomized event), the text on the box is set to [[Math.floor(Math.random() * (21-1) + 1)]]. Because the accuracy for the move is 75, if the randomized number is between 1 and 15, the move is successful. If the randomized number is greater than 15, the move misses.
If the move requires a target and is fired by a randomize function, then the first half of the range is used for the first target, and the other half for the second target. 1-20 of a randomized Clearic’s Positivity Punch is directed towards Fiteme, and 21-40 is directed towards Liapurr. Additionally, if one of the two targets has fainted, the range is altered to limit the range only to the remaining fighting monster. If Fiteme has fainted, for example, the range of the move Positivity Punch becomes [[Math.floor(Math.random() * (41-21) + 21)]].
Damage done, defense changes and defense caps
If a monster’s move hits the targeted monster, damage will be done to the targeted monster’s health. The amount of damage done is influenced by the monster’s type. A bug type move like Flyflyfly’s Bug Bite is not very effective against a Fighting type such as Fiteme, but the move is super effective against a Dark type such as Liapurr, so the move does different amounts of damage depending on the target.
The amount of damage is also affected by the monster’s global variable Defense. Flyflyfly, Clearic, and Fiteme all have moves that affect their defense, and this is taken into account when these monsters are hit by any moves. While Liapurr does not have any moves to boost its own defense, it does have a move that will decrease the user and friend monsters defenses.
When Flyflyfly’s Bug Bite hits Fiteme, the global variable FiteHealth is set to [[FiteHealth - (50 * .5) + ((FiteHealth - (50 * .5)) * (FiteDef / 100))]].
Bug Bite’s damage is cut in half because of Fiteme’s Fighting type advantage (50 * .5) and then Fiteme’s health gets a bonus amount added if the defense variable is greater than 0.
To avoid bringing the game to a halt, or having it end too quickly, all defense changing moves have a cap. If a defense global variable equals 4 or -4, the defensive move used is not effective.
When damage is dealt, the health bar for the damaged monster is set to show the new Health variable with no decimals, courtesy of .toFixed(0).
When a monster’s Health variable is less than or equal to 0, the monster faints. When both enemy monster’s faint, the player wins the game and is shown a victory screen. If the user’s monster faints, the user is shown a defeat screen.
Additionally, the user and friend team can get some hit points back with Clearic’s healing move, which adds 5% of the targeted monster’s current health to their health total if the monster’s health is not already at its maximum number.
One more fun fact about Something Monsters is that all of the artwork featured in the game was made by me! Thanks for reading, and happy monster getting!
SomethingMonsters.rp (492.8 KB)