Path: blob/main/Scripts/R6/BataPyon.txt
1319 views
//----------------Sonic CD Bata Pyon 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.XVelocity7#alias Object.Value2 : Object.YVelocity8#alias Object.Value3 : Object.XOriginPos9#alias Object.Value4 : Object.YOriginPos10#alias Object.Value5 : Object.TurnTimer1112#alias Object.PropertyValue : Object.Quality1314// States15#alias 0 : BATAPYON_JUMP16#alias 1 : BATAPYON_BOUNCE17#alias 2 : BATAPYON_BAD_RECOIL_118#alias 3 : BATAPYON_BAD_RECOIL_219#alias 4 : BATAPYON_BAD_RECOIL_320#alias 5 : BATAPYON_BAD_RECOIL_421#alias 6 : BATAPYON_BAD_BOUNCE22#alias 7 : BATAPYON_RESET2324// Badnik Quality / Property Values25#alias 0 : GOOD_QUALITY26#alias 1 : BAD_QUALITY2728// Collision Sides29#alias 0 : CSIDE_FLOOR30#alias 1 : CSIDE_LWALL31#alias 2 : CSIDE_RWALL32#alias 3 : CSIDE_ROOF3334// Priority35#alias 0 : PRIORITY_BOUNDS36#alias 1 : PRIORITY_ACTIVE373839sub ObjectMain40if Object.OutOfBounds == true41Object.State = BATAPYON_RESET42Object.Direction = FACING_RIGHT43Object.XPos = Object.XOriginPos44Object.YPos = Object.YOriginPos45Object.XVelocity = -0xA00046Object.YVelocity = 0x8000047Object.TurnTimer = 048end if4950switch Object.State51case BATAPYON_JUMP52Object.XPos += Object.XVelocity5354Object.YPos += Object.YVelocity55Object.YVelocity += 0x20005657ObjectTileCollision(CSIDE_ROOF, 0, -18, 0)58if CheckResult == true59Object.YVelocity = 060end if6162if Object.YVelocity > 063ObjectTileCollision(CSIDE_FLOOR, 0, 20, 0)64if CheckResult == true65if Object.Quality == GOOD_QUALITY66Object.State = BATAPYON_BOUNCE67Object.Priority = PRIORITY_ACTIVE68Object.TurnTimer++69if Object.TurnTimer == 870Object.TurnTimer = 071Object.Direction++72Object.Direction &= FACING_LEFT73FlipSign(Object.XVelocity)74end if75else76Object.State = BATAPYON_BAD_RECOIL_177Object.Priority = PRIORITY_ACTIVE78Object.TurnTimer++79if Object.TurnTimer == 480Object.TurnTimer = 081Object.Direction++82Object.Direction &= FACING_LEFT83FlipSign(Object.XVelocity)84end if85end if86end if87end if8889if Object.XVelocity > 090ObjectTileCollision(CSIDE_LWALL, 16, 0, 0)91if CheckResult == true92Object.TurnTimer = 093Object.Direction = FACING_RIGHT94FlipSign(Object.XVelocity)95end if96else97ObjectTileCollision(CSIDE_RWALL, -16, 0, 0)98if CheckResult == true99Object.TurnTimer = 0100Object.Direction = FACING_LEFT101FlipSign(Object.XVelocity)102end if103end if104105Object.Frame = Object.Quality106Object.Frame <<= 1107108if Object.YVelocity < 0109Object.Frame++110end if111break112113case BATAPYON_BOUNCE114Object.XPos += Object.XVelocity115Object.YPos -= 0x120000116117Object.YVelocity = -0x60000118119Object.State = BATAPYON_JUMP120121Object.Frame = Object.Quality122Object.Frame <<= 1123124if Object.YVelocity < 0125Object.Frame++126end if127break128129case BATAPYON_BAD_RECOIL_1130if Object.Timer < 3131Object.Timer++132else133Object.State++134Object.Frame = 3135Object.YPos -= 0x120000136end if137break138139case BATAPYON_BAD_RECOIL_2140if Object.Timer < 6141Object.Timer++142else143Object.State++144Object.Frame = 2145Object.YPos += 0x120000146end if147break148149case BATAPYON_BAD_RECOIL_3150if Object.Timer < 10151Object.Timer++152else153Object.State++154Object.Frame = 3155Object.YPos -= 0x120000156end if157break158159case BATAPYON_BAD_RECOIL_4160if Object.Timer < 15161Object.Timer++162else163Object.State++164Object.Frame = 2165Object.YPos += 0x120000166end if167break168169case BATAPYON_BAD_BOUNCE170if Object.Timer < 20171Object.Timer++172else173Object.Timer = 0174Object.Frame = 3175176Object.YPos -= 0x120000177Object.YVelocity = -0x50000178179Object.State = BATAPYON_JUMP180end if181break182183case BATAPYON_RESET184if Object.OutOfBounds == true185Object.State = BATAPYON_JUMP186Object.Priority = PRIORITY_BOUNDS187end if188break189end switch190191// Check if this badnik should be a flower192CallFunction(StageSetup_CheckGoodFuture)193end sub194195196sub ObjectPlayerInteraction197if Object.State < BATAPYON_RESET198#platform: Use_Standalone199PlayerObjectCollision(C_TOUCH, -14, -12, 14, 12)200#endplatform201#platform: Use_Origins202PlayerObjectCollision(C_ENEMY, -14, -12, 14, 12)203#endplatform204if CheckResult == true205CallFunction(Player_BadnikBreak)206end if207end if208end sub209210211sub ObjectDraw212if Object.State < BATAPYON_RESET213DrawSpriteFX(Object.Frame, FX_FLIP, Object.XPos, Object.YPos)214end if215end sub216217218sub ObjectStartup219LoadSpriteSheet("R6/Objects.gif")220221// Good222SpriteFrame(-16, -18, 32, 40, 34, 134) // #0 - Pata Byon223SpriteFrame(-16, -18, 32, 56, 67, 167) // #1 - Pata Byon Jump224// Bad225SpriteFrame(-16, -18, 32, 40, 34, 175) // #2 - Pata Byon226SpriteFrame(-16, -18, 32, 56, 100, 167) // #3 - Pata Byon Jump227228ArrayPos0 = 32229while ArrayPos0 < 1056230if Object[ArrayPos0].Type == TypeName[Bata Pyon]231Object[ArrayPos0].XOriginPos = Object[ArrayPos0].XPos232Object[ArrayPos0].YOriginPos = Object[ArrayPos0].YPos233234Object[ArrayPos0].XVelocity = -0xA000235Object[ArrayPos0].YVelocity = 0x80000236end if237ArrayPos0++238loop239end sub240241242// ========================243// Editor Subs244// ========================245246sub RSDKEdit247if Editor.ReturnVariable == true248switch Editor.VariableID249case EDIT_VAR_PROPVAL // Property Value250CheckResult = Object.PropertyValue251CheckResult &= 1252break253case 0 // condition254CheckResult = Object.PropertyValue255CheckResult &= 1256break257end switch258else259switch Editor.VariableID260case EDIT_VAR_PROPVAL // Property Value261Object.PropertyValue = Editor.VariableValue262Object.PropertyValue &= 1263break264case 0 // condition265Object.PropertyValue = Editor.VariableValue266Object.PropertyValue &= 1267break268end switch269end if270end sub271272sub RSDKDraw273DrawSprite(Object.PropertyValue)274end sub275276277sub RSDKLoad278LoadSpriteSheet("R6/Objects.gif")279280// Good281SpriteFrame(-16, -18, 32, 40, 34, 134) // #0 - Pata Byon282// Bad283SpriteFrame(-16, -18, 32, 40, 34, 175) // #1 - Pata Byon284285AddEditorVariable("condition")286SetActiveVariable("condition")287AddEnumVariable("Good Quality", GOOD_QUALITY)288AddEnumVariable("Bad Quality", BAD_QUALITY)289end sub290291292