------------------------------------------------------------ FHS patch (Funny-Honey-Spit patch) 蛇足メモ 作成者:Shiganai Sakusha ------------------------------------------------------------ ------------------------------------------------------------ 雑記 [にうきゃら掲示板(補助用)と連動している内容もあります。(こちらで書かれた内容が掲示板で解決とか)] ------------------------------------------------------------ 09.01.17-09.02.15 ([Re]FHSパッチver0.8.22[未公開]) あははははははははは(^^;) 今までMONK_VOIDはうまく動かなくてコメントアウト状態だったけど、  ・stanceを切り替えられない     →コマンド処理の和訳の部分への移植漏れ  ・通常のプレイでもデバッグメッセージが出る     →#ifdef DEBUG の箇所を移植時にwizard対応にしていなかった 何のことはない、単なる移植ミスだったという落ちでした; これらを修正したり、ステータスメッセージを改良したりして実用化。 正式に動かせるようになったため、stanceの内容も把握。 どうやら装備品の合計数が増えるとvoidが下がっていくようです。 防御の構えは、voidが高いとACが下がる。また回避率が上がり命中率が下がる模様。 攻撃の構えは、命中率が上がり回避率が下がる模様。voidが低い方が効果的…なのかな? うーん、身かわしの棍や二天一流の#invoke効果に voidを片方ずつ導入しようかとも思ってたけど、 これだと分けて処理するのは難しいかも。 ---- むう、2/12以降、hack@holicがアクセス不能に。 データ集&ネタ集(ぉぃ)としてちょこちょこ更新したり参照したりしてたのですが… FHSパッチ等の改造・移植中に元仕様を確認したい時にも重宝してたのになあ。 Internet Archiveに残っているのは去年はじめの頃の分までか。 そのあと更新された分はどの位あるんだろ。 まずは早期の復帰をお待ちしております… →[追記]:  Argrathさんが旧墓堀のミラー(閲覧のみ)を設置されたようです。  NetHack PortalのForum掲示板を参照。 ------------------------------------------------------------ 09.01.14-09.01.16 (FHSパッチver0.8.22[未公開]) そういえばSLASH'EMから移植したノールって、 生成時にドラゴン鎧を持ったりしているので 手に負えないほどのACになるかと思いきや、 着用している風がないので妙だと思ってたら、 実は体格がMZ_LARGEなので鎧を着れなかったり…(w;)  #大事に抱えてるだけか? 閑話休題。 ---- とりあえずバグ修正しつつ、 巫女の#purifyに手を加えてみました。 ペットのユニコーンに角で治療してもらうというもの。掲示板でのyoukanさんの案より。 確かに巫女に対してはユニコーンは必ず友好的なので、角を奪わず生かす方法は欲しいですよね。 前提条件は色々と指定する必要があったけど、 治療処理の本体はuse_unicorn_horn()がそのまま使えたのであっさり完成。  #元々、自分がユニコーンに変化している時の#monsterコマンドでも使われている。 試験版限定パッチにて公開。 ------------------------------------------------------------ 09.01.13-09.01.13 (FHSパッチver0.8.21e2) 昨日はUp後にyoukanさんのご報告に気づきました… =□○_ 緊急の問題だったのは呪われた松明に関するバグ。 ちなみにこのバグ、SLASH'EM最新版(7F7F3)でも起きることを確認。 似たような報告が本家にありました。 [ 1957126 ] Cursed torch causes dungeon to collapse (2008-05-04) http://sourceforge.net/tracker/index.php?func=detail&aid=1957126&group_id=9746&atid=109746 それに対するパッチがこちら。 [ 2181262 ] Patch for cursed torches crash (2008-10-20 ) https://sourceforge.net/tracker/index.php?func=detail&aid=2181262&group_id=9746&atid=309746 複数重なった松明を点灯時に分割(しようと)する処理が 点灯失敗時に悪さをしていたようです。 …で、該当パッチ見直してみましたが、これでは不十分かもしれません。 該当パッチだと、obj->quanが1を超える時に(obj == uwep && welded(obj))なら処理を停止するようになっているけど、 これだと「装備せずに[a]pplyした場合」はすり抜けてしまうような。  #自動的に装備する処理はこの箇所より後に入っている。 ---- …なので、無い知恵絞って修正しました。 松明を装備後に分割しても構わないはずだし、 要は分割したものと装備したものとが重ならないようにすればよいはずなので、 分割したものをhold_another_obj()でインベントリに割り振る前に 装備した側の強化値を一時的に変化させ、処理後に元に戻すようにしました。  #分割したものを強制的に足元に落とすというのも考えたけどちょっと不自然。  #値にbypass等を使う事も考えたけど、結局確実性のありそうなこの方法に。  #まあこれなら+127松明(w)でも用意しない限りは大丈夫でしょう。 ついでに、松明を消す際には改めて持たなくても良いように改良。 という訳で、昨日の今日ですが修正版をUp(_ _;)。 ------------------------------------------------------------ 09.01.07-09.01.12 (FHSパッチver0.8.21e) ランダムクエスト移植状況。 RANDOM_QUEST、RANDOM_QUEST2 :完了。 FIGHTER :完了。 FIGHTER_TYPE2 :完了。 MIKO :src周りは完了。includeやdat等は要確認。 CAVEMAN_PATCH :(未着手) KNIGHT_PATCH :(未着手) コンパイル :(未着手) 説明類製作 :(未着手) 基本的にはFHSパッチから移植しつつ、 移植後にFHSパッチ関係の処理を取り除いたり、 必要に応じて(FHSパッチ側も含めて)書き換えを行ったりしています。 コンパイルは全て移植し終えてからにする予定。 あと、他の方が自作クエストを組み込みやすくなるように readme等も整備しないと。 ---- FHSパッチですが、試験版ではpermonstの構造にも手を加えています。 ・mresists; /* resistances */  怪物の持つ耐性を定義。  SLASH'EMではMR_PLUSONE〜PLUSFOURも定義。   #例えばPLUSONEなら+1以上の武器でないとダメージを与えられない。   #FHSパッチでは値だけ導入したけど未動作。  FHSパッチでは、更に食性も定義。(MR_CARNI, MR_HERBI等)   #M1_CARNIVORE等をこちらに移動。 ・mconveys; /* conveyed by eating */  怪物を食した時に得られる耐性を定義。  FHSパッチでは、MR_HITASONE〜HITASFOURも定義。   #例えばHITASONEなら+1の武器を振るっている状態。   #SLASH'EMではこれもmresistsに含まれていたのをこちらに移動。   #但し値だけ導入したけど未動作。  FHSパッチでは、更に死体の肉食性・草食性も定義。(MR_FLESH, MR_VEGAN, MR_VEGETARIAN) ・mvulnerables; /* vulnerables */  今回新設。  怪物の持つ弱点を定義。 食性を移動させたのはM1の項目を空けたいため。 とりあえずM1_LOGGINGを(値だけ)入れてみました。 欲を言えば食性はmvulnerablesに移動させたい所。 こちらならMR_PLUS**やMR_HITAS**に邪魔されないので、 食性を増やす(石を食べるとか)事も可能になるから。 修正箇所が多くなりそうだけど。 M1_POISとM1_ACIDもmconveysに…は割り振る値が足りなくなりそう。 これもmvulnerablesかなあ。 それともMR_HITAS**をmresistsに差し戻してmconveysの空きを作るべきか。 そうそう、他のヴァリアントに丸ごと移植しやすいよう 周辺部分も整備しておかないと。 ---- で、bugfixした正式版21eと、調整途上ですが試験版をUp。 正式版は今までタイル版のコンパイル時にエラーメッセージが出ていたけれど、 今回はそれらも修正しています。  #今まではWin98でコンパイルしていた為、エラーメッセージが強制的に  #流れてしまって状況がつかめなかった。  #XPでコンパイルするようになって、ようやく序盤のメッセージが  #確認できるようになった次第。 まだ表示がおかしい所はありそうだけど(- -;)。  #彫像が真っ黒だったり、短剣がフォーク形で表示されたり。 その辺りは次verで再検討する予定。  #他の実装が一段落した後で最後にタイル作業にかかるため。 ------------------------------------------------------------ 09.01.06-09.01.06 ([Re:4]FHSパッチver0.8.22[未公開]) 昨日の今日ですが、youkanさんからのバグ報告追加。 ・begin_burn(), burn_object() に木蝋のろうそくに対する処理がないため、エラーが発生した後に永久光源として使える ・通常のろうそくに対して candle_with_candelabrum_name() が "" ではなく NULL を返すため、ろうそくが短くなったときにメッセージがおかしくなる ・ろうそくの無い燭台を使うと「どれをaffix candleか」 ・道具ならなんでも燭台に取り付けられる。燭台自身も取り付けられる。行うと燭台が消滅 ->{試験版}: getobj()周りでの設定漏れ ・shktailor[] に対して女性チェック('_')がない ->{試験版}: shktailor[]入れ替え後も以前の処理(全員女性)が残っていた ・thitmonst_core() の小手チェックに練気の小手が抜けているので、装備して飛び道具を撃つと“Unknown type of gloves(277)”エラーが出る ->{0821d}: bug 0362 バグばかりでごめんなさい(_ _;)。 修正diffUPしました。 ついでに以下も修正/調整しています。 ・岩を[F]orceコマンドで砕く時に、練気の小手装備状態なら必ず成功するようにした  (今までは未設定、スキルが低いと運次第)  但し武器を装備していたり、素手/マーシャルアーツスキルを全く上げていなかったり  した場合は試すことさえ出来ないのは従来どおり。 ・弱点発見確率を下げた そしてもう1つ見つけたもの。 ・bug 0363 ファイアイーターを装備した際には,所持アイテムの火は消えるべきである. こちらは今回の修正では未対処。 装備したタイミングで特定処理を行わせるのは既にやっているので(聖器メッセージとか)、 その箇所を探して所持品の消灯処理を追加すればよさそうですが、 探すところから始めないと。 ------------------------------------------------------------ 09.01.01-09.01.05 ([Re:3]FHSパッチver0.8.22[未公開]) 明けましておめでとうございます。 と言いつつ、今年はどこにも年始メール出してないですが… 閑話休題。 ---- 新年を機に、ファイルに入れているcopyrightの年号を-2009に書き換えてみました。 コンパイル時にdesファイルの冒頭(bigroom.cの15行目…内容記述の冒頭部)から syntax errorが出るように =□○_ 紆余曲折の末、utilフォルダのファイルを年号変更前のものに差し替える事で 何とか解決。 util内のファイルには下手に手をつけられないか。むう。  #後でランダムクエストのソースを確認してみたところ、  #makedefs.cやlev_main.cならいじっても大丈夫そうだったけど。 ---- 新年早々、youkanさんから試験版のバグ報告を頂きました。 有難うございます。 掲示板に頂いたものですがこちらにも。 > 観光客の初期所持品リストのうち、FOOD_CLASSのspeがUNDEF_SPEではなく0になっているため、 > speを使う食料品でバグが発生するようです。 > > 缶 → 空 > slime mold → Bad fruit #0 食料品のspeは喫茶店関係の「特別製」以外にも使っていたのですね =□○_ ---- そして現在は、ランダムクエストパッチのバージョンアップ作業中。 といってもFHSパッチから必要部分を順次vanillaに移植しているため、ほぼ再構築も同然ですが。 巫女パッチ、Cavemanパッチ、Knightパッチの扱いをどうするかは思案中。 もしかしたら戦士Type2のように移植するだけしておいて、 config.h内でコメントアウトした状態にするかもしれません。 さて、それより先に試験版のbugfix diffを作らないと。 ------------------------------------------------------------ 08.12.29-08.12.31 ([Re:2]FHSパッチver0.8.22[未公開]) kokaさんから、試験版のバグ報告を幾つか頂きました。 有難うございます。 以下、ご報告内容と対策。 ---- > -鉱山の町の寺院が廃墟になっていて、 左下のスミがなぜか本屋になっていました。 ->こういう構造の場所ですね。L氏による追加の鉱山街の一部。 -----..----..-------........... |222+..----..|33333|---........ |222|....|...+33333|..|.------- |222|........|33333|..|.|..|..| |---|........-------+--.|F+-F+| | |....................|.....| | --...........-+-----+-|.....| ---...---+---..|..|..|..|.....| --....|.4444|..|..|..|..--+---| ......|.4444|..----+-----.....| .T....|.4_44|.................- ......|.4444|...------......... -..T..--------..+....|.....---- --.........-----|....|.....+..| --.----.....----------.....|..| ...---.....................---| 上図での数字は、部屋の設定を見やすいように割り振ってみたものです。 2: REGION:(1,1,3,3),lit,"candle shop" 3: REGION:(14,1,18,3),lit,"shop" 4: REGION:(8,8,11,11),lit,"temple" _: ALTAR:(9,10),align[0],shrine …temple(4)の範囲が部屋の左側まで届いてないですね(汗) おそらくこれが原因ではないかと。 > -量子物理学者に自分につながれている鉄球を投げつけて倒したら落ちました とりあえずwizardモードにて、オーク1体、うさぎ2体を倒しても落ちず。 量子物理学者を倒した時には研究着を残す(事がある)ようになっているのですが、 一応その周辺の処理を変更し堅牢化しておきました。 これで直ってくれればよいのですが。 > -探査する杖を自分に向けて振ったら落ちました。 > (中略) > forループでobjって変数を使ってしまっていて > ヌルポインタをmakeknownに入れてるのが原因のようです。 あう、本家の処理内でobjを勝手に書き換えるようになっているのですか(泣)。 int otyp = obj->otypを最初に定義しておくようにしました。 ちなみに、これは試験版特有の症状です。  #正式版ではこの箇所は書き換えていない。  #不思議なワンドの移植に伴う変更であるため。 ---- 以上。 でもって、これらを修正した後に 不思議なワンドや嵐の角笛がまともに使用できない事に気がついたという… =□○_ それらも修正したdiffファイル公開。 但し試験版のに関してはobjects.cに多少手を加えているため セーブファイルがどうなるかは分かりません。  #多分大丈夫だとは思いますが… それでは皆様、よいお年を。 ------------------------------------------------------------ 08.12.28-08.12.28 ([Re]FHSパッチver0.8.22[未公開]) > 早速、雪女郎周りと刀の命名周りと > 投擲周りのいずれか(or複合)で > 落ちるバグがあるようで…(T T) 直りました… =□○_ 結局、刀の命名周りの不具合がその後の不安定動作を誘発していたようです。 「命名処理」と「雪女郎に刀を拾わせる処理」を別々に行わせていたのですが、 命名処理できちんと名づけられたはずの銘が、 何故か拾う時点では消えているという不可解な状態でした。 そのせいか、  ・雪女郎生成中にいきなり落ちたり  ・雪女郎が攻撃してくる最中に落ちたり  ・雪女郎に一度に複数の飛び道具を投げつけると飛び道具のsplitobj処理の最中に落ちたり  ・メッセージで雪女郎の名前が表示されるはずの箇所が文字化けしててそのまま落ちたり  ・雪女郎を倒した途端に落ちたり と、問題の根源を絞れないような不具合が頻発。 命名処理を雪女郎生成処理の内部にハードコーディングし、ようやく解決しました。  #後に命名処理と刀を拾わせる処理を一体化し再度分離。 原因不明の落ちるエラーもこれで直ってくれればよいのですが。 ------------------------------------------------------------ 08.12.28-08.12.28 (FHSパッチver0.8.22[未公開]) そうそう、試験版の方は  新要素はほとんど未試験 ですので悪しからず。 早速、雪女郎周りと刀の命名周りと 投擲周りのいずれか(or複合)で 落ちるバグがあるようで…(T T) 怪物の魔法詠唱によるものかもしれないし 怪物名表示のせいかもしれないし 何が原因なのかを探るのもこれから。 ------------------------------------------------------------ 08.12.23-08.12.27 (FHSパッチver0.8.21d) > 環境再構築 結局、初代機(Win98)は沈黙。 これからは新型機(XP)でコンパイルする事になります。  #最新型機(XP)はスピーカー出力部のがたつきがひどかったり  #(音声基盤ごとすっぽ抜けかねない状態)、  #キーボード認識しない時があったりと、どうもまだ不安定。 BCCコンパイラだけは移行させていなかったので、Borlandから再度取り寄せ。 エラー内容の表示が英語になってしまったけど、 今まで散々エラーまみれのコンパイルで鍛えられ(?)てきたせいか、 どんなコンパイルエラーなのか英語でも漠然と想像できてしまうのは 果たして良いのやら悪いのやら(^^;)。 ---- コンパイル環境が整ったところで、 幾つか見つかった不具合(まだ残ってたか…(泣))修正を反映し 正式版21dを公開。 クリスマスということで、試験版も同時公開。 クリスマスネタは何ひとつ仕込めませんでしたが(ぉ)。 …でもって、こちらの蛇足メモの更新までは手が回らず(T T)。 ------------------------------------------------------------ 08.12.02-08.12.22 (FHSパッチver0.8.22[未公開]) 中立用の冷気属性の聖器案がなかなか出てこない。 斧、それも片手斧辺りにしてみたい気もするけど… 何かよい聖器案がないものかと、久しぶりにSlashやらSLASH'EMの旧版(5E4)やらのソースに目を通してみる。 Icebiter…ストーンバイターと名前がかぶるなあ。 Fafhrd and the Gray Mouserの武器としてGraywandてのもあったけど両手剣か。 そんな中、ドワーフの優先聖器としてAxe of Durinという戦斧があったけど… 命中+5、全ての敵に2倍ダメージ。…グレイスワンダーの戦斧版かあ。 残念ながらそれ以外の特殊機能はなさそう。うーん。 閑話休題。 ---- まだまだイメージが固まっていないけど、ひっそり暖めている案のひとつ、 ランダム聖器。 名称ランダム、機能もランダム。 十分な量のレア金属を鍛冶屋に渡す事により 一振りだけ鍛えてもらう事が出来る、まさにそのキャラ専用の武器。  #防具も含めるかどうかは未定。 TNGの鍛冶屋を未だに導入していないのもこの為。 どうせなら既存の聖器ではなくオリジナルなものを鍛えて欲しい気はします。 ちなみにランダム聖器の入手機会を増やすなら案はあと2つほど。 ・特別なスレッジハンマー(武器としては使いどころの無い聖器にするとか)を  鍛冶屋に渡す事により、もう一振りだけ作成可能になる。 ・ヴラドが(ライフスティーラーの代わりに)装備 といっても、どのような機能を持たせるかとか それらの機能をどこに記録しておいてどう処理するかとか バランスがどうなるかとか 色々と考えるべき事は多いですけどね。 ---- 上であげた中立用の冷気属性の聖器ですが、 結局、氷の槍にしました。 実は槍だと属性間の本数の偏りが大きくて,今まで敬遠してたんですけどね。 ちなみに今回の変更により各属性の槍の本数は以下のように。 秩序 A("Dragonlance", SPEAR, SILVER, 中立 A("Ice Pillar", SPEAR, LIQUID, A("Gungnir", DWARVISH_SPEAR, GOLD, A("Revolter", BAMBOO_SPEAR, 0, A("Asuibihc fo Naidraug", UNICORN_HORN, 0, 混沌 A("Sun Piercer", SPEAR, BLACKGEM, /*obsidian*/ /*FLINT_SPEAR*/ A("The Harpoon of Triton", TRIDENT, OLIHARCON, A("Merciless Mare", UNICORN_HORN, 0, 無心 A("Yokoyari", ORCISH_SPEAR, 0, A("Arm of Olympia", SPEAR, 0, A("Penetrator", JAVELIN, 0, …秩序の槍が1本だけ。 ならば中立から何か移行できないかと検討してみたものの、  グングニル   本来の持ち手がワルキューレの中立神。  リボルター   支配階級に対抗する武器を秩序属性にできるはずもなく。   (衛士の祭式を考えると、かえって混沌属性の方がふさわしいという事にも)  乙女の守護者   惑星戦士系の武器は惑星によって属性を決めているため動かせない。     秩序:水星、金星、(月)     中立:火星、ちび     混沌:木星、(土星)   …ぜんぶ秩序属性にしてしまうなら別ですが、   それはそれで火だの冷気だののバランスを崩しそう。 ままならないものです。 やっぱりFire Pillarも実装するかなあ。 そういえば電撃属性の聖器も考えないと。 雷神も中立神だけど(- -;)。 ---- と、色々書いてはいますが 実は現在、コンパイルが出来ない状態だったりします。 PCを並べ替えたら、接続周りで色々と不具合が出ていて PCによってはネットにつながらなかったりネットワーク接続が出来てなかったり。 一応、コンパイル済のバイナリィは12/1日のものがあるので 実地試験プレイはそれで間に合わせていますが。 環境再構築しないとなあ。 ---- 灰色エルフを倒して装備を拾ったら、通常状態からいきなり圧迫状態に(汗)。 拾った物を全て落とし、個別に拾い直してみた所、 「青銅製のエルフの盾」が原因と判明。 そういえばmaterialパッチでは、材質によってアイテムの重量も 多少変わっていたようないなかったような。 基本となる値がどこで定義されていたやら…decl.cのmaterialwt[]か。   WOODの比重:  50   COPPERの比重:890 あうっ!(> <;) 多少どころではないですね(滝汗)。 今回の場合、エルフの盾は本来木製でちょうど重量50だから、 これを銅製にすると重量890… 鉄球や重しより重量のある盾って何なんだと(T T)。 金属と非金属とを混ぜて考えてはいけないのか。  #道理で鉄製の大箱も持ち上げられない訳だ。 何故かちょくちょく銀製のオークの武器や合金製のオークの防具が出たりもしているし、 素材周りは検討し直す必要がありそう。 あと、防具による素材ダメージも再検討が必要そう。 ミスリル服着ていると、攻撃してきたアンデッドが片端から触れては焼かれてるし。  #brassだと部位ごとにa/8の確率で「どの部位に命中したか」の処理が追加されているようだけど、  #そうした処理を導入する必要があるのかも。  #SLASH'EMのは防具ごとのAC依存だったかな。(「防いだ」メッセージにしか使われてなかったような気もするけど) ------------------------------------------------------------ 08.11.25-08.12.01 (FHSパッチver0.8.21c) 21b公開後、まずは今まで #ifdef FHS822で切り離していた箇所の調整に入る。 …のっけから食い違ってる箇所だの記述ミスだのの修正が必要でしたけど(- -;)。  #21bのコンパイルに影響しないよう、途中からはコンパイルの確認も何もせず(出来ず)に  #作業してたからなあ。 併せて21bで残っていた不用コードも整理。 monst.cなんて通常の2倍のサイズに膨れ上がってたし。 その後は、一時的な透明化妨害効果を完成させたり、まあ色々。 mon->invis_blkdに対応している箇所よりしていない箇所の方がやけに多くて 修正に手間取りましたけどね。 ちなみに一時的な透明化妨害で怪物が姿を現している時の表示は 普通に見えている時と一緒です。  #"I"表示にしようかとも思ったけど  #表示変更が面倒そうだし、Iへ攻撃する際に問題が出そうな気も  #するので取りやめ(手抜き)。 SLASH'EMのliquid leapもcomet leapとして改造移植。 ちなみにcomet leapはこんな感じ。   # invoke   どの魔力を使いますか?[l or ?*]   どこに移動しますか? (?でヘルプ)   ミラクルペイントという名の輝く魔法の絵筆が光り輝きはじめた!   あなたは空中に浮きはじめた!   あなたは通り道に残した狸の軌跡に光を巻き込んだ!   星の光が降り注ぎ,狸を焼いた! あなたは狸を倒した!   あなたは通り道に残した赤色モールドの軌跡に光を巻き込んだ!   星の光が降り注ぎ,赤色モールドを焼いた!   あなたは赤色モールドを倒した!   --More-- …ん? >   あなたは通り道に残した狸の軌跡に光を巻き込んだ! >   あなたは通り道に残した赤色モールドの軌跡に光を巻き込んだ! (単語の並びが)逆だ逆!(> <;) そういえば、#invokeの時には強制的に飛行モードにしていたけど、 #invoke後には飛行モードのon/offを以前の状態に復帰させた方がいいのかな。  #箒や魔法の絵筆における飛行モードの仕様上、  #次に#invoke可能になるまでは飛行モードonにする事も出来なくなるけど。 ---- この際だからと、FHSパッチでは年末より一足先にコードの大掃除。 例えば#ifdefの締めである「 #endif /*HONEY_XX*/ 」でも /*や*/と HONEY_XX の間に半角スペースが残っているのがあったり、 /*[Sakusha] ... */ とか /* ... [Sakusha]*/ でも /*や*/と [Sakusha]の間に半角スペースが残っているのがあったり。  #現在はどちらもスペースを残さないようにしている。 後は /* add XXXX */ というのも addの文字を取り払ってみたり、 半角スペースばかり8つ並んでいる箇所や 半角スペース4つ+タブという逆順で並んでいる箇所を、タブ1つにまとめたり。  #(J)NetHack本家の箇所には手をつけないように注意しながら。 それにしても多い事多い事。 とりあえず(修正後に)「endif /*HONEY」が幾つあるか検索してみたら、 srcフォルダ内だけで4483個。 修正時に引っかかったのも千数百あったような。 各パッチが入れ子になっているものも多いでしょうが、 その一方で#endifの後方パッチ名を省いているのとか 冒頭にHONEYが入っていないパッチ名なんかもあるから、 何にしても改造箇所は凄まじい数にのぼる模様。 …我ながら、よくここまで組み込んだ物だなあ。 ---- そして、いよいよ眼鏡類の分離にかかる。 アイテムカテゴリーの追加という未知の分野ですが…。 ソース内をTOOL_CLASSで一通り検索し、 該当しそうな箇所にLENSES_CLASSの処理を追加。 共用できそうな所は共用し、独自処理が必要そうなところはどんどん分離。 またTOOL_SYMも検索して同様に処理追加。 最初は他のカテゴリーの表示までおかしかったりしたけれど、 invent.cやobjnam.cなどなどの必要箇所(TOOL_CLASS検索では引っかからなかった所)を 探し出しては手を加えて修正。 それでもインベントリ内の眼鏡類が持ち物一覧に表示されないので 何なのかと思っていたのですが… options.cの def_inv_order[]にまで手を加える必要があったとは(- -;)。 という訳で、紆余曲折の末なんとか分離完了。 今回はTOOL_CLASSからの分離なので少しは楽でした。 一から組み直せと言われたら多分挫折していたでしょう…(汗)。 ---- といったように色々組んでいたのですが、その過程で見過ごせないバグも幾つか見つかった為、 現在の版のbugfix版である21cを出す事に。  #ドラゴン類をまとめて虐殺してたら、何気に竜王達のうちラドンだけ虐殺されてたとか(汗)。 ほんと、世にバグの種は尽きないですなあ(ぉ)。 ------------------------------------------------------------ 08.11.16-08.11.24 (FHSパッチver0.8.21b) 前回の書き込み以降もあれこれ手直ししたり、 細かいバグを発見修正したりしていましたが、 ようやく21bを正式公開。 …位相モールド表示バグを直してなかったような気もするけど、今はいいや(ぉ)。 ---- 特性のblockedについて少々。 ・対PC 装備依存の特性(extrinsic)に相当するのが、現在のblocked。 一時的な特性(intrinsic)に相当する記憶箇所は存在しないため、 これを新たに増やす必要がある。 それさえ出来たら、intrinsicと並列にタイムアウト処理をできるようにすれば とりあえずは動作するようだ。 ・対モンスター 「一時的な時間」の記憶箇所は、 基本的に「特性ごとに」新設しなければならない。 これは特性でも似たようなもの。 なので似た特性は一種類にまとめてたり、 時間経過でランダムに解除されるようにしていたりと 色々な手を使っているようだ。 新規実装には頭をひねる必要があるかも。 ---- …といった感じ。 まあ今の所、一時blockedとして欲しいのは 透明妨害くらいのものですが。  #例の聖器の主機能の一つにするほか、  #濡れたら一時的に透明で無くなるとか。 あとは対PC用限定になりそうだけど SporkHackにあったVALN系とか。  #火なり冷気なりに弱くなる。 SporkHackでは怪物についても火に弱いとか設定できるようにしていたけど、 これについては、わざわざM4_**を増やさずに指定してみようと思案中。  #取得耐性、食事耐性と並列させて耐性弱点の欄を新設すれば  #MR_**でいけそうな気がする。 ------------------------------------------------------------ 08.11.10-08.11.15 (FHSパッチver0.8.21b(未公開)) > ・ bug 0334 ロングワームが存在するセーブファイルを再開するとshow_glyphの >      エラーメッセージが出る ようやく尻尾をつかみました。 see_wsegs()内での幻影処理関係の追加部分が悪さをしていたようです。 対処ついでに、他のmix,miy(怪物の幻影位置座標)を使う箇所についても 「正式な座標範囲内であるならば」という条件文を挿入。 あとバグかどうかは確認してないけれど、mhitm.cにおいて remove_monster(mix,miy)が使われていた箇所を remove_monster_img(mix,miy)に変更。  #前のままだと、ちょうど幻影位置にいる実在の怪物を取り除いてしまうかもしれない。 やっぱりGrundHackの怪物幻影処理は、洗練されていない所が多いなあ。 人の事いえた身ではないですが。 ---- hack@holicで、brassのスティングが錆びるという話が出ていたので ちょっと調べてみました。 …ちょっとと言いつつ記憶の限りの情報源総ざらいでしたが。 ・JNH1.0.*では鉄製    (参考:松田さんのページ…のwebアーカイブ) ・JNH1.1.5でもたぶん鉄製 (参考:RJNHソースファイル) ・NH3.3では木製      (参考:koppeさんのページ) ・JNH3.4では木製     (参考:JNH3.4.3-10ソースファイル) ・brassでは鉄製、矢は木製 (参考:NetHack brass080712ソースファイル) ちなみにFHSパッチでは銅製。 但しmaterialパッチの影響を受けるため、たまに木製のものも生成されます。  #その他、願えば入手可能な材質も多いです。  #(特別な材質の聖器実装にも対処できるようにしてある) で、ついでにおもむろにソースを眺めていたのですが… ふと気になってバイナリィを起動し確認してみる。 あわわわ。 ・ bug 0346 しばしば青銅製のエルフの弓が生成される materialパッチでの材質調整を矢等と一緒くたにしてました。 御免なさい(_ _;)。 ------------------------------------------------------------ 08.09.07-08.11.09 (FHSパッチver0.8.21b_test3) > ・アイテムの新カテゴリ「眼鏡」 > (中略) > シンボルは「8」かな。 岩の表示に8を使う人も多そうなので 「9」にしますか。   ↓レンズ   9   ↑眼鏡のつる でもって、レンズが2つ並んでいる訳ではないので >  #単眼鏡は「o」にしろって? うーん…(- -;) しません(w;)。 閑話休題。 ---- まあそんな妄想はおいといて、久々にこちらを書いてみる。 てか、この蛇足メモも書かずに掲示板のやり取りに終始し、 直接バグ修正版を出しまくっておりました(汗)。 ご報告頂いたのも含めた大小さまざまなバグ(x)やら、バグではないけど目に付いたのやら、 とにかく手のつけられそうな所からどんどん修正。 レマー・ドゥリュクス下さい。 そんな中でも特に手をつけていた(焼かされていた?)ものの1つが バナナの皮の罠と磁力の罠。 新たに導入した耳栓などの耳装備が外れた時に、 装備フラグの処理がおかしくなっていたのですが、 それを直すのにあーだこーだと。 結局は、両方ひっくるめて、装備や持ち物を落とすかどうかの処理を ほとんど再構築する事に。 どちらもアイテムごとにdisparse_items_offchk()で判定するようにしました。  #なお21b_test2のものは突貫工事の試作版だったため、まだおかしな点があります。 ちなみにdisparse_items_offchk()の出力値は以下のような感じ。  ・DISPARSE_OFF(落とす)    バナナの皮の罠:アイテムを落とす    磁力の罠   :アイテムを落とす  ・DISPARSE_DONTOFF(落とさない)    バナナの皮の罠:単に保持    磁力の罠   :身体が磁石に吸い付く(但しこの出力値は出ないはず)  ・DISPARSE_SKIP(処理せず)    バナナの皮の罠:(エラー扱い)    磁力の罠   :鉄製品でないとみなし処理せず  ・装備部位[身体の一部を表す値](HANDとかHEADとか)    バナナの皮の罠:落とすはずだったが、呪い等でその部位から放れない    磁力の罠   :その部位ごとアイテムが磁石に吸い付く  ・マイナスの値    バナナの皮の罠:複数まとまったアイテムのうち一部を落とす    磁力の罠   :(この出力値は出ない) また、装備部位ごとの落とす確率にも多少手を加えています。 磁力の罠に捕まった後も、もがいているうちに装備が偶然に外れるかも しれません(外れ得るならば)。 そうそう、ちなみに21b_test3でも、「怪物に対する磁力の罠の処理」は未だ手付かずです(汗)。 後で変更しとかないと。 ---- 21b_test3(11月09日)時点で未だ手付かずな不具合は以下の通り。 ・ bug 0334 ロングワームが存在するセーブファイルを再開するとshow_glyphの      エラーメッセージが出る 何とかしたいのですが、それらしい箇所に順次確認用の出力文を入れても なかなか尻尾がつかめない状態。  #//okでコメントアウトしてあるwizardモード用のpline()文が  #ハズレだったもの。 display_monster()が悪さをしているのかと思いきや、見事に違ってたし。 ・ bug 0333 不明な条件下で'You hit a trap of type 109'のエラーメッセージが出る 今の所再現できず現象不明。 ・ bug 0317 位相モールドを殴って瞬間移動させられた時に,'I'が瞬間移動先に出る 直すか、それとも仕様にしてしまうかどうか思案中。 ・ bug 0303 /コマンド等でシンボル名しか表示されない状態の怪物も,戦闘等の      各種メッセージの中では詳細な種族名が表示される テレパシー表示制限による食い違い。 今の所は/コマンド等での表示関係しかいじっていないのですが、 これを他の箇所にも広げようとすると、mon_nam()関係にも大幅に手を加えて 「怪物が視認できているかどうか」の判定を一般化しなければならなさそう。 どうしたものか。 ---- という訳で0.8.21b_test3を公開。 まだ見逃せないバグを内包しているためtestの文字が外れません(泣)。 ------------------------------------------------------------ 08.08.31-08.09.06 (FHSパッチver0.8.21a) 掲示板に早速dplusplusさんからのご報告が。 プレイ&縛報告有難うございます。 > 跳躍するモンスターが、跳躍した先で罠にはまった際、不具合が出る模様です。 最初はm_jumping_escape()等々の出力周りを、本家の他の処理(祭壇の僧侶とか番兵とか)と 同じようにすれば解決するものとばかり思っていました。 怪物が死亡したら2を返すとか、動かずにいたなら○○を返すとか。 でも色々と調べてみたのですが、 ・m_jumping_escape()内では怪物ジャンプ時の移動処理にmhurtle()を使用。 ・mhurtle()の最後の辺りでは以下のように記述されている。   (void) walk_path(&mc, &cc, mhurtle_step, (genericptr_t)mon); ・でもmhurtle_step()の型はboolean。つまり0か1しか返さない。  それをいじった所でwalk_path()もbooleanしか返さないため処理しようが無い。  (僧侶や番兵等の処理は独自に組まれているので2や3も返せる) ・ちなみに移動中に罠にかかった場合の処理はmhurtle_step()内に含まれている。 どうしたものかと途方に暮れつつ、mhurtle()やmhurtle_step()を 冒険者用の処理hurtle()と突き合わせたりして何度も読み直した結果、 mhurtle_step()そのものにバグがあるという結論に。 mhurtle_step()内では怪物を移動させた後、移動先の罠にかかったかどうかはチェックするのですが、 その結果に関わらずTRUEを返しているんですよね。 なので途中で罠によって怪物が足止めされたり別の場所に動いたり死んだりしても、 walk_path()は「その先」まで移動処理を強行し、エラーになっているのではないかと予想。  #ちなみに本家ではここの処理を使うのは「@が隣接怪物を弾き飛ばす」ケースに限られているため、  #移動距離が1マス(@と怪物間の距離)なので問題が表面化していないだけのようです。 …さすがに本家処理がこんなバグ抱えてるとは思いませんって。 ---- という訳で、これで完全に直るかどうかは判りませんが、 とりあえず該当箇所を修正し、ver0.8.21aとしてUPしました。 ------------------------------------------------------------ 08.08.10-08.08.30 ([Re:10]FHSパッチver0.8.21) メモ書き。 NetHackでは ・祭壇で「捧げる」と神の期限が良くなり、十分捧げ物をすると聖器を下賜。 ・祭壇で「祈る」と、神がトラブルを解消してくれたり旋律を教えてくれたり。 となっているけれど、 これを「聖器も祈らなければ下賜されない」ようにしたらどうなるだろう。 それも、最初は聖器の代わりに旋律を下賜するとか。 ---- そしてver0.8.21公開。 中身は最後に出した試験版とほとんど変わっていません。  #ゴーレムの部品生成周りを多少いじっているので、その点で問題が出るかもしれない。  #あとは不用コードの削除整理が主。 ランダムクエストの方も3.4.3-0.10に対応させないとなあ。 ------------------------------------------------------------ 08.07.21-08.08.09 ([Re:9]FHSパッチver0.8.21(未公開)) 結局、前回のアイテム表示色切り替わりの有無は、 画面上のアイテムは怪物とは違って逐次動いたりしないため 状況が更新されない限り表示も更新されないのが原因だったようです。 考えてみれば、地形やアイテムにまで表示制限をかける必要は無かったですね。 なので表示制限は怪物限定にしました。 その後にyoukanさんからご指摘頂いた水棲生物の配置バグ、 ご返事遅れてしまい申し訳ございません。 水棲生物のNOGEN設定を復活させようかとか その代わりに水地形が生成されたら一定確率で水棲怪物もセットで生成させようかとか 色々考えては見たのですが、 結局は以下のようにしました。 -配置バグは修正。vanillaと同様に水地形で無い場所にも1/13の確率で配置するようにした  (水棲生物の卵を“願う”人が出るかもしれませんし) -卵が自然生成される時、水棲生物の卵にならないよう手を加えた ---- あと、怪物の表示制限はこのようになります。 -直接見えない位置の怪物を感知した場合の表示制限 --単色で表示されるようになります(テキスト版). --名称などの詳細情報が不明になります. --但し,以下の場合は,怪物は通常のように表示されます. ---装備による(強力な)テレパシーを得ている場合 ---怪物を発見する薬/魔法を用いている場合 怪物名だけでなく、「友好的」だの「残りの頭数」だの スカウター装備時に表示される「戦闘力」だのの各種表示も全て非表示に。 なので、pager.cのソース内注釈に書いたのとは違ってきますが 例えば熊を感知した場合の表示は Y 猿や熊のような生物 [テレパシー] だけになります。 ---- それらを取り込み試験版080807を公開。 正式版として公開するかどうか迷ったけど、今回はまだ試験版にしました。 ------------------------------------------------------------ 08.07.13-08.07.20 ([Re:8]FHSパッチver0.8.21(未公開)) はうっ! (> <) 以前に失敗していた、特定種怪物選択処理(ネズミの一群とかオークの一群とか)の改良に 再度挑戦してみたのですが、 結局は「代入して読み込んだリストのサイズは0」というのがエラーの原因だったようです。 道理で他の場所のコードだと最後にterminator(空データ)が組み込まれてる訳だ… その辺またごっそりと改定。 ---- そして、にうきゃら掲示板(補助用)へのyoukanさんの書き込みに今更ながら気づく =□○_  #ご返事遅れてごめんなさい。 掲示板にも書きます(ました)が、こちらにはもう少し詳しく。 ・三角コーンを着脱するとエラーメッセージが出る 毎度の如く、Helmet_on()やHelmet_off()への追加漏れ。 ・他属性の友好的な僧侶が虫の召喚などを行う mspell_would_be_useless() (spell_would_be_useless()を怪物同士にも適用可能に したもの)の中で、何故かmpeacefulの条件から「自分が防御側のとき」を除外するように なっていたので修正。 ・幻覚状態から覚めたときに「何もかもが(null)に見える」と出る 今回幾つか追加した特殊な幻覚状態のうち、じつは最後の一つ(HALLU_VIS_MIRACLE)は 後付けだったりします。 それ以前はターミネーター代わりのHALLU_VIS_MAXも無く、HALLU_VIS_PISACAが最後尾に なっていました。 一方、表示文の方は従来なら「虹色」となるべき箇所をhaltypcol[]で色々と変化させる ようにしてあります。 でもって文章の構成上、HALLU_VIS_MAXなら「*退屈*」が入るようにしたのですが、 じつはその前の箇所にカンマ抜けがあって、2組分がまとめて表示たり位置がずれたり するものが出てきたという(汗)。 ・盲目時に床の表示がおかしくなる 確かに、盲目後に新たに踏み込んだ場所の床(.)がおかしくなりますね… 盲目でなおかつ幻覚状態だと#表示だし。 …と思ったら、おかしくなっている床の地形名は「枯れ木」。何だこりゃ(汗)。 …どうやらDARKROOMの処理の一部が明暗処理とかち合って 悪さをしていたようです。  #DARKROOMでは 「(!cansee(x,y) && !lev->waslit)) ?」 という記述が数ヶ所ある。  #そのため盲目時には床表示がDARKROOMで1つ前の物になり(S_room->S_darkroom)  #それを明暗処理で更に1つ前の物にしていた(S_darkroom->S_deadtree)ものかと。 これも修正しました。多分。 で、まだ確認がとれていないのが ・視界内のアイテムでも色つきで表示されない場合がある? mapglyph.cを見た限りでは今の所不審な点が見当たらないので、  #私のことだから何か勘違いや見落としをしている可能性も大。 まずはコンパイル済みのを実際にいろいろいじってみる必要が有りそう。 ---- という訳で、08.07.20版を公開(します/しました)。 セーブファイルは08.07.12版のものがそのまま使えると思います。 バイナリィまでは手が回っていません。 diffファイルも一応あげておきましたが、ファイルサイズこそ大きいものの 前回分から不要コードを削除した分が大半を占めるので、実質的な修正箇所を 確認するのは難儀かも(汗)。 ------------------------------------------------------------ 08.07.08-08.07.12 ([Re:7]FHSパッチver0.8.21(未公開)) 試験版080712を公開。 次verのver0.8.21も、これをベースにする予定。  #とりあえずここからは新規要素を追加せず、  #bigfixと不要なコード(OBSOLETEやら//やらでコメントアウトしている分)の掃除だけで  #次verにしたい所。 ------------------------------------------------------------ 08.06.08-08.07.07 ([Re:6]FHSパッチver0.8.21(未公開)) mriding関係の移植も一段落し、とりあえずコンパイル中。 まあ、いつもの   あるファイルでコンパイルエラー → 直す → まだ直ってない → 直す →    #endifが多すぎるぽい → 前回のファイルとの差分をとる → しらみつぶしに確認 →     直す →別のが出る → 直す → また出る → 直す →まだ出る →      直す →2,3個先のファイルでコンパイルエラー…(以下繰り返し) の真っ最中で放っぽりぱなしなのですが(ぉ)。 とにかくコンパイル完了しない事には話になりません。 動くの確認したらJNH3.4.3-10にも対応させなくちゃならないし。 この辺でver0.8.21としてまとめるかなあ。 ほかにも実装したい案や実装途中の案もあるけど、きりが無いし。 それに今回のバージョンだとタイル対応の問題もあるんですよね。 実装内容によってはタイルの大幅並べ直しが伴うけど、 まずは今のままで正式版ひとつは出しておきたいし。 ---- 将来的にやってみたい事を、つらつらと書き留めてみる。 とはいえ一つ一つが実装にかなり手のかかる代物になりそうです。  #私の今の技術でも実現できそうな気はするのですけどね。  #順次実装するとしても次バージョンが出た後かな。 ・輝く薬 Crawlの蒸散なるものを再現できそうなので。 投げると割れた場所に雲生成。 (今の所はRegion頼りだけど、様々な付随効果を賦与させられるメドはついてます) lamplit状態の薬(つまり油は除く)は低確率で自然生成させるなり 普通の薬を何らかの方法(限定的)で輝く薬に加工させるなりする。 そういえば反属性の光線等で雲を消したい(火の閃光の軌跡上にあった 冷気の雲が消えるとか)けど、どうすればいいんだろう。 brassだとregionに頼らない雲の処理が実装されてるようだけど、まだ内容把握してないしなあ。 ・Seven Deadly Sins Seven Deadly Sinsパッチより。 まずはこれの和訳と内容把握から始める必要があるのですが。  #今は和訳途中で放置状態。 但しそのまま実装するのではなく、 7つの大罪の各自に既存の大悪魔並の実力を持たせた上で、 ゲヘナの特殊階には“いずれかのグループ”を配置するようにする。  #特殊階が合計7つになるように、もう少し増やす必要があったかも。 で、イェンダーの魔除けを手に入れた後は “もう片方のグループ”にランダムで単身襲撃を行わせようかと。 ・Mega Spell、および爆発と光線の改造 Mega Spell周りは、何も考えずにexplode.cをSLASH'EMベースに 差し替えてしまえば早そうではありますが… Spitパッチで組んだ処理とのすり合わせがどうなることやら。 あと、Mega Spell実装の際には 爆発や光線に対するadtypの処理も変えたいです。 ZT_**ではなくAD_**のままで処理できるようにしたいので。 爆発と光線にも様々な付随効果を追加したいけど、 それに手をつけるのはMega Spellを解決してからかな。 ・銃火器 銃火器はSLASH'EMベースにするか、brassベースにするか 未だに決めていない状態。 Mega Spellの移植内容次第かも。 少なくとも銃火器の内容はSLASH'EMほどには充実させないと思います。 リボルバーや単発の散弾銃程度ならともかく、さすがに重機関銃だのを導入するつもりは…。 パレットガンは軽機関銃程度になるのかな。威力検証してないけど。 ロケットは、もっぱら敵の攻撃手段(AT_SPIT辺りとか)にしそう。 手榴弾、ガス弾は未定。ダイナマイトだけで済ますかも。 そうそう、球形の爆弾(導火線つき)は必要でしょう! (^^) ・ライトセイバー ライトセイバーはSLASH'EMからの移植で。 その時にはジェダイパッチも導入するつもり。 てかいい加減、フレームトーチ実装したいし(そっちかい)。 ・アイテムの新カテゴリ「眼鏡」 道具類がちとごちゃごちゃしすぎているので、その対策として。 容器や光源よりは分離しやすそうですし、 装備品のひとつとして扱うものなので丁度いいかなと。 耳当てを分離するというのも考えたのですが、 今の所は眼鏡20種類に対して耳当ては3種類。 なので眼鏡を分離しようかと。 シンボルは「8」かな。  #単眼鏡は「o」にしろって? うーん…(- -;) なおその時には目隠しとタオルも眼鏡と一緒に分離。 ただ、これをやるとタイルの大幅な並べ直しも必要になりますが…。 ・一時的なinvis_blkd 一時的な透明化阻害。 例えば濡れたら短時間だけ姿が見えるとか。 怪物に対しては、眠り等と同様にbitを割り振る必要がありそう。 PCに対してはblockedの仕様次第。 どうもinclude/prop.hを見ると blockedの仕様はintrinsic[内部的]ではなくextrinsic[外部的]準拠のようで、 このままだと「一時的なblocked」にしても時間経過で消えてくれないかも。 blockedの仕様そのものをいじれるならintrinsicと同様に扱えるよう変更。 それが手に負えなかったら新たに「透明化阻害(B_INVISかINVIS_RES(?))」でも作るかな。 ・怪物の順序並べ直し monst.c内の怪物の順序には幾つかの規則があるようなのですが、 今のFHSパッチだとほとんど無視しているんですよね(こら;)。  #同じシンボル内ではレベル順に並べるはずなのに完全無視だし。 ただ、これもやはりタイルの大幅な並べ直しが必要になりますが…。 ・種族装備 エルフの武器やらドワーフの武器やらの処理をCrawl方式にできないかなと。 例えば長剣に「エルフの」とか「ドワーフの」とかついたり。 まあ、これは導入しないかもしれませんが。 それにやはりタイルの大幅な(略)。 ---- So-Miyaさんの2008年7月1日の日記より: [ #12893] 光の聖槍を下賜された際の警告メッセージ こちらは本家でも再現するバグ。 光の聖槍や永燃のロウソクは所持するだけで光を放つが、これを神への捧げ物によって 得たとき、光を放つ処理に失敗する現象。 捧げ物を行うと pray.c の dosacrifice() が実行され、聖器が下賜されることになると artifact.c の mk_artifact((struct obj *)0, a_align(u.ux,u.uy)) が呼ばれ、 聖器の生成に成功すると do_name.c の oname(otmp, a->name) が呼ばれ、 さらにその中で artifact.c の artifact_exists(obj, name, TRUE) が呼ばれる。 artifact_exists関数 の中では、その聖器が存在していて、それが光を放つもので、 サンソードではない場合(サンソードが光るのは装備時のみのため)、 timeout.c の begin_burn(otmp, FALSE) が呼ばれる。 begin_burn はアイテムの位置に光源範囲を設定するが、 dosacrifice関数からmk_artifact関数が呼ばれた時点では まだアイテムが生成されただけで床に置くためのdropy関数がまだ呼ばれていない。 そのためアイテム位置の取得に失敗してしまい、 報告の通りの現象が発生していることは確認できた。 (後略) そういえばFHSパッチではどう直してたかなと見直してみました。 FHSパッチでは、問題箇所が影響するのは 「永久点灯光源、および魔法のろうそく」が「固有名のついた状態で」生成される場合に 限定されています。 この「永久点灯光源」ですが、vanillaやSLASH'EMでは武器聖器も永久点灯光源とされていますが FHSパッチにおいては多少違っておりまして、  artifact_continual_light():永久点灯光源   星の石(聖器じゃないけど)、金竜王の鱗鎧、星の瑠璃  artifact_handle_light():装備時に自動的に点灯する光源   サンソード、ラブミーチェイン、レギナ・ルクス、スナッチャー、ペネトレーター   #但しサンソードとラブミーチェイン以外はすぐに消灯します。   #(applyによって点灯/消灯と共に機能を切り替えるため) なので、そもそもSLASH'EMのように武器聖器でエラーが生じるなんて状況は起き得ません。 というより、それを回避するために色々手直しして わざわざdo_name.c の oname()内で処理するように… …要するに根源は直ってないって事じゃん =□○_ 今まで発覚しなかったのは 星の石も星の瑠璃も固定マップでしか生成させないようにしていたし、 魔法のろうそく聖器も無いし、 実装当時はおそらく金色ドラゴンがいなかった(つまり金竜王の鱗鎧も無かった)ためでしょう。 いちおう、位置がマップの範囲外のときに限り自分の位置座標を仮挿入するように 手直ししてみましたが、まだコンパイルもしていない状態。 本当にこれでいいのかどうか。 ------------------------------------------------------------ 08.03.03-08.06.07 ([Re:5]FHSパッチver0.8.21(未公開)) brassからのmriding関係の移植、なかなか進みません。 移植だけでなく修正も平行してやってるもので。  #自分が以前に書いた箇所も、今見直してみると  #もっと上手な書き方があるのではという箇所がちらほら。  #目に付いた分で、修正の簡単そうなものや  #いじっても大きな影響がなさそうなものはついでに手直し。 とりあえずmonst.cまで進みました。 ------------------------------------------------------------ →これ以前は別Fileにて。