Description: (Submission for Custom Board Contest #5, themed after Time)
The Clockwork Courtyard is home to cogs and gears, with towering walls and soothing waves that surround a quiet, but colorful town.
As turns progress on this board, the time of Day will transition to Night, and eventually back to Day. The gears on the floor will determine where you go, as when Night falls players will go in the opposite direction on them. Certain visitors will only appear during the Day or during the Night, and some characters may be difficult to reach during the Day. Several landmarks that players will visit include the Solar Tower or Lunar Tower where Tumble will invite the player to wish for a solstice event, and the clockwork center where Tumble will invite the player to play a game called Timing Tuner where the they will time when to stop the spinning clock hand.
Passive Board Events:
- Shifting Gears: During the Night, all gears on the floor will have their paths reversed from the direction they were going during the Day. - Day and Night Cycle: Every 3 turns the Day will transition to Night and vice versa. While playing, the HUD will display the number of turns remaining for the current Day or Night. - Estival Solstice Cycle: During the estival solstice event, there will be a total of 4 turns of Day with only 2 turns of Night following it. A solstice event cannot occur until it transitions back to Day. - Hibernal Solstice Cycle: During the hibernal solstice event, there will be a total of 4 turns of Night with only 2 turns of Day following it. A solstice event cannot occur until it transitions back to Night. - Snufit Morning Delivery: If you ordered from Snifit 'N' Ship it, a Snufit will come over to deliver your order on the first turn it becomes Day, for the eligible Days following your order. If your inventory is full, the Snufit will visit the next time it becomes the first turn of Day. - One Way Boo: The path after Boo can only reached by going forward to Boo, meaning it is not possible to reach Boo by going in reverse through a Reverse Mushroom or Reverse Curse. This prevents players from triple dipping on Boo with a Reverse Mushroom, though, a player can still make clever use of a Reverse Mushroom at a different path to reach Boo soon after visiting them.
Visiting Board Events:
- Snifit 'N' Ship it: These Snifits will stick around in a truck during the Day and offer the player to order a package of items, either 2 Mushrooms, 2 Skeleton Keys, or 2 Warp Blocks, for 10 coins. A Snufit will come to deliver the items to the player, one at a time, the next two times it transitions to Day. If the player's inventory is full at the time the Snufit visits, the item, and any remaining items, will be delivered a Day later. A player can only order one package of items at a time, but if they visit this shop while they have an active order, they will earn bonus coins based on what items they picked (+5 coins for Skeleton Keys, +3 coins for Warp Blocks, +2 coins for Mushrooms). CPUs will always pick to order Mushrooms if they can afford it. - Night Ride: A mysterious ghoulish driver will offer the player a lift to the end of the street during the Night for a fee of 10 coins. This will warp the player onto the path on the left side of the map that ends up leading to Boo. CPUs will always catch a ride if they can afford it. (This character is based on an unused design shown in concept art for Super Mario RPG by the enemy designer).
Happening Events:
- Turning Gear: When landing on a Happening Space found on a gear, the player and all other players on the same gear will be moved onto the red panel at the end of the path. - Timing Tuner: When landing on a Happening Space around the clockwork center, the player will be invited to play a game where they must stop a spinning clock hand by pressing A. If they stop the clock hand over one of the 3 rewards below, they will earn that reward. During the Day the rewards are 10 coins, 5 coins, and 15 coins. During the Night the rewards are Reverse Mushroom, Skeleton Key, and Golden Mushroom (if inventory is full the rewards will instead be 5 coins, 5 coins, and 10 coins). The clock hand will decelerate after pressing A at the same rate it accelerated, the speed of the clock hand is dependent on your placement (1st is fastest, 2nd/3rd is normal, 4th is slowest). CPUs are able to play but their difficulty is not taken into account, they will press A at a random point in a range where they are likely to get a reward. - Solstice Event: When landing on a Happening Space around the Solar Tower or Lunar Tower, the player will be asked if they wish to extend the Day or Night respectively. During the Day, they can wish for an Estival Solstice, which extends the current Day to 4 turns and shortens the following Night to 2 turns. During the Night, they can wish for a Hibernal Solstice, which extends the current Night to 4 turns and shortens the following Day to 2 turns. While a Solstice Event is active, nothing will occur when landing on this Happening.
Minor Bugs:
- Repeating Sound when Pausing If a player pauses during an event that plays a continuous sound, such as the ticking sound that plays during the Timing Tuner, it will still play while on the Pause screen. Going deeper in the options of the Pause screen may play a sound that overrides the continuous sound, but then it won't start playing again when you return from the pause screen. This should not effect gameplay, but please keep this in mind and avoid hitting pause while a player or CPU is playing out an event.
FAQ:
- How do I reach Boo? The path to Boo is only reachable from the gear right before it, meaning it either needs to be Night time or you need to be under a Reverse Mushroom/Curse to reach it. Additionally, taking the Night Ride will set you onto the path that leads to Boo (7 spaces away). Keep the time of day in mind as you have the most chances of getting to Boo the moment it transitions to Night.
- How does the Reverse Mushroom or Reverse Curse interact with the gears? When going in Reverse, everything functions how you would expect in that you would go in the reverse direction you would have been going for that time of day. You will get a lot of options for the junctions and merges that appear, so I recommend keeping a Reverse Mushroom to be able to reach areas you normally wouldn't be able to due to the time of day.
- Why did the Day and Night Cycle HUD disappear? The message box goes away when the scene transitions out of the board, such as for a Duel or Battle mini-game, or when a major transition happens, such as a Star going to a new location. It will show up again at the start of the next player's turn, but keep this in mind before performing any actions so you don't miss out on vital information.
- Why can I order from Snifit 'N' Ship it during the Last Turn (or when the game is about to end)? The Wacky Watch item can always extend the game by 5 more turns if used on the last turn. Since the time of day iterates independently of the number of turns remaining, this means that there is a situation where ordering from Snifit 'N' Ship it can result in you getting the item(s) despite the game seemingly ending soon, so having it close during the last few turns wouldn't make sense.
- While under a Reverse Mushroom/Curse, why couldn't I choose which path to take immediately after visiting Boo or taking the Night Ride? The path after Boo and the path you are dropped off at from the Night Ride are separated from the main path, which means the space they merge onto is not a traditional merge, so you will continue moving forward until the next merge or junction. As these paths are meant to be one way, it isn't possible to allow the user to choose which path to take at the merge while also preventing them from being able to reverse into the one way path. Keep this in mind before you plan to use your items.
- Why is the CPU taking so long to press A in the Timing Tuner event? The CPU is effectively counting up to 128 from a random number between 0-127 for every frame the clock hand is angled within a specified range. If the CPU is in first, the clock hand spends much less frames within that specified range, so it takes longer to count up to the desired value. Regardless, they will eventually press A, so you won't get stuck waiting too long because of RNG.
Credits:
Code repurposed from various events found on publicly available boards/events created by Airsola™, MarioComix, and Rain. Title font modified from the Mario-Party-Hudson.font available on ffonts.
Technical Info:
- Day/Night Cycle Ram: + The board uses two Board RAM addresses dedicated to the Day/Night Cycle, one for the time of Day counter and and one for the time of Day convenience flag. + The time of Day counter iterates by 1 for each Day and 4 for each Night, so that the lower 4 bits determines how far into the cycle the game currently is. The time of Day also includes a flag on the higher bits to indicate either the estival solstice or hibernal solstice, which reinterprets the 1st turn of Night as the 4th turn of Day or the 1st turn of Day as the 4th turn of Night respectively. + The time of Day convenience flag indicates if the current turn is Day or Night with the lower bits being 0 or 1 respectively. The upper bits indicate if it is the first turn of the current time of Day, with 0 indicating that it is and 1 indicating that it isn't. This is set whenever the Day counter is iterated at the end of the turn, and is used by all events that need to know the time of day and if it just transitioned to a new time of day. + The board loads a different background by checking the time of Day convenience flag.
- Snifit 'N' Ship it Ram: + The board uses two Board RAM addresses dedicated to Snifit 'N' Ship it, one for the item type ordered and one for the number of items remaining. + Each 2 bits is dedicated to each player, with Player 1 being the lowest 2 bits, for both addresses. The game checks the current player index and shifts the bits to reach the 2 bits that represent that player. + The game checks the 2 bits for a player to see what item they should get, with 0 indicating they have not ordered anything. This is also checked when visiting the shop, as the player can only order one thing at a time, instead making it so that the player earns a small amount of coins based on the type of item they ordered. + The game checks and iterates down the number of items remaining when they deliver an item to the player. If the player's inventory is full, thus preventing a delivery, the value will remain unchanged.
- Display Time Message Box and Ram: + At the start of each player's turn, the game will check to see if the message box queue is at 0, and if so, will create a new message box that holds the information for the current time of day and store the message box ID into Board RAM. Otherwise, if the message box ID in Board RAM is currently active it will instead update the same message box at the start of the player's turn, which would allow a solstice event to display the new amount of turns. + The message box queue is at 0 only whenever the game has transitioned from a state that erased all message boxes, such as when the star relocates or after a mini-game has taken place. However, if a message box comes up at any point afterwards, such as if a Duel mini-game occurred, then it is very likely the message box queue will stay a 0x02, with the HUD for time of day not present. The solution for this was to create a new empty message box and then close it, then if the message box queue did iterate, we were safe to update the message box at the stored message box ID. Otherwise if the message box queue is the same value as the message box ID, then we will have to create a new message box for the time of day and set its new message box ID. + Because of adding and removing a new message box as a check, this will display a little "refresh" animation over the HUD every player's turn. + The current time of day is determined by the time of Day counter in Board RAM, for it needs to display something different for the every possible combination, including solstice events.
- Turning Gear Warp and Model Placement: + The turning gear warp sets the player that landed on the Happening space to be set onto an empty space separate to, but overlapping, the empty space that the other players are moved to by the event (these empty spaces are connected to each other but nothing else). Additionally, all the included player's models are set to a position around the empty space, offset so as to not overlap with each other. This prevents the game from triggering a Duel during the last 5 turns, as well as ensure that the player counted as having landed on a Happening. + Before each player's turn, the game checks to see if any players are present on these empty spaces so as to set them all onto an empty space (that overlaps the other ones) that is connected to the main path, while also offsetting their models again to avoid any model overlap.
- Reverse Movement on Gears: + When the board transitions to Night, the game begins the turn by checking all spaces that are on top of gears to see if a player is on them, and if so, swaps the player's next chain index and next chain space index with their prev chain index and prev chain space index respectively, while setting the lowest bit of their status flags to be 1 to tell the game the player is going backwards. + When the board transitions to Day, the game begins the turn by checking all spaces that are on top of gears to see if a player is on them, and if so, swaps the player's next chain index and next chain space index with their prev chain index and prev chain space index respectively, while setting the lowest bit of their status flags to be 0 to tell the game the player is not going backwards. + Junctions set on the gear path work automatically regardless of the direction the player is going. + While it is Night time, when the player passes the empty space merging onto the gear paths they will have their status flag set to be going backwards and then have their next space set to the one opposite of the direction for Day (this event is ignored while the player is under a Reverse Mushroom/Curse as they will get a choice for what path to take instead). + While it is Night time, if the player lands on any space found on a gear, the game will check to see if they were under the effects of a Reverse Mushroom/Curse as it would normally erase the player's status flags after landing. To compensate for this, we set the status flags back to 1 and swap the next/prev space so that the player appropriately goes backwards. + When the gear path converges back to the main path, the forward path for Day is set to connect to the converging path naturally, but the forward path for Night requires several unconventional spaces and events to handle this. This is done by having 3 empty spaces, which we define as empty space A, B, and C. Space B connects forward to A, as well as forward to C, this space will never be reachable by the player and only exists to define the previous space for spaces A and C. Space A will connect forward to the main path, while space C will connect forward towards the gear path (seemingly as a dead end during Day). If the player passes space A while going backwards, the event will set the player's status flags to have the bit indicating backwards movement to be erased, then setting the player's next space to be space C. If the player passes space C while going backwards, the event will set the player's status flags to have the bit indicating backwards movement to be erased, then setting the player's next space to be space A. This works out for all cases, being if the player is using a Reverse Mushroom/Curse or if the player is moving backwards by the gear at Night.
- Snufit Model Loading: + Models for the Snufit are loaded onto the current player's space with the default animation and an invisible shadow. They descend by having a loop play out for altering their Z position, and this loop is reversed to have them ascend after, ending with the model being unloaded. This event plays out before a player's dice roll.
- Timing Tuner Model Loading: + Models from Tick Tock Hop are loaded onto an empty space as 3 components with different Z position offsets (the large clock base, one of two clock hands, and the embedded base on top). The player model is set to a Z position above the other models. The clock hand that is chosen to be loaded is based on the whether it is Day or Night, and comes with it's own shadow included by default. + The animation that plays for spinning the clock hand models is just performing a rotation of the model to a certain angle that is set every frame. The function for setting a model's rotation based on angle was provided by Rain's ModelFunction.s event. + The clock hand accelerates to a specified speed (change in angle per frame) determined by the player's position (6 degrees per frame for 4th, 12 degrees per frame for 3rd/2nd, and 24 degrees per frame for 1st). When the player presses A, the clock hand will decelerate by reversing the same process it took to accelerate. + The models are all unloaded and the player's model is set back to their space position during the transition screen.
- CPU A Press Ram: + Though not necessary to be in a Board RAM address, when the player is known to be a CPU at the start of the Timing Tuner event the game will point to this Board RAM address rather than the controller's input address. This address will ultimately store a value between 0-127 determined by RNG, that is counted up by 1 per frame while the rotational angle of the clock hand is between a range of 330-360 degrees or 0-120 degrees, assuming 0 degrees is straight down and 90 degrees is straight right. When the value reaches 128, it will match the value that indicates the player is pressing A (0x80) so the game will act as if the CPU had pressed A. + The speed at which the clock hand rotates if the player is in 1st is 24 degrees per frame, which means it goes pretty far when decelerating after pressing A, so it is somewhat common for a CPU in 1st to miss getting a reward as the range they can press A has a lot of frames where they will end up missing.
- Merge Space Fix: + All traditional merge spaces have a landing event that checks if the player landed on it while going in reverse, in order to set the previous space to be on the main path to that merge space. This is because in this situation the game does not know what to put for the previous space for the player, and leaves it as an invalid chain space index. This event fixes that issue by setting the appropriate previous space.
- One Way Paths: + One way paths are disconnected from the rest of the board by having a dead end empty space with an event that sets the next space to be on the main path. That space on the main path has an event that sets the previous space to also be on the main path if landed on, as it would otherwise be pointing to the one way path the player came from. + This is also how the start space and drop off space from the Night Ride event are handled.
- Transition Animation: + A small transition animation is played after passing Boo to indicate that the player is going through an alleyway. This is just set up so that an empty space has an event that fades the screen to black, before the player moves onto the next empty space which has an event that fades back in from black.
- Continuous Sounds: + The sounds that play for Timing Tuner and Turning Gear are sounds that end up playing on repeat until another function is called with a specific parameter to halt the sound. This function is not documented or well known, as such it is unknown whether the parameters used for the function are even correct or if it is merely a coincidence that it happens to stop the sound.
Posted by: morteriser September 07, 2021
Rating:     by 1 members.
|