[wizs] 戰鬥中的前衛後衛

看板mud_sanc (Sanctuary - 聖殿)作者 (揮淚斬馬雲)時間6年前 (2018/11/26 22:57), 編輯推噓0(005)
留言5則, 1人參與, 6年前最新討論串1/1
我打算把這個固定化。 首先,假設怪物攻擊玩家時,是讀取以下函數: tar=mob->query_current_attacker(); 而該函數長底下這樣: varargs object query_current_attacker(int n) { mixed ats=query_temp("ats"); . . 然後假設 ats 的堆疊是正確的,也就是目前有多少生物在攻擊 這隻 mob,都被堆疊在 ats 裡頭。 這時,問題可簡化成需對 ats 做幾次必要的排序處理。 ats=sort_array(ats,(: sort_pri_guild :)); int sort_pri_guild(object a,object b) { string pa=(string)a->query("pri_guild"); if(pa=="fighter" || pa=="blader" || pa=="slasher") return -1; else if(pa=="mage" || pa=="clerical" || pa=="thief") return 1; else return 0; } 以下是線上隨便抓 20 個玩家的驗證結果: ralfa fighter hulk fighter blademonk blader juliannohl slasher salvis slasher garnettil slasher wan blader fencer blader keer slasher ailano slasher fredman blader ido fighter freija fighter newking slasher <= 到這裡為止都是所謂的前衛 parasite mage <= 從這裡開始都是廣義的後衛 asellus clerical songb clerical stephanie clerical kindle clerical terryw knight 也就是說,我先看主職業,只要是攻擊該怪物的對象,主職是 戰、刀、劍三種的,就歸類到前鋒,剩下的就歸類到後衛。 接下來:我怎麼隨機從前衛裡頭產生攻擊對象? i=0; foreach(ob in ats) { pri_guild=ob->query("pri_guild"); if(pri_guild=="fighter" || pri_guild=="blader" || pri_guild=="slasher") { i++; continue; } // 全體隊員都不是戰、刀、劍主職時 if(i==0) i=sizeof(ats); return ats[random(i)]; } 以下是驗證: 選中的對象 salvis slasher 選中的對象 keer slasher 選中的對象 garnettil slasher 選中的對象 hulk fighter 選中的對象 ailano slasher 選中的對象 fredman blader 選中的對象 fencer blader 選中的對象 hulk fighter 選中的對象 wan blader 選中的對象 wan blader . . 上面的設定有以下的好處: 一、兩人以上組隊,只要有隊員主職是戰、刀、劍時,怪物就會 優先打這些隊員。 二、兩人以上組隊,全體隊員都不是戰、刀、劍主職,或全體隊   員都是戰、刀、劍主職時,每個隊員都可能被怪物打到。 三、若要更合理一點,應該要把[騎士]也加進前鋒。 四、該設定實裝後,就能接著實裝「斷法」的設計,只要玩家被 呼叫到 receive_damage,就會移除堆疊的 special_attack 資料串,就相當於被斷法(而且CD時間還在)。 五、因此理論上,應該先把法術攻擊全面 special_attack 化。 六、全面 special_attack 化可帶來另一個好處,就是施法時間 可以延長,我打算至少延長 1 秒。 七、該設定實裝後,可拉高怪物的攻擊頻率、以及增加全體攻擊 的類別。 八、後期全面實裝後,就能將特攻、fist 等也 special_attack 化,玩家基本上只要不被怪物打到就不會斷法,而 sanc 會 提供多種不被打到的方法。(比方法師上盾) 九、我會跟著實裝的設定是群式怪物會 n 連擊,n 與怪物隻數 有關。 其中第五項應該要是最優先事項。 總之以上全部實裝後,玩家組隊時至少會想一下要組什麼樣的成 員,而不是無腦組,但也不會花你太多時間去想。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.106.224 ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1543244265.A.019.html

11/26 23:00, 6年前 , 1F
cast all
11/26 23:00, 1F

11/27 13:52, 6年前 , 2F
視情況還可加入戰鬥中行動不能(自動變後衛)
11/27 13:52, 2F

11/27 13:53, 6年前 , 3F
例如魔龍的咆哮廣範圍全體攻擊,被吼到的變行動不能y
11/27 13:53, 3F

11/27 13:53, 6年前 , 4F
假設隊員除了牧師其它都倒了,那牧師就會變成怪物攻
11/27 13:53, 4F

11/27 13:54, 6年前 , 5F
擊的主要目標;全員都倒時,才會隨機找一個打
11/27 13:54, 5F
文章代碼(AID): #1R_0df0P (mud_sanc)
文章代碼(AID): #1R_0df0P (mud_sanc)