Ticket #41430

騎乗した状態で攻撃した騎乗可能モンスターに乗ってしまう

Open Date: 2021-02-02 21:32 Last Update: 2021-02-05 20:27

Reporter:
Owner:
Type:
Status:
Closed
Component:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
2

Details

騎兵で変幻の魔公(テレポート魔法on)に乗った状態でヘル・ワイアームに攻撃したところ、2ターン攻撃した後に火炎ブレスを食らった時点で
おそらくヘル・ワイアームに乗騎が変わっていました。その時点で乗騎が変わったのに気付かず、
装備の警告(おそらく乗っているヘルワイアームからのブレスが危険なので)が発動したのでテレポートしたところ、
テレポート先の近くに変幻の魔公がいました。乗っているヘル・ワイアームは敵対したままで、移動は自由にできますが@に魔法を使ってきます。
また、加速は変幻の魔公に乗っていた時から変わっておらず、離れている変幻の魔公が加速の魔法を使った際(乗馬中)と表示されています。

Ticket History (3/10 Histories)

2021-02-02 21:32 Updated by: ironside
  • New Ticket "騎乗した状態で攻撃した騎乗可能モンスターに乗ってしまう" created
2021-02-02 21:36 Updated by: dis-
Comment

敵対モンスターに乗馬している状態を確認しました。調査します。 上記現象を再現したいので、直前のセーブデータを保管できたり、再現する手順を用意できたら教えてください。

2021-02-02 23:47 Updated by: taotao
Comment

似た現象として、変幻の魔公に乗ったままテレポート巻物を読むと魔公が (乗馬中) のまま分離しました。 本件の原因の全てではないかもしれませんが、問題のコードは特定したので書いておきます。

spells-teleport.c の teleport_player() 内の以下のコードですが、v2.2.1 (spells3.c 481行目) と判定が逆になっています。 ここは本来「@から距離1以内の乗騎でないモンスターがテレポ追尾を持っていたら追尾する」というロジックですが、判定が逆なので乗騎がテレポ追尾を行ってしまい、結果として乗馬中のまま分離してしまうようです。

if (tmp_m_idx && (creature_ptr->riding != tmp_m_idx)) {
continue;
}

2021-02-03 07:24 Updated by: deskull
2021-02-03 20:20 Updated by: ironside
Comment

<報告用セーブデータ0203>アップしました。 敵に乗ることに関しては再現はできました。 taotao氏がご指摘の通り、変幻の魔公に乗った状態でテレポートすると乗馬状態が継続したまま近くに変幻の魔公(乗馬中)が現れます。 この表示がおかしい状態は一度乗馬から降りるコマンドをしてから魔公に乗りなおさないと直りません。 ここで乗りなおさずに分離したまま騎乗可能モンスターに攻撃すると、時々そのモンスターに乗ってしまうようです。 最初の報告の事例の際も、戦闘前に気づかないうちにテレポートで魔公が分離していたのかもしれません。 データはテレポで魔公と分離後、ワイアームを殴るために隣接した状態です。

2021-02-05 17:16 Updated by: dis-
Comment

調査結果を記載します。

テレポート追尾処理のフラグ反転によりridingフラグを維持したまま乗馬と分離することがある件はtaotao氏の報告通りです。

敵対モンスターと重なってしまう現象ですが、ridingフラグTRUEのplayerへの攻撃処理に原因があります。

ridingフラグTRUEのplayerへの攻撃は1/2でキャンセルされ、乗馬への攻撃処理に移行します。

乗馬への攻撃処理の開始時にはモンスターのdo_moveフラグがTRUEで、処理の途中でdo_moveフラグをFALSEにしています。

ridingフラグTRUEかつ同座標に乗馬がいない場合、この処理が行われずdo_moveフラグTRUEが継続します。

その結果、モンスターがプレイヤーと同座標に移動します。(monster-move.c / process_monster_movement() )

結論として、taotao氏の指摘箇所を修正して乗馬分離の件を解決すれば敵対モンスターと重なる件も改善します。

https://osdn.net/projects/hengband/scm/git/hengband/commits/3de4d7dfe19999dfbc0ba41c991ae6566f163e3c

修正コミットをしたので確認お願いします。

2021-02-05 20:24 Updated by: deskull
  • Details Updated
2021-02-05 20:27 Updated by: deskull
  • Status Update from Open to Closed
  • Resolution Update from None to Fixed
Comment

修正箇所確認の上マージしました。完了とします。

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login