Path: blob/master/Sonic 2/Scripts/Credits/CreditsEggman.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Credits Eggman Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer12private alias object.value1 : object.duration13private alias object.value2 : object.frameTablePos1415// Player Aliases16private alias 2 : PLAYER_KNUCKLES_A171819// ========================20// Tables21// ========================2223private table CreditsEggman_durationTable247, 113, 7, 11325end table2627private table CreditsEggman_frameTable284, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 529end table303132// ========================33// Events34// ========================3536event ObjectUpdate37switch object.propertyValue38case 0 // Eggman Juggle39GetTableValue(object.duration, object.frame, CreditsEggman_durationTable)40object.timer++41if object.timer == object.duration42object.timer = 043object.frame++44object.frame &= 345end if4647switch object.frame48case 149if object.timer == 050object[+1].angle = 0x2051object[+2].angle = 0x2052object[+3].angle = 0x2053object[+4].angle = 0x2054object[+5].angle = 0x2055object[+6].angle = 0x2056object[+7].angle = 0x2057else58arrayPos0 = 159while arrayPos0 < 860if object.timer > object[+arrayPos0].timer61object[+arrayPos0].angle += 462if object[+arrayPos0].angle > 25663object[+arrayPos0].angle = 25664end if65end if66arrayPos0++67loop68end if69break7071case 372if object.timer == 073object[+1].angle = 22474object[+2].angle = 22475object[+3].angle = 22476object[+4].angle = 22477object[+5].angle = 22478object[+6].angle = 22479object[+7].angle = 22480else81arrayPos0 = 182while arrayPos0 < 883if object.timer > object[+arrayPos0].timer84object[+arrayPos0].angle -= 485if object[+arrayPos0].angle < 086object[+arrayPos0].angle = 087end if88end if89arrayPos0++90loop91end if92break9394end switch9596arrayPos0 = 197while arrayPos0 < 898Cos(object[+arrayPos0].xpos, object[+arrayPos0].angle)99object[+arrayPos0].xpos *= -0xE00100Sin(object[+arrayPos0].ypos, object[+arrayPos0].angle)101object[+arrayPos0].ypos *= -0xE00102object[+arrayPos0].ypos -= 0x80000103object[+arrayPos0].xpos += object.xpos104object[+arrayPos0].ypos += object.ypos105arrayPos0++106loop107break108109case 1 // Eggman Tantrum110object.timer++111if object.timer == 8112object.timer = 0113114GetTableValue(object.frame, object.frameTablePos, CreditsEggman_frameTable)115object.frameTablePos++116object.frameTablePos &= 15117118if object.frame == 4119// If this is the frame where Eggman lands after a jump, then spawn some dust120121temp1 = object.ypos122temp1 += 0x140000123temp0 = object.xpos124temp0 -= 0x150000125CreateTempObject(TypeName[Credits Eggman], 10, temp0, temp1)126object[tempObjectPos].xvel = -0x10000127object[tempObjectPos].frame = 16128129temp0 = object.xpos130temp0 += 0x150000131CreateTempObject(TypeName[Credits Eggman], 10, temp0, temp1)132object[tempObjectPos].xvel = 0x10000133object[tempObjectPos].frame = 16134end if135end if136break137138case 9 // Knux Stinger139if stage.playerListPos != PLAYER_KNUCKLES_A140if object.timer < 166141object.timer++142else143if object.alpha < 0x100144object.alpha += 2145end if146end if147end if148break149150case 10 // Landing Dust151object.animationTimer++152if object.animationTimer >= 4153object.animationTimer = 0154object.frame++155if object.frame >= 20156object.type = TypeName[Blank Object]157end if158end if159160object.xpos += object.xvel161object.ypos -= 0x10000162if object.xvel != 0163if object.xvel > 0164object.xvel -= 0x1000165else166object.xvel += 0x1000167end if168end if169break170171end switch172end event173174175event ObjectDraw176DrawSprite(object.frame)177178if object.propertyValue == 9179// If we're Knuckles, then draw his eyes with their fade-in effect too180// -> Note that object.inkEffect should be set from the scene, it isn't set within this object181DrawSpriteFX(21, FX_INK, object.xpos, object.ypos)182end if183end event184185186event ObjectStartup187LoadSpriteSheet("Ending/Credits.gif")188SpriteFrame(-29, -23, 60, 50, 1, 1) // Eggman Juggle - Frame 1 - #0189SpriteFrame(-29, -24, 58, 51, 62, 1) // Eggman Juggle - Frame 2 - #1190SpriteFrame(-31, -23, 60, 50, 121, 1) // Eggman Juggle - Frame 3 - #2191SpriteFrame(-29, -24, 58, 51, 182, 1) // Eggman Juggle - Frame 4 - #3192SpriteFrame(-29, -19, 58, 39, 52, 53) // Eggman Tantrum - Frame 1 - #4193SpriteFrame(-29, -46, 58, 62, 52, 93) // Eggman Tantrum - Frame 2 - #5194SpriteFrame(-29, -60, 58, 42, 52, 156) // Eggman Tantrum - Frame 3 - #6195SpriteFrame(-29, -19, 58, 39, 52, 53) // Eggman Tantrum - Frame 4 - #7196SpriteFrame(-8, -8, 16, 16, 1, 52) // Emerald 1 (Copy) - #8197SpriteFrame(-8, -8, 16, 16, 1, 52) // Emerald 1 - #9198SpriteFrame(-8, -8, 16, 16, 18, 52) // Emerald 2 - #10199SpriteFrame(-8, -8, 16, 16, 35, 52) // Emerald 3 - #11200SpriteFrame(-8, -8, 16, 16, 1, 69) // Emerald 4 - #12201SpriteFrame(-8, -8, 16, 16, 18, 69) // Emerald 5 - #13202SpriteFrame(-8, -8, 16, 16, 35, 69) // Emerald 6 - #14203SpriteFrame(-8, -8, 16, 16, 1, 86) // Emerald 7 - #15204SpriteFrame(-4, -4, 8, 7, 18, 86) // Dust Puff - Frame 1 - #16205SpriteFrame(-4, -4, 8, 7, 27, 86) // Dust Puff - Frame 2 - #17206SpriteFrame(-4, -4, 8, 7, 36, 86) // Dust Puff - Frame 3 - #18207SpriteFrame(-3, -3, 6, 6, 45, 86) // Dust Puff - Frame 4 - #19208SpriteFrame(-85, -22, 170, 44, 52, 211) // Knux Shrubs - #20209SpriteFrame(38, -5, 12, 7, 128, 203) // Knux Eyes - #21210211foreach (TypeName[Credits Eggman], arrayPos0, ALL_ENTITIES)212object[arrayPos0].priority = PRIORITY_BOUNDS_SMALL213switch object[arrayPos0].propertyValue214case 0 // Eggman Juggle215arrayPos1 = arrayPos0216arrayPos1 += 7217temp0 = 0218temp2 = 0219while temp0 < 7220GetBit(temp1, specialStage.emeralds, temp0)221if temp1 == false222object[arrayPos1].propertyValue = temp0223object[arrayPos1].propertyValue += 2224object[arrayPos1].timer = temp2225object[arrayPos1].timer *= 9226arrayPos1--227temp2++228end if229temp0++230loop231232while arrayPos1 > arrayPos0233object[arrayPos1].type = TypeName[Blank Object]234arrayPos1--235loop236break237238case 1 // Eggman Tantrum239object[arrayPos0].frame = 4240break241242case 2 // Emerald 1243case 3 // Emerald 2244case 4 // Emerald 3245case 5 // Emerald 4246case 6 // Emerald 5247case 7 // Emerald 6248case 8 // Emerald 7249object[arrayPos0].frame = object[arrayPos0].propertyValue250object[arrayPos0].frame += 7251break252end switch253next254end event255256257// ========================258// Editor Events259// ========================260261event RSDKEdit262if editor.returnVariable == true263switch editor.variableID264case EDIT_VAR_PROPVAL // property value265checkResult = object.propertyValue266break267268case 0 // type269checkResult = object.propertyValue270break271272end switch273else274switch editor.variableID275case EDIT_VAR_PROPVAL // property value276object.propertyValue = editor.variableValue277break278279case 0 // type280object.propertyValue = editor.variableValue281282if editor.variableValue == 9283// Knuckles uses object.frame and object.inkEffect284object.frame = 20285object.inkEffect = INK_ADD286else287object.frame = 0288object.inkEffect = INK_NONE289end if290break291292end switch293end if294end event295296297event RSDKDraw298switch object.propertyValue299case 0 // Eggman Juggle300object.frame = 0301break302303case 1 // Eggman Tantrum304object.frame = 4305break306307case 2 // Emerald 1308case 3 // Emerald 2309case 4 // Emerald 3310case 5 // Emerald 4311case 6 // Emerald 5312case 7 // Emerald 6313case 8 // Emerald 7314object.frame = object.propertyValue315object.frame += 7316break317318// Knuckles's frame should be set via object.frame attr319320end switch321322DrawSprite(object.frame)323324if object.propertyValue == 9325DrawSprite(21)326end if327end event328329330event RSDKLoad331LoadSpriteSheet("Ending/Credits.gif")332SpriteFrame(-29, -23, 60, 50, 1, 1) // Eggman Juggle - Frame 1 - #0333SpriteFrame(-29, -24, 58, 51, 62, 1) // Eggman Juggle - Frame 2 - #1334SpriteFrame(-31, -23, 60, 50, 121, 1) // Eggman Juggle - Frame 3 - #2335SpriteFrame(-29, -24, 58, 51, 182, 1) // Eggman Juggle - Frame 4 - #3336SpriteFrame(-29, -19, 58, 39, 52, 53) // Eggman Tantrum - Frame 1 - #4337SpriteFrame(-29, -46, 58, 62, 52, 93) // Eggman Tantrum - Frame 2 - #5338SpriteFrame(-29, -60, 58, 42, 52, 156) // Eggman Tantrum - Frame 3 - #6339SpriteFrame(-29, -19, 58, 39, 52, 53) // Eggman Tantrum - Frame 4 - #7340SpriteFrame(-8, -8, 16, 16, 1, 52) // Emerald 1 (Copy) - #8341SpriteFrame(-8, -8, 16, 16, 1, 52) // Emerald 1 - #9342SpriteFrame(-8, -8, 16, 16, 18, 52) // Emerald 2 - #10343SpriteFrame(-8, -8, 16, 16, 35, 52) // Emerald 3 - #11344SpriteFrame(-8, -8, 16, 16, 1, 69) // Emerald 4 - #12345SpriteFrame(-8, -8, 16, 16, 18, 69) // Emerald 5 - #13346SpriteFrame(-8, -8, 16, 16, 35, 69) // Emerald 6 - #14347SpriteFrame(-8, -8, 16, 16, 1, 86) // Emerald 7 - #15348SpriteFrame(-4, -4, 8, 7, 18, 86) // Dust Puff - Frame 1 - #16349SpriteFrame(-4, -4, 8, 7, 27, 86) // Dust Puff - Frame 2 - #17350SpriteFrame(-4, -4, 8, 7, 36, 86) // Dust Puff - Frame 3 - #18351SpriteFrame(-3, -3, 6, 6, 45, 86) // Dust Puff - Frame 4 - #19352SpriteFrame(-85, -22, 170, 44, 52, 211) // Knux Shrubs - #20353SpriteFrame(38, -5, 12, 7, 128, 203) // Knux Eyes - #21354355AddEditorVariable("type")356SetActiveVariable("type")357AddEnumVariable("Eggman (Juggling)", 0)358AddEnumVariable("Eggman (Tantrum)", 1)359AddEnumVariable("Chaos Emerald 1", 2)360AddEnumVariable("Chaos Emerald 2", 3)361AddEnumVariable("Chaos Emerald 3", 4)362AddEnumVariable("Chaos Emerald 4", 5)363AddEnumVariable("Chaos Emerald 5", 6)364AddEnumVariable("Chaos Emerald 6", 7)365AddEnumVariable("Chaos Emerald 7", 8)366AddEnumVariable("Knux Teaser", 9)367// 10 is skipped over on purpose, it's not to be set from the editor368369// frame should be set from editor as well370end event371372373