Path: blob/main/Scripts/R3/Ladybug.txt
1319 views
//------------------Sonic CD Ladybug Script-------------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Oscillation6#alias Object.Value1 : Object.XVelocity7#alias Object.Value2 : Object.BombTimer89#alias Object.PropertyValue : Object.Quality1011// States12#alias 0 : LADYBUG_GUARD13#alias 1 : LADYBUG_FLEE14#alias 2 : LADYBUG_FLY1516// Badnik Quality / Property Values17#alias 0 : GOOD_QUALITY18#alias 1 : BAD_QUALITY1920// Collision Sides21#alias 0 : CSIDE_FLOOR222324sub ObjectMain25switch Object.State26case LADYBUG_GUARD27if Object.XPos > Player.XPos28Object.Direction = FACING_RIGHT29else30Object.Direction = FACING_LEFT31end if3233TempValue0 = Object.Oscillation34TempValue0 <<= 43536Sin(TempValue1, TempValue0)37TempValue1 >>= 838TempValue1 += 2439ObjectTileGrip(CSIDE_FLOOR, 0, TempValue1, 0)4041PlayerObjectCollision(C_TOUCH, -64, -256, 64, 256)42if CheckResult == true // If the player gets close enough, start fleeing43Object.State = LADYBUG_FLEE4445Object.DrawOrder = 44647if Object.XPos > Player.XPos48Object.XVelocity = 0x1000049Object.Direction = FACING_LEFT50else51Object.XVelocity = -0x1000052Object.Direction = FACING_RIGHT53end if5455end if56break5758case LADYBUG_FLEE59TempValue0 = Object.Oscillation60TempValue0 &= 361if TempValue0 < 362Object.XPos += Object.XVelocity63end if6465if Object.Oscillation < 1666ObjectTileGrip(CSIDE_FLOOR, 0, 24, 0)67else68ObjectTileGrip(CSIDE_FLOOR, 0, 23, 0)69end if70if CheckResult == false71Object.State = LADYBUG_FLY // Once the ladybug runs out of floor, start flying up72end if7374if Object.Quality == GOOD_QUALITY // if the ladybug is a good quality one, set bombs while escaping75if Object.BombTimer < 12876Object.BombTimer++77else78Object.BombTimer = 079CreateTempObject(TypeName[Ladybug Bomb], 0, Object.XPos, Object.YPos)80Object[TempObjectPos].YPos += 0x14000081end if82end if83break8485case LADYBUG_FLY86Object.YPos -= 0x800087break8889end switch9091Object.Oscillation++92Object.Oscillation &= 319394Object.Frame++95Object.Frame %= 129697CallFunction(StageSetup_CheckGoodFuture) // Check if it should be a flower98end sub99100101sub ObjectPlayerInteraction102#platform: Use_Standalone103PlayerObjectCollision(C_TOUCH, -16, -16, 16, 20)104#endplatform105#platform: Use_Origins106PlayerObjectCollision(C_ENEMY, -16, -16, 16, 20)107#endplatform108if CheckResult == true109CallFunction(Player_BadnikBreak)110end if111end sub112113114sub ObjectDraw115TempValue0 = Object.Frame116TempValue0 >>= 2117if Object.Quality == BAD_QUALITY118TempValue0 += 3119end if120DrawSpriteFX(TempValue0, FX_FLIP, Object.XPos, Object.YPos)121end sub122123124sub ObjectStartup125LoadSpriteSheet("R3/Objects.gif")126127// New Ladybug128SpriteFrame(-16, -16, 32, 32, 67, 134) // #0 - LadyBug Frame 0129SpriteFrame(-16, -16, 32, 32, 100, 134) // #1 - LadyBug Frame 1130SpriteFrame(-16, -16, 32, 32, 133, 134) // #2 - LadyBug Frame 2131// Old Ladybug132SpriteFrame(-16, -16, 32, 32, 67, 101) // #3 - LadyBug Frame 0133SpriteFrame(-16, -16, 32, 32, 100, 101) // #4 - LadyBug Frame 1134SpriteFrame(-16, -16, 32, 32, 133, 101) // #5 - LadyBug Frame 2135end sub136137138// ========================139// Editor Subs140// ========================141142sub RSDKEdit143if Editor.ReturnVariable == true144switch Editor.VariableID145case EDIT_VAR_PROPVAL // Property Value146CheckResult = Object.PropertyValue147CheckResult &= 1148break149case 0 // condition150CheckResult = Object.PropertyValue151CheckResult &= 1152break153end switch154else155switch Editor.VariableID156case EDIT_VAR_PROPVAL // Property Value157Object.PropertyValue = Editor.VariableValue158Object.PropertyValue &= 1159break160case 0 // condition161Object.PropertyValue = Editor.VariableValue162Object.PropertyValue &= 1163break164end switch165end if166end sub167168169sub RSDKDraw170switch Object.Quality171case GOOD_QUALITY172DrawSprite(0)173break174case BAD_QUALITY175DrawSprite(1)176break177end switch178end sub179180181sub RSDKLoad182LoadSpriteSheet("R3/Objects.gif")183184// New Ladybug185SpriteFrame(-16, -16, 32, 32, 67, 134) // #0 - LadyBug186// Old Ladybug187SpriteFrame(-16, -16, 32, 32, 67, 101) // #1 - LadyBug188189AddEditorVariable("condition")190SetActiveVariable("condition")191AddEnumVariable("Good Quality", GOOD_QUALITY)192AddEnumVariable("Bad Quality", BAD_QUALITY)193end sub194195196