我要改 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