変愚蛮怒のメインリポジトリです
Revision | 4d06060f79014443f8ca141b5f7056510b3cfc4e (tree) |
---|---|
Time | 2002-02-03 03:13:34 |
Author | mogami <mogami@0568...> |
Commiter | mogami |
(clone)フラグを拡張して、クローン地獄のユニーク達を全て(clone)にした。
クローンを倒してもオリジナルは生きている。
それから、ユニークのクローンはアイテムを落すが、死体は落さないようにした。
ガチャピン等がランダムクエストのユニークであっても先に倒してしまって
ランダムクエストが無くなる事を防げる。賞金首で余計に儲ける事もなくなる。
ただし、ゴルフィンブール等のクローン地獄以外のクエストには影響しない
のでこれについては直らない。
@@ -44,46 +44,46 @@ Q:33:T: | ||
44 | 44 | |
45 | 45 | # The Monsters |
46 | 46 | # Fang, Farmer Maggot's dog (level:2, Speed:120, XP:30, #:6) *Monster food* |
47 | -F:c:1:8:55 | |
47 | +F:c:1:8:c55 | |
48 | 48 | |
49 | 49 | # Freesia (level:2, Speed:120, XP:33, #:6) *Monster food* |
50 | -F:f:1:8:57 | |
50 | +F:f:1:8:c57 | |
51 | 51 | |
52 | 52 | # It (level:24, Speed:110, XP:400, #:3) |
53 | -F:I:1:8:393 | |
53 | +F:I:1:8:c393 | |
54 | 54 | |
55 | 55 | # Barney the Dinosaur (level:29, Speed:120, XP:500, #:3) |
56 | -F:R:1:8:441 | |
56 | +F:R:1:8:c441 | |
57 | 57 | |
58 | 58 | # The Ultimate Dungeon Cleaner (level:28, Speed:120, XP:555, #:6) |
59 | -F:g:1:8:451 | |
59 | +F:g:1:8:c451 | |
60 | 60 | |
61 | 61 | # Bokrug (level:33, Speed:110 XP:1600, #:3) |
62 | -F:S:1:8:489 | |
62 | +F:S:1:8:c489 | |
63 | 63 | |
64 | 64 | # Grendel (level:27, Speed:120, XP:1500, #:5) |
65 | -F:O:1:8:431 | |
65 | +F:O:1:8:c431 | |
66 | 66 | |
67 | 67 | # Tom the Stone Troll (level:33, Speed:110, XP:2000, #:5) |
68 | -F:M:1:8:495 | |
68 | +F:M:1:8:c495 | |
69 | 69 | |
70 | 70 | # Fasolt the Giant (level:33, Speed:110, XP:2000, #:5) |
71 | -F:P:1:8:506 | |
71 | +F:P:1:8:c506 | |
72 | 72 | |
73 | 73 | # Jurt the Living Trump (level:34, Speed:120, XP:1200, #:3) |
74 | -F:p:1:8:517 | |
74 | +F:p:1:8:c517 | |
75 | 75 | |
76 | 76 | # Little Boy (level:35, Speed:120, XP:200, #:4) |
77 | -F:t:1:8:531 | |
77 | +F:t:1:8:c531 | |
78 | 78 | |
79 | 79 | # Rogrog the Black Troll (level:36, Speed:120, XP:5000, #:5) |
80 | -F:r:1:8:551 | |
80 | +F:r:1:8:c551 | |
81 | 81 | |
82 | 82 | # The Queen Ant (level:37, Speed:120, XP:1000, #:3) |
83 | -F:a:1:8:581 | |
83 | +F:a:1:8:c581 | |
84 | 84 | |
85 | 85 | # Father Dagon (level:38, Speed:120, XP:3250, #:3) |
86 | -F:u:1:8:595 | |
86 | +F:u:1:8:c595 | |
87 | 87 | |
88 | 88 | # Random monster 5 levels out of depth |
89 | 89 | F:5:1:8:*5 |
@@ -2989,6 +2989,10 @@ static errr parse_line_feature(char *buf) | ||
2989 | 2989 | letter[index].monster = atoi(zz[3]); |
2990 | 2990 | } |
2991 | 2991 | } |
2992 | + else if (zz[3][0] == 'c') | |
2993 | + { | |
2994 | + letter[index].monster = - atoi(zz[3]+1); | |
2995 | + } | |
2992 | 2996 | else |
2993 | 2997 | { |
2994 | 2998 | letter[index].monster = atoi(zz[3]); |
@@ -3257,6 +3261,17 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in | ||
3257 | 3261 | } |
3258 | 3262 | else if (monster_index) |
3259 | 3263 | { |
3264 | + int old_cur_num, old_max_num; | |
3265 | + bool clone = FALSE; | |
3266 | + | |
3267 | + if (monster_index < 0) | |
3268 | + { | |
3269 | + monster_index = -monster_index; | |
3270 | + clone = TRUE; | |
3271 | + old_cur_num = r_info[monster_index].cur_num; | |
3272 | + old_max_num = r_info[monster_index].max_num; | |
3273 | + } | |
3274 | + | |
3260 | 3275 | /* Make alive again */ |
3261 | 3276 | if (r_info[monster_index].flags1 & RF1_UNIQUE) |
3262 | 3277 | { |
@@ -3275,6 +3290,15 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in | ||
3275 | 3290 | |
3276 | 3291 | /* Place it */ |
3277 | 3292 | place_monster_aux(*y, *x, monster_index, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE); |
3293 | + if (clone) | |
3294 | + { | |
3295 | + /* clone */ | |
3296 | + m_list[hack_m_idx_ii].smart |= SM_CLONED; | |
3297 | + | |
3298 | + /* Make alive again for real unique monster */ | |
3299 | + r_info[monster_index].cur_num = old_cur_num; | |
3300 | + r_info[monster_index].max_num = old_max_num; | |
3301 | + } | |
3278 | 3302 | } |
3279 | 3303 | |
3280 | 3304 | /* Object (and possible trap) */ |
@@ -813,8 +813,8 @@ msg_print(" | ||
813 | 813 | /* Drop a dead corpse? */ |
814 | 814 | if ((randint(r_ptr->flags1 & RF1_UNIQUE ? 1 : 4) == 1) && |
815 | 815 | ((r_ptr->flags9 & RF9_DROP_CORPSE) || |
816 | - (r_ptr->flags9 & RF9_DROP_SKELETON)) && | |
817 | - !(p_ptr->inside_arena || p_ptr->inside_battle || ((m_ptr->r_idx == today_mon) && is_pet(m_ptr)))) | |
816 | + (r_ptr->flags9 & RF9_DROP_SKELETON)) && | |
817 | + !(p_ptr->inside_arena || p_ptr->inside_battle || (m_ptr->smart & SM_CLONED) || ((m_ptr->r_idx == today_mon) && is_pet(m_ptr)))) | |
818 | 818 | { |
819 | 819 | /* Assume skeleton */ |
820 | 820 | bool corpse = FALSE; |
@@ -845,7 +845,7 @@ msg_print(" | ||
845 | 845 | /* Get local object */ |
846 | 846 | q_ptr = &forge; |
847 | 847 | |
848 | - /* Prepare to make a Blade of Chaos */ | |
848 | + /* Prepare to make an object */ | |
849 | 849 | object_prep(q_ptr, lookup_kind(TV_CORPSE, (corpse ? SV_CORPSE : SV_SKELETON))); |
850 | 850 | |
851 | 851 | apply_magic(q_ptr, object_level, FALSE, FALSE, FALSE, FALSE); |
@@ -1383,8 +1383,11 @@ msg_print(" | ||
1383 | 1383 | if (r_ptr->flags1 & RF1_DROP_3D2) number += damroll(3, 2); |
1384 | 1384 | if (r_ptr->flags1 & RF1_DROP_4D2) number += damroll(4, 2); |
1385 | 1385 | |
1386 | - if (cloned) number = 0; /* Clones drop no stuff */ | |
1387 | - if (is_pet(m_ptr) || p_ptr->inside_battle || p_ptr->inside_arena) number = 0; /* Pets drop no stuff */ | |
1386 | + if (cloned && !(r_ptr->flags1 & RF1_UNIQUE)) | |
1387 | + number = 0; /* Clones drop no stuff unless Cloning Pits */ | |
1388 | + | |
1389 | + if (is_pet(m_ptr) || p_ptr->inside_battle || p_ptr->inside_arena) | |
1390 | + number = 0; /* Pets drop no stuff */ | |
1388 | 1391 | if (!drop_item && (r_ptr->d_char != '$')) number = 0; |
1389 | 1392 | |
1390 | 1393 | /* Hack -- handle creeping coins */ |
@@ -1943,7 +1946,7 @@ msg_format("%s | ||
1943 | 1946 | #endif |
1944 | 1947 | |
1945 | 1948 | } |
1946 | - if (r_ptr->flags1 & RF1_UNIQUE) | |
1949 | + if (r_ptr->flags1 & RF1_UNIQUE && !(m_ptr->smart & SM_CLONED)) | |
1947 | 1950 | { |
1948 | 1951 | for (i = 0; i < MAX_KUBI; i++) |
1949 | 1952 | { |
@@ -1976,7 +1979,8 @@ msg_format("%s | ||
1976 | 1979 | } |
1977 | 1980 | |
1978 | 1981 | /* When the player kills a Unique, it stays dead */ |
1979 | - if (r_ptr->flags1 & RF1_UNIQUE) r_ptr->max_num = 0; | |
1982 | + if (r_ptr->flags1 & RF1_UNIQUE && !(m_ptr->smart & SM_CLONED)) | |
1983 | + r_ptr->max_num = 0; | |
1980 | 1984 | |
1981 | 1985 | /* When the player kills a Nazgul, it stays dead */ |
1982 | 1986 | if (r_ptr->flags7 & RF7_UNIQUE_7) r_ptr->max_num--; |