Path: blob/main/Scripts/Animals/R6_Penguin.txt
1319 views
//-----------------Sonic CD Penguin Script--------------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.YVelocity6#alias Object.Value1 : Object.Hops78// HUD alias9#alias Object[24].PropertyValue : HUD.CurrentTimePeriod1011// States12#alias 0 : PENGUIN_HOPRIGHT13#alias 1 : PENGUIN_HOPLEFT1415// Collision Side Aliases16#alias 0 : CSIDE_FLOOR1718// Time Period Aliases19#alias 2 : TIME_GOOD_FUTURE202122sub ObjectMain23Object.YPos += Object.YVelocity2425// Apply a gravity of about 0.17 pixels per frame26Object.YVelocity += 0x2C002728switch Object.State29case PENGUIN_HOPRIGHT3031// Move the Penguin a pixel right32Object.XPos += 0x100003334// Collision is only to be checked when falling faster than 4px a frame35if Object.YVelocity > 0x4000036ObjectTileCollision(CSIDE_FLOOR, 0, 8, 0)3738if CheckResult == true3940// Bounce back up, at a starting rate of 5px per frame41Object.YVelocity = -0x500004243Object.Hops++44if Object.Hops == 245// Turn around4647Object.Hops = 04849Object.State = PENGUIN_HOPLEFT50Object.Direction = FACING_LEFT51end if52end if53end if54break5556case PENGUIN_HOPLEFT5758// Move the Penguin a pixel to the left59Object.XPos -= 0x100006061// Only check for colliison when falling, at a rate faster than 4px downwards62if Object.YVelocity > 0x4000063ObjectTileCollision(CSIDE_FLOOR, 0, 8, 0)6465if CheckResult == true66// Bounce right back up, 5px per frame is the starting rate67Object.YVelocity = -0x500006869Object.Hops++70if Object.Hops == 271// Turn around7273Object.Hops = 07475Object.State = PENGUIN_HOPRIGHT76Object.Direction = FACING_RIGHT77end if78end if79end if80break8182end switch8384end sub858687sub ObjectDraw88if MetalSonic_Destroyed == true89if Object.YVelocity < 090DrawSpriteFX(0, FX_FLIP, Object.XPos, Object.YPos)91else92DrawSpriteFX(1, FX_FLIP, Object.XPos, Object.YPos)93end if94else9596if HUD.CurrentTimePeriod == TIME_GOOD_FUTURE97if Object.YVelocity < 098DrawSpriteFX(0, FX_FLIP, Object.XPos, Object.YPos)99else100DrawSpriteFX(1, FX_FLIP, Object.XPos, Object.YPos)101end if102end if103104end if105106end sub107108109sub ObjectStartup110LoadSpriteSheet("R6/Objects.gif")111112SpriteFrame(-8, -12, 16, 24, 222, 66)113SpriteFrame(-8, -12, 16, 24, 239, 66)114115// Used to be below LoadSpriteSheet, moved here for consistency116ArrayPos0 = 32117while ArrayPos0 < 1056118if Object[ArrayPos0].Type == TypeName[Penguin]119120// Start bouncing up, at a rate of 5px per frame121Object[ArrayPos0].YVelocity = -0x50000122123// Start facing right, to correspond with the starting state of PENGUIN_HOPRIGHT124Object[ArrayPos0].Direction = FACING_RIGHT125126end if127128ArrayPos0++129loop130131end sub132133134// ========================135// Editor Subs136// ========================137138sub RSDKDraw139DrawSprite(0)140end sub141142143sub RSDKLoad144LoadSpriteSheet("R6/Objects.gif")145SpriteFrame(-8, -12, 16, 24, 222, 66)146147SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")148end sub149150151