記事一覧

取巻きモンスター挙動

ファイル 286-1.jpgファイル 286-2.jpg
※今回は中途半端なものとなっていますので、適用はオススメできません。

現在のAthenaでは、取巻きモンスターは召還者の9x9マスに入った時点で移動を止めます。
そのため、召還者が移動すると取巻きは範囲内ギリギリの位置で移動を止めてしまうため、取巻きモンスターが1箇所に固まりやすいです。
本鯖の仕様では「範囲外に外れた場合、範囲内のランダムな位置まで移動」となっています。
これを実装させようと今回弄ってみたいと思います。

改造対象はmob.cの722行目あたり

    dx=mmd->bl.x - md->bl.x;
    dy=mmd->bl.y - md->bl.y;
    if(dx<0) dx+=(atn_rand()%( (dx<-3)?3:-dx )+1);
    else if(dx>0) dx-=(atn_rand()%( (dx>3)?3:dx )+1);
    if(dy<0) dy+=(atn_rand()%( (dy<-3)?3:-dy )+1);
    else if(dy>0) dy-=(atn_rand()%( (dy>3)?3:dy )+1);

を次のように置き換えてみました。

    dx=atn_rand()%9-4+mmd->bl.x - md->bl.x;
    dy=atn_rand()%9-4+mmd->bl.y - md->bl.y;

これで範囲外の場合、範囲内のランダムな位置に収まろうとします。
が、いくつか問題点が発覚しました。
召還者との距離が5マス以上離れてる時点で取り巻きが移動します。
ですが、召還者の移動距離が長かったりすると、範囲内に落ち着いた取り巻きがまた5マス以上離れたりして再度移動をしたりします。
その動きがあまりにも不自然だったり。

安易に考えた改造内容なので、まだまだ改良の余地がありそうです。
本鯖のMob同士の同位置移動回避も実装しないといけなかったり。
そういえば、本鯖の取り巻き範囲って9x9だったかな・・・
また色々と手を加えたりしていきます。

コメント一覧