魔改笔记:ECL符卡结构详解

这里先贴上一段注释过的符卡脚本

其实这就是纯狐一符,没想到吧?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
sub BossCard1()
{
var A B C D E F G H; //定义变量
unless([-9986] == 0) goto BossCard1_160 0; //判断是否全避,若不是0则是全避
ins_615(640.0f); //消掉半径为r范围内的弹幕,消掉的弹幕变为最大得点
goto BossCard1_180 0;
BossCard1_160:
ins_616(640.0f); //消掉半径为r范围内的弹幕,不增加得点
BossCard1_180:
2 : ins_524(63); // 设置章节数,影响即将出现的符卡立绘,背景以及左上角boss的名字
4 : ins_569(1); //用来设置击破率
ins_11("BossItemCard"); //调用该函数,猜测为符卡相关设置
ins_513(); //重置时间
ins_21(); //关闭所有子线程
ins_525(); //清除所有单位,有某些flag的不会被清除.
unless([-9986] == 0) goto BossCard1_428 4; //判断是否全避,若不是0则是全避
ins_615(640.0f); //消掉半径为r范围内的弹幕,消掉的弹幕变为最大得点
goto BossCard1_448 4;
BossCard1_428:
ins_616(640.0f); //消掉半径为r范围内的弹幕,不增加得点
BossCard1_448:
ins_523(); //结束符卡模式
ins_632(0); //boss每身重置为0,有些特殊攻击模式时启用
ins_545(); //重置boss一些参数
ins_516(27); //播放音效
ins_404(0.0f, 0.0f); //设置移动方向以及速度
ins_405(0, 0, 0.0f, 0.0f); //改变移动方式:时间,模式(线性),方向,速度
ins_401(0, 0, 0.0f, 0.0f); //移动到:时间,模式,x,y
[-9949] = 0; //已miss数,每个章节结束时重置为0
[-9948] = 0; //已放的b的数量
[-9947] = 1; //判断上1符卡是否收取,收则是1
ins_514(0, 0, 3300, "Boss2"); //载入下一阶段:a,血量,时间,阶段变量名
!EN
ins_537(78, 3300, 500000, "「掌の純光」");
!H
ins_537(78, 3300, 500000, "「掌の純光」");
!L
ins_537(78, 3300, 500000, "「掌の純光」");
!*ins_401(60, 4, 0.0f, 128.0f); //移动到:时间,模式,x,y
ins_504(0.0f, 128.0f, 240.0f, 224.0f); //限制boss移动范围:x,y为基准,+-n和m的范围
ins_307(1, 79); //播放ANM文件a的第b个动画效果
ins_307(1, 75); //播放ANM文件a的第b个动画效果
ins_516(54); //播放音效
94 : ins_0(); //94帧后调用: 空指令,main开始调用一次
ins_23(60); //等待60帧
$A = 120;
$E = 3;
$F = 10000; //$X为整数变量名,%X为浮点数变量名
goto BossCard1_2136 94;
BossCard1_1224:
ins_302(3); //选择ANM文件
ins_316(0, 0); //未知
$G = 3;
goto BossCard1_1388 94;
BossCard1_1332:
ins_11("BossCard1_at2"); //调用该函数
ins_23(100); //等待100帧
BossCard1_1388:
if $G-- goto BossCard1_1332 94;
ins_23(60); //等待60帧
ins_307(1, 79);
ins_307(1, 75); //播放ANM文件a的第b个动画效果
ins_516(54); //播放音效
ins_302(3); //选择ANM文件
ins_306(0, 0); //在slot=0上,设置单位贴图=0
ins_23(60); //等待60帧
ins_302(3); //选择ANM文件
ins_316(0, 0); //未知
% D = [-9998.0f]; //[-9998.0f]=-π至π之间的随机浮点数
$H = $E;
goto BossCard1_1872 94;
BossCard1_1732:
ins_11("BossCard1_at2", _ff % D); //调用该符第二阶段
% D = (% D + 3.883222f); //%D自增3.883222f
ins_23(10); //等待10帧
BossCard1_1872:
if
$H-- goto BossCard1_1732 94;
unless($E < 4) goto BossCard1_2072 94;
$E = ($E + 1); //%D自增1
BossCard1_2072:
ins_23(60); //等待60帧
ins_306(0, 0); //在slot=0上,设置单位贴图=0
ins_23(70); //等待60帧
BossCard1_2136:
if
$F-- goto BossCard1_1224 94;
goto BossCard1_2224 94;
BossCard1_2204:
ins_23(1000); //等待1000帧
BossCard1_2224:
if
1 goto BossCard1_2204 94;
ins_10(); //返回到调用这个过程的地方,不清除当前单位
}  

sub BossCard1_at()
{
var A;
ins_600(0); //创建编号=0的弹幕
ins_607(0, 3); //设置id=0弹幕的效果=3
ins_602(0, 5, 6); //设置弹幕贴图
!E 48;
!N 96;
!H 108;
!LO 112;
!* //[-1]:指向当前堆栈顶的整数
ins_606(0, [-1], 1); //设置弹幕的方向数和层数
ins_604(0, 0.0f, 0.0f); //设置弹幕方向为0.0f,每个方向的角度差为r
ins_605(0, 0.5f, 0.2f); //设置弹幕速度为0.5f,最慢一层为0.2f
ins_611(0, 0, 2, 1, -999999, -999999.0f, -999999.0f); //弹幕变换
ins_611(0, 0, 1048576, 1, -999999, -999999.0f, -999999.0f); //弹幕变换
ins_611(0, 0, -2147483648, 30, -999999, -999999.0f, -999999.0f); //弹幕变换
ins_611(0, 0, 2097152, 30, -999999, 4.0f, -999999.0f); //弹幕变换
ins_627(0, 24.0f); //设置id=0弹幕的发弹点:以boss为中心,半径为24.0f
ins_614(1, 0); //复制弹幕b到a中
ins_610(1, 4, 0, 134217728, 0, 8, 6, 1, -999999.0f, 0.0f, 16.0f, 128.0f); //弹幕变换
ins_610(1, 5, 0, 16384, 18, 38, 8, 0, 0.0f, 14.0f, 0.0f, 0.0f); //弹幕变换
ins_609(1, 8, 0, 4, 90, -999999, 0.05f, -999999.0f); //弹幕变换
ins_609(0, 4, 0, -2147483648, 15, -999999, -999999.0f, -999999.0f); //弹幕变换
ins_609(0, 5, 0, 2097152, 30, -999999, 0.7f, -999999.0f); //弹幕变换
% A = [-9998.0f]; //[-9998.0f]=-π至π之间的随机浮点数
ins_604(0, % A, 0.0f); //设置弹幕方向为%A,每个方向的角度差为r
ins_601(0); //发射弹幕id=0
ins_607(1, 5); //设置id=1弹幕的效果=5(开花)
ins_604(1, % A, 0.0f); //设置弹幕方向为%A,每个方向的角度差为r
ins_601(1); //发射弹幕id=1
ins_10();
}

sub BossCard1_at2(A)
{
var B;
BossCard1_at2_36:
ins_600(0); //创建弹幕id=0
ins_607(0, 1); //设置id=0弹幕的效果=1(普通)
ins_602(0, 8, 6); //设置弹幕贴图
ins_606(0, 1, 1); //设置弹幕的方向数和层数
ins_604(0, 1.5707964f, 0.0f); //设置弹幕方向为1.57,每个方向的角度差为0.0f
ins_605(0, 6.0f, 1.0f); //设置弹幕速度为6.0f,最慢一层为1.0f
ins_608(0, 21, -1); //设置发弹音效21,设置变向音效-1(无音效)
ins_611(0, 0, 4, 8, 0, 5, 1.5707964f); //弹幕变换:0,通道,mode,a,b,r,s
ins_628(0, _f(([-9987.0f] * _f(200)) + _f(0)), _f([-9999.0f] * _f(32))); //设置id=0弹幕发弹基准点x,y
ins_601(0); //发射id=0弹幕
ins_23(1); //等待1帧
goto BossCard1_at2_36 0;
ins_10(); //退出子进程
}
作者

xeonds

发布于

2020-12-21

更新于

2024-06-15

许可协议

评论