隊伍在上午出發了。
二十餘名衛兵走在隊伍前後,長矛在陽光下閃著冷光。三十多個鎮民推著板車、趕著馬車,浩浩蕩蕩地沿著北上的土路行進。十幾輛馬車上滿載著物資,車輪碾過碎石,發出「咯吱咯吱」的聲響。
赫尼騎馬走在隊伍最前面,腰間掛著一把長劍,雖然挺著微胖的肚子,但騎在馬上倒也有一副「鎮長也是當過兵」的架勢。
阿德利安被安排在了中間一輛馬車上。馬車上是成袋的糧食,麻袋堆得整整齊齊,在中間留出了一個勉強能躺下的凹槽。霍拉斯特意在麻袋上鋪了一層乾草,又從家裡帶了一條薄毯,生怕少爺在車上硌得慌。
「養精蓄銳。」赫尼走之前說了一句,「你是我們這裡最強的戰力,別在路上把力氣耗光了。」
阿德利安想說「我什麼時候成最強戰力了」,但看了看周圍的衛兵——都是些身強力壯的普通人,沒有一個學過法術。他確實是最強的,雖然這個「最強」在達拉然可能連門檻都摸不到。
馬車晃晃悠悠地往前走。車輪碾過碎石,車廂上下顛簸,麻袋裡的糧食隨著晃動發出沙沙的聲響。阿德利安躺在麻袋上,看著頭頂的天空從藍色變成白色,又從白色變成灰色。
三十多公里,走一整個白天。
這個速度不快不慢,剛好夠他在腦子裡干點別的事情。
他閉上眼睛,將意識沉入那個名為「Spell_Shortcuts」的項目文件夾。
目前的法術庫里有四個:小火球、大火球、奧術飛彈、冰錐術。單體傷害夠了,但如果遇到成群結隊的敵人,這四個法術就不夠看了。
辛迪加的人不是單個行動的。他們喜歡成群結隊,十幾個人一夥,甚至幾十個人一起出動。他需要範圍攻擊法術。
第一個想到的是「烈焰風暴」。
這個法術他在達拉然的理論課上學過——在地上召喚出一個火焰區域,範圍內的敵人持續受到火焰傷害。標準的範圍持續傷害技能,群戰利器。
但問題在於,這個法術的施法流程非常複雜。需要同時維持三個魔法構型:一個是點燃地面的火種,一個是維持火勢的能量供給,還有一個是鎖定目標區域的邊界。三個構型需要同步運轉,任何一個出了問題,法術就會失敗。
以前的「前身」在課堂上嘗試過幾次,結果不是火沒點著,就是點著了控制不住範圍,把整個實驗室的草稿紙燒了個精光。茉德拉當時給的評語是:「想法很好,執行很糟。建議你先學會走,再學跑。」
但現在不一樣了。他有「思維編程」。
阿德利安把烈焰風暴的施法流程拆解成了三個模塊:定位模塊(確定目標區域和範圍)、點火模塊(在區域內生成火種)、供能模塊(持續輸出法力維持火焰)。三個模塊並行運行,互不干擾。
他在意識空間裡寫了一段偽代碼:
function cast_flamestrike(target_x, target_y, radius):
lock_target(target_x, target_y, radius)
if target_locked:
ignite(target_x, target_y, radius)
while mana > threshold:
supply_energy(target_x, target_y, radius)
delay(0.5)
else:
terminate()
邏輯不複雜,但需要把「判斷目標是否鎖定」這個步驟從意識層面移植到潛意識層面。換句話說,他需要在腦子裡建立一條「條件判斷」的神經通路——如果目標鎖定成功,就執行點火;如果鎖定失敗,就報錯退出。
這比之前的幾個法術複雜多了。小火球不需要判斷目標是否鎖定——你按下快捷鍵,它就往你面朝的方向飛,愛中不中。但烈焰風暴不行,範圍法術打偏了,不但燒不到敵人,還可能燒到自己人。
阿德利安在麻袋上翻了個身,換了個姿勢,繼續在腦子裡「寫代碼」。
馬車顛簸了一下,他的後腦勺磕在了一個箱子的角上,疼得他齜了齜牙。但他沒有睜開眼睛,只是伸手摸了摸後腦勺,確認沒出血,然後繼續。
定位模塊花了大約兩個小時才調試通順。點火模塊簡單一些,畢竟小火球的經驗可以直接復用。供能模塊最麻煩——需要維持火焰持續燃燒,但又不能一直燒,不然法力撐不住。他給供能模塊加了一個「間歇性輸出」的邏輯:每0.5秒輸出一次法力,每次輸出的量根據火焰的當前強度動態調整。
「這不就是PWM調光嘛……」他在心裡嘀咕了一句,「控制LED亮度的那套東西,拿來控制火焰大小。我真是個天才。」
莉蓮要是在旁邊,肯定會問「PWM是什麼」,好在他現在一個人躺在馬車上,沒人打擾。
烈焰風暴寫完,開始寫第二個。
冰霜新星。
這是一個群體控制法術——以自身為中心,向周圍爆發出一圈冰霜能量,凍結範圍內的所有敵人。法師版的「踩地板」,貼身保命神技。
這個法術的邏輯比烈焰風暴簡單得多,不需要鎖定目標,不需要維持供能,只需要判斷「自身位置」和「爆發範圍」就行了。
但有一個問題:這個法術的施法速度很慢。
不是施法流程慢,而是「決定施法」這個動作本身慢。在實戰中,當敵人已經貼到你臉上的時候,你才想起來放冰霜新星,已經來不及了。冰霜新星應該是一個「預判型」法術——在敵人靠近之前就準備好,等他們進入範圍,瞬間釋放。
這就需要他把「觸發條件」寫進程序里。
不是「我按下快捷鍵才放」,而是「當敵人距離小於X時自動釋放」。
阿德利安猶豫了一下。
自動釋放?他有點不太放心。萬一誤判了呢?萬一敵人還沒靠近就放了呢?萬一來的是友方單位呢?
但轉念一想,冰霜新星的範圍是以自身為中心的一個圓,半徑大約五米。五米之內,不是敵人就是自己人。自己人不會在這個距離上突然出現——隊伍里有嚴格的站位紀律。也就是說,任何進入五米範圍的移動物體,大概率是敵人。
「行吧,自動觸發。」阿德利安在腦子裡寫下了冰霜新星的程序框架:
function cast_frost_nova(radius):
while True:
if distance_to_nearest_hostile <= radius:
freeze_all_in_radius(radius)
break
delay(0.1)
這個程序會持續監測周圍敵人的距離——每0.1秒掃描一次——一旦有敵人進入五米範圍,立即釋放冰霜新星,然後退出循環。
為了保險起見,他給這個程序加了一個「手動優先」的邏輯:如果他主動按下快捷鍵,程序也會執行,不需要等待敵人靠近。
「有點過度設計了。」阿德利安在心裡給自己點了個贊,「但反正是自己用,怎麼舒服怎麼來。」
兩個法術編寫完成,阿德利安睜開眼睛,發現天色已經暗了下來。
遠處的地平線上,有幾縷黑煙正在升騰。不是炊煙——炊煙是直的,淡淡的一縷,升到半空就散了。那些黑煙是濃稠的、翻滾的、帶著火星的,像是有什麼東西還在燃燒。
「少爺,前面就是塔倫米爾了。」趕車的僕人回過頭來說了一句,聲音裡帶著一絲緊張。
阿德利安坐起來,扶著車沿往遠處看。
暮色中的塔倫米爾,像是一個正在緩慢流血的傷口。鎮子的輪廓在昏暗的天光中若隱若現,幾處房屋還在燃燒,火光在廢墟間跳躍,把周圍的一切染成了暗紅色。空氣中飄來一股焦糊味,混著血腥和塵土的氣息。
赫尼騎馬從隊伍前面折返回來,停在阿德利安的馬車旁邊。他的臉色比出發時更凝重了,嘴唇抿成一條線,眉頭皺得像刀刻的一樣。
「到了。」他說,「你先別下來,我讓人進去探探路。」
阿德利安沒有回答。他盯著遠處那片火光,手指在車沿上輕輕叩了兩下。
兩個新的法術程序已經編譯完畢,隨時可以執行。
他現在需要做的,就是在腦子裡為它們分配兩個快捷鍵。
烈焰風暴——T。
冰霜新星——G。
「準備好了。」阿德利安低聲說。
赫尼看了他一眼,點了點頭,然後策馬向前,對著隊伍喊道:「所有人保持隊形,弓箭手上弦,刀劍出鞘!慢慢往前走,別分散!」
隊伍重新動了起來。車輪碾過碎石,馬蹄踏過塵土,朝著那片火光和濃煙的方向,一步一步地靠近。
塔倫米爾,到了。