diff -u -rN hengband/lib/edit/t0000001.txt hengband-s/lib/edit/t0000001.txt --- hengband/lib/edit/t0000001.txt Sun Nov 30 07:19:37 2003 +++ hengband-s/lib/edit/t0000001.txt Fri Jun 11 02:26:03 2004 @@ -459,8 +459,8 @@ B:0:A:3:クエスト:0:0:q:6:0 B:$0:A:4:Teleport to other town:500:500:m:42:0 B:0:A:4:他の町へ移動:500:500:m:42:0 -B:$0:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 -B:0:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 +B:$0:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 +B:0:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 B:$1:N:Mayor:Uldrik:Human B:1:N:村長:ウルドリック:人間 diff -u -rN hengband/lib/edit/t0000002.txt hengband-s/lib/edit/t0000002.txt --- hengband/lib/edit/t0000002.txt Sun Nov 30 06:06:29 2003 +++ hengband-s/lib/edit/t0000002.txt Fri Jun 11 02:27:57 2004 @@ -305,8 +305,8 @@ B:4:A:2:噂を聞く:10:10:u:19:0 B:$4:A:3:Teleport to other town:500:500:m:42:0 B:4:A:3:他の町へ移動:500:500:m:42:0 -B:$4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 -B:4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 +B:$4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 +B:4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 B:$5:N:Beastmaster:Lorien:Elf B:5:N:モンスター仙人:ロリエン:エルフ diff -u -rN hengband/lib/edit/t0000003.txt hengband-s/lib/edit/t0000003.txt --- hengband/lib/edit/t0000003.txt Sun Nov 30 06:06:29 2003 +++ hengband-s/lib/edit/t0000003.txt Fri Jun 11 02:28:42 2004 @@ -264,8 +264,8 @@ B:4:A:2:噂を聞く:10:10:u:19:0 B:$4:A:3:Teleport to other town:500:500:m:42:0 B:4:A:3:他の町へ移動:500:500:m:42:0 -B:$4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 -B:4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 +B:$4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 +B:4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 B:$5:N:Beastmaster:Draxle:Draconian B:5:N:モンスター仙人:ドラクスル:ドラコニアン diff -u -rN hengband/lib/edit/t0000004.txt hengband-s/lib/edit/t0000004.txt --- hengband/lib/edit/t0000004.txt Sun Nov 30 06:06:29 2003 +++ hengband-s/lib/edit/t0000004.txt Fri Jun 11 02:29:34 2004 @@ -171,8 +171,8 @@ B:4:A:2:噂を聞く:10:10:u:19:0 B:$4:A:3:Teleport to other town:500:500:m:42:0 B:4:A:3:他の町へ移動:500:500:m:42:0 -B:$4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 -B:4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 +B:$4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 +B:4:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 B:$5:N:Beastmaster:Aradreth:Elf B:5:N:モンスター仙人:アラドレス:エルフ @@ -250,8 +250,8 @@ B:13:A:0:ダンジョンへ帰還:0:150:r:33:0 B:$13:A:1:Teleport to dungeon-level:100000:1000000:t:34:0 B:13:A:1:階を指定してテレポート:100000:1000000:t:34:0 -B:$13:R:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 -B:13:R:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:$13:R:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:13:R:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 B:$13:M:0:0:0:0:0:2:0:0:0:0 B:13:M:0:0:0:0:0:2:0:0:0:0 diff -u -rN hengband/lib/edit/t0000005.txt hengband-s/lib/edit/t0000005.txt --- hengband/lib/edit/t0000005.txt Sun Nov 30 06:06:29 2003 +++ hengband-s/lib/edit/t0000005.txt Fri Jun 11 02:30:45 2004 @@ -128,8 +128,8 @@ B:4:A:1:食事をする:2:2:f:18:1 B:$4:A:2:Listen for rumors:10:10:u:19:0 B:4:A:2:噂を聞く:10:10:u:19:0 -B:$4:R:2:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 -B:4:R:2:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 +B:$4:R:2:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 +B:4:R:2:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 B:$4:A:3:Identify item:100:100:i:44:0 B:4:A:3:アイテム鑑定:100:100:i:44:0 @@ -152,8 +152,8 @@ B:14:A:0:クエスト:0:0:q:6:1 B:$14:A:1:Cure mutation:1000:5000:m:35:0 B:14:A:1:突然変異を治療する:1000:5000:m:35:0 -B:$14:R:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0 -B:14:R:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0 +B:$14:R:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0:0 +B:14:R:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0:0 B:$14:M:0:0:0:2:0:0:0:0:0:0 B:14:M:0:0:0:2:0:0:0:0:0:0 diff -u -rN hengband/lib/edit/t_lite.txt hengband-s/lib/edit/t_lite.txt --- hengband/lib/edit/t_lite.txt Sun Nov 30 07:19:37 2003 +++ hengband-s/lib/edit/t_lite.txt Mon Jun 14 18:09:35 2004 @@ -524,8 +524,8 @@ B:0:A:1:食事をする:1:1:f:18:1 B:$0:A:2:Listen for rumors:5:5:u:19:0 B:0:A:2:噂を聞く:5:5:u:19:0 -B:$0:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 -B:0:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0 +B:$0:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 +B:0:R:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:0:0:0:0:0:1:1:0:1:0:1:1:1:0:1 B:$1:N:Mayor:Uldrik:Human B:1:N:村長:ウルドリック:人間 @@ -655,8 +655,8 @@ B:13:A:0:クエスト:0:0:q:6:1 B:$13:A:1:Cure mutation:1000:5000:m:35:0 B:13:A:1:突然変異を治療する:1000:5000:m:35:0 -B:$13:R:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0 -B:13:R:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0 +B:$13:R:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0:0 +B:13:R:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:0:0:0:0:0:0:0 B:$13:M:0:0:0:2:0:0:0:0:0:0 B:13:M:0:0:0:2:0:0:0:0:0:0 diff -u -rN hengband/lib/help/editor.txt hengband-s/lib/help/editor.txt --- hengband/lib/help/editor.txt Thu Dec 4 23:55:53 2003 +++ hengband-s/lib/help/editor.txt Fri Jun 11 04:58:45 2004 @@ -313,7 +313,7 @@ Half-Giant, Half-Titan, Cyclops, Yeek, Klackon, Kobold, Nibelung, Dark-Elf, Draconian, Mindflayer, Imp, Golem, Skeleton, Zombie, Vampire, Spectre, Sprite, Beastman, Ent, - Archon, Balrog, Dunadan, Shadow-Fairy, Kutar, Android, + Archon, Balrog, Dunadan, Shadow-Fairy, Kutar, Android, Shoggoth $CLASS Returns name of player class. One of below: diff -u -rN hengband/lib/help/jeditor.txt hengband-s/lib/help/jeditor.txt --- hengband/lib/help/jeditor.txt Fri Dec 5 15:18:03 2003 +++ hengband-s/lib/help/jeditor.txt Fri Jun 11 04:58:29 2004 @@ -544,7 +544,7 @@ Cyclops, Yeek, Klackon, Kobold, Nibelung, Dark-Elf, Draconian, Mindflayer, Imp, Golem, Skeleton, Zombie, Vampire, Spectre, Sprite, Beastman, Ent, Archon, Balrog, Dunadan, Shadow-Fairy, Kuta, - Android + Android, Shoggoth のどれか $CLASS diff -u -rN hengband/lib/help/jraceclas.txt hengband-s/lib/help/jraceclas.txt --- hengband/lib/help/jraceclas.txt Sun Nov 16 23:42:05 2003 +++ hengband-s/lib/help/jraceclas.txt Fri Jun 11 05:46:48 2004 @@ -411,8 +411,16 @@ 身体のいたるところに電子回路が組み込まれているため、電撃によって通 常よりも大きなダメージを受けてしまいます。彼らは食物からほとんど動 力を得られませんが、油を補給する事で動力源を得る事ができます。 - +***** +--- ショゴス --- + + ショゴスは絶え間なく「テケリ・リ!」と叫ぶ、ゼリー状の悪夢のような + 存在です。愚かですが、外なる神と関係があるので賢いです。タフであり、 + 麻痺することも朦朧とすることもありません。光なしで物を見ることがで + き、見えない物を見ることができます。叫び声は敵を起こしてしまいます。 + ショゴスは通常は経験値を得ることができませんが、食事により経験値を + 得ることができます。ショゴスは何でも食べることができます。 ***** === 職業 === @@ -1061,6 +1069,7 @@ 影フェアリー -2 +2 +2 +1 -1 +0 7 +20% クター +0 -1 -1 +1 +2 +3 11 +40% アンドロイド +4 -5 -5 +0 +4 -2 13 +100% +ショゴス +2 -4 +4 +0 +4 -6 13 +100% --- Table 2 - Class Statistic Bonus Table --- @@ -1159,6 +1168,7 @@ 影フェアリー +7 +8 +0 +6 +12 +15 -10 -5 40 feet クター -2 +5 +5 +5 -2 +6 +0 -5 None アンドロイド +0 -5 +0 -2 +3 +14 +20 +10 None +ショゴス -5 +0 +8 -inf +0 +7 +20 +0 None --- Table 5 - Class Skill Bonus Table --- diff -u -rN hengband/lib/help/raceclas.txt hengband-s/lib/help/raceclas.txt --- hengband/lib/help/raceclas.txt Sun Nov 16 23:42:05 2003 +++ hengband-s/lib/help/raceclas.txt Fri Jun 11 04:57:46 2004 @@ -458,6 +458,15 @@ gain very little nutrition from the food of mortals, but they can use flasks of oil as their energy source. +***** +--- Shoggoth --- + + A Shoggoth is a jelly-like nightmare that constantly cries + 'Tekeli-li!'. Although it is stupid, its relationship to the + outer gods makes it wise. It is tough and it can't be paralyzed + or stunned. It can see without light and see the invisible. Its + cry wakes its enemies up. It doesn't acquire experience normally, + but it can acquire experience by eating. It can eat anything. ***** === The Classes === @@ -1143,6 +1152,7 @@ Shadow-Fairy -2 +2 +2 +1 -1 +0 7 +20% Kutar +0 -1 -1 +1 +2 +3 11 +40% Android +4 -5 -5 +0 +4 -2 13 +100% +Shoggoth +2 -4 +4 +0 +4 -6 13 +100% --- Table 2 - Class Statistic Bonus Table --- @@ -1244,6 +1254,7 @@ Shadow-Fairy +7 +8 +0 +6 +12 +15 -10 -5 40 feet Kutar -2 +5 +5 +5 -2 +6 +0 -5 None Android +0 -5 +0 -2 +3 +14 +20 +10 None +Shoggoth -5 +0 +8 -inf +0 +7 +20 +0 None --- Table 5 - Class Skill Bonus Table --- diff -u -rN hengband/src/avatar.c hengband-s/src/avatar.c --- hengband/src/avatar.c Sun Jan 4 14:46:48 2004 +++ hengband-s/src/avatar.c Fri Jun 11 03:33:31 2004 @@ -332,7 +332,7 @@ case RACE_HIGH_ELF: case RACE_KUTA: p_ptr->vir_types[i++] = V_VITALITY; break; - case RACE_HALF_GIANT: case RACE_GOLEM: case RACE_ANGEL: case RACE_DEMON: + case RACE_HALF_GIANT: case RACE_GOLEM: case RACE_ANGEL: case RACE_DEMON: case RACE_SHOGGOTH: p_ptr->vir_types[i++] = V_JUSTICE; break; case RACE_HALF_TITAN: diff -u -rN hengband/src/birth.c hengband-s/src/birth.c --- hengband/src/birth.c Thu Mar 11 20:57:56 2004 +++ hengband-s/src/birth.c Fri Jun 11 05:46:24 2004 @@ -1608,6 +1608,16 @@ {", and you firmly believe that you are a real one.", 95, 158, 0, 50}, {", and you are almost indistinguishable from a real one.", 100, 158, 0, 100}, #endif + + /* + * just a placeholder --- if you care about the background, + * edit it manually + */ +#ifdef JP + {"あなたは自存する源『ウボ=サスラ』から生まれました。", 100, 170, 0, 0}, +#else + {"You were born of Ubbo-Sathla, the Unbegotten Source.", 100, 170, 0, 0} +#endif }; static cptr race_jouhou[MAX_RACES] = @@ -1685,7 +1695,9 @@ "クターとしている無表情の謎の生物です。彼らは外見がかわいらしいため、魅力が高いです。彼らは混乱しません。なぜなら、混乱してもクターとしているため変わりないからです。しかも、そのクターとしている外見から敵に見つかりにくいです。しかし、彼らは注意力が少ないため探索や知覚能力は悪いです。彼らはレベルが上がると横に伸びてACを上げる技を覚えますが、伸びている間は魔法防御能力は低くなってしまいます。", -"アンドロイドは機械の身体を持つ人工的な存在です。魔法をうまく使うことはできませんが、戦士としては非常に優れています。彼らは他の種族のように経験値を得て成長するということはありません。身体に身につける装備によって成長します。ただし、指輪、アミュレット、光源は成長に影響しません。彼らは毒の耐性を持ち、麻痺知らずで、生命力を吸われることがありません。また、身体が頑丈なのでACにボーナスを得ます。しかし身体のいたるところに電子回路が組み込まれているため、電撃によって通常よりも大きなダメージを受けてしまいます。彼らは食物からほとんど動力を得られませんが、油を補給する事で動力源を得る事ができます。" +"アンドロイドは機械の身体を持つ人工的な存在です。魔法をうまく使うことはできませんが、戦士としては非常に優れています。彼らは他の種族のように経験値を得て成長するということはありません。身体に身につける装備によって成長します。ただし、指輪、アミュレット、光源は成長に影響しません。彼らは毒の耐性を持ち、麻痺知らずで、生命力を吸われることがありません。また、身体が頑丈なのでACにボーナスを得ます。しかし身体のいたるところに電子回路が組み込まれているため、電撃によって通常よりも大きなダメージを受けてしまいます。彼らは食物からほとんど動力を得られませんが、油を補給する事で動力源を得る事ができます。", + +"ショゴスは絶え間なく「テケリ・リ!」と叫ぶ、ゼリー状の悪夢のような存在です。愚かですが、外なる神と関係があるので賢いです。タフであり、麻痺することも朦朧とすることもありません。光なしで物を見ることができ、見えない物を見ることができます。叫び声は敵を起こしてしまいます。ショゴスは通常は経験値を得ることができませんが、食事により経験値を得ることができます。ショゴスは何でも食べることができます。" #else @@ -1761,7 +1773,9 @@ "A Kutar is an expressionless animal-like living creature. The word 'kuta' means 'absentmindedly' or 'vacantly'. Their absentmindedness hurts their searching and perception skills, but renders them incapable of being confused. Their unearthly calmness and serenity make them among the most stealthy of any race. Kutars, although expressionless, are beautiful and so have a high charisma. Members of this race can learn to expand their body horizontally. This increases armour class, but renders them vulnerable to magical attacks.", -"An android is a artificial creation with a body of machinery. They are poor at spell casting, but they make excellent warriors. They don't acquire experience like other races, but rather gain in power as they attach new equipment to their frame. Rings, amulets, and lights do not influence growth. Androids are resistant to poison, can move freely, and are immune to life-draining attacks. Moreover, because of their hard metallic bodies, they get a bonus to AC. Androids have electronic circuits throughout their body and must beware of electric shocks. They gain very little nutrition from the food of mortals, but they can use flasks of oil as their energy source." +"An android is a artificial creation with a body of machinery. They are poor at spell casting, but they make excellent warriors. They don't acquire experience like other races, but rather gain in power as they attach new equipment to their frame. Rings, amulets, and lights do not influence growth. Androids are resistant to poison, can move freely, and are immune to life-draining attacks. Moreover, because of their hard metallic bodies, they get a bonus to AC. Androids have electronic circuits throughout their body and must beware of electric shocks. They gain very little nutrition from the food of mortals, but they can use flasks of oil as their energy source.", + +"A Shoggoth is a jelly-like nightmare that constantly cries 'Tekeli-li!'. Although it is stupid, its relationship to the outer gods makes it wise. It is tough and it can't be paralyzed or stunned. It can see without light and see the invisible. Its cry wakes its enemies up. It doesn't acquire experience normally, but it can acquire experience by eating. It can eat anything." #endif }; @@ -2974,6 +2988,11 @@ chart = 155; break; } + case RACE_SHOGGOTH: + { + chart = 170; + break; + } default: { chart = 0; @@ -3833,6 +3852,14 @@ break; + case RACE_SHOGGOTH: + /* Slime Molds */ + object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_SLIME_MOLD)); + q_ptr->number = (byte)rand_range(15, 23); + add_outfit(q_ptr); + + break; + default: /* Food rations */ object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION)); @@ -3853,7 +3880,8 @@ add_outfit(q_ptr); } - else if (p_ptr->pclass != CLASS_NINJA) + else if ((p_ptr->pclass != CLASS_NINJA) + && (p_ptr->prace != RACE_SHOGGOTH)) { /* Hack -- Give the player some torches */ object_prep(q_ptr, lookup_kind(TV_LITE, SV_LITE_TORCH)); diff -u -rN hengband/src/cmd1.c hengband-s/src/cmd1.c --- hengband/src/cmd1.c Mon Jan 19 13:27:35 2004 +++ hengband-s/src/cmd1.c Fri Jun 11 03:31:46 2004 @@ -2939,6 +2939,7 @@ case RACE_SPECTRE: case RACE_DEMON: case RACE_DRACONIAN: + case RACE_SHOGGOTH: mult = 30;break; default: mult = 10;break; diff -u -rN hengband/src/cmd6.c hengband-s/src/cmd6.c --- hengband/src/cmd6.c Wed Feb 11 02:01:59 2004 +++ hengband-s/src/cmd6.c Fri Jun 11 19:45:14 2004 @@ -605,12 +605,134 @@ /* Waybread is always fully satisfying. */ set_food(MAX(p_ptr->food, PY_FOOD_MAX - 1)); } + else if (prace_is_(RACE_SHOGGOTH)) + { + /* A shoggoth happily eats anything. */ + set_food(MAX(p_ptr->food, PY_FOOD_MAX - 1)); + } else { /* Food can feed the player */ (void)set_food(p_ptr->food + o_ptr->pval); } + if ((prace_is_(RACE_SHOGGOTH)) && (!(p_ptr->is_dead))) + { + object_type forge; + object_type *q_ptr = &forge; + u32b value, exp; + int level = MAX(k_info[o_ptr->k_idx].level - 8, 1); + + /* Wipe the object */ + object_wipe(q_ptr); + + object_copy(q_ptr, o_ptr); + /* + * we do consider discount here --- this should prevent the + * abuse of the magic 'Trump Branding' and such + */ + q_ptr->curse_flags = 0L; + + if (object_is_fixed_artifact(o_ptr)) + { + level = (level + MAX(a_info[o_ptr->name1].level - 8, 5)) / 2; + level += MIN(20, a_info[o_ptr->name1].rarity/(a_info[o_ptr->name1].gen_flags & TRG_INSTA_ART ? 10 : 3)); + } + else if (object_is_ego(o_ptr)) + { + level += MAX(3, (e_info[o_ptr->name2].rating - 5)/2); + } + else if (o_ptr->art_name) + { + s32b total_flags = flag_cost(o_ptr, o_ptr->pval); + int fake_level; + + if (!object_is_weapon_ammo(o_ptr)) + { + /* For armors */ + if (total_flags < 15000) fake_level = 10; + else if (total_flags < 35000) fake_level = 25; + else fake_level = 40; + } + else + { + /* For weapons */ + if (total_flags < 20000) fake_level = 10; + else if (total_flags < 45000) fake_level = 25; + else fake_level = 40; + } + + level = MAX(level, (level + MAX(fake_level - 8, 5)) / 2 + + 3); + } + + value = object_value_real(q_ptr); + /* Apply discount (if any) */ + if (q_ptr->discount) value -= (value * q_ptr->discount / 100L); + + if ((o_ptr->tval == TV_CORPSE) && (o_ptr->pval > 0)) + { + monster_race *r_ptr = &r_info[q_ptr->pval]; + value = r_ptr->mexp * r_ptr->level; + } + + if (value > 0) + { + if ((o_ptr->tval == TV_SOFT_ARMOR) && (o_ptr->sval == SV_ABUNAI_MIZUGI) && (p_ptr->pseikaku != SEIKAKU_SEXY)) value /= 32; + if (value > 5000000L) value = 5000000L; + if ((o_ptr->tval == TV_DRAG_ARMOR) || (o_ptr->tval == TV_CARD)) + level /= 2; + + if (object_is_artifact(o_ptr) || object_is_ego(o_ptr) || + (o_ptr->tval == TV_DRAG_ARMOR) || + ((o_ptr->tval == TV_HELM) && (o_ptr->sval == SV_DRAGON_HELM)) || + ((o_ptr->tval == TV_SHIELD) && (o_ptr->sval == SV_DRAGON_SHIELD)) || + ((o_ptr->tval == TV_GLOVES) && (o_ptr->sval == SV_SET_OF_DRAGON_GLOVES)) || + ((o_ptr->tval == TV_BOOTS) && (o_ptr->sval == SV_PAIR_OF_DRAGON_GREAVE)) || + ((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_DIAMOND_EDGE))) + { + if (level > 65) level = 35 + (level - 65) / 5; + else if (level > 35) level = 25 + (level - 35) / 3; + else if (level > 15) level = 15 + (level - 15) / 2; + exp = MIN(100000L, value) * level * level / 2; + if (value > 100000L) + exp += (value - 100000L) * level * level / 8; + } + else + { + exp = MIN(100000L, value) * level; + if (value > 100000L) + exp += (value - 100000L) * level / 4; + } + exp /= 32; + if ((o_ptr->tval == TV_WHISTLE) + || (o_ptr->tval == TV_CAPTURE) + || ((o_ptr->tval >= TV_WEARABLE_BEGIN) + && (o_ptr->tval <= TV_WEARABLE_END))) + exp /= 2; + else if (o_ptr->tval != TV_CORPSE) + exp /= 8; + p_ptr->exp += exp; + + /* Slowly recover from experience drainage */ + if (p_ptr->exp < p_ptr->max_exp) + { + /* Gain max experience (20%) (was 10%) */ + p_ptr->max_exp += exp / 5; + } + + /* Check Experience */ + check_experience(); + } + } + + /* if you eat a fixed artifact, you can't find it again */ + if ((prace_is_(RACE_SHOGGOTH)) && (object_is_fixed_artifact(o_ptr))) + { + artifact_type *a_ptr = &a_info[o_ptr->name1]; + a_ptr->cur_num = 1; + } + /* Destroy a food in the pack */ if (item >= 0) { @@ -636,6 +758,8 @@ { if (o_ptr->tval==TV_FOOD) return TRUE; + if (prace_is_(RACE_SHOGGOTH)) return TRUE; + #if 0 if (prace_is_(RACE_SKELETON)) { @@ -1306,6 +1430,7 @@ case SV_POTION_EXPERIENCE: if (p_ptr->prace == RACE_ANDROID) break; + if (p_ptr->prace == RACE_SHOGGOTH) break; chg_virtue(V_ENLIGHTEN, 1); if (p_ptr->exp < PY_MAX_EXP) { diff -u -rN hengband/src/defines.h hengband-s/src/defines.h --- hengband/src/defines.h Wed Mar 10 21:06:24 2004 +++ hengband-s/src/defines.h Fri Jun 11 01:21:39 2004 @@ -863,11 +863,12 @@ #define RACE_S_FAIRY 34 #define RACE_KUTA 35 #define RACE_ANDROID 36 +#define RACE_SHOGGOTH 37 /* * Maximum number of player "race" types (see "table.c", etc) */ -#define MAX_RACES 37 +#define MAX_RACES 38 /* diff -u -rN hengband/src/effects.c hengband-s/src/effects.c --- hengband/src/effects.c Thu Mar 11 20:57:57 2004 +++ hengband-s/src/effects.c Fri Jun 11 04:13:10 2004 @@ -3400,7 +3400,7 @@ if (p_ptr->is_dead) return FALSE; - if (prace_is_(RACE_GOLEM) || ((p_ptr->pclass == CLASS_BERSERKER) && (p_ptr->lev > 34))) v = 0; + if (prace_is_(RACE_GOLEM) || prace_is_(RACE_SHOGGOTH) || ((p_ptr->pclass == CLASS_BERSERKER) && (p_ptr->lev > 34))) v = 0; /* Knocked out */ if (p_ptr->stun > 100) @@ -3863,6 +3863,10 @@ /* Hack -- Force good values */ v = (v > 20000) ? 20000 : (v < 0) ? 0 : v; + /* a Shoggoth can't be gorged */ + if ((prace_is_(RACE_SHOGGOTH)) && (v >= PY_FOOD_MAX)) + v = PY_FOOD_MAX - 1; + /* Fainting / Starving */ if (p_ptr->food < PY_FOOD_FAINT) { @@ -5382,6 +5386,7 @@ if (p_ptr->is_dead) return; if (p_ptr->prace == RACE_ANDROID) return; + if (p_ptr->prace == RACE_SHOGGOTH) return; /* Gain some experience */ s64b_add(&(p_ptr->exp), &(p_ptr->exp_frac), amount, amount_frac); diff -u -rN hengband/src/files.c hengband-s/src/files.c --- hengband/src/files.c Thu Mar 11 20:57:57 2004 +++ hengband-s/src/files.c Fri Jun 11 02:42:43 2004 @@ -2536,6 +2536,11 @@ add_flag(flgs, TR_SLOW_DIGEST); add_flag(flgs, TR_HOLD_LIFE); break; + case RACE_SHOGGOTH: + add_flag(flgs, TR_SEE_INVIS); + add_flag(flgs, TR_FREE_ACT); + add_flag(flgs, TR_AGGRAVATE); + break; default: ; /* Do nothing */ } diff -u -rN hengband/src/monster2.c hengband-s/src/monster2.c --- hengband/src/monster2.c Wed Mar 10 21:06:24 2004 +++ hengband-s/src/monster2.c Fri Jun 11 03:29:49 2004 @@ -2034,7 +2034,7 @@ r_ptr->r_flags2 |= RF2_ELDRITCH_HORROR; /* Demon characters are unaffected */ - if (prace_is_(RACE_IMP) || prace_is_(RACE_DEMON) || (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON)) return; + if (prace_is_(RACE_IMP) || prace_is_(RACE_DEMON) || prace_is_(RACE_SHOGGOTH) || (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON)) return; if (p_ptr->wizard) return; /* Undead characters are 50% likely to be unaffected */ diff -u -rN hengband/src/spells3.c hengband-s/src/spells3.c --- hengband/src/spells3.c Thu Mar 11 20:57:57 2004 +++ hengband-s/src/spells3.c Fri Jun 11 11:09:38 2004 @@ -5986,6 +5986,9 @@ case RACE_DEMON: summon_kin_type = 'U'; break; + case RACE_SHOGGOTH: + summon_kin_type = 'j'; + break; default: summon_kin_type = 'p'; break; diff -u -rN hengband/src/tables.c hengband-s/src/tables.c --- hengband/src/tables.c Sat Jan 3 00:18:33 2004 +++ hengband-s/src/tables.c Fri Jun 11 04:53:45 2004 @@ -3382,6 +3382,21 @@ 0, 0x0800001, }, + { +#ifdef JP + "ショゴス", +#endif + "Shoggoth", + + { 2, -4, 4, 0, 4, -6 }, + -5, 0, 8, -100, 0, 7, 20, 0, + 13, 200, + 255, 255, + 72, 12, 240, 64, + 66, 12, 220, 64, + 0, + 0x1909325, + }, }; diff -u -rN hengband/src/xtra1.c hengband-s/src/xtra1.c --- hengband/src/xtra1.c Mon Jan 19 20:10:55 2004 +++ hengband-s/src/xtra1.c Fri Jun 11 02:14:46 2004 @@ -3553,6 +3553,12 @@ p_ptr->resist_pois = TRUE; p_ptr->hold_life = TRUE; break; + case RACE_SHOGGOTH: + p_ptr->see_inv = TRUE; + p_ptr->see_nocto = TRUE; + p_ptr->free_act = TRUE; + p_ptr->cursed |= (TRC_AGGRAVATE); + break; default: /* Do nothing */ ;