------------------------------------------------------------ FHS patch (Funny-Honey-Spit patch) 蛇足メモ 作成者:Shiganai Sakusha ------------------------------------------------------------ ------------------------------------------------------------ 雑記 [にうきゃら掲示板(補助用)と連動している内容もあります。(こちらで書かれた内容が掲示板で解決とか)] ------------------------------------------------------------ ------------------------------------------------------------ 2010.02.21-2010.03.06 (FHSパッチver0.8.24(未公開)) むう、「rn2(0) attempted」のエラーは根が深い… 既存のvanillaの処理も安心は出来ないしなあ。  #例えばmakemon.cで、巨人のもつ宝石を生成する処理に  # for (cnt = rn2((int)(mtmp->m_lev / 2)); cnt; cnt--) {  #なんてのがあったり。  #  #vanillaならたぶん問題ないでしょうが、  #FHSパッチだと、元のレベルが低い「小さな巨人」もいるんですよね… とりあえず、makemon.c/mkobj.c/trap.cは「rn2」でファイル総ざらいしてみたけど… まだ隠れているようです。 …そういえば、rn1()とかrnl()なんてのもありましたね(泣)。 とりあえず全部についてDEBUGコードを(乱暴に)有効にし、足りないものは補っておきました。  #rn2(x), rnl(x), rnd(x), d(n,x), rne(x), rnex(x, limit), rnz(i)。  #あとhack.h内で設定されているrn1(x,y)も。 全ファイルの総ざらいが必要なのかな… =□○_ 閑話休題。 ---- 以前組んだコード類を見直す傍ら、 ふと気になってタイル数を数えてみた。 monsters # 1051 tiles objects # 953 tiles other # 262 tiles 総計2266タイル。 このうちver0.8.23bの時点でも未だ未作成(仮タイル)なのは monsters # tile 921 (troglodyte) objects # tile 269 (RapiRapi) [盾] # tile 362 (festoonery) [魔除け] # tile 383 (etched) [魔除け] # tile 390 (cartouche) [魔除け] # tile 391 (lariat) [魔除け] # tile 420 (tap) [魔除け] # tile 425 (turtle) [魔除け] # tile 559 (baseherb) [食料品] # tile 586 (blueberry) [食料品] # tile 587 (mulberry) [食料品] # tile 588 (raspberry) [食料品] # tile 598 (bayberry) [食料品] # tile 639 (pasta) [食料品] # tile 704 (* nanika *) [薬] other #(仮タイルなし) 総計15タイル。 このうちbaseherbはダミーアイテム。  #実際には各種ハーブに置き換えられる。 * nanika *もダミーの不確定名なので、特にタイル用意する必要なし。  #喫茶店用のダミーの薬が7種類。  # ・コーヒー/紅茶/ウーロン茶/緑茶/ココア/マテ茶/テレレの小瓶  #  (これらの「正式名」をもつダミーの薬が、  #   同じ「不確定名」を持つ実際の薬に置き換えられる)  #  #うち6種には以下の不確定名が割り振られているのですが…  # ・ジン系モンスターが封じられている薬の不確定名4種のうち、ゲームに登場しない3種  # ・幽霊が封じられている薬の不確定名4種のうち、ゲームに登場しない3種  # (ちなみに対応するハーブは、雑草並みの扱いになります。  # そのまま食べても効果なし、薬に加工するとダミー薬ではなく青汁に。)  #  #不確定名も対応するハーブも持たないものが1個余ってしまいまして f(- -)。 残り13タイルか。 個々のタイルの出来不出来や流用ぶりは抜きとして、 かなり作ったものだなあ。 閑話休題。 ---- で、見直していたのは「範囲内に垂直に光線を降らせていく」処理。 FHSパッチでは以下のもので利用してます。  ・氷の巻物  ・サテライトリンカーの#invoke効果  ・ファイヤーソウル/スノーイリュージョン/トゥインクルスターの#invoke効果 今になって見直してみると、変なところが多いこと多いこと =□○_ 結局、vanillaの既存の爆発処理(explode())を逆加工。 不要な個所を削りに削って、すっきりと。 …残った個所がほとんど無いですけどね(w;)。すっきりしすぎ。 それに併せて、サテライトリンカーの#invoke効果そのものにも手を加えました。 --着用中であり,呪われていなければ,視界内で中心位置を指定できるようになります. ---着用していない場合,着用するかどうかを選択できます.  #着用せずに#invokeしたり、着用していても呪われていたりした場合、  #従来どおり使用者を中心に降ります。 --降る光線が,1本ごとにランダムな属性をもつようになります.  #今までは同じ種類の光線が数本降るようになっていました。 --中心位置には必ず光線が降るようになります. --祝福されていてもPCや友好的な怪物に光線が命中するようになります.  #中心位置を指定可能にしたので、利便性とバランス取りを兼ねて。 …そういえばこれ、男性キャラが装備すると呪われるんでしたっけ f(- -)。 ---- 怪物専用の術士系魔法、僧侶系魔法に色々と手を加えました。 Darshan氏のpet ranged attacks patchや、L氏のNew spell patchを 参考に…と思っていたのですが、 結局はほとんどが自作の新規魔法に。 魔法の選定方式や、実際に効果を及ぼす処理にも手を加えたため、 対PCと対怪物とで同じ処理を用いる事が出来ます。  #魔法書由来の魔法は元々別で、こちらには今回手を加えていません。 ちなみに新規魔法のうちHell visionに関しては、完成までに色々とありまして…  ・最初はPreta Lokaとして作成。餓鬼道の幻覚を見せるものでした。  ・それとは別にBlood lustを作成。修羅道と称して血塗られた幻覚を見せるものでした。   その際に、体液に関する処理(フラワーハリケーンの体液吸収処理)にも手を加えています。  ・これらをHell visionとして纏め上げ。その際に「通常の地獄」の幻覚も追加。 また、これらの過程で、特定の場合における地形の配色にも手を加えることに。 -ゲヘナや一部の特殊階の画面の配色を調整(各種地形や明かりに対応) -幻覚時の画面の配色を調整(各種地形や明かりに対応) 今までは床・水地形・その他(特殊階なら建物と扉)といった程度の分類でしたが、 コード内でかなり細かく指定できるようにしました。 …でも柱はともかく、墓石を染めちゃまずいか (- -;)。 あと、ヴラドに更なる特殊能力を持たせたいけど… 今の所、案はあるけど後回し状態。 視線による(?)魅了も、どこのヴァリアント/パッチで見かけたやらという体たらく。 忘れないようにしとかないと。 ---- ↑の過程で、今まで集めていた外国のパッチ類を多少見直し 有用なものを備忘録にピックアップ。 …あー、この前いじった怪物の水濡れ処理についても L氏が何やらパッチ作ってたのか。 これ参考にすればよかったかなあ (- -;)。 後で見直せるようにメモメモ。 ---- で、ライトセイバーの移植再開。 ついでにlock.c周りの処理もSLASH'EMを参考に色々移植。  #錠前に対するライトセイバーの処理が随所に入ってるのです。 …完了しました。 これにより、ようやくライトセイバーを使えるように。 副産物として扉のこじ開け(#force)も可能に…なりそうですが、 未だコンパイル可能かどうかの確認さえしていません (- -;)。  # #define FORCE_DOOR を有効にすれば使える…はず。 Artifact doorも切り分けてはおいたけど…後でいいや。 lock.cの移植だけで済むものでもないだろうし。 でもって、ようやくflame torch実装。 …簡単に済むかと思ったら、従来の普通の「松明」の方に 色々と手を加えなきゃなりませんでしたけどね =□○_ 結局、「木の松明」と「竹の松明」の2種類に分けて実装。  #水中用松明も実装したかったけど、  #今の仕様だと水中に光源を持ち込んでも視界は広がらないようなので  #徒労に終わりそう。  #(水中で光の杖を振っても周囲は暗いまま。) …投擲に適した「ジャグリング用松明」とか 両端に点火可能な「ファイヤーダンス用松明」とか、いります? (^^;) ---- SporkHackにTRAPROOMとPOOLROOMなるものが追加されていたので、 とりあえずPOOLROOMを取り入れてみました。  #ゆくゆくはLevel Terrainパッチ(特殊マップの上下や左右の反転など)も  #取り入れてみたいけど、理解するのはなかなか難しそうだ… …いや、導入が簡単そうだったからというだけではなく、 どのような部屋が生成されるのかこの目で確認したかったのです。 個人的には、一面の水の上に遊歩道が敷かれているようなものを想像していたのですが… (↓こんな感じ、要するに水上のミニ迷路) ### -+------------- |..}...}}}}}}}.| |}.}.}.}...}}..| |}...}...}....}| |}}.}}}}}}}.}}}| -----------.--- # 実際は部屋の内周が水たまりで囲まれているものでした。 ####### ## -+--.-------+-- |.}}.}}}}}}}.}| |}...........}| |}...........}| |}}}}}}}}}}}}}| --------------- だったら、部屋の外周を水たまりで囲むことも可能では? と思いつき、実行。 案外あっさりと完成。 }}}}}}} }-----} }|...|} }|...|} }|...+### }|...|} }-.---} }}#}#}} # 水たまりを他の地形に変えることも簡単にできますが、 部屋の床にしてしまうと見栄えが気になります。 ....... .-----. .|...|. .|...|. .|...+### .|...|. .-.---. ..#.#.. # 外周が壁で囲まれていないのと、 通路がそのままになっているのが原因。 鉱山街のような所での掘り抜き部屋なら、これでも良いのでしょうが… なので、更に外側にも新たに壁を生成し、 途中の通路も床に変更するようにしました。 外側の壁と交差する通路は出入り口に変換。 外側の通路や壁の明るさは、内側の部屋の明るさに順ずるように。 -----------------## |...............|# |.-------------..# |.|...........|.| |.|...........+.| ## ..............|.| # ..|...@.......+..## ####..|...........|.| #|.-------------.| #................| -.--------------- ################## マップの端の部屋だと通路はともかく壁までは生成できないし、 元通路が壁の位置に沿って伸びていた場合はちょっと見栄えが悪くなりますが、 まあまあの出来かなと。 今の所は、通常階のランダムな1部屋しか外周変換できない(していない)ので、 ・特殊階には設置できない ・特定の特殊部屋(店など)を囲むことは出来ない のですけれどね。  #迷宮の各部屋や通路を配置した後、  #部屋を特殊部屋に変換するより前に外周を作っているため。 …四隅に壁を配置するためにちょっとした処理を加えているから、 それを利用して四隅に彫像とかを設置できるかな? まあその前に、突貫工事で作った繰り返しの多い部分を 整理しなきゃなりませんが =□○_ ---- 続き。 その後も色々と手を加え、任意の部屋を外周変換できるようにしました。 今のところは、特殊部屋の設置後にランダムな部屋1つを 外周変換することがあるようにしています。  #wizardモードなら外周変換を強制可能。但しどの部屋になるかは選べません。 未だに特殊階およびメデューサレベルより下の階では効果ないですけどね。  #逆にそのおかげで、Rogueレベルを外周変換してしまう事態も避けられてたり。 回廊の四隅への彫像設置も可能に。 部屋が特殊部屋の場合、彫像もある程度特殊部屋の内容に沿ったものになったり。  #あくまでも「ある程度」。完全に対応させたら部屋の種類を悟られてしまいそうですし。 で、確認のためにwizardモードにて適当に潜ってみる。 おお、魔法のメモリー倉庫も囲まれることがあるのか。 さすがにここに置く石像はガーゴイルor警備員に限定してもいいかな。  #番兵の石像を置いてしまうのは、色々とまずそう。 …ふと気になったことがあったので、部屋の中にテレポートし番兵を待ってみる。 ついて来いという番兵に、素直に金貨を置いてついていくと、 番兵が外周の回廊を一歩歩いたところで   突然,番兵は消えた. はうっ! (> <;) 迷宮に戻れずに閉じ込められてしまうのはまずいなあ。 何か対応策を考えないと。 外周の扱い自体は、今のままでも良いとは思うんですけどね。  #後から外周を掘り抜いたのと同じ扱いになっているはず。  #特に中の部屋と同じ属性を持たせる必要もないだろうし。 ---- そして、一段落したところで SporkHackのもう一つ気になっていた実装要素 「split room」を移植。 こんな部屋が出来ました。 # #-------- #|.......############# #|......|# # #-.--+-.-# ### #|.^.....############# #|......|# #### #----.-.-# ##### ########## ### ################# -.-.--.-.--##### |..@......|### # |....|....|# |....|....|# |.F.......|# |....|....|# |..........# -----------# ################## # どうやら、中央を単に壁で仕切るだけではなく、 仕切り分けた後の部屋それぞれが別個の部屋として扱われるようです。 片方もしくは両方が特殊部屋になる可能性もあるのかな。 で、調子に乗ってwizardモードで潜って新規マップの生成を繰り返していたら、 ######## # -----...--- #####.c.......c.#### -------------.| |.....+.....+.| |.....|.....|..#### |.....|{....|..# |...........|.|# |.....|.....|.|### |...........|..#### -------------.| ## |c.......c| ----------- …あ (- -;)。  #片方の部屋に対して回廊を自動生成したようで。 ------------------------------------------------------------ 2010.02.09-2010.02.20 (FHSパッチver0.8.23b) アイデアメモ。 ・(武器)の罠  dwarf fortressより。  基本的には矢の罠や槍の罠のような射出系の罠。  但しあらゆる種類の武器を仕込める。 考えてみればetherialフラグを導入したので、 任意のアイテムを射出できる(射出した後すぐに消せる)ようになったんですよね。 消滅時のメッセージについては一考が必要ですが。  #現在の「消滅した」系統のメッセージと、  #仕掛け槍のような「引っ込んだ」系統のメッセージを使い分けられれば理想的。 ・i ウィンプ(wimp) インプの亜種として、大量に登場させる(G_VLGROUP)までは思いつくのですが、 さてどうするか。 悪魔のように攻撃時に勝手に増殖? うーん… 閑話休題。 ---- brassの試験版を頂きました。 animated objectの関係で、色々と処理が変更されてますね。 変化の罠関係の課題もクリアされたようで、plain dragonはお役御免ですか。 思わずどう解決したのか探し回ってしまったり(^^;)。  # FHSパッチのplain dragonはこのまま残します。 bugfixとおぼしき個所をはじめ色々取り込み。 幻覚時の偽神名(bogusgods)なんてのも追加されてました。 自分でも色々と追加してみようと、色々な作品を思いだしてはみたものの、 漠然と「神」としか呼ばれていないような作品とか、 神話などから名前をとられている作品なども思ったより多く、 あまり追加できませんでした。 あとは、○○教とうたっているものの、 何を神として崇めているのかよく判らないものも。 まあ調査不足っちゃ調査不足なのですが。 『魔方陣グルグル』のプラトー教とか、 『東方シリーズ』なるもののずんずん教とか(違)。  #↑検索してたらアンサイクロペディアなるページが引っかかったもので。 ---- とまあ、色々と処理をまとめたり、その過程で見つけたバグを修正したり。 brassの試験版からも色々頂きつつ更にバグ修正したり。 店の追加サービス辺りは、ほとんど原型留めてないです。  #さすがにxdat周りはまだまだ理解できてない…  #グラフィック処理などと共に保留。  #  #animated objectを実装する際は、嫌でも丸ごと導入する必要がありそうですけどね。  #(他の改造個所とのすり合わせがどうなることやら… =□○_) そんなこんなで、ver0.8.23b公開。 ついにJNetHack3.4.3本家とのdiffファイルが10M超え… (- -;)。 ------------------------------------------------------------ 2010.02.08-2010.02.08 (FHSパッチver0.8.23a) はうっ! (> <;) > bug 0439 アスモデウス/ジョウビレックス/ゲーリューオン/地獄の門の階層の >      新規階に入ったとき「rn2(0) attempted」のエラーが頻発することがある mkriver()の中にまでrn2(0)になる箇所があったとは…  #本来、ジョウビレックスの階層で使われている処理。 細かい修正も多少加え、ver0.8.23a公開 (_ _;)。 ------------------------------------------------------------ 2010.01.13-2010.02.07 (FHSパッチver0.8.23) FHSパッチでは、一部の属性のブレスが 軌跡上に蒸気の雲を残すようになっています。 無論、蒸気の雲もブレスの属性に準じた効果を発揮。  #元はL氏の、鉄のゴーレムが毒の蒸気を噴き出すというパッチ。 蒸気の雲の中では視界が妨げられるため、唯でさえ厄介なのですが、 wizardモードでビッグルームに踏み込んだとき、 冬狼の仔の群れなどというものが… 連続ブレスの怖いこと。 周囲にいたオークの集団が、 こっちが盲目になってる間に全滅してたんですけど(w;) 閑話休題。 ---- 巫女パッチを作成されたyzhさんが、 なにやら独自のヴァリアントを作られてるようです。 どのような内容か興味はあるのですが、 ソースの置いてある場所からの一括ダウンロードの方法がわからず(泣)。  #sourceforgeでの download tarball にあたる操作が良くわからなかった。 とりあえずjtrnsmon.txtだのjtrnsobj.txtだのを、ちょこちょことつまみ見。 次のFHSパッチの正式版出してから再挑戦だー! ---- でもって、ようやくver0.8.23公開。 年末の試験版09.12.24版から、また一部いじってます。 以下、順不同。 +-聖器追加:北辰 +-炎のピラーの属性を秩序→無心に変更 +-氷のピラーの属性を中立→無心に変更 北辰は、中立の冷気属性のモーニングスター。 周囲を凍らせまくります。  #炎と違って冷気で地面の薬は凍らないけど、凍るようにした方が良いんだろうか。 でもって、炎のピラーと氷のピラーは無心に変更。 +-ファイアイーターによる火の吸収率を100%にした この聖器を特徴付ける機能なので、発動率を限定しなくても良いかなと。 これらにより、火と氷の聖器の分布は以下のようになりました。 /* LAWFUL: */ /*A("Snow Illusion", SHORT_SWORD, LIQUID,*/ /*A("Firewall", ATHAME, FLAME,*/ /* NEUTRAL: */ /*A("Polaris", MORNING_STAR, LIQUID,*/ /*A("Fire Soul", SHORT_SWORD FLAME,*/ /* CHAOTIC: */ /*A("Deep Freeze", ATHAME, LIQUID,*/ /*A("Fire Eater", SCIMITAR, FLAME,*/ /* NONE: */ /*A("Frost Brand", LONG_SWORD, 0,*/ /*A("Fire Brand", LONG_SWORD, 0,*/ /*A("Ice Pillar", SPEAR, LIQUID,*/ /*A("Flame Pillar", SPEAR, FLAME,*/ +-ゲヘナの途中階の構成を一部変更 +-ディスペータの階層を一部変更 具体的には、  ・途中階のバリエーションを増やした  ・途中階が迷路になる確率を下げた  ・ディスペータの途中階も街の様になるようにした(従来は迷路only)  ・ディスペータの館に追加していたlemurepitの縦幅を多少縮めた。   これによりディスペータの館の上下の部分に多少余裕ができました。   (従来は1マス分の通路が横にだらだらと…) あと、ゲヘナの各階層に登場するモンスターの一覧にも多少手を加えています。 -UnNetHackから以下を導入 +--r380 修正: C343-235 プレイヤーが飲み込まれていたり岩盤の中にいた +りする時に守りの呪文を唱えると、不適切なメッセージが出る(英語のみ) +--r391 修正: C343-189 グレムリンの攻撃により失われた寺院への寄付に +よる守りと魔法防御は不当に相互作用する +-以下の本家バグに対応 +--本家バグC343-320: 手紙の巻物を読むと、文字を読んでいない挑戦が破られる JUnNetHackも 3.5.2-J0.2.2 に更新されていたので、 バグ修正などを取捨選択して移植。 +-完全に傷んだ防具が更に劣化した場合,1/2の確率で破壊されるようにした UnNetHackでは100%壊れますが、FHSパッチでは多少手加減。 +-シンボルのハイライト表示色を一部変更(Windows限定,テキスト表示限定) +--騎乗しているプレイヤーは,青色のハイライトで表示されるようになります.[STEED] +--騎乗している怪物は,赤色のハイライトで表示されるようになります.[MONSTEED] +--重なったアイテムは,青色のハイライトで表示されるようになります. UnNetHackでは、重なったアイテムはハイライト表示されるようになりました。 今回はそれを取り入れた訳ですが… この機会にハイライトの表示色そのものの変更に挑戦。  #brassだと騎乗している怪物は茶色のハイライトで表示される。 色々いじくって、なんとか光の三原色(赤青緑)には対応できるようになりました。 緑は今回使っていませんが。  #もっともWindowsのテキスト表示でしか確認できてません。  #unix等では、おそらく従来の白色ハイライトになるかと。 ちなみに今回は「重なったアイテム」と「騎乗しているプレイヤー」の値を 同じ値(0x10)にしたため、 騎乗プレイヤーも青色ハイライトで表示されるようになります。  #分けてもいいんですけどね。 そうそう、UnNetHackとは違って 「死体」だの「アイテムに化けたミミック」だの「生ける鉄の鎖」だのも 他のアイテムと重なればきちんとハイライト表示するように修正済みです。  #但し騎乗している怪物の場合は赤が優先される。  #(アイテム形態のモンスターは騎乗しないから問題なし。…たぶん将来的にも。) ---- あと、履歴には書かれていませんが trap.cやら幻覚関係なども一部いじってみたり。 +-無敵状態の時は色を識別できないようにした これは幻覚関係の処理変更のついでに。 完全無欠というのも何かと思いまして。 objects.cには手をつけないでいようと思っていたのですが、 結局手をつけてしまいました。 不確定名の処理を防具類と同じ方式にし、不確定名だけ登録されていたダミーの巻物をごっそり削除。 ですので残念ながら、試験版とのセーブデータ互換性はなくなりました。 タイルもほぼ整備。 井出さんから頂いたツールプログラムに手を加え、番号割り振りとタイルヘッダ作成を 半自動化できるようにしたので、作業が楽になりました。  #以前も書いたと思いますが、頂いたツールのうち自分でものにできたのは  #前半のツール(タイルが必要なものの一覧作成)だけで、  #後半のツール(↑の一覧をもとにタイル自動並べ替え&自動番号割り振り&補完)を  #動かせなかったので、その辺り全て手作業でやっておりました。  #無論、番号割り振りミスも頻発。  #  #今回は前半ツールに手を加え、一覧の形式をタイルのヘッダに似せるようにしたため、  #多少手直ししつつ各タイルを押し込んでいくだけで済むように。 擬似的文字シンボルタイルが残っているのは一部のベリー類だけかな。  →魔除けも少し残ってました。 ---- その一方で、戦士パッチ for 3.4 の再整備も行いました。 色々修正してもいるので、FHSパッチから再度起こしなおしです。  #ランダムクエストも、戦士パッチとは分離した上で再整備する予定。 という訳で、ようやくFHSパッチver0.8.23公開。 併せて戦士パッチ ver2.0.0も公開。 疲れた…  =□○_ ------------------------------------------------------------ 2009.12.25-2010.01.12 ([Re:9]FHSパッチver0.8.23[未公開]) 明けましておめで…と言える時期じゃないですね、既に(- -;)。 まあ、何にせよ、今年もよろしくお願いします。 Dungeon Map Overview の日本語版パッチを作ってみました。 いつものFHSパッチのページではなく、Random Questのページに置きました。 ついでにRandom Questのソース類もFHSフォルダに移行。 現在、戦士パッチ for 3.4 も再整備中。 今度はRandom Questパッチとは分離しておこうかと。 Random Questパッチや、洞窟人パッチ・騎士パッチの和訳ものも 時間を見て各個独立パッチとして作っておきたい所。 もっとも、作るだけ作って後は放っときそうな気もします (w)。  #FHSパッチほどにはメンテナンスに労力を割かないでしょう。 ------------------------------------------------------------ 09.12.23-09.12.24 ([Re:8]FHSパッチver0.8.23[未公開]) はうっ! (T T) > ・PC以外が攻撃を受けた時にも,PCの防具に触れた効果が発動するバグ(試験版限定)を修正 passive_obj()を二重に分割した際に、 passive_obj_core()で受け手(mdef)をPC以外に対しても有効にしていたのに、 passive_obj_core2()を更に分離した際に  passive_obj_core()からpassive_obj_core2()へ送るmdefの引数を  PC限定(&youmonst)にしてました… (T T) 試験版 ver0.8.22a+09.12.23版改め09.12.24版を公開。(_ _;) ------------------------------------------------------------ 09.11.11-09.12.23 ([Re:7]FHSパッチver0.8.23[未公開]) いい加減、戦士パッチやランダムクエストの再整備が必要かも。 OverviewなどもJNH3.4用のものを独立させて公開したくもあります。 なかなか分離のための時間が取れませんが。 閑話休題。 ---- 泣き女やバンシーの会話スタイル、独自のもの(ただ嘆くだけ)を 組み込まなければならないかと思っていたら、 既にMS_WAIL(影やシャドウの会話スタイル)なんてものがあったのですね… =□○_ 「悲しげに鳴」くのも妙なので、brassの訳を拝借し移植。 ---- いろいろ調整修正移植しております。バランスこれでよいのかは判りませんが(マッテ)。 進行状況。 ・要検討点その1: 聖器の下賜、旋律の下賜   聖器の下賜は以前の状態に戻す。   旋律の下賜を#offer「にも」移植。(#pray側も未だ有効) ・要検討点その2: ユニコーンの角   疲労の処理を色々と調整、簡略化。   試験版の仕様だと疲労の蓄積が加速度的に増加してしまうので。   あと通常の角についても疲労メッセージをある程度出すようにしました。 ・要検討点その3: ダメージ軽減   brassの処理を移植。      …と終わった後だからこそ一言で済ませていますが、       ・まずは守りの指輪等がu.uprotectionとして独自処理されていたので、それを移植。    ・FHSパッチ独自処理のうち、u.uprotectionに含まれそうなものをu.uprotectionで処理するように変更     (竜王の鱗鎧のACボーナスだの聖器の防御ボーナスだの)    ・reduce_damage()関係を移植。    ・FHSパッチ独自処理をreduce_damage()に反映。     (聖器の防御ボーナスだの)   しかも、メイド服のACボーナス処理にならって   家事道具(叩き棒スキルの武器)とエプロンの同時装備によるACボーナスも実装しようとしたら、   全体のAC計算と各部のダメージ軽減処理とのすり合わせにひどく手こずり、   結局はそれぞれを単独処理することに。   ミンクのコートについては、従来のダメージ軽減処理の代わりに、   守りの指輪のように強化値がそのままu.uprotectionに反映されるようにしました。    #u.uprotectionはダメージを直接軽減します。   …巻物で強化した時にu.uprotectionが滅茶苦茶になることが判明し、その修正にえらく手こずりましたが(T T)。 ・要検討点その4: ドラゴンの鱗鎧   …未着手。 とりあえず、ダメージ軽減処理が何とかなったので 峠は越したかな…。 ---- その後もJUnNetHackなどから色々移植してみたり。 > ・要検討点その4: ドラゴンの鱗鎧 これもあれこれ変更。かなり入れ替えてます。 #invokeは、1/3の確率でランダム爆発毒液だったのをランダムブレス(RJNH仕様)に戻しました。 ---- ドラゴンの鱗鎧 および 竜王の鱗鎧 のFHSパッチ仕様 [試験版 ver0.8.22a+091223 現在] (*がついているものが変更箇所) (「*Todo:」は要検討箇所(仕様未定)) GRAY_DRAGON_SCALE_MAIL 魔法防御 L: (追加無し) (*Todo:) L: #invoke:魔法の矢のブレス(2/3)or*ランダムブレス(1/3) SILVER_DRAGON_SCALE_MAIL 反射 L: (追加無し) (*Todo:) L: #invoke:冷気のブレス(2/3)or*ランダムブレス(1/3) SHIMMERING_DRAGON_SCALE_MAIL 幻影 L: 幻影+*耐幻覚 L: #invoke:*魔法の矢のブレス(2/3)or*ランダムブレス(1/3) DEEP_DRAGON_SCALE_MAIL 耐ドレイン L: 耐ドレイン+*盲目反撃 L: #invoke:レベルドレインの爆発毒液 RAINBOW_DRAGON_SCALE_MAIL 魔法ダメージ半減 L: 魔法ダメージ半減+*魔力回復(着用中のみ) L: #invoke:術師系魔法の爆発毒液 RED_DRAGON_SCALE_MAIL 耐火 L: 耐火+*攻撃修正値の増加(強化値/2) (参考:SporkHack:耐火+攻撃ダメージ増加) L: #invoke:火のブレス(2/3)or*ランダムブレス(1/3) WHITE_DRAGON_SCALE_MAIL 耐冷 L: 耐冷+水場や溶岩に踏み込んでも凍らせて歩ける (*前回から変更なし) (参考:SporkHack:耐冷+水場や溶岩に踏み込んでも凍らせて歩ける) L: #invoke:冷気のブレス(2/3)or*ランダムブレス(1/3) ORANGE_DRAGON_SCALE_MAIL 耐眠,*+7以上で自由行動 L: 耐眠+自由行動+減速反撃 (*前回から変更なし) (参考:SporkHack:耐眠+減速反撃) L: #invoke:眠りのブレス(2/3)or*ランダムブレス(1/3) BLACK_DRAGON_SCALE_MAIL 耐粉砕 L: 耐粉砕+*武器劣化反撃(+0以下の非聖器武器は粉砕) (参考:SporkHack:耐粉砕+盲目反撃) L: #invoke:粉砕のブレス(2/3)or*ランダムブレス(1/3) BLOOD_DRAGON_SCALE_MAIL 耐ドレイン L: 耐ドレイン+*空腹を伴わない再生能力(着用中のみ) (*Todo:) L: #invoke:レベルドレインの爆発毒液 BLUE_DRAGON_SCALE_MAIL 耐電 L: 耐電+耐眩暈 (*前回から変更なし) (参考:SporkHack:耐電+とても素早く行動) L: #invoke:電撃のブレス(2/3)or*ランダムブレス(1/3) GREEN_DRAGON_SCALE_MAIL 耐毒,*+7以上で耐病気 L: 耐毒+*耐病気+毒反撃 (参考:SporkHack:耐毒+毒反撃) L: #invoke:毒のブレス(2/3)or*ランダムブレス(1/3) PLAIN_DRAGON_SCALE_MAIL (無し) L: *守り+1(他色と同等のACになる) L: #invoke:ランダムブレス(2/3)orランダム爆発毒液(1/3) (*但し竜王Mapの主から奪ったものは ランダム爆発毒液の代わりにランダムブレスを選択可能) GOLD_DRAGON_SCALE_MAIL 光源(範囲狭め)+*耐盲目 L: 永久光源(範囲広め)+*耐盲目+*盲目反撃 L: #invoke:火のブレス(2/3)or*ランダムブレス(1/3) SKY_DRAGON_SCALE_MAIL *浮遊 L: *飛行に差し替え L: #invoke:劣脚の爆発毒液 WATER_DRAGON_SCALE_MAIL *水泳 L: 水泳+*呼吸 L: #invoke:水の爆発毒液 YELLOW_DRAGON_SCALE_MAIL 耐酸,*+7以上で耐石化 (*Todo:+耐石化を外す?) L: 耐酸+耐石化 (*耐混乱は削除) (*Todo:耐混乱を何色に割り振る?) (参考:SporkHack:耐酸+耐混乱+耐眩暈) L: #invoke:酸のブレス(2/3)or*ランダムブレス(1/3) ---- 今の所、残っている課題としては  ・黄色と黄色Lの効果バランス。黄色Lに酸反撃でも付与する?  ・黄色Lから削った耐混乱を何に割り振るか。橙Lには過剰か?  ・灰色Lと銀色Lの追加効果。元の効果が有用なので、あまり強いのを割り振る訳にもいかず。  ・鮮血Lにもう少し何かほしい気も。  ・そもそもバランスはこれでよいか(ぉ) で、まだまだ試験不十分な試験版状態ですが、この辺でひとまず公開。 では皆様、良いお年を。(気が早い?) ------------------------------------------------------------ 09.11.09-09.11.10 ([Re:6]FHSパッチver0.8.23[未公開]) kokaさんのblogに、長柄武器の威力改案が。 ふむ、周囲に障害物が無いマスが多ければ、その分ダメージを上乗せですか。 FHSパッチだと、逆に近い敵に対してはダメージ半減させてたなあ。 閑話休題。 ---- youkanさんのblogより、 「FHS Patch 巫女で初昇天」 拝見しました。 自分でも見落としていた点や、バランス面でも色々と考えさせられる点が多かったです。 > -アーティファクトの下賜は #offer したときではなく祭壇で祈ったときに行われる。 > が、祈ってもなかなか貰えない。今回は1プレイ通して貰えたのは「桔梗の霊弓」1本のみ。 要検討点その1。 うーむ、ここの仕様を変更したのは城の旋律を有効に下賜したかった為だったのですが、 難易度が高すぎたようで。 聖器がろくに入手できないのでは本末転倒。 かといって祈りの他の効果よりもぽんぽん聖器を出す訳にもいかないだろうし… 逆に旋律の下賜を#offerに持っていく? > -とはいえ巫女+桔梗の霊弓+征矢の組み合わせはかなり強い。 > 5連射とかできる。即殺したい敵には死の杖と同じくらい有効。 > -巫女のクエストアーティファクト「破魔の短剣」は所持しているだけで > 魔法防御+物理ダメージ半減の便利アクセサリー。攻撃力に期待してはいけない 桔梗の霊弓は和弓アーティファクトなので、確かに強いですね。 FHSパッチでは巫女の職業優先聖器にもなっています。(侍用ではない) 破魔の短剣は、ほぼyzhさんの元パッチのままかと。 英語名を変更した程度? > -即死要因が増えているので、魔除けは命の魔除けが鉄板(今回3個消費)。 > 耐性が揃ってれば反射はいらないかも > -混乱と眩暈をわりと頻繁に食らい、対処不能のまま死ぬことがあるので、 > 耐混乱の指輪・気付けの指輪は常に手元に。 様々な攻撃や罠などを(試験的なものも含め)実装している分、 どうしても特殊効果を受ける率も高くなりがちですからねえ。 直接的な物理ダメージだけで、プレイした人に「おお」と言わせるようなものを 実装できれば良いのですが、単純なだけになかなか難しい… > -ユニコーンの角は緊急時には全く頼りにならないので、信頼できる治癒手段を > 欠かしてはならない > -混乱・眩暈を確実に治せるのは「能力回復の薬」 要検討点その2。 現在、角は連続使用で「疲労」するようになっています。 疲労が蓄積すると効果を発揮しなくなったり。 疲労しない角は…聖器頼り。  ・乙女の守護者は疲労しません。  ・第七聖典はなんか色々ぶーたれますが、疲労が蓄積しすぎない限り   無視して使うことは可能です。(警告代わりにもなっています) 一方、能力回復の薬には角と同様の回復効果を追加してますので、 確かに疲労がない分確実でしょうか。 疲労システム自体はこのまま継続するとしても、 まずは疲労の蓄積度合いの軽減なり、使用不能リミットの改善なりが必要そう。 > -水棲生物はvanillaに増して虐殺しておきたい。 > 特に「蛸」に武器奪取されるとメイン武器が水に沈むことになり、うざいことこの上ない。 > 水の精霊界だと下手をすれば回収不能に… あ、そうか。蛸は鉄砲魚に比べてぱっとしないかと思ってたけど、 攻撃方法がAT_TAILで触手持ちだから、たまに武器奪取攻撃が発動し得るんですね。 しかも足の数が…確かに鬱陶しい(^^;)。 > -最重要アイテムは「ミンクのコート」。序盤を生き抜けたら次はこれを最優先でwishする。 > というのも、vanillaではACがマイナスになると行われるダメージ軽減が、 > FHS Patchではこのアーティファクト防具を着ていない限り行われないため。 > 通常ダメージであっさり殺される 要検討点その3。 実はこの箇所、SLASH'EMと同様にしたつもりだったのですが… …よく見たらSLASH'EMでもそこそこの軽減効果はあるじゃん =□○_  ・vanilla    軽減値は{1〜(ACの逆数)}。上限無し。  ・SLASH'EM    軽減計算がvanillaより多少ひねってある。また上限があり、10ポイントまで。  ・brass    軽減値は{1〜(命中個所の防具の基本防御値の合計)}とのこと。[History 03/07/23より]    魔法などの守りは(ランダムではなく)防具より先に反映。    また命中箇所に関わらず、上記の基本防御値には盾の分が加算される。 brassの方式は初期UOに通ずるものがあるのかな。 これを拝借してみようかしらん。 > -DSMはオレンジ(自由行動)、黄色(耐酸+耐石化)、緑(耐毒+耐病気)、 > 天竜(飛行)あたりが便利。 > しかしクローク枠に魔法防御を使えないので灰色を選ばざるを得ないことも > -分岐ダンジョンで竜王を倒すと「竜王の鱗鎧」が入手できる。 > 黄色が当たり(耐酸+耐石化+耐混乱)、青はまあまあ(耐電撃+耐眩暈)、 > 白も便利(耐冷+水場や溶岩に踏み込んでも凍らせて歩ける)。あとはハズレ 要検討点その4。 とりあえず、現在の試験版での仕様を一覧にしてみました。  #youkanさんプレイの試験版でも、性能はほぼ一緒のはず。 スポイラー的情報になりますがご容赦を。 ちなみにLとついているのは、竜王の鱗鎧になった時の効果。 ついでに、竜王の鱗鎧の特殊効果の元ネタである SporkHackの"通常の"ドラゴン鎧の効果も(違いがあれば)記入。 ---- ドラゴンの鱗鎧 および 竜王の鱗鎧 のFHSパッチ仕様 [試験版 ver0.8.22a+091108 現在] GRAY_DRAGON_SCALE_MAIL 魔法防御 L: (追加無し) L: #invoke:魔法の矢のブレス(2/3)orランダム爆発毒液(1/3) SILVER_DRAGON_SCALE_MAIL 反射 L: (追加無し) L: #invoke:冷気のブレス(2/3)orランダム爆発毒液(1/3) SHIMMERING_DRAGON_SCALE_MAIL 幻影 L: (追加無し) L: #invoke:未設定(ランダムブレスor爆発毒液) DEEP_DRAGON_SCALE_MAIL 耐ドレイン L: (追加無し) L: #invoke:レベルドレインの爆発毒液(レベルドレインのブレスは未実装) RAINBOW_DRAGON_SCALE_MAIL 魔法ダメージ半減 L: (追加無し) L: #invoke:術師系魔法の爆発毒液 RED_DRAGON_SCALE_MAIL 耐火 L: 耐火+攻撃ダメージ増加 (参考:SporkHack:耐火+攻撃ダメージ増加) L: #invoke:火のブレス(2/3)orランダム爆発毒液(1/3) WHITE_DRAGON_SCALE_MAIL 耐冷 L: 耐冷+水場や溶岩に踏み込んでも凍らせて歩ける (参考:SporkHack:耐冷+水場や溶岩に踏み込んでも凍らせて歩ける) L: #invoke:冷気のブレス(2/3)orランダム爆発毒液(1/3) ORANGE_DRAGON_SCALE_MAIL 耐眠,+3以上で自由行動 L: 耐眠+自由行動+減速反撃 (参考:SporkHack:耐眠+減速反撃) L: #invoke:眠りのブレス(2/3)orランダム爆発毒液(1/3) BLACK_DRAGON_SCALE_MAIL 耐粉砕 L: 耐粉砕+盲目反撃 (参考:SporkHack:耐粉砕+盲目反撃) L: #invoke:粉砕のブレス(2/3)orランダム爆発毒液(1/3) BLOOD_DRAGON_SCALE_MAIL 耐ドレイン L: (追加無し) L: #invoke:レベルドレインの爆発毒液(レベルドレインのブレスは未実装) BLUE_DRAGON_SCALE_MAIL 耐電 L: 耐電+耐眩暈 (参考:SporkHack:耐電+とても素早く行動) L: #invoke:電撃のブレス(2/3)orランダム爆発毒液(1/3) GREEN_DRAGON_SCALE_MAIL 耐毒,+3以上で耐病気 L: 耐毒+毒反撃,+3以上で耐病気 (参考:SporkHack:耐毒+毒反撃) L: #invoke:毒のブレス(2/3)orランダム爆発毒液(1/3) PLAIN_DRAGON_SCALE_MAIL (無し) L: AC+1(他色と同等のACになる) L: #invoke:ランダムブレス(2/3)orランダム爆発毒液(1/3) GOLD_DRAGON_SCALE_MAIL 光源,範囲狭め L: 永久光源,範囲広め L: #invoke:火のブレス(2/3)orランダム爆発毒液(1/3) SKY_DRAGON_SCALE_MAIL 浮遊,+4以上で飛行に差し替え L: (追加無し) L: #invoke:劣脚の爆発毒液(劣脚のブレスは未実装) WATER_DRAGON_SCALE_MAIL 水泳,+5以上で呼吸 L: (追加無し) L: #invoke:水の爆発毒液(水のブレスは未実装) YELLOW_DRAGON_SCALE_MAIL 耐酸,+4以上で耐石化 L: 耐酸+耐石化+耐混乱 (参考:SporkHack:耐酸+耐混乱+耐眩暈) L: #invoke:酸のブレス(2/3)orランダム爆発毒液(1/3) ---- 改めてみると、色によっては普通の鱗鎧にも多少の追加効果が加わっていますが、 竜王の鱗鎧ならではの追加効果は案外少ないですね。 金色なんかも、永久光源でなくても別に燃料要らない訳だし(^^;)。 幻影に至ってはブレスも未設定だし。  #幻影竜王がいないから…と思ったら、ランダムに落とす竜王もいましたね。 ランダム爆発毒液が含まれるのは、RJNHのランダムブレス設定を踏襲しているためですが、 まあ、ここらは色々とアイデア練りつつ調整していこうと思います。 ---- 以上のように色々と問題も多い試験版ではありましたが、 それでもクリアされたyoukanさん、改めてお疲れ様でした&有難うございました。 (_ _) ------------------------------------------------------------ 09.10.18-09.11.08 ([Re:5]FHSパッチver0.8.23[未公開]) めもめも。 turn table改案:  和名を「回転盤」から「ターンテーブルの罠」に変更。  通常のターンテーブル: 現在の通り  魔法式ターンテーブル: #turn  機械式ターンテーブル: ちゃぶ台返し …実装するかどうかは未定(^^;)。 閑話休題(^^;)。 ---- バグ(x)取り継続中。 直している間にもふとした事で別のバグやら不具合やらが見つかったりするので、 なかなか終わりません。 レマー・ドゥリュクスがあれば一発なのでしょうが(T T)。 それにしても、武器スキルの無い武器を振り回すと Lv30で命中の指輪2つ(あわせて命中率+10)をつけて聖器(+8)を振り回しても からっきし当たらない。 こんなもんでしたっけ? wizardモードで開始したばかりの初期キャラだからかなあ。 閑話休題。 ---- > bug 0409 リーダー格の怪物が大挙して現れる とりあえず、前提条件が怪しいのは手直ししたという前提で、 想定としてはこのように。 /* * G_PLATOON : 1/3 make platoon, 2/3 only one * G_PLATOON|G_SGROUP : 3/2 make platoon, 1/3 same group * G_PLATOON|G_LGROUP : make platoon, or same group(if no platoon monster) * G_PLATOON|G_VLGROUP: make platoon, or same group(if no platoon monster) */ つまりG_PLATOONだけ設定されているものは問題なし。(現在の正式版も問題なし) 問題となるのはG_*GROUPを併用している怪物たちですね。 どんなものがいるのか抜き出してみました。 ---- MON("wolf", S_DOG, G_PLATOON|G_SGROUP 狼は元々G_SGROUPで、後からplatoon設定(子連れ)を加えたので問題なし。 MON("pisaca lord", S_IMP, G_LGROUP|G_PLATOON 餓鬼もG_LGROUP設定なんで、何かの間違いで餓鬼大将がわらわら出ても別にいいかな。 MON("shaky goblin", S_ORC, G_PLATOON|G_LGROUP 出るときにはわらわらとゴブリン類を連れて出る…はず。 ゴブリン類が絶滅した後に出たら問題か? まあ、そもそもユニークなので心配は無いと思いますが。 MON("red river hog", S_QUADRUPED, G_SGROUP|G_PLATOON 河イノシシも狼と同じ扱い。子連れだったり小集団だったり。 問題なし。 MON("gray ogre", S_OGRE, MON("silver ogre", S_OGRE, MON_V("red ogre", S_OGRE, MON_V("white ogre", S_OGRE, MON("orange ogre", S_OGRE, MON("blue ogre", S_OGRE, MON("green ogre", S_OGRE, MON("yellow ogre", S_OGRE, G_SGROUP|G_PLATOON 各種の鬼達。 platoonでは地獄の亡者を従え、そうでない時はオーガのように徒党を組む、と。 問題なし。  #各色まぜて登場させてもいいのかもしれないけど…  #いや、それは主に黒鬼(未実装)用か。  # (黒鬼の攻撃は粉砕の直接攻撃(になる予定)なので、徒党を組んで登場したら洒落にならんでしょう) MON("general", S_HUMAN, G_PLATOON|G_LGROUP 将軍。兵士達を引き連れての登場。 兵士・兵卒・歩哨・遊撃兵が全て絶滅した後なら将軍ばかり出るように… MON("chain devil", S_DEMON, G_PLATOON|G_SGROUP, 鎖の悪魔。 生ける鉄の鎖を従えているか、徒党を組んで登場。 問題なし。 MON("frogman leader", S_LIZARD, G_LGROUP|G_PLATOON MON("frogman chieftain", S_LIZARD, G_VLGROUP|G_PLATOON で、問題となります 蛙戦士の首領 & 蛙戦士の酋長 。 むう、タスロイと違って部下がノーマルな蛙戦士しかいないのに 大量に登場する設定にしていたか。 ---- こうしてみると、設定を見直す必要のある怪物は 将軍および蛙戦士の首領 & 酋長、かな。 将軍はバルログと同様の設定でいけるかも。  #バルログの場合はトロル1匹とオーク・ゴブリンがわらわら。 更に下士官以上の将校も含めればなんとかなりそう。 いざとなったら下士官や副官などがぞろぞろ。 さすがに将軍がぞろぞろという状況は避けたい。  → …と思ったら、既にm_initgrp()の方で対処してました。     #基本は副官ぞろぞろ。     #但し副官1人生成するごとに2/3の確率で兵士ぞろぞろに切り替え。     #切り替えても兵士が絶滅している場合は下士官ぞろぞろ。     #…ちょっと手を加えて指揮官も加え、不具合も修正すれば十分いけそう。 蛙戦士はどうしたものか。 大量に登場させることを目論んでたけど、 今の設定だと下手なオーク以上に湧く事に…(- -;) ---- で、色々手を加えてみた。 試験の為に(wizardモードで)幾度か最下層まで階移動で潜ってみたけど将軍には出会えず。 むう、さすがにランダム生成に頼るのは無理があるか。 なのでソースに手を加え、 「wizardモード時に将軍を生成した場合は部下も強制的に登場させる」ようにしてみる。  #通常は、wizardモードで任意怪物を指定生成しても単体生成にしかなりません。 さて召喚。   …なぜ画面が将軍で埋め尽くされる… =□○_ …chk_platoon()がどうなっているのか再度確認。 …case 0: /*特定の部下monster*/ の時に genod() による絶滅判定の結果を逆にして処理してました… =□○_ こ、このせいか。 蛙戦士もだけど、部下が絶滅したと勝手にみなして同種を選択してたようです。  #ちなみにgenod()というのは、虐殺や絶滅を簡易判定するための  #FHSパッチオリジナルコード。  #  #…mndx値のオーバーフロー時の対処も追加しとこ。いそいそ。 その他、あれこれ更に改良し ようやくそこそこ満足の行く仕上がりに。 副産物として、ある階級の軍人が絶滅している時には 自動的に下位の軍人に差し替えられるようにしてみたり。 ---- 一息ついていたところに、youkanさんからの再度のご報告。 …自分の気づいてなかった、しかも対処の難しそうなバグがぞろぞろと(汗)。 最初は直せるかどうかも不明だったけど、なんとか全部直せました。 試験版を更新。 ------------------------------------------------------------ 09.09.28-09.10.17 ([Re:4]FHSパッチver0.8.23[未公開]) Autothrust関係と、ついでにダブルアタック関係の移植も済ませ、 HTML出力機能追加パッチも成功し、 プリン類の分裂処理や冷気反撃に伴う分裂処理も独立させることに成功し、 ほくほく顔でwizardモード試験。 …攻撃時に稀に落ちる =□○_ 試験時のキャラは偶然にも武闘家だったから、 また変な所で武器(uwep)を参照しようとして落ちているのかな。  #武器を持たない場合も考慮し、 if(uwep && 〜) のようにしなければいけない事が多い。 試験専用のpline()をごっそり挿入して確認。  #いつもながらの力任せの作業ですが、怪しい場所を絞り込むには結構有用。 ダブルアタック処理の辺りが怪しいと判明。 やはり移植時に追加したメッセージが原因だったか。 まあ、毎度毎度こんな感じでデバッグしております。  #毎度毎度似たような失敗を繰り返してるという事でもありますが (- -;)。 ---- と、このようにゆっくりまったりと作業を進めてはいたのですが、 気づいてみれば掲示板にバグ報告が。 =□○_ 考古学者さん、youkanさん、有難うございます。お返事遅れて御免なさい。  #バグ発見のための視点は多いほうが良いです。 まったり作業の中で修正されていたものもあり、いなかったものもあり。 すぐに直せるものは直して、試験版を更新Upしました。 …まだ手をつけるべき箇所は2,3残ってますけどね(- -;)。  #特に攻撃側と防御側の名称混乱は、  #首刎ねだけでなくartifact.c内の追加コードをごっそり手直しする事になるかも。 ライトセイバーの移植をはじめた所だったけど、 これは一時保留にして、そろそろ正式版として出せるよう力を入れるべきかなあ。 ------------------------------------------------------------ 09.09.24-09.09.27 ([Re:3]FHSパッチver0.8.23[未公開]) よ、ようやく移植成功… え、何がって? So-MiyaさんのHTML出力機能追加パッチですよ。 ずーーーっと以前から何度も挑戦してはいたのですが、  #FHSのver0.8.1*からだったか、それとも0.8.0*の頃からだったか… 今まではまともに動かなかったのです。 DUMPファイルに直前のメッセージと最終メッセージ位しか書き込まれない状態。 なんとかuhitm.cの調整も一段落したので、今回またまた再再再…挑戦。 まずは愚直に移植。 ただoptions.cのcompopt[]だけは、JNetHackのバージョンが上がった時に和訳が 追加されているので、適当に追加。 やはり#html statusによる出力は変わらず。 #html mapによる画面取り込みはうまくいってるんだけどなあ。 refの値が正常書き込みチェックのために頻繁に更新されているように見受けられたため、 これが怪しいのではと思い、大量に(wizardモード専用の) pline文を押し込んで確認。 どうも ref = fputs(***) の後は、refの値が正になるため、 その後の処理はそのつど if(!ref) で弾かれている模様。 ところで fputs() って何の処理だろう。srcフォルダ内には見当たらないし… と思って色々と探してみた所、 ---- 参考: http://ohmoriws1.ms.kagu.tus.ac.jp/1997/sotsuken/miyakosi/c04.html >「fputs(ファイルへの1行書き込み)」 > >(書式) > fputs(buf,fp) > buf : 文字列バッファ > fp : オープンされているファイルポインタ > >(機能) > バッファbufの文字列('\n'が終了マーク)をファイルポインタfpで示される > ファイルに書き込みます。'\n'は書き込まれません。エラーならば−1を返します。 ---- …えーと、「エラーならば−1を返します」ということは、 正の値が返っても別にエラーではないはず…ですよね。 それを if(!ref) で弾かれては動くはずもなし。 という訳で、 - if(!ref) で条件付けしている箇所は、全て if(ref >= 0) に置き換え -幾つかのコードでは、refが負の時には1を返すようになっていたので、 これは-1を返すように置き換え。 これで、ようやくまともに出力できるようになりました。 長かった…うるうる (T T)(; ^)。 ↓ちなみに現在のところ、htmldump.readmeに追加した文は以下の通り: ---- FHSパッチでの追加案内 [by Sakusha] Windows用のdefaults.nh (sys/winnt/) に限り以下のオプションを追加してい ます。 OPTIONS=dump_disclose:yu (足元にあるアイテムの出力確認) OPTIONS=dump_autoname (セーブファイル名の自動割り振り) known bugs: 材質が変化しているアイテムも、DUMPの中では材質色ではなく元の色で表示さ れます。 開けたことのない足元の容器の中身がDUMPに出力されてしまいます。(本家バグ) FHSパッチでの履歴 2009/09/27 最終メッセージに死因が表示されないバグを修正。 セーブ時の自動DUMP出力を一旦廃止。(足元に陶器像があったとき止まった) 2009/09/26 JNetHack3.4.3-0.10+FHSパッチ試験版(0.8.22aベース)に移植。 DUMPファイルに直前のメッセージと最終メッセージしか書き込まれないバグ の修正。 htmldump.readmeにおいて画面HTML出力コマンドが'#html screen'と書かれて いたのを'#html map'に修正。 セーブ時にもDUMP出力を行うようにした。(但しy/nを尋ねずいきなり実行し てしまいます。) ---- htmldumpFHS.readme に変えようかなあ。 ------------------------------------------------------------ 09.09.07-09.09.23 ([Re:2]FHSパッチver0.8.23[未公開]) youkanさんのblogより。 色々頑張られてますようで。 -- > NetHackでツキマーの舞踏風 おお、リビングソード実装されましたか。 そういえば以前にリビングソードやリビングアーマーについて 色々議論した掲示板ログはどこにいったっけ… …にうきゃら掲示板(補助用)の過去ログが、自サイトの掲示板の過去ログと ごっちゃになって消えてた… =□○_  #旧CGIの過去ログに残っていたのを再移植して復帰。いそいそ。 -- > 毒の武器 > > (前略)SLASH'EMのコードを見ると…毒の処理そのものが無くなってる? あれ、FHSパッチでもSLASH'EMのコードを参考にして組み込んだはず… 見てみたら、確かにSLASH'EMのmhitm.cには '->opoisoned' の記述が見当たらないですね(汗)。  # FHSパッチでは組み込み済み。自分でコード追加したのかな。 -- > 色のオーバーライド ふむ、FHSパッチの追加アイテムで利用できそうなものは何があるだろう。 …飴類やお菓子やチョコの色を変えるくらいか? (- -;) あとはカラーろうそくとか。 …うーん (- -;);;; ---- で、現在はAutothrustの処理の改善継続中。 というより、brassのuhitm.cを丸ごと移植しかねない勢いでコード反映中。 ただ、やはりvanilla基準なFHSパッチに合うように、色々と取捨選択はしてますが。 併せて、SLASH'EM等から移植したコード類や自作コード類も再整備。 場所によってはほとんどスクラップ&ビルド。 その過程で見つけた不具合も適宜修正。 怪物の分裂処理とか、幾つか分離独立させたい処理もあったけど…これは後でいいや。 …未だ作業は中途半端なので、コンパイルしてもuhitm.cでエラーはいて止まります… =□○_ ------------------------------------------------------------ 09.09.02-09.09.06 ([Re:]FHSパッチver0.8.23[未公開]) ふと気になって、マップ数を数えてみる。   2009.09.01現在 .levファイル 226個 そういえば以前、youkanさんが掲示板でファイル数に関して言及していたような。 > [No.285] kobold-3 > youkan - 2006/02/11(Sat) 17:40 > FHSパッチの上にHeck^2パッチを当ててみたら、nhdatに入るファイル数をオーバー > してしまいました…。まあ dlb_main.c の MAX_DLB_FILES を書き換えれば済むのですが。 util/dlb_main.c の MAX_DLB_FILES書き換えか。 見てみたら、既に200->300に増やされてました。 nhdatには.levファイル以外にも含まれるだろうけど、しばらくは大丈夫かな。  #但し新職業やらクエストやらを追加する時には注意が必要。  #クエスト1つにつき開始階(*-strt)、中間階(*-loca)、最下層(*-goal)と  #途中階2種(*-fila/filb)、合計5つのファイルが加わるようだから。 閑話休題。 ---- 現在、移植したAutothrustの処理を更に改善中。 現在は飛び道具の場合、自動射撃でもいちいち発射方向を聞かれるので(ぉ)。 飛び道具の場合、vanillaはbrassと違って発射方向が8方向に限定されているので、 その射線から外れている場合は自動射撃しないようにする必要があるんですよね。 おまけにFHSパッチでは怪物の幻影処理もあるので、 幻影(の本体)を目標としようとした場合にはその幻影に向けて自動攻撃するよう 処理しようとしたら、これがなかなか難しい。 幻影の位置を変数に代入していたら滅茶苦茶な値になってしまい、 結局ハードコーディングに。 registerで記憶させる必要があるのかな。 …と思ってたら、代入変数を両方ともx側にしてた… =□○_ さあ次は、長斧装備時に幻影(の本体)を目標としようとした時に 手近な怪物を殴りに行くのを何とかしないと。 ------------------------------------------------------------ 09.07.21-09.09.01 (FHSパッチver0.8.23[未公開]) brassにならい、ナズグルに劣化の反撃能力を持たせてみました。 但し、吸魔の怪物と違い、強化値+0以下の武器(聖器を除く)は 粉砕されるようにしました。  #原典通りに「塵に」したい所だったけれど、  #武器破壊聖器との処理の兼ね合いもあり「粉々」に。 やはりナズグルはこうでないと。 確認の為にwizardモードでナズグルを召喚して馬だけ倒しておき、 その後に兵士やら何やら召喚しておいて争いの指輪をはめ、 離れた場所から高みの見物。 …ナズグルと将軍による壮絶なる馬の奪い合いが繰り広げられてたり(^^;)。  #片方が落馬すると、もう片方が奪って乗って… ---- 某所でなにやら新聖器のパッチが。  #たまーに拝見してます。書き込んだ事は無いですが。 強力のランス、早速拝借しました。 まともなランスの聖器です(ぉ)。  #なにせ騎士の魂は、騎士は騎士でも…(^^;)。 無論、細部は色々とFHSパッチ仕様に。 ---[追加]ペスティレンスおよび病気攻撃をもつ怪物に追加ダメージを与えるようにした ---[追加]騎乗時に限りclimbing_wear()として扱うようにした ---[追加]祝福されていない場合,騎士の魂と同様に暴走する事があるようにした …あー、病気耐性は持たせませんので悪しからず。 また騎士の魂も、突撃時のダメージを上げました。 現在は突撃が発動しやすい(副作用あり)ものの、ダメージは普通のランスと一緒でしたもので。 ---- JSLSH'EMで、ゲーム内でのコマンドヘルプファイル(dat/jcmdhelp, dat/jhelp, dat/jhh)が 整備されたことを知る。 てか、これらもれっきとしたソースファイルだったのか…。  #拡張子が無いから、コンパイル時に自動生成されるものとばかり。  #…あ、jwizhelpも同じような仕様か。 そういえばFHSパッチでもコマンド幾つか追加変更しておりました。 この際だからと、洗いざらい再検討。 JSLSH'EMの各コマンドヘルプファイルをFHSパッチのものと突き合わせたり、 brassのcmd.cも参照してみたり、 どのキーをどれに割り振ろうかと試行錯誤してみたり。 現在の試験版では以下のようになっています。  #突貫工事で作ったものなので、使い勝手によってはまた色々と変更するかも。 ---- **新規コマンド annotate (Ctrl-N) : [Dungeon Map Overview] 現在いる階に名前をつける overview (Ctrl-O) : [Dungeon Map Overview] 迷宮の大まかな構造を表示(詳細情報はウィザードモードのみ) auto (v) : [Autothrust] 最後に攻撃した目標に自動的に攻撃 purify (対応キー無し) : [巫女パッチ] ユニコーンに治療を受ける/ 水上/溶岩上でみそぎをする(巫女限定) stance (対応キー無し) : [Monk Void Modifier] 戦闘スタイルと振る舞いを調整する(武闘家限定)  #Autothrustはbrassから新版のコードを移植。  #また、キーだけでなくコマンド文字入力(#auto)でも使えるように改造。 **既存コマンドの機能追加 (F) : [Martial Arts Boulder Splitting] 気を練って岩の打ち砕きを試みる loot (l) : [FHS] 足元の草地から草を採取/ [Clarent patch] 石壁に刺さった武器を抜く pay (p) : [other services] 勘定が無ければ追加サービスを受ける (/) or (;) : [brass] マップ上の怪物指定時は装備品や予備の武具の一覧も表示 monster (対応キー無し) : 怪物の能力を使う([FHS] 複数の能力をもつなら選択可能) **既存コマンドのキー配置変更 -簡易バージョン表示(v)、長文バージョン表示[version (V)]、 コンパイル時のオプション表示(Meta-V) の3つをまとめ、 version(Ctrl-V)から選択して呼び出すようにした -vanillaではウィザードモードでのレベルテレポート操作が(Ctrl-V)に割り当てられていたが、 これを(Ctrl-M)に移動 これによりvキー周りが空いたため、 -brassにならってAutothrustに(v)を割り当て -vanillaではホットキーの無かった#rideを(Meta-V)に割り当て  #現在は(V)が空いてます。 ---- あとはbrassとJSLASH'EMを参考に各職業の称号を変更してみたり、 ついでに新規職業(の骨組み)をランダムクエスト対応に加工してrole.cに組み込んでみたり。 剣士(yzhさんの(新)戦士パッチ)と海賊辺りは、組み込もうと思えばすぐにでも出来るんですけどね。 クエスト周りの追加以外、さほど加工しなくてよさそうだし。  #例えば公務員だとロンギヌスの槍を、  #ジェダイだとライトセイバーを実装したくなる。  #Sillyの職業だと各職業のテクニックも欲しくなる。  #吟遊詩人は音楽の扱いを考えなければ…  #といった感じ。 ---- で、何とか試験版090831として公開。  #…残暑見舞いイラストと平行して月末にやるのは無茶 =□○_ ->ひどいバグがみつかって、次の日に改訂版を出すはめに(_ _;)。   #残暑見舞いメールも出せてないのに… ------------------------------------------------------------ 09.06.22-09.07.20 (FHSパッチver0.8.22a) 最近、xreaの動向が怪しいようなのが気になる所。  #Valueドメインやwikiwikiと同様に、デジロという所が運営しているらしい。 サイト5の隔離や放棄も含めて対策を考える必要がありそう。  #そういえばメインをXP機に移行したから、sourceforgeへのアップロード上の懸念が1つ減ったのか。  #使いこなせるように勉強するかな… 閑話休題。 ---- そういえば前回書き忘れてましたが、 JSporkHackのソースを斜め読みしていた所、 > ADirge: ダージ: #SporkHack# > #"Dirge of Kerberos"のカタカナ表記はwダージュw。になってるけどとりあえずFHSpatchに準拠# …ありゃ、元ネタがあったのですか。 元ネタ準拠で変更しても良いのですが、忘れたまま0.8.22を出してしまってました… (- -;) jtrnsobj.dat周りをいじったらセーブファイルの扱いはどうなったっけか。 ---- まあ、暑さにうだりながらも SLASH'EMやSporkHack等で目に付いた箇所を適度に反映。 …その過程で、まずそうな箇所がぞろぞろ見つかるし(汗)。 あまりに多いので0.8.22aにバージョンUpさせました(_ _;)。 ------------------------------------------------------------ 09.03.06-09.06.21 ([Re:2]FHSパッチver0.8.22) 5月頃から久しぶりに手をつけてみてます。 コードを眺めなおし、手を加えてはあれこれ試験、 でもって試験中に不具合みつけては修正、の繰り返し(汗)。 そんな中、武装解除の魔法で落ちる不具合を見つけたのでこれも修正。  #disparse_item()やmdisparse_item()単体には  #アイテム手放す際の処理をろくに組み込んでなかったか…  #引用時には気をつけないと。 でもって試験してみた所、 dmg=6 姿の見えないデミリッチはあなたに魔法をかけた! 「武器よ去れ!」 あなたのユニコーンの角は手から弾き飛ばされた! normal_dmg:10 wtype=18 dmg=7 アルテミスは悲しく鳴いた! あなたはかわいそうなアルテミスを倒した! レベル5にようこそ. あなたは遠くで雷鳴を聞いた... --More-- …自分が手を下した扱いになってるし(- -;)。 バナナの皮の罠でアイテム飛んでった時と同じ処理にしたからなあ。 …ほっとこ。(マッテ) ---- その後も色々手直し。 怪物の魔法に手を加えてみたり、 武器落としに手を加えてみたり、 人食い鞄&生ける熊の罠の召喚処理に手を加えてみたり。 無論、その過程でもコード間違いやエラーは頻発させるし 様々なバグも見つかるし(汗)。 そうした中、music.cでの楽器類の処理にごっそり手を加えてみたのですが、 その試験中に、争いの指輪をはめた状態でオークやらニンフやらを何体も召喚配置していたら:    bug 0370 怪物が他の怪物からアイテムを盗むとadd_to_minvのエラーが出てゲームが落ちる はうっ!! (> <;) brassからetherial処理を移植した時に、以前の箇所のadd_to_minv()を 消していなかったため二重に判定されていたのが原因でした。 さすがにこれを放っておく訳にもいかないし、 以前のバージョンから時間が経っている事もあり、 試験不十分な気もしますが正式版ver0.8.22として仕立て上げて公開。 タイル対応せずに出すことも覚悟していたけれど、そちらも何とか間に合いました。 …タイル番号の割り振りは滅茶苦茶ですが。 ------------------------------------------------------------ 09.02.16-09.03.05 ([Re:2]FHSパッチver0.8.22[未公開]) FHSパッチ関係ファイルのディレクトリを移動。  #但しダウンロード用ファイルはとりあえずそのまま。  #次のUp時にでも移動させるつもり。 今まではRJNH案の資料類と同じフォルダに入れていたのですが、 Up時にいちいち全ファイルを確認するため混雑時に時間がかかって…  #RJNH案のファイルは(当時の都合上)平造りになってて、階層化されてないんですよね。 なのでこのメモも一緒に移動。 今までのメモは以前のディレクトリに残しておきます。 ---- うーむ、   bug 試験版081228 イーノグの階層の構造が、ゲーリューオーンやmicgateの階層と同じになる これなのですが、 どうもdepth()を求める時に、イーノグ&ゲーリューオーンの階層だけが0扱いになっている模様。 ゲーリューオーンの階層判定もおかしかったのか…micgateと同じ構造にしていたから気づかなかった。 その下にあるmicgateの階層や、並列的に実装しているディスペータの階層はきちんと数値出ているのになあ。 対処法、いまだ不明。 →結局、dungeon.c内のlevel_map[]に上記2階層を追加してなかったのが原因と判明。  このせいかー!(> <) そういえば、これを確認する過程で気づいたけど、 今は地獄の描画時に、地形1マス毎にいちいちIn_which_hell()を呼び出してるので なんとか簡素化したい所。  #地形の色を変化させる為の判定に用いている。 In_which_hell()の値をどこかに半恒常的に記憶させればいいのかな。 で、階層移動の際に書き換え。 …どこいじればいいんだろ。要調査。 ---- メモ書き: 原因不明の落ちるバグ、 とりあえずfrogman warriorを生成する時に稀に起こる模様。 帰り値のotypが-10の時に落ちたり、otyp確認出力前に落ちたり。 武器生成時にmade_and_ckeck()とか変な処理行ってるのがまずい可能性も有り。 要調査。 →どうやら、武器を決めた直後に防具を選定する際、  両手持ちかどうかの判定にbimanual(otmp)を用いていたのがまずかった模様。  じつはこの時点で決まっているのは武器の種類(otyp)だけで、  まだ武器そのもの(otmp)は生成されてないんですよね。 ---- そろそろ実装も煮詰まっただろうという事で、 一区切りつけるためにタイル整備にかかる。 現在、シンボルSまで完了。 ------------------------------------------------------------ →これ以前は別Fileにて。