Path: blob/main/Scripts/R3/GlassBumper.txt
1319 views
//------------Sonic CD Glass Bumper Particles Script----------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Timer67// HUD Alias8#alias Object[24].PropertyValue : HUD.CurrentTimePeriod910// States11#alias 0 : GLASSBUMPER_IDLE12#alias 1 : GLASSBUMPER_DESTROYED1314// Gravity15#alias 1 : GRAVITY_AIR1617// Stage SFX18#alias 8 : SFX_S_CRUMBLE1920// Priority21#alias 1 : PRIORITY_ACTIVE2223// Time Periods24#alias 0 : TIME_PRESENT25#alias 1 : TIME_PAST26#alias 2 : TIME_GOOD_FUTURE27#alias 3 : TIME_BAD_FUTURE2829// Tile Info30#alias 0 : TILEINFO_INDEX313233sub ObjectMain34if Object.State == GLASSBUMPER_DESTROYED3536Object.Timer++37if Object.Timer > 1538Object.Type = TypeName[Blank Object]39end if4041end if42end sub434445sub ObjectPlayerInteraction46if Player.Animation != ANI_HURT47if Object.State == GLASSBUMPER_IDLE48PlayerObjectCollision(C_TOUCH, -14, -14, 14, 14)49if CheckResult == true50#platform: Use_Origins51if Player.Animation == ANI_CLIMBING52// Before bouncing him away, let's make sure Knuckles is in his normal air state, first53CallFunction(Player_CancelClimb)54end if55#endplatform5657PlayStageSfx(SFX_S_CRUMBLE, false)5859#platform: Use_Haptics60HapticEffect(10, 0, 0, 0)61#endplatform6263CreateTempObject(TypeName[Object Score], 0, Object.XPos, Object.YPos)64Player.Score += 1006566Object.State = GLASSBUMPER_DESTROYED6768Object.Priority = PRIORITY_ACTIVE6970TempValue0 = Player.XPos71TempValue0 -= Object.XPos7273TempValue1 = Player.YPos74TempValue1 -= Object.YPos7576ATan2(TempValue2, TempValue0, TempValue1)77Cos256(TempValue0, TempValue2)78Sin256(TempValue1, TempValue2)7980TempValue0 *= 0x70081TempValue1 *= 0x7008283Player.XVelocity = TempValue084Player.YVelocity = TempValue185Player.Speed = Player.XVelocity8687Player.Gravity = GRAVITY_AIR8889Player.Timer = 09091TempValue0 = Object.iXPos92TempValue1 = Object.iYPos9394// Replace the bumper tiles with blank tiles95TempValue0 -= 896TempValue1 -= 897Set16x16TileInfo(0, TempValue0, TempValue1, TILEINFO_INDEX)9899TempValue0 += 16100Set16x16TileInfo(0, TempValue0, TempValue1, TILEINFO_INDEX)101102TempValue0 -= 16103TempValue1 += 16104Set16x16TileInfo(0, TempValue0, TempValue1, TILEINFO_INDEX)105106TempValue0 += 16107Set16x16TileInfo(0, TempValue0, TempValue1, TILEINFO_INDEX)108109end if110end if111end if112end sub113114115sub ObjectDraw116if Object.State == GLASSBUMPER_DESTROYED117TempValue0 = Object.Timer118TempValue0 >>= 3119DrawSprite(TempValue0)120end if121end sub122123124sub ObjectStartup125LoadSpriteSheet("R3/Objects3.gif")126127switch HUD.CurrentTimePeriod128case TIME_PRESENT129SpriteFrame(-16, -16, 32, 32, 66, 1)130SpriteFrame(-16, -16, 32, 32, 99, 1)131break132case TIME_PAST133SpriteFrame(-16, -16, 32, 32, 66, 34)134SpriteFrame(-16, -16, 32, 32, 99, 34)135break136case TIME_GOOD_FUTURE137SpriteFrame(-16, -16, 32, 32, 66, 67)138SpriteFrame(-16, -16, 32, 32, 99, 67)139break140case TIME_BAD_FUTURE141SpriteFrame(-16, -16, 32, 32, 66, 100)142SpriteFrame(-16, -16, 32, 32, 99, 100)143break144end switch145end sub146147148// ========================149// Editor Subs150// ========================151152sub RSDKDraw153Object.InkEffect = 1154DrawSpriteFX(0, FX_INK, Object.XPos, Object.YPos)155end sub156157158sub RSDKLoad159LoadSpriteSheet("R3/Objects3.gif")160CallFunction(EditorHelpers_FindTimePeriod)161switch CheckResult162case TIME_PRESENT163SpriteFrame(-16, -16, 32, 32, 66, 1)164break165case TIME_PAST166SpriteFrame(-16, -16, 32, 32, 66, 34)167break168case TIME_GOOD_FUTURE169SpriteFrame(-16, -16, 32, 32, 66, 67)170break171case TIME_BAD_FUTURE172SpriteFrame(-16, -16, 32, 32, 66, 100)173break174end switch175end sub176177178