Path: blob/master/Sonic 2/Scripts/2PVS/SSResults.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: SS 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.vsReady24private alias object.value13 : object.hasTieBreaker2526// States27private alias 0 : SSRESULTS_SETUP28private alias 1 : SSRESULTS_WAITING29private alias 2 : SSRESULTS_SHOWRESULTS30private alias 3 : SSRESULTS_FADEOUT31private alias 4 : SSRESULTS_RETURNTOZONESEL3233// 2PVSSetup Aliases34private alias object.value0 : 2PVSSetup.timer3536// 2PVSSetup States37private alias 1 : 2PVSSETUP_FADEIN383940// ========================41// Events42// ========================4344event ObjectUpdate45switch object.state46case SSRESULTS_SETUP47SetupMenu(MENU_1, 0, 3, 0)4849LoadSpriteSheet("LevelSelect/Icons.gif")50object.iconSheet = object.spriteSheet5152LoadSpriteSheet("LevelSelect/Text.gif")53object.textSheet = object.spriteSheet5455menu1.selection = -156arrayPos0 = vs.match5758arrayPos0 <<= 259arrayPos0 += 0x40060object.round1Results = saveRAM[arrayPos0]6162arrayPos0++63object.round2Results = saveRAM[arrayPos0]6465arrayPos0++66object.round3Results = saveRAM[arrayPos0]6768object.wins1P = 069object.wins2P = 07071temp0 = object.round1Results72temp0 &= 1573temp1 = object.round1Results74temp1 >>= 475if temp0 == temp176object.round1Winner = 377else78if temp0 > temp179object.round1Winner = 180object.wins1P++81else82object.round1Winner = 283object.wins2P++84end if85end if8687temp0 = object.round2Results88temp0 &= 1589temp1 = object.round2Results90temp1 >>= 491if temp0 == temp192object.round2Winner = 393else94if temp0 > temp195object.round2Winner = 196object.wins1P++97else98object.round2Winner = 299object.wins2P++100end if101end if102object.hasTieBreaker = vs.tieBreaker103vs.tieBreaker = false104105temp0 = object.round3Results106temp0 &= 15107temp1 = object.round3Results108temp1 >>= 4109if temp0 == temp1110object.round3Winner = 3111else112if temp0 > temp1113object.round3Winner = 1114object.wins1P++115else116object.round3Winner = 2117object.wins2P++118end if119end if120121if object.wins1P == object.wins2P122object.overallWinner = 18123else124if object.wins1P > object.wins2P125object.overallWinner = 14126else127object.overallWinner = 16128end if129end if130131AddMenuEntry(MENU_1, "@@@@@@@@@SPECIAL@@STAGE", true)132AddMenuEntry(MENU_1, "@", true)133AddMenuEntry(MENU_1, "@", true)134AddMenuEntry(MENU_1, "@", true)135AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@@1P@@@@@2P@@@@WINS", true)136AddMenuEntry(MENU_1, "@", true)137AddMenuEntry(MENU_1, "@", true)138AddMenuEntry(MENU_1, "@", true)139AddMenuEntry(MENU_1, "STAGE@@* 1 *@@@@@@@:", true)140AddMenuEntry(MENU_1, "@", true)141AddMenuEntry(MENU_1, "STAGE@@* 2 *@@@@@@@:", true)142AddMenuEntry(MENU_1, "@", true)143if object.hasTieBreaker == false144AddMenuEntry(MENU_1, "STAGE@@* 3 *@@@@NO GAME", true)145else146AddMenuEntry(MENU_1, "STAGE@@* 3 *@@@@@@@:", true)147end if148149object.state++150break151152case SSRESULTS_WAITING153CallNativeFunction2(ReceiveEntity, 32, true)154ResetObjectEntity(32, TypeName[Blank Object], 0, 0, 0)155object.state++156break157158case SSRESULTS_SHOWRESULTS159if object.timer < 60160object.timer++161else162CheckTouchRect(0, 0, screen.xsize, screen.ysize)163if keyPress[0].start == true164checkResult = 0165end if166167if keyPress[0].buttonA == true168checkResult = 0169end if170171if keyPress[0].buttonB == true172checkResult = 0173end if174175if keyPress[0].buttonC == true176checkResult = 0177end if178179if checkResult > -1180object.timer = 0181vs.match++182object.state = SSRESULTS_FADEOUT183CallNativeFunction2(SendValue, 1, true)184object.vsReady = false185end if186end if187break188189case SSRESULTS_FADEOUT190if object.timer < 384191object.timer += 16192if vs.match < vs.gameLength193music.volume -= 10194end if195SetScreenFade(0x00, 0x00, 0x00, object.timer)196else197if vs.match >= vs.gameLength198ResetObjectEntity(1, TypeName[Game Results], 0, 0, 0)199object[1].priority = PRIORITY_ACTIVE200object[0].state = 2PVSSETUP_FADEIN2012PVSSetup[0].timer = 384202else203object.state = SSRESULTS_RETURNTOZONESEL204end if205SetScreenFade(0x00, 0x00, 0x00, 0xFF)206end if207break208209case SSRESULTS_RETURNTOZONESEL210if ReceiveValue == -1211// If the ReceiveValue function doesn't even exist, then force the object to be ready212object.vsReady = true213else214CallNativeFunction2(ReceiveValue, object.vsReady, true)215end if216217if object.vsReady == true218SetMusicTrack("Options.ogg", 0, true)219PlayMusic(0)220221ResetObjectEntity(1, TypeName[2P VS Menu 3], 0, 0, 0)222object[1].priority = PRIORITY_ACTIVE223object[0].state = 2PVSSETUP_FADEIN2242PVSSetup[0].timer = 384225SetScreenFade(0x00, 0x00, 0x00, 0xFF)226end if227break228229end switch230231object.animationTimer++232object.animationTimer &= 15233end event234235236event ObjectDraw237object.spriteSheet = object.iconSheet238if object.state < SSRESULTS_RETURNTOZONESEL239// RESULT240DrawSpriteScreenXY(0, screen.xcenter, 17)241temp0 = screen.xcenter242temp1 = temp0243temp1 += 48244245// Round 1246temp2 = object.round1Results247temp2 &= 15248temp3 = object.round1Results249temp3 >>= 4250DrawNumbers(4, temp0, 129, temp2, 2, 8, false)251DrawNumbers(4, temp1, 129, temp3, 2, 8, false)252253// Round 2254temp2 = object.round2Results255temp2 &= 15256temp3 = object.round2Results257temp3 >>= 4258DrawNumbers(4, temp0, 145, temp2, 2, 8, false)259DrawNumbers(4, temp1, 145, temp3, 2, 8, false)260261// Round 3262if object.hasTieBreaker == true263temp2 = object.round3Results264temp2 &= 15265temp3 = object.round3Results266temp3 >>= 4267DrawNumbers(4, temp0, 161, temp2, 2, 8, false)268DrawNumbers(4, temp1, 161, temp3, 2, 8, false)269end if270271// Round Winners272temp0 = screen.xcenter273temp0 += 112274DrawSpriteScreenXY(object.round1Winner, temp0, 129)275DrawSpriteScreenXY(object.round2Winner, temp0, 145)276if object.hasTieBreaker == true277DrawSpriteScreenXY(object.round3Winner, temp0, 161)278end if279temp0 = object.animationTimer280temp0 >>= 3281temp0 += object.overallWinner282DrawSpriteScreenXY(temp0, screen.xcenter, 196)283284// Menu285object.spriteSheet = object.textSheet286temp0 = screen.xcenter287temp0 -= 128288DrawMenu(MENU_1, temp0, 64)289else290// Waiting...291DrawRect(0, 0, screen.xsize, screen.ysize, 0, 0, 0, 255)292DrawSpriteScreenXY(20, screen.xsize, screen.ysize)293end if294end event295296297event ObjectStartup298LoadSpriteSheet("LevelSelect/Icons.gif")299LoadSpriteSheet("LevelSelect/Text.gif")300301SpriteFrame(-48, 0, 96, 14, 1, 136) // RESULT - #0302SpriteFrame(-8, 0, 16, 7, 98, 136) // 1P text - #1303SpriteFrame(-8, 0, 16, 7, 115, 136) // 2P text - #2304SpriteFrame(-16, 0, 32, 7, 132, 136) // TIED text - #3305SpriteFrame(0, 0, 8, 7, 175, 140) // 0 - #4306SpriteFrame(0, 0, 8, 7, 183, 140) // 1 - #5307SpriteFrame(0, 0, 8, 7, 191, 140) // 2 - #6308SpriteFrame(0, 0, 8, 7, 199, 140) // 3 - #7309SpriteFrame(0, 0, 8, 7, 207, 140) // 4 - #8310SpriteFrame(0, 0, 8, 7, 215, 140) // 5 - #9311SpriteFrame(0, 0, 8, 7, 223, 140) // 6 - #10312SpriteFrame(0, 0, 8, 7, 231, 140) // 7 - #11313SpriteFrame(0, 0, 8, 7, 239, 140) // 8 - #12314SpriteFrame(0, 0, 8, 7, 247, 140) // 9 - #13315SpriteFrame(-47, 0, 91, 12, 1, 110) // 1P WINS - #14316SpriteFrame(-47, 0, 91, 12, 1, 123) // 1P WINS (Flashing) - #15317SpriteFrame(-47, 0, 91, 12, 93, 110) // 2P WINS - #16318SpriteFrame(-47, 0, 91, 12, 93, 123) // 2P WINS (Flashing) - #17319SpriteFrame(-22, 0, 44, 12, 1, 385) // TIED - #18320SpriteFrame(-22, 0, 44, 12, 1, 398) // TIED (Flashing) - #19321if vs.playerID == 0322SpriteFrame(-160, -16, 136, 7, 103, 422) // WAITING FOR 2P... - #20323else324SpriteFrame(-160, -16, 136, 7, 103, 414) // WAITING FOR 1P... - #20325end if326327foreach (TypeName[SS Results], arrayPos0, ALL_ENTITIES)328object[arrayPos0].priority = PRIORITY_ACTIVE329next330end event331332333// ========================334// Editor Events335// ========================336337event RSDKDraw338DrawSprite(0)339end event340341342event RSDKLoad343LoadSpriteSheet("LevelSelect/Icons.gif")344SpriteFrame(-48, 0, 96, 14, 1, 136) // RESULT - #0345346SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")347end event348349350