------------------------------------------------------------ spit patch (JNetHack3.4.3-0.2用) 蛇足メモ File:honey**.diff honey_venom**.diff 対応variant:JNetHack3.4.3-0.2用 作成者:Sakusha Shiganai ------------------------------------------------------------ ------------------------------------------------------------ 雑記 ------------------------------------------------------------ 04.04.06(FHS patch, ver0.94) 全パッチをバラバラに管理するのも大変なので、全て1つにまとめてしまう事にしました。 新パッチ名はFHSパッチ (Funny-Honey-Spit patch)。 >[この続きはFHSパッチの蛇足メモをどうぞ。] ------------------------------------------------------------ 04.04.01-05(ver0.94[未公開]) えーと、まずはご免なさい(_ _)。 「長い舌・捕獲球が別の怪物に命中した時、その怪物が死んでも引き寄せようとしてしまう」というバグが判明しました。 現在の手元の版(ver0.94)では直してありますが、まだ公開できる状態ではなく。 なんとか近日中には新版を公開できるようにします。 あ、新版では大王ガマから飲み込み攻撃を、黄金ナーガからテイルアタックを剥奪しますのでご了承下さい。  #紫ワームがLV15なので、LV10で他の特技も持つ大王ガマが使うとバランスとれないかと思い。  #金色ナーガ(魔法を使う)についても同様。 --- 案に煮詰まり、他のパッチ(まだ秘密)にも手を出してみる。  #なかなか公開にもっていけないのは、これが未だにSpitパッチと分離できていないせい。  #独立パッチにするかhoneyパッチに含めるべき内容なのだが。もしくは全て統合か。 その最中、薬の調合がある事を思い出し、レベルダウンの薬に関する調合効果を追加。  #基本的にはレベルアップの薬の逆を行わせれば良いので楽な物。 でもそれではいつまで経っても新版を公開できないので、このままではいけないと、擬似スポイラーの一覧を全面改定。 ダメージtypeをmonattk.hの登録順に並べ直し、登録番号も振ってみる。ランダムSpitの場合、ダメージtypeに隙間(未実装な物)が無い方が設定し易いと分かったので。 それをもとに眺めてたら、幽界の網のアイデアが浮かんだので実装。 その後、テレポートの毒液を実装。こんなの何に吐かせればいいのか検討つかないけど。  #そもそも量子物理学者がどんな代物なのかイメージできないのに、その発展形考えろろと言われても… 毒液の名前が決まらず、試しに「量子場」をWeb翻訳。   Ryoko place …馬鹿野郎… (- -;) まあ、なんとか実装はできましたが。 ------------------------------------------------------------ 04.03.31(ver0.93(続きの続き)) > 怪物>怪物でのAT_TAILのメッセージ表示 なんだ、pline()ではなくSprintf()だったのを見落としてたのか(^^;)。 と言ってる端からAD_WRAPの和訳文のまずい箇所を発見。報告しとこう。 --- AT_TAIL、本当はbigmonstなら相手を薙ぎ倒すとか弾き飛ばすとかさせたいけど、なかなかうまく設定できなくて… そういえば「大ガマの子供」というのも変ですね。ガマの子供はオタマジャクシ(^^;)。武器奪取攻撃を追加したからLV1(ヤモリ並)というのも何だし。 という訳で大ガマ系も再編成。ネーミングは大ナメクジ系と同様に。 それにしても「3すくみ」ってどうやったら実装できるんだろう。うーむ。  #実装上は「怪物の視界内に苦手な怪物が入れば恐怖する」という動作をさせたい。 ------------------------------------------------------------ 04.03.28-30(ver0.93[未公開](続き)) 覚え書き。 本日sourceforgeにてソースの日付を確認、以下のファイルを最新版に差し替え。 src/display.c, src/engrave.c, src/music.c, src/objnam.c, src/read.c dat/jrumors.fal, dat/jrumors.tru include/extern.h japanese/Install.dos japanese/hash.c (new file) japanese/jtrns.c util/makedefs.c ちなみにdat/jdata.baseは既に最新版状態なので差し替えは無し。 dat/jquest.txtも、改行コードはSJIS変換の時に(ソフトの仕様上)同一型に変換されているはずなのでこれも省略。 ( 先日の > 本家JNetHackのスペルミスを2箇所 報告したついでですが。) [>04.03.30 で、報告した箇所も自分で訂正しておいたのでこれもそのまま。] 閑話休題。 --- LVdownとLVup関係、組み終わり。ついでに物体/怪物を探す薬にも投げた時の効果を付与。 test flyに吐かせる。怪物のLVが下がる。倒される。何故か自分に経験値が。 しまった、怪物の死亡判定をxkilled()のままにしてた(^^;)。他の薬を参考に修正。 あと、ohitm()やm_throw()辺りの内容を整理。怪物か死んだ時の二重判定回避処理を後部に持ってきたり、vis等の扱いがぐちゃぐちゃになってたようなので修正したり。 早く鮮血ドラゴンを実装しないとなあ。  #龍の鱗とかその辺を調べる必要有り。 しかしもう1つの目下の目標、舌で武器を奪うのがなかなかうまくいかない(T T)。 大ガマ系には手が無いし振るう鞭も持たせてないから、その辺を回避できないかと色々試してみたけどやはりうまくいかない。発動確率を100%にしても通常攻撃ばかり。ゴブリンはきちんと鞭を振るってくれるのに。 こっちは処理を独自に組むしかないかなあ。爆発型毒液の様に。そうなると接近戦での発動条件をどうしよう。離れている時は「長い舌」自体に効果を持たせればいいけど…AD_WRAP & has_longtongue(ptr)かなあ。まあこの辺はゆっくり考えよう。 --- …と、愚痴りながら実装してたら、エラー続出させたり変数の扱いがまずくて直接的にガリガリ書き込んだりしつつも、最終的には全部成功してしまいました(^^;)。 新たな攻撃方法AT_TAILも実装。テイルアタック、尻尾での薙ぎ払いです。 プログラミングの技術の方は、ptrとmonの扱いに違いがあるらしい事にようやく気づくという体たらくではありますが。 で、先ほど、どの怪物にテイルアタックさせるかを調整して試験。 秩序の侍だと、召喚したナーガ達のほとんどが友好的(^^;)。仕方ないのでオーク達も適当に呼び出して争いの指輪を使ったのですが…しまった、怪物>怪物でのAT_TAILのメッセージ表示がうまくいってない(汗)。 公開はもう少し先になりそうです。 ------------------------------------------------------------ 04.03.26-27(ver0.93[未公開]) > 精霊界に突入する時に、一部メッセージがバグる 直ってないなあ…やはりまだ文字コードの変換忘れがあるのかしらん。 時期を見て、元にしているJNetHackのファイルをツールで全変換して再構築しなきゃ駄目かも。 いえね、只今レベルダウンの薬を実装中なのですが、これの効果に「呪われてると床を突き抜けて(後略)」てのがありまして。 で、特殊階(ゲヘナ最下層やら精霊界やら)での効果も確認しなきゃならんので、その都度特攻かけてるんですよ。当然Wizardモードでレベルアップの薬どっちゃり飲んで+70グレイスワンダー願って(^^;)。  #一度杖やら悪臭の雲やらで最下層の僧侶倒そうとしたらえらい時間がかかった。もうヤダ。 現在の所、PCが投げた時の効果を除いてはほぼ実装できました。  #なお現在の仕様だと、一部の特殊レベルを除いて「下の階に行けない( !Can_fall_thru(&u.uz) )」場合は  #問答無用で即死しまする。  #例外は「下の階は存在するけどCan_fall_thru(&u.uz)ではない」場合(ヴラドの塔etc.)。効果確認を繰り返して  #どの階層を除外するか検討を重ねているのです。 ちなみに対応する毒霧は「若返りの血しぶき」、通常型毒液は「若返りの鮮血」。 毒液も要る訳だけど、全部実装できたら「鮮血ドラゴン(blood dragon)」に吐かせたいと思いまする。 肉は若返りの妙薬に(w)。鱗はレベルドレイン抵抗ですかね。 --- その他の変更といえば、 ・構文を多少整理。特にランダムメッセージの箇所とか。 ・粘液の怪物>怪物の処理で減速効果が非命中時(多分)にも入っていたのを修正。このへん元のソースがぐちゃぐちゃでよく分からなかった部分だし。 ・幻覚の薬やらレベルダウンの薬やらも怪物が拾って投げるよう変更。 その際に見つけたのが「怪物が鞭を利用する」処理。 おお、長い舌に応用すればキャプチャーボールとの差別化ができそう。 --- むう、本家JNetHackのスペルミスを2箇所発見。今日は疲れが溜まってるので、報告等は明日にするかな。 ------------------------------------------------------------ 04.03.23-25(ver0.921 & 戦士パッチ) で、Spitパッチの実装も一段落したので、以前から手がけてみていた3.4用戦士パッチも含めて全パッチを一度にあてたバイナリィを作成する事に。  #自分のパッチは基礎固めのものであって面白みが少なさそうなので、少しは愉しみもと。 一応どのパッチも他とは干渉しないであろう事は予測済み。 Spitパッチのソースに戦士パッチをあてる。Fighter.des以外は成功…あ、以前単独で実装テストしたFighter.desが残ってたからか。 その後honeyパッチをあてる….origファイルのせいで引っかかって停止(- -#) .origを全部叩き消して再挑戦。一箇所を除いて成功。o_init.cか…あら、この残った所はどちらのパッチにも同じ構文を押し込んでた所じゃない。しかも不確定名に関するものだから(04.03.04-(ver0.88)参照)今は有効じゃないし。削っておきますか。 と、色々有ったけどほぼ問題なくパッチ当てとコンパイル完了。その後は、全パッチ実装バージョンのバイナリィの動作検証と称して、Wizardモードで戦士で遊んでおりました(^^;)。あくまで検証用なので、Wizardモードの便利機能はほとんど使わず(ストレスたまった時に多少使う程度)。死にまくってますが。 一度クエストに突入したら、Fig-fila.lev(だったかな)が無いよと言われて故郷が単なる迷路に(滝汗)。もしかしたらコンパイル時に以前の.levファイル類が残っていると、新たには作ってくれないのかも。怪しい後天的生成ファイル(.lev等)を色々叩き消し、Fig-fila.levの生成を確認しつつ再コンパイル、再度最初からプレイ。 とりあえず故郷に入れる所までは確認。LVが足りなくて追い返されたけど。 あ、そうそう、もしかしたら運命の大迷宮から精霊界に突入する時に、一部メッセージがバグるかもしれません。ただその後、後天的生成ファイルを色々消して再コンパイルしているので、直っている可能性もありますが。 ------------------------------------------------------------ 04.03.22-23(ver0.921)[未公開] むう、自作のRJNH用jdata.baseを新たに組み込んでみたけど、アイテムや地形に対しては自動では詳細が表示されないのか。手入力しかないとは…  #ちょっと色々試してる時にデフォルトのjdata.baseに戻ってしまってたですよ。 閑話休題。 ---   若い黒ドラゴンはブラックホールを吐いた! -more-   ブラックホールは消滅した! -more-   いらっしゃい!black hallへようこそ! …んな訳無いですよね(^^;)(_ _)。kokaさんご指摘どもです。 で、その後は状態異常系の毒液のメッセージ表示をあちこち修正しつつ、幻覚状態に陥った時のメッセージにも手を加えておりました。 最初は1/3ずつの確率で「従来のセリフ」「Rogueでのあのセリフ」「新セリフ類」と分岐させていたのですが、30本近く幻覚の薬を飲んでみても「新セリフ類」が全然出てこない。 乱数の設定を間違えたのかと思い先の2つの確率を1/4にして四十数本飲んでも駄目。コインで考えれば表ばかりが出ている状態。世間一般ではイカサマと言います。 やはりrnd()に隔たりがあるのかなあ…以前(吐く毒液の種類分岐)にも感じた事だけど。 なので、分岐の為の乱数が2つ設定されているのは仕様です。バグでも書き間違いでもありません。 その後も色々セリフを調整。一時rn2()の内容を間違えてて   ワーオ!ここってワンダーランド?見え とか出てたりしてたけど(^^;) 注)rn2(n)は、0から(n-1)までの乱数である。 (The JNetHack Home Pageのスポイラーより) ナメクジ系を実装。…しまった、大王が速度2ではさすがに遅すぎたか。  #今は3,4,5としてるけど…色々食べるブロッブ系と同じでは遅すぎるかなあ。 それと捕縛系(AT_HUGS)の攻撃を実装してたけど、他の攻撃が1回では繰り出す様子無かったのでこれも修正。  #直接攻撃を2回行って2回とも命中すれば捕縛できる模様。 --- で、以前に実装失敗した遠隔捕縛ですが、悔しかったのでその後ちょこちょこいじってたら成功しちゃいました(笑)。 怪物>怪物の場合はohitmon()ではなくm_throw()に処理を挿入して処理。 まだ色々課題はありそうだけど(懸案メモ参照)、とりあえず実用にはなりそうなので、銀鷹復活&大ガマ系を実装。 双方の重量によっては逆に捕縛者の方が相手に引き寄せられてしまうとか(長い舌限定)、引き寄せたと同時に飲み込んでしまう(これも長い舌限定。それともAD_DGST(消化)用に別途実装の方がいいのかな)というのも面白いかもしれないけど、今はまだ何とも。 そうそう、分解/即死型の毒液、通常型は虚弱の毒液で代用する事にしました。たまにblack hall,もといblack holeが飛んでいく。相変わらず吐く怪物がいませんが。   #個人的には「若い黒ドラゴン」以外に適任な怪物はないと思うのですよ。   #蛇足メモ04.03.19-20参照。 ------------------------------------------------------------ 04.03.21(ver0.92) 昨日は時間が無かったのと多少の手直しをしたかったのでUPを見送りました。 で、その後に手直ししたのは:  ・新実装のナーガ達も雛→成体に成長するように設定  ・幻覚毒液の処理をm_throw()からthitu()に移動し、幻覚期間をダメージ量に比例させた  ・ついでに幻覚にかかった時のメッセージを増加 です。 その後、遠隔捕縛を実装できないかと試してみたけどうまくいかず。そもそもohitmon()には発射怪物の情報が含まれて無いので、怪物→怪物の時にどこに引き寄せたら良いか判断できない。むう。 ------------------------------------------------------------ これ以前は別ファイルに。