作者laechan (小太保)
看板mud_sanc
标题[闲聊] spell xxxx -seal
时间Tue Jul 10 15:28:00 2012
我想这应该是最简单的写法,不过这篇只是闲聊,边聊边挖
程式码出来研究,若可行的话今明两天就先写这一部份。
(这是针对封印术的)
// 取得使用者的技能资料
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
1F:→ AresMars :seal不是说要废除了吗XD 07/10 23:05
2F:→ laechan :忘记哪篇有写 seal 要全部拨给秘印贤者,完整化封印术 07/11 02:17
3F:→ laechan :式(含术式武装跟术式解放),总之起始都是 spell -seal 07/11 02:18
4F:→ laechan :做法总之有两种 1.区别封印术式跟术式武装 2.合并 07/11 02:18
5F:→ laechan :(我是怕单纯的封印术式写出来会跟魔法武器类似) 07/11 02:18