Path: blob/master/Sonic 1/Scripts/SBZ/TrapDoor.txt
1484 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Trap Door Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer12private alias object.value1 : object.delay1314private alias object.value17 : debugMode.currentSelection151617// ========================18// Function Declarations19// ========================2021reserve function TrapDoor_DebugDraw22reserve function TrapDoor_DebugSpawn232425// ========================26// Static Values27// ========================2829private value TrapDoor_startDebugID = 0303132// ========================33// Function Definitions34// ========================3536private function TrapDoor_DebugDraw37DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)3839object.direction ^= FLIP_X40DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)4142object.direction ^= FLIP_X43end function444546private function TrapDoor_DebugSpawn47CreateTempObject(TypeName[Trap Door], 0, object.xpos, object.ypos)48object[tempObjectPos].priority = PRIORITY_XBOUNDS49object[tempObjectPos].delay = debugMode[0].currentSelection50object[tempObjectPos].delay -= TrapDoor_startDebugID51object[tempObjectPos].delay++52object[tempObjectPos].delay *= 6053end function545556// ========================57// Events58// ========================5960event ObjectUpdate61object.timer--62if object.timer < 063temp0 = 164object.timer = object.delay65object.animation ^= 166temp0 = camera[0].xpos67temp0 -= object.ixpos68Abs(temp0)69temp0 -= 6470if temp0 <= screen.xcenter71temp0 = camera[0].ypos72temp0 -= object.iypos73Abs(temp0)74temp0 -= 1275if temp0 <= screen.ycenter76PlaySfx(SfxName[Flapping Door], false)77end if78end if79end if8081if object.animation == 082if object.rotation > 083object.rotation -= 1684end if85else86if object.rotation < 12887object.rotation += 1688end if89end if9091if object.rotation == 092foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)93BoxCollisionTest(C_SOLID, object.entityPos, -64, -12, 64, 12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)94next95end if96end event979899event ObjectDraw100temp0 = object.xpos101temp0 -= 0x400000102103// Frame is always 0 lol104DrawSpriteFX(object.frame, FX_ROTATE, temp0, object.ypos)105106object.direction ^= FLIP_X107object.rotation ^= 0x1FF108object.rotation++109object.rotation &= 0x1FF110111temp0 += 0x800000112temp1 = object.ypos113114if object.rotation != 0115temp1--116end if117118DrawSpriteFX(object.frame, FX_ROTATE, temp0, temp1)119120object.direction ^= FLIP_X121122object.rotation--123object.rotation ^= 0x1FF124object.rotation &= 0x1FF125end event126127128event ObjectStartup129LoadSpriteSheet("SBZ/Objects.gif")130131// Trap door frames132SpriteFrame(0, -12, 64, 24, 318, 115)133134// Setup every trap door object135foreach (TypeName[Trap Door], arrayPos0, ALL_ENTITIES)136object[arrayPos0].priority = PRIORITY_XBOUNDS137138object[arrayPos0].delay = object[arrayPos0].propertyValue139object[arrayPos0].delay &= 0xF140object[arrayPos0].delay *= 60141next142143// Add the object to the debug mode object count144temp0 = 0145TrapDoor_startDebugID = DebugMode_ObjCount146while temp0 < 4147SetTableValue(TypeName[Trap Door], DebugMode_ObjCount, DebugMode_TypesTable)148SetTableValue(TrapDoor_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)149SetTableValue(TrapDoor_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)150DebugMode_ObjCount++151temp0++152loop153end event154155156// ========================157// Editor Events158// ========================159160event RSDKEdit161if editor.returnVariable == true162switch editor.variableID163case EDIT_VAR_PROPVAL // property value164checkResult = object.propertyValue165break166167case 0 // delay168checkResult = object.propertyValue169checkResult &= 0xF170break171172end switch173else174switch editor.variableID175case EDIT_VAR_PROPVAL // property value176object.propertyValue = editor.variableValue177break178179case 0 // delay180object.propertyValue &= 0xF0181object.propertyValue |= editor.variableValue182break183184end switch185end if186end event187188189event RSDKDraw190DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)191object.direction ^= FLIP_X192DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)193object.direction ^= FLIP_X194end event195196197event RSDKLoad198LoadSpriteSheet("SBZ/Objects.gif")199200// Trap door frames201SpriteFrame(0, -12, 64, 24, 318, 115)202203AddEditorVariable("delay")204SetActiveVariable("delay")205AddEnumVariable("0 Seconds", 0)206AddEnumVariable("1 Second", 1)207AddEnumVariable("2 Seconds", 2)208AddEnumVariable("3 Seconds", 3)209AddEnumVariable("4 Seconds", 4)210AddEnumVariable("5 Seconds", 5)211AddEnumVariable("6 Seconds", 6)212AddEnumVariable("7 Seconds", 7)213AddEnumVariable("8 Seconds", 8)214AddEnumVariable("9 Seconds", 9)215AddEnumVariable("10 Seconds", 10)216AddEnumVariable("11 Seconds", 11)217AddEnumVariable("12 Seconds", 12)218AddEnumVariable("13 Seconds", 13)219AddEnumVariable("14 Seconds", 14)220AddEnumVariable("15 Seconds", 15)221end event222223224