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

作者:xeonds | 2021.06.14 01:35:10

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

其实这就是纯狐一符,没想到吧?
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(); //退出子进程
}

评论