Path: blob/master/Sonic 2/Scripts/Special/StartMessage.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Start Message 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.fadeClr.r13private alias object.value2 : object.fadeClr.g14private alias object.value3 : object.fadeClr.b15private alias object.value4 : object.scaleSpeed16private alias object.value5 : object.rotateSpeed17private alias object.value6 : object.vsReady18private alias object.value7 : object.sentReadyFlag1920// States21private alias 0 : STARTMESSAGE_SETUP22private alias 1 : STARTMESSAGE_DELAY23private alias 2 : STARTMESSAGE_SENDDELAY24private alias 3 : STARTMESSAGE_STARTFADEIN25private alias 4 : STARTMESSAGE_FADEIN26private alias 5 : STARTMESSAGE_ENTERMSG27private alias 6 : STARTMESSAGE_SHOWMSG28private alias 7 : STARTMESSAGE_SETUPCHAR29private alias 8 : STARTMESSAGE_MOVECHAR30private alias 9 : STARTMESSAGE_SETUPNEXTMSG3132// Text Message Property Values33private alias 2 : TEXTMESSAGE_GETRINGS34private alias 4 : TEXTMESSAGE_PLAYERPLAYER35private alias 5 : TEXTMESSAGE_MOSTRINGSWIN3637// Text Message Aliases38private alias object.value4 : textMessage.number394041// ========================42// Events43// ========================4445event ObjectUpdate46switch object.state47case STARTMESSAGE_SETUP48options.touchControls = false4950object.fadeClr.r = fadeColor51object.fadeClr.r >>= 165253object.fadeClr.g = fadeColor54object.fadeClr.g &= 0xFF0055object.fadeClr.g >>= 85657object.fadeClr.b = fadeColor58object.fadeClr.b &= 2555960if options.vsMode == true61object.vsReady = false62object.sentReadyFlag = true63object.timer = 064object.state++65else66object.vsReady = true67object.sentReadyFlag = false6869object.state = STARTMESSAGE_STARTFADEIN70object.timer = 25671SetScreenFade(object.fadeClr.r, object.fadeClr.g, object.fadeClr.b, object.timer)72end if73break7475case STARTMESSAGE_DELAY76if object.timer < 1577object.timer++78else79CallNativeFunction2(SendEntity, object.entityPos, false)80if options.vsMode == true81if ReceiveValue == -182object.vsReady = true83else84CallNativeFunction2(ReceiveEntity, 0x400, true)85object.vsReady = object[0x400].sentReadyFlag86ResetObjectEntity(0x400, TypeName[Blank Object], 0, 0, 0)87end if88end if8990if object.vsReady == true91object.timer = 092object.state++93end if94end if95break9697case STARTMESSAGE_SENDDELAY98options.touchControls = false99100CallNativeFunction2(SendEntity, object.entityPos, false)101if object.timer < 30102object.timer++103else104object.timer = 256105object.state++106end if107break108109case STARTMESSAGE_STARTFADEIN110options.touchControls = false111112stage.state = STAGE_RUNNING113#platform: USE_ORIGINS114object.drawOrder = 6115#endplatform116object.state++117if options.vsMode == true118CreateTempObject(TypeName[Text Message], TEXTMESSAGE_PLAYERPLAYER, 0, 0)119#platform: USE_STANDALONE120object[tempObjectPos].drawOrder = 5121#endplatform122#platform: USE_ORIGINS123object[tempObjectPos].drawOrder = 6124#endplatform125end if126SetScreenFade(object.fadeClr.r, object.fadeClr.g, object.fadeClr.b, object.timer)127PlayMusic(0)128break129130case STARTMESSAGE_FADEIN131options.touchControls = false132133if object.timer > 0134object.timer -= 8135else136if options.vsMode == true137object.ypos = -75138else139object.ypos = -15140end if141object.state++142end if143144SetScreenFade(object.fadeClr.r, object.fadeClr.g, object.fadeClr.b, object.timer)145break146147case STARTMESSAGE_ENTERMSG148options.touchControls = false149150if object.ypos < 108151object.ypos++152else153object.state++154end if155break156157case STARTMESSAGE_SHOWMSG158options.touchControls = false159160if object.timer < 30161object.timer++162else163object.timer = 0164temp0 = -0x380000165temp1 = object.ypos166temp1 <<= 16167168CreateTempObject(TypeName[Start Message], 0, temp0, temp1)169object[tempObjectPos].frame = 1170object[tempObjectPos].state = STARTMESSAGE_SETUPCHAR171object[tempObjectPos].angle = 72172temp0 += 0x180000173174CreateTempObject(TypeName[Start Message], 0, temp0, temp1)175object[tempObjectPos].frame = 2176object[tempObjectPos].state = STARTMESSAGE_SETUPCHAR177object[tempObjectPos].angle = 48178temp0 += 0x100000179180CreateTempObject(TypeName[Start Message], 0, temp0, temp1)181object[tempObjectPos].frame = 3182object[tempObjectPos].state = STARTMESSAGE_SETUPCHAR183object[tempObjectPos].angle = 24184temp0 += 0x100000185186CreateTempObject(TypeName[Start Message], 0, temp0, temp1)187object[tempObjectPos].frame = 4188object[tempObjectPos].state = STARTMESSAGE_SETUPCHAR189object[tempObjectPos].angle = 0190temp0 += 0x100000191192CreateTempObject(TypeName[Start Message], 0, temp0, temp1)193object[tempObjectPos].frame = 5194object[tempObjectPos].state = STARTMESSAGE_SETUPCHAR195object[tempObjectPos].angle = -24196temp0 += 0x100000197198CreateTempObject(TypeName[Start Message], 0, temp0, temp1)199object[tempObjectPos].frame = 6200object[tempObjectPos].state = STARTMESSAGE_SETUPCHAR201object[tempObjectPos].angle = -48202temp0 += 0x180000203204CreateTempObject(TypeName[Start Message], 0, temp0, temp1)205object[tempObjectPos].frame = 7206object[tempObjectPos].state = STARTMESSAGE_SETUPCHAR207object[tempObjectPos].angle = -72208object.state = STARTMESSAGE_SETUPNEXTMSG209end if210break211212case STARTMESSAGE_SETUPCHAR213object.angle &= 0x1FF214object.scale = 0x200215object.speed = -0x10000216object.scaleSpeed = 16217Rand(object.rotateSpeed, 32)218object.rotateSpeed -= 16219object.state++220#platform: USE_ORIGINS221object.drawOrder = 6222#endplatform223break224225case STARTMESSAGE_MOVECHAR226object.xpos += object.xvel227object.ypos += object.yvel228229object.scale += object.scaleSpeed230object.speed -= 0x8000231object.scaleSpeed++232object.rotation += object.rotateSpeed233object.rotation &= 0x1FF234235Cos(object.yvel, object.angle)236object.yvel *= object.speed237object.yvel >>= 9238239Sin(object.xvel, object.angle)240object.xvel *= object.speed241object.xvel >>= 9242243if object.timer < 120244object.timer++245else246object.type = TypeName[Blank Object]247end if248break249250case STARTMESSAGE_SETUPNEXTMSG251if object.timer < 40252object.timer++253else254if options.vsMode == false255CreateTempObject(TypeName[Text Message], TEXTMESSAGE_GETRINGS, 0, 0)256else257CreateTempObject(TypeName[Text Message], TEXTMESSAGE_MOSTRINGSWIN, 0, 0)258end if259260#platform: USE_STANDALONE261object[tempObjectPos].drawOrder = 5262#endplatform263#platform: USE_ORIGINS264object[tempObjectPos].drawOrder = 6265#endplatform266GetTableValue(textMessage[tempObjectPos].number, SpecialSetup_checkpointID, SpecialSetup_ringCountTable)267ResetObjectEntity(object.entityPos, TypeName[Blank Object], 0, 0, 0)268end if269break270271end switch272end event273274275event ObjectDraw276switch object.state277case STARTMESSAGE_SETUP278case STARTMESSAGE_DELAY279case STARTMESSAGE_SENDDELAY280DrawRect(0, 0, screen.xsize, screen.ysize, object.fadeClr.r, object.fadeClr.g, object.fadeClr.b, 0xFF)281#platform: USE_STANDALONE282if options.vsMode == true283// Waiting...284DrawSpriteScreenXY(8, screen.xsize, screen.ysize)285end if286#endplatform287break288289case STARTMESSAGE_ENTERMSG290case STARTMESSAGE_SHOWMSG291DrawSpriteScreenXY(0, screen.xcenter, object.ypos)292break293294case STARTMESSAGE_SETUPCHAR295case STARTMESSAGE_MOVECHAR296temp0 = object.xpos297temp0 >>= 16298temp0 += screen.xcenter299temp1 = object.ypos300temp1 >>= 16301DrawSpriteScreenFX(object.frame, FX_ROTOZOOM, temp0, temp1)302break303304case STARTMESSAGE_SETUPNEXTMSG305break306end switch307end event308309310event ObjectStartup311LoadSpriteSheet("Special/Objects.gif")312SpriteFrame(-72, -15, 144, 30, 367, 91) // Full "Start" Sprite - #0313SpriteFrame(-16, -15, 32, 30, 367, 91) // Flag L - #1314SpriteFrame(-8, -15, 16, 30, 399, 91) // "S" character - #2315SpriteFrame(-8, -15, 16, 30, 415, 91) // "T" character - #3316SpriteFrame(-8, -15, 16, 30, 431, 91) // "A" character - #4317SpriteFrame(-8, -15, 16, 30, 447, 91) // "R" character - #5318SpriteFrame(-8, -15, 16, 30, 463, 91) // "T" character - #6319SpriteFrame(-16, -15, 32, 30, 479, 91) // Flag R - #7320if vs.playerID == 0321SpriteFrame(-160, -16, 136, 7, 326, 369) // Waiting for 2P... - #8322else323SpriteFrame(-160, -16, 136, 7, 326, 361) // Waiting for 1P... - #9324end if325326if options.vsMode == true327stage.state = STAGE_PAUSED328end if329end event330331332// ========================333// Editor Events334// ========================335336event RSDKDraw337DrawSprite(0)338end event339340341event RSDKLoad342LoadSpriteSheet("Special/Objects.gif")343SpriteFrame(-72, -15, 144, 30, 367, 91)344345SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")346SetVariableAlias(ALIAS_VAR_VAL0, "ringCount2P")347SetVariableAlias(ALIAS_VAR_VAL1, "ringCountSonic")348SetVariableAlias(ALIAS_VAR_VAL2, "ringCountKnux")349SetVariableAlias(ALIAS_VAR_VAL3, "unused")350end event351352353