一些无关紧要的前言:

本教程对应游戏版本为1.10.2,对应MOD为Psi-r1.0-42

在下是一个从minecraft beta 1.8年代开始玩这个游戏的老年人,而时至今日然我觉得真正能够吸引我的mod可能也只有PSI和其他几个。

psi模组或许看起来十分复杂,甚至麻烦,但请相信这样的复杂度并不会影响游戏体验,你可以十分轻松的从psi中获得快乐和无限的脑洞。

vazkii大大做了很多有趣的mod,或许psi并不是其中最出名的一个,但它却是最为丰富的,即使其中的核心机制只有几种。

最后一句闲话:玩PSI需要编程和数学知识吗?

——并不需要,但如果你掌握高中以上程度的数学知识和基础的编程知识,你将可以充分体验这个mod的乐趣,并且十分轻松的就可以入门。

而在接下来,这个教程将会以一个不会变成也不懂数学的人的身份为各位带来一个十分粗糙但确实有效的教程

以及这个教程并不适用于学数学专业的人和已经就职的程序员,因为这个讲的很粗糙。你们听了可能会生气。

=== 正文 ===

假设在此时你已经安装了PSImod并且打开了minecraft,正在一个普通世界的生存模式中闲逛,那么你需要做如下的准备。

**基础生活设施,钻石挖掘级别的工具,一些矿物储备**

在PSI的物品列表中,我们最先接触到的是两件可放置方块,CAD装配器和术式编写台

合成表请参考百科PSI条目中具体内容,在此用文字说明


铁锭|活塞|铁锭

铁锭|空格|铁锭

空格|铁锭|空格

#使用合成台合成


放置这个装置打开之后,会发现如下界面

PSI基础入门教程FOR1.10.2-第1张图片

简单介绍一下

上部,左侧子弹装配面板,当一个成品CAD被放置在上面时,可以根据弹夹容量解锁对应数量的空位,可进行子弹的装配和卸载(不需要任何其他工具和损耗)

上部,中间CAD组装面板,五个空槽自左到右,上到下分别是:核心、机体、弹夹、电池、着色器

上部,右侧属性面板,当我们将CAD部件放入装配器后,它会显示此时的部件组装成的CAD的属性

下部,物品栏和装备栏

PSI基础入门教程FOR1.10.2-第2张图片

一个CAD的属性包括以下几个内容

效率:魔法利用率(当效率过低时将会消耗更多的魔法资源)

强度:可支持的魔法威能数值

复杂度:可支持的有效动作数量

映射:可支持的启动式总数

带宽:可支持的启动式最大高度/宽度

弹夹:可装载的术式子弹数量

溢值:CAD内部电池的魔法资源缓冲值

刚才所说的部件会增加对应的属性,具体如下

弹夹:增加带宽和载弹夹数量

核心:增加复杂度和映射

电池:增加溢值

机体:高级机体拥有更高的强度和效率

着色器:让你的术式拥有更漂亮的色彩

需要注意的是,对于一个CAD而言,最为重要的部件是机体,但只有机体的CAD能够使用的术式只有“启动式:调试”(DEBUG用的)并且不能载弹

着色器并非必要部件,前期可忽略。


如何制作一个CAD部件?

请参考百科相关条目,在这里给出最基本的配件合成方式

铁质CAD机体

空格|空格|空格

铁锭|铁锭|铁锭

铁锭|空格|空格


基础CAD核心

空格|铁锭|空格

铁锭|Psi粉|铁锭

空格|铁锭|空格


基础CAD弹夹

4*4合成

PSI粉|铁锭

铁锭|空格


基础CAD电池

空格|铁锭|空格

空格|Psi粉|空格

空格|金锭|空格


##注意##

在这里提到的PSI粉并没有合成表,它的获得方式十分简单,需要一个已经组装好的CAD(因为初期我们没有PSI粉,这时只用一个机体组装就可以了)

将一个红石粉(或更多)扔到地上,选择CAD对准他,右键点击

红石粉会变成PSI粉


回到刚才的话题,这时应该可以组装一个稍微能用一点的CAD了

PSI基础入门教程FOR1.10.2-第3张图片


他拥有100的强度和4的弹夹(在我看来这两个属性十分重要)

这意味着这个CAD中可以使用4种不同的术式子弹,并且每一刻子弹上刻画的术式魔法资源消耗的强度不可以超过100点


如何刻画术式子弹,这是第二部分的内容


需要一个术式编写台,它的做法也很简单,参考百科相关词条

在此提供文字版本

铁锭|PSI粉|铁锭

铁锭|空格|铁锭

铁锭|空格|铁锭


打开编写台后应该是这样的界面

PSI基础入门教程FOR1.10.2-第4张图片

在这里请先不要管这副图片写了什么内容

它的意义此时并不重要,我们只需要认识这个面板

这是一个9*9的面板

每一个方块可以放一个符号

在PSI中魔法术式中有如下几个类型的符号

1.启动式,为术式赋予一个动作,需要一些参数来执行

2.运算,为启动式提供参数和参数之间的运算

3.选择符,为启动式中执行的动作提供一个主体

4.连接符,为需要多个运算符合的语句提供扩展的空间,或让这个术式变得更加美观,它的作用就是将符号A的实质扩展到更多的格子上

最简单的理解

让一个方块爆炸

爆炸——启动式

方块——选择符

具体是哪个方块——运算符


当你初步认识了这些,就可以去来尝试这个游戏中内置的教程了,在接下来的内容中,这个教程将会讲解其中一些教程的完成方法和思路。

但在那之前,要解释编写台右侧的图标

从上到下

紫色图标:复杂度——术式中的有效符号总数

上面的术式里复杂度是5,这意味着其中的有效符号有5个,这并不是说多余的是无效的,而是说,在这五个有效符号之外的符号,仅作为参数存在。如数字(常量)错误屏蔽符号(这个是后面会用到的,有一些因为MINECRAFT机制而客观存在的不影响游戏本身的强制BUG会影响视觉,这个时候可以用这个符号来取消他的显示)

蓝色图标:强度,在游戏中给出的解释是术式的威力,但这个教程建议你理解为对魔法资源的消耗程度,当这个数值高于你可以支持的数值时,术式是不可用的。如果以极为接近上线的数值来完成这个术式,你会发现每当你用这个术式,你会死掉,这是为什么我后面再讲。

白色图标:消耗,在蓝色图标的解释中我极力措辞就是希望能与这个区分开,这个消耗是实质性的消耗,就像使用技能会消耗MP一样的消耗。

##稍微解释一下为什么此篇教程要很别扭的解释魔法威力这个词,因为这个数值大并不能真正意味着你写的术式很强力,一些冗余的书写方式会加大“魔法威力”的数值,但并不能真正加强这个术式的效果。##

黑色图标:映射,启动式的总数。

绿色图标:带宽启动式高度或宽度的数值最大值,在这里并不一定要理解为狭义的高度和宽度,你可以把它理解成是一种上限数值的大小。

如假设一个启动式长5个模块宽3个模块,它的带宽为5,因为长5大于宽3,再假设一个启动式长和宽都是4个模块,那么该启动式的带宽为4


然后,打开道具栏,选择一个空位,按下C(默认按键,可以在控制-道具栏-psi键位绑定中修改)

你会看到这样一个界面

PSI基础入门教程FOR1.10.2-第5张图片

这是创造模式下的界面,所以全是绿色已解锁状态,如果是生存模式你将会看到一个又一个的白色条目,你需要完成教程中的任务来解锁他们。

完成这些任务你可以获得新的符号,更高的魔力上限。

##注意,魔力上限的大小十分重要,你的魔法术式中白色图标“消耗”的数值就是这个术式使用一次需要的数值,而如果你当前魔力低于这个数值,使用术式时会掉血。这个伤害是可以致死的,并且很容易致死。这时候我们来解释溢值属性的作用,如果你的魔力是1000,溢值400,那实际上你拥有1400点魔力,你可以使用两次消耗700的术式,并且不会受到伤害。##


接下来的教程中将不会详细引用游戏内置教程的内容,这篇教程将会简单讲解这些任务的完成方法和思路。

【再次强调,使用子弹的方式是在“已经写好术式”的编写器上手持子弹右键来刻画魔法术式,再将子弹通过装配器放入CAD中,用CAD来释放子弹上的魔法术式】

【术式子弹的制作方法参考百科相关条目,给出文字版,铁锭|PSI粉 即可】

教程1

使用启动式调试 输出自己当前位置,这个位置和F3中你看到的XYZ坐标是一致的

思路:没什么思路,直接做就好。启动式调试,目标-选择符施法者(就是你自己),数字参数无(就是中间的点)

教程2

使用连接符和常量数字来给调试内容赋值

思路,也没什么好说的。上一个术式的启动式数字赋值就好了,PSI支持的常量是[-999,9999]支持整数和二位小数,但启动式中,一般只有使用向量值的才会用到小数

教程3

一个真正可以使用的术式,你可以在这里看到术式的强大威力,目标是制作一个能让实体运动的术式。

实体概念并不重要,minecraft的常用实体是一切生物、投射物、物品,在PSI中提供的实体选择如下:动物、可熔物、投射物、敌人、物品、附近生物(包括动物、敌对生物、其他玩家)

思路:

对于启动式:运动附加,他需要3个参数

1、目标,一个主体,实体类型

2、方向,你要运动的方向,向量类型

3、级别,运动的强度,常量类型

目前只有选择符:施法者符合“一个实体”这个类型,所以现在要让自己运动,将启动式:运动附加的目标选项指向选择符:施法者

方向需要一个向量来定义,现在你可以用运算符:实体视线来定义这个向量,如果你用启动式:调试来看它的输出,会得到一组XYZ坐标,且3个值均符合[-1,1]

这意味着,在以后的术式编写中,如果所需要的是一个方向的向量,那么结果不应该看到不符合[-1,1]的值

级别,随意数值,只要你的魔力能够支持他释放出来就可以。

如何输入一个常量?

右键点击空格后,输入数字就可以了。

这样,可能会得出如下的一个术式


|选择符:施法者                  |连接符:左侧          |

|启动式:运动附加(级别↓/目标↑/方向→) |运算符:实体视线(目标↑)|

|数值常量:3                    |空格             |


希望你们能看懂,如果看不懂,请复制下面的代码

{spellName:"教程3",uuidMost:-299590087913287977L,validSpell:1b,spellList:[0:{data:{key:"selectorCaster"},x:0,y:0},1:{data:{params:{_direction:4,_speed:2,_target:1},key:"trickAddMotion"},x:0,y:1},2:{data:{key:"constantNumber",constantValue:"3"},x:0,y:2},3:{data:{params:{_target:3},key:"connector"},x:1,y:0},4:{data:{params:{_target:1},key:"operatorEntityLook"},x:1,y:1}],uuidLeast:-6805194958068631769L}

复制后,在游戏中打开编写台,按住SHIFT点击下面的导入按钮


这意味着,这个术式让目标“施法者”执行了“运动”这个动作,而“运动”动作的参数是指向了“实体视线”,这个“实体”则指向了目标“施法者”,当然这个说法并不符合程序,但理解来应该足够了

教程4

爆炸!

这个用上面给出的截图里的术式就可以实现。具体解释如下

启动式,爆炸。可以让一个目标爆炸,但需要两个参数,位置——你想让哪里爆炸,需要一个向量。级别——你想让爆炸有多大,需要一个常量数字。

可以通过 “运算符:实体位置”来选择自己所在的地方,并创建一个级别为2的爆炸,这样可以很轻易的完成自杀这一任务。

....哪里不对吧?

是的,有东西不对。

爆炸理所当然是用来炸别的东西,而不是自己的。

所以需要另一个运算符——向量追踪。

这将是以后十分常用的主要符号,请大家尽快熟悉他。

向量追踪:获取一个向量路径定位的方块(最大范围32)

这很难理解,所以用最简单的方式,在这个世界的任意位置取一个向量,对于这个向量所指向的第一个方块,这就是向量追踪得到的向量。

还是很难理解,那么配合上其它的运算式来说明。

对于一个运算符:向量追踪,他需要3个参数

位置——开始点

路径——从开始点向一个方向出发,发出射线

最大值——这条射线的长度,默认且最高是32,要记住PSI模组中支持的最大长/宽/高的最大值都是32

最大值的选择框有点奇怪,他中间多了一个原点,当你选择这个圆点意味着留空,在这里他意味着使用默认值32

于是,可以联系一下之前学到的内容。

这个术式目的是让我们鼠标指针,即我们实体视线位置的方块爆炸。

所以需要建立一个向量追踪,来确定这个方块在哪里。

玩家位置(开始点)就是我们自己,也就是实体位置→施法者(在后面将会以这种方式表达简单指向)

还需要一个路径——我们的指针位置,也就是实体视线→施法者

设置一个可有可无的最大值,我们不希望这个术式浪费太多魔法,所以设置为5

这意味着可以指向距离自己5个单位以内的任意方块

但这时,向量追踪只是输出了一个向量,一个[X,Y,Z]

我们还需要让她动起来。

启动符:爆炸→向量追踪,我们使爆炸的目标点指向我们得到的向量。

这时候,爆炸术式就完成了,刻画到子弹里面开始使用吧。


教程5

认识数字、向量、实体

我不想讲概念,因为自己也不清楚,怕讲错了误导大家,但这里必须要多说几句话。

在PSI中的“数字内容”

常量 数字类型—— 1、-1、1.1

数字运算符—— + - * / ||(绝对值) 倒数

在PSI中的“向量内容”

向量 值——[1]

向量运算符——向量和,向量差,向量乘,向量叉乘,反向量,单位向量,向量取值([X,Y,Z]坐标),向量除

定义向量——储存向量(将向量值储存到内存),构造向量(通过常量[X][Y][Z]构造向量[X,Y,Z])

还有很多向量相关的操作,比如追踪,轴追踪,这些就不讲了,先说基础。

**注意**

本mod里由于翻译的关系,向量有时指坐标,有时指向量,它们的英文都是vector


在PSI中“实体”

实体选择——选择:距离点最近,选择:随机实体(应属于一个实体列表)选择:聚焦实体,选择实体运动(这将会得到一个向量值)

实体列表选择——选择附近:生物、敌人、物品、投掷物、可熔炼物

实体列表操作——加入实体列表,排出实体列表


想要完成教程5,并不一定要按他的任务来做,你只需要用到教程任务中标红的符号写一个可以运行的术式即可。

在这里,请大家开脑洞自己写一些有趣的东西

比如,让自己周围的生物飞起来,让他们爆炸,将他们推向与自己相反的方向,将他们推向与他们运动路径相反的方向


教程6

另类施法与方块操作,这将是这个教程讲的最后一个内容

所谓另类施法,牵扯到了子弹

术式子弹有很多种,具体合成方式参考百科,初始作者已经补全可能在审核

效果如下

术式子弹:焦点——施法者,作用——即时

投射子弹:焦点——投射物命中实体,作用——即时

循环子弹:焦点——施法者,作用——即时,多次循环

圈阵子弹:焦点——投射物落点的魔法阵本身,作用——即时,多次循环

榴弹子弹:焦点——投射物命中实体及附近范围,作用——延迟,范围

遥控子弹,焦点——投射物落点的子弹本身,作用——可遥控,用术式引发器遥控

地雷子弹,作用——当实体踩踏时触发,焦点——投射物落点的子弹本身上面才过去的实体,


焦点是试用特殊子弹是必须要用到的“选择符”对于术式子弹来说,它的焦点等于施法者。


向量测量:获得向量尺标记的点的向量值

向量尺做法如下

|PSI粉|

|铁锭|

|铁锭|


单点标记的方法是,右键

标记第二点用,Shift+右键

这个东西在做建筑时很常用,你也可以用它快速获取一些奇奇怪怪的向量来做一些奇奇怪怪的事情。

这个任务并没有实质的目标,所以你只需要将之前完成的术式爆炸改造一下,让她可以用在榴弹子弹上或地雷子弹上就可以了。注意使用选择符:焦点


方块操作


PSI提供给我们的基础方块操作如下

放置方块:在指定向量的位置放置道具栏上CAD右侧的可放置物

破坏方块:破坏指定向量的位置的方块,等同于挖掘,而非毁灭。

放置方块序列:在指定的向量路径上放置方块

破坏方块序列:破坏指定的向量路径上的方块


这个任务很麻烦,直接给大家一个术式吧

{spellName:"By Shinariay",uuidMost:1161667322133040617L,validSpell:1b,spellList:[0:{data:{key:"selectorCaster"},x:2,y:1},1:{data:{params:{_target:1},key:"operatorEntityPosition"},x:2,y:2},2:{data:{params:{_target:2},key:"operatorEntityPosition"},x:2,y:4},3:{data:{key:"selectorCaster"},x:2,y:5},4:{data:{params:{_target:3},key:"operatorEntityLook"},x:3,y:1},5:{data:{params:{_ray:1,_max:0,_position:3},key:"operatorVectorRaycastAxis"},x:3,y:2},6:{data:{params:{_vector3:0,_vector2:2,_vector1:1},key:"operatorVectorSum"},x:3,y:3},7:{data:{params:{_ray:2,_max:0,_position:3},key:"operatorVectorRaycast"},x:3,y:4},8:{data:{params:{_target:3},key:"operatorEntityLook"},x:3,y:5},9:{data:{params:{_position:3},key:"trickPlaceBlock"},x:4,y:3}],uuidLeast:-7785844641562440146L}

这是一段并没有经过优化(即将冗余符号用连接符代替,并且优化排列方式)的术式

它的作用是在你指针指向的位置放一个方块。

这其中用到了向量追踪,之前的教程里讲过

向量轴向追踪,需要稍微提一下

他和向量追踪的区别在于,向量追踪得到的是“位置到路径上第一个方块的向量”,向量轴向追踪得到的是“位置到路径上第一个方块的侧面对于方块位置的向量”

简单来说

向量追踪是这样的

找到方块的位置

向量轴向追踪是找到方块的方向

具体差异如何,大家可以用启动式:调试来感受

在这里不做赘述


在这里还要提到向量投影,向量投影一般的作用是为了防止路径出现错误的直线

比如要执行一个术式,他可以破坏掉指针前面的方块以及这个路径同方向的,在这个方块后面的5个方块(就是,当你面向正前,破坏前面6个方块)

但是正常玩家很难面向“正前”这就可能让破坏路径变成斜线,破坏前面两个,前面左面一格的两个,前面左面两格的两个,这就很尴尬了

所以需要将向量投影到一个正对着玩家的方向,最简单的用法就是投影到指向的块的轴向向量

具体如何....游戏里多试试就明白了。

这还是一个没有优化的术式,大家可以把他改的好用一些。

{spellName:"By Shinariay",uuidMost:837003138341618524L,validSpell:1b,spellList:[0:{data:{key:"selectorCaster"},x:1,y:1},1:{data:{params:{_target:1},key:"operatorEntityPosition"},x:1,y:2},2:{data:{params:{_target:3},key:"operatorEntityLook"},x:2,y:1},3:{data:{params:{_ray:1,_max:0,_position:3},key:"operatorVectorRaycast"},x:2,y:2},4:{data:{params:{_target:1},key:"connector"},x:2,y:3},5:{data:{params:{_vector2:4,_vector1:3},key:"operatorVectorProject"},x:3,y:2},6:{data:{params:{_max:2,_target:1,_position:3},key:"trickBreakInSequence"},x:3,y:3},7:{data:{key:"constantNumber",constantValue:"8"},x:3,y:4},8:{data:{params:{_target:2},key:"operatorEntityAxialLook"},x:4,y:2},9:{data:{key:"selectorCaster"},x:4,y:3}],uuidLeast:-4798567938708545077L}

到此为止就是本教程的内容了,如果这其中有什么十分严重的错误,或是错字,请告诉这篇教程开始的作者,作者会及时改正。

如果有任何有效建议也请告诉他

他会在下一个版本的教程中讲述更详细的内容,并配更多的图

(如果有第二版)


2019/3/20 新增

(新增内容是一些快速代码,方便解教程)

#感谢先前几位为此教程修改错字


以下代码来自reddit https://www.reddit.com/r/psispellcompendium/

Level 1 - Tutorial 1

{spellName:"Level 1",uuidMost:-9212014085409912628L,validSpell:1b,spellList:[0:{spellPosX:4,spellData:{spellKey:"trickDebug",params:{psi.spellparam.number:0,psi.spellparam.target:2}},spellPosY:3},1:{spellPosX:4,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:4}],uuidLeast:-7812281509448144908L}


Level 2 - Tutorial 2

{spellName:"Level 2",uuidMost:-5142199122538312424L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"connector",params:{psi.spellparam.target:2}},spellPosY:3},1:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"2"},spellPosY:4},2:{spellPosX:4,spellData:{spellKey:"trickDebug",params:{psi.spellparam.number:3,psi.spellparam.target:2}},spellPosY:3},3:{spellPosX:4,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:4}],uuidLeast:-9206572619882318113L}


Level 3 - Tutorial 3

{spellName:"Level 3",uuidMost:7403931311755382661L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"operatorEntityLook",params:{psi.spellparam.target:2}},spellPosY:3},1:{spellPosX:3,spellData:{spellKey:"connector",params:{psi.spellparam.target:4}},spellPosY:4},2:{spellPosX:4,spellData:{spellKey:"trickAddMotion",params:{psi.spellparam.direction:3,psi.spellparam.speed:4,psi.spellparam.target:2}},spellPosY:3},3:{spellPosX:4,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:4},4:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"3"},spellPosY:3}],uuidLeast:-7196635200616144816L}


Level 4 - Tutorial 4

{spellName:"Level 4",uuidMost:8368486197480214426L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"errorSuppressor",params:{}},spellPosY:3},1:{spellPosX:3,spellData:{spellKey:"operatorEntityLook",params:{psi.spellparam.target:2}},spellPosY:4},2:{spellPosX:3,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:5},3:{spellPosX:4,spellData:{spellKey:"trickExplode",params:{psi.spellparam.power:4,psi.spellparam.position:2}},spellPosY:3},4:{spellPosX:4,spellData:{spellKey:"operatorVectorRaycast",params:{psi.spellparam.ray:3,psi.spellparam.max:0,psi.spellparam.position:2}},spellPosY:4},5:{spellPosX:4,spellData:{spellKey:"operatorEntityPosition",params:{psi.spellparam.target:3}},spellPosY:5},6:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"1.4"},spellPosY:3}],uuidLeast:-8969415790545644311L}


Level 5 - Entities 101

{spellName:"Level 5 - Entities",uuidMost:8211744491209575049L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"connector",params:{psi.spellparam.target:2}},spellPosY:2},1:{spellPosX:3,spellData:{spellKey:"operatorEntityPosition",params:{psi.spellparam.target:2}},spellPosY:3},2:{spellPosX:3,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:4},3:{spellPosX:3,spellData:{spellKey:"connector",params:{psi.spellparam.target:1}},spellPosY:5},4:{spellPosX:4,spellData:{spellKey:"selectorNearbyLiving",params:{psi.spellparam.radius:4,psi.spellparam.position:3}},spellPosY:2},5:{spellPosX:4,spellData:{spellKey:"operatorClosestToPoint",params:{psi.spellparam.position:3,psi.spellparam.target:1}},spellPosY:3},6:{spellPosX:4,spellData:{spellKey:"trickAddMotion",params:{psi.spellparam.direction:2,psi.spellparam.speed:4,psi.spellparam.target:1}},spellPosY:4},7:{spellPosX:4,spellData:{spellKey:"operatorEntityLook",params:{psi.spellparam.target:3}},spellPosY:5},8:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"32"},spellPosY:2},9:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"5"},spellPosY:4}],uuidLeast:-8221209634747786290L}


Level 5 - Numbers 101

{spellName:"Level 5 - Numbers",uuidMost:2366730375812433510L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"5"},spellPosY:2},1:{spellPosX:3,spellData:{spellKey:"operatorSum",params:{psi.spellparam.number2:2,psi.spellparam.number3:0,psi.spellparam.number1:1}},spellPosY:3},2:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"5"},spellPosY:4},3:{spellPosX:3,spellData:{spellKey:"trickDebug",params:{psi.spellparam.number:0,psi.spellparam.target:4}},spellPosY:5},4:{spellPosX:4,spellData:{spellKey:"constantNumber",params:{},constantValue:"5"},spellPosY:2},5:{spellPosX:4,spellData:{spellKey:"operatorSubtract",params:{psi.spellparam.number2:1,psi.spellparam.number3:0,psi.spellparam.number1:3}},spellPosY:3},6:{spellPosX:4,spellData:{spellKey:"constantNumber",params:{},constantValue:"5"},spellPosY:4},7:{spellPosX:4,spellData:{spellKey:"operatorAbsolute",params:{psi.spellparam.target:4}},spellPosY:5},8:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"-5"},spellPosY:2},9:{spellPosX:5,spellData:{spellKey:"operatorMultiply",params:{psi.spellparam.number2:1,psi.spellparam.number3:0,psi.spellparam.number1:3}},spellPosY:3},10:{spellPosX:5,spellData:{spellKey:"operatorDivide",params:{psi.spellparam.number2:3,psi.spellparam.number1:1}},spellPosY:4},11:{spellPosX:5,spellData:{spellKey:"operatorInverse",params:{psi.spellparam.target:1}},spellPosY:5}],uuidLeast:-7629156968557284112L}


Level 5 - Vectors

{spellName:"Level 5 - Vectors",uuidMost:3770320837875810916L,validSpell:1b,spellList:[0:{spellPosX:2,spellData:{spellKey:"constantNumber",params:{},constantValue:"1"},spellPosY:4},1:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"0"},spellPosY:3},2:{spellPosX:3,spellData:{spellKey:"operatorVectorConstruct",params:{psi.spellparam.z:2,psi.spellparam.y:3,psi.spellparam.x:1}},spellPosY:4},3:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"0"},spellPosY:5},4:{spellPosX:4,spellData:{spellKey:"operatorVectorSum",params:{psi.spellparam.vector1:3,psi.spellparam.vector2:4,psi.spellparam.vector3:0}},spellPosY:4},5:{spellPosX:4,spellData:{spellKey:"trickAddMotion",params:{psi.spellparam.direction:1,psi.spellparam.speed:2,psi.spellparam.target:4}},spellPosY:5},6:{spellPosX:4,spellData:{spellKey:"constantNumber",params:{},constantValue:"5"},spellPosY:6},7:{spellPosX:5,spellData:{spellKey:"operatorEntityLook",params:{psi.spellparam.target:2}},spellPosY:4},8:{spellPosX:5,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:5}],uuidLeast:-4776321351084635164L}


Level 6 - Alternative Casting

{spellName:"Level 6 - Casting",uuidMost:-3349788316653367715L,validSpell:1b,spellList:[0:{spellPosX:2,spellData:{spellKey:"constantNumber",params:{},constantValue:"32"},spellPosY:2},1:{spellPosX:3,spellData:{spellKey:"selectorNearbyLiving",params:{psi.spellparam.radius:3,psi.spellparam.position:2}},spellPosY:2},2:{spellPosX:3,spellData:{spellKey:"operatorEntityPosition",params:{psi.spellparam.target:2}},spellPosY:3},3:{spellPosX:3,spellData:{spellKey:"selectorFocalPoint",params:{}},spellPosY:4},4:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"0"},spellPosY:5},5:{spellPosX:4,spellData:{spellKey:"operatorListAdd",params:{psi.spellparam.list:3,psi.spellparam.target:4}},spellPosY:2},6:{spellPosX:4,spellData:{spellKey:"operatorClosestToPoint",params:{psi.spellparam.position:3,psi.spellparam.target:1}},spellPosY:3},7:{spellPosX:4,spellData:{spellKey:"trickAddMotion",params:{psi.spellparam.direction:2,psi.spellparam.speed:4,psi.spellparam.target:1}},spellPosY:4},8:{spellPosX:4,spellData:{spellKey:"operatorVectorConstruct",params:{psi.spellparam.z:4,psi.spellparam.y:2,psi.spellparam.x:3}},spellPosY:5},9:{spellPosX:4,spellData:{spellKey:"constantNumber",params:{},constantValue:"6"},spellPosY:6},10:{spellPosX:5,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:2},11:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"3"},spellPosY:4},12:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"0"},spellPosY:5}],uuidLeast:-6876291904710124281L}


Level 6 - Blockworks

{spellName:"Level 6 - Blockworks",uuidMost:-5283637968492673429L,validSpell:1b,spellList:[0:{spellPosX:2,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:3},1:{spellPosX:2,spellData:{spellKey:"operatorEntityLook",params:{psi.spellparam.target:1}},spellPosY:4},2:{spellPosX:3,spellData:{spellKey:"operatorEntityPosition",params:{psi.spellparam.target:3}},spellPosY:3},3:{spellPosX:3,spellData:{spellKey:"operatorVectorRaycast",params:{psi.spellparam.ray:3,psi.spellparam.max:0,psi.spellparam.position:1}},spellPosY:4},4:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"0"},spellPosY:5},5:{spellPosX:4,spellData:{spellKey:"trickBreakInSequence",params:{psi.spellparam.max:4,psi.spellparam.position:3,psi.spellparam.target:2}},spellPosY:4},6:{spellPosX:4,spellData:{spellKey:"operatorVectorConstruct",params:{psi.spellparam.z:4,psi.spellparam.y:2,psi.spellparam.x:3}},spellPosY:5},7:{spellPosX:4,spellData:{spellKey:"constantNumber",params:{},constantValue:"8"},spellPosY:6},8:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"5"},spellPosY:4},9:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"0"},spellPosY:5}],uuidLeast:-6342914191252957484L}


Level 10 - Psimetal Infusion

{spellName:"Level 10 - Infusion",uuidMost:937319485095756237L,validSpell:1b,spellList:[0:{spellPosX:4,spellData:{spellKey:"trickInfusion",params:{}},spellPosY:4}],uuidLeast:-4802225136594637561L}


Level 11 - Block Movement

{spellName:"Level 11 - Blocks",uuidMost:-6214458512418585102L,validSpell:1b,spellList:[0:{spellPosX:2,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:3},1:{spellPosX:2,spellData:{spellKey:"operatorEntityLook",params:{psi.spellparam.target:1}},spellPosY:4},2:{spellPosX:2,spellData:{spellKey:"connector",params:{psi.spellparam.target:1}},spellPosY:5},3:{spellPosX:3,spellData:{spellKey:"operatorEntityPosition",params:{psi.spellparam.target:3}},spellPosY:3},4:{spellPosX:3,spellData:{spellKey:"operatorVectorRaycast",params:{psi.spellparam.ray:3,psi.spellparam.max:0,psi.spellparam.position:1}},spellPosY:4},5:{spellPosX:3,spellData:{spellKey:"connector",params:{psi.spellparam.target:3}},spellPosY:5},6:{spellPosX:4,spellData:{spellKey:"connector",params:{psi.spellparam.target:3}},spellPosY:3},7:{spellPosX:4,spellData:{spellKey:"trickMoveBlock",params:{psi.spellparam.position:3,psi.spellparam.target:4}},spellPosY:4},8:{spellPosX:4,spellData:{spellKey:"connector",params:{psi.spellparam.target:3}},spellPosY:5},9:{spellPosX:5,spellData:{spellKey:"connector",params:{psi.spellparam.target:3}},spellPosY:3},10:{spellPosX:5,spellData:{spellKey:"operatorVectorRaycastAxis",params:{psi.spellparam.ray:2,psi.spellparam.max:0,psi.spellparam.position:1}},spellPosY:4},11:{spellPosX:5,spellData:{spellKey:"connector",params:{psi.spellparam.target:3}},spellPosY:5}],uuidLeast:-8745872989067061678L}


Level 11 - Elemental Arts

{spellName:"Level 11 - Elements",uuidMost:-4272400789585051629L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:2},1:{spellPosX:3,spellData:{spellKey:"operatorEntityLook",params:{psi.spellparam.target:1}},spellPosY:3},2:{spellPosX:4,spellData:{spellKey:"operatorEntityPosition",params:{psi.spellparam.target:3}},spellPosY:2},3:{spellPosX:4,spellData:{spellKey:"operatorVectorRaycast",params:{psi.spellparam.ray:3,psi.spellparam.max:0,psi.spellparam.position:1}},spellPosY:3},4:{spellPosX:4,spellData:{spellKey:"trickSmite",params:{psi.spellparam.position:1}},spellPosY:4}],uuidLeast:-7744583690326477711L}


Level 11 - Movement Advances

{spellName:"Level 11 - Movement",uuidMost:8556088057853461432L,validSpell:1b,spellList:[0:{spellPosX:4,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:3},1:{spellPosX:4,spellData:{spellKey:"trickBlink",params:{psi.spellparam.distance:4,psi.spellparam.target:1}},spellPosY:4},2:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"3"},spellPosY:4}],uuidLeast:-6415965493137677096L}


Level 12 - Loopcasting

{spellName:"Level 12 - Loopcast",uuidMost:4196101305383603782L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"connector",params:{psi.spellparam.target:2}},spellPosY:3},1:{spellPosX:3,spellData:{spellKey:"selectorLoopcastIndex",params:{}},spellPosY:4},2:{spellPosX:3,spellData:{spellKey:"connector",params:{psi.spellparam.target:1}},spellPosY:5},3:{spellPosX:4,spellData:{spellKey:"connector",params:{psi.spellparam.target:3}},spellPosY:3},4:{spellPosX:4,spellData:{spellKey:"trickDebug",params:{psi.spellparam.number:3,psi.spellparam.target:4}},spellPosY:4},5:{spellPosX:4,spellData:{spellKey:"connector",params:{psi.spellparam.target:3}},spellPosY:5},6:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"5"},spellPosY:2},7:{spellPosX:5,spellData:{spellKey:"operatorModulus",params:{psi.spellparam.number2:1,psi.spellparam.number1:3}},spellPosY:3},8:{spellPosX:5,spellData:{spellKey:"operatorVectorConstruct",params:{psi.spellparam.z:2,psi.spellparam.y:4,psi.spellparam.x:1}},spellPosY:4},9:{spellPosX:5,spellData:{spellKey:"operatorIntegerDivide",params:{psi.spellparam.number2:2,psi.spellparam.number1:3}},spellPosY:5},10:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"5"},spellPosY:6},11:{spellPosX:6,spellData:{spellKey:"constantNumber",params:{},constantValue:"0"},spellPosY:4}],uuidLeast:-5100334125835926349L}


Level 15 - Greater Infusion (Note: Requires a Psimetal CAD Assembly.)

{spellName:"Level 15 - Infusion",uuidMost:1877740119110405796L,validSpell:1b,spellList:[0:{spellPosX:4,spellData:{spellKey:"trickGreaterInfusion",params:{}},spellPosY:4}],uuidLeast:-5153093074527711708L}


Level 16 - Positive Effects

{spellName:"Level 16 - Effects+",uuidMost:2810673416522055961L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:4},1:{spellPosX:4,spellData:{spellKey:"constantNumber",params:{},constantValue:"1"},spellPosY:3},2:{spellPosX:4,spellData:{spellKey:"trickSpeed",params:{psi.spellparam.time:4,psi.spellparam.power:1,psi.spellparam.target:3}},spellPosY:4},3:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"46"},spellPosY:4}],uuidLeast:-5929583401815616339L}


Level 16 - Tool Casting (Note: Does NOT require a Psimetal tool.)

{spellName:"Level 16 - Tools",uuidMost:-3224407275760434824L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"selectorBlockBroken",params:{}},spellPosY:4},1:{spellPosX:4,spellData:{spellKey:"trickExplode",params:{psi.spellparam.power:4,psi.spellparam.position:3}},spellPosY:4},2:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"3"},spellPosY:4}],uuidLeast:-6246514000386799987L}


Level 17 - Negative Effects

{spellName:"Level 17 - Effects-",uuidMost:6179586791346620499L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"32"},spellPosY:2},1:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"1"},spellPosY:4},2:{spellPosX:4,spellData:{spellKey:"selectorNearbyLiving",params:{psi.spellparam.radius:3,psi.spellparam.position:4}},spellPosY:2},3:{spellPosX:4,spellData:{spellKey:"operatorClosestToPoint",params:{psi.spellparam.position:4,psi.spellparam.target:1}},spellPosY:3},4:{spellPosX:4,spellData:{spellKey:"trickWither",params:{psi.spellparam.time:2,psi.spellparam.power:3,psi.spellparam.target:1}},spellPosY:4},5:{spellPosX:4,spellData:{spellKey:"constantNumber",params:{},constantValue:"10"},spellPosY:5},6:{spellPosX:5,spellData:{spellKey:"connector",params:{psi.spellparam.target:2}},spellPosY:2},7:{spellPosX:5,spellData:{spellKey:"operatorEntityPosition",params:{psi.spellparam.target:2}},spellPosY:3},8:{spellPosX:5,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:4}],uuidLeast:-7222266151421316184L}


Level 19 - Exosuit Casting (Note: Does NOT require an exosuit.)

{spellName:"Level 19 - Exosuit",uuidMost:-2484323517920689246L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"24000"},spellPosY:3},1:{spellPosX:4,spellData:{spellKey:"operatorIntegerDivide",params:{psi.spellparam.number2:3,psi.spellparam.number1:2}},spellPosY:3},2:{spellPosX:4,spellData:{spellKey:"selectorTime",params:{}},spellPosY:4},3:{spellPosX:5,spellData:{spellKey:"trickDebug",params:{psi.spellparam.number:0,psi.spellparam.target:3}},spellPosY:3}],uuidLeast:-8258580910153057937L}


Level 20 - Block Conjuration

{spellName:"Level 20 - Conjure",uuidMost:7636987302376456748L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"operatorVectorConstruct",params:{psi.spellparam.z:0,psi.spellparam.y:2,psi.spellparam.x:0}},spellPosY:3},1:{spellPosX:3,spellData:{spellKey:"constantNumber",params:{},constantValue:"2"},spellPosY:4},2:{spellPosX:4,spellData:{spellKey:"operatorVectorSubtract",params:{psi.spellparam.vector1:4,psi.spellparam.vector2:3,psi.spellparam.vector3:0}},spellPosY:3},3:{spellPosX:4,spellData:{spellKey:"trickConjureBlock",params:{psi.spellparam.time:2,psi.spellparam.position:1}},spellPosY:4},4:{spellPosX:4,spellData:{spellKey:"constantNumber",params:{},constantValue:"3600"},spellPosY:5},5:{spellPosX:5,spellData:{spellKey:"operatorEntityPosition",params:{psi.spellparam.target:2}},spellPosY:3},6:{spellPosX:5,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:4}],uuidLeast:-5939550192081109205L}


Level 20 - Flow Control

{spellName:"Level 20 - Flow",uuidMost:-2742816938132617352L,validSpell:1b,spellList:[0:{spellPosX:2,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:2},1:{spellPosX:2,spellData:{spellKey:"operatorEntityLook",params:{psi.spellparam.target:1}},spellPosY:3},2:{spellPosX:3,spellData:{spellKey:"operatorEntityPosition",params:{psi.spellparam.target:3}},spellPosY:2},3:{spellPosX:3,spellData:{spellKey:"operatorVectorRaycast",params:{psi.spellparam.ray:3,psi.spellparam.max:0,psi.spellparam.position:1}},spellPosY:3},4:{spellPosX:3,spellData:{spellKey:"trickExplode",params:{psi.spellparam.power:4,psi.spellparam.position:1}},spellPosY:4},5:{spellPosX:4,spellData:{spellKey:"trickEvaluate",params:{psi.spellparam.target:3}},spellPosY:3},6:{spellPosX:4,spellData:{spellKey:"constantNumber",params:{},constantValue:"2"},spellPosY:4},7:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"60"},spellPosY:2},8:{spellPosX:5,spellData:{spellKey:"trickDelay",params:{psi.spellparam.time:1}},spellPosY:3}],uuidLeast:-7386192494504514998L}


Level 20 - Smeltery

{spellName:"Level 20 - Smeltery",uuidMost:-2728099047452032452L,validSpell:1b,spellList:[0:{spellPosX:3,spellData:{spellKey:"connector",params:{psi.spellparam.target:2}},spellPosY:2},1:{spellPosX:3,spellData:{spellKey:"operatorEntityPosition",params:{psi.spellparam.target:2}},spellPosY:3},2:{spellPosX:3,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:4},3:{spellPosX:4,spellData:{spellKey:"selectorNearbySmeltables",params:{psi.spellparam.radius:4,psi.spellparam.position:3}},spellPosY:2},4:{spellPosX:4,spellData:{spellKey:"operatorClosestToPoint",params:{psi.spellparam.position:3,psi.spellparam.target:1}},spellPosY:3},5:{spellPosX:4,spellData:{spellKey:"trickSmeltItem",params:{psi.spellparam.target:1}},spellPosY:4},6:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"32"},spellPosY:2}],uuidLeast:-9045729525948132940L}


Level 20 - Trigonometry

{spellName:"Level 20 - Trig",uuidMost:1515715686137741577L,validSpell:1b,spellList:[0:{spellPosX:1,spellData:{spellKey:"constantNumber",params:{},constantValue:"1"},spellPosY:5},1:{spellPosX:2,spellData:{spellKey:"trickDebug",params:{psi.spellparam.number:0,psi.spellparam.target:2}},spellPosY:4},2:{spellPosX:2,spellData:{spellKey:"operatorIntegerDivide",params:{psi.spellparam.number2:3,psi.spellparam.number1:4}},spellPosY:5},3:{spellPosX:2,spellData:{spellKey:"constantPi",params:{}},spellPosY:6},4:{spellPosX:3,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:2},5:{spellPosX:3,spellData:{spellKey:"operatorEntityLook",params:{psi.spellparam.target:1}},spellPosY:3},6:{spellPosX:3,spellData:{spellKey:"connector",params:{psi.spellparam.target:1}},spellPosY:4},7:{spellPosX:3,spellData:{spellKey:"operatorMultiply",params:{psi.spellparam.number2:2,psi.spellparam.number3:0,psi.spellparam.number1:4}},spellPosY:5},8:{spellPosX:3,spellData:{spellKey:"operatorDivide",params:{psi.spellparam.number2:3,psi.spellparam.number1:4}},spellPosY:6},9:{spellPosX:4,spellData:{spellKey:"trickEvaluate",params:{psi.spellparam.target:3}},spellPosY:3},10:{spellPosX:4,spellData:{spellKey:"operatorVectorDotProduct",params:{psi.spellparam.vector1:3,psi.spellparam.vector2:4}},spellPosY:4},11:{spellPosX:4,spellData:{spellKey:"operatorAcos",params:{psi.spellparam.target:1}},spellPosY:5},12:{spellPosX:4,spellData:{spellKey:"constantNumber",params:{},constantValue:"180"},spellPosY:6},13:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"60"},spellPosY:2},14:{spellPosX:5,spellData:{spellKey:"trickDelay",params:{psi.spellparam.time:1}},spellPosY:3},15:{spellPosX:5,spellData:{spellKey:"operatorEntityLook",params:{psi.spellparam.target:2}},spellPosY:4},16:{spellPosX:5,spellData:{spellKey:"selectorCaster",params:{}},spellPosY:5}],uuidLeast:-8035775209093477793L}


Level 24 - Eidos Manipulation

{spellName:"Level 19 - Eidos",uuidMost:6688561894757191000L,validSpell:1b,spellList:[0:{spellPosX:4,spellData:{spellKey:"trickEidosReversal",params:{psi.spellparam.time:4}},spellPosY:4},1:{spellPosX:5,spellData:{spellKey:"constantNumber",params:{},constantValue:"19"},spellPosY:4}],uuidLeast:-6755197686920833062L}