看板 mud_sanc 關於我們 聯絡資訊
int receive_damage(int damage) { object frog=this_object(); frog->delete_temp("time_record"); if(kk<1) { this_object()->set_temp("shield2",({500000,1,frog,frog})); return 1; } kk=0; ::receive_damage(damage); return 1; } 這隻怪最後執行到要真正扣血的部份時,它會判斷自己身上的一個值 kk,若 kk<1 則... 一、補盾 二、中止扣血 若 kk 不小於 1 時,讓 kk 重新歸 0 而且造成傷害,所以下一輪攻 擊它又會中止扣血。 這隻怪一開始的 kk 是 0。 mixed shield(object me,object tar,int dam,string type) { dam = dam / 4; if(dam < 7777 ) dam = 0; if(dam > 77777 ) dam = 0; return ({kk=dam,"但是都擦身而過,被閃開了!"}); } 這是它護盾格擋的執行部份。理論上被 holybell 過的怪物不會執行 護盾格擋,所以該怪物的 kk 永遠是 0 = 永遠不會實際上損血。 以上。 解決方法: 我可以讓 holybell 不跳過所謂的護盾格擋,而是在護盾格擋後才判 斷 holybell 是否存在。 但是這樣 wiz 仍舊可以在自訂的 shield 函數以及 receive_damage 中動手腳,結果是一樣的。 但是上述設定違反「holybell 放下去不能對玩家造成負影響」的最 優先原則,所以修改方式有三... 一、holybell 取消放下去後會解除怪物防禦狀態的功能,單純用來   解身上的不良狀態。 二、怪物身上有 holybell 參數時,不呼叫 receive_damage 函數,   而是呼叫另一函數來執行扣血。 三、deus 將該隻怪物修改為 selfshield2 型的怪物,取消自定的 receive_damage 函數或修改該函數的判斷。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: laechan 來自: 220.134.34.90 (01/29 07:44)
laechan:我想先參考 deus 的決定. 01/29 10:17
mishaer:推二;若選三治標不治本,且要玩家打過怪才知道,再告知wiz修 01/29 12:33
mishaer:改的話..時間上部份會感覺比較沒效率.. 01/29 12:34
bahatest:3沒意義,這樣新怪出來玩家還是不敢放 01/29 13:46
bahatest:推1吧,至少不用跟作者玩心理戰 01/29 13:51