Re: [建议] 副本相关

楼主: laechan (挥泪斩马云)   2014-04-23 11:21:17
今天修改 create_instance 函数:
varargs int create_instance(string ppl_name,mixed usr,string diff)
diff 是所谓的“难度”,当 create_instance 带这个参数时,它会
将这个参数设到每一个 iroom 中,供 init_instance 及其它函数参
考。
这里就要定义所谓的难度:
一、英文字串
二、默认值为 "normal"
三、比 "normal" 高的是 "hard",我初期会分三阶,分别是hard1、
hard2 及 hard3。
四、不会有 "easy"。
我原则上不采取幻想神域的“单人”“n人”模式。幻想会依玩家选
的是哪一个,决定怪物的难度及血量,其结果是人越多有时反而越难
打,然后又有人数上限,导致..
1.玩家一个人时,选多人副本有时反而自找麻烦
2.玩家两三个人时,选多人副本有时也很难打
3.就算玩家凑足五人,可轻松虐一般等级的五人副本,却不保证可以
 轻松虐困难等级的五人副本,“偏偏又没其它选择”
4.玩家无法烙更多人打同一副本(暗黑三也有相同问题)
所以副本只会分“难度”,不会分“人数”,人数由玩家自己决定,
当然一般还是有上限(例如 follow 组队人数上限),但以攻城战来说
可能就无上限。
然后四个阶段的难度的主要差异(怪物的难度是一定有差的):
1.额外掉宝率。 vobjs_d.c 控制的
2.经验值、熟练度。 /std/pexp.c 控制的
3.最终宝箱可开到的物品数量。 action + 宝箱宣告控制的
4.副本的地图有可能会长不一样。 instance_map2data 决定的
所以 instance_map2data 也加上 diff 参数如下
if(function_exists("instance_map2data",this_ob))
instance_map2data=this_ob->instance_map2data(ppl_name,usr,diff);
目前只有 004.c 有用到,已修改。所以请注意 instance_map2data
要接三个参数。
最后就是如何让难度参数影响生怪以及额外掉宝率,这个只要写个公
式去跑就可以了,例如:
new_level = level + (254 - level) x hard[n] / 100
new_member = member * (100 + hard[n]) / 100
以上的 diff 参数已实装。
> da bear
instance_diff :"hard3"
instance_id1 :"laechan"
instance_id2 :"004"
Laechan

Links booklink

Contact Us: admin [ a t ] ucptt.com