Path: blob/master/Sonic 2/Scripts/2PVS/2PVSMenu3.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: 2P VS Menu 3 Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// Slot 0 = 2PVSSetup8// Slot 1 = 2PVSMenu (should be this entity)9// Slot 2 = other 2PVSMenu (the other player's 2PVSMenu3 that we got from ReceiveEntity)1011// ========================12// Aliases13// ========================1415private alias object.value0 : object.timer16private alias object.value1 : object.iconSheet17private alias object.value2 : object.textSheet18private alias object.value3 : object.selection19private alias object.value4 : object.selectionTimer20private alias object.value5 : object.selectedCharacter21private alias object.value6 : object.vsSendReceieveValue2223// States24private alias 0 : 2PVSMENU3_SETUP25private alias 1 : 2PVSMENU3_SETUPROOM26private alias 2 : 2PVSMENU3_FINISHROOMSETUP27private alias 3 : 2PVSMENU3_SELECTING28private alias 4 : 2PVSMENU3_STAGESELECTED29private alias 5 : 2PVSMENU3_SHOWSELSTAGE30private alias 6 : 2PVSMENU3_TOSELECTEDSTAGE31private alias 7 : 2PVSMENU3_TOMAINMENU32private alias 8 : 2PVSMENU3_NONE3334// Selections35private alias 0 : 2PVSMENU3_SEL_NONE36private alias 1 : 2PVSMENU3_SEL_EHZ37private alias 2 : 2PVSMENU3_SEL_CPZ38private alias 3 : 2PVSMENU3_SEL_ARZ39private alias 4 : 2PVSMENU3_SEL_CNZ40private alias 5 : 2PVSMENU3_SEL_HTZ41private alias 6 : 2PVSMENU3_SEL_MCZ42private alias 7 : 2PVSMENU3_SEL_OOZ43private alias 8 : 2PVSMENU3_SEL_SS4445// ZoneButton Aliases46private alias object.value1 : zoneButton.zoneDetailsWidth47private alias object.value2 : zoneButton.disabled4849// 2PVSSetup States50private alias 3 : 2PVSSETUP_TOREGULARSTAGE51private alias 4 : 2PVSSETUP_TOSPECIALSTAGE5253// Item Mode Aliases54private alias 0 : ITEMMODE_NOPREFERENCE55private alias 1 : ITEMMODE_RANDOM565758// ========================59// Function Declarations60// ========================6162reserve function 2PVSMenu3_SetupIcons63reserve function 2PVSMenu3_HandleIconMovement646566// ========================67// Function Definitions68// ========================6970private function 2PVSMenu3_SetupIcons71object[10].alpha = 25672object[11].alpha = 25673object[12].alpha = 25674object[13].alpha = 25675object[14].alpha = 25676object[15].alpha = 25677object[16].alpha = 25678object[17].alpha = 2567980#platform: USE_ORIGINS81if vs.player2Type == PLAYER_AMY82object[+1].selectedCharacter = 583else84object[+1].selectedCharacter = vs.player2Type85object[+1].selectedCharacter += 286end if87#endplatform8889#platform: USE_STANDALONE90object[+1].selectedCharacter = vs.player2Type91object[+1].selectedCharacter += 292#endplatform9394object.state = 2PVSMENU3_SELECTING95if options.physicalControls == false96object.selection = 2PVSMENU3_SEL_NONE97else98object.selection = 2PVSMENU3_SEL_EHZ99end if100end function101102103private function 2PVSMenu3_HandleIconMovement104object[10].xpos = -108105object[10].xpos *= object.scale106object[10].xpos >>= 8107object[14].xpos = object[10].xpos108109object[11].xpos = -36110object[11].xpos *= object.scale111object[11].xpos >>= 8112object[15].xpos = object[11].xpos113114object[12].xpos = 36115object[12].xpos *= object.scale116object[12].xpos >>= 8117object[16].xpos = object[12].xpos118119object[13].xpos = 108120object[13].xpos *= object.scale121object[13].xpos >>= 8122object[17].xpos = object[13].xpos123124object[10].ypos = -28125object[10].ypos *= object.scale126object[10].ypos >>= 8127object[11].ypos = object[10].ypos128object[12].ypos = object[10].ypos129object[13].ypos = object[10].ypos130131object[14].ypos = 28132object[14].ypos *= object.scale133object[14].ypos >>= 8134object[15].ypos = object[14].ypos135object[16].ypos = object[14].ypos136object[17].ypos = object[14].ypos137end function138139140// ========================141// Events142// ========================143144event ObjectUpdate145switch object.state146case 2PVSMENU3_SETUP147LoadSpriteSheet("LevelSelect/Icons.gif")148object.iconSheet = object.spriteSheet149150LoadSpriteSheet("LevelSelect/Text.gif")151object.textSheet = object.spriteSheet152153if engine.deviceType == STANDARD154options.physicalControls = true155end if156157menu1.selection = -1158object.scale = 256159160#platform: USE_ORIGINS161if stage.playerListPos == PLAYER_AMY162object.selectedCharacter = 5163else164object.selectedCharacter = stage.playerListPos165object.selectedCharacter += 2166end if167#endplatform168169#platform: USE_STANDALONE170object.selectedCharacter = stage.playerListPos171object.selectedCharacter += 2172#endplatform173174SetupMenu(MENU_1, 0, 3, 2)175AddMenuEntry(MENU_1, "MATCH:", true)176AddMenuEntry(MENU_1, "@", true)177AddMenuEntry(MENU_1, "OF", true)178179arrayPos0 = 10180181// EHZ182ResetObjectEntity(arrayPos0, TypeName[Zone Button], 1, -108, -28)183object[arrayPos0].priority = PRIORITY_ACTIVE184arrayPos0++185186// CPZ187ResetObjectEntity(arrayPos0, TypeName[Zone Button], 2, -36, -28)188object[arrayPos0].priority = PRIORITY_ACTIVE189arrayPos0++190191// ARZ192ResetObjectEntity(arrayPos0, TypeName[Zone Button], 3, 36, -28)193object[arrayPos0].priority = PRIORITY_ACTIVE194arrayPos0++195196// CNZ197ResetObjectEntity(arrayPos0, TypeName[Zone Button], 4, 108, -28)198object[arrayPos0].priority = PRIORITY_ACTIVE199arrayPos0++200201// HTZ202ResetObjectEntity(arrayPos0, TypeName[Zone Button], 5, -108, 28)203object[arrayPos0].priority = PRIORITY_ACTIVE204arrayPos0++205206// MCZ207ResetObjectEntity(arrayPos0, TypeName[Zone Button], 6, -36, 28)208object[arrayPos0].priority = PRIORITY_ACTIVE209arrayPos0++210211// OOZ212ResetObjectEntity(arrayPos0, TypeName[Zone Button], 7, 36, 28)213object[arrayPos0].priority = PRIORITY_ACTIVE214arrayPos0++215216// Special Stage217ResetObjectEntity(arrayPos0, TypeName[Zone Button], 8, 108, 28)218object[arrayPos0].priority = PRIORITY_ACTIVE219220object[2].state = 2PVSMENU3_SELECTING221222#platform: USE_STANDALONE223if options.vsMode == true // we prolly got here from results screen224CallFunction(2PVSMenu3_SetupIcons)225else226object.state = 2PVSMENU3_SETUPROOM227object.vsSendReceieveValue = false228object.timer = 0229vs.randomValue = 313230end if231#endplatform232233#platform: USE_ORIGINS234options.vsMode = true235vs.playerID = 0236CallFunction(2PVSMenu3_SetupIcons)237CallNativeFunction2(NotifyCallback, NOTIFY_1P_VS_SELECT, 1)238#endplatform239break240241case 2PVSMENU3_SETUPROOM242// if ReceiveValue isn't set do some dummy stuff243if ReceiveValue == -1244options.vsMode = true245object.state = 2PVSMENU3_FINISHROOMSETUP246if vs.gameLength == 0247vs.gameLength = 4248end if249250if vs.itemMode == ITEMMODE_NOPREFERENCE251vs.itemMode = ITEMMODE_RANDOM252end if253end if254255CallNativeFunction2(ReceiveValue, object.vsSendReceieveValue, true)256if object.vsSendReceieveValue > 1257vs.gameLength = object.vsSendReceieveValue258vs.gameLength >>= 4259vs.gameLength &= 15260261vs.itemMode = object.vsSendReceieveValue262vs.itemMode >>= 8263vs.itemMode &= 15264265vs.playerID = object.vsSendReceieveValue266vs.playerID >>= 12267vs.playerID &= 15268269options.vsMode = true270object.state = 2PVSMENU3_FINISHROOMSETUP271end if272273if object.vsSendReceieveValue == true274object.state = 2PVSMENU3_TOMAINMENU275end if276break277278case 2PVSMENU3_FINISHROOMSETUP279object.animationTimer++280object.animationTimer &= 15281if object.timer < 120282object.timer++283if object.timer == 60284CallNativeFunction2(TransmitGlobal, "vs.player2Type", stage.playerListPos)285end if286else287// if ReceiveValue isn't set do some dummy stuff288if ReceiveValue == -1289if keyPress[0].buttonC == true290#platform: USE_STANDALONE291Rand(vs.player2Type, 3)292#endplatform293#platform: USE_ORIGINS294vs.player2Type = 2295#endplatform296end if297end if298299if vs.player2Type > -1300#platform: USE_ORIGINS301if vs.player2Type > 2302vs.player2Type = stage.playerListPos303end if304#endplatform305PlaySfx(SfxName[Star Post], false)306object.timer = 0307CallFunction(2PVSMenu3_SetupIcons)308end if309end if310break311312case 2PVSMENU3_SELECTING313CallNativeFunction2(ReceiveEntity, 2, true)314if object[2].type != TypeName[Blank Object]315if object[2].type != TypeName[2P VS Menu 3]316ResetObjectEntity(2, TypeName[Blank Object], 0, 0, 0)317end if318end if319320object[2].type = TypeName[Blank Object]321if object[2].state == 2PVSMENU3_SELECTING322if options.physicalControls == false323CheckTouchRect(0, 0, screen.xsize, screen.ysize)324if checkResult == -1325if object.selection > 2PVSMENU3_SEL_NONE326arrayPos0 = object.selection327arrayPos0 += 9328if zoneButton[arrayPos0].disabled == false329object.state = 2PVSMENU3_STAGESELECTED330PlaySfx(SfxName[Menu Select], false)331CallNativeFunction2(SendEntity, 1, true)332else333PlaySfx(SfxName[Fail], false)334end if335end if336end if337338if object.state != 2PVSMENU3_STAGESELECTED339object.selection = 2PVSMENU3_SEL_NONE340if keyPress[0].left == true341options.physicalControls = true342object.selection = 2PVSMENU3_SEL_SS343end if344345if keyPress[0].right == true346options.physicalControls = true347object.selection = 2PVSMENU3_SEL_EHZ348end if349350if keyPress[0].up == 1351options.physicalControls = true352object.selection = 2PVSMENU3_SEL_HTZ353end if354355if keyPress[0].down == true356options.physicalControls = true357object.selection = 2PVSMENU3_SEL_EHZ358end if359end if360else361if keyPress[0].left == true362object.selection--363if object.selection < 2PVSMENU3_SEL_EHZ364object.selection = 2PVSMENU3_SEL_SS365end if366PlaySfx(SfxName[Menu Move], false)367end if368369if keyPress[0].right == true370object.selection++371if object.selection > 2PVSMENU3_SEL_SS372object.selection = 2PVSMENU3_SEL_EHZ373end if374PlaySfx(SfxName[Menu Move], false)375end if376377if keyPress[0].up == true378object.selection -= 4379if object.selection < 2PVSMENU3_SEL_EHZ380object.selection += 2PVSMENU3_SEL_SS381end if382PlaySfx(SfxName[Menu Move], false)383end if384385if keyPress[0].down == true386object.selection += 4387if object.selection > 2PVSMENU3_SEL_SS388object.selection -= 2PVSMENU3_SEL_SS389end if390PlaySfx(SfxName[Menu Move], false)391end if392393if keyPress[0].start == true394arrayPos0 = object.selection395arrayPos0 += 9396if zoneButton[arrayPos0].disabled == false397object.state = 2PVSMENU3_STAGESELECTED398PlaySfx(SfxName[Menu Select], false)399CallNativeFunction2(SendEntity, 1, true)400else401PlaySfx(SfxName[Fail], false)402end if403end if404405if keyPress[0].buttonA == true406arrayPos0 = object.selection407arrayPos0 += 9408if zoneButton[arrayPos0].disabled == false409object.state = 2PVSMENU3_STAGESELECTED410PlaySfx(SfxName[Menu Select], false)411CallNativeFunction2(SendEntity, 1, true)412else413PlaySfx(SfxName[Fail], false)414end if415end if416417if object.state != 2PVSMENU3_STAGESELECTED418CheckTouchRect(0, 0, screen.xsize, screen.ysize)419if checkResult > -1420options.physicalControls = false421object.selection = 2PVSMENU3_SEL_MCZ422end if423end if424end if425else426object.state = 2PVSMENU3_STAGESELECTED427object.selection = object[2].selection428PlaySfx(SfxName[Menu Select], false)429end if430break431432case 2PVSMENU3_STAGESELECTED433if object.scale > 0434object.scale -= 8435end if436object[10].alpha = object.scale437object[11].alpha = object.scale438object[12].alpha = object.scale439object[13].alpha = object.scale440object[14].alpha = object.scale441object[15].alpha = object.scale442object[16].alpha = object.scale443object[17].alpha = object.scale444445object[10].drawOrder = 3446object[11].drawOrder = 3447object[12].drawOrder = 3448object[13].drawOrder = 3449object[14].drawOrder = 3450object[15].drawOrder = 3451object[16].drawOrder = 3452object[17].drawOrder = 3453454arrayPos0 = object.selection455arrayPos0 += 9456object[arrayPos0].alpha = 0x100457object[arrayPos0].drawOrder = 4458459arrayPos0 = object.selection460arrayPos0 += 9461CallFunction(2PVSMenu3_HandleIconMovement)462if object.selectionTimer < 32463object.selectionTimer++464else465object.selectionTimer = 0466object.state = 2PVSMENU3_SHOWSELSTAGE467end if468break469470case 2PVSMENU3_SHOWSELSTAGE471arrayPos0 = object.selection472arrayPos0 += 9473if zoneButton[arrayPos0].zoneDetailsWidth < 224474zoneButton[arrayPos0].zoneDetailsWidth += 8475else476if object.selection < 2PVSMENU3_SEL_SS477temp0 = object.selection478temp0--479temp0 <<= 1480vs.listPos = temp0481vs.activeList = REGULAR_STAGE482else483vs.listPos = 4484vs.activeList = SPECIAL_STAGE485end if486487488// We selected this stage, so lets remember that for next time we come back here489SetBit(vs.stageMask, object[arrayPos0].propertyValue, true)490491object.state = 2PVSMENU3_TOSELECTEDSTAGE492if vs.playerID == 0493object.vsSendReceieveValue = vs.listPos494object.vsSendReceieveValue <<= 4495object.vsSendReceieveValue += vs.activeList496CallNativeFunction2(SendValue, object.vsSendReceieveValue, true)497else498object.vsSendReceieveValue = 0499end if500end if501break502503case 2PVSMENU3_TOSELECTEDSTAGE504object.timer++505if object.timer >= 60506if vs.playerID == 0507stage.activeList = vs.activeList508stage.listPos = vs.listPos509if stage.activeList == REGULAR_STAGE510object[0].state = 2PVSSETUP_TOREGULARSTAGE511else512PlaySfx(SfxName[Warp], false)513object[0].state = 2PVSSETUP_TOSPECIALSTAGE514end if515object.state = 2PVSMENU3_NONE516else517CallNativeFunction2(ReceiveValue, object.vsSendReceieveValue, true)518if object.vsSendReceieveValue > 0519vs.activeList = object.vsSendReceieveValue520vs.activeList &= 0x0F521522vs.listPos = object.vsSendReceieveValue523vs.listPos >>= 4524525stage.activeList = vs.activeList526stage.listPos = vs.listPos527if stage.activeList == REGULAR_STAGE528object[0].state = 2PVSSETUP_TOREGULARSTAGE529else530PlaySfx(SfxName[Warp], false)531object[0].state = 2PVSSETUP_TOSPECIALSTAGE532end if533object.state = 2PVSMENU3_NONE534end if535end if536end if537break538539case 2PVSMENU3_TOMAINMENU540StopMusic()541options.vsMode = false542#platform: USE_STANDALONE543engine.state = 8544#endplatform545#platform: USE_ORIGINS546stage.activeList = PRESENTATION_STAGE547stage.listPos = 0548LoadStage()549#endplatform550SetScreenFade(0x00, 0x00, 0x00, 0xFF)551break552end switch553end event554555556event ObjectDraw557// STAGE SELECT558object.spriteSheet = object.iconSheet559560DrawSpriteScreenXY(0, screen.xcenter, 17)561DrawSpriteScreenXY(1, screen.xcenter, 17)562563temp0 = screen.xcenter564temp0 -= 64565566#platform: USE_STANDALONE567if vs.playerID == 0568DrawSpriteScreenXY(object.selectedCharacter, temp0, 56)569DrawSpriteScreenXY(7, temp0, 56)570else571if object.state > 2PVSMENU3_FINISHROOMSETUP572// Player 1 Character573DrawSpriteScreenXY(object[+1].selectedCharacter, temp0, 56)574else575// Waiting For...576if object.animationTimer < 8577DrawSpriteScreenXY(19, temp0, 56)578end if579end if580// 1P581DrawSpriteScreenXY(5, temp0, 56)582end if583#endplatform584585#platform: USE_ORIGINS586DrawSpriteScreenXY(object.selectedCharacter, temp0, 56)587DrawSpriteScreenXY(6, temp0, 56)588#endplatform589590temp0 = screen.xcenter591temp0 += 64592593#platform: USE_STANDALONE594if vs.playerID == 1595DrawSpriteScreenXY(object.selectedCharacter, temp0, 56)596DrawSpriteScreenXY(8, temp0, 56)597else598if object.state > 2PVSMENU3_FINISHROOMSETUP599// Player 2 Character600DrawSpriteScreenXY(object[+1].selectedCharacter, temp0, 56)601else602// Waiting For...603if object.animationTimer < 8604DrawSpriteScreenXY(19, temp0, 56)605end if606end if607// 2P608DrawSpriteScreenXY(6, temp0, 56)609end if610#endplatform611612#platform: USE_ORIGINS613DrawSpriteScreenXY(object[+1].selectedCharacter, temp0, 56)614DrawSpriteScreenXY(7, temp0, 56)615#endplatform616617// MATCH x of y618temp0 = screen.xcenter619temp0 -= 24620temp2 = vs.match621temp2++622#platform: USE_STANDALONE623DrawNumbers(9, temp0, 69, temp2, 6, 8, false)624#endplatform625#platform: USE_ORIGINS626DrawNumbers(10, temp0, 69, temp2, 6, 8, false)627#endplatform628629temp0 += 40630#platform: USE_STANDALONE631DrawNumbers(9, temp0, 69, vs.gameLength, 6, 8, false)632#endplatform633#platform: USE_ORIGINS634DrawNumbers(10, temp0, 69, vs.gameLength, 6, 8, false)635#endplatform636637object.spriteSheet = object.textSheet638DrawMenu(MENU_1, screen.xcenter, 52)639end event640641642event ObjectStartup643LoadSpriteSheet("LevelSelect/Icons.gif")644LoadSpriteSheet("LevelSelect/Text.gif")645646SpriteFrame(-96, 0, 80, 14, 83, 335) // STAGE text - # 0/ 0647SpriteFrame(0, 0, 96, 14, 1, 264) // SELECT text - # 1/ 1648SpriteFrame(-12, -20, 24, 40, 1, 279) // Sonic - # 2/ 2649SpriteFrame(-16, -20, 32, 40, 54, 279) // Tails - # 3/ 3650SpriteFrame(-14, -20, 27, 40, 26, 279) // Knuckles - # 4/ 4651#platform: USE_ORIGINS652SpriteFrame(-10, -15, 21, 35, 1, 453) // Amy - # / 5653#endplatform654SpriteFrame(-8, 24, 16, 7, 218, 124) // 1P - # 5/ 6655SpriteFrame(-8, 24, 16, 7, 218, 132) // 2P - # 6/ 7656SpriteFrame(-8, 24, 16, 7, 98, 136) // 1P (Selected) - # 7/ 8657SpriteFrame(-8, 24, 16, 7, 115, 136) // 2P (Selected) - # 8/ 9658SpriteFrame(0, 0, 8, 7, 175, 140) // 0 - # 9/10659SpriteFrame(0, 0, 8, 7, 183, 140) // 1 - #10/11660SpriteFrame(0, 0, 8, 7, 191, 140) // 2 - #11/12661SpriteFrame(0, 0, 8, 7, 199, 140) // 3 - #12/13662SpriteFrame(0, 0, 8, 7, 207, 140) // 4 - #13/14663SpriteFrame(0, 0, 8, 7, 215, 140) // 5 - #14/15664SpriteFrame(0, 0, 8, 7, 223, 140) // 6 - #15/16665SpriteFrame(0, 0, 8, 7, 231, 140) // 7 - #16/17666SpriteFrame(0, 0, 8, 7, 239, 140) // 8 - #17/18667SpriteFrame(0, 0, 8, 7, 247, 140) // 9 - #18/19668SpriteFrame(-28, -3, 56, 15, 44, 362) // WAITING FOR text - #19/20669670foreach (TypeName[2P VS Menu 3], arrayPos0, ALL_ENTITIES)671object[arrayPos0].priority = PRIORITY_ACTIVE672next673end event674675676// ========================677// Editor Events678// ========================679680event RSDKDraw681DrawSprite(0)682DrawSprite(1)683end event684685686event RSDKLoad687LoadSpriteSheet("LevelSelect/Icons.gif")688SpriteFrame(-96, 0, 80, 14, 83, 335) // STAGE text - #0689SpriteFrame(0, 0, 96, 14, 1, 264) // SELECT text - #1690691SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")692end event693694695