Chocobo
White-Flower
- Reaction score
- 409
When I looked this I was saying to myself "is this even possible on that?"
[YOUTUBE]ryHYO7HP9p8[/YOUTUBE]
After looking the script that is used it seems to use sort of checkpoints in 2 lists so it can determinate a parametric equation of degree n (from 2 to 7) which seems to be very flexible (at degree 2 it is very flexible).
And it seems you can achieve weird effects such as using "MILIEU" to something else while using degree 0 (which is degree 2 in fact).
source script : http://fsnc.21.forumer.com/viewtopic.php?p=1988#1988
the script names/strings are in french :
"lettre" = "letter"
"degre" = "degree"
"precision" = "precision"
"milieu" = "center"
I even made a JASS script on 5 hours (for warcraft 3 of course) for anyone that is interested :
I attached the map if you need it. (for warcraft 3 the frozen throne)
[YOUTUBE]ryHYO7HP9p8[/YOUTUBE]
After looking the script that is used it seems to use sort of checkpoints in 2 lists so it can determinate a parametric equation of degree n (from 2 to 7) which seems to be very flexible (at degree 2 it is very flexible).
And it seems you can achieve weird effects such as using "MILIEU" to something else while using degree 0 (which is degree 2 in fact).
source script : http://fsnc.21.forumer.com/viewtopic.php?p=1988#1988
Code:
Prog="LETTRES"
Cls
GridOff
AxesOff
LabelOff
S-WindMan
ViewWindow -0.5,11.5,1,-1,4,1,0,1,1/32
"DRAW"?->O
If Not O
Then "DEGRE (2~7,0)"?→L
L≠0┼L≠2┼L≠3┼L≠4┼L≠5┼L≠6┼L≠7┼2→L
"PRECISION (-10~10)"?→P
(38-4L+P)→Tpitch
L=0┼"MILIEU (0.5)"?→N
IfEnd
{1,1/3,3/2,7/3,11/5,7/4,3/2,3/2,6/5,1/3,2/3,6/5,9/5,11/4}→List 1
{3,7/3,2,5/2,13/5,5/2,2,5/4,2/5,0,3/4,2/5,1/5,0}→List 2
If O
Then Prog "LETTRE P"
Else Prog "LETTRE G"
IfEnd
{14/3,7/2,13/4,4,9/2,14/3,9/2,14/3,19/4}→List 1
{3/2,5/4,1/4,0,1/2,3/2,1/2,1/6,0}→List 2
If O
Then Prog "LETTRE P"
Else Prog "LETTRE G"
IfEnd
{21/4,26/5,28/5,6,20/3,27/4,20/3,27/4,34/5}→List 1
{3/2,3/4,0,1/6,3/4,3/2,3/4,1/3,0}→List 2
If O
Then Prog "LETTRE P"
Else Prog "LETTRE G"
IfEnd
{179/24,173/24,22/3,15/2,8,17/2,44/5}→List 1
{3/2,0,4/5,1,6/5,7/5,3/2}→List 2
If O
Then Prog "LETTRE P"
Else Prog "LETTRE G"
IfEnd
{32/3,19/2,37/4,10,21/2,32/3,21/2,32/3,43/4}→List 1
{3/2,5/4,1/4,0,1/2,3/2,1/2,1/6,0}→List 2
If O
Then Prog "LETTRE P"
Else Prog "LETTRE G"
IfEnd
Code:
Prog="LETTRE P"
For 1→Z To Dim List 1-1
For 0→N To 3
PlotOn √((1-0.25N)List 1[Z]²+0.25NList 1[Z+1]²),√((1-0.25N)List 2[Z]²+0.25NList 2[Z+1]²)
Next
Next
Code:
Prog="LETTRE G"
For 1→Z To Dim List 1
PlotOn List 1[Z],List 2[Z]
Next
For 1→Z To Dim List 1-L
If L=2
Then 2(List 1[Z]-2List 1[Z+1]+List 1[Z+2])→A
-3List 1[Z]+4List 1[Z+1]-List 1[Z+2]→B
List 1[Z]→C
2(List 2[Z]-2List 2[Z+1]+List 2[Z+2])→D
-3List 2[Z]+4List 2[Z+1]-List 2[Z+2]→E
List 2[Z]→F
Graph(X,Y)=(AT²+BT+C,DT²+ET+F)
Else If L=3
Then (-9/2)(List 1[Z]-3List 1[Z+1]+3List 1[Z+2]-List 1[Z+3])→A
(9/2)(2List 1[Z]-5List 1[Z+1]+4List 1[Z+2]-List 1[Z+3])→B
(-1/2)(11List 1[Z]-18List 1[Z+1]+9List 1[Z+2]-2List 1[Z+3])→C
List 1[Z]→D
(-9/2)(List 2[Z]-3List 2[Z+1]+3List 2[Z+2]-List 2[Z+3])→E
(9/2)(2List 2[Z]-5List 2[Z+1]+4List 2[Z+2]-List 2[Z+3])→F
(-1/2)(11List 2[Z]-18List 2[Z+1]+9List 2[Z+2]-2List 2[Z+3]→G
List 2[Z]→H
Graph(X,Y)=(AT^3+BT²+CT+D,ET^3+FT²+GT+H)
Else If L=4
Then (32/3)(List 1[Z]-4List 1[Z+1]+6List 1[Z+2]-4List 1[Z+3]+List 1[Z+4])→A
(-16/3)(5List 1[Z]-18List 1[Z+1]+24List 1[Z+2]-14List 1[Z+3]+3List 1[Z+4])→B
(2/3)(35List 1[Z]-104List 1[Z+1]+114List 1[Z+2]-56List 1[Z+3]+11List 1[Z+4])→C
(-1/3)(25List 1[Z]-48List 1[Z+1]+36List 1[Z+2]-16List 1[Z+3]+3List 1[Z+4])→D
List 1[Z]→E
(32/3)(List 2[Z]-4List 2[Z+1]+6List 2[Z+2]-4List 2[Z+3]+List 2[Z+4])→F
(-16/3)(5List 2[Z]-18List 2[Z+1]+24List 2[Z+2]-14List 2[Z+3]+3List 2[Z+4])→G
(2/3)(35List 2[Z]-104List 2[Z+1]+114List 2[Z+2]-56List 2[Z+3]+11List 2[Z+4])→H
(-1/3)(25List 2[Z]-48List 2[Z+1]+36List 2[Z+2]-16List 2[Z+3]+3List 2[Z+4])→I
List 2[Z]→J
Graph(X,Y)=(AT^4+BT^3+CT²+DT+E,FT^4+GT^3+HT²+IT+J)
Else If L=5
Then (-625/24)(List 1[Z]-5List 1[Z+1]+10List 1[Z+2]-10List 1[Z+3]+5List 1[Z+4]-List 1[Z+5])→A
(625/24)(3List 1[Z]-14List 1[Z+1]+26List 1[Z+2]-24List 1[Z+3]+11List 1[Z+4]-2List 1[Z+5])→B
(-125/24)(17List 1[Z]-71List 1[Z+1]+118List 1[Z+2]-98List 1[Z+3]+41List 1[Z+4]-7List 1[Z+5])→C
(25/24)(45List 1[Z]-154List 1[Z+1]+214List 1[Z+2]-156List 1[Z+3]+61List 1[Z+4]-10List 1[Z+5])→D
(-1/12)(137List 1[Z]-300List 1[Z+1]+300List 1[Z+2]-200List 1[Z+3]+75List 1[Z+4]-12List 1[Z+5])→E
List 1[Z]→F
(-625/24)(List 2[Z]-5List 2[Z+1]+10List 2[Z+2]-10List 2[Z+3]+5List 2[Z+4]-List 2[Z+5])→G
(625/24)(3List 2[Z]-14List 2[Z+1]+26List 2[Z+2]-24List 2[Z+3]+11List 2[Z+4]-2List 2[Z+5])→H
(-125/24)(17List 2[Z]-71List 2[Z+1]+118List 2[Z+2]-98List 2[Z+3]+41List 2[Z+4]-7List 2[Z+5])→I
(25/24)(45List 2[Z]-154List 2[Z+1]+214List 2[Z+2]-156List 2[Z+3]+61List 2[Z+4]-10List 2[Z+5])→J
(-1/12)(137List 2[Z]-300List 2[Z+1]+300List 2[Z+2]-200List 2[Z+3]+75List 2[Z+4]-12List 2[Z+5])→K
List 2[Z]→M
Graph(X,Y)=(AT^5+BT^4+CT^3+DT²+ET+F,GT^5+HT^4+IT^3+JT²+KT+M)
Else If L=6
Then (324/5)(List 1[Z]-6List 1[Z+1]+15List 1[Z+2]-20List 1[Z+3]+15List 1[Z+4]-6List 1[Z+5]+List 1[Z+6])→A
(-162/5)(7List 1[Z]-40List 1[Z+1]+95List 1[Z+2]-120List 1[Z+3]+85List 1[Z+4]-32List 1[Z+5]+5List 1[Z+6])→B
9(35List 1[Z]-186List 1[Z+1]+411List 1[Z+2]-484List 1[Z+3]+321List 1[Z+4]-114List 1[Z+5]+17List 1[Z+6])→C
(-9/2)(49List 1[Z]-232List 1[Z+1]+461List 1[Z+2]-496List 1[Z+3]+307List 1[Z+4]-104List 1[Z+5]+15List 1[Z+6])→D
(1/10)(812List 1[Z]-3132List 1[Z+1]+5265List 1[Z+2]-5080List 1[Z+3]+2970List 1[Z+4]-972List 1[Z+5]+137List 1[Z+6])→E
(-1/10)(147List 1[Z]-360List 1[Z+1]+450List 1[Z+2]-400List 1[Z+3]+225List 1[Z+4]-72List 1[Z+5]+10List 1[Z+6])→F
List 1[Z]→G
(324/5)(List 2[Z]-6List 2[Z+1]+15List 2[Z+2]-20List 2[Z+3]+15List 2[Z+4]-6List 2[Z+5]+List 2[Z+6])→H
(-162/5)(7List 2[Z]-40List 2[Z+1]+95List 2[Z+2]-120List 2[Z+3]+85List 2[Z+4]-32List 2[Z+5]+5List 2[Z+6])→I
9(35List 2[Z]-186List 2[Z+1]+411List 2[Z+2]-484List 2[Z+3]+321List 2[Z+4]-114List 2[Z+5]+17List 2[Z+6])→J
(-9/2)(49List 2[Z]-232List 2[Z+1]+461List 2[Z+2]-496List 2[Z+3]+307List 2[Z+4]-104List 2[Z+5]+15List 2[Z+6])→K
(1/10)(812List 2[Z]-3132List 2[Z+1]+5265List 2[Z+2]-5080List 2[Z+3]+2970List 2[Z+4]-972List 2[Z+5]+137List 2[Z+6])→M
(-1/10)(147List 2[Z]-360List 2[Z+1]+450List 2[Z+2]-400List 2[Z+3]+225List 2[Z+4]-72List 2[Z+5]+10List 2[Z+6])→N
List 2[Z]→P
Graph(X,Y)=(AT^6+BT^5+CT^4+DT^3+ET²+FT+G,HT^6+IT^5+JT^4+KT^3+MT²+NT+P)
Else If L=7
Then (-117649/720)(List 1[Z]-7List 1[Z+1]+21List 1[Z+2]-35List 1[Z+3]+35List 1[Z+4]-21List 1[Z+5]+7List 1[Z+6]-List 1[Z+7])→A
(117649/720)(4List 1[Z]-27List 1[Z+1]+78List 1[Z+2]-125List 1[Z+3]+120List 1[Z+4]-69List 1[Z+5]+22List 1[Z+6]-3List 1[Z+7])→B
(-16807/720)(46List 1[Z]-295List 1[Z+1]+810List 1[Z+2]-1235List 1[Z+3]+1130List 1[Z+4]-621List 1[Z+5]+190List 1[Z+6]-25List 1[Z+7])→C
(2401/144)(56List 1[Z]-333List 1[Z+1]+852List 1[Z+2]-1219List 1[Z+3]+1056List 1[Z+4]-555List 1[Z+5]+164List 1[Z+6]-21List 1[Z+7])→D
(-343/720)(967List 1[Z]-5104List 1[Z+1]+11787List 1[Z+2]-15560List 1[Z+3]+12725List 1[Z+4]-6432List 1[Z+5]+1849List 1[Z+6]-232List 1[Z+7])→E
(49/360)(938List 1[Z]-4014List 1[Z+1]+7911List 1[Z+2]-9490List 1[Z+3]+7380List 1[Z+4]-3618List 1[Z+5]+1019List 1[Z+6]-126List 1[Z+7])→F
(-1/60)(1089List 1[Z]-2940List 1[Z+1]+4410List 1[Z+2]-4900List 1[Z+3]+3675List 1[Z+4]-1764List 1[Z+5]+490List 1[Z+6]-60List 1[Z+7])→G
List 1[Z]→H
(-117649/720)(List 2[Z]-7List 2[Z+1]+21List 2[Z+2]-35List 2[Z+3]+35List 2[Z+4]-21List 2[Z+5]+7List 2[Z+6]-List 2[Z+7])→I
(117649/720)(4List 2[Z]-27List 2[Z+1]+78List 2[Z+2]-125List 2[Z+3]+120List 2[Z+4]-69List 2[Z+5]+22List 2[Z+6]-3List 2[Z+7])→J
(-16807/720)(46List 2[Z]-295List 2[Z+1]+810List 2[Z+2]-1235List 2[Z+3]+1130List 2[Z+4]-621List 2[Z+5]+190List 2[Z+6]-25List 2[Z+7])→K
(2401/144)(56List 2[Z]-333List 2[Z+1]+852List 2[Z+2]-1219List 2[Z+3]+1056List 2[Z+4]-555List 2[Z+5]+164List 2[Z+6]-21List 2[Z+7])→M
(-343/720)(967List 2[Z]-5104List 2[Z+1]+11787List 2[Z+2]-15560List 2[Z+3]+12725List 2[Z+4]-6432List 2[Z+5]+1849List 2[Z+6]-232List 2[Z+7])→N
(49/360)(938List 2[Z]-4014List 2[Z+1]+7911List 2[Z+2]-9490List 2[Z+3]+7380List 2[Z+4]-3618List 2[Z+5]+1019List 2[Z+6]-126List 2[Z+7])→P
(-1/60)(1089List 2[Z]-2940List 2[Z+1]+4410List 2[Z+2]-4900List 2[Z+3]+3675List 2[Z+4]-1764List 2[Z+5]+490List 2[Z+6]-60List 2[Z+7])→Q
List 2[Z]→R
Graph(X,Y)=(AT^7+BT^6+CT^5+DT^4+ET^3+FT²+GT+H,IT^7+JT^6+KT^5+MT^4+NT^3+PT²+QT+R)
Else (N(List 1[Z]-List 1[Z+2])-List 1[Z]+List 1[Z+1])/(N(N-1))→A
(-(N²List 1[Z]-N²List 1[Z+2]-List 1[Z]+List 1[Z+1]))/(N²-N)→B
List 1[Z]→C
(N(List 2[Z]-List 2[Z+2])-List 2[Z]+List 2[Z+1])/(N(N-1))→D
(-(N²List 2[Z]-N²List 2[Z+2]-List 2[Z]+List 2[Z+1]))/(N²-N)→E
List 2[Z]→F
Graph(X,Y)=(AT²+BT+C,DT²+ET+F)
Z+2=Dim List 1┼Return
IfEnd
IfEnd
IfEnd
IfEnd
IfEnd
IfEnd
Next
the script names/strings are in french :
"lettre" = "letter"
"degre" = "degree"
"precision" = "precision"
"milieu" = "center"
I even made a JASS script on 5 hours (for warcraft 3 of course) for anyone that is interested :
JASS:
globals
// User-defined
real array udg_List1
real array udg_List2
real array udg_List3
real array udg_List4
integer udg_DimList
integer udg_degree
real udg_duration
real array udg_List5
real array udg_List6
lightning array udg_Lightnings
integer udg_Lightning
real array udg_RD
string udg_LightSFX
real udg_Precision
endglobals
function CreateLightning takes nothing returns lightning
return AddLightningEx(udg_LightSFX, true, udg_RD[1], udg_RD[2], udg_RD[3], udg_RD[4], udg_RD[5], udg_RD[6])
endfunction
function CollectData takes real T, real Tmax, integer i returns nothing
if udg_degree == 2 then
//degree 2 parametric : at^2 + bt + c
set udg_RD[1] = udg_List4[1]*T*T + udg_List4[2]*T + udg_List4[3]
set udg_RD[2] = udg_List5[1]*T*T + udg_List5[2]*T + udg_List5[3]
set udg_RD[3] = udg_List6[1]*T*T + udg_List6[2]*T + udg_List6[3]
set udg_RD[4] = udg_List4[1]*Tmax*Tmax + udg_List4[2]*Tmax + udg_List4[3]
set udg_RD[5] = udg_List5[1]*Tmax*Tmax + udg_List5[2]*Tmax + udg_List5[3]
set udg_RD[6] = udg_List6[1]*Tmax*Tmax + udg_List6[2]*Tmax + udg_List6[3]
set udg_Lightnings<i> = CreateLightning()
endif
if udg_degree == 3 then
//degree 3 parametric : at^3 + bt^2 + ct + d
set udg_RD[1] = udg_List4[1]*T*T*T + udg_List4[2]*T*T + udg_List4[3]*T + udg_List4[4]
set udg_RD[2] = udg_List5[1]*T*T*T + udg_List5[2]*T*T + udg_List5[3]*T + udg_List5[4]
set udg_RD[3] = udg_List6[1]*T*T*T + udg_List6[2]*T*T + udg_List6[3]*T + udg_List6[4]
set udg_RD[4] = udg_List4[1]*Tmax*Tmax*Tmax + udg_List4[2]*Tmax*Tmax + udg_List4[3]*Tmax + udg_List4[4]
set udg_RD[5] = udg_List5[1]*Tmax*Tmax*Tmax + udg_List5[2]*Tmax*Tmax + udg_List5[3]*Tmax + udg_List5[4]
set udg_RD[6] = udg_List6[1]*Tmax*Tmax*Tmax + udg_List6[2]*Tmax*Tmax + udg_List6[3]*Tmax + udg_List6[4]
set udg_Lightnings<i> = CreateLightning()
endif
if udg_degree == 4 then
//degree 4 parametric : at^4 + bt^3 + ct^2 + dt + e
set udg_RD[1] = udg_List4[1]*T*T*T*T + udg_List4[2]*T*T*T + udg_List4[3]*T*T + udg_List4[4]*T + udg_List4[5]
set udg_RD[2] = udg_List5[1]*T*T*T*T + udg_List5[2]*T*T*T + udg_List5[3]*T*T + udg_List5[4]*T + udg_List5[5]
set udg_RD[3] = udg_List6[1]*T*T*T*T + udg_List6[2]*T*T*T + udg_List6[3]*T*T + udg_List6[4]*T + udg_List6[5]
set udg_RD[4] = udg_List4[1]*Tmax*Tmax*Tmax*Tmax + udg_List4[2]*Tmax*Tmax*Tmax + udg_List4[3]*Tmax*Tmax + udg_List4[4]*Tmax + udg_List4[5]
set udg_RD[5] = udg_List5[1]*Tmax*Tmax*Tmax*Tmax + udg_List5[2]*Tmax*Tmax*Tmax + udg_List5[3]*Tmax*Tmax + udg_List5[4]*Tmax + udg_List5[5]
set udg_RD[6] = udg_List6[1]*Tmax*Tmax*Tmax*Tmax + udg_List6[2]*Tmax*Tmax*Tmax + udg_List6[3]*Tmax*Tmax + udg_List6[4]*Tmax + udg_List6[5]
set udg_Lightnings<i> = CreateLightning()
endif
if udg_degree == 5 then
//degree 5 parametric : at^5 + bt^4 + ct^3 + dt^2 + et + f, a bit long xd
set udg_RD[1] = udg_List4[1]*T*T*T*T*T + udg_List4[2]*T*T*T*T + udg_List4[3]*T*T*T + udg_List4[4]*T*T + udg_List4[5]*T + udg_List4[6]
set udg_RD[2] = udg_List5[1]*T*T*T*T*T + udg_List5[2]*T*T*T*T + udg_List5[3]*T*T*T + udg_List5[4]*T*T + udg_List5[5]*T + udg_List5[6]
set udg_RD[3] = udg_List6[1]*T*T*T*T*T + udg_List6[2]*T*T*T*T + udg_List6[3]*T*T*T + udg_List6[4]*T*T + udg_List6[5]*T + udg_List6[6]
set udg_RD[4] = udg_List4[1]*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List4[2]*Tmax*Tmax*Tmax*Tmax + udg_List4[3]*Tmax*Tmax*Tmax + udg_List4[4]*Tmax*Tmax + udg_List4[5]*Tmax + udg_List4[6]
set udg_RD[5] = udg_List5[1]*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List5[2]*Tmax*Tmax*Tmax*Tmax + udg_List5[3]*Tmax*Tmax*Tmax + udg_List5[4]*Tmax*Tmax + udg_List5[5]*Tmax + udg_List5[6]
set udg_RD[6] = udg_List6[1]*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List6[2]*Tmax*Tmax*Tmax*Tmax + udg_List6[3]*Tmax*Tmax*Tmax + udg_List6[4]*Tmax*Tmax + udg_List6[5]*Tmax + udg_List6[6]
set udg_Lightnings<i> = CreateLightning()
endif
if udg_degree == 6 then
//degree 6 parametric : at^6 + bt^5 + ct^4 + dt^3 + et^2 + ft + g, that's long <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite8" alt=":D" title="Big Grin :D" loading="lazy" data-shortname=":D" />
set udg_RD[1] = udg_List4[1]*T*T*T*T*T*T + udg_List4[2]*T*T*T*T*T + udg_List4[3]*T*T*T*T + udg_List4[4]*T*T*T + udg_List4[5]*T*T + udg_List4[6]*T + udg_List4[7]
set udg_RD[2] = udg_List5[1]*T*T*T*T*T*T + udg_List5[2]*T*T*T*T*T + udg_List5[3]*T*T*T*T + udg_List5[4]*T*T*T + udg_List5[5]*T*T + udg_List5[6]*T + udg_List5[7]
set udg_RD[3] = udg_List6[1]*T*T*T*T*T*T + udg_List6[2]*T*T*T*T*T + udg_List6[3]*T*T*T*T + udg_List6[4]*T*T*T + udg_List6[5]*T*T + udg_List6[6]*T + udg_List6[7]
set udg_RD[4] = udg_List4[1]*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List4[2]*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List4[3]*Tmax*Tmax*Tmax*Tmax + udg_List4[4]*Tmax*Tmax*Tmax + udg_List4[5]*Tmax*Tmax + udg_List4[6]*Tmax + udg_List4[7]
set udg_RD[5] = udg_List5[1]*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List5[2]*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List5[3]*Tmax*Tmax*Tmax*Tmax + udg_List5[4]*Tmax*Tmax*Tmax + udg_List5[5]*Tmax*Tmax + udg_List5[6]*Tmax + udg_List5[7]
set udg_RD[6] = udg_List6[1]*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List6[2]*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List6[3]*Tmax*Tmax*Tmax*Tmax + udg_List6[4]*Tmax*Tmax*Tmax + udg_List6[5]*Tmax*Tmax + udg_List6[6]*Tmax + udg_List6[7]
set udg_Lightnings<i> = CreateLightning()
endif
if udg_degree == 7 then
//degree 7 parametric : at^7 + bt^6 + ct^5 + dt^4 + et^3 + ft^2 + gt + h, who would calculate this anyway??
set udg_RD[1] = udg_List4[1]*T*T*T*T*T*T*T + udg_List4[2]*T*T*T*T*T*T + udg_List4[3]*T*T*T*T*T + udg_List4[4]*T*T*T*T + udg_List4[5]*T*T*T + udg_List4[6]*T*T + udg_List4[7]*T + udg_List4[8]
set udg_RD[2] = udg_List5[1]*T*T*T*T*T*T*T + udg_List5[2]*T*T*T*T*T*T + udg_List5[3]*T*T*T*T*T + udg_List5[4]*T*T*T*T + udg_List5[5]*T*T*T + udg_List5[6]*T*T + udg_List5[7]*T + udg_List5[8]
set udg_RD[3] = udg_List6[1]*T*T*T*T*T*T*T + udg_List6[2]*T*T*T*T*T*T + udg_List6[3]*T*T*T*T*T + udg_List6[4]*T*T*T*T + udg_List6[5]*T*T*T + udg_List6[6]*T*T + udg_List6[7]*T + udg_List6[8]
set udg_RD[4] = udg_List4[1]*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List4[2]*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List4[3]*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List4[4]*Tmax*Tmax*Tmax*Tmax + udg_List4[5]*Tmax*Tmax*Tmax + udg_List4[6]*Tmax*Tmax + udg_List4[7]*Tmax + udg_List4[8]
set udg_RD[5] = udg_List5[1]*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List5[2]*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List5[3]*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List5[4]*Tmax*Tmax*Tmax*Tmax + udg_List5[5]*Tmax*Tmax*Tmax + udg_List5[6]*Tmax*Tmax + udg_List5[7]*Tmax + udg_List5[8]
set udg_RD[6] = udg_List6[1]*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List6[2]*Tmax*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List6[3]*Tmax*Tmax*Tmax*Tmax*Tmax + udg_List6[4]*Tmax*Tmax*Tmax*Tmax + udg_List6[5]*Tmax*Tmax*Tmax + udg_List6[6]*Tmax*Tmax + udg_List6[7]*Tmax + udg_List6[8]
set udg_Lightnings<i> = CreateLightning()
endif
endfunction
function GraphB takes nothing returns nothing
local real Tpitch = 1./udg_Precision
local real T = -Tpitch
local real Tmax = 0
local integer i = udg_Lightning
local integer Ex = udg_Lightning
loop
set i = i + 1
set T = T + Tpitch
set Tmax = T + Tpitch
if Tmax > 1 then
set Tmax = 1
endif
if T > 1 then
set T = 1
endif
exitwhen T >= 1
call CollectData(T, Tmax, i)
endloop
set udg_Lightning = i
call TriggerSleepAction(udg_duration)
loop
exitwhen Ex == 0
call DestroyLightning(udg_Lightnings<i>)
set udg_Lightnings<i> = null
set i = i - 1
endloop
endfunction
function GraphN takes nothing returns nothing
local real Tpitch = 1./udg_Precision
local real T = -Tpitch
local real Tmax = 0
local integer i = udg_Lightning
local integer Ex = udg_Lightning
loop
set i = i + 1
set T = T + Tpitch
set Tmax = T + Tpitch
if Tmax > 1 then
set Tmax = 1
endif
if T > 1 then
set T = 1
endif
exitwhen T >= 1
call CollectData(T, Tmax, i)
endloop
set udg_Lightning = i
call TriggerSleepAction(udg_duration)
loop
exitwhen i == Ex
call DestroyLightning(udg_Lightnings<i>)
set udg_Lightnings<i> = null
set i = i - 1
endloop
endfunction
function LightningList takes string s returns string
//blue category
//Chain Lightning - Primary - "big blue" - "CLPB" - not much laggy
//Lightning Attack - "medium blue" - "CHIM" - not much laggy
//Chain Lightning - Secondary, "small blue 1" - "CLSB" - not much laggy
//Mana Drain - "small blue 2" - "DRAM" - not much laggy
//
//green category
//Mana Burn - "big green" - "MBUR" - laggy
//Mana Flare - "medium green" - "MFPB" - not much laggy
//Drain - "small green 1" - "DRAB" - laggy
//Life Drain - "small green 2" - "DRAL" - laggy
//
//yellow category
//Healing Wave - Primary - "yellow" - "HWPB" - laggy
//Healing Wave - Secondary - "small yellow" - "HWSB" - not much laggy
//
//red category
//Finger of Death - "red" - "AFOD" - laggy
//Magic Leash - "small red" - "LEAS" - not much laggy
//
//others
//Forked Lightning - "purple" - "FORK" - not much laggy
//Spirit Link - "orange" - "SPLK" - not much laggy
//
//check if entry is already correct
if s=="CLPB" or s=="CHIM" or s=="CLSB" or s=="DRAM" or s=="MBUR" or s=="MFPB" or s=="DRAB" or s=="DRAL" or s=="HWPB" or s=="HWSB" or s=="AFOD" or s=="LEAS" or s=="FORK" or s=="SPLK" then
return s
endif
//blue category
if s=="big blue" then
return "CLPB" //Chain Lightning - Primary
endif
if s=="medium blue" then
return "CHIM" //Lightning Attack
endif
if s=="small blue 1" then
return "CLSB" //Chain Lightning - Secondary
endif
if s=="small blue 2" then
return "DRAM" //Mana Drain
endif
if s=="big green" then
return "MBUR" //Mana Burn
endif
if s=="medium green" then
return "MFPB" //Mana Flare
endif
if s=="small green 1" then
return "DRAB" //Drain
endif
if s=="small green 2" then
return "DRAL" //Life Drain
endif
if s=="yellow" then
return "HWPB" //Healing Wave - Primary
endif
if s=="small yellow" then
return "HWSB" //Healing Wave - Secondary
endif
if s=="red" then
return "AFOD" //Finger of Death
endif
if s=="small red" then
return "LEAS" //Magic Leash
endif
if s=="purple" then
return "FORK" //Forked Lightning
endif
if s=="orange" then
return "SPLK" //Spirit Link
endif
return "DRAM" //returns Mana Drain if it founds nothing
endfunction
function Calculate takes integer degree, real duration, integer which, real delay, string s, integer precision, boolean additive returns nothing
local integer Z = 0
set udg_degree = degree
set udg_duration = duration
if not additive then
set udg_Lightning = 1
endif
set udg_LightSFX = LightningList(s)
set udg_Precision = 2.+2.*udg_degree+precision
if degree != 2 and degree != 3 and degree != 4 and degree != 5 and (degree != 6 and which == 2) and (degree != 7 and which == 2) then
set degree = 2
set which = 1
endif
if udg_duration <= 0.0 then
set duration = 3.0
endif
if udg_Precision <= 0.0 or udg_Precision != 2.+2.*udg_degree+precision then
set udg_Precision = 2.+2.*udg_degree
endif
loop
set Z = Z + 1
if degree == 2 then //degree 2 data collect
if which == 1 then //normal graph
//degree 2 data : 2(n1-2*n2+n3)*t^2 + (-3*n1+4*n2-n3)*t + n3
set udg_List4[1] = 2*(udg_List1[Z]-2*udg_List1[Z+1]+udg_List1[Z+2])
set udg_List4[2] = -3*udg_List1[Z]+4*udg_List1[Z+1]-udg_List1[Z+2]
set udg_List4[3] = udg_List1[Z]
set udg_List5[1] = 2*(udg_List2[Z]-2*udg_List2[Z+1]+udg_List2[Z+2])
set udg_List5[2] = -3*udg_List2[Z]+4*udg_List2[Z+1]-udg_List2[Z+2]
set udg_List5[3] = udg_List2[Z]
set udg_List6[1] = 2*(udg_List3[Z]-2*udg_List3[Z+1]+udg_List3[Z+2])
set udg_List6[2] = -3*udg_List3[Z]+4*udg_List3[Z+1]-udg_List3[Z+2]
set udg_List6[3] = udg_List3[Z]
call ExecuteFunc("GraphN")
else //bezier graph
//degree 2 data : (n1-2*n2+n3)*t^2 + (-2*n1-2*n2)*t + n3
set udg_List4[1] = udg_List1[Z]-2*udg_List1[Z+1]+udg_List1[Z+2]
set udg_List4[2] = -2*udg_List1[Z]+2*udg_List1[Z+1]
set udg_List4[3] = udg_List1[Z]
set udg_List5[1] = udg_List2[Z]-2*udg_List2[Z+1]+udg_List2[Z+2]
set udg_List5[2] = -2*udg_List2[Z]+2*udg_List2[Z+1]
set udg_List5[3] = udg_List2[Z]
set udg_List6[1] = udg_List3[Z]-2*udg_List3[Z+1]+udg_List3[Z+2]
set udg_List6[2] = -2*udg_List3[Z]+2*udg_List3[Z+1]
set udg_List6[3] = udg_List3[Z]
call ExecuteFunc("GraphB")
endif
endif
if degree == 3 then //degree 3 data collect
if which == 1 then //normal graph
//degree 3 data : (-9/2)(n1-3*n2+3*n3-n4)*t^3 + (9/2)(2*n1-5*n2+4*n3-n4)*t^2 + (-1/2)(11*n1-18*n2+9*n3-2*n4)*t + n1
set udg_List4[1] = (-9./2.)*(udg_List1[Z]-3*udg_List1[Z+1]+3*udg_List1[Z+2]-udg_List1[Z+3])
set udg_List4[2] = (9./2.)*(2*udg_List1[Z]-5*udg_List1[Z+1]+4*udg_List1[Z+2]-udg_List1[Z+3])
set udg_List4[3] = (-1./2.)*(11*udg_List1[Z]-18*udg_List1[Z+1]+9*udg_List1[Z+2]-2*udg_List1[Z+3])
set udg_List4[4] = udg_List1[Z]
set udg_List5[1] = (-9./2.)*(udg_List2[Z]-3*udg_List2[Z+1]+3*udg_List2[Z+2]-udg_List2[Z+3])
set udg_List5[2] = (9./2.)*(2*udg_List2[Z]-5*udg_List2[Z+1]+4*udg_List2[Z+2]-udg_List2[Z+3])
set udg_List5[3] = (-1./2.)*(11*udg_List2[Z]-18*udg_List2[Z+1]+9*udg_List2[Z+2]-2*udg_List2[Z+3])
set udg_List5[4] = udg_List2[Z]
set udg_List6[1] = (-9./2.)*(udg_List3[Z]-3*udg_List3[Z+1]+3*udg_List3[Z+2]-udg_List3[Z+3])
set udg_List6[2] = (9./2.)*(2*udg_List3[Z]-5*udg_List3[Z+1]+4*udg_List3[Z+2]-udg_List3[Z+3])
set udg_List6[3] = (-1./2.)*(11*udg_List3[Z]-18*udg_List3[Z+1]+9*udg_List3[Z+2]-2*udg_List3[Z+3])
set udg_List6[4] = udg_List3[Z]
call ExecuteFunc("GraphN")
else //bezier graph
//degree 3 data : (-n1+3*n2-3*n3+n4)*t^3 + (3*n1-6*n2+3*n3)*t^2 + (-3*n1+3*n2)*t + n1
set udg_List4[1] = -udg_List1[Z]+3*udg_List1[Z+1]-3*udg_List1[Z+2]+udg_List1[Z+3]
set udg_List4[2] = 3*udg_List1[Z]-6*udg_List1[Z+1]+3*udg_List1[Z+2]
set udg_List4[3] = -3*udg_List1[Z]+3*udg_List1[Z+1]
set udg_List4[4] = udg_List1[Z]
set udg_List5[1] = -udg_List2[Z]+3*udg_List2[Z+1]-3*udg_List2[Z+2]+udg_List2[Z+3]
set udg_List5[2] = 3*udg_List2[Z]-6*udg_List2[Z+1]+3*udg_List2[Z+2]
set udg_List5[3] = -3*udg_List2[Z]+3*udg_List2[Z+1]
set udg_List5[4] = udg_List2[Z]
set udg_List6[1] = -udg_List3[Z]+3*udg_List3[Z+1]-3*udg_List3[Z+2]+udg_List3[Z+3]
set udg_List6[2] = 3*udg_List3[Z]-6*udg_List3[Z+1]+3*udg_List3[Z+2]
set udg_List6[3] = -3*udg_List3[Z]+3*udg_List3[Z+1]
set udg_List6[4] = udg_List3[Z]
call ExecuteFunc("GraphB")
endif
endif
if degree == 4 then //degree 4 data collect
if which == 1 then //normal graph
//degree 4 data : so long I won't put anymore the full function
set udg_List4[1] = (32./3.)*(udg_List1[Z]-4*udg_List1[Z+1]+6*udg_List1[Z+2]-4*udg_List1[Z+3]+udg_List1[Z+4])
set udg_List4[2] = (-16./3.)*(5*udg_List1[Z]-18*udg_List1[Z+1]+24*udg_List1[Z+2]-14*udg_List1[Z+3]+3*udg_List1[Z+4])
set udg_List4[3] = (2./3.)*(35*udg_List1[Z]-104*udg_List1[Z+1]+114*udg_List1[Z+2]-56*udg_List1[Z+3]+11*udg_List1[Z+4])
set udg_List4[4] = (-1./3.)*(25*udg_List1[Z]-48*udg_List1[Z+1]+36*udg_List1[Z+2]-16*udg_List1[Z+3]+3*udg_List1[Z+4])
set udg_List4[5] = udg_List1[Z]
set udg_List5[1] = (32./3.)*(udg_List2[Z]-4*udg_List2[Z+1]+6*udg_List2[Z+2]-4*udg_List2[Z+3]+udg_List2[Z+4])
set udg_List5[2] = (-16./3.)*(5*udg_List2[Z]-18*udg_List2[Z+1]+24*udg_List2[Z+2]-14*udg_List2[Z+3]+3*udg_List2[Z+4])
set udg_List5[3] = (2./3.)*(35*udg_List2[Z]-104*udg_List2[Z+1]+114*udg_List2[Z+2]-56*udg_List2[Z+3]+11*udg_List2[Z+4])
set udg_List5[4] = (-1./3.)*(25*udg_List2[Z]-48*udg_List2[Z+1]+36*udg_List2[Z+2]-16*udg_List2[Z+3]+3*udg_List2[Z+4])
set udg_List5[5] = udg_List2[Z]
set udg_List6[1] = (32./3.)*(udg_List3[Z]-4*udg_List3[Z+1]+6*udg_List3[Z+2]-4*udg_List3[Z+3]+udg_List3[Z+4])
set udg_List6[2] = (-16./3.)*(5*udg_List3[Z]-18*udg_List3[Z+1]+24*udg_List3[Z+2]-14*udg_List3[Z+3]+3*udg_List3[Z+4])
set udg_List6[3] = (2./3.)*(35*udg_List3[Z]-104*udg_List3[Z+1]+114*udg_List3[Z+2]-56*udg_List3[Z+3]+11*udg_List3[Z+4])
set udg_List6[4] = (-1./3.)*(25*udg_List3[Z]-48*udg_List3[Z+1]+36*udg_List3[Z+2]-16*udg_List3[Z+3]+3*udg_List3[Z+4])
set udg_List6[5] = udg_List3[Z]
call ExecuteFunc("GraphN")
else //bezier graph
//degree 4 data : too long...
set udg_List4[1] = udg_List1[Z]-4*udg_List1[Z+1]+6*udg_List1[Z+2]-4*udg_List1[Z+3]+udg_List1[Z+4]
set udg_List4[2] = -4*udg_List1[Z]+12*udg_List1[Z+1]-12*udg_List1[Z+2]+4*udg_List1[Z+3]
set udg_List4[3] = 6*udg_List1[Z]-12*udg_List1[Z+1]+6*udg_List1[Z+2]
set udg_List4[4] = -4*udg_List1[Z]+4*udg_List1[Z+1]
set udg_List4[5] = udg_List1[Z]
set udg_List5[1] = udg_List2[Z]-4*udg_List2[Z+1]+6*udg_List2[Z+2]-4*udg_List2[Z+3]+udg_List2[Z+4]
set udg_List5[2] = -4*udg_List2[Z]+12*udg_List2[Z+1]-12*udg_List2[Z+2]+4*udg_List2[Z+3]
set udg_List5[3] = 6*udg_List2[Z]-12*udg_List2[Z+1]+6*udg_List2[Z+2]
set udg_List5[4] = -4*udg_List2[Z]+4*udg_List2[Z+1]
set udg_List5[5] = udg_List2[Z]
set udg_List6[1] = udg_List3[Z]-4*udg_List3[Z+1]+6*udg_List3[Z+2]-4*udg_List3[Z+3]+udg_List3[Z+4]
set udg_List6[2] = -4*udg_List3[Z]+12*udg_List3[Z+1]-12*udg_List3[Z+2]+4*udg_List3[Z+3]
set udg_List6[3] = 6*udg_List3[Z]-12*udg_List3[Z+1]+6*udg_List3[Z+2]
set udg_List6[4] = -4*udg_List3[Z]+4*udg_List3[Z+1]
set udg_List6[5] = udg_List3[Z]
call ExecuteFunc("GraphB")
endif
endif
if degree == 5 then //degree 5 data collect
if which == 1 then //normal graph
//degree 5 data : too long....
set udg_List4[1] = (-625./24.)*(udg_List1[Z]-5*udg_List1[Z+1]+10*udg_List1[Z+2]-10*udg_List1[Z+3]+5*udg_List1[Z+4]-udg_List1[Z+5])
set udg_List4[2] = (625./24.)*(3*udg_List1[Z]-14*udg_List1[Z+1]+26*udg_List1[Z+2]-24*udg_List1[Z+3]+11*udg_List1[Z+4]-2*udg_List1[Z+5])
set udg_List4[3] = (-125./24.)*(17*udg_List1[Z]-71*udg_List1[Z+1]+118*udg_List1[Z+2]-98*udg_List1[Z+3]+41*udg_List1[Z+4]-7*udg_List1[Z+5])
set udg_List4[4] = (25./24.)*(45*udg_List1[Z]-154*udg_List1[Z+1]+214*udg_List1[Z+2]-156*udg_List1[Z+3]+61*udg_List1[Z+4]-10*udg_List1[Z+5])
set udg_List4[5] = (-1./12.)*(137*udg_List1[Z]-300*udg_List1[Z+1]+300*udg_List1[Z+2]-200*udg_List1[Z+3]+75*udg_List1[Z+4]-12*udg_List1[Z+5])
set udg_List4[6] = udg_List1[Z]
set udg_List5[1] = (-625./24.)*(udg_List2[Z]-5*udg_List2[Z+1]+10*udg_List2[Z+2]-10*udg_List2[Z+3]+5*udg_List2[Z+4]-udg_List2[Z+5])
set udg_List5[2] = (625./24.)*(3*udg_List2[Z]-14*udg_List2[Z+1]+26*udg_List2[Z+2]-24*udg_List2[Z+3]+11*udg_List2[Z+4]-2*udg_List2[Z+5])
set udg_List5[3] = (-125./24.)*(17*udg_List2[Z]-71*udg_List2[Z+1]+118*udg_List2[Z+2]-98*udg_List2[Z+3]+41*udg_List2[Z+4]-7*udg_List2[Z+5])
set udg_List5[4] = (25./24.)*(45*udg_List2[Z]-154*udg_List2[Z+1]+214*udg_List2[Z+2]-156*udg_List2[Z+3]+61*udg_List2[Z+4]-10*udg_List2[Z+5])
set udg_List5[5] = (-1./12.)*(137*udg_List2[Z]-300*udg_List2[Z+1]+300*udg_List2[Z+2]-200*udg_List2[Z+3]+75*udg_List2[Z+4]-12*udg_List2[Z+5])
set udg_List5[6] = udg_List2[Z]
set udg_List6[1] = (-625./24.)*(udg_List3[Z]-5*udg_List3[Z+1]+10*udg_List3[Z+2]-10*udg_List3[Z+3]+5*udg_List3[Z+4]-udg_List3[Z+5])
set udg_List6[2] = (625./24.)*(3*udg_List3[Z]-14*udg_List3[Z+1]+26*udg_List3[Z+2]-24*udg_List3[Z+3]+11*udg_List3[Z+4]-2*udg_List3[Z+5])
set udg_List6[3] = (-125./24.)*(17*udg_List3[Z]-71*udg_List3[Z+1]+118*udg_List3[Z+2]-98*udg_List3[Z+3]+41*udg_List3[Z+4]-7*udg_List3[Z+5])
set udg_List6[4] = (25./24.)*(45*udg_List3[Z]-154*udg_List3[Z+1]+214*udg_List3[Z+2]-156*udg_List3[Z+3]+61*udg_List3[Z+4]-10*udg_List3[Z+5])
set udg_List6[5] = (-1./12.)*(137*udg_List3[Z]-300*udg_List3[Z+1]+300*udg_List3[Z+2]-200*udg_List3[Z+3]+75*udg_List3[Z+4]-12*udg_List3[Z+5])
set udg_List6[6] = udg_List3[Z]
call ExecuteFunc("GraphN")
else //bezier graph
//degree 5 data : too long.....
set udg_List4[1] = -udg_List1[Z]+5*udg_List1[Z+1]-10*udg_List1[Z+2]+10*udg_List1[Z+3]-5*udg_List1[Z+4]+udg_List1[Z+5]
set udg_List4[2] = 5*udg_List1[Z]-20*udg_List1[Z+1]+30*udg_List1[Z+2]-20*udg_List1[Z+3]+5*udg_List1[Z+4]
set udg_List4[3] = -10*udg_List1[Z]+30*udg_List1[Z+1]-30*udg_List1[Z+2]+10*udg_List1[Z+3]
set udg_List4[4] = 10*udg_List1[Z]-20*udg_List1[Z+1]+10*udg_List1[Z+2]
set udg_List4[5] = -5*udg_List1[Z]+5*udg_List1[Z+1]
set udg_List4[6] = udg_List1[Z]
set udg_List5[1] = -udg_List2[Z]+5*udg_List2[Z+1]-10*udg_List2[Z+2]+10*udg_List2[Z+3]-5*udg_List2[Z+4]+udg_List2[Z+5]
set udg_List5[2] = 5*udg_List2[Z]-20*udg_List2[Z+1]+30*udg_List2[Z+2]-20*udg_List2[Z+3]+5*udg_List2[Z+4]
set udg_List5[3] = -10*udg_List2[Z]+30*udg_List2[Z+1]-30*udg_List2[Z+2]+10*udg_List2[Z+3]
set udg_List5[4] = 10*udg_List2[Z]-20*udg_List2[Z+1]+10*udg_List2[Z+2]
set udg_List5[5] = -5*udg_List2[Z]+5*udg_List2[Z+1]
set udg_List5[6] = udg_List2[Z]
set udg_List6[1] = -udg_List3[Z]+5*udg_List3[Z+1]-10*udg_List3[Z+2]+10*udg_List3[Z+3]-5*udg_List3[Z+4]+udg_List3[Z+5]
set udg_List6[2] = 5*udg_List3[Z]-20*udg_List3[Z+1]+30*udg_List3[Z+2]-20*udg_List3[Z+3]+5*udg_List3[Z+4]
set udg_List6[3] = -10*udg_List3[Z]+30*udg_List3[Z+1]-30*udg_List3[Z+2]+10*udg_List3[Z+3]
set udg_List6[4] = 10*udg_List3[Z]-20*udg_List3[Z+1]+10*udg_List3[Z+2]
set udg_List6[5] = -5*udg_List3[Z]+5*udg_List3[Z+1]
set udg_List6[6] = udg_List3[Z]
call ExecuteFunc("GraphB")
endif
endif
if degree == 6 then //degree 6 data collect
//normal graph, didn't add data for Bezier, I think degree 5 Bezier is enough but degree 5 Normal is not
//degree 6 data : too long........
set udg_List4[1] = (324./5.)*(udg_List1[Z]-6*udg_List1[Z+1]+15*udg_List1[Z+2]-20*udg_List1[Z+3]+15*udg_List1[Z+4]-6*udg_List1[Z+5]+udg_List1[Z+6])
set udg_List4[2] = (-162./5.)*(7*udg_List1[Z]-40*udg_List1[Z+1]+95*udg_List1[Z+2]-120*udg_List1[Z+3]+85*udg_List1[Z+4]-32*udg_List1[Z+5]+5*udg_List1[Z+6])
set udg_List4[3] = 9.*(35*udg_List1[Z]-186*udg_List1[Z+1]+411*udg_List1[Z+2]-484*udg_List1[Z+3]+321*udg_List1[Z+4]-114*udg_List1[Z+5]+17*udg_List1[Z+6])
set udg_List4[4] = (-9./2.)*(49*udg_List1[Z]-232*udg_List1[Z+1]+461*udg_List1[Z+2]-496*udg_List1[Z+3]+307*udg_List1[Z+4]-104*udg_List1[Z+5]+15*udg_List1[Z+6])
set udg_List4[5] = (1./10.)*(812*udg_List1[Z]-3132*udg_List1[Z+1]+5265*udg_List1[Z+2]-5080*udg_List1[Z+3]+2970*udg_List1[Z+4]-972*udg_List1[Z+5]+137*udg_List1[Z+6])
set udg_List4[6] = (-1./10.)*(147*udg_List1[Z]-360*udg_List1[Z+1]+450*udg_List1[Z+2]-400*udg_List1[Z+3]+225*udg_List1[Z+4]-72*udg_List1[Z+5]+10*udg_List1[Z+6])
set udg_List4[7] = udg_List1[Z]
set udg_List5[1] = (324./5.)*(udg_List2[Z]-6*udg_List2[Z+1]+15*udg_List2[Z+2]-20*udg_List2[Z+3]+15*udg_List2[Z+4]-6*udg_List2[Z+5]+udg_List2[Z+6])
set udg_List5[2] = (-162./5.)*(7*udg_List2[Z]-40*udg_List2[Z+1]+95*udg_List2[Z+2]-120*udg_List2[Z+3]+85*udg_List2[Z+4]-32*udg_List2[Z+5]+5*udg_List2[Z+6])
set udg_List5[3] = 9.*(35*udg_List2[Z]-186*udg_List2[Z+1]+411*udg_List2[Z+2]-484*udg_List2[Z+3]+321*udg_List2[Z+4]-114*udg_List2[Z+5]+17*udg_List2[Z+6])
set udg_List5[4] = (-9./2.)*(49*udg_List2[Z]-232*udg_List2[Z+1]+461*udg_List2[Z+2]-496*udg_List2[Z+3]+307*udg_List2[Z+4]-104*udg_List2[Z+5]+15*udg_List2[Z+6])
set udg_List5[5] = (1./10.)*(812*udg_List2[Z]-3132*udg_List2[Z+1]+5265*udg_List2[Z+2]-5080*udg_List2[Z+3]+2970*udg_List2[Z+4]-972*udg_List2[Z+5]+137*udg_List2[Z+6])
set udg_List5[6] = (-1./10.)*(147*udg_List2[Z]-360*udg_List2[Z+1]+450*udg_List2[Z+2]-400*udg_List2[Z+3]+225*udg_List2[Z+4]-72*udg_List2[Z+5]+10*udg_List2[Z+6])
set udg_List5[7] = udg_List2[Z]
set udg_List6[1] = (324./5.)*(udg_List3[Z]-6*udg_List3[Z+1]+15*udg_List3[Z+2]-20*udg_List3[Z+3]+15*udg_List3[Z+4]-6*udg_List3[Z+5]+udg_List3[Z+6])
set udg_List6[2] = (-162./5.)*(7*udg_List3[Z]-40*udg_List3[Z+1]+95*udg_List3[Z+2]-120*udg_List3[Z+3]+85*udg_List3[Z+4]-32*udg_List3[Z+5]+5*udg_List3[Z+6])
set udg_List6[3] = 9.*(35*udg_List3[Z]-186*udg_List3[Z+1]+411*udg_List3[Z+2]-484*udg_List3[Z+3]+321*udg_List3[Z+4]-114*udg_List3[Z+5]+17*udg_List3[Z+6])
set udg_List6[4] = (-9./2.)*(49*udg_List3[Z]-232*udg_List3[Z+1]+461*udg_List3[Z+2]-496*udg_List3[Z+3]+307*udg_List3[Z+4]-104*udg_List3[Z+5]+15*udg_List3[Z+6])
set udg_List6[5] = (1./10.)*(812*udg_List3[Z]-3132*udg_List3[Z+1]+5265*udg_List3[Z+2]-5080*udg_List3[Z+3]+2970*udg_List3[Z+4]-972*udg_List3[Z+5]+137*udg_List3[Z+6])
set udg_List6[6] = (-1./10.)*(147*udg_List3[Z]-360*udg_List3[Z+1]+450*udg_List3[Z+2]-400*udg_List3[Z+3]+225*udg_List3[Z+4]-72*udg_List3[Z+5]+10*udg_List3[Z+6])
set udg_List6[7] = udg_List3[Z]
call ExecuteFunc("GraphN")
endif
if degree == 7 then //degree 7 data collect
//normal graph, degree 6 was not enough for my uses, but I stop at degree 7 through
//degree 7 data : too long!!!!
set udg_List4[1] = (-117649./720.)*(udg_List1[Z]-7*udg_List1[Z+1]+21*udg_List1[Z+2]-35*udg_List1[Z+3]+35*udg_List1[Z+4]-21*udg_List1[Z+5]+7*udg_List1[Z+6]-udg_List1[Z+7])
set udg_List4[2] = (117649./720.)*(4*udg_List1[Z]-27*udg_List1[Z+1]+78*udg_List1[Z+2]-125*udg_List1[Z+3]+120*udg_List1[Z+4]-69*udg_List1[Z+5]+22*udg_List1[Z+6]-3*udg_List1[Z+7])
set udg_List4[3] = (-16807./720.)*(46*udg_List1[Z]-295*udg_List1[Z+1]+810*udg_List1[Z+2]-1235*udg_List1[Z+3]+1130*udg_List1[Z+4]-621*udg_List1[Z+5]+190*udg_List1[Z+6]-25*udg_List1[Z+7])
set udg_List4[4] = (2401./144.)*(56*udg_List1[Z]-333*udg_List1[Z+1]+852*udg_List1[Z+2]-1219*udg_List1[Z+3]+1056*udg_List1[Z+4]-555*udg_List1[Z+5]+164*udg_List1[Z+6]-21*udg_List1[Z+7])
set udg_List4[5] = (-343./720.)*(967*udg_List1[Z]-5104*udg_List1[Z+1]+11787*udg_List1[Z+2]-15560*udg_List1[Z+3]+12725*udg_List1[Z+4]-6432*udg_List1[Z+5]+1849*udg_List1[Z+6]-232*udg_List1[Z+7])
set udg_List4[6] = (49./360.)*(938*udg_List1[Z]-4014*udg_List1[Z+1]+7911*udg_List1[Z+2]-9490*udg_List1[Z+3]+7380*udg_List1[Z+4]-3618*udg_List1[Z+5]+1019*udg_List1[Z+6]-126*udg_List1[Z+7])
set udg_List4[7] = (-1./60.)*(1089*udg_List1[Z]-2940*udg_List1[Z+1]+4410*udg_List1[Z+2]-4900*udg_List1[Z+3]+3675*udg_List1[Z+4]-1764*udg_List1[Z+5]+490*udg_List1[Z+6]-60*udg_List1[Z+7])
set udg_List4[8] = udg_List1[Z]
set udg_List5[1] = (-117649./720.)*(udg_List2[Z]-7*udg_List2[Z+1]+21*udg_List2[Z+2]-35*udg_List2[Z+3]+35*udg_List2[Z+4]-21*udg_List2[Z+5]+7*udg_List2[Z+6]-udg_List2[Z+7])
set udg_List5[2] = (117649./720.)*(4*udg_List2[Z]-27*udg_List2[Z+1]+78*udg_List2[Z+2]-125*udg_List2[Z+3]+120*udg_List2[Z+4]-69*udg_List2[Z+5]+22*udg_List2[Z+6]-3*udg_List2[Z+7])
set udg_List5[3] = (-16807./720.)*(46*udg_List2[Z]-295*udg_List2[Z+1]+810*udg_List2[Z+2]-1235*udg_List2[Z+3]+1130*udg_List2[Z+4]-621*udg_List2[Z+5]+190*udg_List2[Z+6]-25*udg_List2[Z+7])
set udg_List5[4] = (2401./144.)*(56*udg_List2[Z]-333*udg_List2[Z+1]+852*udg_List2[Z+2]-1219*udg_List2[Z+3]+1056*udg_List2[Z+4]-555*udg_List2[Z+5]+164*udg_List2[Z+6]-21*udg_List2[Z+7])
set udg_List5[5] = (-343./720.)*(967*udg_List2[Z]-5104*udg_List2[Z+1]+11787*udg_List2[Z+2]-15560*udg_List2[Z+3]+12725*udg_List2[Z+4]-6432*udg_List2[Z+5]+1849*udg_List2[Z+6]-232*udg_List2[Z+7])
set udg_List5[6] = (49./360.)*(938*udg_List2[Z]-4014*udg_List2[Z+1]+7911*udg_List2[Z+2]-9490*udg_List2[Z+3]+7380*udg_List2[Z+4]-3618*udg_List2[Z+5]+1019*udg_List2[Z+6]-126*udg_List2[Z+7])
set udg_List5[7] = (-1./60.)*(1089*udg_List2[Z]-2940*udg_List2[Z+1]+4410*udg_List2[Z+2]-4900*udg_List2[Z+3]+3675*udg_List2[Z+4]-1764*udg_List2[Z+5]+490*udg_List2[Z+6]-60*udg_List2[Z+7])
set udg_List5[8] = udg_List2[Z]
set udg_List6[1] = (-117649./720.)*(udg_List3[Z]-7*udg_List3[Z+1]+21*udg_List3[Z+2]-35*udg_List3[Z+3]+35*udg_List3[Z+4]-21*udg_List3[Z+5]+7*udg_List3[Z+6]-udg_List3[Z+7])
set udg_List6[2] = (117649./720.)*(4*udg_List3[Z]-27*udg_List3[Z+1]+78*udg_List3[Z+2]-125*udg_List3[Z+3]+120*udg_List3[Z+4]-69*udg_List3[Z+5]+22*udg_List3[Z+6]-3*udg_List3[Z+7])
set udg_List6[3] = (-16807./720.)*(46*udg_List3[Z]-295*udg_List3[Z+1]+810*udg_List3[Z+2]-1235*udg_List3[Z+3]+1130*udg_List3[Z+4]-621*udg_List3[Z+5]+190*udg_List3[Z+6]-25*udg_List3[Z+7])
set udg_List6[4] = (2401./144.)*(56*udg_List3[Z]-333*udg_List3[Z+1]+852*udg_List3[Z+2]-1219*udg_List3[Z+3]+1056*udg_List3[Z+4]-555*udg_List3[Z+5]+164*udg_List3[Z+6]-21*udg_List3[Z+7])
set udg_List6[5] = (-343./720.)*(967*udg_List3[Z]-5104*udg_List3[Z+1]+11787*udg_List3[Z+2]-15560*udg_List3[Z+3]+12725*udg_List3[Z+4]-6432*udg_List3[Z+5]+1849*udg_List3[Z+6]-232*udg_List3[Z+7])
set udg_List6[6] = (49./360.)*(938*udg_List3[Z]-4014*udg_List3[Z+1]+7911*udg_List3[Z+2]-9490*udg_List3[Z+3]+7380*udg_List3[Z+4]-3618*udg_List3[Z+5]+1019*udg_List3[Z+6]-126*udg_List3[Z+7])
set udg_List6[7] = (-1./60.)*(1089*udg_List3[Z]-2940*udg_List3[Z+1]+4410*udg_List3[Z+2]-4900*udg_List3[Z+3]+3675*udg_List3[Z+4]-1764*udg_List3[Z+5]+490*udg_List3[Z+6]-60*udg_List3[Z+7])
set udg_List6[8] = udg_List3[Z]
call ExecuteFunc("GraphN")
endif
exitwhen Z == udg_DimList - degree
if delay == 0 then
call PolledWait(-1)
else
call TriggerSleepAction(delay)
endif
endloop
endfunction
function SignumPos takes integer i returns real
if i <= 0 then
return 0.0
endif
return I2R(i)
endfunction
function GetTime takes integer degree, real duration, real delay, integer DimList, real notadditive returns real
//notadditive = 0.0 -> additive = true
//notadditive = 1.0 -> additive = false
return SignumPos(DimList-degree-1)*delay + duration*notadditive
endfunction
function Resize takes real r, real x, real y, real z returns nothing
local integer i = 0
loop
set i = i + 1
set udg_List1<i> = udg_List1<i> * r + x
set udg_List2<i> = udg_List2<i> * r + y
set udg_List3<i> = udg_List3<i> * r + z
exitwhen i == udg_DimList
endloop
endfunction
function Letter_r takes real delx, real dely, real delz returns nothing
set udg_List1[1] = 11./24. + delx
set udg_List2[1] = 3./2. + dely
set udg_List3[1] = 0.0 + delz
set udg_List1[2] = 5./24. + delx
set udg_List2[2] = 0.0 + dely
set udg_List3[2] = 0.0 + delz
set udg_List1[3] = 1./3. + delx
set udg_List2[3] = 4./5. + dely
set udg_List3[3] = 0.0 + delz
set udg_List1[4] = 1./2. + delx
set udg_List2[4] = 1. + dely
set udg_List3[4] = 0.0 + delz
set udg_List1[5] = 1. + delx
set udg_List2[5] = 6./5. + dely
set udg_List3[5] = 0.0 + delz
set udg_List1[6] = 3./2. + delx
set udg_List2[6] = 7./5. + dely
set udg_List3[6] = 0.0 + delz
set udg_List1[7] = 9./5. + delx
set udg_List2[7] = 3./2. + dely
set udg_List3[7] = 0.0 + delz
//don't forget to input udg_DimList
set udg_DimList = 7
endfunction
function Letter_u takes real delx, real dely, real delz returns nothing
set udg_List1[1] = 1./4. + delx
set udg_List2[1] = 3./2. + dely
set udg_List3[1] = 0.0 + delz
set udg_List1[2] = 1./5. + delx
set udg_List2[2] = 3./4. + dely
set udg_List3[2] = 0.0 + delz
set udg_List1[3] = 3./5. + delx
set udg_List2[3] = 0.0 + dely
set udg_List3[3] = 0.0 + delz
set udg_List1[4] = 1. + delx
set udg_List2[4] = 1./6. + dely
set udg_List3[4] = 0.0 + delz
set udg_List1[5] = 5./3. + delx
set udg_List2[5] = 3./4. + dely
set udg_List3[5] = 0.0 + delz
set udg_List1[6] = 7./4. + delx
set udg_List2[6] = 3./2. + dely
set udg_List3[6] = 0.0 + delz
set udg_List1[7] = 5./3. + delx
set udg_List2[7] = 3./4. + dely
set udg_List3[7] = 0.0 + delz
set udg_List1[8] = 7./4. + delx
set udg_List2[8] = 1./3. + dely
set udg_List3[8] = 0.0 + delz
set udg_List1[9] = 9./5. + delx
set udg_List2[9] = 0.0 + dely
set udg_List3[9] = 0.0 + delz
//don't forget to input udg_DimList
set udg_DimList = 9
endfunction
function Letter_a takes real delx, real dely, real delz returns nothing
set udg_List1[1] = 5./3. + delx
set udg_List2[1] = 3./2. + dely
set udg_List3[1] = 0.0 + delz
set udg_List1[2] = 1./2. + delx
set udg_List2[2] = 5./4. + dely
set udg_List3[2] = 0.0 + delz
set udg_List1[3] = 1./4. + delx
set udg_List2[3] = 1./4. + dely
set udg_List3[3] = 0.0 + delz
set udg_List1[4] = 1. + delx
set udg_List2[4] = 0.0 + dely
set udg_List3[4] = 0.0 + delz
set udg_List1[5] = 3./2. + delx
set udg_List2[5] = 1./2. + dely
set udg_List3[5] = 0.0 + delz
set udg_List1[6] = 5./3. + delx
set udg_List2[6] = 3./2. + dely
set udg_List3[6] = 0.0 + delz
set udg_List1[7] = 3./2. + delx
set udg_List2[7] = 1./2. + dely
set udg_List3[7] = 0.0 + delz
set udg_List1[8] = 5./3. + delx
set udg_List2[8] = 1./6. + dely
set udg_List3[8] = 0.0 + delz
set udg_List1[9] = 7./4. + delx
set udg_List2[9] = 0.0 + dely
set udg_List3[9] = 0.0 + delz
//don't forget to input udg_DimList
set udg_DimList = 9
endfunction
function Letter_L takes real delx, real dely, real delz returns nothing
set udg_List1[1] = 1. + delx
set udg_List2[1] = 3. + dely
set udg_List3[1] = 0.0 + delz
set udg_List1[2] = 1./3. + delx
set udg_List2[2] = 7./3. + dely
set udg_List3[2] = 0.0 + delz
set udg_List1[3] = 3./2. + delx
set udg_List2[3] = 2. + dely
set udg_List3[3] = 0.0 + delz
set udg_List1[4] = 7./3. + delx
set udg_List2[4] = 5./2. + dely
set udg_List3[4] = 0.0 + delz
set udg_List1[5] = 11./5. + delx
set udg_List2[5] = 13./5. + dely
set udg_List3[5] = 0.0 + delz
set udg_List1[6] = 7./4. + delx
set udg_List2[6] = 5./2. + dely
set udg_List3[6] = 0.0 + delz
set udg_List1[7] = 3./2. + delx
set udg_List2[7] = 2. + dely
set udg_List3[7] = 0.0 + delz
set udg_List1[8] = 3./2. + delx
set udg_List2[8] = 5./4. + dely
set udg_List3[8] = 0.0 + delz
set udg_List1[9] = 6./5. + delx
set udg_List2[9] = 2./5. + dely
set udg_List3[9] = 0.0 + delz
set udg_List1[10] = 1./3. + delx
set udg_List2[10] = 0.0 + dely
set udg_List3[10] = 0.0 + delz
set udg_List1[11] = 2./3. + delx
set udg_List2[11] = 3./4. + dely
set udg_List3[11] = 0.0 + delz
set udg_List1[12] = 6./5. + delx
set udg_List2[12] = 2./4. + dely
set udg_List3[12] = 0.0 + delz
set udg_List1[13] = 9./5. + delx
set udg_List2[13] = 1./5. + dely
set udg_List3[13] = 0.0 + delz
set udg_List1[14] = 11./4. + delx
set udg_List2[14] = 0.0 + dely
set udg_List3[14] = 0.0 + delz
//don't forget to input udg_DimList
set udg_DimList = 14
endfunction
function Trig_System_Test_NEW_Actions takes nothing returns nothing
call Letter_L(0, 0, 0)
call Resize(1000., 0, 0, 0)
//Chain Lightning - Primary - "big blue" - "CLPB"
//Lightning Attack - "medium blue" - "CHIM"
//Chain Lightning - Secondary, "small blue 1" - "CLSB"
//Mana Drain - "small blue 2" - "DRAM"
//Mana Burn - "big green" - "MBUR"
//Mana Flare - "medium green" - "MFPB"
//Drain - "small green 1" - "DRAB"
//Life Drain - "small green 2" - "DRAL"
//Healing Wave - Primary - "yellow" - "HWPB"
//Healing Wave - Secondary - "small yellow" - "HWSB"
//Finger of Death - "red" - "AFOD"
//Magic Leash - "small red" - "LEAS"
//Forked Lightning - "purple" - "FORK"
//Spirit Link - "orange" - "SPLK"
call TriggerSleepAction(2.0)
//drawing a full "Laura" in small blue 1, degree 2, delay 0.2s, duration 36.0s
call Letter_L(0.0, 0.0, 0.0)
call Resize(300., 0, 0, 0)
call Calculate(2, 12.0, 1, 0.1, "small blue 1", 0, false) //not obliged to be true for the first one
call TriggerSleepAction(GetTime(2, 12.0, 0.2, udg_DimList, 0.0))
call Letter_a(3., 0.0, 0.0)
call Resize(300., 0, 0, 0)
call Calculate(2, 12.0-GetTime(2, 12.0, 0.1, 14, 0.0), 1, 0.1, "small blue 1", 0, true) //must be true now
call TriggerSleepAction(GetTime(2, 12.0, 0.1, udg_DimList, 0.0))
call Letter_u(5., 0.0, 0.0)
call Resize(300., 0, 0, 0)
call Calculate(2, 12.0-GetTime(2, 12.0, 0.1, 14+9, 0.0), 1, 0.1, "small blue 1", 0, true)
call TriggerSleepAction(GetTime(2, 12.0, 0.1, udg_DimList, 0.0))
call Letter_r(7., 0.0, 0.0)
call Resize(300., 0, 0, 0)
call Calculate(2, 12.0-GetTime(2, 12.0, 0.1, 14+9+9, 0.0), 1, 0.1, "small blue 1", 0, true)
call TriggerSleepAction(GetTime(2, 12.0, 0.1, udg_DimList, 0.0))
call Letter_a(9., 0.0, 0.0)
call Resize(300., 0, 0, 0)
call Calculate(2, 12.0-GetTime(2, 12.0, 0.1, 14+9+9+7, 0.0), 1, 0.1, "small blue 1", 0, true)
call TriggerSleepAction(GetTime(2, 12.0, 0.1, udg_DimList, 0.0))
call TriggerSleepAction(5.0)
//writing 4 same letters together
call Letter_L(0.0, 0.0, 0.0)
call Resize(1000., 0, 0, 0)
call Calculate(2, 30.0, 1, 0.2, "small blue 1", 0, false)
call TriggerSleepAction(GetTime(2, 30.0, 0.2, udg_DimList, 0.0))
call Letter_L(0.0, 0.0, 0.5)
call Resize(1000., 0, 0, 0)
call Calculate(2, 30.0, 1, 0.2, "small blue 1", 0, true)
call TriggerSleepAction(GetTime(2, 30.0, 0.2, udg_DimList, 0.0))
call Letter_L(0.0, 0.0, 1.0)
call Resize(1000., 0, 0, 0)
call Calculate(2, 30.0, 1, 0.2, "small blue 1", 0, true)
call TriggerSleepAction(GetTime(2, 30.0, 0.2, udg_DimList, 0.0))
call Letter_L(0.0, 0.0, 1.5)
call Resize(1000., 0, 0, 0)
call Calculate(2, 30.0, 1, 0.2, "small blue 1", 0, true)
call TriggerSleepAction(GetTime(2, 30.0, 0.2, udg_DimList, 0.0))
endfunction</i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i>
I attached the map if you need it. (for warcraft 3 the frozen throne)