Path: blob/master/Sonic 1/Scripts/SYZ/BossBarrier.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Boss Barrier 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.blockPos1.y13private alias object.value2 : object.blockPos2.y14private alias object.value3 : object.blockPos3.y15private alias object.value4 : object.blockPos4.y16private alias object.value5 : object.blockPos5.y17private alias object.value6 : object.blockPos6.y18private alias object.value7 : object.blockPos7.y1920private alias 0 : BOSSBARRIER_NOTACTIVE21private alias 1 : BOSSBARRIER_RISE22private alias 2 : BOSSBARRIER_LOWER23private alias 3 : BOSSBARRIER_IDLE2425// Player Aliases26private alias object.xpos : player.xpos27private alias object.ypos : player.ypos282930// ========================31// Events32// ========================3334event ObjectUpdate35switch object.state36case BOSSBARRIER_NOTACTIVE37foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)38BoxCollisionTest(C_SOLID, object.entityPos, -16, -16, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)39next40break4142case BOSSBARRIER_RISE43object.frame = object.animationTimer44object.frame >>= 245object.animationTimer++46object.animationTimer %= 1247object.timer++48if object.timer == 6449object.state = BOSSBARRIER_IDLE50end if5152object.blockPos1.y = object.timer53object.blockPos1.y *= -0x800054object.blockPos1.y += object.ypos5556object.blockPos2.y = object.timer57object.blockPos2.y *= -0x1000058object.blockPos2.y += object.ypos5960object.blockPos3.y = object.timer61object.blockPos3.y *= -0x1800062object.blockPos3.y += object.ypos6364object.blockPos4.y = object.timer65object.blockPos4.y *= -0x2000066object.blockPos4.y += object.ypos6768object.blockPos5.y = object.timer69object.blockPos5.y *= -0x2800070object.blockPos5.y += object.ypos7172object.blockPos6.y = object.timer73object.blockPos6.y *= -0x3000074object.blockPos6.y += object.ypos7576object.blockPos7.y = object.timer77object.blockPos7.y *= -0x3800078object.blockPos7.y += object.ypos7980foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)81BoxCollisionTest(C_SOLID, object.entityPos, -16, -320, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)82next83break8485case BOSSBARRIER_LOWER86object.frame = object.animationTimer87object.frame >>= 288object.frame += 389object.animationTimer++90object.animationTimer %= 129192object.timer--93if object.timer == 094object.state = BOSSBARRIER_NOTACTIVE95end if9697object.blockPos1.y = object.timer98object.blockPos1.y *= -0x400099object.blockPos1.y += object.ypos100101object.blockPos2.y = object.timer102object.blockPos2.y *= -0x8000103object.blockPos2.y += object.ypos104105object.blockPos3.y = object.timer106object.blockPos3.y *= -0xC000107object.blockPos3.y += object.ypos108109object.blockPos4.y = object.timer110object.blockPos4.y *= -0x10000111object.blockPos4.y += object.ypos112113object.blockPos5.y = object.timer114object.blockPos5.y *= -0x14000115object.blockPos5.y += object.ypos116117object.blockPos6.y = object.timer118object.blockPos6.y *= -0x18000119object.blockPos6.y += object.ypos120121object.blockPos7.y = object.timer122object.blockPos7.y *= -0x1C000123object.blockPos7.y += object.ypos124125temp0 = object.timer126temp0 *= -192127temp0 >>= 7128temp0 -= 18129foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)130BoxCollisionTest(C_SOLID, object.entityPos, -16, temp0, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)131if checkResult == COL_TOP132player[currentPlayer].ypos += 0x20000133end if134next135break136137case BOSSBARRIER_IDLE138object.timer = 128139foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)140BoxCollisionTest(C_SOLID, object.entityPos, -16, -320, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)141next142break143144end switch145end event146147148event ObjectDraw149switch object.state150case BOSSBARRIER_NOTACTIVE151DrawSprite(0)152break153154case BOSSBARRIER_RISE155case BOSSBARRIER_LOWER156case BOSSBARRIER_IDLE157DrawSpriteXY(6, object.xpos, object.blockPos7.y)158DrawSpriteXY(6, object.xpos, object.blockPos6.y)159DrawSpriteXY(6, object.xpos, object.blockPos5.y)160DrawSpriteXY(6, object.xpos, object.blockPos4.y)161DrawSpriteXY(6, object.xpos, object.blockPos3.y)162DrawSpriteXY(6, object.xpos, object.blockPos2.y)163DrawSpriteXY(6, object.xpos, object.blockPos1.y)164DrawSprite(object.frame)165break166167end switch168end event169170171event ObjectStartup172LoadSpriteSheet("SYZ/Objects.gif")173SpriteFrame(-16, -16, 32, 32, 110, 223)174SpriteFrame(-16, -16, 32, 32, 176, 223)175SpriteFrame(-16, -16, 32, 32, 209, 223)176SpriteFrame(-16, -16, 32, 32, 209, 223)177SpriteFrame(-16, -16, 32, 32, 176, 223)178SpriteFrame(-16, -16, 32, 32, 110, 223)179SpriteFrame(-16, -16, 32, 32, 110, 190)180181if screen.xsize == 320182foreach (TypeName[Boss Barrier], arrayPos0, ALL_ENTITIES)183object[arrayPos0].type = TypeName[Boss Block]184next185end if186end event187188189// ========================190// Editor Events191// ========================192193event RSDKDraw194temp1 = 64195temp1 *= -0x8000196temp1 += object.ypos197198temp2 = 64199temp2 *= -0x10000200temp2 += object.ypos201202temp3 = 64203temp3 *= -0x18000204temp3 += object.ypos205206temp4 = 64207temp4 *= -0x20000208temp4 += object.ypos209210temp5 = 64211temp5 *= -0x28000212temp5 += object.ypos213214temp6 = 64215temp6 *= -0x30000216temp6 += object.ypos217218temp7 = 64219temp7 *= -0x38000220temp7 += object.ypos221222DrawSpriteXY(1, object.xpos, temp7)223DrawSpriteXY(1, object.xpos, temp6)224DrawSpriteXY(1, object.xpos, temp5)225DrawSpriteXY(1, object.xpos, temp4)226DrawSpriteXY(1, object.xpos, temp3)227DrawSpriteXY(1, object.xpos, temp2)228DrawSpriteXY(1, object.xpos, temp1)229DrawSprite(0)230end event231232233event RSDKLoad234LoadSpriteSheet("SYZ/Objects.gif")235SpriteFrame(-16, -16, 32, 32, 110, 223)236SpriteFrame(-16, -16, 32, 32, 110, 190)237238SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")239end event240241242