作者laechan (小太保)
看板mud_sanc
标题Re: [建议] 副本相关
时间Wed Apr 23 11:21:17 2014
今天修改 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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.61.157.53
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1398223280.A.7C3.html
※ 编辑: laechan (210.61.157.53), 04/23/2014 11:45:15
※ 编辑: laechan (210.61.157.53), 04/23/2014 16:02:57
1F:→ laechan :突然发现 pexp.c 不用改(因为经验值会随等级变动) 04/23 16:03
2F:推 Fnd :我想人多难打应该是公式很单纯的用乘法吧(猜测 04/23 19:35
3F:→ laechan :今天有想到,应该至少可分为「单人」及「非单人」 04/23 19:46
4F:→ laechan :单人副本「其它人无法事後加入」只要加这个条件即可 04/23 19:47
5F:→ laechan :而多人就泛指两人以上,成员可来来去去 04/23 19:47
6F:→ laechan :这个会加进明天的 coding 项目 04/23 19:47