Path: blob/main/Scripts/Mission/BataPyon2.txt
1319 views
//---------------Sonic CD Bata Pyon 2 Script------------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//3//-----------Used in Mission "M086 - Gotta Go Fast"-----------//45// Aliases6#alias Object.Value0 : Object.Timer7#alias Object.Value1 : Object.XVelocity8#alias Object.Value2 : Object.YVelocity9#alias Object.Value3 : Object.XOriginPos10#alias Object.Value4 : Object.YOriginPos11#alias Object.Value5 : Object.TurnTimer1213#alias Object.PropertyValue : Object.Quality1415// States16#alias 0 : BATAPYON2_JUMP17#alias 1 : BATAPYON2_BOUNCE18#alias 2 : BATAPYON2_BAD_RECOIL_119#alias 3 : BATAPYON2_BAD_RECOIL_220#alias 4 : BATAPYON2_BAD_RECOIL_321#alias 5 : BATAPYON2_BAD_RECOIL_422#alias 6 : BATAPYON2_BAD_BOUNCE23#alias 7 : BATAPYON2_RESET2425// Collision Sides26#alias 0 : CSIDE_FLOOR27#alias 1 : CSIDE_LWALL28#alias 2 : CSIDE_RWALL29#alias 3 : CSIDE_ROOF3031// Priority32#alias 0 : PRIORITY_BOUNDS33#alias 1 : PRIORITY_ACTIVE3435// Property Values36#alias 0 : GOOD_QUALITY37#alias 1 : BAD_QUALITY383940sub ObjectMain41if Object.OutOfBounds == true42Object.State = BATAPYON2_RESET43Object.Direction = FACING_RIGHT44Object.XPos = Object.XOriginPos45Object.YPos = Object.YOriginPos4647Object.XVelocity = -0x1400048Object.YVelocity = 0x10000049Object.TurnTimer = 050end if5152switch Object.State53case BATAPYON2_JUMP54Object.XPos += Object.XVelocity5556Object.YPos += Object.YVelocity57Object.YVelocity += 0x40005859ObjectTileCollision(CSIDE_ROOF, 0, -18, 0)60if CheckResult == true61Object.YVelocity = 062end if6364if Object.YVelocity > 065ObjectTileCollision(CSIDE_FLOOR, 0, 20, 0)66if CheckResult == true67if Object.Quality == GOOD_QUALITY68Object.State = BATAPYON2_BOUNCE69Object.Priority = PRIORITY_ACTIVE70Object.TurnTimer++71if Object.TurnTimer == 872Object.TurnTimer = 073Object.Direction++74Object.Direction &= FACING_LEFT75FlipSign(Object.XVelocity)76end if77else78Object.State = BATAPYON2_BAD_RECOIL_179Object.Priority = PRIORITY_ACTIVE80Object.TurnTimer++81if Object.TurnTimer == 482Object.TurnTimer = 083Object.Direction++84Object.Direction &= FACING_LEFT85FlipSign(Object.XVelocity)86end if87end if88end if89end if9091if Object.XVelocity > 092ObjectTileCollision(CSIDE_LWALL, 16, 0, 0)93if CheckResult == true94Object.TurnTimer = 095Object.Direction = FACING_RIGHT96FlipSign(Object.XVelocity)97end if98else99ObjectTileCollision(CSIDE_RWALL, -16, 0, 0)100if CheckResult == true101Object.TurnTimer = 0102Object.Direction = FACING_LEFT103FlipSign(Object.XVelocity)104end if105end if106107Object.Frame = Object.Quality108Object.Frame <<= 1109110if Object.YVelocity < 0111Object.Frame++112end if113break114115case BATAPYON2_BOUNCE116Object.XPos += Object.XVelocity117Object.YPos -= 0x120000118119Object.YVelocity = -0xC0000120121Object.State = BATAPYON2_JUMP122123Object.Frame = Object.Quality124Object.Frame <<= 1125126if Object.YVelocity < 0127Object.Frame++128end if129break130131case BATAPYON2_BAD_RECOIL_1132if Object.Timer < 2133Object.Timer++134else135Object.State++136Object.Frame = 3137Object.YPos -= 0x120000138end if139break140141case BATAPYON2_BAD_RECOIL_2142if Object.Timer < 3143Object.Timer++144else145Object.State++146Object.Frame = 2147Object.YPos += 0x120000148end if149break150151case BATAPYON2_BAD_RECOIL_3152if Object.Timer < 5153Object.Timer++154else155Object.State++156Object.Frame = 3157Object.YPos -= 0x120000158end if159break160161case BATAPYON2_BAD_RECOIL_4162if Object.Timer < 8163Object.Timer++164else165Object.State++166Object.Frame = 2167Object.YPos += 0x120000168end if169break170171case BATAPYON2_BAD_BOUNCE172if Object.Timer < 10173Object.Timer++174else175Object.Timer = 0176Object.Frame = 3177178Object.YPos -= 0x120000179Object.YVelocity = -0xA0000180181Object.State = BATAPYON2_JUMP182end if183break184185case BATAPYON2_RESET186if Object.OutOfBounds == true187Object.State = BATAPYON2_JUMP188Object.Priority = PRIORITY_BOUNDS189end if190break191end switch192CallFunction(StageSetup_CheckGoodFuture)193end sub194195196sub ObjectPlayerInteraction197if Object.State < BATAPYON2_RESET198PlayerObjectCollision(C_ENEMY, -14, -12, 14, 12)199if CheckResult == true200CallFunction(Player_BadnikBreak)201end if202end if203end sub204205206sub ObjectDraw207if Object.State < BATAPYON2_RESET208DrawSpriteFX(Object.Frame, FX_FLIP, Object.XPos, Object.YPos)209end if210end sub211212213sub ObjectStartup214LoadSpriteSheet("R6/Objects.gif")215216// Good217SpriteFrame(-16, -18, 32, 40, 34, 134) // #0 - Pata Byon218SpriteFrame(-16, -18, 32, 56, 67, 167) // #1 - Pata Byon Jump219// Bad220SpriteFrame(-16, -18, 32, 40, 34, 175) // #2 - Pata Byon221SpriteFrame(-16, -18, 32, 56, 100, 167) // #3 - Pata Byon Jump222223ArrayPos0 = 32224while ArrayPos0 < 1056225if Object[ArrayPos0].Type == TypeName[Bata Pyon]226Object[ArrayPos0].Type = TypeName[BataPyon2]227end if228229if Object[ArrayPos0].Type == TypeName[BataPyon2]230Object[ArrayPos0].XOriginPos = Object[ArrayPos0].XPos231Object[ArrayPos0].YOriginPos = Object[ArrayPos0].YPos232233Object[ArrayPos0].XVelocity = -0x14000234Object[ArrayPos0].YVelocity = 0x100000235end if236ArrayPos0++237loop238end sub239240241// ========================242// Editor Subs243// ========================244245sub RSDKEdit246if Editor.ReturnVariable == true247switch Editor.VariableID248case EDIT_VAR_PROPVAL // Property Value249CheckResult = Object.PropertyValue250CheckResult &= 1251break252case 0 // condition253CheckResult = Object.PropertyValue254CheckResult &= 1255break256end switch257else258switch Editor.VariableID259case EDIT_VAR_PROPVAL // Property Value260Object.PropertyValue = Editor.VariableValue261Object.PropertyValue &= 1262break263case 0 // condition264Object.PropertyValue = Editor.VariableValue265Object.PropertyValue &= 1266break267end switch268end if269end sub270271sub RSDKDraw272DrawSprite(Object.PropertyValue)273end sub274275276sub RSDKLoad277LoadSpriteSheet("R6/Objects.gif")278279// Good280SpriteFrame(-16, -18, 32, 40, 34, 134) // #0 - Pata Byon281// Bad282SpriteFrame(-16, -18, 32, 40, 34, 175) // #1 - Pata Byon283284AddEditorVariable("condition")285SetActiveVariable("condition")286AddEnumVariable("Good Quality", GOOD_QUALITY)287AddEnumVariable("Bad Quality", BAD_QUALITY)288end sub289290291292293