Path: blob/main/Scripts/Mission/FallSignPost.txt
1319 views
//---------------Sonic CD Fall Sign Post Script---------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Timer6#alias Object.Value1 : Object.FrameTimer7#alias Object.Value2 : Object.IdleTimer8#alias Object.Value4 : Object.YVelocity9#alias Object.Value5 : Object.OnFloor1011// States12#alias 0 : FALLSIGNPOST_SETUP13#alias 1 : FALLSIGNPOST_AIR_FLIP14#alias 2 : FALLSIGNPOST_FLIP15#alias 3 : FALLSIGNPOST_STOP_PLAYER1617// Camera18#alias 4 : CAMERASTYLE_HLOCKED1920// Control Mode21#alias -1 : CONTROLMODE_NONE2223// Collision Sides24#alias 0 : CSIDE_FLOOR2526// Global SFX27#alias 15 : SFX_G_SIGNPOST2829// Priority30#alias 1 : PRIORITY_ACTIVE313233sub ObjectMain34switch Object.State35case FALLSIGNPOST_SETUP36CheckEqual(game.missionCondition, MISSION_CONDITION_CLEAR)37TempValue0 = CheckResult38CheckNotEqual(Screen.YOffset, 0)39TempValue0 &= CheckResult40if TempValue0 == true41game.missionCondition = false42Object.XPos = Player.XPos43Object.XPos -= 0x800004445Object.YPos = Screen.YOffset46Object.YPos += 2447Object.YPos <<= 164849Screen.CameraStyle = CAMERASTYLE_HLOCKED50ObjectTileCollision(CSIDE_FLOOR, 0, 8, 0)51if CheckResult == true52Object.OnFloor = true53end if54Object.State = FALLSIGNPOST_AIR_FLIP55PlaySfx(SFX_G_SIGNPOST, false)56end if57break5859case FALLSIGNPOST_AIR_FLIP60Object.IdleTimer++6162Object.YPos += Object.YVelocity63Object.YVelocity += 0xC0064ObjectTileCollision(CSIDE_FLOOR, 0, 8, 0)65if CheckResult == true66if Object.OnFloor == false67Object.Timer = 468Object.State = FALLSIGNPOST_FLIP69end if70else71Object.OnFloor = false72end if7374TempValue0 = Screen.YOffset75TempValue0 += Screen.YSize76TempValue0 += 4477if Object.iYPos >= TempValue078Object.Timer = 479Object.State = FALLSIGNPOST_FLIP80end if8182Object.FrameTimer++83if Object.FrameTimer == 284Object.FrameTimer = 085Object.Frame++86if Object.Frame == 587Rand(TempValue0,48)88TempValue0 <<= 1689TempValue0 += Object.XPos90TempValue0 -= 0x1800009192Rand(TempValue1,32)93TempValue1 <<= 1694TempValue1 += Object.YPos95TempValue1 -= 0x14000096CreateTempObject(TypeName[Ring Sparkle], 0, TempValue0, TempValue1)97end if9899if Object.Frame == 9100Object.Frame = 1101Rand(TempValue0, 48)102TempValue0 <<= 16103TempValue0 += Object.XPos104TempValue0 -= 0x180000105106Rand(TempValue1, 32)107TempValue1 <<= 16108TempValue1 += Object.YPos109TempValue1 -= 0x140000110CreateTempObject(TypeName[Ring Sparkle], 0, TempValue0, TempValue1)111end if112end if113break114115case FALLSIGNPOST_FLIP116Object.IdleTimer++117if Stage.TimeEnabled == true118Music.Volume -= 2119end if120121Object.FrameTimer++122if Object.FrameTimer == 2123Object.FrameTimer = 0124Object.Frame++125if Object.Frame == 5126Rand(TempValue0, 48)127TempValue0 <<= 16128TempValue0 += Object.XPos129TempValue0 -= 0x180000130131Rand(TempValue1, 32)132TempValue1 <<= 16133TempValue1 += Object.YPos134TempValue1 -= 0x140000135CreateTempObject(TypeName[Ring Sparkle], 0, TempValue0, TempValue1)136end if137138if Object.Frame == 9139Rand(TempValue0, 48)140TempValue0 <<= 16141TempValue0 += Object.XPos142TempValue0 -= 0x180000143144Rand(TempValue1, 32)145TempValue1 <<= 16146TempValue1 += Object.YPos147TempValue1 -= 0x140000148CreateTempObject(TypeName[Ring Sparkle], 0, TempValue0, TempValue1)149Object.Timer--150if Object.Timer == 0151Object.Frame = 5152Object.State = FALLSIGNPOST_STOP_PLAYER153else154Object.Frame = 1155end if156end if157end if158break159160case FALLSIGNPOST_STOP_PLAYER161CheckEqual(Player.State, Player_State_Ground)162TempValue0 = CheckResult163CheckEqual(Player.OutOfBounds, true)164TempValue0 |= CheckResult165166TempValue1 = Screen.XOffset167TempValue1 += Screen.XSize168TempValue1 += 32169CheckGreater(Player.iXPos, TempValue1)170TempValue0 |= CheckResult171if TempValue0 == true172Player.ControlMode = CONTROLMODE_NONE173Player.JumpHold = false174Player.Right = false175Player.Left = false176Player.Up = false177Player.Down = false178179if Player.State == Player_State_Ground180Player.XVelocity = 0181Player.YVelocity = 0182end if183Player.Speed = 0184185Screen.CameraEnabled = false186end if187break188end switch189190CheckGreater(Object.IdleTimer, 60)191TempValue0 = CheckResult192CheckEqual(Object[30].Type, TypeName[Blank Object])193TempValue0 &= CheckResult194if TempValue0 == true195EngineCallback(NOTIFY_TOUCH_SIGNPOST)196Stage.TimeEnabled = false197PlayMusic(1)198199Object[30].Type = TypeName[ActFinish]200Object[30].DrawOrder = 6201Object[30].Priority = PRIORITY_ACTIVE202end if203204if Stage.TimeEnabled == false205Player.AirTimer = 0206end if207end sub208209210sub ObjectDraw211if Object.State > FALLSIGNPOST_SETUP212DrawSprite(0)213DrawSprite(Object.Frame)214end if215end sub216217218sub ObjectStartup219LoadSpriteSheet("Global/Items2.gif")220221SpriteFrame(-12, -12, 24, 24, 0, 150) // #0 - Sign Post222SpriteFrame(-24, -44, 48, 32, 34, 99) // #1 - Sign Post Head (Eggman)223SpriteFrame(-16, -44, 32, 32, 1, 183) // #2 - Sign Post Head (Flip 1)224SpriteFrame(-4, -44, 8, 32, 25, 150) // #3 - Sign Post Head (Flip 2)225SpriteFrame(-16, -44, 32, 32, 1, 216) // #4 - Sign Post Head (Flip 3)226SpriteFrame(-24, -44, 48, 32, 34, 132) // #5 - Sign Post Head (Player)227SpriteFrame(-16, -44, 32, 32, 1, 183) // #6 - Sign Post Head (Flip 1)228SpriteFrame(-4, -44, 8, 32, 25, 150) // #7 - Sign Post Head (Flip 2)229SpriteFrame(-16, -44, 32, 32, 1, 216) // #8 - Sign Post Head (Flip 3)230231ArrayPos0 = 32232while ArrayPos0 < 1056233if Object[ArrayPos0].Type == TypeName[FallSignPost]234Object[ArrayPos0].Frame = 1235Object[ArrayPos0].Timer = 16236Object[ArrayPos0].Priority = PRIORITY_ACTIVE237end if238ArrayPos0++239loop240end sub241242243// ========================244// Editor Subs245// ========================246247sub RSDKDraw248DrawSprite(0)249DrawSprite(1)250end sub251252253sub RSDKLoad254LoadSpriteSheet("Global/Items2.gif")255256SpriteFrame(-12, -12, 24, 24, 0, 150) // #0 - Sign Post257SpriteFrame(-24, -44, 48, 32, 34, 99) // #1 - Sign Post Head (Eggman)258259SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")260end sub261262263264265