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