Path: blob/master/Sonic 1/Scripts/LZ/TouchBlock.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Touch 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.timer // never used here, but since this is based off [Falling Block] its safe to assume thats what this is since it's skipped over14private alias object.value3 : object.startPos.y1516private alias 0 : TOUCHBLOCK_IDLE17private alias 1 : TOUCHBLOCK_MOVING18private alias 2 : TOUCHBLOCK_RETURNTOSTART19private alias 3 : TOUCHBLOCK_OOB2021// Player Aliases22private alias object.ypos : player.ypos23private alias object.gravity : player.gravity2425// Path ID Aliases26private alias 0 : PATH_A272829// ========================30// Function Declarations31// ========================3233reserve function TouchBlock_DebugDraw34reserve function TouchBlock_DebugSpawn353637// ========================38// Tables39// ========================4041private function TouchBlock_DebugDraw42DrawSprite(0)43end function444546private function TouchBlock_DebugSpawn47CreateTempObject(TypeName[Touch Block], 0, object.xpos, object.ypos)48object[tempObjectPos].startPos.y = object.ypos49end function505152// ========================53// Events54// ========================5556event ObjectUpdate57temp0 = object.ypos58temp0 &= 0xFFFF00005960switch object.state61case TOUCHBLOCK_IDLE62break6364case TOUCHBLOCK_MOVING65object.ypos += object.yvel66object.yvel += 0x8006768ObjectTileCollision(CSIDE_FLOOR, 0, 16, PATH_A)69if checkResult == true70object.state++71end if7273if object.outOfBounds == true74object.ypos = object.startPos.y75object.yvel = 076object.timer = 077object.state = TOUCHBLOCK_OOB78end if79break8081case TOUCHBLOCK_RETURNTOSTART82if object.outOfBounds == true83object.ypos = object.startPos.y84object.yvel = 085object.timer = 086object.state++87end if88break8990case TOUCHBLOCK_OOB91if object.outOfBounds == true92object.state = TOUCHBLOCK_IDLE93object.priority = PRIORITY_BOUNDS94end if95break9697end switch9899object.collisionOffset.y = object.ypos100object.collisionOffset.y &= 0xFFFF0000101object.collisionOffset.y -= temp0102object.stood = false103104if object.state < TOUCHBLOCK_OOB105temp1 = object.ypos106object.ypos = temp0107foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)108BoxCollisionTest(C_SOLID, object.entityPos, -16, -16, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)109switch checkResult110case COL_TOP111player[currentPlayer].ypos += object.collisionOffset.y112break113114case COL_LEFT115case COL_RIGHT116if object.state == TOUCHBLOCK_IDLE117object.state = TOUCHBLOCK_MOVING118end if119break120121case COL_BOTTOM122if player[currentPlayer].gravity == GRAVITY_GROUND123CallFunction(Player_Kill)124end if125break126end switch127next128129object.ypos = temp1130end if131end event132133134event ObjectDraw135if object.state < TOUCHBLOCK_OOB136DrawSprite(0)137end if138end event139140141event ObjectStartup142LoadSpriteSheet("LZ/Objects.gif")143SpriteFrame(-16, -16, 32, 32, 84, 223)144145foreach (TypeName[Touch Block], arrayPos0, ALL_ENTITIES)146object[arrayPos0].startPos.y = object[arrayPos0].ypos147next148149SetTableValue(TypeName[Touch Block], DebugMode_ObjCount, DebugMode_TypesTable)150SetTableValue(TouchBlock_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)151SetTableValue(TouchBlock_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)152DebugMode_ObjCount++153end event154155156// ========================157// Editor Events158// ========================159160event RSDKDraw161DrawSprite(0)162end event163164165event RSDKLoad166LoadSpriteSheet("LZ/Objects.gif")167SpriteFrame(-16, -16, 32, 32, 84, 223)168169SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")170end event171172173