void CavesSquawksCode(void) {
short *paad2 = CurrentActorPointer_0->paad2;
actorData *parent = CurrentActorPointer_0->parent;
initCharSpawnerActor();
if ((CurrentActorPointer_0->obj_props_bitfield & 0x10) == 0) {
modifyCharSpawnerAttributes(0x23D, 0x23D, 0x23E);
CurrentActorPointer_0->control_state = 2;
ActorPaad->counter = 0x10;
*paad2 = 0x78;
spawnTimer(0xDC, 0x2A, 0x64);
parent = CurrentActorPointer_0->parent;
parent->control_state = 2;
parent->control_state_progress = 0;
parent->shadow_intensity = 255;
TiedCharacterSpawner->unk_46 |= 0x24;
setHUDItemAsInfinite(ITEMID_CRYSTALS, 0, 1);
}
if (parent) {
if (parent->control_state == 5) {
CurrentActorPointer_0->control_state = 0x23;
CurrentActorPointer_0->control_state_progress = 0;
}
}
if (CurrentActorPointer_0->control_state == 0x23) {
CurrentActorPointer_0->control_state = 0x37;
setHUDItemAsInfinite(ITEMID_CRYSTALS, 0, 0);
deleteActorContainer(CurrentActorPointer_0->parent);
}
int state = ringRaceHandle(0x78, 0x10);
if ((state == 1) || (state == 2)) {
if (parent) {
parent->control_state = 0;
}
CurrentActorPointer_0->control_state = 0x23;
CurrentActorPointer_0->control_state_progress = 0;
}
}