Path: blob/main/Scripts/R8/ShrinkGrowLaser.txt
1319 views
//-------------Sonic CD Shrink Grow Laser Script--------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Timer6#alias Object.Value1 : Object.YDrawPos78// States9#alias 0 : SGLASER_SHOOT_LASER10#alias 1 : SGLASER_LASER11#alias 2 : SGLASER_SPLASH1213// Property Values14#alias 0 : GIMMICK_SHRINK_LASER15#alias 1 : GIMMICK_GROW_LASER1617// Gravity18#alias 1 : GRAVITY_AIR1920// Collision Sides21#alias 0 : CSIDE_FLOOR2223// Players24#alias 0 : PLAYER_SONIC_A2526// Stage SFX27#alias 3 : SFX_S_SHRINKLASER28#alias 4 : SFX_S_TIMEUFO293031sub ObjectMain32switch Object.State33case SGLASER_SHOOT_LASER34if Object.Timer < 2435TempValue0 = Object.Timer36TempValue0 &= 337if TempValue0 == 038CreateTempObject(TypeName[S G Laser], Object.PropertyValue, Object.XPos, Object.YPos)39Object[TempObjectPos].State = SGLASER_LASER40end if41end if4243if Object.Timer == 044PlayerObjectCollision(C_TOUCH, -96, -128, 96, 128)45if CheckResult == true46if Object.PropertyValue == GIMMICK_SHRINK_LASER47PlayStageSfx(SFX_S_SHRINKLASER, false)48else49PlayStageSfx(SFX_S_TIMEUFO, false)50end if51end if52end if53Object.Timer++54Object.Timer &= 3155break5657case SGLASER_LASER58Object.YPos += 0x4000059ObjectTileCollision(CSIDE_FLOOR, 0, 8, 0)60if CheckResult == true61Object.YDrawPos = Object.YPos62Object.State++63end if64break6566case SGLASER_SPLASH67if Object.Timer < 468Object.YPos += 0x4000069Object.Timer++70else71Object.Type = TypeName[Blank Object]72end if73break74end switch75end sub767778sub ObjectPlayerInteraction79if Object.State > SGLASER_SHOOT_LASER // Check that this is the laser and not the machine80if Object.PropertyValue == Mini_PlayerFlag81if Player.State != Player_State_SizeChange82PlayerObjectCollision(C_TOUCH, -4, -8, 4, 8)83if CheckResult == true8485#platform: Use_Haptics86if Object.PropertyValue == GIMMICK_SHRINK_LASER87HapticEffect(39, 0, 0, 0)88else89HapticEffect(33, 0, 0, 0)90end if91#endplatform9293Player.State = Player_State_SizeChange94Player.Animation = ANI_SIZE_CHANGE95Player.YVelocity = -0x4000096Player.Gravity = GRAVITY_AIR97if Player.XPos > Object.XPos98Player.Speed = 0x2000099else100Player.Speed = -0x20000101end if102end if103end if104end if105end if106end sub107108109sub ObjectDraw110switch Object.State111case SGLASER_SHOOT_LASER112DrawSprite(Object.PropertyValue)113break114115case SGLASER_LASER116if Object.AnimationTimer < 2117TempValue0 = 2118TempValue0 += Object.PropertyValue119DrawSprite(TempValue0)120else121DrawSprite(4)122end if123Object.AnimationTimer++124Object.AnimationTimer &= 3125break126127case SGLASER_SPLASH128if Object.AnimationTimer < 2129TempValue0 = 2130TempValue0 += Object.PropertyValue131DrawSprite(TempValue0)132TempValue0 += 3133DrawSpriteXY(TempValue0, Object.XPos, Object.YDrawPos)134else135DrawSprite(4)136DrawSpriteXY(7, Object.XPos, Object.YDrawPos)137end if138Object.AnimationTimer++139Object.AnimationTimer &= 3140break141end switch142end sub143144145sub ObjectStartup146LoadSpriteSheet("R8/Objects2.gif")147148// Origins loads this from playerobject so, goodbye!149#platform: Use_Standalone150Mini_PlayerFlag = false151if Stage.PlayerListPos == PLAYER_SONIC_A152LoadAnimation("MiniSonic.Ani")153else154LoadAnimation("MiniTails.Ani")155end if156#endplatform157158SpriteFrame(-8, -12, 16, 24, 151, 144) // #0 - Shrink Grow Machine Red159SpriteFrame(-8, -12, 16, 24, 168, 144) // #1 - Shrink Grow Machine Blue160161SpriteFrame(-4, -8, 8, 16, 82, 196) // #2 - Laser Red162SpriteFrame(-4, -8, 8, 16, 91, 196) // #3 - Laser Blue163SpriteFrame(-4, -8, 8, 16, 100, 196) // #4 - Laser White164165SpriteFrame(-8, 0, 16, 8, 169, 169) // #5 - Laser Splash Red166SpriteFrame(-8, 0, 16, 8, 134, 178) // #6 - Laser Splash Blue167SpriteFrame(-8, 0, 16, 8, 152, 169) // #7 - Laser Splash White168169ArrayPos0 = 32170while ArrayPos0 < 1056171if Object[ArrayPos0].Type == TypeName[S G Laser]172Object[ArrayPos0].DrawOrder = 4173end if174ArrayPos0++175loop176end sub177178179// ========================180// Editor Subs181// ========================182183sub RSDKEdit184if Editor.ReturnVariable == true185switch Editor.VariableID186case EDIT_VAR_PROPVAL // Property Value187CheckResult = Object.PropertyValue188CheckResult &= 1189break190case 0 // laserType191CheckResult = Object.PropertyValue192CheckResult &= 1193break194end switch195else196switch Editor.VariableID197case EDIT_VAR_PROPVAL // Property Value198Object.PropertyValue = Editor.VariableValue199Object.PropertyValue &= 1200break201case 0 // laserType202Object.PropertyValue = Editor.VariableValue203Object.PropertyValue &= 1204break205end switch206end if207end sub208209sub RSDKDraw210DrawSprite(Object.PropertyValue)211end sub212213214sub RSDKLoad215LoadSpriteSheet("R8/Objects2.gif")216SpriteFrame(-8, -12, 16, 24, 151, 144) // #0 - Shrink Grow Machine Red217SpriteFrame(-8, -12, 16, 24, 168, 144) // #1 - Shrink Grow Machine Blue218219AddEditorVariable("laserType")220SetActiveVariable("laserType")221AddEnumVariable("Shrink Laser", GIMMICK_SHRINK_LASER)222AddEnumVariable("Growth Laser", GIMMICK_GROW_LASER)223end sub224225226