一些無關緊要的前言:

本教程對應游戲版本為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一樣的消耗。

##稍微解釋一下為什么我要很別扭的解釋魔法威力這個詞,因為這個數值大并不能真正意味著你寫的術式很強力,一些冗余的書寫方式會加大“魔法威力”的數值,但并不能真正加強這個術式的效果。##

黑色圖標:映射,啟動式的總數。

綠色圖標:帶寬啟動式高度或寬度的數值最大值,在這里我們并不一定要理解為狹義的高度和寬度,你可以把它理解成是一種上限數值的大小。


然后,讓我們打開道具欄,選擇一個空位,按下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}