diary

I like Hatena Star with a text selection.

2025-05-22

github.com

Elinのmodを作っていた。戦争依頼で敵を呼ぶ角笛を無限に吹けるようにするmod。

if文にev.wave % 5 != 0という条件があって、5 waveに1回角笛が吹けなくなっていた。これを常にtrueにするために、Harmony Transpilerという仕組みを使ってC#のILを書き換えていた。

stackへの5のpushをpopに、%に対応する命令をtrueのpushに置き換えて、stackを調整しつつ常に条件をtrueにしている。

modを作るのってこんなことするのだなあと学びがある。メソッド全体を置き換えるのに比べてゲーム自体のアップデートへの追従や、他modとの組み合わせで問題が起きづらくなるらしい。 コンパイラの最適化とかでILが変わったりしてmodが動かなくなるとかありそうでちょっと怖い。