This page contains the format of the DYNA types which inherit from game_object. All offsets are relative to 0x10 (start of the type-specific data in DYNA assets).
This asset defines a Bus Stop, which is used to switch the playable character between SpongeBob and either Patrick or Sandy.
It is very similar to a Taxi Stop, in that it creates a trigger at a Marker's position and uses a Camera and bus Simple Object to play a drive-by animation.
In the original game, levels that use Bus Stops only contain assets for either Patrick or Sandy, but not both. If, for example, you try to make a Bus Stop switch to Patrick in a level that only has Sandy's assets, nothing will happen. However, it is possible to use both Patrick and Sandy if you port the missing character's assets to the level, specifically the MODL, RWTX, ANIM, ATBL, and MINF assets.
Note that, similar to Taxi Stops, the busstop SIMP itself is completely separate from the Bus Stop game object and is not required for the Bus Stop to work.
Simple Object to play the bus drive-by animation with.
0x10
float
delay
Time in seconds after the bus drive-by animation starts to switch the character. The animation is about 2 seconds long, so this is commonly set to 1 or 1.5 to ensure the switch is hidden behind the bus simp. The approximate range allowed is 0.09 to 1.96, any values outside of this range will cause the switch to not work.
This asset defines a Taxi Stand, which lets SpongeBob take the taxi to another area of Bikini Bottom.
Its position is defined by a Marker, which is usually placed at the bottom center of a taxistand Simple Object. The game uses the marker as the base position at which to create a sphere (or cylinder?) shaped trigger. When SpongeBob enters this trigger a Talk Box is displayed, usually asking the player if they want to enter a specific area of the game. If the player answers Yes then a taxi drive-by animation plays using a taxi SIMP and a Camera, and two internal timers are started, which when expired make SpongeBob invisible and teleport the player to a different level using a Portal. However, if Sandy or Patrick enters the trigger, a default "Only SpongeBob can use the Taxi" talk box is displayed instead.
Note that the taxistand SIMP is completely separate from the Taxi Stand game object, it doesn't have to be at the same place as the marker or even exist in the first place.
Camera to switch to for the taxi drive-by animation. Usually it's pointed directly towards the taxistand simp and placed relatively low so as to maintain the illusion of SpongeBob being "picked up" by the taxi.
Portal to teleport the player with after portalDelay expires. Note that if the destination level is the same as the current one, the game will soft-lock.
Simple Object to use for the taxi drive-by animation. The position of the taxi is the where the midpoint of the animation will be, so usually it's placed right in front of the taxistand simp and rotated perpendicular to it.
0x18
float
invTimer
Time in seconds after the taxi drive-by animation starts to make the player invisible.
0x1C
float
portalDelay
Time in seconds after the taxi drive-by animation starts to teleport the player with the portal.
game_object:Teleport
game_object:Teleport
Version
1 or 2
Hash
0x70ADB7F9
This asset defines a Teleport Box, which is used for quick travel to another area within a level. Typically, they are defined in pairs, where the 1st one warps to the 2nd one and the 2nd one warps back to the 1st one. However, a Teleport Box can warp to any other Teleport Box in the level, and therefore any number of Teleport Boxes can be linked together.
Its position is defined by a Marker, which the game uses to place an instance of the teleportation_box_bind model (boot.hip) in the world. It is not possible to change the rotation or scale of a Teleport Box.
Note that you do not need to manually create a trigger around the teleport box to open it, it opens automatically when the player walks close up to it.
1 - EX_CENTER - Expand textbox up+down to fit text?
2 - EX_DOWN - Expand textbox down to fit text
3 or higher (usually 100 for some reason) - MAX_EX - Don't expand textbox, instead clip the text if it takes up too much space
0x44
float
max_height (0 to 1)
If expand is EX_UP, EX_CENTER, or EX_DOWN, this is the maximum height the textbox will grow to fit the text inside of it. If there's still more text beyond this height, it will be cut off.