Path: blob/master/Sonic 2/Scripts/OOZ/MovingSpikes.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Moving Spikes Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer121314// ========================15// Function Declarations16// ========================1718reserve function MovingSpikes_DebugDraw19reserve function MovingSpikes_DebugSpawn20reserve function MovingSpikes_TryPlayClankSfx212223// ========================24// Function Definitions25// ========================2627private function MovingSpikes_DebugDraw28DrawSprite(0)29end function303132private function MovingSpikes_DebugSpawn33CreateTempObject(TypeName[Moving Spikes], 0, object.xpos, object.ypos)34object[tempObjectPos].inkEffect = INK_BLEND35object[tempObjectPos].drawOrder = 536if object.direction == FLIP_X37object[tempObjectPos].xpos += 0x68000038object[tempObjectPos].xvel = -0x1000039object[tempObjectPos].timer = 10440else41object[tempObjectPos].xpos -= 0x68000042object[tempObjectPos].xvel = 0x1000043object[tempObjectPos].timer = -10444end if45end function464748private function MovingSpikes_TryPlayClankSfx49temp0 = screen.xcenter50temp0 += 3251CheckCameraProximity(object.ixpos, object.iypos, temp0, 160)52if checkResult == true53PlaySfx(SfxName[Clank], false)54end if55end function565758// ========================59// Events60// ========================6162event ObjectUpdate63object.xpos += object.xvel64if object.xvel > 065object.timer++66if object.timer == 10467FlipSign(object.xvel)68CallFunction(MovingSpikes_TryPlayClankSfx)69else70foreach (TypeName[Moving Spikes], arrayPos0, ACTIVE_ENTITIES)71if arrayPos0 != object.entityPos72BoxCollisionTest(C_TOUCH, object.entityPos, 0, -40, 25, 40, arrayPos0, -25, -40, 0, 40)73if checkResult == true74FlipSign(object.xvel)75CallFunction(MovingSpikes_TryPlayClankSfx)76end if77end if78next79end if80else81object.timer--82if object.timer == -10483FlipSign(object.xvel)84CallFunction(MovingSpikes_TryPlayClankSfx)85else86foreach (TypeName[Moving Spikes], arrayPos0, ACTIVE_ENTITIES)87if arrayPos0 != object.entityPos88BoxCollisionTest(C_TOUCH, object.entityPos, -25, -40, 0, 40, arrayPos0, 0, -40, 25, 40)89if checkResult == true90FlipSign(object.xvel)91CallFunction(MovingSpikes_TryPlayClankSfx)92end if93end if94next95end if96end if9798foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)99BoxCollisionTest(C_TOUCH, object.entityPos, -16, -32, 16, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)100if checkResult == true101CallFunction(Player_Hit)102end if103next104end event105106107event ObjectDraw108DrawSpriteFX(1, FX_INK, object.xpos, object.ypos)109DrawSprite(0)110end event111112113event ObjectStartup114LoadSpriteSheet("OOZ/Objects.gif")115SpriteFrame(-24, -40, 48, 80, 206, 26)116SpriteFrame(8, -16, 4, 32, 239, 107)117118foreach (TypeName[Moving Spikes], arrayPos0, ALL_ENTITIES)119object[arrayPos0].priority = PRIORITY_INACTIVE120object[arrayPos0].inkEffect = INK_BLEND121object[arrayPos0].drawOrder = 5122if object[arrayPos0].propertyValue == 1123object[arrayPos0].xpos += 0x680000124object[arrayPos0].xvel = -0x10000125object[arrayPos0].timer = 104126else127if object[arrayPos0].propertyValue == 0128object[arrayPos0].xpos -= 0x680000129object[arrayPos0].xvel = 0x10000130object[arrayPos0].timer = -104131else132object[arrayPos0].xvel = -0x10000133end if134end if135next136137SetTableValue(TypeName[Moving Spikes], DebugMode_ObjCount, DebugMode_TypesTable)138SetTableValue(MovingSpikes_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)139SetTableValue(MovingSpikes_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)140DebugMode_ObjCount++141end event142143144// ========================145// Editor Events146// ========================147148event RSDKEdit149if editor.returnVariable == true150switch editor.variableID151case EDIT_VAR_PROPVAL // property value152case 0 // type153checkResult = object.propertyValue154break155end switch156else157switch editor.variableID158case EDIT_VAR_PROPVAL // property value159case 0 // type160object.propertyValue = editor.variableValue161break162end switch163end if164end event165166167event RSDKDraw168object.inkEffect = INK_BLEND169170DrawSpriteFX(1, FX_INK, object.xpos, object.ypos)171DrawSprite(0)172173if editor.showGizmos == true174editor.drawingOverlay = true175176temp0 = object.xpos177temp0 -= 0x680000178179temp1 = object.xpos180temp1 += 0x680000181182object.inkEffect = INK_NONE183DrawLine(temp0, object.ypos, temp1, object.ypos, 0x00, 0xFF, 0x00)184185editor.drawingOverlay = false186end if187end event188189190event RSDKLoad191LoadSpriteSheet("OOZ/Objects.gif")192SpriteFrame(-24, -40, 48, 80, 206, 26)193SpriteFrame(8, -16, 4, 32, 239, 107)194195AddEditorVariable("type")196SetActiveVariable("type")197AddEnumVariable("Left", 0)198AddEnumVariable("Right", 1)199AddEnumVariable("Center", 2)200end event201202203