精華區beta mud 關於我們 聯絡資訊
這東西 sanc 有,以前的大神寫的。嘛,假設現在沒有然後 想做的話,其實也不難。 一般來說怪物都會有一欄叫做 hp 的欄位,當怪物受傷時, hp 就會減少,減少到 1 以下時就陣亡。 那假設有一隻怪物我們現在當它是群式怪物,隻數是 100, 則有個簡單的實裝做法如下.. 1.將玩家對該怪物的攻擊「實際傷害」/ 100 比方說該群式怪物設定血量為 10000,則因為有 100 隻  ,總血量實際上就是 100 萬,則當該群式怪物受到 3萬 的傷害時 a.顯示上依舊為「該怪物受到 30000 的傷害」 b.然後對 30000 做除以 100 的處理 = 300 c.再做血量 10000 - 300 的動作 2.當該群式怪物的血量小於 10000/100 = 100 時 則每受到一次傷害為 n 的攻擊,就減少 n/10000 個隻 數,然後把 n%10000 的值存成 m,m 累加到 10000 時 就再減少一隻,怪物的血量則不變動,維持瀕死狀態。 顯示上則是「該群式怪物陣亡了 x 隻」這樣 3.當該群式怪物的隻數小於 1 隻時 就陣亡。 顯示上則是「一群群式怪物陣亡了」。 細部的設定就依各 mud 設定風格的不同而有不同,例如 你要依隻數初始化血量的 mapping 資料也是可以的,如 hp=query("hp"); for(i=0;i<隻數;i++) hps[""+i]=hp; 然後戰鬥時就隨機抓 hps[""+random(sizeof(hps))] 來 扣血,當 hps[""+i] < 1 就 map_delete(hps,""+i),這 樣也能實現 100 隻怪物有 100 條血條,然後戰鬥中這些 血條也會扣血,血條扣到 0 時怪物就陣亡血條就消失, 則自然戰鬥到最後隻數會越來越少,這樣的模擬是更趨近 於真實的。 但不管如何,平常的攻擊情況,就類似這一整群怪物很平 均地接受玩家的攻擊,而且最後也很平均地接近瀕死狀態 ,然後才一隻一隻地陸續陣亡這樣。 群式怪物的好處自然就是減少物件存在數,例如極端的例 子.. > 礦場深處 明顯出口有: south, east, 和 west. Lv180.一群牛頭人衛士(Minotaur Guard) [81隻牛頭人衛士] Lv189.一群牛頭人衛士(Minotaur Guard) [91隻牛頭人衛士] Lv192.一群地獄穴居人(Infernal Troglodyte) [229隻地獄穴居人] Lv181.一群梅杜莎皇后(Medusa Queen) [103隻梅杜莎皇后] Lv180.一群梅杜莎皇后(Medusa Queen) [97隻梅杜莎皇后] Lv221.一群紅龍(Dragon) [17隻紅龍] 上面看起來有幾百隻怪物塞在同一個房間,但實際上只有 六個物件。 一點心得,跟大家分享。 Laechan@Sanc -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.157.53
takomalu :一群紅龍同時火焰吐息一定很壯觀... 106.187.98.173 04/10 10:48
takomalu :群怪是同時揍一下 然後傷害x數量? 106.187.98.173 04/10 10:55
這屬於各 mud 細部設定的部份,例如要擬真的話,假設一群 有五隻,那就是一回合攻擊為五連擊這樣。 那假設要簡易模擬,就是在 mob 本身做 ::create() 時,將 「隻數」帶進設定裡頭,例如當隻數 5 隻時,怪物的力量、 敏捷等設定就跟著調整,在做回合攻擊時傷害也跟著增加這類 的。 (也就是說一回合還是只打一下,但是會比同等級 mob 打還痛) 個人是認為群式怪物還是要 follow 設定合理性,所以我上面 才會說那是「極端的例子」,若設定合理,個人比較支持一回 合依隻數決定連擊數的擬真做法。 ※ 編輯: laechan 來自: 210.61.157.53 (04/10 12:04)