summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-05-06 21:06:34 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-05-06 21:06:34 +0000
commitcb3497134b22bd2a2d413fdbdb41324e8e7070d7 (patch)
treecb9f2059879e48d60f053136c608496c8c30baf7 /crawl-ref/source
parent5d559d519c41f7f6d621afb15f567c44a4f6311d (diff)
downloadcrawl-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
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/dat/database/monname.txt102
-rw-r--r--crawl-ref/source/dat/database/randname.txt6
-rw-r--r--crawl-ref/source/effects.cc34
-rw-r--r--crawl-ref/source/mon-util.cc9
-rw-r--r--crawl-ref/source/mon-util.h2
-rw-r--r--crawl-ref/source/monplace.cc105
-rw-r--r--crawl-ref/source/monplace.h11
-rw-r--r--crawl-ref/source/randart.cc14
-rw-r--r--crawl-ref/source/randart.h5
-rw-r--r--crawl-ref/source/religion.cc28
10 files changed, 199 insertions, 117 deletions
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);