Path: blob/master/Sonic 2/Scripts/2PVS/ZoneResults.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Zone Results 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.round1Winner15private alias object.value4 : object.round2Winner16private alias object.value5 : object.round3Winner17private alias object.value6 : object.round1Results18private alias object.value7 : object.round2Results19private alias object.value8 : object.round3Results20private alias object.value9 : object.wins1P21private alias object.value10 : object.wins2P22private alias object.value11 : object.overallWinner23private alias object.value12 : object.zoneID24private alias object.value13 : object.vsReady25private alias object.value14 : object.hasTieBreaker2627// States28private alias 0 : ZONERESULTS_SETUP29private alias 1 : ZONERESULTS_WAITING30private alias 2 : ZONERESULTS_SHOWRESULTS31private alias 3 : ZONERESULTS_FADEOUT32private alias 4 : ZONERESULTS_RETURNTOZONESEL3334// 2PVSSetup Aliases35private alias object.value0 : 2PVSSetup.timer3637// 2PVSSetup States38private alias 1 : 2PVSSETUP_FADEIN394041// ========================42// Events43// ========================4445event ObjectUpdate46switch object.state47case ZONERESULTS_SETUP48SetupMenu(MENU_1, 0, 3, 0)4950LoadSpriteSheet("LevelSelect/Icons.gif")51object.iconSheet = object.spriteSheet5253LoadSpriteSheet("LevelSelect/Text.gif")54object.textSheet = object.spriteSheet5556menu1.selection = -15758arrayPos0 = vs.match59arrayPos0 <<= 260arrayPos0 += 0x40061object.round1Results = saveRAM[arrayPos0]6263arrayPos0++64object.round2Results = saveRAM[arrayPos0]6566arrayPos0++67object.round3Results = saveRAM[arrayPos0]6869object.zoneID = vs.listPos70object.zoneID >>= 171object.wins1P = 072object.wins2P = 07374// 1P Wins75temp0 = object.round1Results76temp0 &= 1577// 2P Wins78temp1 = object.round1Results79temp1 >>= 480if temp0 == temp181object.round1Winner = 1182else83if temp0 > temp184object.round1Winner = 985object.wins1P++86else87object.round1Winner = 1088object.wins2P++89end if90end if9192// 1P Wins93temp0 = object.round2Results94temp0 &= 1595// 2P Wins96temp1 = object.round2Results97temp1 >>= 498if temp0 == temp199object.round2Winner = 11100else101if temp0 > temp1102object.round2Winner = 9103object.wins1P++104else105object.round2Winner = 10106object.wins2P++107end if108end if109object.hasTieBreaker = vs.tieBreaker110vs.tieBreaker = false111112// 1P Wins113temp0 = object.round3Results114temp0 &= 15115// 2P Wins116temp1 = object.round3Results117temp1 >>= 4118if temp0 == temp1119object.round3Winner = 11120else121if temp0 > temp1122object.round3Winner = 9123object.wins1P++124else125object.round3Winner = 10126object.wins2P++127end if128end if129130if object.wins1P == object.wins2P131object.overallWinner = 26132else133if object.wins1P > object.wins2P134object.overallWinner = 22135else136object.overallWinner = 24137end if138end if139140AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@@@@@@@@@@@WINS", true)141AddMenuEntry(MENU_1, "@", true)142AddMenuEntry(MENU_1, "@@@@@@@@* 1 *@@@@@:", true)143AddMenuEntry(MENU_1, "@", true)144AddMenuEntry(MENU_1, "@", true)145AddMenuEntry(MENU_1, "@@@@@@@@* 2 *@@@@@:", true)146AddMenuEntry(MENU_1, "@", true)147AddMenuEntry(MENU_1, "@", true)148AddMenuEntry(MENU_1, "SPECIAL STAGE", true)149AddMenuEntry(MENU_1, "@", true)150if object.hasTieBreaker == false151AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@NO GAME", true)152else153AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@@@@@:", true)154end if155AddMenuEntry(MENU_1, "@", true)156AddMenuEntry(MENU_1, "@", true)157AddMenuEntry(MENU_1, "@", true)158AddMenuEntry(MENU_1, "@", true)159AddMenuEntry(MENU_1, "@@@@@@@@@@THE ZONE", true)160object.state++161break162163case ZONERESULTS_WAITING164CallNativeFunction2(ReceiveEntity, 32, true)165ResetObjectEntity(32, TypeName[Blank Object], 0, 0, 0)166object.state++167break168169case ZONERESULTS_SHOWRESULTS170if object.timer < 60171object.timer++172else173CheckTouchRect(0, 0, screen.xsize, screen.ysize)174if keyPress[0].start == true175checkResult = 0176end if177178if keyPress[0].buttonA == true179checkResult = 0180end if181182if keyPress[0].buttonB == true183checkResult = 0184end if185186if keyPress[0].buttonC == true187checkResult = 0188end if189190if checkResult > -1191object.timer = 0192vs.match++193object.state = ZONERESULTS_FADEOUT194CallNativeFunction2(SendValue, 1, true)195object.vsReady = false196end if197end if198break199200case ZONERESULTS_FADEOUT201if object.timer < 384202object.timer += 16203if vs.match < vs.gameLength204music.volume -= 10205end if206SetScreenFade(0x00, 0x00, 0x00, object.timer)207else208if vs.match >= vs.gameLength209ResetObjectEntity(1, TypeName[Game Results], 0, 0, 0)210object[1].priority = PRIORITY_ACTIVE211object[0].state = 2PVSSETUP_FADEIN2122PVSSetup[0].timer = 384213else214object.state = ZONERESULTS_RETURNTOZONESEL215end if216SetScreenFade(0x00, 0x00, 0x00, 0xFF)217end if218break219220case ZONERESULTS_RETURNTOZONESEL221if ReceiveValue == -1222// If the ReceiveValue function doesn't even exist, then force the object to be ready223object.vsReady = true224else225CallNativeFunction2(ReceiveValue, object.vsReady, true)226end if227228if object.vsReady == true229SetMusicTrack("Options.ogg", 0, true)230PlayMusic(0)231232ResetObjectEntity(1, TypeName[2P VS Menu 3], 0, 0, 0)233object[1].priority = PRIORITY_ACTIVE234object[0].state = 2PVSSETUP_FADEIN2352PVSSetup[0].timer = 384236SetScreenFade(0x00, 0x00, 0x00, 0xFF)237end if238break239240end switch241242object.animationTimer++243object.animationTimer &= 15244end event245246247event ObjectDraw248object.spriteSheet = object.iconSheet249if object.state < ZONERESULTS_RETURNTOZONESEL250// ZONE RESULTS251DrawSpriteScreenXY(8, screen.xcenter, 17)252DrawSpriteScreenXY(object.zoneID, screen.xcenter, 65)253254temp0 = screen.xcenter255temp0 += 16256temp1 = temp0257temp1 += 32258259// Round 1 (Act 1)260temp2 = object.round1Results261temp2 &= 15262temp3 = object.round1Results263temp3 >>= 4264DrawNumbers(12, temp0, 97, temp2, 6, 8, false)265DrawNumbers(12, temp1, 97, temp3, 6, 8, false)266267// Round 2 (Act 2)268temp2 = object.round2Results269temp2 &= 15270temp3 = object.round2Results271temp3 >>= 4272DrawNumbers(12, temp0, 121, temp2, 6, 8, false)273DrawNumbers(12, temp1, 121, temp3, 6, 8, false)274275// Tie Breaker276if object.hasTieBreaker == true277temp2 = object.round3Results278temp2 &= 15279temp3 = object.round3Results280temp3 >>= 4281DrawNumbers(12, temp0, 161, temp2, 6, 8, false)282DrawNumbers(12, temp1, 161, temp3, 6, 8, false)283end if284285// Round Winners286temp0 = screen.xcenter287temp0 += 96288DrawSpriteScreenXY(object.round1Winner, temp0, 97)289DrawSpriteScreenXY(object.round2Winner, temp0, 121)290if object.round3Results > 0291DrawSpriteScreenXY(object.round3Winner, temp0, 161)292end if293temp0 = object.animationTimer294temp0 >>= 3295temp0 += object.overallWinner296DrawSpriteScreenXY(temp0, screen.xcenter, 178)297298// Menu299object.spriteSheet = object.textSheet300temp0 = screen.xcenter301temp0 -= 112302DrawMenu(MENU_1, temp0, 80)303else304// Waiting...305DrawRect(0, 0, screen.xsize, screen.ysize, 0x00, 0x00, 0x00, 0xFF)306DrawSpriteScreenXY(28, screen.xsize, screen.ysize)307end if308end event309310311event ObjectStartup312LoadSpriteSheet("LevelSelect/Icons.gif")313LoadSpriteSheet("LevelSelect/Text.gif")314315SpriteFrame(-88, 0, 136, 7, 103, 350) // EMERALD HILL ZONE - #0316SpriteFrame(-104, 0, 152, 7, 103, 358) // CHEMICAL PLANT ZONE - #1317SpriteFrame(-88, 0, 136, 7, 103, 366) // AQUATIC RUIN ZONE - #2318SpriteFrame(-88, 0, 136, 7, 103, 374) // CASINO NIGHT ZONE - #3319SpriteFrame(-56, 0, 104, 7, 103, 382) // HILL TOP ZONE - #4320SpriteFrame(-80, 0, 128, 7, 103, 390) // MYSTIC CAVE ZONE - #5321SpriteFrame(-64, 0, 112, 7, 103, 398) // OIL OCEAN ZONE - #6322SpriteFrame(-56, 0, 104, 7, 103, 406) // SPECIAL STAGE - #7323SpriteFrame(-48, 0, 96, 14, 1, 136) // RESULT - #8324SpriteFrame(-8, 0, 16, 7, 98, 136) // 1P text - #9325SpriteFrame(-8, 0, 16, 7, 115, 136) // 2P text - #10326SpriteFrame(-16, 0, 32, 7, 132, 136) // TIED text - #11327SpriteFrame(0, 0, 8, 7, 175, 140) // 0 - #12328SpriteFrame(0, 0, 8, 7, 183, 140) // 1 - #13329SpriteFrame(0, 0, 8, 7, 191, 140) // 2 - #14330SpriteFrame(0, 0, 8, 7, 199, 140) // 3 - #15331SpriteFrame(0, 0, 8, 7, 207, 140) // 4 - #16332SpriteFrame(0, 0, 8, 7, 215, 140) // 5 - #17333SpriteFrame(0, 0, 8, 7, 223, 140) // 6 - #18334SpriteFrame(0, 0, 8, 7, 231, 140) // 7 - #19335SpriteFrame(0, 0, 8, 7, 239, 140) // 8 - #20336SpriteFrame(0, 0, 8, 7, 247, 140) // 9 - #21337SpriteFrame(-47, 0, 91, 12, 1, 110) // 1P WINS - #22338SpriteFrame(-47, 0, 91, 12, 1, 123) // 1P WINS (Flashing) - #23339SpriteFrame(-47, 0, 91, 12, 93, 110) // 2P WINS - #24340SpriteFrame(-47, 0, 91, 12, 93, 123) // 2P WINS (Flashing) - #25341SpriteFrame(-22, 0, 44, 12, 1, 385) // TIED - #26342SpriteFrame(-22, 0, 44, 12, 1, 398) // TIED (Flashing) - #27343if vs.playerID == 0344SpriteFrame(-160, -16, 136, 7, 103, 422) // WAITING FOR 2P... - #28345else346SpriteFrame(-160, -16, 136, 7, 103, 414) // WAITING FOR 1P... - #28347end if348349foreach (TypeName[Zone Results], arrayPos0, ALL_ENTITIES)350object[arrayPos0].priority = PRIORITY_ACTIVE351next352end event353354355// ========================356// Editor Events357// ========================358359event RSDKDraw360DrawSprite(0)361end event362363364event RSDKLoad365LoadSpriteSheet("LevelSelect/Icons.gif")366SpriteFrame(-48, 0, 96, 14, 1, 136) // RESULT367368SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")369end event370371372