Path: blob/main/Scripts/R3/Amy.txt
1319 views
//-----------------Sonic CD Amy Rose Script-------------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.FrameTimer6#alias Object.Value1 : Object.XVelocity7#alias Object.Value2 : Object.YVelocity8#alias Object.Value3 : Object.LeftLimit9#alias Object.Value4 : Object.RightLimit10#alias Object.Value5 : Object.Gravity11#alias Object.Value7 : Object.HeartTimer1213// Metal Sonic Aliases14#alias Object[+1].Value0 : Metal.Timer15#alias Object[+1].State : Metal.State16#alias Object[+1].Priority : Metal.Priority1718// States19#alias 0 : AMY_IDLE20#alias 1 : AMY_CHASE21#alias 2 : AMY_AWAIT_RIGHT22#alias 3 : AMY_AWAIT_LEFT23#alias 4 : AMY_KIDNAP // Set by MetalSonic2425// Metal Sonic States26#alias 0 : METALSONIC_WAIT27#alias 1 : METALSONIC_APPROACH2829// Gravity30#alias 0 : GRAVITY_GROUND31#alias 1 : GRAVITY_AIR3233// Players34#alias 0 : PLAYER_SONIC_A3536// Collision Sides37#alias 0 : CSIDE_FLOOR3839// Ink40#alias 2 : INK_ALPHA4142// Game Mode Aliases43#alias 2 : MODE_TIMEATTACK4445// Priority46#alias 1 : PRIORITY_ACTIVE474849sub ObjectMain50Object.Priority = PRIORITY_ACTIVE51if Player.XPos < Object.XPos52Object.Direction = FACING_LEFT53else54Object.Direction = FACING_RIGHT55end if5657switch Object.State58case AMY_IDLE59TempValue0 = Object.FrameTimer60TempValue0 /= 1061TempValue0 += 1162Object.Frame = TempValue06364Object.FrameTimer++65if Object.FrameTimer > 13966Object.FrameTimer = 067end if6869PlayerObjectCollision(C_TOUCH, -96, -360, 96, 360)70if CheckResult == true71Object.XVelocity = 072Object.State = AMY_CHASE73Object.Frame = 474Object.FrameTimer = 075end if76break7778case AMY_CHASE79Object.FrameTimer++80switch Object.Frame81case 482case 683if Object.FrameTimer == 484Object.FrameTimer = 085Object.Frame++86end if87break8889case 590case 791if Object.FrameTimer == 392Object.FrameTimer = 093Object.Frame++94end if95break9697end switch9899if Object.Frame > 7100Object.Frame = 4101end if102103if Object.Direction == FACING_RIGHT104if Object.XVelocity < 0x20000105Object.XVelocity += 0x2000106end if107108if Object.XPos < Object.RightLimit109Object.XPos += Object.XVelocity110else111Object.XVelocity = 0112Object.XPos = Object.RightLimit113Object.State = AMY_AWAIT_RIGHT114Object.Frame = 0115Object.FrameTimer = 0116end if117else118if Object.XVelocity > -0x20000119Object.XVelocity -= 0x2000120end if121122if Object.XPos > Object.LeftLimit123Object.XPos += Object.XVelocity124else125Object.XVelocity = 0126Object.XPos = Object.LeftLimit127Object.State = AMY_AWAIT_LEFT128Object.Frame = 0129Object.FrameTimer = 0130end if131end if132break133134case AMY_AWAIT_RIGHT135Object.FrameTimer++136if Object.FrameTimer == 12137Object.FrameTimer = 0138Object.Frame++139end if140141if Object.Frame > 3142Object.Frame = 0143end if144145if Metal.State == METALSONIC_WAIT146if Metal.Timer < 60147Metal.Timer++148else149Metal.Timer = 0150Metal.State = METALSONIC_APPROACH151Metal.Priority = PRIORITY_ACTIVE152end if153end if154break155156case AMY_AWAIT_LEFT157Object.FrameTimer++158if Object.FrameTimer == 12159Object.FrameTimer = 0160Object.Frame++161end if162163if Object.Frame > 3164Object.Frame = 0165end if166167if Object.Direction == FACING_RIGHT168Object.State = AMY_CHASE169Object.Frame = 4170Object.FrameTimer = 0171end if172break173174case AMY_KIDNAP175Object.FrameTimer++176if Object.FrameTimer > 13177Object.FrameTimer = 0178Object.Frame++179if Object.Frame > 9180Object.Frame = 8181end if182end if183break184185end switch186187Object.HeartTimer++188if Object.State < 4189if Object.HeartTimer > 41190CreateTempObject(TypeName[Love Heart], 0, Object.XPos, Object.YPos)191Object[TempObjectPos].iYPos -= 6192Object[TempObjectPos].InkEffect = INK_ALPHA193Object[TempObjectPos].Alpha = 255194Object.HeartTimer = 0195end if196197end if198199if Object.Gravity == GRAVITY_GROUND200ObjectTileGrip(CSIDE_FLOOR, 0, 19, 0)201else202Object.YVelocity += 0x4000203Object.YPos += Object.YVelocity204ObjectTileCollision(CSIDE_FLOOR, 0, 19, 0)205if CheckResult == true206Object.YVelocity = 0207Object.Gravity = GRAVITY_GROUND208end if209210end if211end sub212213214sub ObjectDraw215DrawSpriteFX(Object.Frame, FX_FLIP, Object.XPos, Object.YPos)216end sub217218219sub ObjectStartup220LoadSpriteSheet("R3/Objects3.gif")221222// Idle223SpriteFrame(-11, -20, 22, 40, 34, 208) // #0 - Amy Idle Frame 0224SpriteFrame(-11, -20, 22, 40, 57, 208) // #1 - Amy Idle Frame 1225SpriteFrame(-11, -20, 22, 40, 34, 208) // #2 - Amy Idle Frame 2226SpriteFrame(-11, -20, 22, 40, 126, 167) // #3 - Amy Idle Frame 3227228// Walking229SpriteFrame(-15, -20, 30, 40, 68, 167) // #4 - Amy Walking Frame 0230SpriteFrame(-10, -20, 21, 40, 206, 208) // #5 - Amy Walking Frame 1231SpriteFrame(-13, -20, 26, 40, 99, 167) // #6 - Amy Walking Frame 2232SpriteFrame(-10, -20, 21, 40, 206, 208) // #7 - Amy Walking Frame 3233234// Kidnapped235SpriteFrame(0, -16, 24, 40, 1, 170) // #8 - Amy Kidnap Frame 0236SpriteFrame(0, -16, 24, 40, 1, 211) // #9 - Amy Kidnap Frame 1237238// Jumping239SpriteFrame(-12, -20, 24, 40, 107, 208) // #10 - Amy Jumping Frame 1240241// Looking for Sonic242// Amy Looking Frame "0"243SpriteFrame(-12, -20, 22, 40, 158, 208) // #11244SpriteFrame(-12, -20, 22, 40, 158, 208) // #12245SpriteFrame(-12, -20, 22, 40, 158, 208) // #13246SpriteFrame(-12, -20, 22, 40, 158, 208) // #14247SpriteFrame(-12, -20, 22, 40, 158, 208) // #15248249// Amy Looking Frame "1"250SpriteFrame(-14, -20, 25, 40, 132, 208) // #16251SpriteFrame(-14, -20, 25, 40, 132, 208) // #17252SpriteFrame(-14, -20, 25, 40, 132, 208) // #18253254// Amy Looking Frame "2"255SpriteFrame(-12, -20, 22, 40, 158, 208) // #19256SpriteFrame(-12, -20, 22, 40, 158, 208) // #20257SpriteFrame(-12, -20, 22, 40, 158, 208) // #21258259// Amy Looking Frame "3"260SpriteFrame(-14, -20, 25, 40, 132, 208) // #22261SpriteFrame(-14, -20, 25, 40, 132, 208) // #23262SpriteFrame(-14, -20, 25, 40, 132, 208) // #24263264// Used to be below LoadSpriteSheet, moved here for consistency265ArrayPos0 = 32266while ArrayPos0 < 1056267268if Object[ArrayPos0].Type == TypeName[Amy Rose]269270if Stage.PlayerListPos == PLAYER_SONIC_A // PLAYER_SONIC on origins271272if Options.GameMode == MODE_TIMEATTACK273Object[ArrayPos0].Type = TypeName[Blank Object]274ArrayPos0++275Object[ArrayPos0].Type = TypeName[Blank Object]276ArrayPos0++277Object[ArrayPos0].Type = TypeName[Blank Object]278ArrayPos0++279Object[ArrayPos0].Type = TypeName[Blank Object]280ArrayPos0++281Object[ArrayPos0].Type = TypeName[Blank Object]282else283Object[ArrayPos0].State = AMY_AWAIT_LEFT284Object[ArrayPos0].LeftLimit = 0x780000285Object[ArrayPos0].RightLimit = 0x3BC0000286Object[ArrayPos0].DrawOrder = 4287end if288289else290// Remove Amy291Object[ArrayPos0].Type = TypeName[Blank Object]292ArrayPos0++293// Remove Metal294Object[ArrayPos0].Type = TypeName[Blank Object]295ArrayPos0++296// Remove Spikes297Object[ArrayPos0].Type = TypeName[Blank Object]298ArrayPos0++299Object[ArrayPos0].Type = TypeName[Blank Object]300ArrayPos0++301Object[ArrayPos0].Type = TypeName[Blank Object]302end if303304end if305ArrayPos0++306loop307end sub308309310// ========================311// Editor Subs312// ========================313314sub RSDKDraw315Object.Direction = FACING_LEFT316DrawSpriteFX(0, FX_FLIP, Object.XPos, Object.YPos)317end sub318319320sub RSDKLoad321LoadSpriteSheet("R3/Objects3.gif")322323// Idle324SpriteFrame(-11, -20, 22, 40, 34, 208) // #0 - Amy Idle Frame 0325326SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")327end sub328329330