-- special thanks beane require 'custom_playfield.main' Context2 = require 'custom_playfield.util.context_extension' constants = require 'custom_playfield.util.constants' SkinList = require 'custom_playfield.skinlist' local BG = Scene.createCanvas(true) BG.layer = "Background" BG.active = Channel.keyframe().addKey(0,1,"cnsti").addKey(105000,0,"cnsti") local BG2 = Scene.createCanvas(false) BG2.layer = "Background" BG2.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(165000,1,"cnsti") local BG3 = Scene.createSprite("literallynothing.png")--Scene.createCanvas(true) BG3.layer = "Background" BG3.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(225000,1,"cnsti") local TRACKCANVAS = Scene.createCanvas(true) TRACKCANVAS.layer = "Track" TRACKCANVAS.sort = 1000 TRACKCANVAS.active = Channel.keyframe().addKey(0,1,"cnsti").addKey(105000,0,"cnsti") local FG = Scene.createCanvas() FG.layer = StringChannel.constant("Topmost") FG.sort = 100 FG.scaleX = 0.01;FG.scaleY = 0.01 Scene.infoPanel.active = 0 Scene.combo.active = Channel.keyframe().addKey(0,1,"cnsti").addKey(105000,0,"cnsti").addKey(165000,1,"cnsti").addKey(223125,0,"cnsti").addKey(225000,1,"cnsti").addKey(285000,0,"cnsti") Scene.combo.translationY = Channel.keyframe().addKey(0,-40,"cnsti").addKey(194531,0,"cnsti").addKey(225000,-40,"cnsti").addKey(253125,-40,"b").addKey(255000,0,"cnsti") Scene.combo.scaleX = Channel.keyframe().addKey(0,1,"cnsti").addKey(194531,0.5,"cnsti").addKey(225000,1,"cnsti").addKey(253125,1,"b").addKey(255000,0.5,"cnsti"); Scene.combo.scaleY = Scene.combo.scaleX Scene.pauseButton.colorA = 5 -- Initialize a basic playfield local playfield_main = Playfield:new(SkinList.colorless, 6):setLaneCount(4, constants.timingDefault):setExtraLaneCount(4, constants.timingDefault) playfield_main.trackExtraController.active = CreateKey(0) playfield_main.trackController.sort = 0 playfield_main.trackController.active = Channel.keyframe().addKey(0,1,"cnsti").addKey(165000,0,"cnsti") playfield_main.skyInputController.active = Channel.keyframe().addKey(0,1,"cnsti").addKey(195000,0,"cnsti") local playfield2 = Playfield:new(SkinList.light, 6):setLaneCount(3, constants.timingDefault):setExtraLaneCount(4, constants.timingDefault) playfield2.trackExtraController.active = CreateKey(0) playfield2.trackController.sort = 0 playfield2.trackController.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(165000,1,"cnsti").addKey(194532,0,"cnsti") playfield2.skyInputController.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(165000,1,"cnsti").addKey(194532,0,"cnsti") playfield2.skyInputController.translationY = -0.25 Scene.getNoteGroup(19).translationX = 2.1 --Beginning Section ---------------------------------------------------------------------------------------- local sunrise = Scene.createImage("sunrise.png") sunrise.setParent(BG) sunrise.scaleX = 14; sunrise.scaleY = 1 sunrise.translationY = 27 sunrise.translationZ = -100 local nightsky = Scene.createImage("nightsky.png") nightsky.setParent(BG) nightsky.scaleX = 14; sunrise.scaleY = 1 nightsky.translationY = 27 nightsky.translationZ = -100 nightsky.colorA = Channel.keyframe().addKey(32500,255,"b").addKey(82500,0,"b") local mountains = Scene.createImage("mountains.png") mountains.setParent(BG) mountains.scaleX = 1.2; mountains.scaleY = 1.2 mountains.translationY = -5 mountains.translationZ = -50 local sun = Scene.createImage("sun.png", "fastadd") sun.setParent(BG) sun.scaleX = 1.2; sun.scaleY = 1.2 sun.translationY = Channel.keyframe().addKey(32500,-25,"b").addKey(82500,-10,"b") sun.colorA = Channel.keyframe().addKey(32500,100,"so").addKey(82500,255,"b") sun.translationZ = -100 local water = Scene.createImage("water.png") water.setParent(BG) water.scaleX = 14; water.scaleY = 10 water.rotationX = 90 water.translationY = -35 water.translationX = Channel.keyframe().addKey(0,-200,"si").addKey(104531,200,"b") water.colorR = Channel.keyframe().addKey(32500,130,"so").addKey(82500,255,"b") water.colorG = Channel.keyframe().addKey(32500,150,"so").addKey(82500,255,"b") water.colorB = Channel.keyframe().addKey(32500,150,"so").addKey(82500,255,"b") local darkerNotes = Scene.getNoteGroup(3) darkerNotes.colorR = Channel.keyframe().addKey(32500,130,"so").addKey(82500,200,"b") darkerNotes.colorG = Channel.keyframe().addKey(32500,130,"so").addKey(82500,200,"b") darkerNotes.colorB = Channel.keyframe().addKey(32500,150,"so").addKey(82500,200,"b") local darkerNotes2 = Scene.getNoteGroup(22) darkerNotes2.colorR = Channel.keyframe().addKey(32500,130,"so").addKey(82500,200,"b") darkerNotes2.colorG = Channel.keyframe().addKey(32500,130,"so").addKey(82500,200,"b") darkerNotes2.colorB = Channel.keyframe().addKey(32500,150,"so").addKey(82500,200,"b") local skyGlow1 = Scene.createImage("skyGlow1.png", "overlay") skyGlow1.setParent(BG) skyGlow1.scaleX = 14; skyGlow1.scaleY = Channel.keyframe().addKey(32500,0,"so").addKey(82500,1.2,"b") skyGlow1.translationY = -1.5 skyGlow1.translationZ = -100 --skyGlow1.active =0-- Channel.keyframe().addKey(32500,0,"si").addKey(82500,255,"b") local skyGlow2 = Scene.createImage("skyGlow2.png", "fastadd") skyGlow2.setParent(TRACKCANVAS) skyGlow2.scaleX = 14; skyGlow2.scaleY = Channel.keyframe().addKey(32500,0,"so").addKey(82500,1.2,"b") skyGlow2.translationY = -5 skyGlow2.translationZ = -100 skyGlow2.colorA = Channel.keyframe().addKey(32500,0,"si").addKey(82500,255,"cnsti").addKey(165000,0,"b") local glowyspots = Scene.createImage("glowyspots.png", "fastadd") glowyspots.scaleX = 20; glowyspots.scaleY = 20 glowyspots.rotationZ = Channel.keyframe().addKey(0,0).addKey(105000,720) glowyspots.colorA = Channel.saw("so",938,200,0,0) glowyspots.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(52500,1,"cnsti").addKey(105000,0,"cnsti") local glowyspots2 = Scene.createImage("glowyspots2.png", "fastadd") glowyspots2.scaleX = 19; glowyspots2.scaleY = 19 glowyspots2.rotationZ = Channel.keyframe().addKey(0,0).addKey(105000,-360) glowyspots2.colorA = Channel.saw("so",938,200,0,938/3) glowyspots2.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(60000,1,"cnsti").addKey(105000,0,"cnsti") local glowyspots3 = Scene.createImage("glowyspots3.png", "fastadd") glowyspots3.scaleX = 24; glowyspots3.scaleY = 24 glowyspots3.rotationZ = Channel.keyframe().addKey(0,0).addKey(105000,-360) glowyspots3.colorA = Channel.saw("so",938,200,0,(938/3)*2) glowyspots3.active = glowyspots2.active local bottomVignette = Scene.createSprite("bottomVignette.png", "default") bottomVignette.setParent(FG) bottomVignette.layer = "Topmost" bottomVignette.sort = 1000 bottomVignette.scaleX = 50; bottomVignette.scaleY = 2 * 1/Context.screenAspectRatio bottomVignette.active = Channel.keyframe().addKey(0,1,"cnsti").addKey(165000,0,"cnsti").addKey(285000,1,"so") playfield_main.skyInputController.translationY.addKey(-9999,-1-0.25,"s").addKey(15000,-1-0.25,"s").addKey(60000,-0.5-0.25,"s").addKey(104999,1-0.25).addKey(105000,10-0.25) local vignette = Scene.createSprite("vignette.png", "fastmultiply") vignette.setParent(FG) vignette.layer = StringChannel.constant("Topmost") vignette.sort = 1000 vignette.scaleX = 1.1 * Context.screenAspectRatio; vignette.scaleY = 1.8 * 1/Context.screenAspectRatio vignette.colorA = Channel.keyframe().addKey(32500,255,"so").addKey(82500,0,"cnsti").addKey(105000,255,"cnsti").addKey(165000,0,"cnsti").addKey(285000,255,"so") vignette.active = Channel.keyframe().addKey(0,255,"cnsti").addKey(165000,0,"cnsti").addKey(285000,1,"cnsti").addKey(300000,0,"cnsti") local vignetteFade = 255 local vignetteFade2 = 200 function buildupVignetteFlash(timing,reduce) if reduce == true then vignetteFade = vignetteFade - (vignetteFade/8) vignetteFade2 = vignetteFade2 - (vignetteFade2/8) end vignette.colorA.addKey(timing,vignetteFade2,"so") vignette.colorA.addKey(timing+3740/2,vignetteFade,"cnsti") end buildupVignetteFlash(0) buildupVignetteFlash(3750) buildupVignetteFlash(3750*2) buildupVignetteFlash(3750*3) buildupVignetteFlash(3750*4) buildupVignetteFlash(3750*5) buildupVignetteFlash(3750*6) buildupVignetteFlash(3750*7) buildupVignetteFlash(3750*8) buildupVignetteFlash(3750*9) buildupVignetteFlash(3750*10,true) buildupVignetteFlash(3750*11,true) buildupVignetteFlash(3750*12,true) buildupVignetteFlash(3750*13,true) buildupVignetteFlash(3750*14,true) buildupVignetteFlash(3750*15,true) buildupVignetteFlash(3750*16,true) buildupVignetteFlash(3750*17,true) buildupVignetteFlash(3750*18,true) buildupVignetteFlash(3750*19,true) buildupVignetteFlash(3750*20,true) buildupVignetteFlash(3750*21,true) -- First Vocal Section ---------------------------------------------------------------------------------------- local black = Scene.createSprite("black.png") black.setParent(FG) black.layer = StringChannel.constant("Topmost") black.scaleX = 10000; black.scaleY = 10000 black.colorA = Channel.keyframe().addKey(32500,0,"cnsti").addKey(165000,0,"cnsti").addKey(285000,1,"so") function slowPartFlash(timing) black.colorA.addKey(timing,100,"so").addKey(timing+3500,255,"cnsti") end function slowPartFlash2(timing) black.colorA.addKey(timing,100,"so").addKey(timing+1874,150,"cnsti") end slowPartFlash(105000) slowPartFlash(108750) slowPartFlash(112500) slowPartFlash(116250) slowPartFlash2(105000+15000) slowPartFlash2(108750+15000) slowPartFlash2(112500+15000) slowPartFlash2(116250+15000) slowPartFlash2(105000+16875) slowPartFlash2(108750+16875) slowPartFlash2(112500+16875) slowPartFlash2(116250+16875) --Scene.hud.alpha = Channel.keyframe().addKey(0,255,"cnsti") --Scene.hud.alpha.addKey(105000,0) playfield_main.trackController.active.addKey(105000,0,"cnsti") Scene.getNoteGroup(1).rotationZ = 90 Scene.getNoteGroup(1).translationX = 6 Scene.getNoteGroup(2).rotationZ = -90 Scene.getNoteGroup(2).translationX = -6 Scene.getNoteGroup(4).rotationZ = 45 Scene.getNoteGroup(4).translationX = 3 Scene.getNoteGroup(5).rotationZ = -45 Scene.getNoteGroup(5).translationX = -3 local lyric1 = Scene.createSprite("lyrics/1.png","difference") lyric1.layer = StringChannel.constant("Topmost") lyric1.sort = 1000 lyric1.scaleX = Channel.keyframe(); lyric1.scaleY = 200 lyric1.textureScaleX = Channel.keyframe() lyric1.active = Channel.keyframe() lyric1.translationY = Channel.keyframe().addKey(0,0,"cnsti").addKey(135000,250,"cnsti").addKey(285000,0,"cnsti") local lyric2 = Scene.createSprite("lyrics/2.png","difference") lyric2.layer = StringChannel.constant("Topmost") lyric2.sort = 1000 lyric2.scaleX = Channel.keyframe(); lyric2.scaleY = 200 lyric2.textureScaleX = Channel.keyframe() lyric2.active = Channel.keyframe() lyric2.translationY = lyric1.translationY local lyric2b = Scene.createSprite("lyrics/2b.png","difference") lyric2b.layer = StringChannel.constant("Topmost") lyric2b.sort = 1000 lyric2b.scaleX = Channel.keyframe(); lyric2b.scaleY = 200 lyric2b.textureScaleX = Channel.keyframe() lyric2b.active = Channel.keyframe() lyric2b.translationY = lyric1.translationY local lyric3 = Scene.createSprite("lyrics/3.png","difference") lyric3.layer = StringChannel.constant("Topmost") lyric3.sort = 1000 lyric3.scaleX = Channel.keyframe(); lyric3.scaleY = 200 lyric3.textureScaleX = Channel.keyframe() lyric3.active = Channel.keyframe() lyric3.translationY = lyric1.translationY local lyric4 = Scene.createSprite("lyrics/4.png","difference") lyric4.layer = StringChannel.constant("Topmost") lyric4.sort = 1000 lyric4.scaleX = Channel.keyframe(); lyric4.scaleY = 200 lyric4.textureScaleX = Channel.keyframe() lyric4.active = Channel.keyframe() lyric4.translationY = lyric1.translationY local lyric4b = Scene.createSprite("lyrics/4b.png","difference") lyric4b.layer = StringChannel.constant("Topmost") lyric4b.sort = 1000 lyric4b.scaleX = Channel.keyframe(); lyric4b.scaleY = 200 lyric4b.textureScaleX = Channel.keyframe() lyric4b.active = Channel.keyframe() lyric4b.translationY = lyric1.translationY local lyric5 = Scene.createSprite("lyrics/5.png","difference") lyric5.layer = StringChannel.constant("Topmost") lyric5.sort = 1000 lyric5.scaleX = Channel.keyframe(); lyric5.scaleY = 200 lyric5.textureScaleX = Channel.keyframe() lyric5.active = Channel.keyframe() lyric5.translationY = lyric1.translationY local lyric6 = Scene.createSprite("lyrics/6.png","difference") lyric6.layer = StringChannel.constant("Topmost") lyric6.sort = 1000 lyric6.scaleX = Channel.keyframe(); lyric6.scaleY = 200 lyric6.textureScaleX = Channel.keyframe() lyric6.active = Channel.keyframe() lyric6.translationY = lyric1.translationY local lyric7 = Scene.createSprite("lyrics/7.png","difference") lyric7.layer = StringChannel.constant("Topmost") lyric7.sort = 1000 lyric7.scaleX = Channel.keyframe(); lyric7.scaleY = 200 lyric7.textureScaleX = Channel.keyframe() lyric7.active = Channel.keyframe().addKey(163125,0,"cnsti").addKey(223125,0,"cnsti") lyric7.translationY = lyric1.translationY local textWait = 80 function doLyrics(timing,version) lyric1.active.addKey(timing,1,"cnsti").addKey(timing+2812,0,"cnsti") for i = 0, 7, 1 do -- Thank lyric1.scaleX.addKey(timing+(textWait*i), 200*((1/11)*i), "cnsti") lyric1.textureScaleX.addKey(timing+(textWait*i), (1/11)*i, "cnsti") end for i = 8, 11, 1 do -- you, lyric1.scaleX.addKey(timing+938+(textWait*(i-8)), 200*((1/11)*i), "cnsti") lyric1.textureScaleX.addKey(timing+938+(textWait*(i-8)), (1/11)*i, "cnsti") end if version == 1 then lyric2.active.addKey(timing+2812,1,"cnsti").addKey(timing+6562,0,"cnsti") for i = 0, 18, 1 do -- I'll say goodbye lyric2.scaleX.addKey(timing+2812+(textWait*i), 200*((1/23)*i), "cnsti") lyric2.textureScaleX.addKey(timing+2813+(textWait*i), (1/23)*i, "cnsti") end for i = 19, 23, 1 do -- soon. lyric2.scaleX.addKey(timing+4688+(textWait*(i-19)), 200*((1/23)*i), "cnsti") lyric2.textureScaleX.addKey(timing+4688+(textWait*(i-19)), (1/23)*i, "cnsti") end else lyric2b.active.addKey(timing+2812,1,"cnsti").addKey(timing+6562,0,"cnsti") for i = 0, 18, 1 do -- I'll say goodbye lyric2b.scaleX.addKey(timing+2812+(textWait*i), 200*((1/22)*i), "cnsti") lyric2b.textureScaleX.addKey(timing+2813+(textWait*i), (1/22)*i, "cnsti") end for i = 19, 22, 1 do -- now. lyric2b.scaleX.addKey(timing+4688+(textWait*(i-19)), 200*((1/22)*i), "cnsti") lyric2b.textureScaleX.addKey(timing+4688+(textWait*(i-19)), (1/22)*i, "cnsti") end end lyric3.active.addKey(timing+6562,1,"cnsti").addKey(timing+10312,0,"cnsti") for i = 0, 34, 1 do -- Though it's the end of the world, lyric3.scaleX.addKey(timing+6562+(70*i), 200*((1/34)*i), "cnsti") lyric3.textureScaleX.addKey(timing+6562+(70*i), (1/34)*i, "cnsti") end if version == 1 or version == 3 then lyric4.active.addKey(timing+10312,1,"cnsti").addKey(timing+14375,0,"cnsti") for i = 0, 22, 1 do -- Don't blame yourself lyric4.scaleX.addKey(timing+10312+(textWait*i), 200*((1/26)*i), "cnsti") lyric4.textureScaleX.addKey(timing+10312+(textWait*i), (1/26)*i, "cnsti") end for i = 23, 26, 1 do -- now. lyric4.scaleX.addKey(timing+13125+(textWait*(i-23)), 200*((1/26)*i), "cnsti") lyric4.textureScaleX.addKey(timing+13125+(textWait*(i-23)), (1/26)*i, "cnsti") end else lyric4b.active.addKey(timing+10312,1,"cnsti").addKey(timing+14375,0,"cnsti") for i = 0, 26, 1 do -- Don't blame yourself. lyric4b.scaleX.addKey(timing+10312+(textWait*i), 200*((1/26)*i), "cnsti") lyric4b.textureScaleX.addKey(timing+10312+(textWait*i), (1/26)*i, "cnsti") end end lyric5.active.addKey(timing+14375,1,"cnsti").addKey(timing+17812,0,"cnsti") for i = 0, 13, 1 do -- And if it's lyric5.scaleX.addKey(timing+14375+(textWait*i), 200*((1/18)*i), "cnsti") lyric5.textureScaleX.addKey(timing+14375+(textWait*i), (1/18)*i, "cnsti") end for i = 14, 18, 1 do -- true, lyric5.scaleX.addKey(timing+15938+(textWait*(i-14)), 200*((1/18)*i), "cnsti") lyric5.textureScaleX.addKey(timing+15938+(textWait*(i-14)), (1/18)*i, "cnsti") end lyric6.active.addKey(timing+17812,1,"cnsti").addKey(timing+20938,0,"cnsti") for i = 0, 17, 1 do -- I will surround lyric6.scaleX.addKey(timing+17812+(textWait*i), 200*((1/21)*i), "cnsti") lyric6.textureScaleX.addKey(timing+17812+(textWait*i), (1/21)*i, "cnsti") end for i = 18, 21, 1 do -- you, lyric6.scaleX.addKey(timing+19688+(textWait*(i-18)), 200*((1/21)*i), "cnsti") lyric6.textureScaleX.addKey(timing+19688+(textWait*(i-18)), (1/21)*i, "cnsti") end lyric7.active.addKey(timing+20938,1,"cnsti").addKey(timing+29062,0,"cnsti") for i = 0, 26, 1 do -- And give life to a lyric7.scaleX.addKey(timing+20938+(textWait*i), 200*((1/41)*i), "cnsti") lyric7.textureScaleX.addKey(timing+20938+(textWait*i), (1/41)*i, "cnsti") end if version != 3 then for i = 27, 41, 1 do -- that's our own. lyric7.scaleX.addKey(timing+25625+(textWait*(i-27)), 200*((1/41)*i), "cnsti") lyric7.textureScaleX.addKey(timing+25625+(textWait*(i-27)), (1/41)*i, "cnsti") end end end doLyrics(105000,1) doLyrics(135000,2) local window = Scene.createSprite("window.png") window.translationZ = Channel.keyframe().addKey(135000,4000,"b").addKey(161250,1000).addKey(163085,1000,"3i").addKey(165000,-1200) window.scaleX = 200; window.scaleY = 200 window.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(135000,1,"cnsti").addKey(165000,0,"cnsti") window.colorA = Channel.keyframe().addKey(135000,0,"5i").addKey(142500,255) window.translationY = Channel.keyframe().addKey(163125,200,"si").addKey(165000,0) local windowglow = Scene.createSprite("windowglow.png", "fastadd") windowglow.layer = "Topmost" windowglow.translationZ = window.translationZ; windowglow.scaleX = window.scaleX; windowglow.scaleY = window.scaleY; windowglow.active = window.active windowglow.colorA = Channel.keyframe().addKey(135000,0,"si").addKey(142500,255) windowglow.translationY = window.translationY local windowglow2 = Scene.createSprite("windowglow2.png", "fastadd") windowglow2.layer = "Topmost" windowglow2.sort = 10000 windowglow2.translationZ = window.translationZ windowglow2.scaleX = 500; windowglow2.scaleY = 500 windowglow2.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(135000,1,"cnsti").addKey(167000,0,"cnsti") windowglow2.colorA = Channel.keyframe().addKey(135000,0,"6i").addKey(163125,100).addKey(165000,255,"5o").addKey(167000,0) windowglow2.translationY = window.translationY local windowPiece1 = Scene.createSprite("windowPiece1.png") windowPiece1.translationZ = -1000 windowPiece1.scaleX = 200; windowPiece1.scaleY = 200 windowPiece1.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(165000,1,"cnsti").addKey(166250,0,"cnsti") windowPiece1.colorA = Channel.keyframe().addKey(165000,255,"so").addKey(166250,0) windowPiece1.translationX = Channel.keyframe().addKey(165000,0,"5o").addKey(166250,-100) windowPiece1.translationY = Channel.keyframe().addKey(165000,0,"5o").addKey(166250,100) windowPiece1.rotationZ = Channel.keyframe().addKey(165000,0,"3o").addKey(166250,50) local windowPiece2 = Scene.createSprite("windowPiece2.png") windowPiece2.translationZ = -1000 windowPiece2.scaleX = 200; windowPiece2.scaleY = 200 windowPiece2.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(165000,1,"cnsti").addKey(166250,0,"cnsti") windowPiece2.colorA = Channel.keyframe().addKey(165000,255,"3o").addKey(166250,0) windowPiece2.translationX = Channel.keyframe().addKey(165000,0,"5o").addKey(166250,130) windowPiece2.translationY = Channel.keyframe().addKey(165000,0,"5o").addKey(166250,100) windowPiece2.rotationZ = Channel.keyframe().addKey(165000,0,"3o").addKey(166250,-30) local windowPiece3 = Scene.createSprite("windowPiece3.png") windowPiece3.translationZ = -1000 windowPiece3.scaleX = 200; windowPiece3.scaleY = 200 windowPiece3.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(165000,1,"cnsti").addKey(166250,0,"cnsti") windowPiece3.colorA = Channel.keyframe().addKey(165000,255,"2o").addKey(166250,0) windowPiece3.translationX = Channel.keyframe().addKey(165000,0,"5o").addKey(166250,-120) windowPiece3.translationY = Channel.keyframe().addKey(165000,0,"5o").addKey(166250,-100) windowPiece3.rotationZ = Channel.keyframe().addKey(165000,0,"3o").addKey(166250,50) local windowPiece4 = Scene.createSprite("windowPiece4.png") windowPiece4.translationZ = -1000 windowPiece4.scaleX = 200; windowPiece4.scaleY = 200 windowPiece4.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(165000,1,"cnsti").addKey(166250,0,"cnsti") windowPiece4.colorA = Channel.keyframe().addKey(165000,255,"so").addKey(166250,0) windowPiece4.translationX = Channel.keyframe().addKey(165000,0,"5o").addKey(166250,100) windowPiece4.translationY = Channel.keyframe().addKey(165000,0,"5o").addKey(166250,-120) windowPiece4.rotationZ = Channel.keyframe().addKey(165000,0,"3o").addKey(166250,-60) function slowPartFlash3(timing) black.colorA.addKey(timing,0,"so").addKey(timing+1874,100,"cnsti") end slowPartFlash3(135000) slowPartFlash3(135000+(1875*1)) slowPartFlash3(135000+(1875*2)) slowPartFlash3(135000+(1875*3)) slowPartFlash3(135000+(1875*4)) slowPartFlash3(135000+(1875*5)) slowPartFlash3(135000+(1875*6)) slowPartFlash3(135000+(1875*7)) slowPartFlash3(135000+(1875*8)) slowPartFlash3(135000+(1875*9)) slowPartFlash3(135000+(1875*10)) slowPartFlash3(135000+(1875*11)) slowPartFlash3(135000+(1875*12)) slowPartFlash3(135000+(1875*13)) slowPartFlash3(135000+(1875*14)) local shakeSide = 1 Scene.gameplayCamera.translationX = Channel.keyframe().addKey(0,0,"cnsti") Scene.gameplayCamera.translationY = Channel.keyframe().addKey(0,0,"cnsti") function cameraShake(timing,length,strength) local initStrength = strength Scene.gameplayCamera.translationX.addKey(timing,0,"cnsti") Scene.gameplayCamera.translationY.addKey(timing,0,"cnsti") for i = timing, timing+length , 30 do Scene.gameplayCamera.translationX.addKey(i-15,(strength*shakeSide)) shakeSide = 0 - shakeSide strength = initStrength * (length - (i -timing))/length end strength = initStrength for i = timing, timing+length , 20 do Scene.gameplayCamera.translationY.addKey(i-10,(strength*shakeSide)) shakeSide = 0 - shakeSide strength = initStrength * (length - (i -timing))/length end Scene.gameplayCamera.translationX.addKey(timing+length+5,0,"cnsti") Scene.gameplayCamera.translationY.addKey(timing+length+5,0,"cnsti") end cameraShake(103125,468,1) cameraShake(103594,468,1) cameraShake(104062,100,0.2) cameraShake(104219,100,0.2) cameraShake(104375,100,0.2) cameraShake(104531,468,3) cameraShake(165000,468*3,0.2) cameraShake(194062,468,1) cameraShake(194531,468,1) function constantCameraShake(timing,ending,strength) Scene.gameplayCamera.translationX.addKey(timing,0,"cnsti") Scene.gameplayCamera.translationY.addKey(timing,0,"cnsti") for i = timing, ending , 30 do Scene.gameplayCamera.translationX.addKey(i-15,(strength*shakeSide)) shakeSide = 0 - shakeSide end for i = timing, ending , 20 do Scene.gameplayCamera.translationY.addKey(i-10,(strength*shakeSide)) shakeSide = 0 - shakeSide end Scene.gameplayCamera.translationX.addKey(ending+5,0,"cnsti") Scene.gameplayCamera.translationY.addKey(ending+5,0,"cnsti") end constantCameraShake(176250,180000,0.04) constantCameraShake(191250,194061,0.04) constantCameraShake(225000,225469,0.2) constantCameraShake(225938,226406,0.2) constantCameraShake(236250,239531,0.2) cameraShake(226875,468*3,0.3) constantCameraShake(240000,240469,0.2) constantCameraShake(240938,241406,0.2) constantCameraShake(241875,242344,0.2) cameraShake(242812,468*3,0.3) constantCameraShake(251250,254531,0.2) -- wacko synths come in midsection ---------------------------------------------------------------------------------------- playfield2.trackController.active.addKey(165000,1,"cnsti") local daysky = Scene.createImage("brightSky.png") daysky.setParent(BG2) daysky.scaleX = 0.1 * Context.screenAspectRatio; daysky.scaleY = 0.15 * 1/Context.screenAspectRatio daysky.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(165000,1,"cnsti").addKey(195000,0) local clouds = Scene.createImage("brightSkyClouds.png") clouds.setParent(BG2) clouds.scaleX = 0.3; clouds.scaleY = 0.1 clouds.rotationY= -45 clouds.rotationX = 0 clouds.translationX = Channel.keyframe().addKey(165000,-4,"s").addKey(195000,-9) clouds.translationY = 1.5 clouds.translationZ = Channel.keyframe().addKey(165000,5,"s").addKey(195000,-5) clouds.active = daysky.active local clouds2 = Scene.createImage("brightSkyClouds.png") clouds2.setParent(BG2) clouds2.scaleX = 0.3; clouds2.scaleY = 0.1 clouds2.rotationY= 45 clouds2.rotationX = 0 clouds2.translationX = Channel.keyframe().addKey(165000,4,"s").addKey(195000,9) clouds2.translationY = 1.5 clouds2.translationZ = Channel.keyframe().addKey(165000,5,"s").addKey(195000,-5) clouds2.active = daysky.active local wackyskyglow = Scene.createImage("sun2.png", "fastadd") wackyskyglow.setParent(BG2) wackyskyglow.scaleX = 0.15; wackyskyglow.scaleY = 0.15 wackyskyglow.active = daysky.active wackyskyglow.colorA = Channel.sine(938*2,120,0,0) wackyskyglow.translationY = 5 local daytriangle = Scene.createSprite("triangle.png", "default", "background") daytriangle.scaleX = 160 daytriangle.scaleY = 160 daytriangle.layer = StringChannel.constant("Background") daytriangle.sort = 1000 daytriangle.setParent(Scene.background) daytriangle.active = daysky.active doLyrics(195000,3) doLyrics(270000,2) -- planet ---------------------------------------------------------------------------------------- local yoffset = 40 local laneBOTTOM = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneBOTTOM.trackExtraController.active = CreateKey(0) laneBOTTOM.skyInputController.active = CreateKey(0) laneBOTTOM.trackController.translationY = 8+yoffset laneBOTTOM.trackController.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(194532,1,"cnsti").addKey(223125,0,"cnsti").addKey(254530,1,"cnsti") local laneBL1 = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) --hehe boys love..., laneBL1.trackExtraController.active = CreateKey(0) laneBL1.skyInputController.active = CreateKey(0) laneBL1.trackController.rotationZ = 60 laneBL1.trackController.translationX = 8.5 laneBL1.trackController.translationY = 13+yoffset laneBL1.trackController.active = laneBOTTOM.trackController.active local laneBL2 = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneBL2.trackExtraController.active = CreateKey(0) laneBL2.skyInputController.active = CreateKey(0) laneBL2.trackController.rotationZ = 30 laneBL2.trackController.translationX = 5 laneBL2.trackController.translationY = 9.3+yoffset laneBL2.trackController.active = laneBOTTOM.trackController.active local laneLEFTMOST = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneLEFTMOST.trackExtraController.active = CreateKey(0) laneLEFTMOST.skyInputController.active = CreateKey(0) laneLEFTMOST.trackController.rotationZ = 90 laneLEFTMOST.trackController.translationX = 9.7 laneLEFTMOST.trackController.translationY = 17.8+yoffset laneLEFTMOST.trackController.active = laneBOTTOM.trackController.active local laneBR1 = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneBR1.trackExtraController.active = CreateKey(0) laneBR1.skyInputController.active = CreateKey(0) laneBR1.trackController.rotationZ = -60 laneBR1.trackController.translationX = -8.5 laneBR1.trackController.translationY = 13+yoffset laneBR1.trackController.active = laneBOTTOM.trackController.active local laneBR2 = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneBR2.trackExtraController.active = CreateKey(0) laneBR2.skyInputController.active = CreateKey(0) laneBR2.trackController.rotationZ = -30 laneBR2.trackController.translationX = -5 laneBR2.trackController.translationY = 9.3+yoffset laneBR2.trackController.active = laneBOTTOM.trackController.active local laneRIGHTMOST = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneRIGHTMOST.trackExtraController.active = CreateKey(0) laneRIGHTMOST.skyInputController.active = CreateKey(0) laneRIGHTMOST.trackController.rotationZ = -90 laneRIGHTMOST.trackController.translationX = -9.7 laneRIGHTMOST.trackController.translationY = 17.8+yoffset laneRIGHTMOST.trackController.active = laneBOTTOM.trackController.active local laneTL1 = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneTL1.trackExtraController.active = CreateKey(0) laneTL1.skyInputController.active = CreateKey(0) laneTL1.trackController.rotationZ = -60 laneTL1.trackController.translationX = 8.5 laneTL1.trackController.translationY = 22.6+yoffset laneTL1.trackController.active = laneBOTTOM.trackController.active local laneTL2 = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneTL2.trackExtraController.active = CreateKey(0) laneTL2.skyInputController.active = CreateKey(0) laneTL2.trackController.rotationZ = -30 laneTL2.trackController.translationX = 5 laneTL2.trackController.translationY = 26.2+yoffset laneTL2.trackController.active = laneBOTTOM.trackController.active local laneTR1 = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneTR1.trackExtraController.active = CreateKey(0) laneTR1.skyInputController.active = CreateKey(0) laneTR1.trackController.rotationZ = 60 laneTR1.trackController.translationX = -8.5 laneTR1.trackController.translationY = 22.6+yoffset laneTR1.trackController.active = laneBOTTOM.trackController.active local laneTR2 = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneTR2.trackExtraController.active = CreateKey(0) laneTR2.skyInputController.active = CreateKey(0) laneTR2.trackController.rotationZ = 30 laneTR2.trackController.translationX = -5 laneTR2.trackController.translationY = 26.2+yoffset laneTR2.trackController.active = laneBOTTOM.trackController.active local laneTOP = Playfield:new(SkinList.pentiment, 6):setLaneCount(1, constants.timingDefault) laneTOP.trackExtraController.active = CreateKey(0) laneTOP.skyInputController.active = CreateKey(0) laneTOP.trackController.translationY = 27.5+yoffset laneTOP.trackController.active = laneBOTTOM.trackController.active local orbit0 = Scene.createSprite("orbit0.png") orbit0.scaleX = 131; orbit0.scaleY = 131 orbit0.rotationZ = Channel.keyframe().addKey(194532,90).addKey(208125,800,"4i").addKey(223125,-5000,"cnsti").addKey(254531,800).addKey(285000,90) orbit0.active = 0.9/Context.screenAspectRatio orbit0.colorA = Channel.keyframe().addKey(0,0,"cnsti").addKey(194532,255,"cnsti").addKey(223125,0,"cnsti").addKey(254531,255,"cnsti").addKey(285000,0,"cnsti") local orbit0forphone = Scene.createSprite("orbit0.png") orbit0forphone.scaleX = 103; orbit0forphone.scaleY = 103 orbit0forphone.rotationZ = Channel.keyframe().addKey(194532,90).addKey(208125,800,"4i").addKey(223125,-5000).addKey(254531,800).addKey(285000,90) orbit0forphone.active = Context.screenAspectRatio/3.6 --Channel.keyframe().addKey(0,0,"cnsti").addKey(194532,1,"cnsti").addKey(223125,0,"cnsti") orbit0forphone.colorA = orbit0.colorA local orbit1 = Scene.createSprite("orbit1.png") orbit1.scaleX = 180; orbit1.scaleY = 180 orbit1.rotationZ = Channel.keyframe().addKey(194532,0).addKey(208125,700,"4i").addKey(223125,-4000,"cnsti").addKey(254531,700).addKey(285000,0) orbit1.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(194532,1,"cnsti").addKey(223125,0,"cnsti").addKey(254531,1,"cnsti").addKey(285000,0,"cnsti") local orbit2 = Scene.createSprite("orbit2.png") orbit2.scaleX = 60; orbit2.scaleY = 60 orbit2.rotationZ = Channel.keyframe().addKey(194532,0).addKey(208125,500,"4i").addKey(223125,-3000,"cnsti").addKey(254531,500).addKey(285000,0) orbit2.active = orbit1.active local orbit3 = Scene.createSprite("orbit3.png") orbit3.scaleX = 80; orbit3.scaleY = 80 orbit3.rotationZ = Channel.keyframe().addKey(194532,0).addKey(208125,-360,"4i").addKey(223125,-2000,"cnsti").addKey(254531,-360).addKey(285000,0) orbit3.active = orbit1.active local sun2 = Scene.createSprite("sun2.png","fastadd") sun2.layer = "Topmost" sun2.scaleX = Channel.keyframe().addKey(214688,150,"5i").addKey(223125,500,"cnsti").addKey(254531,150,"5i"); sun2.scaleY = sun2.scaleX sun2.rotationZ = Channel.keyframe().addKey(194532,90).addKey(223125,1000,"cnsti").addKey(254531,90,"cnsti") sun2.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(194532,1,"cnsti").addKey(223125,0,"cnsti") local sun2glow = Scene.createSprite("windowglow2.png","fastadd") sun2glow.layer = "Topmost" sun2glow.scaleX = Channel.keyframe().addKey(214688,150,"2i").addKey(223125,500); sun2glow.scaleY = sun2glow.scaleX sun2glow.colorA = Channel.keyframe().addKey(0,0,"cnsti").addKey(214688,0,"2i").addKey(223125,255,"cnsti").addKey(254531,0,"2i") sun2glow.rotationZ = Channel.keyframe().addKey(194532,90).addKey(223125,1000) sun2glow.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(194532,1,"cnsti").addKey(223125,0,"cnsti") local laneLEFTnotes = Scene.getNoteGroup(9) laneLEFTnotes.translationX = 9.7 laneLEFTnotes.rotationZ = laneLEFTMOST.trackController.rotationZ laneLEFTnotes.translationY = laneLEFTMOST.trackController.translationY-2.1 local laneBL1notes = Scene.getNoteGroup(11) laneBL1notes.translationX = 7.4 laneBL1notes.rotationZ = laneBL1.trackController.rotationZ laneBL1notes.translationY = laneBL1.trackController.translationY-1.9 local laneBL2notes = Scene.getNoteGroup(12) laneBL2notes.translationX = 3.2 laneBL2notes.rotationZ = laneBL2.trackController.rotationZ laneBL2notes.translationY = laneBL2.trackController.translationY-1.1 local laneBOTTOMnotes = Scene.getNoteGroup(7) laneBOTTOMnotes.translationX = -2.1 laneBOTTOMnotes.translationY = laneBOTTOM.trackController.translationY local laneFAKEBOTTOMnotes = Scene.getNoteGroup(23) laneFAKEBOTTOMnotes.translationX = laneBL2notes.translationX laneFAKEBOTTOMnotes.translationY = laneBL2notes.translationY laneFAKEBOTTOMnotes.rotationZ = laneBL2notes.rotationZ local laneBR2notes = Scene.getNoteGroup(14) laneBR2notes.translationX = -6.83 laneBR2notes.rotationZ = laneBR2.trackController.rotationZ laneBR2notes.translationY = laneBR2.trackController.translationY+1.1 local laneBR1notes = Scene.getNoteGroup(13) laneBR1notes.translationX = -9.6 laneBR1notes.rotationZ = laneBR1.trackController.rotationZ laneBR1notes.translationY = laneBR1.trackController.translationY+1.9 local laneRIGHTnotes = Scene.getNoteGroup(10) laneRIGHTnotes.translationX = -9.7 laneRIGHTnotes.rotationZ = laneRIGHTMOST.trackController.rotationZ laneRIGHTnotes.translationY = laneRIGHTMOST.trackController.translationY+2.1 local laneTL1notes = Scene.getNoteGroup(15) laneTL1notes.translationX = 7.4 laneTL1notes.rotationZ = laneTL1.trackController.rotationZ laneTL1notes.translationY = laneTL1.trackController.translationY+1.9 local laneTL2notes = Scene.getNoteGroup(16) laneTL2notes.translationX = 3.2 laneTL2notes.rotationZ = laneTL2.trackController.rotationZ laneTL2notes.translationY = laneTL2.trackController.translationY+1.1 local laneTOPnotes = Scene.getNoteGroup(8) laneTOPnotes.translationX = -2.1 laneTOPnotes.rotationZ = laneTOP.trackController.rotationZ laneTOPnotes.translationY = laneTOP.trackController.translationY local laneTR2notes = Scene.getNoteGroup(18) laneTR2notes.translationX = -6.83 laneTR2notes.rotationZ = laneTR2.trackController.rotationZ laneTR2notes.translationY = laneTR2.trackController.translationY-1.1 local laneTR1notes = Scene.getNoteGroup(17) laneTR1notes.translationX = -9.6 laneTR1notes.rotationZ = laneTR1.trackController.rotationZ laneTR1notes.translationY = laneTR1.trackController.translationY-1.9 local white = Scene.createSprite("white.png","fastadd") white.setParent(FG) white.layer = StringChannel.constant("Topmost") white.sort = 10000 white.scaleX = 2000; white.scaleY = 2000 white.colorA = Channel.keyframe() white.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(75001,1,"cnsti").addKey(223125,0,"cnsti") function whiteflash(timing,int1,int2) sun2glow.colorA.addKey(timing,int1,"so") sun2glow.colorA.addKey(timing+460,int2,"cnsti") end function whiteflash2(timing,int1) white.colorA.addKey(timing,0,"so") white.colorA.addKey(timing+100,int1,"s") white.colorA.addKey(timing+936*2,0,"cnsti") end for i = 75001, 97500, 937*2 do whiteflash2(i,15) end for i = 195469, 208125, 937 do whiteflash(i,140,0) end for i = 210469, 216094, 937 do whiteflash(i,140,0) end whiteflash(208125,140,0) whiteflash(208906,140,0) whiteflash(209531,140,0) whiteflash(217500,140,0) whiteflash(217969,150,0) whiteflash(218438,160,10) whiteflash(218906,170,20) whiteflash(219375,180,35) whiteflash(219844,190,40) whiteflash(220312,200,50) whiteflash(220781,210,60) whiteflash(221250,220,70) whiteflash(221719,230,80) whiteflash(222188,240,90) whiteflash(222656,255,0) white.colorA.addKey(217500,0,"5i").addKey(223125,255,"so") local reference1 = Scene.createSprite("villainvirus.jpg") reference1.scaleX = 160; reference1.scaleY = 160 reference1.setParent(Scene.background) reference1.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(240469,1,"cnsti").addKey(240938,0,"cnsti") reference1.colorR = 100; reference1.colorG = 100; reference1.colorB = 100; local reference2 = Scene.createSprite("3rdavenue.jpg") reference2.scaleX = 160; reference2.scaleY = 160 reference2.setParent(Scene.background) reference2.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(241406,1,"cnsti").addKey(241875,0,"cnsti") reference2.colorR = 100; reference2.colorG = 100; reference2.colorB = 100; local reference3 = Scene.createSprite("c0pyf0x.jpg") reference3.scaleX = 160; reference3.scaleY = 160 reference3.setParent(Scene.background) reference3.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(242344,1,"cnsti").addKey(242812,0,"cnsti") reference3.colorR = 100; reference3.colorG = 100; reference3.colorB = 100; local black2 = Scene.createImage("black.png") black2.colorA = Channel.keyframe().addKey(223125,255).addKey(224531,100) black2.scaleX = 100; black2.scaleY = 100 black2.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(223125,1,"cnsti").addKey(225000,0,"cnsti").addKey(225469,1,"cnsti").addKey(225938,0,"cnsti").addKey(226406,1,"cnsti").addKey(226875,0,"cnsti").addKey(239532,1,"cnsti").addKey(240000,0,"cnsti").addKey(240469,1,"cnsti").addKey(240938,0,"cnsti").addKey(241406,1,"cnsti").addKey(241875,0,"cnsti").addKey(242344,1,"cnsti").addKey(242812,0,"cnsti") --[[ local lastspace = Scene.createImage("space.png") lastspace.setParent(BG3) lastspace.scaleX = 0.5; lastspace.scaleY = 0.23 lastspace.translationY = 24 lastspace.translationZ = 0 ]] local lastsky = Scene.createImage("lastsunrise.png") lastsky.setParent(BG3) lastsky.scaleX = 0.2; lastsky.scaleY = 0.14*3 lastsky.translationY = Channel.sine(938,16.4,16.3,225000) lastsky.translationZ = 0 --[[ local lastmountains = Scene.createImage("mountains.png") lastmountains.setParent(BG3) lastmountains.scaleX = 1.2; lastmountains.scaleY = 1.2 lastmountains.translationY = -5 lastmountains.translationZ = -50 ]] local lastsun = Scene.createImage("sun2.png", "fastadd") lastsun.setParent(BG3) lastsun.scaleX = 0.2; lastsun.scaleY = lastsun.scaleX lastsun.translationY = 6.5 lastsun.colorA = Channel.sine(938,200,180,225000) lastsun.translationZ = 0 local bgmeteors = Scene.createImage("meteors.png", "fastadd") bgmeteors.setParent(BG3) bgmeteors.scaleX = -0.2; bgmeteors.scaleY = 0.1*8 bgmeteors.colorA = Channel.sine(938,30,20,225000) bgmeteors.translationY = Channel.keyframe().addKey(225000,12).addKey(255000,4) bgmeteors.translationX = Channel.keyframe().addKey(225000,-3).addKey(255000,3) local meteor = Scene.createImage("meteor.png", "fastadd") meteor.setParent(BG3) meteor.scaleX = 0.003; meteor.scaleY = 0.015 meteor.rotationZ = 35 meteor.colorA = Channel.sine(938/2,255,200,225000) meteor.translationY = Channel.keyframe().addKey(225000,12).addKey(255000,5) meteor.translationX = Channel.keyframe().addKey(225000,-7).addKey(255000,1) meteor.colorR = 0; meteor.colorG = 0; meteor.colorB = 0; meteor.colorV = 1; meteor.colorS = 0.5 meteor.colorH = Channel.saw("s",938,0,360,225000) local meteor2 = Scene.createImage("meteor.png", "fastadd") meteor2.setParent(BG3) meteor2.scaleX = 0.003; meteor2.scaleY = 0.015 meteor2.rotationZ = 35 meteor2.colorA = Channel.sine(938/3,220,180,225000) meteor2.translationY = Channel.keyframe().addKey(225000,14).addKey(255000,6) meteor2.translationX = Channel.keyframe().addKey(225000,-1).addKey(255000,6) meteor2.colorR = 0; meteor2.colorG = 0; meteor2.colorB = 0; meteor2.colorV = 1; meteor2.colorS = 0.5 meteor2.colorH = Channel.saw("s",938+100,0,360,225000) local meteor3 = Scene.createImage("meteor.png", "fastadd") meteor3.setParent(BG3) meteor3.scaleX = 0.003; meteor3.scaleY = 0.015 meteor3.rotationZ = 35 meteor3.colorA = meteor.colorA meteor3.translationY = Channel.keyframe().addKey(225000,16).addKey(255000,7) meteor3.translationX = Channel.keyframe().addKey(225000,-12).addKey(255000,-4) meteor3.colorR = 0; meteor3.colorG = 0; meteor3.colorB = 0; meteor3.colorV = 1; meteor3.colorS = 0.5 meteor3.colorH = Channel.saw("s",938+200,0,360,225000) local meteor4 = Scene.createImage("meteor.png", "fastadd") meteor4.setParent(BG3) meteor4.scaleX = 0.003; meteor4.scaleY = 0.015 meteor4.rotationZ = 35 meteor4.colorA = meteor.colorA meteor4.translationY = Channel.keyframe().addKey(225000,11).addKey(255000,7) meteor4.translationX = Channel.keyframe().addKey(225000,4).addKey(255000,8) meteor4.colorR = 0; meteor4.colorG = 0; meteor4.colorB = 0; meteor4.colorV = 1; meteor4.colorS = 0.5 meteor4.colorH = Channel.saw("s",938+200,0,360,225000) local lastclouds = Scene.createImage("lastclouds.png") lastclouds.setParent(BG3) lastclouds.scaleX = 0.2 * Context.screenAspectRatio; lastclouds.scaleY = 0.2 lastclouds.rotationX = -18 lastclouds.translationY = Channel.sine(938*2,6.2,6.1,225000) lastclouds.translationX = Channel.keyframe().addKey(225000,-4.5).addKey(255000,4.5) local lastclouds2 = Scene.createImage("lastclouds2.png") lastclouds2.setParent(BG3) lastclouds2.scaleX = 0.2 * Context.screenAspectRatio; lastclouds2.scaleY = 0.2 lastclouds2.rotationX = -18 lastclouds2.translationY = Channel.sine(938*1.8,6.1,6,225000) lastclouds2.translationX = lastclouds.translationX local rainbowgradient = Scene.createImage("rainbowgradient.png","fastadd") rainbowgradient.setParent(BG3) rainbowgradient.scaleX = 0.3 * Context.screenAspectRatio; rainbowgradient.scaleY = 0.15 rainbowgradient.rotationX = -18 rainbowgradient.colorA = Channel.sine(938*2,100,80,225000) rainbowgradient.translationX = Channel.keyframe().addKey(225000,-12.5).addKey(255000,12.5) rainbowgradient.translationY = 7 rainbowgradient.colorR = 0; rainbowgradient.colorG = 0; rainbowgradient.colorB = 0; rainbowgradient.colorV = 1; rainbowgradient.colorS = 0.8 rainbowgradient.colorH = Channel.saw("s",938*2,0,360,225000) local lastclouds3 = Scene.createImage("lastclouds3.png") lastclouds3.setParent(BG3) lastclouds3.scaleX = 0.2 * Context.screenAspectRatio; lastclouds3.scaleY = 0.2 lastclouds3.rotationX = -18 lastclouds3.translationY = Channel.sine(938*1.6,6.1,6,225000) lastclouds3.translationX = lastclouds.translationX local lastskyGlow1 = Scene.createImage("skyGlow1.png", "overlay") lastskyGlow1.setParent(BG3) lastskyGlow1.scaleX = 14; lastskyGlow1.scaleY = 1.5 lastskyGlow1.translationY = -1.5 lastskyGlow1.translationZ = -100 local darkestNotes = Scene.getNoteGroup(20) darkestNotes.colorR = 150 darkestNotes.colorG = 150 darkestNotes.colorB = 150 local darkestNotes2 = Scene.getNoteGroup(21) darkestNotes2.colorR = 150 darkestNotes2.colorG = 150 darkestNotes2.colorB = 150 BG3.translationY = Channel.keyframe().addKey(236250,-800,"b").addKey(237656,-4000,"si").addKey(238281,-3000,"3o").addKey(239530,-2200,"cnsti").addKey(239531,-800).addKey(251250,-800,"b").addKey(252656,-4000,"si").addKey(254531,-9000,"si") BG3.scaleX = Channel.keyframe().addKey(238281,140,"s").addKey(239530,300,"cnsti").addKey(239531,140).addKey(252656,140,"si").addKey(254531,300) BG3.scaleY = BG3.scaleX BG3.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(225000,255,"cnsti").addKey(225469,0,"cnsti").addKey(225938,255,"cnsti").addKey(226406,0,"cnsti").addKey(226875,255,"cnsti").addKey(239532,0,"cnsti").addKey(240000,1,"cnsti").addKey(240469,0,"cnsti").addKey(240938,1,"cnsti").addKey(241406,0,"cnsti").addKey(241875,1,"cnsti").addKey(242344,0,"cnsti").addKey(242812,1,"cnsti").addKey(254531,0,"cnsti") local rainbowgradient2 = Scene.createImage("rainbowgradient2.png","fastadd") rainbowgradient2.setParent(BG3) rainbowgradient2.scaleX = 1; rainbowgradient2.scaleY = 1 rainbowgradient2.colorA = Channel.keyframe()--.addKey(0,0,"cnsti").addKey(225000,255,"cnsti").addKey(226406,0,"cnsti").addKey(236250,0,"so").addKey(237656,100,"cnsti").addKey(239531,0,"cnsti").addKey(251250,0,"so").addKey(252656,100,"cnsti").addKey(254531,0,"cnsti") rainbowgradient2.translationX = Channel.keyframe()--.addKey(225000,40).addKey(225469,-40).addKey(225938,-40).addKey(226406,40).addKey(236250,40).addKey(239531,-40).addKey(251250,-40).addKey(254531,40) function rainbowflash(timing,direction) rainbowgradient2.colorA.addKey(timing,255,"cnsti").addKey(timing+469,0,"cnsti") rainbowgradient2.translationX.addKey(timing,40*direction).addKey(timing+469,-40*direction) end rainbowflash(225000,1) rainbowflash(225938,-1) rainbowflash(240000,1) rainbowflash(240938,-1) rainbowflash(241875,1) local invert = Scene.createSprite("white.png","exclusion") invert.layer = "Topmost" invert.scaleX = 20000; invert.scaleY = 20000 invert.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(104531,1,"cnsti").addKey(105000,0,"cnsti").addKey(194062,1,"cnsti").addKey(195000,0,"cnsti").addKey(253125,1,"cnsti").addKey(285000,0,"cnsti") local sun2noadd = Scene.createSprite("sun2.png","default") sun2noadd.layer = "Topmost" sun2noadd.scaleX = 150; sun2noadd.scaleY = sun2noadd.scaleX sun2noadd.rotationZ = Channel.keyframe().addKey(254531,-90).addKey(285000,-1000,"cnsti") sun2noadd.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(194531,1,"cnsti").addKey(195000,0,"cnsti").addKey(254531,1,"cnsti").addKey(285000,0,"cnsti") local sun2glownoadd = Scene.createSprite("windowglow2.png","default") sun2glownoadd.layer = "Topmost" sun2glownoadd.scaleX = 150; sun2glownoadd.scaleY = sun2glownoadd.scaleX sun2glownoadd.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(194531,1,"cnsti").addKey(195000,0,"cnsti").addKey(254531,1,"cnsti").addKey(285000,0,"cnsti") slowPartFlash(285000) slowPartFlash(288750) slowPartFlash(292500) slowPartFlash(296250) local lightNotes = Scene.getNoteGroup(25) lightNotes.colorR = 255 lightNotes.colorG = 150 lightNotes.colorB = 0 lightNotes.colorA = 80 local lyric1g = Scene.createSprite("lyrics/1g.png") lyric1g.layer = StringChannel.constant("Topmost") lyric1g.sort = 1000 lyric1g.scaleX = Channel.keyframe(); lyric1g.scaleY = 200 lyric1g.textureScaleX = Channel.keyframe() lyric1g.active = Channel.keyframe().addKey(0,0,"cnsti") lyric1g.translationY = lyric1.translationY local lyric2g = Scene.createSprite("lyrics/2g.png") lyric2g.layer = StringChannel.constant("Topmost") lyric2g.sort = 1000 lyric2g.scaleX = Channel.keyframe(); lyric2g.scaleY = 200 lyric2g.textureScaleX = Channel.keyframe() lyric2g.active = Channel.keyframe().addKey(0,0,"cnsti") lyric2g.translationY = lyric1.translationY local lyric3g = Scene.createSprite("lyrics/3g.png") lyric3g.layer = StringChannel.constant("Topmost") lyric3g.sort = 1000 lyric3g.scaleX = Channel.keyframe(); lyric3g.scaleY = 200 lyric3g.textureScaleX = Channel.keyframe() lyric3g.active = Channel.keyframe().addKey(0,0,"cnsti") lyric3g.translationY = lyric1.translationY local lyric4g = Scene.createSprite("lyrics/4g.png") lyric4g.layer = StringChannel.constant("Topmost") lyric4g.sort = 1000 lyric4g.scaleX = Channel.keyframe(); lyric4g.scaleY = 200 lyric4g.textureScaleX = Channel.keyframe() lyric4g.active = Channel.keyframe().addKey(0,0,"cnsti") lyric4g.translationY = lyric1.translationY local lyric5g = Scene.createSprite("lyrics/5g.png") lyric5g.layer = StringChannel.constant("Topmost") lyric5g.sort = 1000 lyric5g.scaleX = Channel.keyframe(); lyric5g.scaleY = 200 lyric5g.textureScaleX = Channel.keyframe() lyric5g.active = Channel.keyframe().addKey(0,0,"cnsti") lyric5g.translationY = lyric1.translationY local lyric6g = Scene.createSprite("lyrics/6g.png") lyric6g.layer = StringChannel.constant("Topmost") lyric6g.sort = 1000 lyric6g.scaleX = Channel.keyframe(); lyric6g.scaleY = 200 lyric6g.textureScaleX = Channel.keyframe() lyric6g.active = Channel.keyframe().addKey(0,0,"cnsti") lyric6g.translationY = lyric1.translationY local lyric7g = Scene.createSprite("lyrics/7g.png") lyric7g.layer = StringChannel.constant("Topmost") lyric7g.sort = 1000 lyric7g.scaleX = Channel.keyframe(); lyric7g.scaleY = 200 lyric7g.textureScaleX = Channel.keyframe() lyric7g.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(327140,0,"cnsti") lyric7g.translationY = lyric1.translationY local textWait = 80 function doGlitchLyrics(timing) lyric1g.active.addKey(timing,1,"cnsti").addKey(timing+2812,0,"cnsti") for i = 0, 7, 1 do -- Thank lyric1g.scaleX.addKey(300178+(textWait*i), 200*((1/11)*i), "cnsti") lyric1g.textureScaleX.addKey(300178+(textWait*i), (1/11)*i, "cnsti") end for i = 9, 11, 1 do -- you, lyric1g.scaleX.addKey(301159+(textWait*(i-9)), 200*((1/11)*i), "cnsti") lyric1g.textureScaleX.addKey(301159+(textWait*(i-9)), (1/11)*i, "cnsti") end lyric2g.active.addKey(303114,1,"cnsti").addKey(timing+6562,0,"cnsti") for i = 7, 18, 1 do -- I'll say goodbye lyric2g.scaleX.addKey(303114+(textWait*(i-7)), 200*((1/23)*i), "cnsti") lyric2g.textureScaleX.addKey(303114+(textWait*(i-7)), (1/23)*i, "cnsti") end for i = 19, 23, 1 do -- soon. lyric2g.scaleX.addKey(304666+(textWait*(i-19)), 200*((1/23)*i), "cnsti") lyric2g.textureScaleX.addKey(304666+(textWait*(i-19)), (1/23)*i, "cnsti") end lyric3g.active.addKey(timing+6562,1,"cnsti").addKey(timing+10312,0,"cnsti") for i = 0, 34, 1 do -- Though it's the end of the world, lyric3g.scaleX.addKey(timing+6562+(70*i), 200*((1/34)*i), "cnsti") lyric3g.textureScaleX.addKey(timing+6562+(70*i), (1/34)*i, "cnsti") end lyric4g.active.addKey(timing+10312,1,"cnsti").addKey(timing+14375,0,"cnsti") for i = 0, 22, 1 do -- Don't blame yourself lyric4g.scaleX.addKey(timing+10312+(textWait*i), 200*((1/26)*i), "cnsti") lyric4g.textureScaleX.addKey(timing+10312+(textWait*i), (1/26)*i, "cnsti") end for i = 23, 26, 1 do -- now. lyric4g.scaleX.addKey(timing+13125+(textWait*(i-23)), 200*((1/26)*i), "cnsti") lyric4g.textureScaleX.addKey(timing+13125+(textWait*(i-23)), (1/26)*i, "cnsti") end lyric5g.active.addKey(timing+14375,1,"cnsti").addKey(timing+17812,0,"cnsti") for i = 0, 13, 1 do -- And if it's lyric5g.scaleX.addKey(timing+14375+(textWait*i), 200*((1/18)*i), "cnsti") lyric5g.textureScaleX.addKey(timing+14375+(textWait*i), (1/18)*i, "cnsti") end for i = 14, 18, 1 do -- true, lyric5g.scaleX.addKey(timing+15938+(textWait*(i-14)), 200*((1/18)*i), "cnsti") lyric5g.textureScaleX.addKey(timing+15938+(textWait*(i-14)), (1/18)*i, "cnsti") end lyric6g.active.addKey(timing+17812,1,"cnsti").addKey(320625,0,"cnsti") for i = 0, 17, 1 do -- I will surround lyric6g.scaleX.addKey(timing+17812+(textWait*i), 200*((1/21)*i), "cnsti") lyric6g.textureScaleX.addKey(timing+17812+(textWait*i), (1/21)*i, "cnsti") end for i = 18, 21, 1 do -- you, lyric6g.scaleX.addKey(timing+19688+(textWait*(i-18)), 200*((1/21)*i), "cnsti") lyric6g.textureScaleX.addKey(timing+19688+(textWait*(i-18)), (1/21)*i, "cnsti") end lyric7g.active.addKey(320625,1,"cnsti").addKey(327140,0,"cnsti") for i = 320579, 326289-textWait, textWait do -- And give life to a world, lyric7g.scaleX.addKey(i, 200*((2/41)), "cnsti") lyric7g.textureScaleX.addKey(i, (2/41), "cnsti") lyric7g.scaleX.addKey(i+(textWait/2), 200*((3/41)), "cnsti") lyric7g.textureScaleX.addKey(i+(textWait/2), (3/41), "cnsti") end for i = 38, 41, 1 do -- that's our own. lyric7g.scaleX.addKey(326289+(textWait*(i-38)), 200*((1/41)*i), "cnsti") lyric7g.textureScaleX.addKey(326289+(textWait*(i-38)), (1/41)*i, "cnsti") end end doGlitchLyrics(300000) local her = Scene.createSprite("lyrics/her.png") her.layer = StringChannel.constant("Topmost") her.sort = 1000 her.scaleX = 200; her.scaleY = 200 her.active = Channel.keyframe().addKey(0,0,"cnsti").addKey(327140,1,"cnsti").addKey(327240,0,"cnsti")