diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/externs.h | 3 | ||||
-rw-r--r-- | src/joke.c | 34 | ||||
-rw-r--r-- | src/modules.c | 5 |
4 files changed, 43 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d84f94ba..0e1b21da 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,7 +11,7 @@ SET(SRCS monster1.c monster2.c monster3.c xtra1.c xtra2.c skills.c powers.c gods.c spells1.c spells2.c spells3.c spells4.c spells5.c spells6.c - corrupt.c mimic.c + corrupt.c joke.c mimic.c status.c files.c notes.c loadsave.c string_list.c cmd1.c cmd2.c cmd3.c cmd4.c cmd5.c cmd6.c cmd7.c help.c range.c diff --git a/src/externs.h b/src/externs.h index 38511e48..dc449cb1 100644 --- a/src/externs.h +++ b/src/externs.h @@ -990,6 +990,9 @@ extern s16b error_line; extern u32b fake_name_size; extern u32b fake_text_size; +/* joke.c */ +extern bool_ gen_joke_monsters(void *data, void *in, void *out); + /* loadsave.c */ extern void register_savefile(int num); extern bool_ file_exist(char *buf); diff --git a/src/joke.c b/src/joke.c new file mode 100644 index 00000000..0ff01557 --- /dev/null +++ b/src/joke.c @@ -0,0 +1,34 @@ +#include "angband.h" + +static void gen_joke_place_monster(r_idx) +{ + int try; + + for (try = 0; try < 1000; try++) + { + int x = randint(cur_hgt - 4) + 2; + int y = randint(cur_wid - 4) + 2; + + if (place_monster_one(y, x, r_idx, 0, FALSE, MSTATUS_ENEMY)) + { + return; + } + } +} + +bool_ gen_joke_monsters(void *data, void *in, void *out) +{ + if (joke_monsters) + { + if ((dungeon_type == 20) && + (dun_level == 72)) + { + int r_idx = test_monster_name("Neil, the Sorceror"); + m_allow_special[r_idx + 1] = TRUE; + gen_joke_place_monster(r_idx); + m_allow_special[r_idx + 1] = FALSE; + } + } + + return FALSE; +} diff --git a/src/modules.c b/src/modules.c index 98839d34..01f1be00 100644 --- a/src/modules.c +++ b/src/modules.c @@ -1135,6 +1135,11 @@ void init_hooks_module() "drunk_takes_wine", NULL); + add_hook_new(HOOK_LEVEL_END_GEN, + gen_joke_monsters, + "gen_joke_monsters", + NULL); + /* * Module-specific hooks */ |