Path: blob/main/Scripts/R1/CLedge4.txt
1319 views
//---------------Sonic CD Crumble Ledge 4 Script--------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.HitboxLeft6#alias Object.Value1 : Object.HitboxRight7#alias Object.Value2 : Object.Timer8#alias Object.Value3 : Object.Length9#alias Object.Value4 : Object.YVelocity1011// States12#alias 0 : CLEDGE4_IDLE13#alias 1 : CLEDGE4_DELAY_FROM_RIGHT14#alias 2 : CLEDGE4_DELAY_FROM_LEFT15#alias 3 : CLEDGE4_COLLAPSE_RIGHT16#alias 4 : CLEDGE4_COLLAPSE_LEFT17#alias 5 : CLEDGE4_RESTORE // Sonic Nexus leftover1819#alias 6 : CLEDGE4_DEBRIS2021// Stage SFX22#alias 0 : SFX_S_CRUMBLE2324// Priority25#alias 0 : PRIORITY_BOUNDS26#alias 1 : PRIORITY_ACTIVE272829sub ObjectMain30switch Object.State31case CLEDGE4_DELAY_FROM_RIGHT32if Object.Timer > 033Object.Timer--34else35PlayStageSfx(SFX_S_CRUMBLE, false)36Object.State = CLEDGE4_COLLAPSE_RIGHT37end if38break3940case CLEDGE4_DELAY_FROM_LEFT41if Object.Timer > 042Object.Timer--43else44PlayStageSfx(SFX_S_CRUMBLE, false)45Object.State = CLEDGE4_COLLAPSE_LEFT46end if47break4849case CLEDGE4_COLLAPSE_RIGHT50Object.Timer++51if Object.Timer == 1252Object.Timer = 053if Object.HitboxRight > Object.HitboxLeft54Object.Length--55Object.HitboxRight -= 1656TempValue0 = Object.HitboxRight57TempValue0 += 858TempValue0 <<= 1659TempValue0 += Object.XPos60CreateTempObject(TypeName[Crumble Ledge 4], 0, TempValue0, Object.YPos)61Object[TempObjectPos].State = CLEDGE4_DEBRIS62else63ResetObjectEntity(Object.EntityNo, TypeName[Blank Object], 0, 0, 0)64end if65end if66break6768case CLEDGE4_COLLAPSE_LEFT69Object.Timer++70if Object.Timer == 127172Object.Timer = 073if Object.HitboxLeft < Object.HitboxRight74Object.Length--7576Object.HitboxLeft += 1677TempValue0 = Object.HitboxLeft78TempValue0 -= 879TempValue0 <<= 1680TempValue0 += Object.XPos8182CreateTempObject(TypeName[Crumble Ledge 4], 0, TempValue0, Object.YPos)83Object[TempObjectPos].State = CLEDGE4_DEBRIS84else85ResetObjectEntity(Object.EntityNo, TypeName[Blank Object], 0, 0, 0)86end if8788end if89break9091case CLEDGE4_RESTORE92if Object.OutOfBounds == true93Object.State = CLEDGE4_IDLE94Object.Length = Object.PropertyValue9596Object.HitboxLeft = Object.PropertyValue97Object.HitboxLeft <<= 39899Object.HitboxRight = Object.HitboxLeft100FlipSign(Object.HitboxLeft)101102Object.Priority = PRIORITY_BOUNDS103Object.Timer = 0104end if105break106107case CLEDGE4_DEBRIS108Object.YVelocity += 0x4000109if Object.YVelocity > 0110Object.YPos += Object.YVelocity111end if112113if Object.OutOfBounds == true114Object.Type = TypeName[Blank Object]115end if116break117118end switch119end sub120121122sub ObjectPlayerInteraction123if Object.State == CLEDGE4_IDLE124PlayerObjectCollision(C_PLATFORM, Object.HitboxLeft, -24, Object.HitboxRight, 16)125if CheckResult == true126Object.Timer = 1127Object.Priority = PRIORITY_ACTIVE128if Player.XPos > Object.XPos129Object.State = CLEDGE4_DELAY_FROM_RIGHT130else131Object.State = CLEDGE4_DELAY_FROM_LEFT132end if133end if134else135PlayerObjectCollision(C_PLATFORM, Object.HitboxLeft, -24, Object.HitboxRight, 16)136end if137end sub138139140sub ObjectDraw141switch Object.State142case CLEDGE4_IDLE143case CLEDGE4_DELAY_FROM_RIGHT144case CLEDGE4_DELAY_FROM_LEFT145case CLEDGE4_COLLAPSE_RIGHT146TempValue0 = 0147TempValue1 = Object.HitboxLeft148TempValue1 <<= 16149TempValue1 += 0x80000150TempValue1 += Object.XPos151while TempValue0 < Object.Length152DrawSpriteXY(0, TempValue1, Object.YPos)153TempValue0++154TempValue1 += 0x100000155loop156break157158case CLEDGE4_COLLAPSE_LEFT159TempValue0 = 0160TempValue1 = Object.HitboxRight161TempValue1 <<= 16162TempValue1 -= 0x80000163TempValue1 += Object.XPos164while TempValue0 < Object.Length165DrawSpriteXY(0, TempValue1, Object.YPos)166TempValue0++167TempValue1 -= 0x100000168loop169break170171case CLEDGE4_DEBRIS172DrawSprite(Object.Frame)173break174end switch175end sub176177178sub ObjectStartup179LoadSpriteSheet("R1/Objects2.gif")180181SpriteFrame(-8, -40, 16, 64, 163, 1) // #0 - Ledge182183// Used to be below LoadSpriteSheet, moved here for consistency184ArrayPos0 = 32185while ArrayPos0 < 1056186if Object[ArrayPos0].Type == TypeName[Crumble Ledge 4]187Object[ArrayPos0].Length = Object[ArrayPos0].PropertyValue188Object[ArrayPos0].HitboxLeft = Object[ArrayPos0].PropertyValue189Object[ArrayPos0].HitboxLeft <<= 3190Object[ArrayPos0].HitboxRight = Object[ArrayPos0].HitboxLeft191FlipSign(Object[ArrayPos0].HitboxLeft)192end if193ArrayPos0++194loop195end sub196197198// ========================199// Editor Subs200// ========================201202sub RSDKDraw203Object.Length = Object.PropertyValue204Object.HitboxLeft = Object.PropertyValue205Object.HitboxLeft <<= 3206Object.HitboxRight = Object.HitboxLeft207FlipSign(Object.HitboxLeft)208209TempValue0 = 0210TempValue1 = Object.HitboxLeft211TempValue1 <<= 16212TempValue1 += 0x80000213TempValue1 += Object.XPos214while TempValue0 < Object.Length215DrawSpriteXY(0, TempValue1, Object.YPos)216TempValue0++217TempValue1 += 0x100000218loop219end sub220221222sub RSDKLoad223LoadSpriteSheet("R1/Objects2.gif")224225SpriteFrame(-8, -40, 16, 64, 163, 1) // #0 - Ledge226227SetVariableAlias(ALIAS_VAR_PROPVAL, "length")228end sub229230231