-
Notifications
You must be signed in to change notification settings - Fork 1
scaled objects
scaled objects appear in bzs files, there exist a few variants:
- SOBS
- SOBJ
- STAS
- STAG
- SNDT
struct STAG {
int params1;
int params2;
float posx;
float posy;
float posz;
float sizex;
float sizey;
float sizez;
short anglex;
short angley;
short anglez;
short id; // only last 10 bits are counting up, other bits are unknown, has to be unique for objects loaded at once
char[8] name;
}
STAG are objects found in stage and room files and are always tied to a layer. Their structure is similar to other objects and they include size information.
param1 and param2 vary from object to object
Common objects by name:
Tag used to trigger events, param1 structure:
FF 00 00 00 either 0xFF, 0xFC or 0xFB (purpose unknown)
00 FF 00 00 sceneflag that makes this event trigger active
00 00 FF 00 sceneflag set after the event and also the flag that deactivates the trigger
00 00 00 FF Index of the event (EVNT) that is triggered
unk2 is always 0xFFFFFFFF
Tag used to trigger events but in contrast to EvntTag on the basis of storyflags and not sceneflags.
Structure of unk1:
1100 0000 0000 0000 0000 0000 0000 0000 bits are always set, probably unused
0011 1111 1111 1000 0000 0000 0000 0000 storyflag that makes this event trigger active
0000 0000 0000 0111 1111 1111 0000 0000 storyflag that sets after the event and also deactivates the event
0000 0000 0000 0000 0000 0000 1111 1111 Index of the event (EVNT) that is triggered
Tag used to (un)set scene/story flags unconditionally in certain areas, structure of param1:
FF 00 00 00 always 0xFF
00 FF 00 00 unknown, either 0xFF or 0xFE
00 00 FF 00 unset sceneflag
00 00 00 FF set sceneflag
anglex: 0000 0111 1111 1111 set storyflag, other bits are always set and unused
anglez: 0000 0111 1111 1111 unset storyflag, otherbits are always set and unused
Tag used to set a sceneflag on enemy defeat
Structure of unk1:
0000 0000 0000 0000 0000 1111 1111 0000 set sceneflag, all other bits are not documented yet
Loadingzone, usually triggers on the ground in the specified area, but can also trigger in the air, also used for the sand sea docks. For loadingzones, that change their destination over time the game uses multiple loadinzones on top of each other and storyflags to only enable the right one (examples boko base, groose CS in faron)
param1 structure:
FF 00 00 00 sceneflag used to activate the loadingzone
00 FF FF 00 undocumented
00 00 00 FF exit index (SCEN), where to send the player
anglex: 0000 0111 1111 1111 storyflag to enable the loadingzone
anglez: 0000 0111 1111 1111 storyflag to disable the loadingzone