------------------------------------------------------------ FHS patch (Funny-Honey-Spit patch) 蛇足メモ 作成者:Shiganai Sakusha ------------------------------------------------------------ ------------------------------------------------------------ 雑記 [にうきゃら掲示板(補助用)と連動している内容もあります。(こちらで書かれた内容が掲示板で解決とか)] ------------------------------------------------------------ -2021/02/08 (--) お久しぶりです。 とんとNetHackには触れていなかったのですが… 久しぶりに某所の公式バグリストを翻訳更新。 …したのですが、 pukiwiki ch****() ******() failed だか何だか出て(***の辺りは内容忘れた)、 それでも内容は更新されたものの「最近の更新」に反映されないという状態に。 もう一度更新(といっても空白行1つ削っただけ)してみても同様のエラーに同様の結果。 何度も繰り返す訳にもいかないので、それ以上は確認していませんが。 何だったんだろう… ------------------------------------------------------------ -2020/09/30 (FHS patch 0.8.34) 試験版の銃器ですが、やはり色々不具合が出てきたので、修正もしつつあちこち再調整・再構築。 brass方式の銃器処理に連射機能を追加するのはめっちゃ大変でしたが、曲がりなりにも成功。 てか、よく見てみたらis_ammo() や is_launcher()、 ammo_and_launcher() 等の 処理が上手くいってないやん。 > 0833a+20200823-004 [試験版20200823] a) 銃が弾の発射器であるという関連付けが > うまくいっていない箇所がある > [試験版20200823] b) 銃弾類が矢玉として扱われていない で、それらを修正したところ… 狐や素のオークでさえも銃で射殺できない事態が発生。 なんで1d20とか1d30クラスの銃弾ダメージが1とか2しか出ないの? > 0833a-N009 [343版] プレイヤーキャラクターが投射した矢玉のダメージが不当に低くなる …↑が原因でした orz 正式版そのもののバグじゃん (T T)。 閑話休題。 ---- バグ以外の調整はこんな感じ。 > -銃器を調整 > --新式銃の射程を約2倍に増加 > 新式銃: #銃弾だけを使用可能な銃.現在はリボルバーのみ該当 > --新式銃の最大連射数はスキルの高さに応じて増加 > --古式銃/散弾銃の装填は1回に1発ずつ行うようにした で、銃器の聖器をウェアベーン以外にもう2つ追加。 1つは前回、案だけ書いていたノックガン。 > --[Arti] ノックガン (Nock gun) [無心: マスケット銃] > ---*7発の弾丸/特殊弾を装填でき,一度に全弾射撃します > ---*#invoke: 21発の弾丸類を生成 (自動装填はしない) ちなみに特殊弾というのは、基本的には「弾丸」以外の銃弾です。  #矢玉の分類で WP_BULLET にあたるものが弾丸。現在は弾丸だけが該当。  #WP_SHELL にあたるものが特殊弾。 現在は散弾だけが該当。  #曳光弾とか信号弾とか麻酔弾とかも追加してみたいけど今回は見送り。  #ネタとしては空砲とかコショウ弾とか玩具弾(クラッカーとか旗とか飛び出す)なども…?(ぇ) で、もう1つはこちら。 > --[Arti] キャノンダンサー (Cannondancer) [無心: リボルバー] > ---*スキルの高さに応じて増加する最大連射数が通常の2倍になります > ---*二刀流の左手に装備可能 > ---*威力は低め(ダメージ-5) > ---*#invoke: 6発の弾丸を自動装填する (装填済みの弾は全て足元に落ちる) それぞれ個性は出せたかな。 何気に #invoke の効果もすべて微妙に違ってたりするし。 閑話休題。 ---- デーモンベーンとトロルスベーンに、3.6.6の仕様を導入しました。 > -デーモンベーン (Demonbane) の効果の一部を vanilla 3.6.6 に合わせた > --*[変更] デーモンベーン装備中は,悪魔が行う召喚を完全に防ぐ (vanilla 3.6.6より) > --*[削除] 悪魔の瞬間移動による隣接を防ぐ効果は削除 > --*悪魔に2〜3倍ダメージ,銀が弱点の怪物に1d10+7の追加ダメージ (FHSパッチ独自) > --*デーモンベーンで攻撃した時,悪魔を無力化する事がある (FHSパッチ独自) > -トロルスベーン (Trollsbane) の効果の一部を vanilla 3.6.6 に合わせた > --*[追加] トロルスベーン装備中は,トロルが復活しなくなる (vanilla 3.6.6より) > --*[変更] 素武器をモーニングスターに戻した > --*トロル系怪物に2〜3倍ダメージ,オーク系怪物に1d10+7の追加ダメージ, > 再生怪物に2〜3倍もしくは追加ダメージ (FHSパッチ独自) > --*トロルスベーンで攻撃した時,再生怪物(トロル含む)を無力化する事がある (FHSパッチ独自) > --*[削除] トロルスベーンで攻撃した時の,トロルの首撥ね効果は削除 で、処理が衝突するため除去した従来の効果は、新規の別聖器へ。 > --[Arti] デーモンバッシャー (Demonbasher) [中立: 銀製のメイス] > ---*従来のFHSパッチ(〜ver0.8.33a)のデーモンベーンと同じ効果を持ちます > --[Arti] トロルスレイヤー (Trollslayer) [秩序: ドワーフの戦斧] > ---*従来のFHSパッチ(〜ver0.8.33a)のトロルスベーンとほぼ同じ効果を持ちます > ---*[追加] トロルスレイヤー装備中は,トロルが復活しなくなる > ---*[削除] トロルスレイヤーで攻撃した時の,再生怪物の無力化効果は削除 あと、鬼切丸の実装に伴い削除していたオーガスマッシャーも、3.6.6仕様+αで復活。 > -オーガスマッシャー (Ogresmasher) を再実装 > --*[追加] オーガスマッシャー装備中は耐久が25になる (vanilla 3.6.6より) > --*[追加] オーガ系怪物に3倍ダメージ,大型の人間型怪物に1d10+7の追加ダメージ > --*[追加] オーガスマッシャーで攻撃した時,オーガ系怪物を無力化する事がある クリーバー等についても3.6.6仕様を導入してみたいけど、今回は見送り。 ---- それ以外だと… 盗賊は最初から「武器に塗れる薬」を識別済みになるようにしました。 あとは武器を振るう時のメッセージの処理を更に改良。 以前は全メッセージを1つにまとめ、どの属性が何番目〜何番目のメッセージなのか指定していたのですが、 文章の配列を攻撃属性+特殊文毎に分割し、2段構えの処理で対応することに。 1) 攻撃属性文もしくはデフォルト/特殊文のいずれを用いるか選択 2a) 攻撃属性文なら、該当の一覧から選ぶ 2b) デフォルト/特殊文なら、特殊メッセージ(鞭など)もしくはデフォルト文の中から選ぶ ---- という訳で、お待たせしました。 FHSパッチ正式版、久々の更新です。 テストプレイ不十分な気もするけど。 ようやく銃器も正式実装できました。 長かった… Slash'EMの衛士も実装出来そうだけど、今回は見送り。 それではまた。 ------------------------------------------------------------ -2020/08/07 (FHS patch 0.8.33a+20200821 試験版) 前回の試験版での内容をあまり書いてなかったので、最も重要な箇所だけ抜粋。 > -UnNetHack 5.2.0から以下を移植 > --[Map] シェオル(Sheol) > ---*ゲヘナ(Gehennom)と対になる,酷寒地獄の階層群です > ---*[追加] 階層数を増加(ゲヘナ並み) > ---*[追加] ゲヘナの大悪魔の階層のうち幾つかを,シェオルに移動 > ---*[追加] ヴラドの塔への階段を,シェオルの最下層近くに移動 閑話休題。 ---- 銃器の実装、ひとまず完了。 散弾の射程が更に短くなったけど。  #-3 -> -4。拳銃で撃ったりしたら射程が1マス近くに。 なお、銃器の使用や再装填を限定する仕様は廃止。この辺はSlash'EM等と同様の扱いになるかと。 下手に制限をかける事により異常動作を引き起こしていたおそれもある為、 それを防ぐ狙いもあります。 盗賊と海賊に、初期装備として拳銃を持つパターンも追加。 ただ、銃弾を矢筒に装填しないようにする等、色々と再調整もしましたが。  #brass方式の銃器は、銃の内部に装填した弾を発射するので、  #矢筒に銃弾を装填してしまうと誤解を招く。 そして、brassに準じて聖器『ウェアベーン』も変更。 > --[Arti] ウェアベーンの素アイテムを銀製のリボルバーに変更 > ---*Invoke効果: 銀の弾丸を6発生成 > ---*[変更] Invokeで生成する弾丸は,弾倉が空の場合は自動装填されるようにした > ---*[変更] 聖器の材質が「ありふれた材質」でない限り,弾丸の材質も準ずるようにした ---- という訳で、あまり試験は出来てないかもだけど、遊べる程度に整備した試験版をUp。 …うん、まだ試験版なんだ。済まない。 昔の銃器に関してあれこれ調べているうちに、ちょっと実装したいものが増えたので。  ・銃の連射機構。multishot処理。  ・あわせて、散弾を使用可能な古式銃(滑腔銃身)は「1発ずつ」再装填するようにする。   散弾を使えない新式銃とのバランス調整の為。 これがうまくいけば、サブマシンガンやら機関銃やらの新式銃とか、 2連ピストルやらペッパーボックス(6〜7連ピストル)やらの古式銃とかも色々と実装可能になると思うのですよ。 普通の兵士等に持たせるような物ではないですが。 まあ、いちばん実装したい(したくなった)のはこちらなんですけどね。  ・聖器『ノックガン』(Nock gun)   一度に7発の弾をまとめて撃ち出せる古式銃。   装填数はもちろん7発。一度撃ったら弾倉が空になります。   再装填? もちろん1発ずつ(略)。   ちなみに#invokeは7発の弾丸を生成。但しウェアベーンと違い銀の弾丸ではなく、自動装填もせず。 …さすがに一撃の威力が洒落にならんので聖器扱い(^^;)。 ------------------------------------------------------------ -2020/08/07 (FHS patch test / etc.) FHSパッチ、現在は銃器の試験中。 少しでも気が乗った時に進めないと、いつまで経っても終わらないからね。 結局、brassのものをベースにしました。 基本部分だけでもきっちり動くようにしておけば、後からの追加は何とかなるでしょう。 ---- 今回実装した銃器は以下の通り。 弾は2種類。弾丸(bullet)と散弾(shotgun shell)。 銃は4種類。 > --[Item] ) 拳銃(pistol) :装填数1 > --[Item] ) リボルバー(revolver) :装填数6 > --[Item] ) マスケット銃(musket) :装填数1 > --[Item] ) 散弾銃(shotgun) :装填数2 ちなみにリボルバーは弾丸限定、それ以外の銃はどちらの弾も使えるようにしています。  #将来的に連射可能な新式銃を実装した場合も弾丸限定にする予定。 また同時にこちらも実装し、射程でも銃同士の区別をつけるようにしました。 > -vanilla 3.6 から以下を移植 > --クロスボゥの射程を装備者の強さによらず一定にする > ---*[変更] 銃器にも適用 > ---*[変更] 片手持ちの銃器は射程-3 > ---*[変更] 散弾銃は射程-2 > ---*[変更] 散弾は散弾銃以外で撃つと射程-3 ---- まあ、一応は動くようになりましたが、まだ修正すべき箇所は多いです。 とりあえずは・・・  ・兵士以外の怪物(例:オーク)が、弾は拾うが銃を拾おうとしない    #brassだと、兵士などの一部の怪物以外は「銃を扱えない」のですが、    #FHSパッチでは「再装填ができない(装填済みの銃は撃てる)」ようにした、はずなのですが・・・  ・兵士が、距離によっては長柄武器にわざわざ持ち替える  ・怪物が弾丸を手に持ってぶん殴りにくる のを何とかしないと(- -;)。 ------------------------------------------------------------ -2020/07/07 (FHS patch 0.8.33a+20200707 試験版) > 特殊階の生成で原因不明のエラーが…(泣) なんとか修正完了。 試験版をUpしました。 ---- そういえば、この蛇足メモに書いてなかった試験版の追加要素って何があったっけ。 …色々あるようで抜き出す気力もない… orz  #FHSパッチのページに載せている簡易履歴をまとめるのて力尽きたので、  #まとめた分はそちらで確認して下さい。 ------------------------------------------------------------ -2020/07/03 (FHS patch test / etc.) お久しぶりです。 まずは閑話。 > .jnethackrc.templateのコメントを外しても使えないオプションが複数存在 > > 例えば44行目、コメントを外すとname以外がすべてエラーとなる > > OPTIONS=name:Janet,role:Valkyrie,race:Human,gender:female,align:lawful > > Line 14: Unknown align 'lawful'. > Line 14: Unknown gender 'female'. > Line 14: Unknown race 'Human'. > Line 14: Unknown role 'Valkyrie'. > > ※日本語で書き直すか3文字の略語で回避できるとのこと …うん、そうなるよね、 以前(dasoku_FHS_patch16.txt)にも書いたけど、 JNetHackの3.6って、あちこちの固有名を英語を残さず日本語に「置き換えて」いるせいで、 読み取るべき英単語が既に失われているから。 まあFHSパッチだと、3.6にも3.4基準の日本語用処理(開発環境)をねじ込んでいるんで関係ないですが。 閑話休題。 ---- なんかすごーく間が開いてしまいましたが、散発的ながらも色々と実装しておりました。 まずは軽いところから。 シャツの文字や図柄などをちょこちをょこ追加したり、 開始時の一言メッセージに月始めのパターンを追加したり。 ちなみに錬金術師の名前は「プリントシャツの図柄」の方でも使うようにしたので、 > -お酒の百貨店の店員名を,錬金術師ではなくvanillaのものに戻した #将来、錬金術の店を追加するならそちらの店主名にしても良いのでしょうが、 #今のところTNGの錬金術を導入する予定は無し。 また、こんなのも。 > -ローブの不確定名の英語名を変更 > --[old] *** crested robe -> [new] crested robe with *** > -ローブを不確定名の追加対象にし,不確定名を更に追加 巻物の不確定名も大量追加。 今まで和名として「歌の名前」をあてていたけれど、 ここまで来たら、もう何でもありにしました。 > -巻物の不確定名の和名について,vanilla方式の命名も併用するよう変更 > -巻物の不確定名を更に追加(+6) > -JNetHack vanilla 3.6.1-0.4 から以下を移植 > --巻物の不確定名を更に追加(+2) > ---(Note: 3.6での追加4つのうち2つは移植済み(NetHack brassより)) > ---(Note: 和名は別に割り振っています) > -Slash'EM Extended v250+20190907 から以下を移植 > --巻物の不確定名を更に追加(+128以上) > ---(Note: 和名は別に割り振っています) ああ、ちなみに、 > ---(Note: なお残り1600以上は未移植) …うん、さすがにこれ以上の分量をフォローするのはちと無理がありまする。 Rogue方式の自動組み合わせ命名処理を導入すればまかなえると思いますが。 ---- そしてUnNetHackの氷壁関係の実装が完了。 > -UnNetHack 5.2.0から以下を移植 > --[地形] 8 氷壁(ice wall) > --[地形] 8 水晶の氷壁(crystal ice wall) > --[item] ( 水晶掘りのつるはし(crystal pick) 地形生成にも特殊階にも導入してないから、今の段階では出番は無いですが。 …その後またしばらく放置。 ---- その後、かなりVerUpしたXNetHackとか、 SpliceHackやEvilHackといった新顔ヴァリアントとかを軽く調査。 作業の慣らしも兼ねて、特殊部屋関係を中心に幾つか移植を試みる。 併せて既存の特殊部屋の処理にも色々と手を加えたり。 SpliceHacからLAB(研究室)と、様々なQを導入したのに併せ、 Slash'EMの特殊階、フランケンシュタイン研究所も導入。 また、 > --一部の特殊部屋について,部屋選択処理と要素配置が一体化していたのを分離 > --特殊階のdesファイルにて設定可能な特殊部屋の幾つかについて,内容物が実際に生成されるようにした SporkHack等から導入した特殊部屋の幾つかは、部屋選択処理と一体化していた為に 選択済みの一部屋に対する配置がうまく出来なかったんですよね。 特殊階で設定可能にするには、それらの分離が必須だと判明したため今回対処。 ---- で、色々調べて検討していた、本命の処理導入にかかる。 Artifact Doorと併用可能な、3.6書式desファイル処理の導入。 つまりはadd_door()の処理を残したままで、3.6書式を読めれば良い訳で… 各種ヴァリアントのsp_lev.cを見比べてたら、有りましたよ。 UnNetHack。 という訳で、とりあえずsp_lev.cを差し替えてのFHSパッチ用処理の移植中。 sp_lev.h等の周辺ファイルも併せて差し替える必要があるので一筋縄ではいかないでしょうが。 また移植の際に、sp_lev.c等に残っている未使用処理の残骸等はばっさり整理するつもり。 #アイデア保存の為に、FHSパッチではそうした未使用処理をあえて残していることも多い。 ちなみに成功した場合、Level Terrainも多分一緒に導入されます。 #特殊階がランダムに縦横反転して生成され得る処理。 ---- …と、思っていたのですが。 あまりにも手間がかかり成功する保証もない上に、 どうもdesファイルからの読み出しに適応できるかどうかが怪しくなってきたので、 3.6準拠コンパイルは一旦諦めて、Sheolの実装にかかる。 …罠とか怪物とか新規の挙動とか、移植するものがえらく膨れ上がってるけど。 おまけに導入の傍ら、実装済みのコードもふれこれ手直ししていたり。 ---- あ、ここでひとつ覚え書きを。 NetHackのデフォルトタイル表示の小ささ(16x16)が何とかならないかと常々思っていたのですが、  #タイル用txtファイルを32x32対応にしようとした場合、従来品とあわせて  #2000個以上「描き直し」しなければならない。 UnNetHack の tileset フォルダにあったREADMEファイルに、解決策のヒントが。  > OPTIONS=tile_file:unchozo32b.png, tile_width:32, tile_height:32 …もしかしてタイル画像って外部からの読み込みにも対応している? と喜び勇んで色々といじってみたものの、うまくいかず。 うーむ、FHSパッチは現在の時点でも画像の横幅をめいっぱい取ってるから 拡大画像を扱う余地がないとか? (汗) ---- その後はSheol用の罠や怪物をごっそり移植したり、 それらの特殊処理をまとめて移植したり、  #但し凍結バグのリンク能力周りだけは、エラーでまともに動かないので切り捨て。  # ifdef で細分化するのは煩わしくなる面もあるけど、こういう分離封印時には便利。 階層処理をSheolにも対応させつつ、特殊部屋やら何やらにもある程度手を加えたり。 で、更に別ヴァリアントのnotdNetHack等も参考にしつつ色々移植とか調整とか。 とりあえず、本命のSheolそのもの以外の周辺処理は何とかなったかな。 あ、jdata.baseもベースファイルを3.6.6のものに差し替えて、 和訳の移植+未訳箇所も訳せるだけ訳しておきました。 なおこのファイルはJNetHackの3.6でも未だに和訳が手付かずなので、 成果をvanilla用に逆整備して公式サイトにも提供。 ---- で、その間に気になった、notdNetHackのlegion devil関係。 D&Dではちょっとした特殊処理により、swarmとは別の意味で一群となる怪物なのですが… notdNetHackにあった、見慣れないMM_ADJACENTOKという指定処理。 怪物配置時にどんなことをするのかと思って確認してみたら、   同一地点に怪物を重ねて配置する みたいです(汗)。 いや私も落馬だかジャンプだか何だかの処理時に、設定ミスでプレイヤーキャラに重ねて 配置してしまった事もあるから理論上は可能なんだろうけど… 大丈夫? バグったりしない? (- -;) ---- 「NetHackで地形を追加する際の、コンパイル注意点」をtxtにまとめてサイトにUp。 内容はこの蛇足メモの過去ログからの抜き出しですけどね。 そう頻繁には出番はないとはいえ、地形追加のたびに 蛇足メモのあるフォルダにGrep検索かけるのはさすがに効率悪すぎて (w;) で、FHSパッチの方も ひとまず試験版としてVerUpできるかなと思ったら、 特殊階の生成で原因不明のエラーが…(泣)  #死の谷突入時には、墓場の生成が一通り終わってからエラーになっているようなので  #特殊部屋の問題ではなさそうですが… 公開は、↑の問題が解決してからになると思います。 ------------------------------------------------------------ -2019/12/31 (--) 今年ももう終わり。 近頃はねとはく関係にはとんと触れる余裕が無かったのですが… ちょっとNetHackWiki (英語) を覗いてみたのですよ。 http://nethackwiki.com/ トップページにヴァリアント等の更新情報が載ってて、それらの情報更新も活発なようなので。 そうしたら、 > 18th December 2019 - NetHack 3.6.4 is released え? 3.6.4? 早い早い! 3.6.3はどうしたの? > 5th December 2019 - NetHack 3.6.3 is released …何があったんだこの更新速度 (- -;) うむ、自分では手が出せない状況ですが とりあえず情報だけ投げてみる。 …まあ既に日本でも周知されてるかもしれませんが、一応。 #追記:その後、某所のバグリストだけ何とか更新。 #あと、NetHack370-hdfとかいうのが動いているっぽい? それでは皆様、よいお年を。                    うー、再開したら氷壁とsheol(改変)実装したい… ------------------------------------------------------------ -2019/10/13 (FHS patch test) 記録的な威力を保ったまま本州を直撃した、今回の台風19号。 私は大丈夫ですが、皆様はいかがでしたでしょうか。 各地の河川氾濫に、交通・物流の混乱等、 現在目に見えている影響も大きいですし、見えない部分の影響もこれから明らかになるのでしょうが… 皆様のご無事を祈るばかり。 閑話休題。 ---- FHSパッチは、前回から少しだけ作業を進めていました。 UnNetHackの氷壁(ice wall)関係の導入。 次のステップに移るために必要なので、なんとか成功させたい所。 ただ、最終段階で作業が止まっています。 大部分のコードは移植したのですが、まだコンパイル試験をしていないため不具合があるかも。 一応、生存報告含め報告まで。 ------------------------------------------------------------ -2019/09/14 (FHS patch 0.8.33a) お久しぶりです。 大体1年以上放置していた訳ですが (^^;)。 履歴を見る限り、前回のUp後、3.6の楽器の追加効果を少しだけ移植していたようですが、 その後は本気で放置 (^^;);;;。 再度ソースに手をつけたのは、今月に入ってから。  #備忘録代わりにつけておいて本当に良かった。 で、「3.6のdesファイル読み取り処理を丸ごと3.4に持ってこれないか」という 無茶な動機で手をつけ始めた訳ですが、 sp_lev.cの内容がほぼ全面的に変更されているため、すぐには無理そうです。  #add_door()の処理も無くなっているので、Artifact Doorの処理をどうしようか思案中。 で、その副産物として   -> 新たに追加されている LVLINIT_*** 等はゲヘナのマップ処理にも活用できそう     #FHSパッチでは、brassのマップ生成コードを元に色々組み込んでいる   -->先にそちらだけ移植し、ゲヘナのマップ選択処理を組み替え   --->時々ゲームが落ちる   ---->原因を調べていったらあちこちバグ発覚 …という訳で、特殊階などのバグを叩き出した0.8.33aを、今回公開することに。 0.8.33とのセーブ互換性は多分あるんじゃないかと思います(未確認)。 ------------------------------------------------------------ -2018/09/02 (FHS patch 0.8.33) ようやく少しは暑さもマシになってきた…のか? 皆様いかがお過ごしでしょうか。 私は、相変わらず作業にむらがあったり 何日分かの作業を一気に巻き戻したり(ゲーム開始後すぐに落ちる状態になっていた) と、いろいろやらかしてましたが元気です。 閑話休題。 ---- ノームType2の実装、一段落しました。 受けられるのは種族ノーム/職業レンジャー限定。 …でもこれ、既存の種族・職業の組み合わせと思い切りかぶってしまうんですよね。  #逆にノームでは通常のレンジャーのクエストが受けられなくなってしまう。 できればこのような事態は避けたかったのですが、  ・聖器が思い切りレンジャー向け(クロスボゥ)  ・クエスト内で聖器の効果について詳細に解説しているため、他の聖器で代用する事もできない という訳で、差し替えも無理そうなのでこのまま強行します。 ちなみに実装作業の方は、   ルッゴが襲ってきたり #通常時にガーディアンと同様の設定をしておらず、ユニーク敵になっていた   ガーディアンが多すぎて奥にいるリーダーといつまで経っても会話できなかったり #唯一の一本道にまで入り込んでくるから瞬間移動の杖で飛ばしたら怒りやがった。 #そもそもなんで狭い部屋の3分の2近くを埋め尽くすほど大量配置するんだ (- -#) # (3x9[27マス]の部屋に、通常ノーム・ガーディアン・ルッゴが計17体) といった問題を1つ1つ解決していったものの、 それでもルッゴがノーム専用会話を話さず暗黒語をわめくのは何なんだと思ったら… そもそもSLASH'EMの追加ノームって、どいつもこいつもM2_GNOMEフラグ付いてないじゃん (- -#)  #同シンボルのノール達と区別する為にも必須のはずなのに。  #そういえば、以前にもノームの盗賊にわざわざフラグ追加した覚えが。  #あの時に気づくべきだったか… それらを修正したので何とか一段落。 一段落したのでしょう、多分。  #ドロウやHedrowは…もう知らん。  #まともに動くexeファイル入手してからでないと分岐条件の検討もできん。 ---- monst.c内で、一部の怪物を並べ替えました。 具体的には、一部のユニーク系怪物を「ロングワームの尻尾」より後に配置。  #※リスト上で SPECIAL_PM より後の怪物はランダム生成の一覧から外され,プレイヤーが変身不可能になる メデューサとかクロイソスとかも条件には当てはまるのですが、今回はvanillaの怪物は移動せず。 また、FHSパッチの怪物でも移動させなかったものも一部残っています。 また、バグ修正も。 王の間生成時に、上下の内壁に縦の壁が混ざる現象を修正。  #入り口をふさぐ際に壁の向きを間違えていた。 それと、いきなり落ちる原因を直せた…かもしれません。 is_***() の処理を移動させた際に、怪物のパラメータ(&mons[mndx]) 基準ではなく 怪物の番号(mndx)基準に処理を変更したのですが、 何らかの理由で、変換用の monsndx() を挟むと悪影響があったようで。 なので、is_**()に関しては monsndx() を使わないようにし、元の&mons[] 基準で 処理するように変更。 それと共に、何か変なデータを読んでしまうとまずいので、 配列の最後尾にカンマ(,)が付かないよう調整。 これで落ちなくなったような気がします。多分。きっと。 ---- ノームType2を射所苦した勢いで、今まで暖めていた追加クエストも実装。 それに伴い、魔術師と吟遊詩人は全種族/全属性で選択可能になっています。 (但し秩序だと新規クエストの方しか出ません。中立/混沌だとランダム) 内容は Electric Mage (Slash'EM Extended) と、それをもとに自作したElectric Bard。 まあBardの方も、Slash'EM ExtendedのMusicianだのRockerだのから要素引っ張ってきてますが。 元々はBardの方だけ実装するつもりだったのですが、Bardの内容を色々と改変していった結果 Mageの方も(こちらは原型に近い状態で)実装できそうだったため、 結局両立させることにしました。 あ、Bard用に新規の楽器(リュート系)を実装していますが 効果はまだ仮設定状態です。今はぶっちゃけ竪琴系と一緒。  #唱和のリュートに関しては別の効果案はあるけど実装間に合わず。  # (範囲内の怪物も一緒に歌わせ、ほぼ全てに懐柔効果。  # 他の魔法音楽の時よりも歌う怪物の範囲を広げたり、  # 敵味方構わず同調して歌う(プラス効果)ようにしたりする。  # mon_can_sing()やら何やらに改造加えるなり新規に処理組むなりしないと。) Mageの聖器はこのままでいきます。ぶっちゃけvanillaと一緒。 ---- という訳で、ここらで一区切り。 ver0.8.33、公開しました。 ------------------------------------------------------------ -2018/08/12 (FHS patch 0.8.32+20180812(test ver.)) 近頃はようやく暑さも多少ましに放ってきましたが、 相変わらず暑い日が続きます。 最も厳しい時は、まさに「頭/思考がやられた」状態。 思考が長続きしない、難しい事を考えられない… 体力的にも厳しかったし(暑さですぐぶっ倒れる)、ほんと大変でした。 実は前回も、最後の段落の文章書くのに1週間以上かかってたり。駄目じゃん。 閑話休題。 ---- is_**() と **_follower() の形式の処理が結構増えてきたんで、 まとめて makemon.c から mondata.c へと移動させました。 ちなみにこれらのコンセプトは以下の通り。 is_**() は、元々mondata.h にあったものを移動させたもの。 vanilla方式では mondata.h 内にて以下のように書かれています。 #define is_adult_boar(ptr) ((ptr) == &mons[PM_WILD_BOAR] || \ (ptr) == &mons[PM_WARTHOG] || \ (ptr) == &mons[PM_RED_RIVER_HOG] || \ (ptr) == &mons[PM_WEREBOAR] || \ (ptr) == &mons[PM_DIRE_BOAR] ) これを移動させた際に **_list[] としてリスト化。 is_**() では、基本的にはこのリストにあてはまるかどうかを判定。 static int adult_boar_list[] = { # ifdef HONEY_FUNNY /*new monster [Sakusha]*/ PM_PIG, PM_WILD_PIG, PM_WILD_BOAR, PM_RED_RIVER_HOG, PM_WARTHOG, PM_DIRE_BOAR, # endif /*HONEY_FUNNY*/ # ifdef HONEY_VENOM /*Spit patch [Sakusha]*/ PM_WAR_PIG, # endif /*HONEY_VENOMY*/ }; で、**_follower() の方は、怪物生成のために 「is_**() にあてはまる怪物をランダムに選択」するものなのですが、 こちらでも同じリストを用いるようにしたのがこの処理の売り。 その都度 is_**() にあてはまるか確認する必要もなくなるし、 双方で一覧に食い違いが出る事も無くなるので、かなり扱いやすくなります。  #あちこちで似たようなリストをバラバラに用意すると、すり合わせも大変ですし。 もっとも、is_**()を全て移動させた訳ではありません。 怪物選択と共用するものに絞ってますから。 あと、処理の構造上、単純にリスト化できないものは苦手。 (例えば mflags を読み取るものは不適当) 移動させたのは、主に PLATOON 設定で部下を生成するものや、 特殊部屋で生成するもの等が中心になります。  #mondata.h kの中にも「古い」設定がまだまだ残ってそうだなあ… ---- その他は目に付いたところを、ほんとにてんでんばらばらに色々と。 以前に組んだ複雑な処理を整理したりもしています。 喫茶店の処理を練り直しつつ店舗を2倍近く増やしたり、 混線気味だったジン/幽霊の薬の処理を整理したり、 採集可能な品の一覧表も、一部はコンパイル時に処理できるようにしたり。  #果物等の大まかな一覧の方。  #(ハーブ一覧の方は、ゲーム毎にハーブの不確定名が変わるので  # コンパイル時には指定できなかった) 一部の怪物は名称等を変更したり。 またこの際だからと、以前から案だけ暖めていた新規怪物も一斉に追加。 その傍らで、Slash'EM Extended の職業一覧を一旦テキストにまとめてみる。 何せ職業数がしこたまあるので、その都度ソースを眺めててもらちが明かないし。 粗も多くはありますが(クエストメッセージはコピペ多用で、特に新規職では矛盾も多い)、 それでも一覧を眺めるだけでも、新規クエストにできそうな案がちらほらと。 ---- そういえばdNetHackのノームクエストには手をつけてなかったなと、翻訳してみる  ->内容がランダムクエストのもの(ベースはSLASH'EM旧版)とは別物であることが判明   ->clockwork関係は…ゴーレム扱いで間に合わせるか?      #しかし内容はよく知らない。Webbパッチのautomatonとも違うようだし…      #こういうとき、実際の動作を確認できないから不便で仕方ないです。      #(dNetHackは現在コンパイル不能、バイナリィも極端に古いものしか      # 配布されておらず、何から何までソースを解析して動作を推測するしかない。      # ダークエルフ関係に手をつけられないのもその為。(一部ストーリー分岐がある模様?))    ->そういえばゴーレムについては、まだmondata.hからis_**() を移動させてなかったな と、いう訳でゴーレム関係の処理の整理にかかっていたら…  ■bug0832-N003 [343版] 生きた熊のぬいぐるみのHPが設定されておらずゲームに不具合が生じる ひどいバグ発見。 うわ、こんな状態でもコンパイルは通るのか。  #ゴーレム類は種類によってHPが固定値になるが、その設定データに抜けがあった(0を返す) 放ってもおけないので、他の作業もとりあえずそこそこに、試験版を急遽配布 orz  #他にも不安定になりそうな要素の幾つかは、上で挙げた「以前に組んだ複雑な処理を整理」で  #多少なりとも潰せているかもしれません(確証は無い)。 ---- あ、やっつけ仕事ですが、各種ヴァリアントについてのページも作成しました。 http://sakusha.s26.xrea.com/x/FHS/variant.html とりあえず前述のSlash'EM Extended の職業一覧のテキストをUp。 ------------------------------------------------------------ -2018/07/20 (FHS patch 0.8.32+20180720(test ver.)) 早い梅雨明けと思ったら大災害豪雨に猛暑と、異常気象が続く今日この頃ですが 皆様いかがお過ごしでしょうか。 私は暑さでちとバテつつもなんとか元気にやっております。 閑話休題。 ---- そうそう、前回書きそびれてましたが 手元で試験中の343版では新たに一部素材の色変更を実装してみました。 >-一部アイテムは個別に色変化するようにした >--対象: 布製の防具 >---革/樹脂製の防具も色変化可能ですが,自然生成品は色変化しません >---※材質変化の対象とは重複しません > >-一部防具の不確定名から色名を除去 >-ローブの不確定名から色名を除去,全面変更 materialパッチの材質変化の変数を独立化させ、 ついでに布製品等の場合は色情報を個別に設定できるように。  #基本素材が布や革・樹脂の場合は材質変化しないので、共用しても問題なし。 これで、例えば色違いプラグスーツなども出せるようになりました。 同時に、様々な衣装の不確定名から色名を除去。 下手に色名が入っていると、盲目時の表記に対処する必要があって余計な手間がかかるので。 特にローブ系は全面的に変更。『○○の紋入りローブ(** crested robe)』で統一。  #雨や虹といった天候系、太陽や月と言った天体系など。  #但し正式名と名前が紛らわしくならないように。  #(五行のローブもあるし、『雷のローブ』等といったものの実装も無いとはいえないので) あと、前回実装を見送っていたdNetHackの高級衣装類も導入。 『紳士の高級服』や『淑女の高級ドレス』等。 併せてもう少し安価なドレスも追加(正装のドレス、カジュアルなドレス)。  #…ただ、dNetHackでは高級衣装はガラドリエル辺りが着てたけど  #FHSパッチではそうはしません。 ---- タイル版用のタイル枚数をぎりぎりまで増やしてみる。  ・343 vanilla :横40個×縦30個 = 1200個  ・FHS 0.8.32 :横40個×縦60個 = 2400個 で、横40個×縦90個にしようとするとコンパイル不能 …という所まで判明していました。  #コンパイル途中で「Fatal:」と出る。対処方法不明。 今回、あれこれいじってみたところ、 最終的には「横40個×縦80個 = 3200個」までなら大丈夫という結論に。  #横の枚数を増やすと表示ずれ(タイルの食い違い)が生じてしまう。  #縦をこれ以上増やすとFatat: が出てコンパイル不能。(少なくとも96個分では駄目) これで800個分は増やせたか… それにしても、タイル処理についてはまだまだわからないことが多いです。 例えば、16bitのタイルを拡大処理できれば見やすくなりそうではあるのですが (32bitで補完し直すのはさすがに手間がかかりすぎる) そうした拡大機能の組み込み方も皆目わからないし。 ---- その後、新職業「海賊」を移植実装。 内容は、 Slash'EM Extended や dNetHackの Pirate に準拠。  #現在は基本クエストのみ。  #元パッチ版は未完成もいいところでしたし、  #秩序用クエスト(Slash'EM Extended の Korsair を大幅改変予定)も  #内容がまるっきり固まっていないので… 併せて銃器も NetHack brass から移植中ですが、 近頃は猛暑のせいか、どうもやる気や体調にムラがありすぎて こちらは作業が中途半端。 一応 FIREARMS_BRASS がそれなのですが、今のところコンパイル試験もしていない状態。  # "無効にしている状態なら" コンパイルが通ることは確認済み。 多分あちこち抜けがあるでしょうし。 てか、まだウェアベーンの素武器変更とか機構に応じた価格変動とかも対応してないし。 結局、銃器については以下のような方針で実装します。  ・基本はbrass方式 (事前に銃に弾丸を込めておく)  ・銃の種類は(アイテムとしては)とりあえず「拳銃(pistol)」と「小銃(rifle)」の2種類 #但し銃のモードを事前に設定してあり、それによって機構や名称も変化。 #基本名を「マスケット銃(masket)」にしなかったのは、 #アイテム名の表示処理によっては基本データ側から名称を読み取る場合があるため。  ・弾は通常弾の「弾丸(bullet)」および、各種の特殊弾(** shell)。   散弾とか信号弾とかは全て特殊弾扱い。   (特殊弾の実装はbrassの基本処理(弾丸のみ)をしっかり移植してから)  ・で、銃の機構によって「弾丸限定」か「特殊弾使用可」かも決まる。   基本的には、散弾銃や古式銃(フリントロック拳銃など)は装填数が少ない代わりに特殊弾使用可。   新式銃(リボルバー等)は装填数が多いが弾丸限定。 #現在のところ、登場予定の新式銃はウェアベーン(リボルバー)のみ。 そして、今はまだ単なる試案でしかないですが、本当に実装したいものはこれ。  ・装填済みであれば、スタック違いの弾も一回の射撃で連射できるようにする #brassa方式だと単発だが、これに連射処理を組み込みたい。 #しかしNetHackの連射だと、飛び道具のスタック数が連射数より少ない場合は #スタック全弾撃ったら終わりになってしまうので、 #そこに手を加えて装填中の別の弾もあわせて連射できるようにしたい。 #(通常の飛び道具ではこうした「勝手に」撃つ仕様は問題になるでしょうが、 # 銃器限定ならば事前に装填済みの弾に限定されるので大丈夫でしょう) ああ、爆弾類に関してはSLASH'EM方式になるかと思います(手榴弾、ダイナマイト等)。 ロケットランチャーや重火器は未定。 通常弾を拳銃弾と小銃弾に分けるなら、軽機関銃(拳銃弾を使用)も面白そうではあります。 という訳で、銃器についてはまだ時間がかかりそう。 ---- 代わりといってはなんですが、JITEMNAMEをいろいろと拡張しました。  ・海賊風アイテム名やSF風アイテム名も追加  ・それぞれ対応する店も追加  ・それぞれ「怪しい」名称も追加。   海賊版免税店(ジャポン製品免税店から改名)の品揃えにも反映されます。  ・obj_typename()やsimple_typename()の側でも(可能な限り)名称変更に対応 #対応できないのは、銃器と同様に「基本データから名称を読み取る」ケース。 名称変化処理も簡略化。以前の方式だとちょっと条件が複雑すぎたので。  ・低確率でランダムに選択。   その際、先に名称ジャンルを選択しておいてからリスト内で該当するかどうかを探す。   無ければそれっきり(基本名)。  ・高確率で基本名になる。   但しvanilla同様、職業により一部は基本名から変化する。   *侍および巫女は、和風名になるものは和風名 *海賊は、海賊風名になるものは海賊風名 あとは実装済みの店も含めて商品選択処理を整理したり、 海賊版免税店の販売物がジャンルによって全て切り替わるようにしたり。 ver0.8.32からの、JITEMNAME関連の一連の追加店については以下のようになりました。  ・KATANASHOP -- メイン: 和風アイテム、追加販売: 刀など  ・PIRATESHOP -- メイン: 海賊風アイテム、追加販売: 銃器(※未実装)  ・COSMICSHOP -- メイン: SF風アイテム、追加販売: ライトセイバー等  ・JFAKESHOP -- メイン: 「怪しい」**風アイテム、追加販売: 該当ジャンルの店とほぼ同じ ---- 話は前後してしまいましたが、近頃は海外で新たなヴァリアントも色々と出ているようで。 とりあえずxNetHackというものを軽く調べ …だめだ、あまりの暑さにだれ過ぎて身が入らない… これではいけないと乏しい気力を奮い立たせ、 とりあえず現在出来ている所までは試験版として公開します。 ろくに確認試験が出来ていませんが(駄目じゃん)。 ------------------------------------------------------------ -2018/06/24 (FHS patch 360-0.8.30tes(JNH360)) お久しぶりです。 久しぶりに360版の方を更新。 まずは、ベースをJNH3.6.0-0.9に差し替えました。 日本語入力関係に色々と手が加わっている模様。 あ、当方のFHSパッチでは3.4の仕様も無理やりにねじ込んでるので 日本語・英語のどちらでも願いが有効になっています。  #但しきちんと機能するかは保証外。  #仮に不具合があっても直せません。直すだけの技量はおそらく私にはありません。 その他は主にバグ修正。 最も重要な修正は以下の通り。 --0830-018 [360版] 20170917版で魔法のレベルが全てLV0として扱われており, 魔法や魔法書を扱う際にエラーメッセージや異常終了を引き起こす …実質、魔法が使えないという洒落にならない状態になってました。済みません。 残念ながら、今回は343版でのその後の更新は反映していません(現在ver0.8.32)。 こちらは次回の課題。 ---- 343版の方は、Japanese_items[]関係について更なる改良案は温めているものの まだまだ構想段階。 **_items[]用フラグ + fakeフラグの有無で、怪しい名称かどうかを設定できるようにしようかと。 基本部分は今のところJapanese_items[]とPirate_items[]を予定。  #Slash'EM Extended にはSoviet_items[]もあったけど  #こちらは用法が正しいかどうかの切り分けが全然出来ていないので… それと併せ、怪しい免税店も品揃えや名称を切り替えられるようにしないとですし。  #ジャポン製品免税店とか海賊版免税店とか。 ------------------------------------------------------------ -2018/03/06 (FHS patch 0.8.32(JNH343)) なんか試験版以降も色々と実装したり変更したり改良したりバグ修正したり。 あまりに変更点が多いので、更新履歴にも抜けがあるかも。 元々はdNetHackから、もう1つのドワーフクエスト(Dwarf Noble)と エルフクエストを移植しようとしてて、 それにあわせて周辺部分をちょこちょこ変更すれば済むはずだったのですが… ---- まずは、試験版でも実装していたMoria-likeマップの改良。 配置時の計算式を変更し、柱状の石が上下の端に食い込まないようにしました。 また、dNetHackのマップに合わせ、当初は勘違いしていた箇所を修正。 > ---*岩盤中に鉱石が含まれる確率をdNetHack準拠にした(10%) > ---*大抵は,岩盤の内部に空洞が出来ないように変更 あと、怪物生成時のフラグも追加。 > -- MM_MKGROUP: ランダム生成でない怪物でもグループを生成し得るようになる 副産物として、地獄の階層でも自然生成に任せた初期怪物のグループを配置可能になります。 地獄の階層に応じた怪物を生成している都合上「ランダムではない」状態でしたからね。 Moria-likeはDwarf Noble後半の階層としても使用することになりますが、 実際にランダム配置でオーク(部下系)を15-20体くらい配置してみると、 グループ生成のも単体生成のも(ホブゴブリンとか呪術師とか)色々とりまぜてるんで 最終的にはdNetHackと同様に合計80体位になりそうな感じでした。  #ちなみにFHSパッチでは、深い階層だとオークのグループ内の頭数(not多頭パッチ)が  #増えるので、それも込みで。 うん、結果は上々かな。 ---- 併せて、Japanese_items[]関係も改良。 和風アイテム関連については、表示基準を根本的に変更。 以前はどこまで公開してたっけ…まあ、新しい方式に全面的に移行しました。 なので、職業にかかわらず通常名と和風名のアイテムが混在するようになります。 侍と巫女に関しては特に出易いように調整してますけどね。 ああ、食料品以外の重なるアイテムについては、大体どちらかに偏るようにしました。 特に武器は、重ならないと複数投射などがやりにくくなりますからね。 副産物として、怪しい仕様も色々と増えてますが。 > -J_fake_items[]で「怪しい和風名」を追加 [要J_PACHI_ITEMNAME] > --[Shop] ★>>ジャポン製品免税店(Made in Jappon - tax free) [要J_PACHI_ITEMNAME] …元は、 Slash'EM Extended でのJapanese_items[] から 有用そうな名称を取捨選択した際の残りを再活用したものだったり。  #良さげなものはJapanese_items[]の方に取り入れてます。  #あと、 bronse plate mail を「短甲」と呼んでいたのには、なるほどと思いました。  #(vanillaだと通常のplate mailをこう呼んでいて違和感があったけど、  # 古代の青銅鎧をこう呼ぶのは有りかな、と) なので残ったのは怪しい品物ばかり。 当てはめ方が怪しいものとか、英単語をローマ字読みにしたものとか。  #日本語版の通常名をローマ字読みにしたもの等、日本語版では他とかぶるものも含む。 なんせ、クロスボゥとクロスボゥボルトがこんな感じですからね。 { CROSSBOW, "ishiyumi" }, /*JP いしゆみ*/ /*with kanji "弩" :but it means common translation of "crossbow" at FHS*/ { CROSSBOW_BOLT, "kurosuboboruto" }, /*JP くろすぼーぼると*/ /*some fun -- romanized spelling */ 和訳も、あえて怪しさ倍増でお送りしております。 また、護身堂や上記店で販売する刀には、聖器でなくとも銘が入るようにしました。 機能上は何の差異もありませんが、まあ雰囲気作りの一環として。  #そもそも和風アイテム関連の新方式も、両方を同時に出せるようにという  #雰囲気造りの為のシステムですし。  #(従来は一部の聖器の素アイテムでのみ独自に処理していた。今回はそれらも含め一新) ---- 次にDwarf Noble用のクエスト聖器を実装。 いや、実装済みのエレボールの鎧(Dwarf Knight用)で良いじゃんと思ってたけど、 よく見たらDwarf Nobleの方は、これでもかとばかりにミスリル服が配置されているという…(- -;)。 という訳で、本来の聖器を実装するために まずは素アイテムである「仮面」について調査。 目隠しと同様に顔面に装着し、様々な怪物の名を冠する仮面がある模様。 …なんだ、怪物名表示って、要は毛皮や皮(fur & hide)と同じ方式でいけそうじゃん。 という訳で仮面と、ついでに眼帯も実装。 眼帯は、 Slash'EM Extended での Pirate_items[] の一覧から名前だけ拝借。 そちらでは目隠しの別名として設定されてたけど…両目を隠す眼帯って、ギャグ以外では知らない (^^;) どうもdNetHackの仮面(orその聖器)には他にも複雑な効果がありそうなのですが、 それらのコードまで移植していたららちが明かないので、FHSパッチの仮面は 単なる顔面装備となります。 ---- で、本命の聖器の実装にかかる。  ->複数耐性の処理を移植する必要が出てくる   ->エレボールの鎧と共にそれらの処理を実装    ->dNetHackではドラゴン鎧の複数耐性/能力も同様の処理で行っている     ->FHSパッチでもドラゴンの鱗/盾/鱗鎧について仕様練り直し 変更中にもあれやこれやと問題が見つかり片端から対処。 溶岩関係の処理をvanilla 3.6から持ってきたり、 装備品の付け外しによる耐性変化が現在のPCの状態に影響するようにしたり、 その過程で他の装備品にバグが見つかったり… …疲れた orz ちなみに、新たなるドラゴン系装備の効果は以下のようになります。 ---- --強化値による耐性/効果の変化は廃止されます --鱗/盾は1つの耐性/効果を持ちます --鱗鎧は,種類によっては追加でもう1つ耐性/効果を持ちます --聖器『竜王の鱗鎧』は,種類によっては追加でもう1つ耐性/効果を持ちます |種類 |鱗/盾 |鱗鎧 |『竜王の鱗鎧』 | --------------------------------------------------------------------------------- |灰色ドラゴン |魔法耐性 | | | | |銀色ドラゴン |反射(*1) | | | | |幻影ドラゴン |幻影 | |幻覚耐性 | | |漆黒ドラゴン |生命力吸収耐性 |忍び | |反撃:盲目(強制)| |虹色ドラゴン |魔法ダメージ半減| |魔力再生 | | |赤色ドラゴン |火炎耐性 |溶岩泳 |攻撃ダメージ増加| | |白ドラゴン |冷気耐性 | |水上歩行(特殊) | | |オレンジドラゴン|睡眠耐性 |幻覚耐性 |自由行動 |反撃:減速 | |黒ドラゴン |粉砕耐性 | | |反撃:武器粉砕 | |鮮血ドラゴン |生命力吸収耐性 |HP再生 |病気耐性 | | |青ドラゴン |電撃耐性 | |眩暈耐性 | | |緑ドラゴン |毒耐性 |病気耐性 | |反撃:毒ダメージ| |ドラゴン |-- |-- |-- |-- | |金色ドラゴン |光源 |閃光防御 |永久光源 |反撃:盲目(閃光)| |天竜 |眩暈耐性 |浮遊 |飛行(*2) | | |水竜 |水泳 | |魔法の呼吸 | | |黄色ドラゴン |酸耐性 |混乱耐性 |石化耐性 |反撃:酸ダメージ| |ワイバーン |毒耐性 |-- |-- | | -(*1) 鱗はランダム反射 [要RANDOM_REFLECT],その他は正反射 -(*2) 浮遊と差し替えになる ---- 今までは盾に耐性等はあまり持たせないようにしていたのですが、その制約を無くしました。 同様に、竜王の鎧について、別種の鎧の追加耐性/効果とかぶるものも追加したり。 また、幾つかの種類については効果を追加変更しています。 特に天竜については通常の効果が眩暈耐性に変更されているので注意。(浮遊や飛行は鎧の追加効果へと移動) 灰色/幻影も、せめて竜王の鱗鎧には何か追加したいところですが…下手なものを追加すると 他の上位互換になってしまいかねないので悩みどころ。今のところは妙案もなし。 ああ、もしかしたら、3.6基準では溶岩の上に立つのは多少厳しめかもしれません。  #よく比較していないので、実際に厳しくなっているのかは不明。 でも、溶岩泳と火耐性の両方を持っていれば、それらも回避できるようにしました。 それらを併せ持つ(ようにした)装備は、D型装備の魔除けと… ---- 溶岩関係に手を入れる過程で、途中で目に付いた過去に実装した処理(満ち潮の巻物など)も 色々と整備していたのですが、きりが無くなるためそれらは打ち切り。 あとは、闇の森のクモを実装したり、それに伴う諸々を実装/再整備したり。 新攻撃(AD_WEBS)とか、木から現れる怪物についてとか。 ---- 試験版でも実装していたクエストリーダーの呼び名追加仕様ですが、 同様に宿敵に対しても適用。 併せて、エルフの指導者については男女2人とも出せるようにしたり、 dNetHack準拠で強化したり。  #2人同時に出る時は、リーダーでない方はクエストガーディアンの台詞を  #しゃべ…るように処理を変更しました。  #(vanillaでは自クラス指定でないガーディアンは強制的に一般会話に変更される)  #こういった細かい部分も一つ一つ手を入れる必要があるんですよね。 それらの反映と改良の過程で、過去に実装したクエストも再整備。 特に変化が大きいのは以下の2つです。  ・オーククエスト    リーダーや宿敵を変更したり祭式を全面的に差し替えたり。    内容の変化が激しいので、個人的には「ver2」と呼んでいます。  ・ジェダイType2。、    開始階と最終階をがらりと変更。    それに合わせクエストのメッセージも変更。    意図していたものに近くなったかな、という気はします。 新規クエストは、試験版の時の剣士Type1Bも含めて3種類。 ・[職業quest] 剣士 Type1B(秩序) : Slash'EM Extended から移植 ・[種族quest] エルフ Type2(Elf Type2) : dNetHackから移植 [要ELF2] ・[種族quest] ドワーフ Type3(Dwarf Type3) : dNetHackから移植 [要DWARF3] ああ、ドワーフクエストについては、固定指定の対象職業も入れ替えたんでした。 -------------------------------- |種族/職業 |クエスト | -------------------------------- |ドワーフ/剣士 |ドワーフ Type1| -------------------------------- |ドワーフ/騎士 |ドワーフ Type2| -------------------------------- |ドワーフ/戦士 |ドワーフ Type3| -------------------------------- …実装中に判明したのですが、今回追加したDwarf Noble(Type3)の クエスト聖器の効果って、 「斧使用時の命中率とダメージ増加」もあったのですよ。 なので、ほぼ剣専門な「剣士」を割り当てる訳にも いかなくなりまして(; ;)。 ---- こうした過程でも色々とバグが見つかり対処。 更に、作業が大詰めを迎えたところで、怒涛のごとくバグ発覚 orz。 泣きたくなるほどひどい状態でしたが、どうにか一段落ついたので ver0.8.32を公開します。 ---- 余談ですが、ついでに案だけ浮かんだ オーククエストType2の最下層はこんなイメージ。 死体↓↓宿敵 ................. ...%@...ooo...oo.. ..oo...\\..ooooo..... ...oo.\\\.oooooooo... ..ooo...ooo.\\\\..ooo .....\\\\\\ooo\\..oo \\\\ooo\oo\\oo\\ooo \\ooo\\\\\oo\\\\\ooo \\\\\\\ooo\\\\\ooooo .が地面、\が草地。 oは全部味方(友好的なオーク)。 こんなに味方を配置したら、味方のオークがクエスト聖器を拾ってしまう可能性が 無きにしもあらずですが…実際にそうなるのか、何かしらのセーフティーが 実装されているのかは不明。 まあ、仮にセーフティーがあっても、このクエストでは可能なら外してしまいたいところ。 え、「そんな事して実際に拾われたらどうするんだ」って? 取り返して下さい。オークの流儀(物理)で。 ------------------------------------------------------------ -2018/02/19 (FHS patch test(JNH343)) とりあえず、3.6のキャラクター選択コードを丸ごと移植。 tty_player_selection()自体は他の入出力を必要としない独立処理なので、 丸ごともぎ取ってきても機能するだろうという乱暴な見立てで作業開始。  #利点は「職業/種族/性別/属性を任意の順番で選択可能になる」こと  #欠点は、職業欄を二列にできないためページ送りがどうしても生じること まずはtty_player_selection()を移植し、 コンパイル時に引っかかった箇所を片端から移植するという力技ですが、 どうにかエラーも全て解消して動くように。 で、結果はこんな感じ。 ---- 職業を選んでください a - Archeologist b - Barbarian B - Bard c - Caveman/Cavewoman f - Fighter F - Fencer h - Healer j - Jedi k - Knight m - Monk M - Medium p - Priest/Priestess r - Rogue R - Ranger s - Samurai t - Tourist v - Valkyrie w - Wizard * - ランダム / - 種族を先に選ぶ " - 性別を先に選ぶ (1/2) ---- 職業が多い分、選択肢が次ページにもはみ出しているので注意。  #地味ながら、他の処理と同様にスペースキーでページ送りが可能になるよう改良しています ---- [ - 属性を先に選ぶ q - 抜ける (2/2) ---- 一通り選択し終わった後の画面では… ---- 名前: wizard これでよい? [ynq] 職業: Bard 種族: human wizard, chaoticfemaleのhumanBard 性別: female 属性: chaos y + はい; ゲームを始める n - いいえ; 職業を選び直す q - 抜ける (end) ---- …あー、JNetHack 3.6だと 各部の名称が日本語で塗りつぶされてるんでしたっけ(- -;)。  #3.4では英語が残されている箇所。  #そこから単語を読み取れば英語のままですわな。 3.4用に日本語対応していかなきゃ駄目かあ…。 でもまあ、とりあえず動いただけでも一歩前進。 ---- その後は、Dwarf quest Type3 クエスト実装の為に色々と下準備。 以下、順番に。 ---- > **[Artifact] > -星の石の重量を大幅に軽くした > -床の上や岩盤中にあるスリング弾は材質名を隠すようにした [要: MATERIALS] > > (中略) > > -dNetHackより以下を移植 > --[Item] ★>>ミスリル鉱石(unrefined mithril) / 銀光沢色の石(silvery metal) > --[Item] ★>>闇の化石(fossile dark) / 黒い石(black) > --スリング弾や闇の化石が岩盤中に生成される処理 > > -※変更点: ミスリル鉱石/闇の化石の英語名を変更 > -※変更点: 各種の金属材質のスリング弾も岩盤中に生成され得るようにした [要: MATERIALS] 英名から "chunk of -" を外したり (objnam.c内にて追加する)と、色々いじっています。 ああ、ミスリル鉱石の未識別名は「灰色の石」に変更するかもしれません。 ついでに他の石類も幾つか移植。 SLASH'EMの砥石とか、TNGのICやトランジスタとか。 ちなみにICやトランジスタも宝石扱い(TNGでは道具)。未識別名は「黒い石」(w)。   #将来、もし真空管やヱヅソンの白熱電球を実装することがあるなら、   #未識別名は「ガラスの球」で。 ---- > **[RANDOM_QUEST] > -クエストのデータにq_ldrcallを追加:クエストリーダーの呼び名を設定 > --設定しない場合は、従来通りの名称(怪物名)が用いられます > --設定した場合は「(呼び名)という名の(怪物名)」になります > ---クエストのメッセージにおいては、リーダーは怪物名の代わりに呼び名を呼ばれるようになります > **[BARD] > -怪物変更 > --[Qmons] [旧]オルフェウス(Orpheus) → [新]伝説の詩人(Master Bard) > ---※q_ldrcall [RANDOM_QUEST] を用いるため、クエスト内での呼称は変わりません > **[BARD2] > -怪物変更 > --[Qmons] [旧]ピンダロス(Pindar) → [新]伝説の詩人(Master Bard) > ---※q_ldrcall [RANDOM_QUEST] を用いるため、クエスト内での呼称は変わりません > **[DWARF] > **[DWARF2] > -怪物変更 > --[Qmons] [旧]トーリン(Thorin) → [新]長鬚族の王(King of Longbeards) > ---※q_ldrcall [RANDOM_QUEST] を用いるため、クエスト内での呼称は変わりません リーダー怪物を一般名称化して共用可能に。 呼び名については qdatas[] 内でクエスト毎に設定可能。指定無しなら従来どおり。 今の所は、ドワーフと吟遊詩人のクエスト限定で。   #エルフ辺りも可能かもしれないけど、今のところ変更は考えていません。 例えばドワーフクエストではリーダー名が「トーリンという名の長鬚族の王」になりますが、 クエスト中のメッセージでは「トーリン」のままになるので違和感は少ないかと。 (当クエストの時点では山に帰還していないので、一応「山の下の王」の呼称は使わない) ---- さて、続けてクエストマップ(Moria.des)の調整を。 ものによっては、dNetHack特有の怪物やらアイテムやらを差し替える必要がありますし。   #Watcherが出てくるけど、この怪物は独自処理も多そうだ…   #krakenで何とかしてみるか? と、作業を進めている途中で問題発覚。 Dwarf quest Type3は、Dwarf Noble quest (dNetHack)を基にしているのですが、 実は…後半の途中階層(Dnb-filb)がこのままではマズいのではないかと。 1階層でhill orcを90体出すという無茶振り。 これ、途中階が2階以上生成されたら、丘オークが絶滅して ランダムに怪物が生成されるんじゃあ…   #対策なしだと120体で絶滅するはず。   #FHSパッチでは一応、オーク系怪物は2倍の余裕を持たせていますが(240体)   #それでも十分かどうか… Type2 (Dwarf Knight)の方でも多少の懸念はありましたが、 そちらではあくまで最下層限定でしたからね。(最下層は2つも生成されない) かといって、生成限界を単純に引き上げるというのも芸が無いし。   #ちなみに井出氏が TNG 3.4 で作成された生成限界引き上げ処理[EXTINCT65535]を   #組み込んでいるため、引き上げるだけなら余裕で可能。 …という訳で。 > **[NEWGEHENNOM] > -地獄の階層の種類を追加: Moria-like > --イーノグ、ゲーリューオーンの領域に稀に出現します 新たなマップ生成処理を組んでしまいました。 とはいえ、この方面はあまり詳しくないので brassの地獄生成処理を基礎部分だけ拝借し、余分なものを取り払いつつ加工。 youkan氏謹製の処理を用いて、だだっ広い基本空間を生成したうえで、 独自処理の繰り返し地形を配置していく形になりました。   #独自地形と濁して書いていますが、dNetHackではちょっとした仕掛けがありまして。   #再現するのに苦労しました。 地獄以外の階層では、自動的に大量のオーク族が生成されるようにしています。 丘オークに限らず様々な種類のオークやゴブリンが入り乱れる状態になりますが、 まあ単一種類の生成で絶滅させるよりかは良いかなと。 Dwarf quest Type3では、該当階の生成時には、通常マップを読み込む代わりに こちらの処理でマップ生成するようにします。 …あー、desファイルの調整がまだ中途半端だったか。 ---- あとは、以前に組み込んだこれを利用して、Dwarf Type3を実装できるように… > **[RANDOM_QUEST] > -特定の種族と職業の組み合わせで,必ず種族クエストを受けられるようにした > --[備考] これらは,本来その職業では選択できないはずの組み合わせとなっています 現在のところ、以下のようになっています。 ・ドワーフ/戦士:ドワーフ Type1 ・ドワーフ/騎士:ドワーフ Type2 今回は第3の職業を選択しなければなりません。 といってもFHS patchには現在のところNoble(貴族)が実装されていないので、 代わりに剣士の選択可能種族にドワーフを追加…しようとしたところ、問題発覚。   剣士って、中立と混沌しか選択できない orz …さてどうしよう。 選択肢に秩序を追加することは可能ですが、 そうすると、同時に選択可能となる「人間の秩序の剣士」をどうするかという問題が。 現在のところ、無制限に解放することは考えていません。 かといって、未選択の箇所を別クエストとして埋めようにも、すぐには案も出ず。   #戦士では、追加クエストで順次その穴を埋めていっています。   # ・本来: 「秩序or混沌、人間、女性」限定   # ・Type2: 「秩序or混沌、人間、男性」を追加   # ・Type3: 「中立、男性/女性」を追加   #   #…以上により「秩序/中立/混沌、人間、男性/女性」を全てカバー   # ->その後、「人間以外」について各種の種族クエストを追加 更に他の職業で代用する? といっても、   「秩序で/現在ドワーフは選択できず/(一応)戦士系」 このような条件に合致する職業は他になかなか見当たらず。 一応、選択を追加できそうな職業(秩序職)に一通り目を通してみたものの… 僧侶? 修行僧? 巫女? 侍? うーむ… SLASH'EMの「衛士」なら適任だと思うのですが、 FHSパッチには未実装。 かといって、今から貴族や衛士の実装にかかるのは、余計に遠回りになるので 避けたいところ。(将来的には移植したくもあります) となれば、やはり秩序剣士の追加クエストを検討した方が良いかなと、 dNetHack や Slash'EM Extended の職業やクエストを眺めていく。 結局、他の職業では剣士に転用できそうなクエストは見つかりませんでしたが… > **[FENCER] > -剣士クエスト Type1B を追加 [要 RANDOM_QUEST] > --[職業] 剣士 Type1B(秩序) : Slash'EM Extended から移植 > --※メッセージ以外は全て一緒です はっはっは。 よく見たら、Slash'EM Extended の剣士クエストの文章って、 ほぼ騎士クエストそのまんまじゃないかい (^ ^;)。   #マーリンの代わりにイアソン(Jason)の名前が出てきますが。 で、これを秩序剣士のクエスト用にちょこちょこ手直し。 一部メッセージが違うので、そのまま共用はできませんが。 そして、その副産物がこちら。 > *[FHS] > -騎士クエストのメッセージを再翻訳 JNetHack本家にも投稿させて頂きました。 ---- …と、現在の進捗は大体上記の通り。 まだDwarf Type3実装には至っていませんが、とりあえず試験版としてUpしておきます。   #データのバックアップという側面もあります。   #このPCや自分に何かあった時の為に…ね。 ------------------------------------------------------------ -2018/02/08 (FHS patch 0.8.31a(JNH343)) あわわわ。 掲示板にて「TTY版で吟遊詩人プレイ不可」のご報告が。 windows TTY版限定の独自処理(職業選択)が原因でした…むう。  #選択肢を二列に並べる為、入力読み取り部がハードコーディング。  #職業登録を怠ると「一覧に自動登録されるが選択しても間違った入力扱い」に。  #しかも間違った入力時にはゲーム自体を即座に終了(異常終了ではなく)させていたという… 立て続けで申し訳ございませんが、修正版Upしました。 根本的な再発防止策は、しばらくお時間下さい。  #ハードコーディングを無くす必要がある…なら、  #いっそ独自処理をやめてvanilla 3.6の処理を移植してしまうとか。  #(二行には出来なくなるが、職業/種族/性別を好きな順番で選択可能になる) ------------------------------------------------------------ →これ以前は別Fileにて。