Path: blob/master/Sonic 2/Scripts/2PVS/SSResultSingle.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: SS Single Result 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.iconSheet13private alias object.value2 : object.textSheet14private alias object.value3 : object.checkpoint1Winner15private alias object.value4 : object.checkpoint2Winner16private alias object.value5 : object.checkpoint3Winner17private alias object.value6 : object.checkpoint1Rings1P18private alias object.value7 : object.checkpoint2Rings1P19private alias object.value8 : object.checkpoint3Rings1P20private alias object.value9 : object.checkpoint1Rings2P21private alias object.value10 : object.checkpoint2Rings2P22private alias object.value11 : object.checkpoint3Rings2P23private alias object.value12 : object.wins1P24private alias object.value13 : object.wins2P25private alias object.value14 : object.overallWinner26private alias object.value15 : object.stageID2728// States29private alias 0 : SSRESULTSINGLE_SETUP30private alias 1 : SSRESULTSINGLE_WAITING31private alias 2 : SSRESULTSINGLE_SHOWRESULTS32private alias 3 : SSRESULTSINGLE_LOADSTAGE33private alias 4 : SSRESULTSINGLE_FADEOUT3435// 2PVSSetup Aliases36private alias object.value0 : 2PVSSetup.timer3738// 2PVSSetup States39private alias 1 : 2PVSSETUP_FADEIN40private alias 4 : 2PVSSETUP_TOSPECIALSTAGE414243// ========================44// Events45// ========================4647event ObjectUpdate48switch object.state49case SSRESULTSINGLE_SETUP50SetupMenu(MENU_1, 0, 3, 0)5152LoadSpriteSheet("LevelSelect/Icons.gif")53object.iconSheet = object.spriteSheet5455LoadSpriteSheet("LevelSelect/Text.gif")56object.textSheet = object.spriteSheet5758menu1.selection = -159if vs.tieBreaker == false60object.stageID = vs.listPos61object.stageID -= 462else63if vs.activeList == SPECIAL_STAGE64object.stageID = 265else66object.stageID = 367end if68end if6970object.checkpoint1Rings1P = vs.checkpoint1P71object.checkpoint1Rings1P &= 0xFF7273object.checkpoint2Rings1P = vs.checkpoint1P74object.checkpoint2Rings1P >>= 875object.checkpoint2Rings1P &= 0xFF7677object.checkpoint3Rings1P = vs.checkpoint1P78object.checkpoint3Rings1P >>= 167980object.checkpoint1Rings2P = vs.checkpoint2P81object.checkpoint1Rings2P &= 0xFF8283object.checkpoint2Rings2P = vs.checkpoint2P84object.checkpoint2Rings2P >>= 885object.checkpoint2Rings2P &= 0xFF8687object.checkpoint3Rings2P = vs.checkpoint2P88object.checkpoint3Rings2P >>= 168990switch object.stageID91case 092AddMenuEntry(MENU_1, "@@@@@@@SPECIAL STAGE@@@* 1 *", true)93break9495case 196AddMenuEntry(MENU_1, "@@@@@@@SPECIAL STAGE@@@* 2 *", true)97break9899case 2100AddMenuEntry(MENU_1, "@@@@@@@SPECIAL STAGE@@@* 3 *", true)101break102103case 3104AddMenuEntry(MENU_1, "@@@@@@@SPECIAL STAGE", true)105break106107end switch108109AddMenuEntry(MENU_1, "@", true)110AddMenuEntry(MENU_1, "@", true)111AddMenuEntry(MENU_1, "@", true)112AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@1P@@@@@@2P@@@@WINS", true)113AddMenuEntry(MENU_1, "@", true)114AddMenuEntry(MENU_1, "CHECKPOINT", true)115AddMenuEntry(MENU_1, "@", true)116AddMenuEntry(MENU_1, "@@@* 1 *", true)117AddMenuEntry(MENU_1, "@", true)118AddMenuEntry(MENU_1, "@@@* 2 *", true)119AddMenuEntry(MENU_1, "@", true)120AddMenuEntry(MENU_1, "@@@* 3 *", true)121AddMenuEntry(MENU_1, "@", true)122AddMenuEntry(MENU_1, "@", true)123AddMenuEntry(MENU_1, "@* TOTAL *@@@@@@@@@:", true)124125object.wins1P = 0126object.wins2P = 0127if object.checkpoint1Rings1P == object.checkpoint1Rings2P128object.checkpoint1Winner = 3129else130if object.checkpoint1Rings1P > object.checkpoint1Rings2P131object.checkpoint1Winner = 1132object.wins1P++133else134object.checkpoint1Winner = 2135object.wins2P++136end if137end if138139if object.checkpoint2Rings1P == object.checkpoint2Rings2P140object.checkpoint2Winner = 3141else142if object.checkpoint2Rings1P > object.checkpoint2Rings2P143object.checkpoint2Winner = 1144object.wins1P++145else146object.checkpoint2Winner = 2147object.wins2P++148end if149end if150151if object.checkpoint3Rings1P == object.checkpoint3Rings2P152object.checkpoint3Winner = 3153else154if object.checkpoint3Rings1P > object.checkpoint3Rings2P155object.checkpoint3Winner = 1156object.wins1P++157else158object.checkpoint3Winner = 2159object.wins2P++160end if161end if162163if object.wins1P == object.wins2P164object.overallWinner = 18165else166if object.wins1P > object.wins2P167object.overallWinner = 14168else169object.overallWinner = 16170end if171end if172173arrayPos0 = vs.match174arrayPos0 <<= 2175if vs.tieBreaker == false176arrayPos0 += object.stageID177else178arrayPos0 += 2179end if180arrayPos0 += 0x400181saveRAM[arrayPos0] = object.wins2P182saveRAM[arrayPos0] <<= 4183saveRAM[arrayPos0] += object.wins1P184if object.stageID == 1185arrayPos0++186saveRAM[arrayPos0] = 0187arrayPos0++188saveRAM[arrayPos0] = 7189end if190191object.state++192break193194case SSRESULTSINGLE_WAITING195CallNativeFunction2(ReceiveEntity, 0x400, true)196ResetObjectEntity(0x400, TypeName[Blank Object], 0, 0, 0)197object.state++198break199200case SSRESULTSINGLE_SHOWRESULTS201if object.timer < 60202object.timer++203else204CheckTouchRect(0, 0, screen.xsize, screen.ysize)205if keyPress[0].start == true206checkResult = 0207end if208209if keyPress[0].buttonA == true210checkResult = 0211end if212213if keyPress[0].buttonB == true214checkResult = 0215end if216217if keyPress[0].buttonC == true218checkResult = 0219end if220221if checkResult > -1222object.timer = 0223if vs.tieBreaker == true224object.state = SSRESULTSINGLE_FADEOUT225else226if object.stageID == 0227vs.listPos++228stage.activeList = vs.activeList229stage.listPos = vs.listPos230object.state = SSRESULTSINGLE_LOADSTAGE231object[0].state = 2PVSSETUP_TOSPECIALSTAGE232PlaySfx(SfxName[Warp], false)233else234CallFunction(ActResults_CheckTieBreaker)235if checkResult == true236stage.activeList = SPECIAL_STAGE237stage.listPos = 6238object.state = SSRESULTSINGLE_LOADSTAGE239object[0].state = 2PVSSETUP_TOSPECIALSTAGE240PlaySfx(SfxName[Warp], false)241vs.tieBreaker = true242else243object.state = SSRESULTSINGLE_FADEOUT244end if245end if246end if247end if248end if249break250251case SSRESULTSINGLE_LOADSTAGE252break253254case SSRESULTSINGLE_FADEOUT255if object.timer < 256256object.timer += 16257SetScreenFade(0x00, 0x00, 0x00, object.timer)258else259if vs.activeList == SPECIAL_STAGE260ResetObjectEntity(1, TypeName[SS Results], 0, 0, 0)261else262ResetObjectEntity(1, TypeName[Zone Results], 0, 0, 0)263end if264object[1].priority = PRIORITY_ACTIVE265object[0].state = 2PVSSETUP_FADEIN2662PVSSetup[0].timer = 384267SetScreenFade(0x00, 0x00, 0x00, 0xFF)268end if269break270271end switch272273object.animationTimer++274object.animationTimer &= 15275end event276277278event ObjectDraw279object.spriteSheet = object.iconSheet280DrawSpriteScreenXY(0, screen.xcenter, 17)281282// 1P Results283temp0 = screen.xcenter284temp0 += 8285DrawNumbers(4, temp0, 129, object.checkpoint1Rings1P, 3, 8, false)286DrawNumbers(4, temp0, 145, object.checkpoint2Rings1P, 3, 8, false)287DrawNumbers(4, temp0, 161, object.checkpoint3Rings1P, 3, 8, false)288289// 2P Results290temp0 = screen.xcenter291temp0 += 72292DrawNumbers(4, temp0, 129, object.checkpoint1Rings2P, 3, 8, false)293DrawNumbers(4, temp0, 145, object.checkpoint2Rings2P, 3, 8, false)294DrawNumbers(4, temp0, 161, object.checkpoint3Rings2P, 3, 8, false)295296// Wins297temp0 = screen.xcenter298temp0 += 8299DrawNumbers(4, temp0, 185, object.wins1P, 1, 8, true)300temp0 += 32301DrawNumbers(4, temp0, 185, object.wins2P, 1, 8, true)302303// Winners304temp0 = screen.xcenter305temp0 += 112306DrawSpriteScreenXY(object.checkpoint1Winner, temp0, 129)307DrawSpriteScreenXY(object.checkpoint2Winner, temp0, 145)308DrawSpriteScreenXY(object.checkpoint3Winner, temp0, 161)309temp0 = object.animationTimer310temp0 >>= 3311temp0 += object.overallWinner312DrawSpriteScreenXY(temp0, screen.xcenter, 210)313314object.spriteSheet = object.textSheet315temp0 = screen.xcenter316temp0 -= 128317DrawMenu(MENU_1, temp0, 64)318end event319320321event ObjectStartup322LoadSpriteSheet("LevelSelect/Icons.gif")323LoadSpriteSheet("LevelSelect/Text.gif")324325SpriteFrame(-48, 0, 96, 14, 1, 136) // RESULT - #0326SpriteFrame(-8, 0, 16, 7, 98, 136) // 1P text - #1327SpriteFrame(-8, 0, 16, 7, 115, 136) // 2P text - #2328SpriteFrame(-16, 0, 32, 7, 132, 136) // TIED text - #3329SpriteFrame(0, 0, 8, 7, 175, 140) // 0 - #4330SpriteFrame(0, 0, 8, 7, 183, 140) // 1 - #5331SpriteFrame(0, 0, 8, 7, 191, 140) // 2 - #6332SpriteFrame(0, 0, 8, 7, 199, 140) // 3 - #7333SpriteFrame(0, 0, 8, 7, 207, 140) // 4 - #8334SpriteFrame(0, 0, 8, 7, 215, 140) // 5 - #9335SpriteFrame(0, 0, 8, 7, 223, 140) // 6 - #10336SpriteFrame(0, 0, 8, 7, 231, 140) // 7 - #11337SpriteFrame(0, 0, 8, 7, 239, 140) // 8 - #12338SpriteFrame(0, 0, 8, 7, 247, 140) // 9 - #13339SpriteFrame(-47, 0, 91, 12, 1, 110) // 1P WINS - #14340SpriteFrame(-47, 0, 91, 12, 1, 123) // 1P WINS (Flashing) - #15341SpriteFrame(-47, 0, 91, 12, 93, 110) // 2P WINS - #16342SpriteFrame(-47, 0, 91, 12, 93, 123) // 2P WINS (Flashing) - #17343SpriteFrame(-22, 0, 44, 12, 1, 385) // TIED - #18344SpriteFrame(-22, 0, 44, 12, 1, 398) // TIED (Flashing) - #19345346foreach (TypeName[SS Single Result], arrayPos0, ALL_ENTITIES)347object[arrayPos0].priority = PRIORITY_ACTIVE348next349end event350351352// ========================353// Editor Events354// ========================355356event RSDKDraw357DrawSprite(0)358end event359360361event RSDKLoad362LoadSpriteSheet("LevelSelect/Icons.gif")363SpriteFrame(-48, 0, 96, 14, 1, 136) // RESULT - #0364365SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")366end event367368369