Only in hengband/: .DS_Store Only in hengband/: Angband_j.rsrc Only in hengband/: Hengband(68k).make Only in hengband/: Hengband(OSX) Only in hengband/: Hengband(OSX).make Only in hengband/: Hengband(PPC).make diff -ur hengband_cvs/lib/edit/m_info.txt hengband/lib/edit/m_info.txt --- hengband_cvs/lib/edit/m_info.txt Fri Nov 15 23:24:12 2002 +++ hengband/lib/edit/m_info.txt Wed Jun 16 09:06:04 2004 @@ -3703,3 +3703,197 @@ # Crusade R:9:0 + + +### Medium ### +N:27 +I:LIFE:WIS:0x06:1:1:400 +# Life +R:0:1 +T:1:1:30:4 #0 +T:2:2:35:4 +T:3:3:35:4 +T:4:4:35:4 +T:5:5:35:4 +T:8:6:40:4 +T:11:10:40:3 +T:13:12:45:3 +T:15:12:45:4 #1 +T:16:15:50:4 +T:17:15:50:4 +T:18:16:50:4 +T:19:16:50:4 +T:20:18:50:4 +T:30:38:55:5 +T:35:70:75:5 +T:26:26:50:75 #2 +T:28:28:70:150 +T:32:32:60:75 +T:36:35:60:75 +T:38:35:70:75 +T:40:60:80:115 +T:45:45:80:125 +T:50:110:95:250 +T:10:18:50:40 #3 +T:25:25:50:50 +T:40:45:80:115 +T:44:84:80:225 +T:46:64:80:115 +T:48:60:80:100 +T:49:100:90:200 +T:50:100:80:250 + +# Sorcery +R:1:0 + +# Neture +R:2:1 +T:1:1:35:2 #0 +T:3:3:40:2 +T:4:4:40:3 +T:7:7:55:2 +T:7:7:50:3 +T:7:7:50:3 +T:8:8:50:3 +T:9:9:45:3 +T:10:8:80:4 #1 +T:11:9:40:3 +T:12:10:40:4 +T:14:12:55:4 +T:16:12:55:4 +T:18:22:65:8 +T:31:31:75:10 +T:40:60:90:50 +T:14:14:50:25 #2 +T:16:16:70:60 +T:22:30:85:70 +T:27:33:85:40 +T:35:35:80:80 +T:40:40:90:200 +T:45:55:90:250 +T:50:80:90:250 +T:28:28:60:150 #3 +T:30:30:60:160 +T:35:50:75:125 +T:33:33:75:35 +T:38:38:75:45 +T:42:40:75:100 +T:45:85:95:250 +T:48:85:75:150 + +# Chaos +R:3:0 + +# Death +R:4:1 +T:1:1:25:4 #0 +T:2:2:25:4 +T:3:3:25:4 +T:5:5:27:4 +T:7:7:30:4 +T:11:11:75:6 +T:12:12:30:4 +T:14:14:40:5 +T:16:16:40:5 #1 +T:19:19:30:4 +T:22:22:50:10 +T:28:30:85:30 +T:33:80:90:30 +T:37:35:60:16 +T:45:50:80:70 +T:47:45:95:100 +T:15:20:80:180 #2 +T:16:16:80:30 +T:18:18:30:15 +T:35:35:75:50 +T:42:95:70:90 +T:44:40:60:125 +T:45:44:70:40 +T:48:50:80:200 +T:30:30:75:50 #3 +T:37:85:85:220 +T:38:50:95:250 +T:42:60:80:200 +T:48:60:75:150 +T:49:80:80:125 +T:50:110:95:250 +T:50:115:95:250 + +# Trump +R:5:0 + +# Arcane +R:6:0 + +# Craft +R:7:0 + +# Deamon +R:8:1 +T:2:2:20:4 #0 +T:3:2:22:4 +T:5:4:25:4 +T:7:8:30:6 +T:11:8:30:1 +T:13:10:50:6 +T:15:13:35:5 +T:16:16:45:7 +T:19:19:45:9 #1 +T:24:20:60:20 +T:26:25:50:11 +T:29:30:50:12 +T:33:33:50:12 +T:35:75:80:8 +T:42:34:70:15 +T:44:90:85:40 +T:16:16:45:9 #2 +T:19:22:60:20 +T:37:50:60:35 +T:38:35:80:200 +T:39:55:80:200 +T:42:38:80:35 +T:46:45:75:40 +T:50:108:80:250 +T:10:10:66:8 #3 +T:32:32:85:35 +T:41:48:80:200 +T:46:62:85:100 +T:48:111:85:250 +T:49:60:80:200 +T:50:105:80:200 +T:50:80:85:250 + +# Crusade +R:9:1 +T:1:1:20:4 #0 +T:3:1:30:4 +T:5:4:35:4 +T:8:8:30:4 +T:9:9:50:4 +T:13:12:50:4 +T:15:14:55:4 +T:17:12:55:4 +T:18:18:50:4 #1 +T:22:19:55:4 +T:24:22:50:4 +T:27:25:80:5 +T:29:28:65:4 +T:34:28:65:4 +T:43:43:85:5 +T:40:40:85:5 +T:8:8:33:40 #2 +T:20:20:60:50 +T:25:21:65:70 +T:28:28:60:70 +T:35:32:70:100 +T:38:80:95:100 +T:46:55:80:100 +T:48:111:85:150 +T:10:10:66:40 #3 +T:35:45:80:125 +T:36:33:75:100 +T:42:40:80:75 +T:44:50:80:75 +T:47:80:85:100 +T:48:100:90:200 +T:50:100:80:250 diff -ur hengband_cvs/lib/edit/s_info.txt hengband/lib/edit/s_info.txt --- hengband_cvs/lib/edit/s_info.txt Fri Nov 15 23:24:13 2002 +++ hengband/lib/edit/s_info.txt Wed Jun 16 09:06:04 2004 @@ -8967,3 +8967,335 @@ S:0:0:7000 # SUDE S:1:4000:8000 # NITOURYU S:2:0:0 # RIDING + +### Medium ### +N:27 +# Bow +W:0:0:0:1 # 0 +W:0:1:0:1 # +W:0:2:0:3 # SLING +W:0:3:0:1 # +W:0:4:0:1 # +W:0:5:0:1 # +W:0:6:0:1 # +W:0:7:0:1 # +W:0:8:0:1 # +W:0:9:0:1 # +W:0:10:0:1 # 10 +W:0:11:0:1 # +W:0:12:1:4 # SHORT_BOW +W:0:13:1:4 # LONG_BOW +W:0:14:0:1 # +W:0:15:0:1 # +W:0:16:0:1 # +W:0:17:0:1 # +W:0:18:0:1 # +W:0:19:0:1 # +W:0:20:0:1 # 20 +W:0:21:0:1 # +W:0:22:0:1 # +W:0:23:0:3 # LIGHT_XBOW +W:0:24:0:3 # HEAVY_XBOW +W:0:25:0:1 # +W:0:26:0:1 # +W:0:27:0:1 # +W:0:28:0:1 # +W:0:29:0:1 # +W:0:30:0:1 # 30 +W:0:31:0:1 # +W:0:32:0:1 # +W:0:33:0:1 # +W:0:34:0:1 # +W:0:35:0:1 # +W:0:36:0:1 # +W:0:37:0:1 # +W:0:38:0:1 # +W:0:39:0:1 # +W:0:40:0:1 # 40 +W:0:41:0:1 # +W:0:42:0:1 # +W:0:43:0:1 # +W:0:44:0:1 # +W:0:45:0:1 # +W:0:46:0:1 # +W:0:47:0:1 # +W:0:48:0:1 # +W:0:49:0:1 # +W:0:50:0:1 # 50 +W:0:51:0:1 # +W:0:52:0:1 # +W:0:53:0:1 # +W:0:54:0:1 # +W:0:55:0:1 # +W:0:56:0:1 # +W:0:57:0:1 # +W:0:58:0:1 # +W:0:59:0:1 # +W:0:60:0:1 # 60 +W:0:61:0:1 # +W:0:62:0:1 # +W:0:63:0:4 # NAMAKE +# Digging +W:1:0:0:1 # 0 +W:1:1:0:1 # SHOVEL +W:1:2:0:1 # GNOMISH_SHOVEL +W:1:3:0:1 # DWARVEN_SHOVEL +W:1:4:0:1 # PICK +W:1:5:0:1 # ORCISH_PICK +W:1:6:0:1 # DWARVEN_PICK +W:1:7:0:1 # MATTOCK +W:1:8:0:1 # +W:1:9:0:1 # +W:1:10:0:1 # 10 +W:1:11:0:1 # +W:1:12:0:1 # +W:1:13:0:1 # +W:1:14:0:1 # +W:1:15:0:1 # +W:1:16:0:1 # +W:1:17:0:1 # +W:1:18:0:1 # +W:1:19:0:1 # +W:1:20:0:1 # 20 +W:1:21:0:1 # +W:1:22:0:1 # +W:1:23:0:1 # +W:1:24:0:1 # +W:1:25:0:1 # +W:1:26:0:1 # +W:1:27:0:1 # +W:1:28:0:1 # +W:1:29:0:1 # +W:1:30:0:1 # 30 +W:1:31:0:1 # +W:1:32:0:1 # +W:1:33:0:1 # +W:1:34:0:1 # +W:1:35:0:1 # +W:1:36:0:1 # +W:1:37:0:1 # +W:1:38:0:1 # +W:1:39:0:1 # +W:1:40:0:1 # 40 +W:1:41:0:1 # +W:1:42:0:1 # +W:1:43:0:1 # +W:1:44:0:1 # +W:1:45:0:1 # +W:1:46:0:1 # +W:1:47:0:1 # +W:1:48:0:1 # +W:1:49:0:1 # +W:1:50:0:1 # 50 +W:1:51:0:1 # +W:1:52:0:1 # +W:1:53:0:1 # +W:1:54:0:1 # +W:1:55:0:1 # +W:1:56:0:1 # +W:1:57:0:1 # +W:1:58:0:1 # +W:1:59:0:1 # +W:1:60:0:1 # 60 +W:1:61:0:1 # +W:1:62:0:1 # +W:1:63:0:1 # +# Hafted +W:2:0:0:1 # 0 +W:2:1:0:1 # CLUB +W:2:2:0:1 # WHIP +W:2:3:0:1 # QUARTERSTAFF +W:2:4:0:1 # NUNCHAKU +W:2:5:0:1 # MACE +W:2:6:0:1 # BALL_AND_CHAIN +W:2:7:0:3 # JO_STAFF +W:2:8:0:1 # WAR_HAMMER +W:2:9:0:1 # +W:2:10:0:1 # 10 +W:2:11:0:1 # THREE_PIECE_ROD +W:2:12:0:1 # MORNING_STAR +W:2:13:0:1 # FLAIL +W:2:14:0:2 # BO_STAFF +W:2:15:0:1 # LEAD_FILLED_MACE +W:2:16:0:1 # TETSUBO +W:2:17:0:1 # +W:2:18:0:1 # TWO_HANDED_FLAIL +W:2:19:0:1 # GREAT_HAMMER +W:2:20:0:1 # MACE_OF_DISRUPTION +W:2:21:0:2 # WIZSTAFF +W:2:22:0:1 # +W:2:23:0:1 # +W:2:24:0:1 # +W:2:25:0:1 # +W:2:26:0:1 # +W:2:27:0:1 # +W:2:28:0:1 # +W:2:29:0:1 # +W:2:30:0:1 # 30 +W:2:31:0:1 # +W:2:32:0:1 # +W:2:33:0:1 # +W:2:34:0:1 # +W:2:35:0:1 # +W:2:36:0:1 # +W:2:37:0:1 # +W:2:38:0:1 # +W:2:39:0:1 # +W:2:40:0:0 # TSURIZAO +W:2:41:0:1 # +W:2:42:0:1 # +W:2:43:0:1 # +W:2:44:0:1 # +W:2:45:0:1 # +W:2:46:0:1 # +W:2:47:0:1 # +W:2:48:0:1 # +W:2:49:0:1 # +W:2:50:0:1 # GROND +W:2:51:0:1 # +W:2:52:0:1 # +W:2:53:0:1 # +W:2:54:0:1 # +W:2:55:0:1 # +W:2:56:0:1 # +W:2:57:0:1 # +W:2:58:0:1 # +W:2:59:0:1 # +W:2:60:0:1 # 60 +W:2:61:0:1 # +W:2:62:0:1 # +W:2:63:0:4 # NAMAKE +# Polearm +W:3:0:0:1 # 0 +W:3:1:0:1 # HATCHET +W:3:2:0:2 # SPEAR +W:3:3:0:3 # SICKLE +W:3:4:0:1 # AWL_PIKE +W:3:5:0:1 # TRIDENT +W:3:6:0:1 # FAUCHARD +W:3:7:0:1 # BROAD_SPEAR +W:3:8:0:1 # PIKE +W:3:9:0:4 # NAGINATA +W:3:10:0:1 # BEAKED_AXE +W:3:11:0:1 # BROAD_AXE +W:3:12:0:1 # LUCERNE_HAMMER +W:3:13:0:1 # GLAIVE +W:3:14:0:1 # LAJATANG +W:3:15:0:1 # HALBERD +W:3:16:0:1 # GUISARME +W:3:17:0:1 # SCYTHE +W:3:18:0:1 # +W:3:19:0:1 # +W:3:20:0:1 # LANCE +W:3:21:0:1 # +W:3:22:0:1 # BATTLE_AXE +W:3:23:0:1 # +W:3:24:0:1 # +W:3:25:0:1 # GREAT_AXE +W:3:26:0:1 # TRIFURCATE_SPEAR +W:3:27:0:1 # +W:3:28:0:1 # LOCHABER_AXE +W:3:29:0:1 # HEAVY_LANCE +W:3:30:0:1 # SCYTHE_OF_SLICING +W:3:31:0:1 # +W:3:32:0:1 # +W:3:33:0:1 # +W:3:34:0:1 # +W:3:35:0:1 # +W:3:36:0:1 # +W:3:37:0:1 # +W:3:38:0:1 # +W:3:39:0:1 # +W:3:40:0:1 # 40 +W:3:41:0:1 # +W:3:42:0:1 # +W:3:43:0:1 # +W:3:44:0:1 # +W:3:45:0:1 # +W:3:46:0:1 # +W:3:47:0:1 # +W:3:48:0:1 # +W:3:49:0:1 # +W:3:50:0:1 # DEATH_SCYTHE +W:3:51:0:1 # +W:3:52:0:1 # +W:3:53:0:1 # +W:3:54:0:1 # +W:3:55:0:1 # +W:3:56:0:1 # +W:3:57:0:1 # +W:3:58:0:1 # +W:3:59:0:1 # +W:3:60:0:1 # 60 +W:3:61:0:1 # +W:3:62:0:1 # +W:3:63:0:1 # +# Sword +W:4:0:0:1 # 0 +W:4:1:0:1 # BROKEN_DAGGER +W:4:2:0:1 # BROKEN_SWORD +W:4:3:0:1 # +W:4:4:0:1 # DAGGER +W:4:5:0:1 # MAIN_GAUCHE +W:4:6:0:4 # TANTO +W:4:7:0:1 # RAPIER +W:4:8:0:1 # SMALL_SWORD +W:4:9:0:1 # BASILLARD +W:4:10:0:1 # SHORT_SWORD +W:4:11:0:1 # SABRE +W:4:12:0:1 # CUTLASS +W:4:13:0:2 # WAKIZASHI +W:4:14:0:1 # KHOPESH +W:4:15:0:1 # TULWAR +W:4:16:0:1 # BROAD_SWORD +W:4:17:0:1 # LONG_SWORD +W:4:18:0:1 # SCIMITAR +W:4:19:0:2 # NINJATO +W:4:20:0:2 # KATANA +W:4:21:0:1 # BASTARD_SWORD +W:4:22:0:1 # GREAT_SCIMITAR +W:4:23:0:1 # CLAYMORE +W:4:24:0:1 # ESPADON +W:4:25:0:1 # TWO_HANDED_SWORD +W:4:26:0:1 # FLAMBERGE +W:4:27:0:1 # NO_DACHI +W:4:28:0:1 # EXECUTIOERS_SWORD +W:4:29:0:1 # ZWEIHANDER +W:4:30:0:1 # BLADE_OF_CHAOS +W:4:31:0:1 # DIAMOND_EDGE +W:4:32:0:4 # DOKUBARI +W:4:33:0:1 # +W:4:34:0:1 # +W:4:35:0:1 # +W:4:36:0:1 # +W:4:37:0:1 # +W:4:38:0:1 # +W:4:39:0:1 # +W:4:40:0:1 # 40 +W:4:41:0:1 # +W:4:42:0:1 # +W:4:43:0:1 # +W:4:44:0:1 # +W:4:45:0:1 # +W:4:46:0:1 # +W:4:47:0:1 # +W:4:48:0:1 # +W:4:49:0:1 # +W:4:50:0:1 # 50 +W:4:51:0:1 # +W:4:52:0:1 # +W:4:53:0:1 # +W:4:54:0:1 # +W:4:55:0:1 # +W:4:56:0:1 # +W:4:57:0:1 # +W:4:58:0:1 # +W:4:59:0:1 # +W:4:60:0:1 # 60 +W:4:61:0:1 # +W:4:62:0:1 # +W:4:63:0:1 # +# Skill +S:0:0:6000 # SUDE +S:1:0:2000 # NITOURYU +S:2:0:500 # RIDING diff -ur hengband_cvs/lib/edit/t0000001.txt hengband/lib/edit/t0000001.txt --- hengband_cvs/lib/edit/t0000001.txt Wed Jun 16 10:04:10 2004 +++ hengband/lib/edit/t0000001.txt Wed Jun 16 09:06:04 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:村長:ウルドリック:人間 Only in hengband/lib/edit: t0000001.txt.orig Only in hengband/lib/edit: t0000001.txt.rej diff -ur hengband_cvs/lib/edit/t0000002.txt hengband/lib/edit/t0000002.txt --- hengband_cvs/lib/edit/t0000002.txt Wed Jun 16 10:04:10 2004 +++ hengband/lib/edit/t0000002.txt Wed Jun 16 09:06:04 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:モンスター仙人:ロリエン:エルフ @@ -336,8 +336,8 @@ B:7:A:0:武器を強化する:400:800:w:23:0 B:$7:A:1:Enchant armor:300:600:a:24:0 B:7:A:1:防具を強化する:300:600:a:24:0 -B:$7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0 -B:7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0 +B:$7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0:0 +B:7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0:0 B:$9:N:Temple of Life:Crysania:Human B:9:N:生命魔術の塔:クリサニア:人間 @@ -354,8 +354,8 @@ B:10:A:1:一泊する:0:100:r:17:0 B:$10:A:2:Identify possessions:100:2000:i:26:0 B:10:A:2:持ち物全てを鑑定:100:2000:i:26:0 -B:$10:C:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 -B:10:C:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:$10:C:0:0:0:2: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:10:C:0:0:0:2: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:$11:N:Archers Guild:Trallin:Half-elf B:11:N:アーチャーのギルド:トゥラリン:ハーフエルフ @@ -363,8 +363,8 @@ B:11:A:0:矢や石等を強化する:20:40:a:30:0 B:$11:A:1:Enchant bow:400:800:b:31:0 B:11:A:1:弓を強化する:400:800:b:31:0 -B:$11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0 -B:11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0 +B:$11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:2 +B:11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:2 B:$12:N:Paladins Guild:Langordathur:Human B:12:N:パラディンのギルド:ランゴルダスール:人間 @@ -372,8 +372,8 @@ B:12:A:0:防具を強化する:300:600:a:24:0 B:$12:A:1:See Healers:0:150:h:28:0 B:12:A:1:治療家に会う:0:150:h:28:0 -B:$12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 -B:12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:$12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 D:###################################################################################################################################################################################################### D:#---------------------TTTT-------------------------------------------------------------TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT# diff -ur hengband_cvs/lib/edit/t0000003.txt hengband/lib/edit/t0000003.txt --- hengband_cvs/lib/edit/t0000003.txt Wed Jun 16 10:04:10 2004 +++ hengband/lib/edit/t0000003.txt Wed Jun 16 09:06:04 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:モンスター仙人:ドラクスル:ドラコニアン @@ -287,8 +287,8 @@ B:7:A:1:防具を強化する:300:600:a:24:0 B:$7:A:2:Request quest:0:0:q:6:0 B:7:A:2:クエスト:0:0:q:6:0 -B:$7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0:0 -B:7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0:0 +B:$7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0:0:0 +B:7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0:0:0 B:$8:N:Tower of Sorcery:Tanistil:Elf B:8:N:賢者の塔:タニスティル:エルフ @@ -319,8 +319,8 @@ B:10:A:2:持ち物全てを鑑定:100:600:i:26:0 B:$10:A:3:request Quest:0:0:q:6:0 B:10:A:3:クエスト:0:0:q:6:0 -B:$10:C:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 -B:10:C:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:$10:C:0:0:0:2: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:10:C:0:0:0:2: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:$11:N:Archers Guild:Angros:Elf B:11:N:アーチャーのギルド:アングロス:エルフ @@ -328,8 +328,8 @@ B:11:A:0:矢や石等を強化する:20:40:a:30:0 B:$11:A:1:Enchant bow:400:800:b:31:0 B:11:A:1:弓を強化する:400:800:b:31:0 -B:$11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0 -B:11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0 +B:$11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:2 +B:11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:2 B:$12:N:Paladins Guild:Vilios:Human B:12:N:パラディンのギルド:ヴィリオス:人間 @@ -337,8 +337,8 @@ B:12:A:0:防具を強化する:400:1000:a:24:0 B:$12:A:1:See Healers:0:150:h:28:0 B:12:A:1:治療家に会う:0:150:h:28:0 -B:$12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 -B:12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:$12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 B:$13:N:Trump Tower:Pelloi:Amberite B:13:N:トランプ魔術の塔:ペロイ:アンバライト diff -ur hengband_cvs/lib/edit/t0000004.txt hengband/lib/edit/t0000004.txt --- hengband_cvs/lib/edit/t0000004.txt Wed Jun 16 10:04:10 2004 +++ hengband/lib/edit/t0000004.txt Wed Jun 16 09:06:04 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:モンスター仙人:アラドレス:エルフ @@ -194,8 +194,8 @@ B:7:A:1:防具を強化する:200:500:a:24:0 B:$7:A:2:Request quest:0:0:q:6:0 B:7:A:2:クエスト:0:0:q:6:0 -B:$7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0 -B:7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0 +B:$7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0:0 +B:7:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0:0 B:$8:N:Wizards Tower:Valceronwe:Sprite B:8:N:賢者の塔:ヴァルセロン:妖精 @@ -205,8 +205,8 @@ B:8:A:1:全てのアイテムを再充填:0:0:a:45:0 B:$8:A:2:Identify posessions:200:1000:i:26:0 B:8:A:2:持ち物全てを鑑定:200:1000:i:26:0 -B:$8:C:0:2:0:0:1:0:1:0:0:0:2:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0 -B:8:C:0:2:0:0:1:0:1:0:0:0:2:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0 +B:$8:C:0:2:0:0:1:0:1:0:0:0:2:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:8:C:0:2:0:0:1:0:1:0:0:0:2:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0 B:$9:N:Inner Temple:Kabir:Dwarf B:9:N:寺院:カビー:ドワーフ @@ -214,8 +214,8 @@ B:9:A:0:治療の祈祷:0:100:h:28:0 B:$9:A:1:Restoration:300:1000:r:29:0 B:9:A:1:能力回復:300:1000:r:29:0 -B:$9:C:0:0:2:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 -B:9:C:0:0:2:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:$9:C:0:0:2:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2 +B:9:C:0:0:2:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2 B:$10:N:Thieves Den:Molvrae:Dark Elf B:10:N:盗賊のアジト:モルブラエ:ダーク・エルフ @@ -223,8 +223,8 @@ B:10:A:1:一泊する:0:50:r:17:0 B:$10:A:2:Identify possessions:175:800:i:26:0 B:10:A:2:持ち物全てを鑑定:175:800:i:26:0 -B:$10:C:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 -B:10:C:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:$10:C:0:0:0:2: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:10:C:0:0:0:2: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:$11:N:Archers Tavern:Celegail:Elf B:11:N:アーチャーの酒場:ケレガイル:エルフ @@ -232,8 +232,8 @@ B:11:A:0:矢や石等を強化する:22:44:a:30:0 B:$11:A:1:Enchant bow:400:500:b:31:0 B:11:A:1:弓を強化する:400:500:b:31:0 -B:$11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0 -B:11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0 +B:$11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:2 +B:11:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:2 B:$12:N:Paladins Sanctum:Calpirosse:Half-Elf B:12:N:パラディンの聖所:カルパイロス:ハーフエルフ @@ -241,8 +241,8 @@ B:12:A:0:防具を強化する:240:440:a:24:0 B:$12:A:1:See Healers:0:100:h:28:0 B:12:A:1:治療家に会う:0:100:h:28:0 -B:$12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 -B:12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:$12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:12:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 B:$13:N:Trump Tower:Colleuse:Amberite B:13: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 -ur hengband_cvs/lib/edit/t0000005.txt hengband/lib/edit/t0000005.txt --- hengband_cvs/lib/edit/t0000005.txt Wed Jun 16 10:04:10 2004 +++ hengband/lib/edit/t0000005.txt Wed Jun 16 09:03:28 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 -ur hengband_cvs/lib/edit/t_lite.txt hengband/lib/edit/t_lite.txt --- hengband_cvs/lib/edit/t_lite.txt Wed Jun 16 10:04:10 2004 +++ hengband/lib/edit/t_lite.txt Wed Jun 16 09:06:04 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:村長:ウルドリック:人間 @@ -590,8 +590,8 @@ B:6:A:0:武器を強化する:400:800:w:23:0 B:$6:A:1:Enchant armor:300:600:a:24:0 B:6:A:1:防具を強化する:300:600:a:24:0 -B:$6:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0 -B:6:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0 +B:$6:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0:0 +B:6:C:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:0:0:2:2:2:0:0:0 B:$7:N:Temple of Life:Crysania:Human B:7:N:生命魔術の塔:クリサニア:人間 @@ -608,8 +608,8 @@ B:8:A:1:一泊する:0:100:r:17:0 B:$8:A:2:Identify possessions:100:2000:i:26:0 B:8:A:2:持ち物全てを鑑定:100:2000:i:26:0 -B:$8:C:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 -B:8:C:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:$8:C:0:0:0:2: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:8:C:0:0:0:2: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:$9:N:Archers Guild:Trallin:Half-elf B:9:N:アーチャーのギルド:トゥラリン:ハーフエルフ @@ -617,8 +617,8 @@ B:9:A:0:矢や石等を強化する:20:40:a:30:0 B:$9:A:1:Enchant bow:400:800:b:31:0 B:9:A:1:弓を強化する:400:800:b:31:0 -B:$9:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0 -B:9:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0 +B:$9:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:2 +B:9:C:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:2 B:$10:N:Paladins Guild:Langordathur:Human B:10:N:パラディンのギルド:ランゴルダスール:人間 @@ -626,8 +626,8 @@ B:10:A:0:防具を強化する:300:600:a:24:0 B:$10:A:1:See Healers:0:200:h:28:0 B:10:A:1:治療家に会う:0:200:h:28:0 -B:$10:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 -B:10:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:$10:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 +B:10:C:0:0:0:0:0:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 B:$11:N:Tower of Sorcery:Tanistil:Elf B:11: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 Only in hengband/lib/edit: t_lite.txt.orig Only in hengband/lib/edit: t_lite.txt.rej diff -ur hengband_cvs/lib/help/editor.txt hengband/lib/help/editor.txt --- hengband_cvs/lib/help/editor.txt Tue Mar 23 12:46:47 2004 +++ hengband/lib/help/editor.txt Wed Jun 16 09:03:29 2004 @@ -312,7 +312,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: Only in hengband/lib/help: editor.txt.orig diff -ur hengband_cvs/lib/help/jeditor.txt hengband/lib/help/jeditor.txt --- hengband_cvs/lib/help/jeditor.txt Wed Jun 16 10:04:11 2004 +++ hengband/lib/help/jeditor.txt Wed Jun 16 09:03: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 -ur hengband_cvs/lib/help/jraceclas.txt hengband/lib/help/jraceclas.txt --- hengband_cvs/lib/help/jraceclas.txt Wed Jun 16 10:04:11 2004 +++ hengband/lib/help/jraceclas.txt Wed Jun 16 09:03:29 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 -ur hengband_cvs/lib/help/raceclas.txt hengband/lib/help/raceclas.txt --- hengband_cvs/lib/help/raceclas.txt Wed Mar 24 19:09:41 2004 +++ hengband/lib/help/raceclas.txt Wed Jun 16 09:03:29 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 -ur hengband_cvs/lib/pref/pref-opt.prf hengband/lib/pref/pref-opt.prf --- hengband_cvs/lib/pref/pref-opt.prf Wed Dec 17 04:41:47 2003 +++ hengband/lib/pref/pref-opt.prf Wed Jun 16 09:06:04 2004 @@ -76,7 +76,8 @@ Y:empty_levels X:bound_walls_perm Y:last_words -Y:send_score +#FIXME 巫女さん開発中バージョンなのでスコアは送れません +#Y:send_score X:allow_debug_opts ##### Disturbance ##### Only in hengband/lib/pref: pref-opt.prf.orig diff -ur hengband_cvs/lib/pref/xtra-new.prf hengband/lib/pref/xtra-new.prf --- hengband_cvs/lib/pref/xtra-new.prf Fri Feb 22 01:58:49 2002 +++ hengband/lib/pref/xtra-new.prf Wed Jun 16 09:06:04 2004 @@ -145,4 +145,6 @@ R:0:0x93/0 ?:[EQU $CLASS Ninja] R:0:0x95/0 +?:[EQU $CLASS Medium] +R:0:0x94/0 diff -ur hengband_cvs/lib/pref/xtra-xxx.prf hengband/lib/pref/xtra-xxx.prf --- hengband_cvs/lib/pref/xtra-xxx.prf Fri Feb 1 21:57:43 2002 +++ hengband/lib/pref/xtra-xxx.prf Wed Jun 16 09:06:04 2004 @@ -138,3 +138,5 @@ R:0:0xAD/0 ?:[EQU $CLASS Ninja] R:0:0xAA/0 +?:[EQU $CLASS Medium] +R:0:0xA6/0 Only in hengband/lib/xtra/sound: sound.cfg.orig Only in hengband/lib/xtra/sound: sound.cfg.rej Only in hengband/: miko.patch Only in hengband/: pict.rsrc Only in hengband/: shog.patch Only in hengband/src: .DS_Store diff -ur hengband_cvs/src/artifact.c hengband/src/artifact.c --- hengband_cvs/src/artifact.c Wed Jun 16 10:04:08 2004 +++ hengband/src/artifact.c Wed Jun 16 09:06:04 2004 @@ -1040,7 +1040,8 @@ break; case BIAS_PRIESTLY: - if((o_ptr->tval == TV_SWORD || o_ptr->tval == TV_POLEARM) && + if((o_ptr->tval == TV_SWORD || o_ptr->tval == TV_POLEARM || + o_ptr->tval == TV_HAFTED) && !(have_flag(o_ptr->art_flags, TR_BLESSED))) { /* A free power for "priestly" random artifacts */ @@ -1672,6 +1673,7 @@ artifact_bias = BIAS_MAGE; break; case CLASS_PRIEST: + case CLASS_MEDIUM: artifact_bias = BIAS_PRIESTLY; break; case CLASS_ROGUE: diff -ur hengband_cvs/src/avatar.c hengband/src/avatar.c --- hengband_cvs/src/avatar.c Wed Jun 16 10:04:08 2004 +++ hengband/src/avatar.c Wed Jun 16 09:06:04 2004 @@ -216,6 +216,7 @@ p_ptr->vir_types[i++] = V_ENCHANT; break; case CLASS_PRIEST: + case CLASS_MEDIUM: p_ptr->vir_types[i++] = V_FAITH; p_ptr->vir_types[i++] = V_TEMPERANCE; break; @@ -332,7 +333,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 -ur hengband_cvs/src/birth.c hengband/src/birth.c --- hengband_cvs/src/birth.c Wed Jun 16 10:04:08 2004 +++ hengband/src/birth.c Wed Jun 16 09:26:55 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 }; @@ -1821,7 +1835,10 @@ "鏡使いは、魔力の込められた鏡を作り出して、それを触媒として攻撃を行なうことができる鏡魔法を使います。鏡使いは鏡の上で実力を発揮し、鏡の上では素早いテレポートが可能となります。魔法の鏡は、レベルによって一度に制御できる数が制限されます。鏡魔法に必要な能力は知能です。", -"忍者は暗闇に潜む恐るべき暗殺者であり、光源を持たずに行動し、相手の不意をつき一撃で息の根を止めます。また、相手を惑わすための忍術も身につけます。罠やドアを見つける能力に優れ、罠の解除や鍵開けに熟達しています。軽装を好み、重い鎧や武器を装備すると著しく動きが制限され、また、盾を装備しようとはしません。軽装ならば、レベルが上がるにつれより速くより静かに行動できます。さらに忍者は恐怖せず、成長すれば毒がほとんど効かなくなり、透明なものを見ることができるようになります。忍術に必要な能力は器用さです。" +"忍者は暗闇に潜む恐るべき暗殺者であり、光源を持たずに行動し、相手の不意をつき一撃で息の根を止めます。また、相手を惑わすための忍術も身につけます。罠やドアを見つける能力に優れ、罠の解除や鍵開けに熟達しています。軽装を好み、重い鎧や武器を装備すると著しく動きが制限され、また、盾を装備しようとはしません。軽装ならば、レベルが上がるにつれより速くより静かに行動できます。さらに忍者は恐怖せず、成長すれば毒がほとんど効かなくなり、透明なものを見ることができるようになります。忍術に必要な能力は器用さです。", + +"巫女は神にその身を捧げた乙女です。非力な彼女達は武器で直接敵と戦うことは苦手ですが、弓を構え心を研ぎすまして放つ矢は、敵をはずすことがありません。また、レベルが上がると、木をなぎ倒し敵を射貫く聖なる力を矢にこめて放つことができるようになります。また、水の上で身を清めることにより、邪悪な穢れを払うこともできます。神に仕える彼女達は祈りを唱えることができます。巫女は神に祝福された武器以外を身に付けることを好まず、弓を引くのに邪魔になる盾を持つことも好みません。これらを装備すると祈りの集中が乱れて失敗しやすくなり、また、矢もうまく撃てなくなってしまいます。巫女に必要な能力は器用さと賢さです。", + #else @@ -1877,7 +1894,10 @@ "Mirror-Masters are spell casters; like other mages, they must live by their wits. They can create magical mirrors, and employ them in the casting of Mirror-Magic spells. A Mirror-Master standing on a mirror has greater ability and, for example, can perform quick teleports. The maximum number of Magical Mirrors which can be controlled simultaneously depends on the level. Intelligence determines a Mirror-Master's spell casting ability.", -"A Ninja is a fearful assassin lurking in darkness. He or she can navigate effectively with no light source, catch enemies unawares, and kill with a single blow. Ninjas can use Ninjutsu, and are good at locating hidden traps and doors, disarming traps and picking locks. Since heavy armors, heavy weapons, or shields will restrict their motion greatly, they prefer light clothes, and become faster and more stealthy as they gain levels. A Ninja knows no fear and, at high level, becomes almost immune to poison and able to see invisible things. Dexterity determines a Ninja's ability to use Ninjutsu." +"A Ninja is a fearful assassin lurking in darkness. He or she can navigate effectively with no light source, catch enemies unawares, and kill with a single blow. Ninjas can use Ninjutsu, and are good at locating hidden traps and doors, disarming traps and picking locks. Since heavy armors, heavy weapons, or shields will restrict their motion greatly, they prefer light clothes, and become faster and more stealthy as they gain levels. A Ninja knows no fear and, at high level, becomes almost immune to poison and able to see invisible things. Dexterity determines a Ninja's ability to use Ninjutsu.", + +"A Medium is the maiden who offered the body to God. Since they are powerless, fighting with an enemy with arms is weak. However, the arrow concentrated and shot does not miss an enemy. Moreover, if a level goes up, an arrow can be loaded with holy power, which can beat a tree and can pierce through an enemy. Moreover, vicious impurity can also be paid by purifying the body on water. They can recite a prayer. A Medium dislike to attach to the body except the arms blessed by God, and it is not fond to have the shield which becomes obstructive in drawing a bow, either. Since concentration is confused when these are equipped, a prayer becomes easy to go wrong. Moreover, it also will become impossible to shoot an arrow well. Dexterity is a primary stat of Medium." + #endif }; @@ -2974,6 +2994,11 @@ chart = 155; break; } + case RACE_SHOGGOTH: + { + chart = 170; + break; + } default: { chart = 0; @@ -3724,6 +3749,12 @@ { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR }, { TV_SWORD, SV_DAGGER } }, + { + /* Medium */ + { TV_SORCERY_BOOK, 0 }, /* Hack: for realm1 book */ + { TV_SOFT_ARMOR, SV_ROBE }, + { TV_BOW, SV_SHORT_BOW }, + }, }; @@ -3836,6 +3867,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)); @@ -3856,7 +3895,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)); @@ -3956,6 +3996,17 @@ add_outfit(q_ptr); } + else if (p_ptr->pclass == CLASS_MEDIUM) + { + /* Hack -- Give the player some arrows */ + object_prep(q_ptr, lookup_kind(TV_ARROW, SV_AMMO_NORMAL)); + q_ptr->number = (byte)rand_range(25, 30); + + object_aware(q_ptr); + object_known(q_ptr); + + (void)inven_carry(q_ptr); + } if(p_ptr->pseikaku == SEIKAKU_SEXY) { @@ -5623,9 +5674,11 @@ /* Extra info */ #ifdef JP - put_str("注意:《性別》の違いはゲーム上ほとんど影響を及ぼしません。", 23, 5); + put_str("注意:《性別》の違いはゲーム上ほとんど影響を及ぼしませんが、", 22, 5); + put_str(" 女性にしか選べない職業があります。", 23, 5); #else - put_str("Note: Your 'sex' does not have any significant gameplay effects.", 23, 5); + put_str("Note: Your 'sex' does not have any significant gameplay",22, 5); + put_str(" effects, but a certain class can be chosen only as a female.", 23, 5); #endif @@ -5808,12 +5861,25 @@ } } + if (p_ptr->psex == SEX_MALE && p_ptr->pclass == CLASS_MEDIUM) + { #ifdef JP - if (get_check_strict("よろしいですか?", CHECK_DEFAULT_Y)) break; + prt("巫女は女性しか選べません。何かキーを押してください", 0, 0); #else - if (get_check_strict("Are you sure? ", CHECK_DEFAULT_Y)) break; + prt("Mediums have to be female. Hit any key.", 0, 0); +#endif + (void)inkey(); + prt("", 0, 0); + } + else + { +#ifdef JP + if (get_check_strict("よろしいですか?", CHECK_DEFAULT_Y)) break; +#else + if (get_check_strict("Are you sure? ", CHECK_DEFAULT_Y)) break; #endif - c_put_str(TERM_WHITE, " ", 5, 15); + c_put_str(TERM_WHITE, " ", 5, 15); + } } /* Choose the magic realms */ diff -ur hengband_cvs/src/cmd1.c hengband/src/cmd1.c --- hengband_cvs/src/cmd1.c Wed Jun 16 10:04:08 2004 +++ hengband/src/cmd1.c Wed Jun 16 09:03:29 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 -ur hengband_cvs/src/cmd2.c hengband/src/cmd2.c --- hengband_cvs/src/cmd2.c Wed Jun 16 10:04:08 2004 +++ hengband/src/cmd2.c Wed Jun 16 09:55:33 2004 @@ -2921,7 +2921,16 @@ */ static int breakage_chance(object_type *o_ptr) { - int archer_bonus = (p_ptr->pclass == CLASS_ARCHER ? (p_ptr->lev-1)/7 + 4: 0); + int archer_bonus = 0; + if (p_ptr->pclass == CLASS_ARCHER) + { + archer_bonus = (p_ptr->lev-1)/7 + 4; + } + else if (p_ptr->pclass == CLASS_MEDIUM && !p_ptr->icky_wield[0] && + !p_ptr->icky_wield[1] && !p_ptr->cumber_shield) + { + archer_bonus = (p_ptr->lev-1)/10 + 4; + } /* Examine the item type */ switch (o_ptr->tval) @@ -2957,7 +2966,7 @@ } -static s16b tot_dam_aux_shot(object_type *o_ptr, int tdam, monster_type *m_ptr) +static s16b tot_dam_aux_shot(object_type *o_ptr, int tdam, monster_type *m_ptr, int xtra_slay) { int mult = 10; @@ -2968,6 +2977,8 @@ /* Extract the flags */ object_flags(o_ptr, flgs); + if(xtra_slay) add_flag(flgs, xtra_slay); + /* Some "weapons" and "ammo" do extra damage */ switch (o_ptr->tval) { @@ -3348,8 +3359,13 @@ * for the damage multiplier. * * Note that Bows of "Extra Shots" give an extra shot. + * + * dcfa_flags are applied for various cases. see defines.h(DCFA_*) + * xtra_slay will be added to the flags of the object.(eg. TR_SLAY_DEMON) + * x_to_h will be added to bonus + * x_to_d will be added to damage */ -void do_cmd_fire_aux(int item, object_type *j_ptr) +bool do_cmd_fire_aux(int item, object_type *j_ptr, int dcfa_flags, int xtra_slay, int x_to_h, int x_to_d, int penetrate) { int dir; int j, y, x, ny, nx, ty, tx, prev_y, prev_x; @@ -3392,22 +3408,17 @@ tdis = 10; /* Base damage from thrown object plus launcher bonus */ - tdam = damroll(o_ptr->dd, o_ptr->ds) + o_ptr->to_d + j_ptr->to_d; + tdam = damroll(o_ptr->dd, o_ptr->ds) + o_ptr->to_d + j_ptr->to_d + x_to_d; /* Actually "fire" the object */ - bonus = (p_ptr->to_h_b + o_ptr->to_h + j_ptr->to_h); + bonus = (p_ptr->to_h_b + o_ptr->to_h + j_ptr->to_h) + x_to_h; if ((j_ptr->sval == SV_LIGHT_XBOW) || (j_ptr->sval == SV_HEAVY_XBOW)) chance = (p_ptr->skill_thb + (p_ptr->weapon_exp[0][j_ptr->sval] / 400 + bonus) * BTH_PLUS_ADJ); else chance = (p_ptr->skill_thb + ((p_ptr->weapon_exp[0][j_ptr->sval] - (WEAPON_EXP_MASTER / 2)) / 200 + bonus) * BTH_PLUS_ADJ); energy_use = bow_energy(j_ptr->sval); - tmul = bow_tmul(j_ptr->sval); - - /* Get extra "power" from "extra might" */ - if (p_ptr->xtra_might) tmul++; - - tmul = tmul * (100 + (int)(adj_str_td[p_ptr->stat_ind[A_STR]]) - 128); + tmul = extra_bow_tmul(j_ptr->sval); /* Boost the damage */ tdam *= tmul; @@ -3427,7 +3438,7 @@ /* need not to reset project_length (already did)*/ - return; + return FALSE; } /* Start at the player */ @@ -3502,15 +3513,47 @@ for (cur_dis = 0; cur_dis <= tdis; ) { /* Hack -- Stop at the target */ - if ((y == ty) && (x == tx)) break; + if (!(dcfa_flags & DCFA_THRU) && (y == ty) && (x == tx)) break; + + /* Assume not stick_to */ + stick_to = FALSE; /* Calculate the new location (see "project()") */ ny = y; nx = x; mmove2(&ny, &nx, py, px, ty, tx); + + if (cave_have_flag_bold(ny, nx, FF_TREE) && + (dcfa_flags & DCFA_TREE)) + { +#ifdef JP + msg_print("木は粉砕された。"); +#else + msg_print("A tree was crushed."); +#endif + cave_set_feat(ny, nx, (one_in_(3) ? feat_brake : feat_grass)); + + /* Update some things */ + p_ptr->update |= (PU_VIEW | PU_LITE | PU_MONSTERS | PU_MON_LITE); + + /* Reduce duration */ + penetrate -= 7; + if ((penetrate <= 0) && (!cave[ny][nx].m_idx)) + { + x = nx; + y = ny; + break; + } + } + /* Stopped by walls/doors */ - if (!cave_have_flag_bold(ny, nx, FF_PROJECT) && !cave[ny][nx].m_idx) break; + if (!cave_have_flag_bold(ny, nx, FF_PROJECT) && !cave[ny][nx].m_idx) + { + penetrate = 0; + + break; + } /* Advance the distance */ cur_dis++; @@ -3561,6 +3604,36 @@ /* Note the collision */ hit_body = TRUE; + /* Hit effect */ + if (penetrate > 0) + { + /* The player can see the (on screen) missile */ + if (panel_contains(y, x) && player_can_see_bold(y, x)) + { + u16b p = bolt_pict(y, x, y, x, GF_LITE); + byte a = PICT_A(p); + char c = PICT_C(p); + + /* Draw, Hilite, Fresh, Pause, Erase */ + print_rel(c, a, y, x); + move_cursor_relative(y, x); + Term_fresh(); + Term_xtra(TERM_XTRA_DELAY, msec); + lite_spot(y, x); + Term_fresh(); + } + + /* The player cannot see the missile */ + else + { + /* Pause anyway, for consistancy */ + Term_xtra(TERM_XTRA_DELAY, msec); + } + } + + /* Reduce duration */ + penetrate -= 5; + if (MON_CSLEEP(m_ptr)) { if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(V_COMPASSION, -1); @@ -3597,6 +3670,7 @@ if (test_hit_fire(chance - cur_dis, r_ptr->ac, m_ptr->ml)) { bool fear = FALSE; + int fdam; /* Handle unseen monster */ if (!visible) @@ -3634,32 +3708,44 @@ } /* Apply special damage XXX XXX XXX */ - tdam = tot_dam_aux_shot(q_ptr, tdam, m_ptr); - tdam = critical_shot(q_ptr->weight, q_ptr->to_h, tdam); + fdam = tot_dam_aux_shot(q_ptr, tdam, m_ptr, xtra_slay); + fdam = critical_shot(q_ptr->weight, q_ptr->to_h, fdam); /* No negative damage */ - if (tdam < 0) tdam = 0; + if (fdam < 0) fdam = 0; /* Modify the damage */ - tdam = mon_damage_mod(m_ptr, tdam, FALSE); + fdam = mon_damage_mod(m_ptr, fdam, FALSE); + + /* Increase base-damage */ + tdam += 2; + + /* Decrease the chance */ + chance -= 4; + if (chance < 0) chance = 0; /* Complex message */ if (p_ptr->wizard || cheat_xtra) { + msg_format("tdam:%d fdam:%d chance:%d ", tdam, fdam, chance); + #ifdef JP msg_format("%d/%d のダメージを与えた。", - tdam, m_ptr->hp); + fdam, m_ptr->hp); #else msg_format("You do %d (out of %d) damage.", - tdam, m_ptr->hp); + fdam, m_ptr->hp); #endif } /* Hit the monster, check for death */ - if (mon_take_hit(c_ptr->m_idx, tdam, &fear, extract_note_dies(real_r_ptr(m_ptr)))) + if (mon_take_hit(c_ptr->m_idx, fdam, &fear, extract_note_dies(real_r_ptr(m_ptr)))) { /* Dead monster */ + + /* Reduce duration */ + penetrate -= 1; } /* No death */ @@ -3678,13 +3764,20 @@ #else msg_format("%^s have stuck into %s!",o_name, m_name); #endif + /* Reduce duration */ + penetrate -= 2; + } + else + { + /* Reduce duration */ + penetrate -= 5; } /* Message */ - message_pain(c_ptr->m_idx, tdam); + message_pain(c_ptr->m_idx, fdam); /* Anger the monster */ - if (tdam > 0) anger_monster(m_ptr); + if (fdam > 0) anger_monster(m_ptr); /* Take note */ if (fear && m_ptr->ml) @@ -3713,7 +3806,7 @@ } /* Stop looking */ - break; + if (penetrate <= 0) break; } } @@ -3737,7 +3830,7 @@ { a_info[j_ptr->name1].cur_num = 0; } - return; + return TRUE; } o_ptr = &o_list[o_idx]; @@ -3767,6 +3860,8 @@ { /* Drop (or break) near that location */ (void)drop_near(q_ptr, j, prev_y, prev_x); + + return TRUE; } } @@ -3828,7 +3923,7 @@ } /* Fire the item */ - do_cmd_fire_aux(item, j_ptr); + (void)do_cmd_fire_aux(item, j_ptr, DCFA_NONE, 0, 0, 0, 0); } diff -ur hengband_cvs/src/cmd6.c hengband/src/cmd6.c --- hengband_cvs/src/cmd6.c Wed Jun 16 10:04:08 2004 +++ hengband/src/cmd6.c Wed Jun 16 09:06:05 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) { @@ -6783,7 +6908,7 @@ case TV_ARROW: case TV_BOLT: { - do_cmd_fire_aux(item, &inventory[INVEN_BOW]); + (void)do_cmd_fire_aux(item, &inventory[INVEN_BOW], DCFA_NONE, 0, 0, 0, 0); break; } Only in hengband/src: crbobj diff -ur hengband_cvs/src/defines.h hengband/src/defines.h --- hengband_cvs/src/defines.h Mon May 31 07:13:27 2004 +++ hengband/src/defines.h Wed Jun 16 09:15:37 2004 @@ -195,7 +195,7 @@ /* * Maximum number of player "class" types (see "table.c", etc) */ -#define MAX_CLASS 27 +#define MAX_CLASS 28 #define MAX_SEIKAKU 12 @@ -866,11 +866,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 /* @@ -903,6 +904,7 @@ #define CLASS_SMITH 24 #define CLASS_MIRROR_MASTER 25 #define CLASS_NINJA 26 +#define CLASS_MEDIUM 27 #define SEIKAKU_FUTUU 0 #define SEIKAKU_CHIKARA 1 @@ -5410,6 +5412,17 @@ #define SKEY_PGDOWN 0xf006 #define SKEY_TOP 0xf007 #define SKEY_BOTTOM 0xf008 + + +/* + * Bit flags for the "do_cmd_fire_aux()" function + * TREE: Destroy trees + * THRU: Do not stop at th target + */ +#define DCFA_NONE 0 +#define DCFA_TREE 0x01 +#define DCFA_THRU 0x02 + /* * Bit flags for move_player_effect() diff -ur hengband_cvs/src/do-spell.c hengband/src/do-spell.c --- hengband_cvs/src/do-spell.c Wed Jun 16 10:04:09 2004 +++ hengband/src/do-spell.c Wed Jun 16 09:17:43 2004 @@ -8373,6 +8373,7 @@ int base; if (p_ptr->pclass == CLASS_PRIEST || + p_ptr->pclass == CLASS_MEDIUM || p_ptr->pclass == CLASS_HIGH_MAGE || p_ptr->pclass == CLASS_SORCERER) base = plev + plev / 2; diff -ur hengband_cvs/src/dungeon.c hengband/src/dungeon.c --- hengband_cvs/src/dungeon.c Wed Jun 16 10:04:09 2004 +++ hengband/src/dungeon.c Wed Jun 16 09:06:05 2004 @@ -278,6 +278,7 @@ } case CLASS_PRIEST: + case CLASS_MEDIUM: case CLASS_BARD: { /* Good (light) sensing */ @@ -507,6 +508,7 @@ } case CLASS_PRIEST: + case CLASS_MEDIUM: case CLASS_BARD: case CLASS_ROGUE: case CLASS_FORCETRAINER: diff -ur hengband_cvs/src/effects.c hengband/src/effects.c --- hengband_cvs/src/effects.c Wed Jun 16 10:04:09 2004 +++ hengband/src/effects.c Wed Jun 16 09:03:29 2004 @@ -3482,7 +3482,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) @@ -3945,6 +3945,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) { @@ -5489,6 +5493,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 -ur hengband_cvs/src/externs.h hengband/src/externs.h --- hengband_cvs/src/externs.h Wed Jun 16 10:04:09 2004 +++ hengband/src/externs.h Wed Jun 16 09:06:05 2004 @@ -723,7 +723,7 @@ extern void do_cmd_run(void); extern void do_cmd_rest(void); extern void do_cmd_fire(void); -extern void do_cmd_fire_aux(int item, object_type *j_ptr); +extern bool do_cmd_fire_aux(int item, object_type *j_ptr, int dcfa_flags, int xtra_slay, int x_to_h, int x_to_d, int penetrate); extern void do_cmd_throw(void); extern bool do_cmd_throw_aux(int mult, bool boomerang, int shuriken); @@ -1471,6 +1471,7 @@ extern s16b gain_energy(void); extern s16b bow_energy(int sval); extern int bow_tmul(int sval); +extern int extra_bow_tmul(int sval); extern cptr your_alignment(void); extern int weapon_exp_level(int weapon_exp); extern int riding_exp_level(int riding_exp); diff -ur hengband_cvs/src/files.c hengband/src/files.c --- hengband_cvs/src/files.c Wed Jun 16 10:04:09 2004 +++ hengband/src/files.c Wed Jun 16 09:06:05 2004 @@ -1770,12 +1770,7 @@ if (inventory[INVEN_BOW].k_idx) { - tmul = bow_tmul(inventory[INVEN_BOW].sval); - - /* Get extra "power" from "extra might" */ - if (p_ptr->xtra_might) tmul++; - - tmul = tmul * (100 + (int)(adj_str_td[p_ptr->stat_ind[A_STR]]) - 128); + tmul = extra_bow_tmul(inventory[INVEN_BOW].sval); } /* shoot power */ @@ -2536,6 +2531,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 -ur hengband_cvs/src/flavor.c hengband/src/flavor.c --- hengband_cvs/src/flavor.c Wed Jun 16 10:04:09 2004 +++ hengband/src/flavor.c Wed Jun 16 09:06:05 2004 @@ -2317,7 +2317,7 @@ if (bow_ptr->k_idx && (o_ptr->tval == p_ptr->tval_ammo)) { int avgdam = o_ptr->dd * (o_ptr->ds + 1) * 10 / 2; - int tmul = bow_tmul(bow_ptr->sval); + int tmul = extra_bow_tmul(bow_ptr->sval); s16b energy_fire = bow_energy(bow_ptr->sval); /* See if the bow is "known" - then set damage bonus */ @@ -2325,11 +2325,6 @@ /* Effect of ammo */ if (known) avgdam += (o_ptr->to_d * 10); - - /* Get extra "power" from "extra might" */ - if (p_ptr->xtra_might) tmul++; - - tmul = tmul * (100 + (int)(adj_str_td[p_ptr->stat_ind[A_STR]]) - 128); /* Launcher multiplier */ avgdam *= tmul; diff -ur hengband_cvs/src/init1.c hengband/src/init1.c --- hengband_cvs/src/init1.c Wed Jun 16 10:04:09 2004 +++ hengband/src/init1.c Wed Jun 16 09:23:43 2004 @@ -3816,6 +3816,14 @@ /* Apply magic (no messages, no artifacts) */ apply_magic(o_ptr, base_level, AM_NO_FIXED_ART | AM_GOOD); + /* Paranoia -- proper item can be an artifact */ + if ((random & RANDOM_ARTIFACT) && + (o_ptr->tval >= TV_SHOT) && + (o_ptr->tval <= TV_RING)) + { + create_artifact(o_ptr, FALSE); + } + drop_here(o_ptr, *y, *x); } diff -ur hengband_cvs/src/monster2.c hengband/src/monster2.c --- hengband_cvs/src/monster2.c Wed Jun 16 10:04:09 2004 +++ hengband/src/monster2.c Wed Jun 16 09:06:05 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 */ @@ -3202,7 +3202,18 @@ (mode & PM_FORCE_FRIENDLY) || is_friendly_idx(who)) { if (!monster_has_hostile_align(NULL, 0, -1, r_ptr)) set_friendly(m_ptr); + }else if((p_ptr->pclass == CLASS_MEDIUM) && + (r_ptr->d_char == 'q') && + !(r_ptr->flags3 & RF3_EVIL) && + !(r_ptr->flags1 & RF1_UNIQUE) && + !(r_ptr->flags7 & RF7_NAZGUL) && + !(r_ptr->flags7 & RF7_UNIQUE2) && + !(r_ptr->flags7 & RF7_CHAMELEON)) + { + /* symbol 'q' monsters are friendly to Medium */ + if (!monster_has_hostile_align(NULL, 0, -1, r_ptr)) set_friendly(m_ptr); } + /* Assume no sleeping */ m_ptr->mtimed[MTIMED_CSLEEP] = 0; diff -ur hengband_cvs/src/racial.c hengband/src/racial.c --- hengband_cvs/src/racial.c Wed Jun 16 10:04:09 2004 +++ hengband/src/racial.c Wed Jun 16 10:01:25 2004 @@ -292,6 +292,211 @@ return TRUE; } +/* + * do_cmd_cast calls this function if the player's class + * is 'Medium'. + */ +static bool do_cmd_hamaya(void) +{ + int item; + object_type *j_ptr; + cptr q, s; + + /* Get the "bow" (if any) */ + j_ptr = &inventory[INVEN_BOW]; + + /* Require a launcher */ + if (!j_ptr->tval) + { +#ifdef JP + msg_print("射撃用の武器を持っていない。"); +#else + msg_print("You have nothing to fire with."); +#endif + flush(); + return FALSE; + } + + if (j_ptr->sval == SV_CRIMSON) + { +#ifdef JP + msg_print("この武器は発動して使うもののようだ。"); +#else + msg_print("Do activate."); +#endif + flush(); + return FALSE; + } + + + /* Require proper missile */ + item_tester_tval = p_ptr->tval_ammo; + + /* Get an item */ +#ifdef JP + q = "どれを撃ちますか? "; + s = "発射されるアイテムがありません。"; +#else + q = "Fire which item? "; + s = "You have nothing to fire."; +#endif + + if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) + { + flush(); + return FALSE; + } + + /* Fire the item */ + { + char o_name[MAX_NLEN]; + + object_desc(o_name, &inventory[item], (OD_OMIT_PREFIX | OD_NO_PLURAL | OD_NAME_ONLY)); +#ifdef JP + msg_format("祈りをこめて%sを放つ!", o_name); +#else + msg_format("You pray and shoot the %s!", o_name); +#endif + } + + { + int flag = DCFA_TREE | DCFA_THRU; + int slay = TR_SLAY_EVIL; + int xh = p_ptr->lev / 3; + int xd = p_ptr->lev / 5; + int power = 0; + if (p_ptr->lev >= 30) power = (p_ptr->lev - 30) * 10 / 3 + 35; + if (p_ptr->lev >= 45) slay = TR_KILL_EVIL; + if (do_cmd_fire_aux(item, j_ptr, flag, slay, xh, xd, power)) + { + if (one_in_(3)) + { +#ifdef JP + msg_print("反動で眩暈を感じた。"); +#else + msg_print("Since you concentrated too much, you got giddy."); +#endif + (void)set_stun(p_ptr->stun + randint1(5) + 1); + } + return TRUE; + } + else + { + return FALSE; + } + } +} + +/* みそぎを行う + * 効果 + *  祝福される,装備が解呪される,状態異常が治る,装備が*解呪*される, + *  対邪悪結界 + *  ランダムで周囲のモンスターを魅了し、怒らせる + */ +static bool do_cmd_ablution(void) +{ + int eff; + int plev = p_ptr->lev; + int term = randint1(plev) + plev * 2; + + if ((cave[py][px].feat != feat_shallow_water) && (cave[py][px].feat != feat_deep_water)) + { +#ifdef JP + msg_print("ここには体を清める水が無い。"); +#else + msg_print("No spring water around here."); +#endif + + return FALSE; + } + + /* inside 'The Sewer' quest */ + if (p_ptr->inside_quest == 2) + { +#ifdef JP + msg_print("この水は大変汚れている。"); +#else + msg_print("This water is very dirty."); +#endif + + return FALSE; + } + +#ifdef JP + msg_print("清水に体をひたして穢れを落とした。"); +#else + msg_print("Impurity of the body was dropped on spring water."); +#endif + + eff = plev; + + set_blessed(term, FALSE); + + if (eff >= 10) + { + if (remove_curse()) + { +#ifdef JP + msg_print("誰かに見守られているような気がする。"); +#else + msg_print("You feel as if someone is watching over you."); +#endif + } + } + + if (eff >= 15) + { + bool affect = FALSE; + affect |= set_poisoned(0); + affect |= set_image(0); + affect |= set_stun(0); + affect |= set_cut(0); + affect |= set_blind(0); + affect |= set_afraid(0); + affect |= set_confused(0); + affect |= set_shero(0,TRUE); + if (affect) + { +#ifdef JP + msg_print("体が癒された気がする。"); +#else + msg_print("You feel cured."); +#endif + } + } + + if (eff >= 20) + { + if (remove_all_curse()) + { +#ifdef JP + msg_print("誰かに見守られているような気がする。"); +#else + msg_print("You feel as if someone is watching over you."); +#endif + } + } + + if (eff >= 25) + { + (void)set_protevil(term, FALSE); + } + + if (randint1(100) >= p_ptr->skill_stl * 3 + 5) + { + int rol = randint1(20); + if (rol <= 1) + { + charm_animals(plev * 2); + } + else + { + aggravate_monsters(0); + } + } + return TRUE; +} + bool gain_magic(void) { int item; @@ -1348,6 +1553,18 @@ energy_use = 0; break; } + case CLASS_MEDIUM: + { + if (command == -3) + { + if (!do_cmd_hamaya()) return FALSE; + } + else if (command == -4) + { + if (!do_cmd_ablution()) return FALSE; + } + break; + } } } else if (p_ptr->mimic_form) @@ -1786,6 +2003,7 @@ } break; case CLASS_PRIEST: + case CLASS_MEDIUM: case CLASS_PALADIN: if (one_in_(3)) { @@ -2593,6 +2811,30 @@ power_desc[num].stat = A_DEX; power_desc[num].fail = 0; power_desc[num++].number = -3; + break; + } + case CLASS_MEDIUM: + { +#ifdef JP +strcpy(power_desc[num].name, "破魔矢"); +#else + strcpy(power_desc[num].name, "Evil Blast Arrow"); +#endif + power_desc[num].level = 20; + power_desc[num].cost = (p_ptr->lev + 100) / 3; + power_desc[num].stat = A_WIS; + power_desc[num].fail = 10; + power_desc[num++].number = -3; +#ifdef JP +strcpy(power_desc[num].name, "みそぎ"); +#else + strcpy(power_desc[num].name, "Ablution"); +#endif + power_desc[num].level = 5; + power_desc[num].cost = 10; + power_desc[num].stat = A_WIS; + power_desc[num].fail = 5; + power_desc[num++].number = -4; break; } default: diff -ur hengband_cvs/src/spells2.c hengband/src/spells2.c --- hengband_cvs/src/spells2.c Wed Jun 16 10:04:09 2004 +++ hengband/src/spells2.c Wed Jun 16 09:06:05 2004 @@ -845,6 +845,24 @@ #endif } break; + case CLASS_MEDIUM: + if (plev > 4) + { +#ifdef JP +info[i++] = "あなたは水の上で体の穢れを落とすことができる。"; +#else + info[i++] = "You can drop impurity of the body on water. "; +#endif + } + if (plev > 19) + { +#ifdef JP +info[i++] = "あなたは敵を貫通する聖なる矢を放つことができる。"; +#else + info[i++] = "You can fire a holy arrow."; +#endif + } + break; } if (p_ptr->muta1) diff -ur hengband_cvs/src/spells3.c hengband/src/spells3.c --- hengband_cvs/src/spells3.c Wed Jun 16 10:04:09 2004 +++ hengband/src/spells3.c Wed Jun 16 09:06:05 2004 @@ -4255,6 +4255,12 @@ /* Hack -- Priest prayer penalty for "edged" weapons -DGK */ if (((p_ptr->pclass == CLASS_PRIEST) || (p_ptr->pclass == CLASS_SORCERER)) && p_ptr->icky_wield[0]) chance += 25; if (((p_ptr->pclass == CLASS_PRIEST) || (p_ptr->pclass == CLASS_SORCERER)) && p_ptr->icky_wield[1]) chance += 25; + if (p_ptr->pclass == CLASS_MEDIUM) + { + if (p_ptr->icky_wield[0]) chance += 20; + if (p_ptr->icky_wield[1]) chance += 20; + if (p_ptr->cumber_shield) chance += 20; + } chance = mod_spell_chance_1(chance); @@ -5985,6 +5991,9 @@ break; case RACE_DEMON: summon_kin_type = 'U'; + break; + case RACE_SHOGGOTH: + summon_kin_type = 'j'; break; default: summon_kin_type = 'p'; diff -ur hengband_cvs/src/tables.c hengband/src/tables.c --- hengband_cvs/src/tables.c Wed Jun 16 10:04:10 2004 +++ hengband/src/tables.c Wed Jun 16 09:06:06 2004 @@ -2839,7 +2839,7 @@ 72, 6, 180, 25, 66, 4, 150, 20, 0, - 0x7FFFFFF, + 0xFFFFFFF, }, { #ifdef JP @@ -2854,7 +2854,7 @@ 66, 6, 130, 15, 62, 6, 100, 10, 2, - 0x677E7FF, + 0xE77E7FF, }, { #ifdef JP @@ -2869,7 +2869,7 @@ 60, 4, 100, 6, 54, 4, 80, 6, 3, - 0x677E75B, + 0xE77E75B, }, { @@ -2885,7 +2885,7 @@ 36, 3, 60, 3, 33, 3, 50, 3, 4, - 0x76FFC0B, + 0xF6FFC0B, }, { #ifdef JP @@ -2900,7 +2900,7 @@ 42, 3, 90, 6, 39, 3, 75, 3, 4, - 0x767D60F, + 0xF67D60F, }, { #ifdef JP @@ -2960,7 +2960,7 @@ 82, 5, 190, 20, 78, 6, 180, 15, 0, - 0x7FFF7FF, + 0xFFFF7FF, }, { #ifdef JP @@ -2975,7 +2975,7 @@ 90, 10, 190, 20, 82, 10, 180, 15, 4, - 0x777E75B, + 0xF77E75B, }, { #ifdef JP @@ -2990,7 +2990,7 @@ 82, 5, 200, 20, 78, 6, 190, 15, 0, - 0x5C0A09D, + 0xDC0A09D, }, { #ifdef JP @@ -3080,7 +3080,7 @@ 60, 3, 80, 4, 54, 3, 70, 4, 2, - 0x04D8011, + 0x84D8011, }, { #ifdef JP @@ -3110,7 +3110,7 @@ 43, 3, 92, 6, 40, 3, 78, 3, 5, - 0x569040F, + 0xD69040F, }, { #ifdef JP @@ -3125,7 +3125,7 @@ 60, 4, 100, 6, 54, 4, 80, 6, 5, - 0x677C7DF, + 0xE77C7DF, }, { #ifdef JP @@ -3140,7 +3140,7 @@ 76, 1, 160, 5, 72, 1, 130, 5, 2, - 0x7FFE757, + 0xFFFE757, }, { #ifdef JP @@ -3260,7 +3260,7 @@ 32, 2, 75, 2, 29, 2, 65, 2, 4, - 0x623F65E, + 0xE23F65E, }, { #ifdef JP @@ -3304,7 +3304,7 @@ 82, 5, 190, 20, 78, 6, 180, 15, 3, - 0x779F777, + 0xF79F777, }, { #ifdef JP @@ -3336,7 +3336,7 @@ 82, 5, 190, 20, 78, 6, 180, 15, 0, - 0x7FFF7FF, + 0xFFFF7FF, }, { #ifdef JP @@ -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, + }, }; @@ -3712,6 +3727,17 @@ 15, 10, 10, 0, 0, 0, 25,18, 2, 20, 40 }, + { +#ifdef JP + "巫女", +#endif + "Medium", + + {-5, 0, 3, 2, -3, 2}, + 25, 35, 60, 5, 16, 10, 34, 65, + 8, 11, 13, 0, 0, 0, 6, 60, + 0, 25, 30 + }, }; player_seikaku seikaku_info[MAX_SEIKAKU] = @@ -4039,6 +4065,7 @@ (CH_NONE), /* Kaji */ (CH_NONE), /* Mirror-master */ (CH_NONE), /* Ninja */ + (CH_LIFE | CH_CRUSADE | CH_NATURE | CH_DEATH | CH_DAEMON), /* Medium */ }; @@ -4081,6 +4108,7 @@ (CH_NONE), /* Kaji */ (CH_NONE), /* Mirror-master */ (CH_NONE), /* Ninja */ + (CH_NONE), /* Medium */ }; @@ -4605,6 +4633,19 @@ "暗殺者", "死の長き腕", }, + /* Medium */ + { + "無垢な少女", + "御神馬の少女", + "聖少女", + "朝霧の巫女", + "夕月の巫女", + "姫巫女", + "山神の巫女", + "龍神の巫女", + "神子", + "常乙女", + }, }; #else @@ -4986,6 +5027,19 @@ "Shadowstrike", "Assassinator", "Death Lord", + }, + /* Medium */ + { + "Pure Girl", + "Jinme'S Girl", + "Saint Girl", + "Mist Maiden", + "Moon Maiden", + "Princess Maiden", + "Hanuman Maiden", + "Ryujin Maiden", + "Kamiko", + "Eternal Maiden", }, }; #endif diff -ur hengband_cvs/src/types.h hengband/src/types.h --- hengband_cvs/src/types.h Wed Jun 16 10:04:10 2004 +++ hengband/src/types.h Wed Jun 16 09:06:06 2004 @@ -1164,22 +1164,26 @@ bool old_cumber_armor; bool old_cumber_glove; + bool old_cumber_shield; bool old_heavy_wield[2]; bool old_heavy_shoot; bool old_icky_wield[2]; bool old_riding_wield[2]; bool old_riding_ryoute; + bool old_bow_ryoute; bool old_monlite; s16b old_lite; /* Old radius of lite (if any) */ bool cumber_armor; /* Mana draining armor */ bool cumber_glove; /* Mana draining gloves */ + bool cumber_shield; /* Icky shield */ bool heavy_wield[2]; /* Heavy weapon */ bool heavy_shoot; /* Heavy shooter */ bool icky_wield[2]; /* Icky weapon */ bool riding_wield[2]; /* Riding weapon */ bool riding_ryoute; /* Riding weapon */ + bool bow_ryoute; /* Can't use hand for shoot */ bool monlite; s16b cur_lite; /* Radius of lite (if any) */ diff -ur hengband_cvs/src/xtra1.c hengband/src/xtra1.c --- hengband_cvs/src/xtra1.c Wed Jun 16 10:04:10 2004 +++ hengband/src/xtra1.c Wed Jun 16 09:06:06 2004 @@ -2473,6 +2473,7 @@ case CLASS_MONK: case CLASS_FORCETRAINER: case CLASS_SORCERER: + case CLASS_MEDIUM: { if (inventory[INVEN_RARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_RARM].weight; if (inventory[INVEN_LARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_LARM].weight; @@ -2542,6 +2543,7 @@ case CLASS_MAGE: case CLASS_HIGH_MAGE: case CLASS_BLUE_MAGE: + case CLASS_MEDIUM: { msp -= msp * (cur_wgt - max_wgt) / 600; break; @@ -3553,6 +3555,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 */ ; @@ -4664,7 +4672,6 @@ } - /* Compute "extra shots" if needed */ if (o_ptr->k_idx) { /* Analyze the launcher */ @@ -4696,50 +4703,6 @@ break; } } - - /* Apply special flags */ - if (o_ptr->k_idx && !p_ptr->heavy_shoot) - { - /* Extra shots */ - p_ptr->num_fire += (extra_shots * 100); - - /* Hack -- Rangers love Bows */ - if ((p_ptr->pclass == CLASS_RANGER) && - (p_ptr->tval_ammo == TV_ARROW)) - { - p_ptr->num_fire += (p_ptr->lev * 4); - } - - if ((p_ptr->pclass == CLASS_CAVALRY) && - (p_ptr->tval_ammo == TV_ARROW)) - { - p_ptr->num_fire += (p_ptr->lev * 3); - } - - if (p_ptr->pclass == CLASS_ARCHER) - { - if (p_ptr->tval_ammo == TV_ARROW) - p_ptr->num_fire += ((p_ptr->lev * 5)+50); - else if ((p_ptr->tval_ammo == TV_BOLT) || (p_ptr->tval_ammo == TV_SHOT)) - p_ptr->num_fire += (p_ptr->lev * 4); - } - - /* - * Addendum -- also "Reward" high level warriors, - * with _any_ missile weapon -- TY - */ - if (p_ptr->pclass == CLASS_WARRIOR && - (p_ptr->tval_ammo <= TV_BOLT) && - (p_ptr->tval_ammo >= TV_SHOT)) - { - p_ptr->num_fire += (p_ptr->lev * 2); - } - if ((p_ptr->pclass == CLASS_ROGUE) && - (p_ptr->tval_ammo == TV_SHOT)) - { - p_ptr->num_fire += (p_ptr->lev * 4); - } - } } if (p_ptr->ryoute) @@ -4798,6 +4761,7 @@ case CLASS_MAGE: case CLASS_HIGH_MAGE: case CLASS_BLUE_MAGE: + case CLASS_MEDIUM: num = 3; wgt = 100; mul = 2; break; /* Priest, Mindcrafter */ @@ -4938,6 +4902,19 @@ /* Icky weapon */ p_ptr->icky_wield[i] = TRUE; } + else if ((p_ptr->pclass == CLASS_MEDIUM) && (!(have_flag(flgs, TR_BLESSED)))) + { + /* Reduce the real bonuses */ + p_ptr->to_h[i] -= 2; + p_ptr->to_d[i] -= 2; + + /* Reduce the mental bonuses */ + p_ptr->dis_to_h[i] -= 2; + p_ptr->dis_to_d[i] -= 2; + + /* Icky weapon */ + p_ptr->icky_wield[i] = TRUE; + } else if (p_ptr->pclass == CLASS_BERSERKER) { p_ptr->to_h[i] += p_ptr->lev/5; @@ -5043,6 +5020,10 @@ p_ptr->dis_to_h_b -= penalty; } + /* Even one hand cannot be used for shoot? */ + p_ptr->bow_ryoute = FALSE; + if (!empty_hands(FALSE)) p_ptr->bow_ryoute = TRUE; + /* Different calculation for monks with empty hands */ if (((p_ptr->pclass == CLASS_MONK) || (p_ptr->pclass == CLASS_FORCETRAINER) || (p_ptr->pclass == CLASS_BERSERKER)) && (empty_hands_status & EMPTY_HAND_RARM) && !p_ptr->hidarite) @@ -5136,6 +5117,20 @@ monk_armour_aux = TRUE; } + /* Assume player not encumbered by shield */ + p_ptr->cumber_shield = FALSE; + for (i = 0 ; i < 2 ; i++) + { + if (inventory[INVEN_RARM+i].tval == TV_SHIELD) + { + if (p_ptr->pclass == CLASS_MEDIUM || + p_ptr->pclass == CLASS_NINJA) + { + p_ptr->cumber_shield = TRUE; + } + } + } + for (i = 0; i < 2; i++) { if (buki_motteruka(INVEN_RARM+i)) @@ -5170,6 +5165,64 @@ } } + /* Compute "extra shots" if needed */ + o_ptr = &inventory[INVEN_BOW]; + if (o_ptr->k_idx) + { + /* Apply special flags */ + if (!p_ptr->heavy_shoot) + { + /* Extra shots */ + p_ptr->num_fire += (extra_shots * 100); + + /* Hack -- Rangers love Bows */ + if ((p_ptr->pclass == CLASS_RANGER) && + (p_ptr->tval_ammo == TV_ARROW)) + { + p_ptr->num_fire += (p_ptr->lev * 4); + } + + if ((p_ptr->pclass == CLASS_CAVALRY) && + (p_ptr->tval_ammo == TV_ARROW)) + { + p_ptr->num_fire += (p_ptr->lev * 3); + } + + if ((p_ptr->pclass == CLASS_MEDIUM) && + (p_ptr->tval_ammo == TV_ARROW) && + !p_ptr->icky_wield[0] && + !p_ptr->icky_wield[1] && + !p_ptr->cumber_shield) + { + p_ptr->num_fire += (p_ptr->lev * 2); + } + + if (p_ptr->pclass == CLASS_ARCHER) + { + if (p_ptr->tval_ammo == TV_ARROW) + p_ptr->num_fire += ((p_ptr->lev * 5)+50); + else if ((p_ptr->tval_ammo == TV_BOLT) || (p_ptr->tval_ammo == TV_SHOT)) + p_ptr->num_fire += (p_ptr->lev * 4); + } + + /* + * Addendum -- also "Reward" high level warriors, + * with _any_ missile weapon -- TY + */ + if (p_ptr->pclass == CLASS_WARRIOR && + (p_ptr->tval_ammo <= TV_BOLT) && + (p_ptr->tval_ammo >= TV_SHOT)) + { + p_ptr->num_fire += (p_ptr->lev * 2); + } + if ((p_ptr->pclass == CLASS_ROGUE) && + (p_ptr->tval_ammo == TV_SHOT)) + { + p_ptr->num_fire += (p_ptr->lev * 4); + } + } + } + /* Maximum speed is (+99). (internally it's 110 + 99) */ /* Temporary lightspeed forces to be maximum speed */ if ((p_ptr->lightspeed && !p_ptr->riding) || (new_speed > 209)) @@ -5334,6 +5387,33 @@ /* Hack -- handle "xtra" mode */ if (character_xtra) return; + /* Take note when "shield state" changes */ + if (p_ptr->old_cumber_shield != p_ptr->cumber_shield) + { + /* Message */ + if (p_ptr->cumber_shield) + { +#ifdef JP + msg_print("盾がとても邪魔に感じる。"); +#else + msg_print("You feel ill at ease with a shield."); +#endif + + } + else + { +#ifdef JP + msg_print("盾をはずして身軽になった。"); +#else + msg_print("You feel relieved of cumbersomeness."); +#endif + + } + + /* Save it */ + p_ptr->old_cumber_shield = p_ptr->cumber_shield; + } + /* Take note when "heavy bow" changes */ if (p_ptr->old_heavy_shoot != p_ptr->heavy_shoot) { @@ -5513,6 +5593,30 @@ } p_ptr->old_riding_ryoute = p_ptr->riding_ryoute; + } + + if (p_ptr->pclass == CLASS_MEDIUM && + (p_ptr->old_bow_ryoute != p_ptr->bow_ryoute)) + { + /* Message */ + if (p_ptr->bow_ryoute) + { +#ifdef JP + msg_print("両手がふさがっていてうまく矢を撃てない。"); +#else + msg_print("You are using both hand for fighting, and you can't shoot well."); +#endif + } + else + { +#ifdef JP + msg_print("手が空いてうまく矢を撃てるようになった。"); +#else + msg_print("You began to shoot well with one hand."); +#endif + } + + p_ptr->old_bow_ryoute = p_ptr->bow_ryoute; } if (((p_ptr->pclass == CLASS_MONK) || (p_ptr->pclass == CLASS_FORCETRAINER) || (p_ptr->pclass == CLASS_NINJA)) && (monk_armour_aux != monk_notify_aux)) diff -ur hengband_cvs/src/xtra2.c hengband/src/xtra2.c --- hengband_cvs/src/xtra2.c Wed Jun 16 10:04:10 2004 +++ hengband/src/xtra2.c Wed Jun 16 09:06:06 2004 @@ -5967,6 +5967,34 @@ } /* + * Return etra bow tmul + * STRや職業や装備に基き、現在のプレイヤーの射撃倍率を得る + */ +int extra_bow_tmul(int sval) +{ + int tmul; + tmul = bow_tmul(sval); + + /* Get extra "power" from "extra might" */ + if (p_ptr->xtra_might) tmul++; + + tmul = tmul * (100 + (int)(adj_str_td[p_ptr->stat_ind[A_STR]]) - 128); + + /* Mediums love Bows */ + if ((p_ptr->pclass == CLASS_MEDIUM) && + (p_ptr->tval_ammo == TV_ARROW) && + !p_ptr->icky_wield[0] && + !p_ptr->icky_wield[1] && + !p_ptr->cumber_shield && + !p_ptr->bow_ryoute) + { + tmul += (p_ptr->lev * 3 / 2); + } + + return tmul; +} + +/* * Return alignment title */ cptr your_alignment(void) diff -ur hengband_cvs/src/z-config.h hengband/src/z-config.h --- hengband_cvs/src/z-config.h Mon Dec 8 02:23:21 2003 +++ hengband/src/z-config.h Wed Jun 16 09:06:06 2004 @@ -588,6 +588,8 @@ * Use world score server */ #define WORLD_SCORE +/* FIXME 巫女さん開発中バージョンなのでスコアは送れません */ +#undef WORLD_SCORE #endif #endif /* HAVE_CONFIG_H */