[閒聊] spell xxxx -seal
我想這應該是最簡單的寫法,不過這篇只是閒聊,邊聊邊挖
程式碼出來研究,若可行的話今明兩天就先寫這一部份。
(這是針對封印術的)
// 取得使用者的技能資料
if(sscanf(str,"'%s' %s",skn,tar)==2 || sscanf(str,"'%s'",skn));
else if(sscanf(str,"%s spell.%s %s",skn,string_lv,tar)==3 ||
sscanf(str,"%s spell.%s",skn,string_lv)==2);
.
.
在這一大堆東西的前面先做一次 sscanf
if(sscanf(str,"%s -seal",str)==1)
seal=1;
這樣其它部份就可以完全套用 _spell.c 的判斷,然後在最
底下這樣做..
if(seal==1)
{
// 級數 技能值 連擊數 技能名
return (int)skob->start_seal(me,lv, skill, clients,skn);
// 原先的程式段在底下
else
{
if((string)me->query_temp("cmd_auto")=="spell")
me->set_temp("cmd_auto_string",str);
me->set_temp("cmd_cast_data",
({target,skob,lv,skill,clients,"spell "+str}));
return 1;
}
額外的判斷則是看 skob 有沒有 start_seal 函數,沒有的
話當然就不能用 -seal 語法。另外就是玩家有沒有學封印術
,沒有的話當然也不能用。
嘛,理論上是可行的。
基本上封印術也已經自法師的技能表中移除,這意思就是這
東西「只給秘印賢者用」,我預計它的效果會有兩部份..
一、大幅提升使用該系法術的傷害能力
二、大幅提升 en 攻擊速度(一回合攻擊次數)
三、其它額外效果(比方在封印術式狀態會比較容易怎樣、
或是比較不容易怎樣、或是可施展特殊的什麼之類的)
四、挑一個屬性來加(con/dex/mag/其它)
那我不想為它寫 release。(其實要寫也可以)
這是因為它基本上已經提升了法術的威力,封印後的每一擊
其實都會相當於解放時蓄積的威力。
我個人是覺得 fill/release 還是寫成獨立的系統為宜,然
後讓所有的[主職]法師(比方有學到 runes 的)都可以使用這
樣。
原則上關鍵的效果段落如下..
me->temp_mod("stat/xxx",值,"seal xxx",時間);
這樣就可以讀 ppl->query_temp("heal_time/seal spell")>0
來判斷是否有在作用,玩家按 a 也可以得知剩餘作用時間。
seal xxx 則是用來判斷你正在封印的是哪一個法術,原則
上只要是能用 spell 施展的法術應該都要可以封印,但實
務上只會開放 fire/ice/thunder/light 等。
總之,理論上可行。晚點來寫另一個。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.61.157.53
→
07/10 23:05, , 1F
07/10 23:05, 1F
→
07/11 02:17, , 2F
07/11 02:17, 2F
→
07/11 02:18, , 3F
07/11 02:18, 3F
→
07/11 02:18, , 4F
07/11 02:18, 4F
→
07/11 02:18, , 5F
07/11 02:18, 5F
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章