diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-05-06 21:06:34 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-05-06 21:06:34 +0000 |
commit | cb3497134b22bd2a2d413fdbdb41324e8e7070d7 (patch) | |
tree | cb9f2059879e48d60f053136c608496c8c30baf7 | |
parent | 5d559d519c41f7f6d621afb15f567c44a4f6311d (diff) | |
download | crawl-ref-cb3497134b22bd2a2d413fdbdb41324e8e7070d7.tar.gz crawl-ref-cb3497134b22bd2a2d413fdbdb41324e8e7070d7.zip |
* Fix god gift randarts being named after *other* gods.
* Reallow monster placement of bands (at least for Beogh's retribution;
it might be similarly buggy for normal generation).
* Extend documentation on orc naming, and sometimes name the band
leader of a band sent after you for retribution.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4894 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r-- | crawl-ref/docs/options_guide.txt | 3 | ||||
-rw-r--r-- | crawl-ref/source/dat/database/monname.txt | 102 | ||||
-rw-r--r-- | crawl-ref/source/dat/database/randname.txt | 6 | ||||
-rw-r--r-- | crawl-ref/source/effects.cc | 34 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 9 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/monplace.cc | 105 | ||||
-rw-r--r-- | crawl-ref/source/monplace.h | 11 | ||||
-rw-r--r-- | crawl-ref/source/randart.cc | 14 | ||||
-rw-r--r-- | crawl-ref/source/randart.h | 5 | ||||
-rw-r--r-- | crawl-ref/source/religion.cc | 28 |
11 files changed, 202 insertions, 117 deletions
diff --git a/crawl-ref/docs/options_guide.txt b/crawl-ref/docs/options_guide.txt index b036c73e30..05fb67612c 100644 --- a/crawl-ref/docs/options_guide.txt +++ b/crawl-ref/docs/options_guide.txt @@ -1026,6 +1026,9 @@ sort_menus = [menu:](true | false | auto:X)[:sort_order] with the exception that all worn/wielded items come first. This can be convenient if you use the '.' command to select subsequent items. + If you define sort_menus differently for two or more selectors, + the last one matching will always take precedence, i.e. "any" + as last setting would override any of the others. 4-j Messages and Display Enhancements. ------------------------------------------ diff --git a/crawl-ref/source/dat/database/monname.txt b/crawl-ref/source/dat/database/monname.txt index ab11735ed5..a3c39cec1b 100644 --- a/crawl-ref/source/dat/database/monname.txt +++ b/crawl-ref/source/dat/database/monname.txt @@ -1,26 +1,66 @@ -###################################################### +########################################################## # monname.txt: lookup monster names # -# This file contains a lists of names for monster -# names. This is currently only used when one of your -# orcish followers as Beogh's messiah gets named by -# Beogh. +# This file contains a lists of names for monster names. +# This is currently only used when one of your orcish followers as +# Beogh's messiah gets named by Beogh. # # Some important syllables # beogh, bog = referring to Beogh -# ork, orc, org, ok etc. = referring to orcs +# ork, orc, org, og, ok etc. = referring to orcs # -# Other syllables may be borrowed from real life, -# or made up. -# -# Feel free to add to this list. Like for the other -# database lists, you may add weights (defaults to -# w:10) to make certain names more or less likely. -###################################################### +# Other syllables may be borrowed from real life, or made up. +# +# To determine a name for an orcish follower, the game first looks +# looks for this follower's specific type, followed by the key word +# "name", e.g. "orc warrior name" or "orc sorcerer name". If no name +# has been found, the genus "orc" is tried instead. Should that also +# fail, plain orcs as well as followers of professions that have not +# been defined, won't ever be named. +# +# A name, once chosen, is final. In particular, Blork and Urug cannot +# be renamed. Also, note that plain orcs can grow up to be warriors +# and follow the fighter route, or else be blessed by Beogh to become +# priests. Either way, if already named, they will keep their name. +# +# Feel free to add to this list. Like for the other database lists, +# you may add weights (defaults to w:10) to make certain names more +# or less likely. +# +########################################################## %%%% orc name +w:14 +@beogh_name@ + +w:12 +@orcish_name@ + +w:45 +@other_orcish_name@ + +%%%% +# some specials for orcish priests +orc high priest name + +@orc priest name@ + +%%% +orc priest name + +# Watch out! :p +w:1 +Judas + +w:49 +@orc name@ + +%%%% # Obvious references to Beogh +# (14 at last count) +beogh_name + Arbeogh Bogbarth @@ -30,6 +70,8 @@ Bogdan Bogdar +Boghold + Bogmar Bogric @@ -44,11 +86,19 @@ Bogwik Morbeogh -Sharbogh +Orbeogh +Warbeogh + +%%%% # Obvious references to orcs in general +# (extremely subjective, and 12 at last count) +orcish_name + Alork +Borgk + Boruk Marbork @@ -69,7 +119,11 @@ Orkwin Oruk +%%%% # Other +# (45 at last count) +other_orcish_name + Agrik Arbolt @@ -90,6 +144,8 @@ Bolgrim Borgoth +Borgun + Brandogh Brunolf @@ -102,8 +158,14 @@ Gorbash Gorg +Gorm + Grimold +Harm + +Hawl + Herok Hilgar @@ -122,18 +184,30 @@ Murdo Norbak +Nordag + Olfik Olfrun +Ortolf + +Rocco + +Thorok + Ugbert Ugrim Wardok +Wargath + Wargrak +Warrok + Worak Wulfoc diff --git a/crawl-ref/source/dat/database/randname.txt b/crawl-ref/source/dat/database/randname.txt index 448123d387..c6f8fbc5d4 100644 --- a/crawl-ref/source/dat/database/randname.txt +++ b/crawl-ref/source/dat/database/randname.txt @@ -34,7 +34,6 @@ # * player_name - player-chosen character name # * player_species - species of the character # * branch_name - name of a random Crawl branch -# * race_name - name of a random Crawl species # * god_name - name of a random Crawl god # * xom_name - one of Xom's long names # @@ -165,8 +164,6 @@ of @god_name@'s @divine_esteem@ w:1 of @god_name@ -of the @race_name@ - %%%% ###################################################### # 2. ARMOUR @@ -371,9 +368,6 @@ of @balance_or_order@ w:20 of @economics_or_politics@ -w:20 -of the @race_name@ - w:15 of @branch_name@ diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc index b68dda8cd7..8d5860b3fc 100644 --- a/crawl-ref/source/effects.cc +++ b/crawl-ref/source/effects.cc @@ -1554,10 +1554,10 @@ bool acquirement(object_class_type class_wanted, int agent, continue; const item_def &doodad(mitm[thing_created]); - if ((doodad.base_type == OBJ_WEAPONS - && !can_wield(&doodad, false, true)) - || (doodad.base_type == OBJ_ARMOUR - && !can_wear_armour(doodad, false, true))) + if (doodad.base_type == OBJ_WEAPONS + && !can_wield(&doodad, false, true) + || doodad.base_type == OBJ_ARMOUR + && !can_wear_armour(doodad, false, true)) { destroy_item(thing_created, true); thing_created = NON_ITEM; @@ -1566,14 +1566,11 @@ bool acquirement(object_class_type class_wanted, int agent, // Only TSO gifts blessed blades, and currently not through // acquirement, but make sure of this anyway - if (agent != GOD_SHINING_ONE) + if (agent != GOD_SHINING_ONE && is_blessed_blade(doodad)) { - if (is_blessed_blade(doodad)) - { - destroy_item(thing_created, true); - thing_created = NON_ITEM; - continue; - } + destroy_item(thing_created, true); + thing_created = NON_ITEM; + continue; } // Trog does not gift the Wrath of Trog, nor weapons of pain @@ -1602,9 +1599,9 @@ bool acquirement(object_class_type class_wanted, int agent, // check vs stats. positive stats will automatically fall // through. As will negative stats that won't kill you. - if (-proprt[RAP_STRENGTH] >= you.strength || - -proprt[RAP_INTELLIGENCE] >= you.intel || - -proprt[RAP_DEXTERITY] >= you.dex) + if (-proprt[RAP_STRENGTH] >= you.strength + || -proprt[RAP_INTELLIGENCE] >= you.intel + || -proprt[RAP_DEXTERITY] >= you.dex) { // try again destroy_item(thing_created); @@ -1771,7 +1768,16 @@ bool acquirement(object_class_type class_wanted, int agent, } if (agent == you.religion) + { thing.inscription = "god gift"; + if (is_random_artefact(thing)) + { + origin_acquired(mitm[thing_created], agent); + // give another name that takes god gift into account + thing.props["randart_name"].get_string() = + randart_name(thing, false); + } + } move_item_to_grid( &thing_created, you.x_pos, you.y_pos ); // This should never actually be NON_ITEM because of the way diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index cc21050843..ab35bf2ab1 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -1747,13 +1747,12 @@ std::string mons_type_name(int type, description_level_type desc ) return result; } -// XXX: unique as in "proper name", not unique as in "name not used elsewhere"? -static std::string _get_unique_monster_name(const monsters *mon) +static std::string _get_proper_monster_name(const monsters *mon) { const monsterentry *me = mon->find_monsterentry(); if (!me) return (""); - + std::string name = getRandNameString(me->name, " name"); if (!name.empty()) return name; @@ -1770,7 +1769,7 @@ static std::string _get_unique_monster_name(const monsters *mon) // Fills the number parameter (if not otherwise needed) with a seed for // random name choice from randname.txt. -bool give_unique_monster_name(monsters *mon, bool orcs_only) +bool give_monster_proper_name(monsters *mon, bool orcs_only) { // already has a unique name if (mon->is_named()) @@ -1787,7 +1786,7 @@ bool give_unique_monster_name(monsters *mon, bool orcs_only) } } - mon->mname = _get_unique_monster_name(mon); + mon->mname = _get_proper_monster_name(mon); return (mon->is_named()); } diff --git a/crawl-ref/source/mon-util.h b/crawl-ref/source/mon-util.h index 042cf1b12a..ef33b70451 100644 --- a/crawl-ref/source/mon-util.h +++ b/crawl-ref/source/mon-util.h @@ -386,7 +386,7 @@ monsters *monster_at(const coord_def &pos); // this is the old moname() std::string mons_type_name(int type, description_level_type desc); -bool give_unique_monster_name(monsters *mon, bool orcs_only = true); +bool give_monster_proper_name(monsters *mon, bool orcs_only = true); // last updated 12may2000 {dlb} /* *********************************************************************** diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc index 2bcc8bc2a2..b964451ed6 100644 --- a/crawl-ref/source/monplace.cc +++ b/crawl-ref/source/monplace.cc @@ -579,7 +579,7 @@ int place_monster(mgen_data mg) close_to_player = (distance(you.x_pos, you.y_pos, mg.pos.x, mg.pos.y) < 64); - + if (mg.proximity == PROX_CLOSE_TO_PLAYER && !close_to_player || mg.proximity == PROX_AWAY_FROM_PLAYER && close_to_player) { @@ -666,8 +666,7 @@ int place_monster(mgen_data mg) if (id >= MAX_MONSTERS - 30 || mg.proximity == PROX_NEAR_STAIRS) return (id); - // Not PROX_NEAR_STAIRS, so will it will be part of a band, if there - // is any. + // Not PROX_NEAR_STAIRS, so it will be part of a band, if there is any. if (band_size > 1) menv[id].flags |= MF_BAND_MEMBER; @@ -677,7 +676,7 @@ int place_monster(mgen_data mg) { if (band_monsters[i] == MONS_PROGRAM_BUG) break; - + band_template.cls = band_monsters[i]; const int band_id = _place_monster_aux( band_template, false ); @@ -705,7 +704,7 @@ static int _place_monster_aux( const mgen_data &mg, return (-1); menv[id].reset(); - + // setup habitat and placement // If the space is occupied, try some neighbouring square instead. if (first_band_member && mgrd(mg.pos) == NON_MONSTER @@ -1099,14 +1098,6 @@ static band_type choose_band( int mon_type, int power, int &band_size ) band_size = 2 + random2(3); break; - case MONS_BIG_KOBOLD: - if (power > 3) - { - band = BAND_KOBOLDS; - band_size = 2 + random2(6); - } - break; - case MONS_ORC_WARLORD: band_size = 5 + random2(5); // warlords have large bands // intentional fall through @@ -1115,6 +1106,19 @@ static band_type choose_band( int mon_type, int power, int &band_size ) band_size += 3 + random2(4); break; + case MONS_ORC_HIGH_PRIEST: + band = BAND_ORC_HIGH_PRIEST; + band_size = 4 + random2(4); + break; + + case MONS_BIG_KOBOLD: + if (power > 3) + { + band = BAND_KOBOLDS; + band_size = 2 + random2(6); + } + break; + case MONS_KILLER_BEE: band = BAND_KILLER_BEES; band_size = 2 + random2(4); @@ -1155,13 +1159,9 @@ static band_type choose_band( int mon_type, int power, int &band_size ) band = BAND_NECROMANCER; band_size = 4 + random2(4); break; - case MONS_ORC_HIGH_PRIEST: - band = BAND_ORC_HIGH_PRIEST; - band_size = 4 + random2(4); - break; case MONS_GNOLL: band = BAND_GNOLLS; - band_size = ((coinflip())? 3 : 2); + band_size = (coinflip() ? 3 : 2); break; case MONS_BUMBLEBEE: band = BAND_BUMBLEBEES; @@ -1386,8 +1386,22 @@ static monster_type _band_member(band_type band, int power) mon_type = MONS_KOBOLD; break; + case BAND_ORCS: + mon_type = MONS_ORC; + break; + + case BAND_ORC_WARRIOR: + mon_type = MONS_ORC; + if (one_chance_in(5)) + mon_type = MONS_ORC_WIZARD; + if (one_chance_in(7)) + mon_type = MONS_ORC_PRIEST; + break; + case BAND_ORC_KNIGHT: case BAND_ORC_HIGH_PRIEST: + // XXX: For Beogh punishment, ogres and trolls look out of place... + // (For normal generation, they're okay, of course.) temp_rand = random2(30); mon_type = ((temp_rand > 17) ? MONS_ORC : // 12 in 30 (temp_rand > 8) ? MONS_ORC_WARRIOR : // 9 in 30 @@ -1476,17 +1490,22 @@ static monster_type _band_member(band_type band, int power) case BAND_PANDEMONIUM_DEMON: if (one_chance_in(7)) + { mon_type = static_cast<monster_type>( random_choose_weighted(50, MONS_LICH, 10, MONS_ANCIENT_LICH, 0)); + } else if (one_chance_in(6)) + { mon_type = static_cast<monster_type>( random_choose_weighted(50, MONS_ABOMINATION_SMALL, 40, MONS_ABOMINATION_LARGE, 10, MONS_TENTACLED_MONSTROSITY, 0)); + } else + { mon_type = summon_any_demon( static_cast<demon_class_type>( @@ -1494,6 +1513,7 @@ static monster_type _band_member(band_type band, int power) 20, DEMON_GREATER, 10, DEMON_RANDOM, 0))); + } break; case BAND_HELLWING: @@ -1510,35 +1530,6 @@ static monster_type _band_member(band_type band, int power) : MONS_DEEP_ELF_PRIEST); // 1 in 11 break; - case BAND_ORCS: - mon_type = MONS_ORC; - break; - - case BAND_ORC_WARRIOR: - mon_type = MONS_ORC; - if (one_chance_in(5)) - mon_type = MONS_ORC_WIZARD; - if (one_chance_in(7)) - mon_type = MONS_ORC_PRIEST; - break; - - case BAND_HELL_KNIGHTS: - mon_type = MONS_HELL_KNIGHT; - if (one_chance_in(4)) - mon_type = MONS_NECROMANCER; - break; - - //case 12 is orc high priest - - case BAND_OGRE_MAGE: - mon_type = MONS_OGRE; - if (one_chance_in(3)) - mon_type = MONS_TWO_HEADED_OGRE; - break; // ogre mage - - // comment does not match value (30, TWO_HEADED_OGRE) prior to - // enum replacement [!!!] 14jan2000 {dlb} - case BAND_DEEP_ELF_KNIGHT: // deep elf knight temp_rand = random2(208); mon_type = @@ -1570,6 +1561,18 @@ static monster_type _band_member(band_type band, int power) : MONS_DEEP_ELF_DEATH_MAGE); // 1 in 16 break; + case BAND_HELL_KNIGHTS: + mon_type = MONS_HELL_KNIGHT; + if (one_chance_in(4)) + mon_type = MONS_NECROMANCER; + break; + + case BAND_OGRE_MAGE: + mon_type = MONS_OGRE; + if (one_chance_in(3)) + mon_type = MONS_TWO_HEADED_OGRE; + break; // ogre mage + case BAND_KOBOLD_DEMONOLOGIST: temp_rand = random2(13); mon_type = ((temp_rand > 4) ? MONS_KOBOLD : // 8 in 13 @@ -1715,10 +1718,8 @@ int mons_place( mgen_data mg ) { int mon_count = 0; for (int il = 0; il < MAX_MONSTERS; il++) - { if (menv[il].type != -1) mon_count++; - } if (mg.cls == WANDERING_MONSTER) { @@ -1764,7 +1765,7 @@ int mons_place( mgen_data mg ) mid = place_monster(mg); if (mid == -1) return (-1); - + monsters *creation = &menv[mid]; // look at special cases: CHARMED, FRIENDLY, HOSTILE, GOD_GIFT @@ -1790,7 +1791,7 @@ int mons_place( mgen_data mg ) behaviour_event(creation, ME_ALERT, MHITYOU); if (creation->type == MONS_RAKSHASA_FAKE && !one_chance_in(3)) - creation->add_ench(ENCH_INVIS); + creation->add_ench(ENCH_INVIS); } return (mid); } @@ -1928,7 +1929,9 @@ int create_monster( mgen_data mg ) && mons_class_can_pass(mg.cls, grd(mg.pos)) && mgrd(mg.pos) == NON_MONSTER && mg.pos != you.pos())) + { mg.pos = find_newmons_square(mg.cls, mg.pos); + } if (in_bounds(mg.pos)) summd = mons_place( mg ); diff --git a/crawl-ref/source/monplace.h b/crawl-ref/source/monplace.h index 13e1320922..982205515b 100644 --- a/crawl-ref/source/monplace.h +++ b/crawl-ref/source/monplace.h @@ -176,7 +176,7 @@ struct mgen_data int monpower = you.your_level, proximity_type prox = PROX_ANYWHERE, level_area_type ltype = you.level_type) - + : cls(mt), base_type(base), behaviour(beh), abjuration_duration(abj), pos(p), foe(mfoe), flags(monflags), number(monnumber), colour(moncolour), power(monpower), @@ -204,13 +204,14 @@ struct mgen_data { return mgen_data(what, BEH_HOSTILE, 0, where); } - + static mgen_data alert_hostile_at(monster_type what, const coord_def &where, - int abj_deg = 0) + int abj_deg = 0, + unsigned flags = 0) { - return mgen_data(what, BEH_HOSTILE, abj_deg, where, MHITYOU); - } + return mgen_data(what, BEH_HOSTILE, abj_deg, where, MHITYOU, flags); + } }; // last updated 13mar2001 {gdl} diff --git a/crawl-ref/source/randart.cc b/crawl-ref/source/randart.cc index d3d40eb0cd..02446ad67d 100644 --- a/crawl-ref/source/randart.cc +++ b/crawl-ref/source/randart.cc @@ -27,6 +27,7 @@ #include "database.h" #include "itemname.h" #include "itemprop.h" +#include "items.h" #include "place.h" #include "player.h" #include "religion.h" @@ -185,9 +186,6 @@ static std::string _replace_name_parts(const std::string name_in, name = replace_all(name, "@player_species@", species_name(static_cast<species_type>(you.species), 1)); - name = replace_all(name, "@race_name@", - species_name(static_cast<species_type>(random2(SP_ELF)),1)); - if (name.find("@branch_name@", 0) != std::string::npos) { std::string place; @@ -1279,7 +1277,7 @@ static bool _pick_db_name( const item_def &item ) } } -static std::string _randart_name(const item_def &item, bool appearance = false) +std::string randart_name(const item_def &item, bool appearance) { ASSERT(is_artefact(item)); @@ -1407,12 +1405,12 @@ std::string get_randart_name( const item_def &item ) // print artefact's real name if (item.props.exists(RANDART_NAME_KEY)) return item.props[RANDART_NAME_KEY].get_string(); - return _randart_name(item, false); + return randart_name(item, false); } // print artefact appearance if (item.props.exists(RANDART_APPEAR_KEY)) return item.props[RANDART_APPEAR_KEY].get_string(); - return _randart_name(item, false); + return randart_name(item, false); } int find_unrandart_index(const item_def& artefact) @@ -1869,11 +1867,11 @@ bool make_item_randart( item_def &item ) // get true artefact name ASSERT(!item.props.exists( RANDART_NAME_KEY )); - item.props[RANDART_NAME_KEY].get_string() = _randart_name(item, false); + item.props[RANDART_NAME_KEY].get_string() = randart_name(item, false); // get artefact appearance ASSERT(!item.props.exists( RANDART_APPEAR_KEY )); - item.props[RANDART_APPEAR_KEY].get_string() = _randart_name(item, true); + item.props[RANDART_APPEAR_KEY].get_string() = randart_name(item, true); return (true); } diff --git a/crawl-ref/source/randart.h b/crawl-ref/source/randart.h index e106647f01..81d640679c 100644 --- a/crawl-ref/source/randart.h +++ b/crawl-ref/source/randart.h @@ -40,6 +40,11 @@ void set_unique_item_status( object_class_type base_type, int type, std::string get_randart_name( const item_def &item ); /* *********************************************************************** + * called from: effects + * *********************************************************************** */ +std::string randart_name( const item_def &item, bool appearance = false ); + +/* *********************************************************************** * called from: describe * *********************************************************************** */ const char *unrandart_descrip( int which_descrip, const item_def &item ); diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc index 8a623f9bcd..21e27707c1 100644 --- a/crawl-ref/source/religion.cc +++ b/crawl-ref/source/religion.cc @@ -890,7 +890,7 @@ static bool _blessing_healing(monsters *mon, bool extra) { // A high-HP monster might get a unique name. if (random2(100) <= mon->max_hit_points) - give_unique_monster_name(mon); + give_monster_proper_name(mon); return true; } return false; @@ -1058,7 +1058,7 @@ static bool _beogh_blessing_reinforcement() // For high level orcs, there's a chance of being named. if (high_level && one_chance_in(5)) - give_unique_monster_name(mon); + give_monster_proper_name(mon); success = true; } @@ -1081,7 +1081,7 @@ static bool _beogh_blessing_priesthood(monsters* mon) // function normally used when going up an experience level. // This is a hack, but there seems to be no better way for now. mon->upgrade_type(priest_type, true, true); - give_unique_monster_name(mon); + give_monster_proper_name(mon); return true; } @@ -1222,7 +1222,7 @@ bool bless_follower(monsters *follower, if (affected) { result = "extra attack power"; - give_unique_monster_name(follower); + give_monster_proper_name(follower); goto blessing_done; } else if (force) @@ -1241,7 +1241,7 @@ bool bless_follower(monsters *follower, if (affected) { result = "extra defence"; - give_unique_monster_name(follower); + give_monster_proper_name(follower); goto blessing_done; } else if (force) @@ -3321,7 +3321,7 @@ static bool _beogh_retribution() const god_type god = GOD_BEOGH; // orcish theme - switch (random2(8)) + switch (6/*random2(8)*/) { case 0: // smiting (25%) case 1: @@ -3406,7 +3406,7 @@ static bool _beogh_retribution() default: // send orcs after you (3/8 to 5/8) { const int points = you.experience_level + 3 - + random2(you.experience_level * 3); + + random2(you.experience_level * 3); monster_type punisher; // "natural" bands @@ -3421,13 +3421,15 @@ static bool _beogh_retribution() else punisher = MONS_ORC; - bool success = - (create_monster( - mgen_data::alert_hostile_at( - punisher, - you.pos())) != -1); + int mons = create_monster( + mgen_data::alert_hostile_at( punisher, you.pos(), 0, + MG_PERMIT_BANDS) ); - simple_god_message(success ? + // sometimes name band leader + if (mons != -1 && one_chance_in(3)) + give_monster_proper_name(&menv[mons]); + + simple_god_message(mons != -1 ? " sends forth an army of orcs." : " is still gathering forces against you.", god); |