Path: blob/main/Scripts/R3/RotatingDrum.txt
1319 views
//---------------Sonic CD Rotating Drum Script----------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value1 : Object.Timer6#alias Object.Value2 : Object.YPlayerFloor7#alias Object.Value3 : Object.YOriginPos89// States10#alias 0 : ROTATINGDRUM_FRAME_011#alias 1 : ROTATINGDRUM_FRAME_112#alias 2 : ROTATINGDRUM_FRAME_213#alias 3 : ROTATINGDRUM_FRAME_314#alias 4 : ROTATINGDRUM_FRAME_415#alias 5 : ROTATINGDRUM_FRAME_516#alias 6 : ROTATINGDRUM_FRAME_617#alias 7 : ROTATINGDRUM_FRAME_718#alias 8 : ROTATINGDRUM_FRAME_819#alias 9 : ROTATINGDRUM_FRAME_920#alias 10 : ROTATINGDRUM_FRAME_1021#alias 11 : ROTATINGDRUM_FRAME_1122#alias 12 : ROTATINGDRUM_FRAME_1223#alias 13 : ROTATINGDRUM_FRAME_1324#alias 14 : ROTATINGDRUM_FRAME_1425#alias 15 : ROTATINGDRUM_FRAME_1526#alias 16 : ROTATINGDRUM_FRAME_1627#alias 17 : ROTATINGDRUM_FRAME_172829// Direction30// Normally we use facing right(0) and upend right(2) but for this one it will be clearer this way31#alias 0 : FLIP_NONE32#alias 2 : FLIP_Y3334// Priority35#alias 0 : PRIORITY_BOUNDS36#alias 1 : PRIORITY_ACTIVE37#alias 3 : PRIORITY_XBOUNDS3839sub ObjectMain40switch Object.State41case ROTATINGDRUM_FRAME_042Object.Frame = 043Object.Direction = FLIP_NONE44Object.DrawOrder = 345Object.YPlayerFloor = 0x1000046break4748case ROTATINGDRUM_FRAME_149Object.Frame = 150Object.Direction = FLIP_NONE51Object.DrawOrder = 352Object.YPlayerFloor = 0x5000053break5455case ROTATINGDRUM_FRAME_256Object.Frame = 257Object.Direction = FLIP_NONE58Object.DrawOrder = 359Object.YPlayerFloor = 0x6000060break6162case ROTATINGDRUM_FRAME_363Object.Frame = 364Object.Direction = FLIP_NONE65Object.DrawOrder = 366Object.YPlayerFloor = 0x8000067break6869case ROTATINGDRUM_FRAME_470Object.Frame = 471Object.Direction = FLIP_NONE72Object.DrawOrder = 373Object.YPlayerFloor = 0x8000074break7576case ROTATINGDRUM_FRAME_577Object.Frame = 578Object.Direction = FLIP_Y79Object.DrawOrder = 380Object.YPlayerFloor = 0x8000081break8283case ROTATINGDRUM_FRAME_684Object.Frame = 685Object.Direction = FLIP_Y86Object.DrawOrder = 387Object.YPlayerFloor = 0x6000088break8990case ROTATINGDRUM_FRAME_791Object.Frame = 792Object.Direction = FLIP_Y93Object.DrawOrder = 394Object.YPlayerFloor = 0x5000095break9697case ROTATINGDRUM_FRAME_898Object.Frame = 899Object.Direction = FLIP_Y100Object.DrawOrder = 3101Object.YPlayerFloor = 0x10000102break103104case ROTATINGDRUM_FRAME_9105Object.Frame = 9106Object.Direction = FLIP_Y107Object.DrawOrder = 2108Object.YPlayerFloor = -0x10000109break110111case ROTATINGDRUM_FRAME_10112Object.Frame = 9113Object.Direction = FLIP_Y114Object.DrawOrder = 2115Object.YPlayerFloor = -0x50000116break117118case ROTATINGDRUM_FRAME_11119Object.Frame = 9120Object.Direction = FLIP_Y121Object.DrawOrder = 2122Object.YPlayerFloor = -0x60000123break124125case ROTATINGDRUM_FRAME_12126Object.Frame = 9127Object.Direction = FLIP_Y128Object.DrawOrder = 2129Object.YPlayerFloor = -0x80000130break131132case ROTATINGDRUM_FRAME_13133Object.Frame = 9134Object.Direction = FLIP_Y135Object.DrawOrder = 2136Object.YPlayerFloor = -0x80000137break138139case ROTATINGDRUM_FRAME_14140Object.Frame = 9141Object.Direction = FLIP_NONE142Object.DrawOrder = 2143Object.YPlayerFloor = -0x80000144break145146case ROTATINGDRUM_FRAME_15147Object.Frame = 9148Object.Direction = FLIP_NONE149Object.DrawOrder = 2150Object.YPlayerFloor = -0x60000151break152153case ROTATINGDRUM_FRAME_16154Object.Frame = 9155Object.Direction = FLIP_NONE156Object.DrawOrder = 2157Object.YPlayerFloor = -0x50000158break159160case ROTATINGDRUM_FRAME_17161Object.Frame = 9162Object.Direction = FLIP_NONE163Object.DrawOrder = 2164Object.YPlayerFloor = -0x10000165break166167end switch168169TempValue0 = RotatingDrum_Timer170TempValue0 %= 10171172if TempValue0 == 0173Object.Timer++174if Object.Timer > 3175Object.Timer = 0176177Object.State++178Object.State %= 18179end if180else181Object.YPlayerFloor = 0182end if183184Object.Priority = PRIORITY_ACTIVE185186TempValue0 = Object.iXPos187TempValue0 -= Screen.XOffset188TempValue0 -= Screen.XSize189190if TempValue0 > 128191Object.YPos = Object.YOriginPos192Object.State = Object.PropertyValue193Object.Timer = 0194Object.YPlayerFloor = 0195Object.Priority = PRIORITY_XBOUNDS196end if197198TempValue0 = Object.iXPos199TempValue0 -= Screen.XOffset200201if TempValue0 < -128202Object.YPos = Object.YOriginPos203Object.State = Object.PropertyValue204Object.Timer = 0205Object.YPlayerFloor = 0206Object.Priority = PRIORITY_XBOUNDS207end if208end sub209210211sub ObjectPlayerInteraction212switch Object.State213case ROTATINGDRUM_FRAME_2214PlayerObjectCollision(C_PLATFORM, -24, -8, 24, 12)215if CheckResult == true216Player.YPos += Object.YPlayerFloor217end if218break219220case ROTATINGDRUM_FRAME_3221case ROTATINGDRUM_FRAME_4222case ROTATINGDRUM_FRAME_5223case ROTATINGDRUM_FRAME_6224PlayerObjectCollision(C_PLATFORM, -24, -4, 24, 12)225if CheckResult == true226Player.YPos += Object.YPlayerFloor227end if228break229230end switch231end sub232233234sub ObjectDraw235Object.YPos += Object.YPlayerFloor236DrawSpriteFX(Object.Frame, FX_FLIP, Object.XPos, Object.YPos)237end sub238239240sub ObjectStartup241LoadSpriteSheet("R3/Objects.gif")242243SpriteFrame(-24, -16, 48, 16, 67, 34) // #0 - Rotating Drum Frame 0244SpriteFrame(-24, -12, 48, 16, 116, 34) // #1 - Rotating Drum Frame 1245SpriteFrame(-24, -8, 48, 16, 165, 34) // #2 - Rotating Drum Frame 2246SpriteFrame(-24, -4, 48, 16, 67, 51) // #3 - Rotating Drum Frame 3247SpriteFrame(-24, -4, 48, 16, 116, 51) // #4 - Rotating Drum Frame 4248SpriteFrame(-24, -12, 48, 16, 67, 51) // #5 - Rotating Drum Frame 5249SpriteFrame(-24, -12, 48, 16, 165, 34) // #6 - Rotating Drum Frame 6250SpriteFrame(-24, -12, 48, 16, 116, 34) // #7 - Rotating Drum Frame 7251SpriteFrame(-24, -16, 48, 16, 67, 34) // #8 - Rotating Drum Frame 8252SpriteFrame(-24, -8, 48, 8, 165, 18) // #9 - Rotating Drum Frame 9253254ArrayPos0 = 32255while ArrayPos0 < 1056256if Object[ArrayPos0].Type == TypeName[Rotating Drum]257Object[ArrayPos0].Priority = PRIORITY_XBOUNDS258Object[ArrayPos0].YOriginPos = Object[ArrayPos0].YPos259Object[ArrayPos0].State = Object[ArrayPos0].PropertyValue260end if261ArrayPos0++262loop263end sub264265266// ========================267// Editor Subs268// ========================269270sub RSDKEdit271if Editor.ReturnVariable == true272switch Editor.VariableID273case EDIT_VAR_PROPVAL // Property Value274CheckResult = Object.PropertyValue275CheckResult %= 18276break277case 0 // startFrame278CheckResult = Object.PropertyValue279CheckResult %= 18280break281end switch282else283switch Editor.VariableID284case EDIT_VAR_PROPVAL // Property Value285Object.PropertyValue = Editor.VariableValue286Object.PropertyValue %= 18287break288case 0 // startFrame289Object.PropertyValue = Editor.VariableValue290Object.PropertyValue %= 18291break292end switch293end if294end sub295296sub RSDKDraw297Object.InkEffect = 1298TempValue0 = Object.PropertyValue299TempValue0 %= 10300if Object.PropertyValue < 10301DrawSprite(TempValue0)302else303DrawSpriteFX(TempValue0, FX_INK, Object.XPos, Object.YPos)304end if305end sub306307308sub RSDKLoad309LoadSpriteSheet("R3/Objects.gif")310311SpriteFrame(-24, -16, 48, 16, 67, 34) // #0 - Rotating Drum Frame 0312SpriteFrame(-24, -12, 48, 16, 116, 34) // #1 - Rotating Drum Frame 1313SpriteFrame(-24, -8, 48, 16, 165, 34) // #2 - Rotating Drum Frame 2314SpriteFrame(-24, -4, 48, 16, 67, 51) // #3 - Rotating Drum Frame 3315SpriteFrame(-24, -4, 48, 16, 116, 51) // #4 - Rotating Drum Frame 4316SpriteFrame(-24, -12, 48, 16, 67, 51) // #5 - Rotating Drum Frame 5317SpriteFrame(-24, -12, 48, 16, 165, 34) // #6 - Rotating Drum Frame 6318SpriteFrame(-24, -12, 48, 16, 116, 34) // #7 - Rotating Drum Frame 7319SpriteFrame(-24, -16, 48, 16, 67, 34) // #8 - Rotating Drum Frame 8320SpriteFrame(-24, -8, 48, 8, 165, 18) // #9 - Rotating Drum Frame 9321322AddEditorVariable("startFrame")323SetActiveVariable("startFrame")324325AddEnumVariable("Frame 0", 0)326AddEnumVariable("Frame 1", 1)327AddEnumVariable("Frame 2", 2)328AddEnumVariable("Frame 3", 3)329AddEnumVariable("Frame 4", 4)330AddEnumVariable("Frame 5", 5)331AddEnumVariable("Frame 6", 6)332AddEnumVariable("Frame 7", 7)333AddEnumVariable("Frame 8", 8)334AddEnumVariable("Frame 9", 9)335AddEnumVariable("Frame 10", 10)336AddEnumVariable("Frame 11", 11)337AddEnumVariable("Frame 12", 12)338AddEnumVariable("Frame 13", 13)339AddEnumVariable("Frame 14", 14)340AddEnumVariable("Frame 15", 15)341AddEnumVariable("Frame 16", 16)342AddEnumVariable("Frame 17", 17)343end sub344345346