Path: blob/main/Scripts/R4/LinkPlatforms.txt
1319 views
//---------------Sonic CD Link Platforms Script---------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Angle6#alias Object.Value1 : Object.XDrawPos7#alias Object.Value2 : Object.YDrawPos8#alias Object.Value3 : Object.XOffset9#alias Object.Value4 : Object.YOffset10#alias Object.Value5 : Object.AngleIncrease1112// Property Values13#alias 0 : CHAIN14#alias 1 : CLOCKWISE_MOVEMENT15#alias 2 : COUNTERCLOCKWISE_MOVEMENT161718sub ObjectMain19Object.Angle += Object.AngleIncrease20if Object.Angle < 021Object.Angle += 51222end if23Object.Angle &= 5112425TempValue1 = 9626Cos(Object.XOffset, Object.Angle)27Object.XOffset *= TempValue128Object.XOffset <<= 729Object.XOffset += Object.XPos30Object.XOffset &= 0xFFFF0000 // Truncate the value31Object.XOffset -= Object.XDrawPos3233Sin(Object.YOffset, Object.Angle)34Object.YOffset *= TempValue135Object.YOffset <<= 736Object.YOffset += Object.YPos37Object.YOffset &= 0xFFFF0000 // Truncate the value38Object.YOffset -= Object.YDrawPos39end sub404142sub ObjectPlayerInteraction43if Object.Frame == 144TempValue0 = Object.XPos45TempValue1 = Object.YPos4647Object.XPos = Object.XDrawPos48Object.YPos = Object.YDrawPos4950PlayerObjectCollision(C_PLATFORM, -32, -8, 32, 8)51if CheckResult == true52Player.XPos += Object.XOffset53Player.YPos += Object.YOffset54end if5556Object.XPos = TempValue057Object.YPos = TempValue158end if59end sub606162sub ObjectDraw63TempValue1 = 966465Cos(Object.XDrawPos, Object.Angle)66Object.XDrawPos *= TempValue167Object.XDrawPos <<= 768Object.XDrawPos += Object.XPos69Object.XDrawPos &= 0xFFFF0000 // Truncate the value7071Sin(Object.YDrawPos, Object.Angle)72Object.YDrawPos *= TempValue173Object.YDrawPos <<= 774Object.YDrawPos += Object.YPos75Object.YDrawPos &= 0xFFFF0000 // Truncate the value76DrawSpriteXY(Object.Frame, Object.XDrawPos, Object.YDrawPos)77end sub787980sub ObjectStartup81LoadSpriteSheet("R4/Objects.gif")8283SpriteFrame(-8, -8, 16, 16, 180, 52) // #0 - Chain84SpriteFrame(-32, -8, 64, 16, 147, 69) // #1 - Platform8586ArrayPos0 = 3287while ArrayPos0 < 105688if Object[ArrayPos0].Type == TypeName[Link Platforms]89switch Object[ArrayPos0].PropertyValue90case CLOCKWISE_MOVEMENT91Object[ArrayPos0].Angle = 11292Object[ArrayPos0].Frame = 093Object[ArrayPos0].AngleIncrease = 29495ArrayPos0++96Object[ArrayPos0].Angle = 1697Object[ArrayPos0].Frame = 098Object[ArrayPos0].AngleIncrease = 299100ArrayPos0++101Object[ArrayPos0].Angle = 32102Object[ArrayPos0].Frame = 0103Object[ArrayPos0].AngleIncrease = 2104105ArrayPos0++106Object[ArrayPos0].Angle = 48107Object[ArrayPos0].Frame = 0108Object[ArrayPos0].AngleIncrease = 2109110ArrayPos0++111Object[ArrayPos0].Angle = 96112Object[ArrayPos0].Frame = 0113Object[ArrayPos0].AngleIncrease = 2114115ArrayPos0++116Object[ArrayPos0].Angle = 80117Object[ArrayPos0].Frame = 0118Object[ArrayPos0].AngleIncrease = 2119120ArrayPos0++121Object[ArrayPos0].Angle = 64122Object[ArrayPos0].Frame = 1123Object[ArrayPos0].AngleIncrease = 2124125ArrayPos0++126Object[ArrayPos0].Angle = 0127Object[ArrayPos0].Frame = 1128Object[ArrayPos0].AngleIncrease = 2129130ArrayPos0++131Object[ArrayPos0].Angle = 128132Object[ArrayPos0].Frame = 1133Object[ArrayPos0].AngleIncrease = 2134break135136case COUNTERCLOCKWISE_MOVEMENT137Object[ArrayPos0].Angle = 112138Object[ArrayPos0].Frame = 0139Object[ArrayPos0].AngleIncrease = -2140141ArrayPos0++142Object[ArrayPos0].Angle = 16143Object[ArrayPos0].Frame = 0144Object[ArrayPos0].AngleIncrease = -2145146ArrayPos0++147Object[ArrayPos0].Angle = 32148Object[ArrayPos0].Frame = 0149Object[ArrayPos0].AngleIncrease = -2150151ArrayPos0++152Object[ArrayPos0].Angle = 48153Object[ArrayPos0].Frame = 0154Object[ArrayPos0].AngleIncrease = -2155156ArrayPos0++157Object[ArrayPos0].Angle = 96158Object[ArrayPos0].Frame = 0159Object[ArrayPos0].AngleIncrease = -2160161ArrayPos0++162Object[ArrayPos0].Angle = 80163Object[ArrayPos0].Frame = 0164Object[ArrayPos0].AngleIncrease = -2165166ArrayPos0++167Object[ArrayPos0].Angle = 64168Object[ArrayPos0].Frame = 1169Object[ArrayPos0].AngleIncrease = -2170171ArrayPos0++172Object[ArrayPos0].Angle = 0173Object[ArrayPos0].Frame = 1174Object[ArrayPos0].AngleIncrease = -2175176ArrayPos0++177Object[ArrayPos0].Angle = 128178Object[ArrayPos0].Frame = 1179Object[ArrayPos0].AngleIncrease = -2180break181182end switch183end if184ArrayPos0++185loop186end sub187188189// ========================190// Editor Subs191// ========================192193sub RSDKEdit194if Editor.ReturnVariable == true195switch Editor.VariableID196case EDIT_VAR_PROPVAL // Property Value197CheckResult = Object.PropertyValue198break199case 0 // moveDir200CheckResult = Object.PropertyValue201break202end switch203else204switch Editor.VariableID205case EDIT_VAR_PROPVAL // Property Value206Object.PropertyValue = Editor.VariableValue207break208case 0 // moveDir209Object.PropertyValue = Editor.VariableValue210break211end switch212end if213end sub214215216sub RSDKDraw217218switch Object.PropertyValue219case CLOCKWISE_MOVEMENT220Object.InkEffect = 1221DrawSpriteFX(0, FX_INK, Object.XPos, Object.YPos)222TempValue2 = 112223TempValue3 = 0224TempValue0 = Object.XPos225TempValue1 = Object.YPos226TempValue0 += 0x100000227TempValue1 -= 0x100000228DrawArrow(Object.XPos,TempValue1, TempValue0, Object.YPos, 255, 255, 0)229break230case COUNTERCLOCKWISE_MOVEMENT231Object.InkEffect = 1232DrawSpriteFX(0, FX_INK, Object.XPos, Object.YPos)233TempValue2 = 112234TempValue3 = 0235TempValue0 = Object.XPos236TempValue1 = Object.YPos237TempValue0 += 0x100000238TempValue1 -= 0x100000239DrawArrow(TempValue0, Object.YPos, Object.XPos, TempValue1, 255, 255, 0)240break241242case CHAIN243ArrayPos0 = Object.EntityNo244TempValue0 = 0245TempValue1 = 0246while TempValue1 == false247if TempValue0 == 8248TempValue1 = true249end if250ArrayPos0--251TempValue0++252CheckEqual(Object[ArrayPos0].Type, TypeName[Link Platforms])253TempValue1 = CheckResult254CheckNotEqual(Object[ArrayPos0].PropertyValue, CHAIN)255TempValue1 &= CheckResult256loop257ArrayPos1 = Object.EntityNo258ArrayPos1 -= Object[ArrayPos0].EntityNo259switch ArrayPos1260case 0261TempValue2 = 112262TempValue3 = 0263break264case 1265TempValue2 = 16266TempValue3 = 0267break268case 2269TempValue2 = 32270TempValue3 = 0271break272case 3273TempValue2 = 48274TempValue3 = 0275break276case 4277TempValue2 = 96278TempValue3 = 0279break280case 5281TempValue2 = 80282TempValue3 = 0283break284case 6285TempValue2 = 64286TempValue3 = 1287break288case 7289TempValue2 = 0290TempValue3 = 1291break292case 8293TempValue2 = 128294TempValue3 = 1295break296end switch297break298end switch299Cos(TempValue4, TempValue2)300TempValue4 *= 96301TempValue4 <<= 7302TempValue4 += Object.XPos303TempValue4 &= 0xFFFF0000 // Truncate the value304305Sin(TempValue5, TempValue2)306TempValue5 *= 96307TempValue5 <<= 7308TempValue5 += Object.YPos309TempValue5 &= 0xFFFF0000 // Truncate the value310DrawSpriteXY(TempValue3, TempValue4, TempValue5)311DrawLine(Object.XPos, Object.YPos, TempValue4, TempValue5, 255, 255, 0)312end sub313314315sub RSDKLoad316LoadSpriteSheet("R4/Objects.gif")317318SpriteFrame(-8, -8, 16, 16, 180, 52) // #0 - Chain319SpriteFrame(-32, -8, 64, 16, 147, 69) // #1 - Platform320321AddEditorVariable("moveDir")322SetActiveVariable("moveDir")323AddEnumVariable("Chain", 0)324AddEnumVariable("Clockwise", CLOCKWISE_MOVEMENT)325AddEnumVariable("Counter-Clockwise", COUNTERCLOCKWISE_MOVEMENT)326end sub327328329