[Script Info] ; Script generated by Aegisub 3.2.1 ; http://www.aegisub.org/ Title: Default Aegisub file ScriptType: v4.00+ WrapStyle: 0 PlayResX: 1280 PlayResY: 720 ScaledBorderAndShadow: yes Video Aspect Ratio: 0 Video Zoom: 8 YCbCr Matrix: None [Aegisub Project Garbage] Export Encoding: UTF-8 Last Style Storage: Default Video File: ?dummy:23.976000:40000:1280:720:0:0:0:c Video AR Value: 1.777778 Video Zoom Percent: 0.500000 Scroll Position: 25 Active Line: 60 [V4+ Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding Style: kanji-furigana,MS Pゴシック,10,&H00FFFFFF,&H000000FF,&H000304FC,&H00000000,-1,0,0,0,100,100,0,0,1,1.5,0.5,9,50,100,80,1 Style: japanese-furigana,@MS Pゴシック,20,&H00FFFFFF,&H000000FF,&H000304FC,&H00000000,-1,0,0,0,100,100,0,-90,1,1.5,0.5,9,50,100,80,1 Style: Default-furigana,Arial,15,&H000304FC,&H00FFFFFF,&H00F4D7FC,&H009F9F9F,-1,-1,0,0,100,100,0,0,1,1,1,9,15,113,50,1 Style: Default,Arial,30,&H00FFFFFF,&H00FFFFFF,&H00000000,&H009F9F9F,0,0,0,0,100,100,0,0,1,2,2,5,15,113,50,1 Style: kanji,MS Pゴシック,40,&H00FFFFFF,&H000000FF,&H000304FC,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,5,50,50,60,1 [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Comment: 0,0:00:00.00,0:00:00.00,Default,dialog,0,0,0,code once,config = {} tornado_conf = {[1] = { class = "label" ; x = 0; y = 0; height = 1; width = 3; label = "Tornado Color" }, [2] = { name = "t_color"; class = "color"; x = 0; y = 1; height = 2; width = 2; value = "#000000" } , [3] = { name = "rainbow" ; class = "checkbox" ; x = 4 ; y = 1 ; height = 1 ; width = 1 ; label = "rainbow" ; value = false } ,[4] = { class = "label" ; x = 0 ; y = 4 ; height = 1 ; width = 1 ; label = "Tornado Shadow Color" } , [5] = { name = "ts_color" ; class = "color" ; x = 0 ; y = 5 ; height = 2 ; width = 2 ; value = "#FFFFFF" } } Comment: 0,0:00:00.00,0:00:00.00,Default,dialog,0,0,0,code once,cfg_res,config=_G.aegisub.dialog.display(tornado_conf) Comment: 0,0:00:00.00,0:00:00.00,Default,dialog,0,0,0,code once,function asscolor(htmlcolor) local r, g, b = string.match(htmlcolor, "(%x%x)(%x%x)(%x%x)") return _G.ass_color(_G.tonumber(r,16), _G.tonumber(g,16), _G.tonumber(b,16)) end Comment: 0,0:00:00.00,0:00:00.00,Default,dialog,0,0,0,code once,if cfg_res then tcolor = asscolor(config.t_color) tscolor = asscolor(config.ts_color) else tcolor = "&H000000&" tscolor = "&HFFFFFF&" end Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,, Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function shape2coord(shape) local coord = {} local xy = {} local temp = {} for c in shape:gmatch('%S+') do _G.table.insert(xy, c) end local k = 0 repeat k = k + 1 until xy[k] == "m" or k > #xy if k > 1 then _G.aegisub.debug.out("invalid drawing command") end local d_comm = "m" local i = 1 k = k + 3 coord[i] = {} while k < #xy do if xy[k] == "m" then k = k + 3 i = i + 1 coord[i] = {} d_comm = "m" elseif xy[k] == "b" then cp1x, cp1y = xy[k-2],xy[k-1] cp2x, cp2y = xy[k+1],xy[k+2] cp3x, cp3y = xy[k+3],xy[k+4] cp4x, cp4y = xy[k+5],xy[k+6] k = k + 7 d_comm = "b" _G.table.insert(coord[i],{{cp1x,cp1y},{cp2x,cp2y},{cp3x,cp3y},{cp4x,cp4y}}) elseif xy[k] == "l" then cp1x, cp1y = xy[k-2], xy[k-1] cp2x = xy[k-2]+((xy[k+1]-xy[k-2])*(1/3)) cp2y = xy[k-1]+((xy[k+2]-xy[k-1])*(1/3)) cp3x = xy[k-2]+((xy[k+1]-xy[k-2])*(2/3)) cp3y = xy[k-1]+((xy[k+2]-xy[k-1])*(2/3)) cp4x, cp4y = xy[k+1], xy[k+2] k = k + 3 d_comm = "l" _G.table.insert(coord[i],{{cp1x,cp1y},{cp2x,cp2y},{cp3x,cp3y},{cp4x,cp4y}}) elseif string.match(xy[k],"%d+") ~= nil then if d_comm == "b" then cp1x, cp1y = xy[k-2],xy[k-1] cp2x, cp2y = xy[k],xy[k+1] cp3x, cp3y = xy[k+2],xy[k+3] cp4x, cp4y = xy[k+4],xy[k+5] k = k + 6 _G.table.insert(coord[i],{{cp1x,cp1y},{cp2x,cp2y},{cp3x,cp3y},{cp4x,cp4y}}) elseif d_comm == "l" then cp1x, cp1y = xy[k-2], xy[k-1] cp2x = xy[k-2]+((xy[k]-xy[k-2])*(1/3)) cp2y = xy[k-1]+((xy[k+1]-xy[k-1])*(1/3)) cp3x = xy[k-2]+((xy[k]-xy[k-2])*(2/3)) cp3y = xy[k-1]+((xy[k+1]-xy[k-1])*(2/3)) cp4x, cp4y = xy[k], xy[k+1] k = k + 2 _G.table.insert(coord[i],{{cp1x,cp1y},{cp2x,cp2y},{cp3x,cp3y},{cp4x,cp4y}}) end else _G.aegisub.debug.out("unkown drawing command") end end return coord end Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function tangential2P(P, t) local tanVec = {} local XY = {} local dpos = {} XY = difference(P) dpos = tDifferential( XY, t ) for i = 1, 2 do tanVec[i] = dpos[2][i] / math.sqrt(dpos[2][1]^2 + dpos[2][2]^2) end return tanVec end Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function normal2P(P, t) local normalVec = {} normalVec = tangential2P(P, t) normalVec[1], normalVec[2] = normalVec[2], -normalVec[1] return normalVec end Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function divBezier( P, t ) local E = {} F = {} G = {} H = {} I = {} J = {} for i = 1, 2 do E[i] = (1-t)*P[1][i] + t*P[2][i] F[i] = (1-t)*P[2][i] + t*P[3][i] G[i] = (1-t)*P[3][i] + t*P[4][i] H[i] = (1-t)*E[i] + t*F[i] I[i] = (1-t)*F[i] + t*G[i] J[i] = (1-t)*H[i] + t*I[i] end local dBezier1 = {{P[1][1],P[1][2]},{E[1],E[2]},{H[1],H[2]},{J[1],J[2]}} local dBezier2 = {{J[1],J[2]},{I[1],I[2]},{G[1],G[2]},{P[4][1],P[4][2]}} return dBezier1, dBezier2 end Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function cutBezier( P , t1, t2 ) local ta = 1-t1 local tb = 1-t2 local np1x = ta^3*P[1][1] + 3*t1*ta^2*P[2][1] + 3*t1^2*ta*P[3][1] + t1^3*P[4][1] local np1y = ta^3*P[1][2] + 3*t1*ta^2*P[2][2] + 3*t1^2*ta*P[3][2] + t1^3*P[4][2] local np2x = ta^2*(tb*P[1][1]+t2*P[2][1]) + 2*ta*t1*(tb*P[2][1]+t2*P[3][1]) + t1^2*(tb*P[3][1]+t2*P[4][1]) local np2y = ta^2*(tb*P[1][2]+t2*P[2][2]) + 2*ta*t1*(tb*P[2][2]+t2*P[3][2]) + t1^2*(tb*P[3][2]+t2*P[4][2]) local np3x = tb^2*(ta*P[1][1]+t1*P[2][1]) + 2*tb*t2*(ta*P[2][1]+t1*P[3][1]) + t2^2*(ta*P[3][1]+t1*P[4][1]) local np3y = tb^2*(ta*P[1][2]+t1*P[2][2]) + 2*tb*t2*(ta*P[2][2]+t1*P[3][2]) + t2^2*(ta*P[3][2]+t1*P[4][2]) local np4x = tb^3*P[1][1] + 3*t2*tb^2*P[2][1] + 3*t2^2*tb*P[3][1] + t2^3*P[4][1] local np4y = tb^3*P[1][2] + 3*t2*tb^2*P[2][2] + 3*t2^2*tb*P[3][2] + t2^3*P[4][2] local cutB = {{np1x,np1y},{np2x,np2y},{np3x,np3y},{np4x,np4y}} return cutB end Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function getBezierLength( p, ta , tb, n ) local XY = { } local dpos = { } local t = { } for i = 1, 2*n+1 do t[i] = ta+(i-1)*(tb-ta)/(2*n) end XY = difference(p) dpos = tDifferential(XY,t[1]) local Ft1 = math.sqrt(dpos[2][1]^2+dpos[2][2]^2) dpos = tDifferential(XY,t[2*n+1]) local Ft2 = math.sqrt(dpos[2][1]^2+dpos[2][2]^2) local SFt1 = 0 for i = 1, n do dpos = tDifferential(XY,t[2*i]) SFt1 = SFt1+ math.sqrt(dpos[2][1]^2+dpos[2][2]^2) end local SFt2 = 0 for i = 1, n-1 do dpos = tDifferential(XY,t[2*i+1]) SFt2 = SFt2+math.sqrt(dpos[2][1]^2+dpos[2][2]^2) end local SimpLength = ((tb-ta)/(2*n)/3)*((Ft1+Ft2)+(4*SFt1)+(2*SFt2)) return SimpLength end Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function length2t( P, Ltarget, n ) local ll = {} local ni = 1.0/n local tb = 0 local t = 0 ll[1] = 0 for i = 2, n+1 do tb = tb + ni ll[i] = getBezierLength(P,0,tb, n*2) end if Ltarget > ll[n+1] then t = false return t end for i = 1, n do if ((Ltarget >= ll[i]) and (Ltarget <= ll[i+1])) then t = (i-1)/n + (Ltarget-ll[i])/(ll[i+1]-ll[i])*(1/n) break end end return t end Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function length2PtNo( P, Ltarget, n ) local bl = {} local cpoint = {} local leng for h = 1, #P do bl = {} bl[1] = 0 for i = 2, #P[h]+1 do bl[i] = bl[i-1] + getBezierLength(P[h][i-1], 0, 1.0, n) end if Ltarget > bl[#bl] then Ltarget = Ltarget - bl[#bl] else for j = 1, #P[h] do if ((Ltarget >= bl[j]) and (Ltarget <= bl[j+1])) then cpoint = P[h][j] leng = Ltarget-bl[j] break end end end if leng then break end end if leng then return cpoint, leng else return false end end Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function getBezierPos( P, t ) local XY = { } local pos = { } XY = difference(P) for i = 1, 2 do pos[i] = XY[4][i]*t^3+3*XY[3][i]*t^2+3*XY[2][i]*t+XY[1][i] end return pos end Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function difference(P) local DVec = { } local XY = { } DVec[1] = {[1]=P[2][1]-P[1][1],[2]=P[2][2]-P[1][2]} DVec[2] = {[1]=P[3][1]-P[2][1],[2]=P[3][2]-P[2][2]} DVec[3] = {[1]=P[4][1]-P[3][1],[2]=P[4][2]-P[3][2]} DVec[4] = {[1]=DVec[2][1]-DVec[1][1],[2]=DVec[2][2]-DVec[1][2]} DVec[5] = {[1]=DVec[3][1]-DVec[2][1],[2]=DVec[3][2]-DVec[2][2]} DVec[6] = {[1]=DVec[5][1]-DVec[4][1],[2]=DVec[5][2]-DVec[4][2]} XY[1]={[1]=P[1][1],[2]=P[1][2]} XY[2]={[1]=DVec[1][1],[2]=DVec[1][2]} XY[3]={[1]=DVec[4][1],[2]=DVec[4][2]} XY[4]={[1]=DVec[6][1],[2]=DVec[6][2]} return XY end Comment: 0,0:00:00.00,0:00:00.00,Default,bezier functions,0,0,0,code once,function tDifferential( XY, ta ) local dPos = { } dPos[1]={[1] = XY[4][1]*ta^3+3*XY[3][1]*ta^2+3*XY[2][1]*ta+XY[1][1],[2] = XY[4][2]*ta^3+3*XY[3][2]*ta^2+3*XY[2][2]*ta+XY[1][2]} dPos[2]={[1] = 3*(XY[4][1]*ta^2+2*XY[3][1]*ta+XY[2][1]),[2] = 3*(XY[4][2]*ta^2+2*XY[3][2]*ta+XY[2][2])} dPos[3]={[1] = 6*(XY[4][1]*ta+XY[3][1]),[2] = 6*(XY[4][2]*ta+XY[3][2])} return dPos end Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,, Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code once,config.n = 5 Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code once,align_shape = {"m 0 0 b -4 -4 -8 -7 -10 -16 b -9 -21 -9 -28 -3 -35 b 2 -41 6 -47 16 -49 b 22 -57 9 -59 2 -63 b -3 -66 -9 -69 -8 -77 b -4 -90 47 -95 46 -114 b 47 -124 41 -130 29 -127 ","m 0 0 b 14 -9 28 -18 34 -39 b 28 -57 11 -63 11 -76 b 17 -99 24 -111 34 -118 b 53 -127 63 -139 70 -150 ","m 0 0 b -12 -15 -30 -24 -30 -38 b -30 -60 3 -66 2 -90 b -7 -113 -15 -135 -46 -151 ","m 0 0 b -2 -16 21 -28 -5 -48 b -22 -59 23 -65 30 -88 b 21 -113 7 -135 -20 -149 ","m 0 0 b -2 -18 -9 -32 -7 -55 b -4 -69 7 -81 9 -98 b 6 -115 -2 -131 -7 -147 ","m 0 0 b -4 -12 -8 -23 -8 -38 b -7 -54 -3 -70 2 -83 b 10 -96 19 -108 30 -117 b 39 -124 42 -132 41 -140 ","m 0 0 b 4 -12 9 -24 13 -36 b 14 -46 14 -56 12 -62 b 10 -70 8 -76 5 -89 b 1 -96 -3 -101 -6 -105 b -20 -123 -38 -115 -39 -147 ","m 0 0 b -1 -18 -9 -17 -2 -55 b 5 -65 7 -86 6 -102 b 3 -117 -2 -132 -8 -146 ","m 0 0 b 8 -10 14 -13 23 -18 b 32 -23 40 -27 35 -46 b 31 -59 24 -75 7 -82 b -17 -97 -50 -114 -59 -149 "} Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code once,shape = "m 0 0 l 2 0 l 2 2 l 0 2" Comment: 0,0:00:00.00,0:00:00.00,Default,Get Scr Resolution,0,0,0,code once,xres, yres = _G.aegisub.video_size() if xres == nil then ratio = 1 else ratio = yres/720 end if (xres and xres ~= meta.res_x) or (yres and yres ~= meta.res_y) then _G.aegisub.debug.out(2, "Warning: script resolution %dx%d does not match with loaded video resolution %dx%d resample script resolution", meta.res_x, meta.res_y, xres, yres) end Comment: 0,0:00:00.00,0:00:00.00,Default,Get Frame Dur,0,0,0,code once,msa = _G.aegisub.ms_from_frame(1) msb = _G.aegisub.ms_from_frame(101) if msa == nil and msb == nil then _G.aegisub.debug.out(2, "Warning: Please load the video or use dummy video.Frame duration was provisionally set to 33 milliseconds. ") frame_dur = 33 else frame_dur = (msb-msa)/100 end Comment: 0,0:00:00.00,0:00:00.00,Default,Glitter function,0,0,0,code once,function glitter(dur) tag = "" recall.time = 0 while ( dur > recall.time) do tag = tag..string.format("\\t(%d,%d,\\fscx%d\\fscy%d\\1c&HFFFFFF&\\3c&HFFFFFF&\\bord%f\\blur%f)\\t(%d,%d,\\fscx%d\\fscy%d\\1c%s\\3c%s\\bord%f\\blur%f)",remember("time",recall.time+math.random(dur/2)),recall.time+1,remember("size",math.random(150,250)*ratio*particle_size),recall.size,2*ratio,3*ratio,remember("time",recall.time+frame_dur),remember("time",recall.time+100),remember("size",math.random(50,100)*ratio*particle_size),recall.size,line.styleref.color1,line.styleref.color3,1*ratio,1*ratio) end return tag end Comment: 0,0:00:00.00,0:00:00.00,Default,tornado function,0,0,0,code once,function tornado(shape) shape = shape2coord(shape) Blength = 0 for i = 1, #shape do for j = 1, #shape[i] do Blength = Blength + getBezierLength( shape[i][j], 0 , 1.0, config.n ) end end X = Blength * j/(maxj +1) PtNo, targetLength = length2PtNo( shape, lineoffset+X,config.n ) if PtNo ~= false then tb = length2t( PtNo, targetLength, config.n ) if tb ~= false then pos = getBezierPos( PtNo, tb ) eVec = normal2P( PtNo, tb ) rot = -math.deg((math.atan2(eVec[2],eVec[1])))-90 if eVec[2] > 0 and config.upward then rot = rot+180 end end else pos[1] = line.left+syl.center pos[2] = line.middle rot = 0 end return "" end Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code once,particle_base_size = 2 Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line all,particle_size = particle_base_size*0.5 Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line all,pos = {} Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line all,lineoffset = 0 Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line all,prevshape = align_shape[math.random(#align_shape)] Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line all,line.kara[0].center = - line.styleref.fontsize*2 Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line all,line.kara[line.kara.n+1] = {center = line.kara[line.kara.n].center + line.styleref.fontsize} Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code syl all,shape1 = prevshape Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code syl all,shape2 = align_shape[math.random(#align_shape)] prevshape = shape2 Comment: 0,0:02:48.59,0:02:50.94,Default,,0,0,0,code syl all,fxgroup.firstsyl = syl.i == 1 Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code syl all,fxgroup.lastsyl = syl.i == line.kara.n Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code syl all,fxgroup.notlastsyl = not fxgroup.lastsyl Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,, Comment: 0,0:00:20.31,0:00:25.40,kanji,text lead-in,0,0,0,template syl,!retime("start2syl",-500+syl.i/line.kara.n*500,0)!{\an5\pos($center,$middle)\fad(300,0)} Comment: 0,0:00:20.31,0:00:25.40,kanji,text highlight&lead-out,0,0,0,template syl loop 4,!retime("presyl",0,300+(j-1)*100)!{\an5\pos($center,$middle)\t(!(j-1)*100!,!line.duration!,0.5,\fry720)\clip(0,!line.top+line.height*(j-1)/maxj!,!meta.res_x!,!line.top+line.height*j/maxj!)\fad(0,300)} Comment: 0,0:00:20.31,0:00:25.40,kanji,particle,0,0,0,template syl notext noblank,!maxloop($width/2)!!retime("syl",j/maxj*$dur,j/maxj*$dur)!{\an5\org(!remember("xp",$center+(line.kara[syl.i+1].center-line.kara[syl.i].center)*j/maxj)!,$middle)\move(!recall.xp!,$middle,!line.left+line.kara[syl.i+1].center+math.random(10,40)!,!$middle-math.random(line.height,line.height*2)!)\t(\fry!math.random(720,1000)!)\fscx!100*particle_size*ratio!\fscy!100*particle_size*ratio!!glitter(line.duration)!\fad(0,100)\p1}!shape! Comment: 0,0:00:00.00,0:00:00.00,kanji,tornado edge case (first syl),0,0,0,template syl fxgroup firstsyl notext noblank,!maxloop(100)!!retime("presyl",-500,0)!{\an5\move(!tornado(shape2)!!pos[1]+line.left+line.kara[0].center!,!pos[2]+$middle!,!tornado(shape1)!!pos[1]+$center!,!pos[2]+$middle!)\fscx!150*j/maxj*remember("rand",(1+math.random()*0.5))!\fscy!150*j/maxj*recall.rand!\frx70\fr!rot!\blur5\bord2\shad1\1a&HFF&\t(\fry!math.random(7200,10000)!)\clip(0,!$middle-120!,!meta.res_x!,$middle)\p1\3c!config.rainbow and _G.ass_color(_G.HSV_to_RGB(j/maxj*359,1,1)) or tcolor!\4c!tscolor!\fad(300,0)}m 16 2 b 16 2 16 2 16 2 b 10 3 -1 13 5 26 b 9 32 13 35 20 36 b 27 35 33 32 36 26 b 39 20 39 11 29 4 b 26 2 22 1 16 2 Comment: 0,0:00:00.00,0:00:00.00,kanji,tornado regular case,0,0,0,template syl fxgroup notlastsyl notext noblank,!maxloop(100)!!retime("syl")!{\an5\move(!tornado(shape1)!!pos[1]+$center!,!pos[2]+$middle!,!tornado(shape2)!!pos[1]+line.left+line.kara[syl.i+1].center!,!pos[2]+$middle!)\fscx!150*j/maxj*remember("rand",(1+math.random()*0.5))!\fscy!150*j/maxj*recall.rand!\frx70\fr!rot!\blur5\bord2\shad1\1a&HFF&\t(\fry!math.random(7200,10000)!)\clip(0,!$middle-120!,!meta.res_x!,$middle)\p1\3c!config.rainbow and _G.ass_color(_G.HSV_to_RGB(j/maxj*359,1,1)) or tcolor!\4c!tscolor!}m 16 2 b 16 2 16 2 16 2 b 10 3 -1 13 5 26 b 9 32 13 35 20 36 b 27 35 33 32 36 26 b 39 20 39 11 29 4 b 26 2 22 1 16 2 Comment: 0,0:00:00.00,0:00:00.00,kanji,tornado edge case (last syl),0,0,0,template syl fxgroup lastsyl notext noblank,!maxloop(100)!!retime("syl")!{\an5\move(!tornado(shape1)!!pos[1]+$center!,!pos[2]+$middle!,!tornado(shape2)!!pos[1]+line.left+line.kara[syl.i+1].center!,!pos[2]+$middle!)\fscx!150*j/maxj*remember("rand",(1+math.random()*0.5))!\fscy!150*j/maxj*recall.rand!\frx70\fr!rot!\blur5\bord2\shad1\1a&HFF&\t(\fry!math.random(7200,10000)!)\clip(0,!$middle-120!,!meta.res_x!,$middle)\p1\3c!config.rainbow and _G.ass_color(_G.HSV_to_RGB(j/maxj*359,1,1)) or tcolor!\4c!tscolor!\fad(0,300)}m 16 2 b 16 2 16 2 16 2 b 10 3 -1 13 5 26 b 9 32 13 35 20 36 b 27 35 33 32 36 26 b 39 20 39 11 29 4 b 26 2 22 1 16 2 Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,, Dialogue: 0,0:00:20.31,0:00:25.40,kanji,,0,0,0,,{\k30}友|と{\k23}#|も{\k26}達|だ{\k22}#|ち{\k31}以|!い{\k43}上|じょう{\k26}恋|!こ{\k17}#|い{\k22}人|び{\k24}#|と{\k57}未|!み{\k49}満|ま{\k139}#|ん Dialogue: 0,0:00:27.87,0:00:33.12,kanji,,0,0,0,,{\k32}曖|あ{\k27}#|い{\k30}昧|ま{\k23}#|い{\k21}な{\k42}関|かん{\k30}係|け{\k22}#|い{\k17}は{\k30}飽|あ{\k45}き{\k50}た{\k156}わ Dialogue: 0,0:00:35.02,0:00:36.74,kanji,,0,0,0,,{\k32}トッ{\k16}タ{\k31}トッ{\k15}タ{\k42}胸|<む{\k14}#|ね{\k22}が Dialogue: 0,0:00:36.76,0:00:38.62,kanji,,0,0,0,,{\k42}ジャ{\k32}ク{\k19}ジャ{\k30}ク{\k28}熱|あ{\k13}#|つ{\k26}い Dialogue: 0,0:00:38.65,0:00:40.47,kanji,,0,0,0,,{\k45}フルッ{\k15}キ{\k36}フルッ{\k23}キ{\k32}願|ね{\k19}#|が{\k12}う Dialogue: 0,0:00:40.48,0:00:42.56,kanji,,0,0,0,,{\k54}ジャッ{\k12}ク{\k40}ジャッ{\k21}ク {\k41}Feel {\k47}Me Dialogue: 0,0:00:42.58,0:00:44.31,kanji,,0,0,0,,{\k45}振|ふ{\k24}り{\k26}向|む{\k17}か{\k25}せ{\k24}た{\k23}い Dialogue: 0,0:00:44.37,0:00:46.16,kanji,,0,0,0,,{\k31}lis{\k41}ten {\k25}to {\k18}my {\k35}every{\k35}thing Dialogue: 0,0:00:46.27,0:00:48.18,kanji,,0,0,0,,{\k68}ねぇ {\k40}誰|だ{\k20}#|れ{\k18}の{\k18}せ{\k27}い Dialogue: 0,0:00:48.68,0:00:50.46,kanji,,0,0,0,,{\k31}今{\k14}#{\k26}す{\k22}ぐ{\k19}に{\k27}ミス{\k39}ター Dialogue: 0,0:00:50.49,0:00:52.37,kanji,,0,0,0,,{\k26}抱|だ{\k25}き{\k25}し{\k25}め{\k25}て{\k25}ミス{\k37}ター Dialogue: 0,0:00:52.38,0:00:54.12,kanji,,0,0,0,,{\k40}そ{\k22}の{\k31}腕|う{\k18}#|で{\k12}で{\k31}ミス{\k25}ター Dialogue: 0,0:00:54.33,0:00:56.80,kanji,,0,0,0,,{\k47}捕|つ{\k23}ま{\k23}え{\k31}て{\k26}ミス{\k97}ター Dialogue: 0,0:00:56.83,0:00:58.08,kanji,,0,0,0,,{\k40}だっ{\k19}て{\k28}ミス{\k38}ター Dialogue: 0,0:00:58.11,0:01:00.02,kanji,,0,0,0,,{\k37}こ{\k18}ん{\k23}な{\k18}に{\k24}も{\k27}ミス{\k44}ター Dialogue: 0,0:01:00.05,0:01:01.99,kanji,,0,0,0,,{\k24}欲|ほ{\k24}し{\k24}い{\k24}の{\k23}は{\k28}ミス{\k47}ター Dialogue: 0,0:01:02.02,0:01:04.86,kanji,,0,0,0,,{\k24}あ{\k24}な{\k24}た{\k23}だ{\k23}け{\k27}ミス{\k139}ター