Path: blob/master/Sonic 1/Scripts/LZ/FallingBlock.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Falling Block Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.stood12private alias object.value1 : object.collisionOffset.y13private alias object.value2 : object.timer14private alias object.value3 : object.startPos.y15private alias object.value4 : object.stoodAngle1617private alias 0 : FALLINGBLOCK_IDLE18private alias 1 : FALLINGBLOCK_MOVING19private alias 2 : FALLINGBLOCK_RETURNTOSTART20private alias 3 : FALLINGBLOCK_OOB2122// Player Aliases23private alias object.ypos : player.ypos2425// Path ID Aliases26private alias 0 : PATH_A272829// ========================30// Function Declarations31// ========================3233reserve function FallingBlock_DebugDraw34reserve function FallingBlock_DebugSpawn353637// ========================38// Function Definitions39// ========================4041private function FallingBlock_DebugDraw42DrawSprite(0)43end function444546private function FallingBlock_DebugSpawn47CreateTempObject(TypeName[Falling Block], 0, object.xpos, object.ypos)48object[tempObjectPos].startPos.y = object.ypos49end function505152// ========================53// Events54// ========================5556event ObjectUpdate57if object.stood == true58if object.timer == 059object.timer = 3060end if6162if object.stoodAngle < 6463object.stoodAngle += 464end if65else66if object.stoodAngle > 067object.stoodAngle -= 468end if69end if7071temp0 = object.ypos72temp0 &= 0xFFFF00007374switch object.state75case FALLINGBLOCK_IDLE76temp1 = object.stoodAngle77temp1 <<= 178Sin(temp2, temp1)79temp2 <<= 980object.ypos = object.startPos.y81object.ypos += temp282if object.timer != 083object.timer--84if object.timer == 085object.state++86object.priority = PRIORITY_ACTIVE87end if88end if89break9091case FALLINGBLOCK_MOVING92object.ypos += object.yvel93object.yvel += 0x80094ObjectTileCollision(CSIDE_FLOOR, 0, 16, PATH_A)95if checkResult == true96object.state++97end if9899if object.outOfBounds == true100object.ypos = object.startPos.y101object.yvel = 0102object.timer = 0103object.state = FALLINGBLOCK_OOB104end if105break106107case FALLINGBLOCK_RETURNTOSTART108if object.outOfBounds == true109object.ypos = object.startPos.y110object.yvel = 0111object.timer = 0112object.state++113end if114break115116case FALLINGBLOCK_OOB117if object.outOfBounds == true118object.state = FALLINGBLOCK_IDLE119object.priority = PRIORITY_BOUNDS120end if121break122123end switch124125object.collisionOffset.y = object.ypos126object.collisionOffset.y &= 0xFFFF0000127object.collisionOffset.y -= temp0128object.stood = false129130if object.state < FALLINGBLOCK_OOB131temp1 = object.ypos132object.ypos = temp0133foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)134BoxCollisionTest(C_SOLID, object.entityPos, -16, -16, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)135if checkResult == COL_TOP136object.stood = true137player[currentPlayer].ypos += object.collisionOffset.y138end if139next140object.ypos = temp1141end if142end event143144145event ObjectDraw146if object.state < FALLINGBLOCK_OOB147DrawSprite(0)148end if149end event150151152event ObjectStartup153LoadSpriteSheet("LZ/Objects.gif")154SpriteFrame(-16, -16, 32, 32, 84, 223)155156foreach (TypeName[Falling Block], arrayPos0, ALL_ENTITIES)157object[arrayPos0].startPos.y = object[arrayPos0].ypos158next159160SetTableValue(TypeName[Falling Block], DebugMode_ObjCount, DebugMode_TypesTable)161SetTableValue(FallingBlock_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)162SetTableValue(FallingBlock_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)163DebugMode_ObjCount++164end event165166167// ========================168// Editor Events169// ========================170171event RSDKDraw172DrawSprite(0)173end event174175176event RSDKLoad177LoadSpriteSheet("LZ/Objects.gif")178SpriteFrame(-16, -16, 32, 32, 84, 223)179180SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")181end event182183184