Path: blob/main/Scripts/R8/HVPlatform.txt
1319 views
//--------Sonic CD Horizontal-Vertical Platform Script--------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Timer67// States8#alias 0 : H_PLAT_BASE9#alias 1 : H_PLAT_EXTEND_110#alias 2 : H_PLAT_EXTEND_211#alias 3 : H_PLAT_EXTEND_312#alias 4 : H_PLAT_FULL_EXTEND13#alias 5 : H_PLAT_RETRACT_114#alias 6 : H_PLAT_RETRACT_215#alias 7 : H_PLAT_RETRACT_31617#alias 8 : V_PLAT_BASE18#alias 9 : V_PLAT_EXTEND_119#alias 10 : V_PLAT_EXTEND_220#alias 11 : V_PLAT_EXTEND_321#alias 12 : V_PLAT_FULL_EXTEND22#alias 13 : V_PLAT_RETRACT_123#alias 14 : V_PLAT_RETRACT_224#alias 15 : V_PLAT_RETRACT_3252627sub ObjectMain28switch Object.State29case H_PLAT_BASE30case V_PLAT_BASE31if Object.Timer < 3032Object.Timer++33else34Object.Timer = 035Object.State++36end if37break3839case H_PLAT_EXTEND_140case H_PLAT_EXTEND_241case H_PLAT_EXTEND_342case V_PLAT_EXTEND_143case V_PLAT_EXTEND_244case V_PLAT_EXTEND_345if Object.Timer < 546Object.Timer++47else48Object.Timer = 049Object.State++50end if51break5253case H_PLAT_FULL_EXTEND54case V_PLAT_FULL_EXTEND55if Object.Timer < 12056Object.Timer++57else58Object.Timer = 059Object.State++60end if61break6263case H_PLAT_RETRACT_164case H_PLAT_RETRACT_265case H_PLAT_RETRACT_366case V_PLAT_RETRACT_167case V_PLAT_RETRACT_268case V_PLAT_RETRACT_369if Object.Timer < 570Object.Timer++71else72Object.Timer = 073Object.State++74Object.State &= 1575end if76break7778end switch7980end sub818283sub ObjectPlayerInteraction84// Use different hitboxes for the Platform's different sizes85switch Object.State86case H_PLAT_BASE87case V_PLAT_BASE88PlayerObjectCollision(C_BOX, -8, -8, 8, 8)89break9091case H_PLAT_EXTEND_192case H_PLAT_RETRACT_393PlayerObjectCollision(C_BOX, -24, -8, 24, 8)94break9596case H_PLAT_EXTEND_297case H_PLAT_RETRACT_298PlayerObjectCollision(C_BOX, -40, -8, 40, 8)99break100101case H_PLAT_EXTEND_3102case H_PLAT_FULL_EXTEND103case H_PLAT_RETRACT_1104// Widest version105PlayerObjectCollision(C_BOX, -56, -8, 56, 8)106break107108case V_PLAT_EXTEND_1109case V_PLAT_RETRACT_3110PlayerObjectCollision(C_BOX, -8, -24, 8, 24)111break112113case V_PLAT_EXTEND_2114case V_PLAT_RETRACT_2115PlayerObjectCollision(C_BOX, -8, -40, 8, 40)116break117118case V_PLAT_EXTEND_3119case V_PLAT_FULL_EXTEND120case V_PLAT_RETRACT_1121// Tallest version122PlayerObjectCollision(C_BOX, -8, -56, 8, 56)123break124125end switch126127end sub128129130sub ObjectDraw131// Draw the Base Post Frame132DrawSprite(0)133134// And then depending on the Platform's current state,135// draw all the extended Platform frames as needed136switch Object.State137case H_PLAT_EXTEND_1138case H_PLAT_RETRACT_3139DrawSprite(3)140DrawSprite(4)141break142143case H_PLAT_EXTEND_2144case H_PLAT_RETRACT_2145DrawSprite(2)146DrawSprite(3)147DrawSprite(4)148DrawSprite(5)149break150151case H_PLAT_EXTEND_3152case H_PLAT_FULL_EXTEND153case H_PLAT_RETRACT_1154// Fully extended, horizontally155DrawSprite(1)156DrawSprite(2)157DrawSprite(3)158DrawSprite(4)159DrawSprite(5)160DrawSprite(6)161break162163case V_PLAT_EXTEND_1164case V_PLAT_RETRACT_3165DrawSprite(9)166DrawSprite(10)167break168169case V_PLAT_EXTEND_2170case V_PLAT_RETRACT_2171DrawSprite(8)172DrawSprite(9)173DrawSprite(10)174DrawSprite(11)175break176177case V_PLAT_EXTEND_3178case V_PLAT_FULL_EXTEND179case V_PLAT_RETRACT_1180// Fully extended, vertically181DrawSprite(7)182DrawSprite(8)183DrawSprite(9)184DrawSprite(10)185DrawSprite(11)186DrawSprite(12)187break188189end switch190191end sub192193194sub ObjectStartup195196LoadSpriteSheet("R8/Objects.gif")197198// Base Post Frame199SpriteFrame(-8, -8, 16, 16, 140, 123)200201// All the extension frames202SpriteFrame(-56, -8, 16, 16, 75, 200)203SpriteFrame(-40, -8, 16, 16, 75, 200)204SpriteFrame(-24, -8, 16, 16, 75, 200)205SpriteFrame(8, -8, 16, 16, 75, 200)206SpriteFrame(24, -8, 16, 16, 75, 200)207SpriteFrame(40, -8, 16, 16, 75, 200)208SpriteFrame(-8, -56, 16, 16, 75, 200)209SpriteFrame(-8, -40, 16, 16, 75, 200)210SpriteFrame(-8, -24, 16, 16, 75, 200)211SpriteFrame(-8, 8, 16, 16, 75, 200)212SpriteFrame(-8, 24, 16, 16, 75, 200)213SpriteFrame(-8, 40, 16, 16, 75, 200)214215// Find all HV Platform objects in the level216ArrayPos0 = 32217while ArrayPos0 < 1056218if Object[ArrayPos0].Type == TypeName[HV Platform]219// Start the Platform at fully extended horizontally220Object[ArrayPos0].State = V_PLAT_FULL_EXTEND221end if222ArrayPos0++223loop224225end sub226227228// ========================229// Editor Subs230// ========================231232sub RSDKDraw233DrawSprite(0)234TempValue0 = 7235while TempValue0 <= 12236DrawSprite(TempValue0); TempValue0++237loop238239if Editor.ShowGizmos == true240Editor.DrawingOverlay = true241Object.InkEffect = 1242TempValue0 = 0243while TempValue0 <= 6244DrawSpriteFX(TempValue0, FX_INK, Object.XPos, Object.YPos); TempValue0++245loop246Editor.DrawingOverlay = false247end if248end sub249250251sub RSDKLoad252LoadSpriteSheet("R8/Objects.gif")253// Base Post Frame254SpriteFrame(-8, -8, 16, 16, 140, 123)255256// All the extension frames257SpriteFrame(-56, -8, 16, 16, 75, 200)258SpriteFrame(-40, -8, 16, 16, 75, 200)259SpriteFrame(-24, -8, 16, 16, 75, 200)260SpriteFrame(8, -8, 16, 16, 75, 200)261SpriteFrame(24, -8, 16, 16, 75, 200)262SpriteFrame(40, -8, 16, 16, 75, 200)263SpriteFrame(-8, -56, 16, 16, 75, 200)264SpriteFrame(-8, -40, 16, 16, 75, 200)265SpriteFrame(-8, -24, 16, 16, 75, 200)266SpriteFrame(-8, 8, 16, 16, 75, 200)267SpriteFrame(-8, 24, 16, 16, 75, 200)268SpriteFrame(-8, 40, 16, 16, 75, 200)269270SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")271end sub272273274