作者laechan (小太保)
看板mud_sanc
标题Re: [圣殿] 来聊一下 party kill 的问题
时间Sun Jun 22 23:23:30 2008
※ 引述《bahatest (sanc小牧师)》之铭言:
: ※ 引述《laechan (小太保)》之铭言:
: : 目前圣殿的设定是...
: : 玩家: 可指定攻击对象.
: : 不指定时, 攻击房间特定顺位的对象.
: : 例如玩家进入房间时,房间怪物顺位为 a b c, 三只怪物也同时
: : 间对玩家进行攻击,则玩家不指定对象时的第一攻击目标就是 c
: : 这部份玩家有意见的话可提出。大家都依这个设定的话,进房间
: : 时就可以快速集中火力先清掉同一只怪物,然後依序第二只、第
: : 三只...大家的 default 选择都会一样,这是采特定顺序的原因
: : 所以讨论时分为...
: : 1)是否需要存在一个 default 设定
: : 2)顺序问题
: force,slash,blade那些顺发的sk放出时基本上都能指定到怪物
: 但spell跟fist这两种延迟一轮才放的
: 很容易在要放的时候发现目标不存在
: 延迟一轮放的部份如果不指定目标
: 能不能在放出来时才选择目标
以 fire spell 为例, 攻击改内回後...
ppl->shut(str,damage+random(100),hit,({"fire","magic"}),target,times);
这个 target 如果在实际攻击时仍存在, 就会攻击该目标, 如果
不存在...
varargs int shut(string msg,int damage,int chance,
mixed kinds,object tar,int times)
{
// 怪物不存在时
if(!tar)
// 读取玩家正在攻击的其它怪物
if(! tar=me->query_current_attacker())
// 没有其它目标, 就不攻击了
return 1;
if(!times) times=1;
if(!kinds)
SHUT_D->shut_tar(me,tar,msg,damage,chance,({"dam","physics"}),times);
else if(stringp(kinds))
SHUT_D->shut_tar(me,tar,msg,damage,chance,({kinds,"physics"}),times);
else
SHUT_D->shut_tar(me,tar,msg,damage,chance,kinds,times);
return 1;
再看 shut_tar 那边...
if(!me || !tar) return ;
所以实际上确实是「若攻击目标已经不在了时」, 就不攻击了.
若 n 连发的攻击中怪物第 m 发(m<n)就死了...
while(times-->0)
{
if(!me || !tar) return ;
那同样的攻击也会停止.
我猜当初这麽设的原因是...
1)减少负荷, 也就是 me->query_current_attacker() 的读取动作.
2)这原本就是新 shut 的设定, 也就是 n 连发击向同一目标, 其中
当怪物已经死於第 m 发时, 剩下的「不应该」去打其它目标.
3)跟乱击性质的技能做区别, 例如龙巢闪.
不过我发现 fire spell 的熟练度计算有问题, 最近会更正.
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.100.50
1F:推 bahatest :所以有改内回的spell就不会念完放不出来吧? 06/23 02:17
2F:→ laechan :若 spell fire 时,「有攻击对象」就会攻击,无攻击对 06/23 10:17
3F:→ laechan :象(会判断)就不攻击了; 另外,n连击中若第m下怪就死了 06/23 10:17
4F:→ laechan :攻击也会中止. 06/23 10:18