作者laechan (小太保)
看板mud_sanc
标题[法师] 魔法阵初期效果及级数设定说明
时间Tue Jun 7 16:41:52 2011
最快这个礼拜实装(因为要改很多法术档)。
决定不给魔法阵的效果
特攻型技能威力全部强化 <= 决定给主职骑士的阵法使用
节省法力 <= 决定都给杖类武器做为特色效果
消掉怪物的 goldfield、dodge、自体护盾 <= 可能也会给主职骑士的阵法使用
(这一个主要是魔法阵的名字难取)
初期开放效果及暂定级数设定
攻击法术练习魔法阵 Lv.1
辅助法术增幅魔法阵 Lv.2
攻击法术增幅魔法阵 Lv.3
缩短大绝再施放时间魔法阵 Lv.4
空间封闭魔法阵 Lv.5
效果及限制参考值
魔法阵技能值、magic heart 技能值、runes 技能值、mag 值
各魔法阵简易说明
1.攻击法术练习魔法阵
这个魔法阵一出现,玩家就可使用 spells 指令,该魔法阵及
该指令会提供足够的讯息让玩家知道 spells 怎麽用。可以由
高阶法师施展魔法阵来让低阶法师练习攻击法术。
(因为在该魔法阵存在期间,会持续消耗施放者的 sp)
另外,玩家如果在被攻击状态就无法使用 spells 练习魔法。
玩家能藉这个魔法阵练上去的技能值,跟「施展者」的上述所
列参考值是相关的。 <= 给高阶法师一些被依赖价值
2.辅助法术增幅魔法阵
因为所有的法术档,当初都有 inherit /d/spell/spell_d.c
,所以 Lv2 跟 Lv3 的效果就很好写,以 holy_body.c 为例..
========================================================================
tell_object(target,HIW+user->query("sex_name")+HIW"觉得自己像是被天上"+
"的神灵所保护着一样,心里觉得非常地幸福!\n"NOR);
fel=user->query("stat/fel");
if(user->query_temp("heal_time/clerical heart"))
heart=user->query("skill/clerical heart");
LEVEL=user->query("level");
g=user->query("guild/clerical");
t1=LEVEL/20+g/3+fel/100; // 10+20+20 = 50
t2=lv*(fel*2+heart)/3000; // 10x(2000+4000)/10000 = 60
much=t1+t2;
if(user->query_temp("mc_effect")>time()) // 最初的简易判断
if(mc=present("特殊魔法阵id",environment(user)))
much=mc_effect_2(mc,much); // return 新的 much 值回来
========================================================================
把 mc_effect_2 函数写进 spell_d.c 里头,再在每个辅助法术
档中都加进上面三行,就可以增幅所有辅助法术的 much 值。
3.攻击法术增幅魔法阵改法类似上面
4.缩短大绝再施放时间魔法阵
这个的做法非常简单,因为魔法阵有心跳,在每轮心跳时间(或者
是每轮 check_time 时间)都做底下的动作..
obs=all_inventory(env);
times=time();
foreach(env in obs)
if(env && userp(env) && 满足其它条件)
{
// 底下只以大剑技为例
t=(int)env->query_temp("time_record/slash_crack_slash");
if(t>0 && times - t > 0 && times-t < 300) // 表示还被限制不能再发大剑技
env->set_temp("time_record/slash_crack_slash",t-1); // 缩短一秒
}
这样在魔法阵持续存在的时间里头,再施放大绝的时间就会被缩
短,这样理论上最多就可缩短一半的时间。
5.空间封闭魔法阵
这个有两种做法。
一种做法是看这个房间有几个出口,就 clone 出一个主魔法阵,
以及 n 个(n=出口数)子魔法阵,由主魔法阵控制该房间的怪物走
不出去,然後将子魔法阵各别移动到与该房间连结的所有房间,
由这些子魔法阵控制怪物无法移动到该房间。
(空间封闭魔法阵对玩家无效)
但是这种做法缺点颇多,不采用。
另一种做法就是只 clone 出一个主魔法阵...
a.由该魔法阵的 init() 函数来控制怪物一走进来就马上移往别
的房间。(采 move_to 移动法避免连续 move)
b.该魔法阵有 add_action("go_xxx","go"); 该房间的怪物只要
试图用 go 要走去别的房间就会被禁止。
而原则上假设该怪物会「瞬移」,我想采取的做法是个案处理,
因为采通案的话有两种方法..
a.修改 move 函数 <= 最好不要
b.为瞬移增加专用函数 move_xxx <= 这个其实可行
但基本上会瞬移的怪是不多的,因此个案处理即可。
然後所谓的「封闭」还有很多种解释,这个就由其它 wiz 或玩
家有想到时就建议出来,或实际去修改之。
还未开放的魔法阵效果
1.n个法师合力施展型魔法阵
这n个魔法师的魔法阵都必须达到 Lv.n 才行,所以原则上会
把这个魔法阵设为 Lv 7~Lv 8。
主要是合力施展後的「效果」要定为什麽?要举例的话,例如
「破坏房间的所有陷阱」这一类的,类推的话就类似房间型的
魔法阵。别的例子的话例如合力打开了通往OOXX的魔法阵之类
的。
这种魔法阵的施作方法,假设要三个,则写法如下..
mixed obs=all_inventory(environment(ppl)),caster=({});
t=time();
foreach(ob in obs)
if(t-(int)ob->query_temp("cast_magic_cycle_级数") > 有效时间内)
caster+=({ob});
if(sizeof(caster)>=满足条件人数)
{
foreach(ob in caster)
ob->delete_temp("cast_magic_cycle_级数");
执行合力施展魔法阵及相关叙述;
}
else
ppl->set_temp("cast_magic_cycle_级数",time());
2.暂定契约魔法阵
这个很可能定为 Lv6 or Lv7,暂定契约专用,有这个魔法
阵在的时候可以使用特殊的指令。
若未来魔法阵有新的效果时,就不会有暂定契约魔法阵。
(也就是暂定契约不需要施放魔法阵、或用 Lv10 替代为暂定契约魔法阵)
3.进阶二转魔法阵
这个确定是 Lv9。
结论:所以目前实际上还缺一个魔法阵效果。
我目前有想到一个,叫做回家魔法阵,你召出这个魔法阵,
就可以透过这个魔法阵直接回天空城之家。
它有两种做法..
一、单纯回家
二、你可以回家 n 秒,n 秒後只要你还在家里,就能再回
去。但是它的限制很严,你不能离开天空城区域以外的
地方(例如可以去农场),不然它就视为你离开过家里,
这时就不能再回去(像买药水、签乐透等)
以後天空城之家还会扩增用途,所以这个魔法阵其实还蛮值
得做的。
总之,大家有意见都可提出。魔法阵的内容就像这篇写的这
麽长,这是没办法的,希望主职法师的人都可以看过一遍,
了解我想做的「具有圣殿特色的魔法阵」是什麽样子的。
Belldandy.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.83.14.146
1F:推 justinj :看到练习的我想到 幻影术,能量盾...这些要怎麽升.. 06/07 18:03
2F:→ laechan :喔? 这些没有排进魔法图书馆的魔法书里头? 06/07 20:05
3F:→ laechan :那我再想个好方法让它们能升好了 06/07 20:05
4F:推 justinj :雷盾,暂定契约... 06/07 21:06
5F:→ justinj :我觉得可以替换成水系法术,暗系法术..(连极大一起换) 06/07 21:07
6F:推 justinj :水系是..没有这种属性攻击,闇系是只有一招有,而且与 06/07 21:11
7F:→ justinj :光系相对.... 06/07 21:13
8F:→ laechan :那些不急.现在有火系跟冰系法术攻击,我比较怀疑现在 06/07 21:31
9F:→ laechan :能轻易地交待清楚「两者之间究竟有何不同」? 06/07 21:31
10F:→ aiggkimd :魔法阵来个整队瞬间移动也不错 06/07 22:54
11F:→ laechan :这个是 teleport & 牧师 return spell 的部份 06/07 23:15
12F:→ laechan :teleport 是大魔导士的技能之一 06/07 23:15