Interaction type

From Ukikipedia
Jump to navigation Jump to search

An interaction type is a property that all objects have. Most objects have exactly one interaction type, but some have zero. No object may have more than one, and if one is hacked to have more than one, it will crash the game as Mario thinks that he is interacting with two different objects, each with one interaction flag, and cannot find them. Interaction types are analogous to action flags, but interaction flags are not, which can be a source of confusion.

List

Index/log2 Description Mask
00 Hoot 0x00000001
01 Grabbable 0x00000002
02 Door 0x00000004
03 Hurtbox 0x00000008
04 Coin 0x00000010
05 Cap 0x00000020
06 Pole 0x00000040
07 Koopa 0x00000080
08 Spiny 0x00000100
09 Breakable Block 0x00000200
10 Wind 0x00000400
11 Warp Door 0x00000800
12 Star/Key 0x00001000
13 Warp 0x00002000
14 Cannon Base 0x00004000
15 Bounce Top 0x00008000
16 Water Ring 0x00010000
17 Bully 0x00020000
18 Burns 0x00040000
19 Koopa Shell 0x00080000
20 (unused) 0x00100000
21 Hurtbox 2 0x00200000
22 Bounce Top/Bottom 0x00400000
23 Text 0x00800000
24 Tornado 0x01000000
25 Whirlpool 0x02000000
26 Clam/Bubba 0x04000000
27 BBH Entrance 0x08000000
28 Snufit Bullet 0x10000000
29 Shocks 0x20000000
30 Igloo Barrier 0x40000000
31 (unused) 0x80000000

Description

Hoot

The Hoot interaction is used by Hoot, the Owl that Mario can hold on to in Whomp's Fortress. This interaction first checks whether Mario is in a suitable state to grab the owl (fulfilled by several airborne states) and checks if the global timer has advanced more than 30 ticks since Mario last let go of Hoot. If both these conditions are met, Mario can grab onto Hoot. Note that since the global timer advances while the game is paused, it is possible to fulfill the second condition right after Mario lets go of Hoot by simply pausing the game for 30 frames. Since the Hoot interaction is the first interaction type internally, and is referenced by the Beta Boo Key and Bowser actors, it is possible that this interaction was repurposed from an earlier type of interaction that was used earlier in development.

Grabbable

The Grabbable interaction is used by objects which are grabbable, such as Bob-Ombs and Boxes. This interaction has 5 subtypes: INT_SUBTYPE_GRABS_MARIO which is used by Chuckya and King Bob-Omb and also makes the object heavy, INT_SUBTYPE_HOLDABLE_NPC which lets Mario drop the object gently with no forward velocity, INT_SUBTYPE_DROP_IMMEDIATELY which is used by grabbable NPCs that also talk to Mario so that Mario will drop them when their dialogue is finished, INT_SUBTYPE_KICKABLE for objects that can be kicked and INT_SUBTYPE_NOT_GRABBABLE which is used by Heave-Ho to prevent Mario from picking it up. For the grab to occur, Mario must not be kicking an object of subtype kickable, the object must not have the not grabbable subtype, and the able_to_grab_object condition must be met. If the object being interacted with is not Bowser, the interaction is also set to push Mario 5 units away from the object when he grabs it.

Door

The Door interaction is used for doors and has a subtype used for Star Doors. When Mario interacts with a door, the game checks to make sure he is walking or decelerating before checking if he has enough stars to open it. If these conditions are met, the game initializes variables for whether to push or pull the door open and a variable for the door’s flag in the save file. If the door Mario interacts with is a regular door, then at this point Mario will either push or pull the door open. If the door Mario interacts with is a star door, a separate check is done and a different action is done for Mario to enter the star door. If the door requires stars to open, the game also runs a check for whether or not the door has been opened before in the save file. If it has not, the game runs an action where Mario uses the power of the stars to open the door. If Mario does not have the required stars, the game displays dialogue dependent on how many stars are required to open the door. In the case where the door requires 70 stars to open, the game displays dialogue and then allows Mario to open the door.

Hurtbox 1 & 2

Hurtbox 1 & 2 are identical with their behavior. If Mario makes contact with an object, it will simply knock him back and generally hurt him. Some examples include Chain Chomp, Mr. Blizzard, and bullet bills.

The only distinction between the two is solely based on what file they are in.

Coin

This interaction is used for collecting coins, as the name implies. When the interaction occurs, the number of coins Mario has is increased by the value of the coin, his heal counter is increased by 4 times the value of the coin, and the coin’s interaction status is updated to mark that an interaction has occurred. If the course is a main course, the number of coins Mario has minus the value of the coin is less than 100, and Mario has at least 100 coins, the 100 coin star spawns.

Cap

Pole

Koopa

Spiny

Breakable Block

Wind

Warp Door

Star/Key

This interaction is used when Mario collects a Star or a Key. The interaction has two subtypes: NO_EXIT and GRAND_STAR. When the interaction occurs, a variable labelled StarGrabAction is set to STAR_DANCE_EXIT. Two variables are also set to check whether the object being interacted with has the NO_EXIT or GRAND_STAR subtype. If Mario’s health is at least 256, then Mario stops riding or holding any objects and then the game runs several checks to determine what animation to play. If the object is not of the type NO_EXIT, Mario’s hurt and heal counters are set to 0 and his cap timer is set to equal 1 if it is greater than 1. If the object is of the type NO_EXIT then the starGrabAction is set to STAR_DANCE_NO_EXIT. If Mario is swimming or is wearing the metal cap underwater, then starGrabAction is set to STAR_DANCE_WATER. If Mario is in the air starGrabAction is set to FALL_AFTER_STAR_GRAB. After these checks, the game spawns a smoke puff, sets the object’s InteractStatus to INTERACTED, and sets Mario’s interactObj and usedObj attributes to the object. Then, the game checks the object’s star index and updates Mario’s star count, if applicable. If the object is not of the type NO_EXIT, the level music is set to fade out. If the object is the Grand Star, Mario’s action is set to begin the Grand Star collection cutscene. Otherwise, Mario’s action is set to whatever starGrabAction was set to when the game checked each case.

Warp

Cannon Base

This interaction is used for Mario entering a cannon. When the interaction occurs, the game first checks to see if Mario is not already in a cannon. If he is not, Mario stops riding or holding any objects, the object’s InteractStatus is set to INTERACTED, Mario’s InteractObj and usedObj attributes are set to the object, and Mario’s action is set so that he is in a cannon.

Bounce Top

Mario will bounce on the object in question.

Water Ring

This interaction is used by water rings like those spawned by the Manta Ray in Dire, Dire Docks and Air Bubbles in Dire, Dire Docks and Jolly Roger Bay. When the interaction occurs, Mario’s heal counter is increased by 4 times the object’s “coin” value and the object’s interaction status is updated to mark that an interaction has occurred.

Bully

Burns

Koopa Shell

This interaction is used for the Koopa Shell Mario can ride. When the interaction occurs, first the game checks whether or not Mario is already riding a shell. If he is not, the game runs a function to determine what interaction occurred between Mario and the object. If the interaction with the object is Mario hitting it from above, or if Mario’s action is set to walking, Mario’s interactObj, usedObj, and riddenObj attritubes are set to the object, the game updates Mario’s sound and camera to reflect him riding the shell, the shell music begins, Mario drops any held objects, and Mario’s action is set to riding the shell.

Bounce Top/Bottom

Text

Tornado

This interaction is used for the tornadoes in Shifting Sand Land. When the interaction occurs, the game checks to see if Mario is in the tornado twirling action or is squished. If Mario is not in either of this states, Mario stops riding anything or holding anything if he is doing either of those things, his forward velocity is set to 0, a sound effect plays and Mario’s action is set to the tornado twirling action.

Whirlpool

This interaction is used for the Whirlpool in Dire, Dire Docks. When the interaction occurs, the game checks if Mario is already in the caught in whirlpool action. If Mario is not, Mario stops riding any object or holding any object if he is doing either of those things. Then, Mario’s forward velocity is set to 0, a sound effect plays, and Mario’s action is set to the caught in whirlpool action.

Clam/Bubba

BBH Entrance

This interaction is used for the cage Mario jumps into to enter Big Boo’s Haunt. When the interaction occurs, first the game checks to see if Mario is already in the act of entering BBH. If he is not, Mario stops riding or holding any objects, the object’s InteractStatus is set to INTERACTED, and Mario’s InteractObj and usedObj attributes are set to the object. The game then sets Mario’s action depending on whether or not he is in the air. If Mario is in the air, Mario’s action is set so that he will spin into the BBH cage. If Mario is not in the air, his action is set so that he will jump into the BBH cage.

Snufit Bullet

Shocks

Igloo Barrier

This interaction is used for the Igloo Barrier object in Snowman’s Land. When the interaction occurs, the game runs a function that pushes Mario away from the object. Unusually, this interaction sets Mario’s usedObj attribute without updating his action, unlike every other interaction in the game. This has the potential to cause several glitches, but these cannot be performed in regular circumstances since the Igloo Barrier is the only object to use this interaction.