diff -durN Hengband/lib/file/zrad.txt Hengband-flavor/lib/file/zrad.txt --- Hengband/lib/file/zrad.txt Thu Jan 1 00:00:00 1970 +++ Hengband-flavor/lib/file/zrad.txt Sun Jan 1 00:00:00 2012 @@ -0,0 +1,57 @@ +# +# Zzz... koraneruna! Random Artifact's Description .TXT file --koka +# +# [is] 素アイテム名(「ダガー」など) +# [n1][n2] 男性名 (違った名前は[n1]と[n2]の2人分まで。 +# 3人目は今のところつかえない。以下「2つ」の項で同様) +# [h1][h2] 女性名 (2つ) +# [l1][l2] 地名や所属団体名 (「さいたま」や「リヴェンデル」など、2つ) +# [m1][m2] モンスター固有名 (2つ) +# [md1][md2] モンスター種族名 (「巨獣」「キメラ」「死の爬虫類」等、2つ) +# [ra] 種族や職業など人物像 (「戦士」「勇者」など) +# [il] アイテムのみてくれなど (「ルーンの刻まれた」など) +# [a] アーティファクト名自動 (「『リンギル』」や、「苦痛のグレイブ」のように) +# [aa] アーティファクト名全部 (「ロング・ソード『リンギル』」のように) +# +N:1:武器 +[l1]の[ra]の中で最も素早かった[n1]が使っていた[is]だ。 +[l1]の[ra][n1]が[md1]『[m1]』を倒すのに使った[is]だ。 +[md1]『[m1]』と戦った[l1]の主[n1]が持っていた[is]だ。 +驚くほど軽く振るうことが出来る[is]だ。どこかの英雄が使っていたものに違いない。 + +N:2:防具 +非常に強固な[is]で、あらゆる邪悪な力を跳ね返すという。 +[l1]の[ra][n1]が作った[is]で、魔力の篭もったルーン文字が刻まれている。 +[l1]を守る[ra]の[n1]が使っていた[il][is]だ。 +重要な部分が二重になった[is]だ。精神と肉体に作用する魔法がかかっている。 + +N:3:剣 +柄に真っ白な宝石が埋め込まれた[is]だ。[l1]の名工により作られたと言われている。 +[l1]の[md1]『[m1]』の胎内から取り出された[is]だ。 +ローハンの[ra][n1]が使っていた鋭い[is]だ。 +[l1]の王[n1]が帯びていた[is]だ。強力な魔法がかかっていると言われる。 +[l1]の王子[n1]が決闘に使った[is]だ。使用者を守護する魔法がかかっている。 + +N:4:鈍器 +ドワーフの[ra][n1]が使っていた大振りな[is]だ。 +[l1]の[ra][n1]が[md1]『[m1]』を打ち破るのに使った[is]だ。 +かつて[md1]の群れと勇敢に戦った[l1]の[n1]の金属の[is]だ。 + +N:5:ほか装身具 +[l1]の魔術師[n1]の手によって作られた[il][is]だ。 +[il][is]で、この世界の誕生の時から存在すると言われている。 +[l1]で生み出された[is]で、[md1]をも退散させる力を持つという。 +星の輝きが封じ込められた[is]だ。かつては[h1]が所有していた。 + +N:6:弓、クロスボウ +戦いで負け知らずだった[l1]の[n1]が使っていた[is]だ。 +百発百中の技を持っていた、[l1]の[n1]の伝説の[is]だ。 +秩序の勢力の[ra][n1]が持っていた[il][is]だ。 + +N:*:Default +赤く輝くルビーが埋め込まれた[is]で、第一紀のエルフにより作られたと伝えられている。 +[il][aa]で、[l1]の名家に伝わる家宝だ。 +モリアのドワーフの鍛冶師の手による、[il]素晴らしい[is]だ。 +混沌の宮廷の[n1]がログルスから生み出した[is]だ。 +アンバーの庶子[n1]がパターンから生み出した[is]だ。 + diff -durN Hengband/lib/file/zrap.txt Hengband-flavor/lib/file/zrap.txt --- Hengband/lib/file/zrap.txt Thu Jan 1 00:00:00 1970 +++ Hengband-flavor/lib/file/zrap.txt Sun Jan 1 00:00:00 2012 @@ -0,0 +1,913 @@ +# 注意:[n1]と[n2]等はそれぞれが別の文字列になるまで読み込もうとする仕様に +# いまのところなっており、各"N:?"項目を同じ文字列だけで埋めると +# 永久ループになってハングします。 +# たとえば N:1 の要素を「太郎」だけにすると、「太郎」しか選ばれず +# ハングの原因になります。 +# +N:1:name of hero +アイヴァン +アイオン +アイザック +アイネアス +アイネイアス +アイラ +アダム +アドリアン +アドルフ +アドルファス +アラン +アルヴァ +アルヴィン +アルダス +アルドヘルム +アルビン +アルフレッド +アルマン +アレク +アレクシス +アレックス +アレン +アロン +アンガス +アンセル +アンセルム +アンディ +アンドレア +イヴァン +イオン +イザドル +イシュメル +ヴィヴィアン +ウィリアム +ウィルフレッド +ヴィンセント +ウォルト +ウォレン +エイドリアン +エイブラハム +エイブラム +エズラ +エドウィン +エドマンド +エドモンド +エマニュエル +エラ +エリアス +エリック +エリファレット +オズワルド +オネシファラス +オネシマス +ガイ +カサンドラ +ガス +ガッド +ガブリエル +ガマリエル +カルヴィン +キム +キャシアス +キャメロン +キャロル +クェンテイン +グスタヴス +クライド +クラレンス +クリスチャン +グリフィス +グリフィン +クレア +クレメント +グレン +ケヴィン +ケネス +コリン +コルネリウス +コンスタント +コンラッド +サイモン +サイラス +サイラス +サディアス +サミュエル +サム +ジェイコブ +ジェイラス +ジェイル +ジェディディア +ジェラルド +ジェレマイア +シオドア +ジム +ジャイルズ +ジャクソン +ジャスティン +ジャック +ジュニアス +ジュリアス +ジュリアン +ジョシュア +ジョスリン +ジョナサン +ジョナス +ジョブ +ジョン +シリル +スコット +ズリエル +セオドア +セオフィラス +セシル +セドリック +セロン +タイタス +ダグラス +ダニエル +ダモン +ダリウス +ダン +ダンカン +チャド +ディック +テッド +デニス +デリク +デリック +テレンス +ドゥエイン +ドゥエイン +ドゥワイト +ドナルド +トマス +トム +トリストラム +トロイ +ナサニエル +ナフム +ニコラス +ノエル +ハイラム +ハウエル +バジル +バッド +パット +バディ +パトリック +ハミルトン +ハロルド +ハンニバル +フィリップ +フェビアン +フェリックス +ブライアン +フランク +フランクリン +フランシス +フレディ +フレデリック +ブレンダン +ペニュエル +ベネット +ベンジャミン +ホゼア +ボブ +ボリス +ホリス +ホレス +マイケル +マイルズ +マックス +マラカイ +マンフレッド +ミック +ミルトン +メルヴィン +ユリア +ユリエル +ライナス +ラザラス +ラッセル +ラルフ +ランダル +ランドルフ +リック +リン +ルイス +ルドルフ +レイフ +レイモンド +レオ +レオナルド +レオポルド +レオン +レジナルド +レックス +ロイド +ロス +ロデリック +ロナルド +ロビン +ロブ +ワレス + +N:2:name of heroine +アイオネ +アイダ +アイナ +アイネズ +アイリス +アガサ +アグネス +アゼイリア +アダ +アダレイド +アデラ +アデリン +アデル +アデレイド +アナ +アナスタシア +アナベラ +アナベル +アニタ +アビゲイル +アポロニア +アマンダ +アメリア +アラベラ +アリス +アリスン +アルシア +アルテミシア +アルテミジア +アルダ +アルファ +アルマ +アレグザンドラ +アレシア +アン +アンジェラ +アンジェリア +アンジェリカ +アンジェリナ +アンジェリン +アントニア +アンドレア +アントワネット +イヴ +イヴァ +イヴォンヌ +イヴリン +イオネ +イサドラ +イザドラ +イザベル +イザベル +イダ +イネズ +イブリン +イモジェン +イライザ +イルマ +イレイン +イングリッド +ヴァイオラ +ヴァイオレット +ヴァレリア +ヴィヴィアン +ヴィヴィアン +ヴィオラ +ヴィクトリア +ウィニフレッド +ヴェラ +ヴェロニカ +ウェンディ +ウナ +ウルスラ +エイドリアン +エイプリル +エヴァ +エヴァドニ +エヴァンジェリン +エステル +エセル +エッタ +エディス +エドナ +エフィ +エマ +エム +エメリナ +エメリン +エリカ +エリザベス +エルヴィラ +エルマ +エレイン +エレン +オリヴィア +オリビア +オリンピア +カミラ +カルメラ +カレン +キティ +ギネビア +キム +キャサリン +キャスリン +キャロライナ +キャロライン +キャロリン +キャロル +キャンディス +グィネヴィア +グエナヴィア +グエナヴィル +グエンドリン +クサンティッペ +グラディス +クララ +クラリッサ +クリスチャン +クリスティアナ +クリスティン +グリゼル +グリゼルダ +クレア +クレア +グレイス +グレタ +グレッチェン +グロリア +ケイト +ゲイル +ゲルダ +コリン +コリンナ +コルデリア +コルネリア +コンスタンス +サマンサ +サラ +ザンティペ +ジェサミン +ジェシカ +ジェマイマ +ジェミマ +ジェラルダイン +ジェラルディン +シェリル +シネブラ +シビル +ジャクリン +ジャスティン +ジャスミン +ジャニス +ジャネット +シャロン +ジュディス +ジュリア +ジュリアナ +ジュリアン +ジュリアンナ +ジュリエット +ジョアナ +ジョアン +ジョアンナ +ジョイ +ジョイス +ジョスリン +ジョセフィン +ジョゼフィン +ジラ +ジリアン +ジル +シルヴィア +シルビア +シンシア +スザンナ +スザンヌ +ステラ +セシリア +セイディ +ゼノビア +セリア +ゼルダ +セルマ +セルマ +セレステ +ソフィア +ダイアナ +ダイアン +ダイナ +タバサ +ダフネ +ダマリス +タマル +タリア +ダリル +チャリティ +デイルドレ +デニス +デニズ +デボラ +デラ +デリア +テレサ +テレザ +デロリス +ドゥルシラ +ドッティ +ドナ +ドリス +ドル +ナタリア +ナン +ノラ +ノルマ +パット +バッブ +パティ +パトリシア +ハナ +バベット +バブ +パメラ +ハリエット +ビクトリア +ヒルダ +フィオナ +フィリス +フィリッパ +フェイ +フェイス +フランシス +フランシン +ブランチ +ブリジット +プリシラ +フレディ +ブレンダ +ベアトリックス +ヘイゼル +ベリル +ベリンダ +ベル +ペルシス +ヘレン +ヘンリエッタ +ヘンリエット +マイラ +マクシン +マグダリン +マダリン +マティルダ +マデリン +マライア +マリア +マリアン +マリオン +マリリン +マルヴィナ +マルティナ +ミッシェル +ミュリエル +ミラベル +ミランダ +ミリアム +ミリセント +ミルドレッド +メイ +メイベル +メイヴィス +メリエル +メリサ +メリッサ +メリンダ +メルヴィナ +メルセデス +メロディ +モニカ +ライザ +ラヴィニア +ラシェル +ラナ +リサ +リザ +リタ +リディア +リネット +リブ +リリアン +リン +リンダ +ルイザ +ルシンダ +ルドミラ +ルル +レイ +レイチェル +レイラ +レジナ +レベッカ +ロザンナ +ロッティ +ロティ +ロビン +ロレッタ +ワンダ + +N:3:location +ホビット庄 +ブリー村 +ミスロンド +バラド=ドゥア +ミナス・ティリス +ミナス・イシル +霧降り山脈 +影の山脈 +オロドルイン +リューン +ロスロリアン +ロヴァニオン +灰色山脈 +エリアドール +青の山脈 +アモン・スール +ローハン +ハランドール +モリア +灰の山脈 +ヘルム峡谷 +角笛城 +ナン・クルニア +モランノン +カルホスト +ナルホスト +キリス・ウンゴル +塚山 +袋小路屋敷 +ドリアス +ベレリアンド +オスシリアンド +カザド・ドゥム +闇の森 + +N:4:種族など +戦士 +メイジ +プリースト +盗賊 +レンジャー +パラディン +魔法戦士 +混沌の戦士 +修行僧 +超能力者 +ハイ=メイジ +観光客 +ものまね師 +魔獣使い +スペルマスター +アーチャー +魔道具術師 +吟遊詩人 +赤魔道師 +剣術家 +練気術師 +青魔道師 +騎兵 +狂戦士 +鍛冶師 +鏡使い +忍者 +変身術師 +風師 +虫使い +金魔道士 +巫女 +商人 +影使い +メンテナー +呪術師 +風水士 +ルーン使い +アンビリーバー +魔物学者 +洞窟探検家 +魔剣士 + +N:5:モンスターどんな +レッサー・ヘル=ビースト +エオグ・ゴーレム +巨像 +ビホルダー +地獄の公爵 +リッチの修行僧 +ナイトメア +バンパイア・ロード +古代ゴールド・ドラゴン +グレート・クリスタル・ドレイク +堕天使 +マスターリッチ +アルコン +アンデッド・ビホルダー +アイアン・リッチ +大バシリスク +古代万色ドラゴン +天上界ドラゴン +シュブ=ニグラスの黒い仔山羊 +異次元の色彩 +ロイガー +ドリードマスター +ドローレム +灰色の掠奪者 +ナズグル +ドラコリッチ +グレーター・タイタン +ドラコリスク +ファスティトカロン +幽体ティラノサウルス +エント +フルゥ +デス・モルド +ベヒーモス +ニカデーモン +グレーター・バルログ +メンデスの山羊 +マウロタウロス +ストーム・ワイアーム +地獄の騎士 +偉大なる不浄 +混沌の王族 +レッサー・クラーケン +アイス・ワイアーム +デミリッチ +ナイトクローラー +変幻の魔公 +禁断の護り手 +頭蓋のドルジ +ヘル・ワイアーム +コーン +ナイトウォーカー +シャドウ・ロード +グレーター・クラーケン +アーチリッチ +ジャバーウォック +究極ビホルダー +リヴァイアサン +カオス・ワイアーム +ロー・ワイアーム +バランス・ワイアーム +シャンブラー +万色ワイアーム +スカイ・ドレイク +黒き掠奪者 +マスター・クイルスルグ +グレーター・ドラゴン・クイルスルグ +腐乱グレーター・クイルスルグ +ワープ・デーモン +サイバーデーモン +クトゥルフの落とし子 +パワー・ワイアーム +カァウ +幽体ワイアーム +ストームトロル +ヴェノム・ワイアーム +上級修験者 +修験道免許皆伝者 +超人ロックのクローン +レッサー・バルログ +プラネター +ソーラー +デュラハン +九尾の狐 +鳳凰 +麒麟 +デヴチォコヴォ +老ソーサラー +聖堂騎士 +石ドラゴン +鋼鉄ドラゴン +エルダー・バンパイア +時空ワイアーム +バイル・ワイアーム + +N:6:モンスターname +アウグスティン +アウグスト +アウグストゥス +アヒム +アポロニウス +アマンドゥス +アルトゥル +アルヌルフ +アルノ +アルノルト +アルフォンス +アルブレヒト +アルベリヒ +アルベルト +アレクシウス +アレクシス +アンゲルス +アンスヘルム +アンゼルム +イェルク +イェンス +イングベルト +インゴ +インゴベルト +インゴマル +ヴァルデマル +ヴィクトル +ヴィリバルト +ヴィルギル +ヴィルヘルム +ヴェルンハルト +ヴェルンヘル +ヴェンツェル +ヴェンデル +ヴェンデルベルト +ヴォルフ +ヴォルフガング +ヴォルフラム +ウツ +ウルリヒ +エッカルト +エックハルト +エックベルト +エッケハルト +エトヴァルト +エトガル +エトムント +エルケンバルト +エルンスト +オスヴァルト +オスカル +オットカル +オトカル +オトマル +カスパル +カルル +ギルベルト +グスタフ +クラウス +クリスチャン +クリスティアン +クリステル +クリストフ +クルト +クンツ +グントラム +グンドルフ +グンナル +ゲオルク +ゲッツ +ゲプハルト +ゲルト +ゲルベルト +ゴットハルト +ゴットヘルフ +ゴットホルト +コンスタンティン +コンラッド +ザムエル +ザムゾン +ジクストゥス +ジムゾン +シュタッフス +シュテファン +シュテフェン +ゼップル +ゼルギウス +ゼルマル +ティル +テオドシウス +トラウゴット +ニコラウス +ノルベルト +ハイケ +ハイニ +ハイン +ハインツ +ハインリッヒ +ハインリヒ +パウル +バシリウス +バルタザル +バルテル +ハルトヴィヒ +バルドゥイン +バルドゥル +ハルトマン +ハンジ +ハンス +ハンスイェルク +ハンスユルゲン +ハンスヨアヒム +ハンゼル +ハンネス +ハンネマン +ハンノ +ハンヒェン +ヒエロニムス +ヒルデブラント +ヒンツ +フィリップ +フェルディナント +フェルテン +フランク +フランツ +フランツィスクス +フリッツ +フレンツヒェン +フンベルト +ペッツ +ベネディクト +ベネディクトス +ベリエス +ベルト +ベルトホルト +ベルトラム +ベルトルト +ヘルベルト +ヘルマン +ベルンハルト +ヘンスヒェン +ヘンゼル +ベンノ +ベンヤミン +ヘンリク +マクシミリアン +マグヌス +マックス +マルクス +マルコルフ +マルティン +マンゴルト +ミヒェル +ミヒャエル +メルヒオル +ヤルマル +ユストゥス +ユルゲン +ヨッヘン +ヨハネス +ヨハン +ライマル +ライムント +ラインハルト +ラインホルト +ラルフ +リヒァルト +リヒャルト +ルッツ +レオ +ロルフ + +N:7:item's looking +ルーンが刻まれた +ルーンが刻まれた +ルーンが刻まれた +ルーンが刻まれた +ルーンが刻まれた +輝く +輝く +輝く +輝く +輝く +黄金で飾られた +血に染まった +歪んだ +明滅する +紫の +宝石で飾られた黄金の +骨でできた +凄まじく曲がりくねった +ルビーで飾られた +どっしりした +緑に輝く +象牙の +明るく輝く +ルーンが刻まれた +煙を上げる +血に染まった +捻じ曲がった +チカチカ光る +歪んだ +水晶の +宝石で飾られた +透明な +装飾された +穴だらけの +ぬるぬるした +磨き上げられた +豪華な +粗末な +古ぼけた +膿のついた +弱く輝く +蒸気を上げる +光る diff -durN Hengband/src/artifact.c Hengband-flavor/src/artifact.c --- Hengband/src/artifact.c Tue Sep 15 22:21:06 2009 +++ Hengband-flavor/src/artifact.c Sat Sep 15 17:33:27 2012 @@ -1899,6 +1899,10 @@ else power_level = 3; } +#ifdef EXTEND_RANDOM_FLAVOR + o_ptr->art_desc = 0; +#endif + if (a_scroll) { char dummy_name[80] = ""; @@ -1936,6 +1940,15 @@ #else sprintf(new_name, "'%s'", dummy_name); #endif +#ifdef EXTEND_RANDOM_FLAVOR + { + char buf[256]; + sprintf(buf, "レベル%dの%s%s%sが巻物によって強化した%sだ。", + p_ptr->lev, rp_ptr->title, cp_ptr->title, player_name, + (k_name + k_info[o_ptr->k_idx].name)); + o_ptr->art_desc = quark_add(buf); + } +#endif chg_virtue(V_INDIVIDUALISM, 2); chg_virtue(V_ENCHANT, 5); @@ -1958,6 +1971,14 @@ /* Save the inscription */ o_ptr->art_name = quark_add(new_name); +#ifdef EXTEND_RANDOM_FLAVOR + if (o_ptr->art_desc == 0) + { + char buf[1400]; + get_random_object_recall(buf, o_ptr); + o_ptr->art_desc = quark_add(buf); + } +#endif /* Window stuff */ p_ptr->window |= (PW_INVEN | PW_EQUIP); diff -durN Hengband/src/defines.h Hengband-flavor/src/defines.h --- Hengband/src/defines.h Tue Aug 7 13:29:58 2012 +++ Hengband-flavor/src/defines.h Sat Sep 15 17:33:27 2012 @@ -82,6 +82,9 @@ #define ANGBAND_2_8_1 #define ZANGBAND +/* ☆にランダムなフレーバーテキストを付ける */ +#define EXTEND_RANDOM_FLAVOR + /* * Number of grids in each block (vertically) * Probably hard-coded to 11, see "generate.c" @@ -5347,6 +5350,9 @@ #define SAVE_ITEM_FEELING 0x02000000 #define SAVE_ITEM_INSCRIPTION 0x04000000 #define SAVE_ITEM_ART_NAME 0x08000000 +#ifdef EXTEND_RANDOM_FLAVOR +#define SAVE_ITEM_ART_DESC 0x10000000 +#endif /* diff -durN Hengband/src/externs.h Hengband-flavor/src/externs.h --- Hengband/src/externs.h Tue Sep 15 22:21:06 2009 +++ Hengband-flavor/src/externs.h Sat Sep 15 17:33:27 2012 @@ -914,6 +914,9 @@ /* melee1.c */ /* melee2.c */ +#ifdef EXTEND_RANDOM_FLAVOR +extern int my_replace(char *s, char *key, char *rep); +#endif extern bool make_attack_normal(int m_idx); extern void process_monsters(void); extern int get_mproc_idx(int m_idx, int mproc_type); @@ -990,6 +993,9 @@ extern void monster_drop_carried_objects(monster_type *m_ptr); /* object1.c */ +#ifdef EXTEND_RANDOM_FLAVOR +extern void get_random_object_recall(char *str, object_type *o_ptr); +#endif extern s16b m_bonus(int max, int level); extern void reset_visuals(void); diff -durN Hengband/src/files.c Hengband-flavor/src/files.c --- Hengband/src/files.c Fri Feb 26 20:10:00 2010 +++ Hengband-flavor/src/files.c Sat Sep 15 17:33:27 2012 @@ -4892,6 +4892,47 @@ } } +#ifdef EXTEND_RANDOM_FLAVOR +static void dump_aux_e_i_art_desc(FILE *fff, object_type *o_ptr) +{ + int indent = 3, wrap = 65, cnt = 0, i; + char str[1400]; + + if (!o_ptr->art_name || !o_ptr->art_desc) return; + strcpy(str, quark_str(o_ptr->art_desc)); + + cnt = 0; + while (1) + { + if (!str[cnt]) return; + for (i = 0; i < indent; i++) + { + fputc(' ', fff); + } + + i = indent; + while (1) + { + if (iskanji(str[cnt])) + { + fputc(str[cnt++], fff); + fputc(str[cnt++], fff); + i += 2; + } + else + { + fputc(str[cnt++], fff); + i++; + } + if (!str[cnt] || + (i + (iskanji(str[cnt]) ? 1 : 0) >= wrap)) { + fputc('\n', fff); + break; + } + } + } +} +#endif /* * @@ -4986,6 +5027,12 @@ fprintf(fff, "%c) %s\n", index_to_label(i), o_name); +#ifdef EXTEND_RANDOM_FLAVOR + { + object_type *o_ptr = &inventory[i]; + dump_aux_e_i_art_desc(fff, o_ptr); + } +#endif } fprintf(fff, "\n\n"); } @@ -5005,6 +5052,12 @@ /* Dump the inventory slots */ object_desc(o_name, &inventory[i], 0); fprintf(fff, "%c) %s\n", index_to_label(i), o_name); +#ifdef EXTEND_RANDOM_FLAVOR + { + object_type *o_ptr = &inventory[i]; + dump_aux_e_i_art_desc(fff, o_ptr); + } +#endif } /* Add an empty line */ @@ -5049,6 +5102,12 @@ #endif object_desc(o_name, &st_ptr->stock[i], 0); fprintf(fff, "%c) %s\n", I2A(i%12), o_name); +#ifdef EXTEND_RANDOM_FLAVOR + { + object_type *o_ptr = &st_ptr->stock[i]; + dump_aux_e_i_art_desc(fff, o_ptr); + } +#endif } /* Add an empty line */ @@ -5083,7 +5142,12 @@ object_desc(o_name, &st_ptr->stock[i], 0); fprintf(fff, "%c) %s\n", I2A(i%12), o_name); #endif - +#ifdef EXTEND_RANDOM_FLAVOR + { + object_type *o_ptr = &st_ptr->stock[i]; + dump_aux_e_i_art_desc(fff, o_ptr); + } +#endif } /* Add an empty line */ diff -durN Hengband/src/load.c Hengband-flavor/src/load.c --- Hengband/src/load.c Thu Sep 3 17:05:42 2009 +++ Hengband-flavor/src/load.c Sat Sep 15 17:33:27 2012 @@ -660,6 +660,20 @@ o_ptr->art_name = quark_add(buf); } else o_ptr->art_name = 0; +#ifdef EXTEND_RANDOM_FLAVOR + if (flags & SAVE_ITEM_ART_DESC) + { + if (h_older_than(1,7,0,6)) + { + o_ptr->art_desc = 0; + } + else + { + rd_string(buf, sizeof(buf)); + o_ptr->art_desc = quark_add(buf); + } + } +#endif } diff -durN Hengband/src/melee2.c Hengband-flavor/src/melee2.c --- Hengband/src/melee2.c Sat Feb 27 11:27:22 2010 +++ Hengband-flavor/src/melee2.c Sat Sep 15 17:33:27 2012 @@ -21,6 +21,25 @@ #define GRINDNOISE 20 #define CYBERNOISE 20 +#ifdef EXTEND_RANDOM_FLAVOR +int my_replace(char *s, char *key, char *rep) +{ + char *p, buf[1024]; + + p = strstr(s, key); + if (p == NULL) + return 0; + while (p != NULL) { + *p = 0; + strcpy(buf, p + strlen(key)); + strcat(s, rep); + strcat(s, buf); + p = strstr(p + strlen(rep), key); + } + return 1; +} +#endif + /* * Calculate the direction to the next enemy */ diff -durN Hengband/src/object1.c Hengband-flavor/src/object1.c --- Hengband/src/object1.c Tue Jan 5 16:51:40 2010 +++ Hengband-flavor/src/object1.c Sat Sep 15 17:33:27 2012 @@ -2353,6 +2353,89 @@ } +#ifdef EXTEND_RANDOM_FLAVOR +#define BSIZ 256 +void get_random_object_recall(char *str, object_type *o_ptr) +{ + char buf[1024] = ""; + char *filename = "zrap.txt"; + int itemtype = 0; + char n1[BSIZ], n2[BSIZ], l1[BSIZ], l2[BSIZ], + m1[BSIZ], m2[BSIZ], md1[BSIZ], md2[BSIZ], + h1[BSIZ], h2[BSIZ], ra[BSIZ], + is[BSIZ], il[BSIZ], a[BSIZ], aa[BSIZ]; + (void)get_rnd_line(filename, 1, n1); + do { (void)get_rnd_line(filename, 1, n2); } while(streq(n1, n2)); + (void)get_rnd_line(filename, 3, l1); + do { (void)get_rnd_line(filename, 3, l2); } while(streq(l1, l2)); + (void)get_rnd_line(filename, 6, m1); + do { (void)get_rnd_line(filename, 6, m2); } while(streq(m1, m2)); + (void)get_rnd_line(filename, 5, md1); + do { (void)get_rnd_line(filename, 5, md2); } while(streq(md1, md2)); + (void)get_rnd_line(filename, 2, h1); + do { (void)get_rnd_line(filename, 2, h2); } while(streq(h1, h2)); + (void)get_rnd_line(filename, 4, ra); + (void)get_rnd_line(filename, 7, il); + + strcpy(is, k_name + k_info[o_ptr->k_idx].name); + + { + cptr temp = quark_str(o_ptr->art_name); + if ((strncmp(temp, "『", 2) != 0) && + (strncmp(temp, "《", 2) != 0)) + { + strcpy(a, temp); + strcat(a, is); + strcpy(aa, temp); + strcat(aa, is); + } + else + { + strcpy(a, temp); + strcpy(aa, is); + strcat(aa, temp); + } + } + + itemtype = 0; + if (o_ptr->tval >= TV_ARMOR_BEGIN && o_ptr->tval <= TV_ARMOR_END) + { + if (!randint0(3)) itemtype = 2; + } + else if (o_ptr->tval >= TV_WEAPON_BEGIN && o_ptr->tval <= TV_WEAPON_END) + { + if (o_ptr->tval == TV_SWORD && !randint0(3)) itemtype = 3; + else if (o_ptr->tval == TV_HAFTED && !randint0(3)) itemtype = 4; + else if (o_ptr->tval == TV_BOW && randint0(2)) itemtype = 6; + else if (randint0(3)) itemtype = 1; + else itemtype = 0; + } + else if (o_ptr->tval == TV_AMULET || o_ptr->tval == TV_LITE || o_ptr->tval == TV_RING) + { + if (randint0(3)) itemtype = 5; + } + (void)get_rnd_line("zrad.txt", itemtype, buf); + + /*int my_replace(char *s, char *key, char *rep)*/ + my_replace(buf, "[n1]", n1); + my_replace(buf, "[n2]", n2); + my_replace(buf, "[l1]", l1); + my_replace(buf, "[l2]", l2); + my_replace(buf, "[m1]", m1); + my_replace(buf, "[m2]", m2); + my_replace(buf, "[md1]", md1); + my_replace(buf, "[md2]", md2); + my_replace(buf, "[h1]", h1); + my_replace(buf, "[h2]", h2); + my_replace(buf, "[ra]", ra); + my_replace(buf, "[is]", is); + my_replace(buf, "[il]", il); + my_replace(buf, "[a]", a); + my_replace(buf, "[aa]", aa); + strcpy(str, buf); +} +#undef BSIZ +#endif /* * Describe a "fully identified" item @@ -2375,9 +2458,28 @@ /* Extract the description */ { +#ifdef EXTEND_RANDOM_FLAVOR + cptr text_ptr; + char buf[1024]; + + if (o_ptr->name1) text_ptr = a_text + a_info[o_ptr->name1].text; + else if (o_ptr->art_name && o_ptr->art_desc) + { + text_ptr = quark_str(o_ptr->art_desc); + } + else if (o_ptr->art_name) + { + get_random_object_recall(buf, o_ptr); + text_ptr = buf; + } + else text_ptr = k_text + k_info[lookup_kind(o_ptr->tval, o_ptr->sval)].text; + + roff_to_buf(text_ptr, 77 - 15, temp, sizeof(temp)); +#else roff_to_buf(o_ptr->name1 ? (a_text + a_info[o_ptr->name1].text) : (k_text + k_info[o_ptr->k_idx].text), 77 - 15, temp, sizeof(temp)); +#endif for (j = 0; temp[j]; j += 1 + strlen(&temp[j])) { info[i] = &temp[j]; i++;} } diff -durN Hengband/src/save.c Hengband-flavor/src/save.c --- Hengband/src/save.c Thu Sep 3 17:05:42 2009 +++ Hengband-flavor/src/save.c Sat Sep 15 17:33:27 2012 @@ -122,6 +122,9 @@ if (o_ptr->feeling) flags |= SAVE_ITEM_FEELING; if (o_ptr->inscription) flags |= SAVE_ITEM_INSCRIPTION; if (o_ptr->art_name) flags |= SAVE_ITEM_ART_NAME; +#ifdef EXTEND_RANDOM_FLAVOR + if (o_ptr->art_desc) flags |= SAVE_ITEM_ART_DESC; +#endif /*** Item save flags ***/ wr_u32b(flags); @@ -177,6 +180,9 @@ if (flags & SAVE_ITEM_INSCRIPTION) wr_string(quark_str(o_ptr->inscription)); if (flags & SAVE_ITEM_ART_NAME) wr_string(quark_str(o_ptr->art_name)); +#ifdef EXTEND_RANDOM_FLAVOR + if (flags & SAVE_ITEM_ART_DESC) wr_string(quark_str(o_ptr->art_desc)); +#endif } diff -durN Hengband/src/types.h Hengband-flavor/src/types.h --- Hengband/src/types.h Thu Sep 3 17:05:42 2009 +++ Hengband-flavor/src/types.h Sat Sep 15 17:33:27 2012 @@ -548,6 +548,9 @@ u16b inscription; /* Inscription index */ u16b art_name; /* Artifact name (random artifacts) */ +#ifdef EXTEND_RANDOM_FLAVOR + u16b art_desc; /* Artifact description (random artifacts) */ +#endif byte feeling; /* Game generated inscription number (eg, pseudo-id) */