作者laechan (小太保)
看板mud_sanc
标题[程式] shut 修改方案
时间Tue Oct 2 14:07:33 2007
我要改 shut 了, 各位 wiz 有空看一下这篇.
攻击者->shut("攻击叙述",伤害,命中,"伤害种类",目标);
这是现行的格式, 将来改成底下格式...
varargs void shut(string attack_msg,int damage,int hit,
mixed kinds,mixed tars,int times);
这项修改有三个重要目的...
一、让 shut 被呼叫一次即可同时对复数对象做 times 次攻击
tars = ({mob1, mob2, ...})
=> 用同一种攻击去打 mob1 mob2
tars = ({mob1, mob1, ...})
=> 用同一种攻击去打 mob1 n 次
这样可以将写在某些程式中, 以 for 写成的回圈式攻击,
变成用内回的型式去执行.
二、将 kinds 变成 mixed 型式
kinds = ({攻击属性(冰/火/..), 攻击种类(物理/魔法/其它)})
也就是说, 除了既有的攻击属性外, 增加它是物理攻击or
魔法攻击的判断.
一的修改,可以将以往写在某些程式中, 以 for 写成的回圈
式攻击, 变成改用内回的型式去执行, 它的好处是, 如果程式
写的好的话, 现行一回合攻击 hit 数最多 10 次的限制就可
以放宽。
二的修改, 可以区隔物理及魔法攻击, 它的好处是, 某些闪躲
格挡招架技能我只希望它对物理攻击产生作用, 对魔法攻击则
无效果时, 未来就可以做这样的设定.
这项修改理论上今天可以完成, 完成後现有的程式完全不需变
动, 例如某技能..
me->shut("雪剑神剑",100000,1000,"snow",tar);
这时 kinds = ({"snow","physic"}), times = 1(内定)
例如某怪...
frog->shut("天崩地裂",100000,1000,"dam",tar);
或 shut("天崩地裂",100000,1000);
这时 kinds = ({"dam","physic"}), times = 1(内定)
然後就可以修改底下的...
for(i=1;i<10;i++)
shut("天残脚",100000,1000);
改成
shut("天残脚",100000,1000,10);
攻击法术内的...
for(i=1;i<6;i++)
me->shut("巨大火球",100000,1000,"fire",tar);
改成...
me->shut("巨大火球",100000,1000,({"fire","magic"}),tar,6);
今天最主要的目的则用来测试该新呼叫方式可以无痛实装。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.131.252.97