summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/makeitem.cc
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-04-23 16:17:16 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-04-23 16:17:16 +0000
commit130e8eabe520b29fe19a12748a9b17c287054647 (patch)
tree67e553e04d39e871a16a7bfc80e6e7317d17ba63 /crawl-ref/source/makeitem.cc
parent678a64c76a963f9d88b6c67edf3b91296b53b59e (diff)
downloadcrawl-ref-130e8eabe520b29fe19a12748a9b17c287054647.tar.gz
crawl-ref-130e8eabe520b29fe19a12748a9b17c287054647.zip
Update tiles help -- no formatting worth speaking of, but at least the
information should be correct. Remove (hopefully) unnecessary ASSERT that was causing problems with Tiles. Clean up makeitem.cc. (Spacing changes, and renaming static methods.) git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4546 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/makeitem.cc')
-rw-r--r--crawl-ref/source/makeitem.cc660
1 files changed, 363 insertions, 297 deletions
diff --git a/crawl-ref/source/makeitem.cc b/crawl-ref/source/makeitem.cc
index 5fda33f461..0ccdd227c6 100644
--- a/crawl-ref/source/makeitem.cc
+++ b/crawl-ref/source/makeitem.cc
@@ -31,19 +31,19 @@
void item_set_appearance(item_def &item);
-static bool got_curare_roll(const int item_level)
+static bool _got_curare_roll(const int item_level)
{
- return one_chance_in(item_level > 27? 6 :
- item_level < 2 ? 15 :
+ return one_chance_in(item_level > 27 ? 6 :
+ item_level < 2 ? 15 :
(364 - 7 * item_level) / 25);
}
-static bool got_distortion_roll(const int item_level)
+static bool _got_distortion_roll(const int item_level)
{
return (one_chance_in(25));
}
-static int exciting_colour()
+static int _exciting_colour()
{
switch(random2(4))
{
@@ -56,7 +56,7 @@ static int exciting_colour()
}
-static int newwave_weapon_colour(const item_def &item)
+static int _newwave_weapon_colour(const item_def &item)
{
int item_colour = BLACK;
// fixed artefacts get predefined colours
@@ -68,7 +68,7 @@ static int newwave_weapon_colour(const item_def &item)
const bool heav_runed = itname.find(" heavily ") != std::string::npos;
if ( is_random_artefact(item) && (!item_runed || heav_runed) )
- return exciting_colour();
+ return _exciting_colour();
if (is_range_weapon( item ))
{
@@ -123,7 +123,7 @@ static int newwave_weapon_colour(const item_def &item)
return (item_colour);
}
-static int classic_weapon_colour(const item_def &item)
+static int _classic_weapon_colour(const item_def &item)
{
int item_colour = BLACK;
@@ -158,13 +158,13 @@ static int classic_weapon_colour(const item_def &item)
return (item_colour);
}
-static int weapon_colour(const item_def &item)
+static int _weapon_colour(const item_def &item)
{
- return (Options.classic_item_colours?
- classic_weapon_colour(item) : newwave_weapon_colour(item));
+ return (Options.classic_item_colours ? _classic_weapon_colour(item)
+ : _newwave_weapon_colour(item));
}
-static int newwave_missile_colour(const item_def &item)
+static int _newwave_missile_colour(const item_def &item)
{
int item_colour = BLACK;
switch (item.sub_type)
@@ -202,7 +202,7 @@ static int newwave_missile_colour(const item_def &item)
return (item_colour);
}
-static int classic_missile_colour(const item_def &item)
+static int _classic_missile_colour(const item_def &item)
{
int item_colour = BLACK;
switch (item.sub_type)
@@ -230,13 +230,13 @@ static int classic_missile_colour(const item_def &item)
return (item_colour);
}
-static int missile_colour(const item_def &item)
+static int _missile_colour(const item_def &item)
{
- return (Options.classic_item_colours?
- classic_missile_colour(item) : newwave_missile_colour(item));
+ return (Options.classic_item_colours ? _classic_missile_colour(item)
+ : _newwave_missile_colour(item));
}
-static int newwave_armour_colour(const item_def &item)
+static int _newwave_armour_colour(const item_def &item)
{
int item_colour = BLACK;
std::string itname = item.name(DESC_PLAIN);
@@ -246,7 +246,7 @@ static int newwave_armour_colour(const item_def &item)
const bool heav_runed = itname.find(" heavily ") != std::string::npos;
if ( is_random_artefact(item) && (!item_runed || heav_runed) )
- return exciting_colour();
+ return _exciting_colour();
switch (item.sub_type)
{
@@ -295,7 +295,7 @@ static int newwave_armour_colour(const item_def &item)
return (item_colour);
}
-static int classic_armour_colour(const item_def &item)
+static int _classic_armour_colour(const item_def &item)
{
int item_colour = BLACK;
switch (item.sub_type)
@@ -331,10 +331,10 @@ static int classic_armour_colour(const item_def &item)
return (item_colour);
}
-static int armour_colour(const item_def &item)
+static int _armour_colour(const item_def &item)
{
- return (Options.classic_item_colours?
- classic_armour_colour(item) : newwave_armour_colour(item));
+ return (Options.classic_item_colours ? _classic_armour_colour(item)
+ : _newwave_armour_colour(item));
}
void item_colour( item_def &item )
@@ -350,7 +350,7 @@ void item_colour( item_def &item )
if (is_fixed_artefact( item ))
{
- switch (item.special) // was: - 180, but that is *wrong* {dlb}
+ switch (item.special)
{
case SPWPN_SINGING_SWORD:
case SPWPN_SCEPTRE_OF_TORMENT:
@@ -391,16 +391,17 @@ void item_colour( item_def &item )
if (is_demonic( item ))
item.colour = random_uncommon_colour();
else
- item.colour = weapon_colour(item);
+ item.colour = _weapon_colour(item);
if (is_random_artefact( item ) && one_chance_in(5)
- && Options.classic_item_colours)
+ && Options.classic_item_colours)
+ {
item.colour = random_colour();
-
+ }
break;
case OBJ_MISSILES:
- item.colour = missile_colour(item);
+ item.colour = _missile_colour(item);
break;
case OBJ_ARMOUR:
@@ -442,7 +443,7 @@ void item_colour( item_def &item )
item.colour = mons_class_colour( MONS_SWAMP_DRAGON );
break;
default:
- item.colour = armour_colour(item);
+ item.colour = _armour_colour(item);
break;
}
@@ -478,16 +479,14 @@ void item_colour( item_def &item )
case 6: //"silver wand"
item.colour = WHITE;
break;
- case 11: //"plastic wand"
+ case 11: //"plastic wand"
item.colour = random_colour();
break;
}
- if (item.special / 12 == 9)
+ if (item.special / 12 == 9) // "blackened foo wand"
item.colour = DARKGREY;
- // rare wands (eg disintegration - these will be very rare):
- // maybe only 1 thing, like: crystal, shining, etc.
break;
case OBJ_POTIONS:
@@ -597,7 +596,7 @@ void item_colour( item_def &item )
break;
}
- item.colour = YELLOW;
+ item.colour = YELLOW;
item.special = you.item_description[IDESC_RINGS][item.sub_type];
switchnum = item.special % 13;
@@ -847,7 +846,7 @@ void item_colour( item_def &item )
}
} // end item_colour()
-static weapon_type determine_weapon_subtype(int item_level)
+static weapon_type _determine_weapon_subtype(int item_level)
{
weapon_type rc = WPN_UNKNOWN;
@@ -866,8 +865,10 @@ static weapon_type determine_weapon_subtype(int item_level)
};
if (item_level > 6 && random2(100) < (10 + item_level)
- && one_chance_in(30))
+ && one_chance_in(30))
+ {
rc = RANDOM_ELEMENT(rare_subtypes);
+ }
else if (random2(20) < 20 - item_level)
rc = RANDOM_ELEMENT(common_subtypes);
else
@@ -888,8 +889,8 @@ static weapon_type determine_weapon_subtype(int item_level)
}
// Return whether we made an artefact.
-static bool try_make_weapon_artefact(item_def& item, int force_type,
- int item_level)
+static bool _try_make_weapon_artefact(item_def& item, int force_type,
+ int item_level)
{
if (item.sub_type != WPN_CLUB && item_level > 2
&& random2(4000) <= 100 + (item_level * 3))
@@ -956,8 +957,8 @@ static bool try_make_weapon_artefact(item_def& item, int force_type,
return false;
}
-static item_status_flag_type determine_weapon_race(const item_def& item,
- int item_race)
+static item_status_flag_type _determine_weapon_race(const item_def& item,
+ int item_race)
{
item_status_flag_type rc = ISFLAG_NO_RACE;
switch (item_race)
@@ -977,6 +978,7 @@ static item_status_flag_type determine_weapon_race(const item_def& item,
case MAKE_ITEM_RANDOM_RACE:
if (coinflip())
break;
+
switch (item.sub_type)
{
case WPN_CLUB:
@@ -1142,7 +1144,7 @@ static item_status_flag_type determine_weapon_race(const item_def& item,
return rc;
}
-static void weapon_add_racial_modifiers(item_def& item)
+static void _weapon_add_racial_modifiers(item_def& item)
{
switch (get_equip_race( item ))
{
@@ -1166,7 +1168,7 @@ static void weapon_add_racial_modifiers(item_def& item)
}
}
-static brand_type determine_weapon_brand(const item_def& item, int item_level)
+static brand_type _determine_weapon_brand(const item_def& item, int item_level)
{
// Forced ego.
if (item.special != 0)
@@ -1207,7 +1209,7 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
if (one_chance_in(25))
rc = SPWPN_PAIN;
- if (got_distortion_roll(item_level))
+ if (_got_distortion_roll(item_level))
rc = SPWPN_DISTORTION;
if (one_chance_in(3) && (rc == SPWPN_NORMAL || one_chance_in(5)))
@@ -1237,7 +1239,7 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
case WPN_SHORT_SWORD:
case WPN_SABRE:
- if (got_distortion_roll(item_level))
+ if (_got_distortion_roll(item_level))
rc = SPWPN_DISTORTION;
if (one_chance_in(10))
@@ -1283,7 +1285,7 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
if (one_chance_in(10))
rc = SPWPN_VAMPIRICISM;
- if (got_distortion_roll(item_level))
+ if (_got_distortion_roll(item_level))
rc = SPWPN_DISTORTION;
if (one_chance_in(5))
@@ -1327,7 +1329,7 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
one_chance_in(10))
rc = SPWPN_RETURNING;
- if (got_distortion_roll(item_level))
+ if (_got_distortion_roll(item_level))
rc = SPWPN_DISTORTION;
if (one_chance_in(3) && (rc == SPWPN_NORMAL || one_chance_in(5)))
@@ -1347,7 +1349,7 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
break;
case WPN_WHIP:
- if (got_distortion_roll(item_level))
+ if (_got_distortion_roll(item_level))
rc = SPWPN_DISTORTION;
if (one_chance_in(6))
@@ -1390,7 +1392,7 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
if (item.sub_type == WPN_SPEAR && one_chance_in(6))
rc = SPWPN_RETURNING;
- if (got_distortion_roll(item_level))
+ if (_got_distortion_roll(item_level))
rc = SPWPN_DISTORTION;
if (one_chance_in(5) && (rc == SPWPN_NORMAL || one_chance_in(6)))
@@ -1439,7 +1441,7 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
if (one_chance_in(30))
rc = SPWPN_PAIN;
- if (got_distortion_roll(item_level))
+ if (_got_distortion_roll(item_level))
rc = SPWPN_DISTORTION;
if (one_chance_in(5))
@@ -1457,7 +1459,7 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
rc = SPWPN_SPEED;
else if (one_chance_in(12))
rc = SPWPN_PAIN;
- else if (got_distortion_roll(item_level))
+ else if (_got_distortion_roll(item_level))
rc = SPWPN_DISTORTION;
else if (one_chance_in(9))
rc = SPWPN_PROTECTION;
@@ -1517,19 +1519,22 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
return rc;
}
-static void generate_weapon_item(item_def& item, bool allow_uniques,
- int force_type, int item_level,
- int item_race)
+static void _generate_weapon_item(item_def& item, bool allow_uniques,
+ int force_type, int item_level,
+ int item_race)
{
// Determine weapon type.
if ( force_type != OBJ_RANDOM )
item.sub_type = force_type;
else
- item.sub_type = determine_weapon_subtype(item_level);
+ item.sub_type = _determine_weapon_subtype(item_level);
// If we make the unique roll, no further generation necessary.
- if (allow_uniques && try_make_weapon_artefact(item, force_type, item_level))
+ if (allow_uniques
+ && _try_make_weapon_artefact(item, force_type, item_level))
+ {
return;
+ }
ASSERT(!is_fixed_artefact(item) && !is_random_artefact(item));
@@ -1552,7 +1557,7 @@ static void generate_weapon_item(item_def& item, bool allow_uniques,
item.plus = 0;
item.plus2 = 0;
- set_equip_race(item, determine_weapon_race(item, item_race));
+ set_equip_race(item, _determine_weapon_race(item, item_race));
// if we allow acquirement-type items to be orcish, then
// there's a good chance that we'll just strip them of
@@ -1560,10 +1565,10 @@ static void generate_weapon_item(item_def& item, bool allow_uniques,
if (force_good && !forced_ego && get_equip_race( item ) == ISFLAG_ORCISH)
set_equip_race( item, ISFLAG_NO_RACE );
- weapon_add_racial_modifiers(item);
+ _weapon_add_racial_modifiers(item);
if ((force_good || is_demonic(item) || forced_ego
- || random2(200) <= 50 + item_level)
+ || random2(200) <= 50 + item_level)
// nobody would bother enchanting a mundane club
&& item.sub_type != WPN_CLUB
&& item.sub_type != WPN_GIANT_CLUB
@@ -1571,8 +1576,10 @@ static void generate_weapon_item(item_def& item, bool allow_uniques,
{
// Make a better item (possibly ego)
if (!no_brand)
+ {
set_item_ego_type(item, OBJ_WEAPONS,
- determine_weapon_brand(item, item_level));
+ _determine_weapon_brand(item, item_level));
+ }
// if acquired item still not ego... enchant it up a bit.
if (force_good && item.special == SPWPN_NORMAL)
@@ -1628,8 +1635,8 @@ static void generate_weapon_item(item_def& item, bool allow_uniques,
// All done!
}
-static item_status_flag_type determine_missile_race(const item_def& item,
- int item_race)
+static item_status_flag_type _determine_missile_race(const item_def& item,
+ int item_race)
{
item_status_flag_type rc = ISFLAG_NO_RACE;
switch (item_race)
@@ -1649,8 +1656,8 @@ static item_status_flag_type determine_missile_race(const item_def& item,
case MAKE_ITEM_RANDOM_RACE:
// Elves don't make bolts, sling bullets, or throwing nets
if ((item.sub_type == MI_ARROW
- || item.sub_type == MI_DART
- || item.sub_type == MI_JAVELIN)
+ || item.sub_type == MI_DART
+ || item.sub_type == MI_JAVELIN)
&& one_chance_in(4))
{
rc = ISFLAG_ELVEN;
@@ -1658,9 +1665,9 @@ static item_status_flag_type determine_missile_race(const item_def& item,
// Orcs don't make sling bullets or throwing nets
if ((item.sub_type == MI_ARROW
- || item.sub_type == MI_BOLT
- || item.sub_type == MI_DART
- || item.sub_type == MI_JAVELIN)
+ || item.sub_type == MI_BOLT
+ || item.sub_type == MI_DART
+ || item.sub_type == MI_JAVELIN)
&& one_chance_in(4))
{
rc = ISFLAG_ORCISH;
@@ -1669,7 +1676,7 @@ static item_status_flag_type determine_missile_race(const item_def& item,
// Dwarves don't make arrows, sling bullets, javelins, or
// throwing nets
if ((item.sub_type == MI_DART
- || item.sub_type == MI_BOLT)
+ || item.sub_type == MI_BOLT)
&& one_chance_in(6))
{
rc = ISFLAG_DWARVEN;
@@ -1688,8 +1695,8 @@ static item_status_flag_type determine_missile_race(const item_def& item,
return rc;
}
-static special_missile_type determine_missile_brand(const item_def& item,
- int item_level)
+static special_missile_type _determine_missile_brand(const item_def& item,
+ int item_level)
{
// Forced ego.
if (item.special != 0)
@@ -1706,7 +1713,7 @@ static special_missile_type determine_missile_brand(const item_def& item,
// All needles are either poison or curare.
if (item.sub_type == MI_NEEDLE)
- rc = got_curare_roll(item_level) ? SPMSL_CURARE : SPMSL_POISONED;
+ rc = _got_curare_roll(item_level) ? SPMSL_CURARE : SPMSL_POISONED;
else
{
const int temp_rand =
@@ -1744,8 +1751,8 @@ static special_missile_type determine_missile_brand(const item_def& item,
return rc;
}
-static void generate_missile_item(item_def& item, int force_type,
- int item_level, int item_race)
+static void _generate_missile_item(item_def& item, int force_type,
+ int item_level, int item_race)
{
const bool no_brand = item.special == SPMSL_FORBID_BRAND;
if (no_brand)
@@ -1756,6 +1763,7 @@ static void generate_missile_item(item_def& item, int force_type,
if (force_type != OBJ_RANDOM)
item.sub_type = force_type;
else
+ {
item.sub_type =
random_choose_weighted(30, MI_STONE,
20, MI_DART,
@@ -1766,6 +1774,7 @@ static void generate_missile_item(item_def& item, int force_type,
2, MI_JAVELIN,
1, MI_THROWING_NET,
0);
+ }
// no fancy rocks -- break out before we get to racial/special stuff
if (item.sub_type == MI_LARGE_ROCK)
@@ -1785,15 +1794,17 @@ static void generate_missile_item(item_def& item, int force_type,
}
- set_equip_race(item, determine_missile_race(item, item_race));
+ set_equip_race(item, _determine_missile_race(item, item_race));
if (!no_brand)
+ {
set_item_ego_type( item, OBJ_MISSILES,
- determine_missile_brand(item, item_level) );
+ _determine_missile_brand(item, item_level) );
+ }
// reduced quantity if special
- if (item.sub_type == MI_JAVELIN ||
- get_ammo_brand( item ) == SPMSL_CURARE ||
- get_ammo_brand( item ) == SPMSL_RETURNING)
+ if (item.sub_type == MI_JAVELIN
+ || get_ammo_brand( item ) == SPMSL_CURARE
+ || get_ammo_brand( item ) == SPMSL_RETURNING)
{
item.quantity = random_range(2, 8);
}
@@ -1806,23 +1817,23 @@ static void generate_missile_item(item_def& item, int force_type,
item.plus += random2(5);
// elven arrows and dwarven bolts are quality items
- if ((get_equip_race(item) == ISFLAG_ELVEN && item.sub_type == MI_ARROW) ||
- (get_equip_race(item) == ISFLAG_DWARVEN && item.sub_type == MI_BOLT))
+ if (get_equip_race(item) == ISFLAG_ELVEN && item.sub_type == MI_ARROW
+ || get_equip_race(item) == ISFLAG_DWARVEN && item.sub_type == MI_BOLT)
{
item.plus += random2(3);
}
}
-static bool try_make_armour_artefact(item_def& item, int force_type,
- int item_level)
+static bool _try_make_armour_artefact(item_def& item, int force_type,
+ int item_level)
{
if ( item_level > 2 && random2(4000) <= (100 + item_level * 3))
{
// Make a randart or unrandart.
// 1 in 50 randarts are unrandarts.
- if ((you.level_type != LEVEL_ABYSS
- && you.level_type != LEVEL_PANDEMONIUM)
+ if (you.level_type != LEVEL_ABYSS
+ && you.level_type != LEVEL_PANDEMONIUM
&& one_chance_in(50))
{
// The old generation code did not respect force_type here.
@@ -1868,8 +1879,8 @@ static bool try_make_armour_artefact(item_def& item, int force_type,
return false;
}
-static item_status_flag_type determine_armour_race(const item_def& item,
- int item_race)
+static item_status_flag_type _determine_armour_race(const item_def& item,
+ int item_race)
{
item_status_flag_type rc = ISFLAG_NO_RACE;
switch (item_race)
@@ -1963,8 +1974,8 @@ static item_status_flag_type determine_armour_race(const item_def& item,
return rc;
}
-static special_armour_type determine_armour_ego(const item_def& item,
- int force_type, int item_level)
+static special_armour_type _determine_armour_ego(const item_def& item,
+ int force_type, int item_level)
{
if (item.special != 0)
return static_cast<special_armour_type>(item.special);
@@ -1989,18 +2000,22 @@ static special_armour_type determine_armour_ego(const item_def& item,
{
if (get_equip_race(item) == ISFLAG_DWARVEN)
break;
+
const special_armour_type cloak_egos[] = {
SPARM_POISON_RESISTANCE, SPARM_DARKNESS,
SPARM_MAGIC_RESISTANCE, SPARM_PRESERVATION
};
+
rc = RANDOM_ELEMENT(cloak_egos);
break;
}
case ARM_WIZARD_HAT:
if ( coinflip() )
+ {
rc = (one_chance_in(3) ?
SPARM_MAGIC_RESISTANCE : SPARM_INTELLIGENCE);
+ }
break;
case ARM_HELMET:
@@ -2067,18 +2082,21 @@ static special_armour_type determine_armour_ego(const item_def& item,
}
-static void generate_armour_item(item_def& item, bool allow_uniques,
- int force_type, int item_level, int item_race)
+static void _generate_armour_item(item_def& item, bool allow_uniques,
+ int force_type, int item_level, int item_race)
{
if (force_type != OBJ_RANDOM)
item.sub_type = force_type;
else
item.sub_type = get_random_armour_type(item_level);
- if (allow_uniques && try_make_armour_artefact(item, force_type, item_level))
+ if (allow_uniques
+ && _try_make_armour_artefact(item, force_type, item_level))
+ {
return;
+ }
- if ( is_helmet(item) && one_chance_in(3) )
+ if (is_helmet(item) && one_chance_in(3))
set_helmet_random_desc(item);
if (item_race == MAKE_ITEM_RANDOM_RACE && item.sub_type == ARM_BOOTS)
@@ -2089,7 +2107,7 @@ static void generate_armour_item(item_def& item, bool allow_uniques,
item.sub_type = ARM_CENTAUR_BARDING;
}
else
- set_equip_race(item, determine_armour_race(item, item_race));
+ set_equip_race(item, _determine_armour_race(item, item_race));
// Dwarven armour is high-quality.
if ( get_equip_race(item) == ISFLAG_DWARVEN && coinflip() )
@@ -2111,15 +2129,17 @@ static void generate_armour_item(item_def& item, bool allow_uniques,
if (item.sub_type <= ARM_PLATE_MAIL && 20 + item_level >= random2(300))
item.plus += random2(3);
- if (!no_ego && (30 + item_level >= random2(350))
- && (force_good || forced_ego
- || (get_equip_race(item) != ISFLAG_ORCISH
- || (item.sub_type <= ARM_PLATE_MAIL && coinflip()))))
+ if (!no_ego
+ && (30 + item_level >= random2(350))
+ && (force_good
+ || forced_ego
+ || get_equip_race(item) != ISFLAG_ORCISH
+ || item.sub_type <= ARM_PLATE_MAIL && coinflip()))
{
// ...an ego item, in fact.
set_item_ego_type(item, OBJ_ARMOUR,
- determine_armour_ego(item, force_type,
- item_level));
+ _determine_armour_ego(item, force_type,
+ item_level));
if ( get_armour_ego_type(item) == SPARM_PONDEROUSNESS )
item.plus += 3 + random2(4);
@@ -2152,7 +2172,7 @@ static void generate_armour_item(item_def& item, bool allow_uniques,
}
}
-static monster_type choose_random_monster_corpse()
+static monster_type _choose_random_monster_corpse()
{
for (int count = 0; count < 1000; ++count)
{
@@ -2163,7 +2183,7 @@ static monster_type choose_random_monster_corpse()
return MONS_RAT; // if you can't find anything else...
}
-static int random_wand_subtype()
+static int _random_wand_subtype()
{
int rc = random2( NUM_WANDS );
@@ -2174,15 +2194,15 @@ static int random_wand_subtype()
// invis, hasting, healing (1.11% each)
// fireball, teleportaion (3.74% each)
// others (6.37% each)
- if ((rc == WAND_INVISIBILITY || rc == WAND_HASTING || rc == WAND_HEALING)
- || ((rc == WAND_FIREBALL || rc == WAND_TELEPORTATION) && coinflip()))
+ if (rc == WAND_INVISIBILITY || rc == WAND_HASTING || rc == WAND_HEALING
+ || (rc == WAND_FIREBALL || rc == WAND_TELEPORTATION) && coinflip())
{
rc = random2( NUM_WANDS );
}
return rc;
}
-static int wand_max_charges(int subtype)
+static int _wand_max_charges(int subtype)
{
switch (subtype)
{
@@ -2198,16 +2218,16 @@ static int wand_max_charges(int subtype)
}
}
-static void generate_wand_item(item_def& item, int force_type)
+static void _generate_wand_item(item_def& item, int force_type)
{
// determine sub_type
if (force_type != OBJ_RANDOM)
item.sub_type = force_type;
else
- item.sub_type = random_wand_subtype();
+ item.sub_type = _random_wand_subtype();
// generate charges randomly...
- item.plus = random2avg(wand_max_charges(item.sub_type), 3);
+ item.plus = random2avg(_wand_max_charges(item.sub_type), 3);
// ...but 0 charges is silly
if ( item.plus == 0 )
@@ -2221,7 +2241,7 @@ static void generate_wand_item(item_def& item, int force_type)
item.plus2 = 0;
}
-static void generate_food_item(item_def& item, int force_quant, int force_type)
+static void _generate_food_item(item_def& item, int force_quant, int force_type)
{
// determine sub_type:
if (force_type == OBJ_RANDOM)
@@ -2256,7 +2276,7 @@ static void generate_food_item(item_def& item, int force_quant, int force_type)
if (item.sub_type == FOOD_CHUNK)
{
// set chunk flavour (default to common dungeon rat steaks):
- item.plus = choose_random_monster_corpse();
+ item.plus = _choose_random_monster_corpse();
// set duration
item.special = (10 + random2(11)) * 10;
}
@@ -2284,7 +2304,8 @@ static void generate_food_item(item_def& item, int force_quant, int force_type)
}
}
-static void generate_potion_item(item_def& item, int force_type, int item_level)
+static void _generate_potion_item(item_def& item, int force_type,
+ int item_level)
{
item.quantity = 1;
@@ -2331,9 +2352,9 @@ static void generate_potion_item(item_def& item, int force_type, int item_level)
while ( stype == POT_POISON && item_level < 1
|| stype == POT_STRONG_POISON && item_level < 11 );
- if ( stype == POT_GAIN_STRENGTH || stype == POT_GAIN_DEXTERITY ||
- stype == POT_GAIN_INTELLIGENCE || stype == POT_EXPERIENCE ||
- stype == POT_MAGIC || stype == POT_RESTORE_ABILITIES )
+ if ( stype == POT_GAIN_STRENGTH || stype == POT_GAIN_DEXTERITY
+ || stype == POT_GAIN_INTELLIGENCE || stype == POT_EXPERIENCE
+ || stype == POT_MAGIC || stype == POT_RESTORE_ABILITIES )
{
item.quantity = 1;
}
@@ -2344,8 +2365,8 @@ static void generate_potion_item(item_def& item, int force_type, int item_level)
init_stack_blood_potions(item);
}
-static void generate_scroll_item(item_def& item, int force_type,
- int item_level)
+static void _generate_scroll_item(item_def& item, int force_type,
+ int item_level)
{
// determine sub_type:
if (force_type != OBJ_RANDOM)
@@ -2380,35 +2401,37 @@ static void generate_scroll_item(item_def& item, int force_type,
// yes they are a hellish mess of tri-ops and long lines,
// this formating is somewhat better -- bwr
(temp_rand > 89) ?
- ((item_level < 4) ? SCR_TELEPORTATION
- : SCR_IMMOLATION) : // 3.21%
+ ((item_level < 4) ? SCR_TELEPORTATION
+ : SCR_IMMOLATION) : // 3.21%
(temp_rand > 74) ?
- ((depth_mod < 4) ? SCR_TELEPORTATION
- : SCR_ACQUIREMENT) : // 1.60%
+ ((depth_mod < 4) ? SCR_TELEPORTATION
+ : SCR_ACQUIREMENT) : // 1.60%
(temp_rand > 59) ?
- ((depth_mod < 4) ? SCR_DETECT_CURSE
- : SCR_SUMMONING) : // 1.60%
+ ((depth_mod < 4) ? SCR_DETECT_CURSE
+ : SCR_SUMMONING) : // 1.60%
(temp_rand > 44) ?
- ((depth_mod < 4) ? SCR_TELEPORTATION // 1.60%
- : SCR_ENCHANT_WEAPON_III) :
+ ((depth_mod < 4) ? SCR_TELEPORTATION // 1.60%
+ : SCR_ENCHANT_WEAPON_III) :
(temp_rand > 29) ?
- ((depth_mod < 7) ? SCR_DETECT_CURSE
- : SCR_TORMENT) : // 1.60%
+ ((depth_mod < 7) ? SCR_DETECT_CURSE
+ : SCR_TORMENT) : // 1.60%
(temp_rand > 14) ?
- ((depth_mod < 7) ? SCR_DETECT_CURSE
- : SCR_HOLY_WORD) // 1.60%
+ ((depth_mod < 7) ? SCR_DETECT_CURSE
+ : SCR_HOLY_WORD) : // 1.60%
// default:
- : ((depth_mod < 7) ? SCR_TELEPORTATION // 1.60%
- : SCR_VORPALISE_WEAPON));
+ ((depth_mod < 7) ? SCR_TELEPORTATION // 1.60%
+ : SCR_VORPALISE_WEAPON));
}
// determine quantity
- if ( item.sub_type == SCR_VORPALISE_WEAPON ||
- item.sub_type == SCR_ENCHANT_WEAPON_III ||
- item.sub_type == SCR_ACQUIREMENT ||
- item.sub_type == SCR_TORMENT ||
- item.sub_type == SCR_HOLY_WORD )
+ if ( item.sub_type == SCR_VORPALISE_WEAPON
+ || item.sub_type == SCR_ENCHANT_WEAPON_III
+ || item.sub_type == SCR_ACQUIREMENT
+ || item.sub_type == SCR_TORMENT
+ || item.sub_type == SCR_HOLY_WORD )
+ {
item.quantity = 1;
+ }
else
{
const int tmp = random2(48);
@@ -2423,8 +2446,8 @@ static void generate_scroll_item(item_def& item, int force_type,
item.plus = 0;
}
-static void generate_book_item(item_def& item, int force_type,
- int item_level)
+static void _generate_book_item(item_def& item, int force_type,
+ int item_level)
{
// determine special (description)
item.special = random2(5);
@@ -2440,23 +2463,23 @@ static void generate_book_item(item_def& item, int force_type,
{
item.sub_type = random2(NUM_BOOKS);
- if (item.sub_type != BOOK_DESTRUCTION &&
- item.sub_type != BOOK_MANUAL &&
- book_rarity(item.sub_type) != 100 &&
- one_chance_in(10))
+ if (item.sub_type != BOOK_DESTRUCTION
+ && item.sub_type != BOOK_MANUAL
+ && book_rarity(item.sub_type) != 100
+ && one_chance_in(10))
{
item.sub_type = coinflip() ? BOOK_WIZARDRY : BOOK_POWER;
}
- if (!one_chance_in(100) &&
- random2(item_level+1) + 1 < book_rarity(item.sub_type))
+ if (!one_chance_in(100)
+ && random2(item_level+1) + 1 < book_rarity(item.sub_type))
{
item.sub_type = BOOK_DESTRUCTION; // continue trying
}
}
- while (item.sub_type == BOOK_DESTRUCTION ||
- item.sub_type == BOOK_MANUAL ||
- book_rarity(item.sub_type) == 100);
+ while (item.sub_type == BOOK_DESTRUCTION
+ || item.sub_type == BOOK_MANUAL
+ || book_rarity(item.sub_type) == 100);
// tome of destruction: rare!
if ( item_level > 10 && random2(7000) <= item_level + 20 )
@@ -2482,7 +2505,7 @@ static void generate_book_item(item_def& item, int force_type,
}
}
-static void generate_staff_item(item_def& item, int force_type)
+static void _generate_staff_item(item_def& item, int force_type)
{
if (force_type != OBJ_RANDOM)
item.sub_type = force_type;
@@ -2498,7 +2521,8 @@ static void generate_staff_item(item_def& item, int force_type)
// staves of energy/channeling are 25% less common, wizardry/power
// are more common
if ((item.sub_type == STAFF_ENERGY
- || item.sub_type == STAFF_CHANNELING) && one_chance_in(4))
+ || item.sub_type == STAFF_CHANNELING)
+ && one_chance_in(4))
{
item.sub_type = coinflip() ? STAFF_WIZARDRY : STAFF_POWER;
}
@@ -2508,8 +2532,8 @@ static void generate_staff_item(item_def& item, int force_type)
init_rod_mp( item );
}
-static bool try_make_jewellery_unrandart(item_def& item, int force_type,
- int item_level)
+static bool _try_make_jewellery_unrandart(item_def& item, int force_type,
+ int item_level)
{
bool rc = false;
@@ -2531,7 +2555,7 @@ static bool try_make_jewellery_unrandart(item_def& item, int force_type,
return rc;
}
-static int determine_ring_plus(int subtype)
+static int _determine_ring_plus(int subtype)
{
int rc = 0;
@@ -2560,26 +2584,30 @@ static int determine_ring_plus(int subtype)
return rc;
}
-static void generate_jewellery_item(item_def& item, bool allow_uniques,
- int force_type, int item_level)
+static void _generate_jewellery_item(item_def& item, bool allow_uniques,
+ int force_type, int item_level)
{
- if (allow_uniques &&
- try_make_jewellery_unrandart(item, force_type, item_level))
+ if (allow_uniques
+ && _try_make_jewellery_unrandart(item, force_type, item_level))
+ {
return;
+ }
// Determine subtype.
// Note: removed double probability reduction for some subtypes
if (force_type != OBJ_RANDOM)
item.sub_type = force_type;
else
- item.sub_type = (one_chance_in(4) ? get_random_amulet_type() :
- get_random_ring_type());
+ {
+ item.sub_type = (one_chance_in(4) ? get_random_amulet_type()
+ : get_random_ring_type());
+ }
// everything begins as uncursed, unenchanted jewellery {dlb}:
item.plus = 0;
item.plus2 = 0;
- item.plus = determine_ring_plus(item.sub_type);
+ item.plus = _determine_ring_plus(item.sub_type);
if ( item.plus < 0 )
do_curse_item(item);
@@ -2615,7 +2643,7 @@ static void generate_jewellery_item(item_def& item, bool allow_uniques,
}
}
-static void generate_misc_item(item_def& item, int force_type, int item_race)
+static void _generate_misc_item(item_def& item, int force_type, int item_race)
{
if (force_type != OBJ_RANDOM)
item.sub_type = force_type;
@@ -2627,16 +2655,16 @@ static void generate_misc_item(item_def& item, int force_type, int item_race)
}
while
// never randomly generated
- ((item.sub_type == MISC_RUNE_OF_ZOT)
- || (item.sub_type == MISC_HORN_OF_GERYON)
+ (item.sub_type == MISC_RUNE_OF_ZOT
+ || item.sub_type == MISC_HORN_OF_GERYON
// pure decks are rare in the dungeon
- || ((item.sub_type == MISC_DECK_OF_ESCAPE ||
- item.sub_type == MISC_DECK_OF_DESTRUCTION ||
- item.sub_type == MISC_DECK_OF_DUNGEONS ||
- item.sub_type == MISC_DECK_OF_SUMMONING ||
- item.sub_type == MISC_DECK_OF_WONDERS ||
- item.sub_type == MISC_DECK_OF_PUNISHMENT) &&
- !one_chance_in(5)));
+ || (item.sub_type == MISC_DECK_OF_ESCAPE
+ || item.sub_type == MISC_DECK_OF_DESTRUCTION
+ || item.sub_type == MISC_DECK_OF_DUNGEONS
+ || item.sub_type == MISC_DECK_OF_SUMMONING
+ || item.sub_type == MISC_DECK_OF_WONDERS
+ || item.sub_type == MISC_DECK_OF_PUNISHMENT)
+ && !one_chance_in(5));
// filling those silly empty boxes -- bwr
if (item.sub_type == MISC_EMPTY_EBONY_CASKET && !one_chance_in(20))
@@ -2674,10 +2702,10 @@ int items( int allow_uniques, // not just true-false,
// force_class = OBJ_WEAPON, force_type = OBJ_RANDOM and
// force_ego = SPWPN_VORPAL, and a random weapon of a type
// appropriate for the vorpal brand will be chosen.
- ASSERT(force_ego <= 0 ||
- ((force_class == OBJ_WEAPONS || force_class == OBJ_ARMOUR
- || force_class == OBJ_MISSILES)
- && force_type != OBJ_RANDOM));
+ ASSERT(force_ego <= 0
+ || (force_class == OBJ_WEAPONS || force_class == OBJ_ARMOUR
+ || force_class == OBJ_MISSILES)
+ && force_type != OBJ_RANDOM);
// find an empty slot for the item (with culling if required)
int p = get_item_slot(10);
@@ -2735,45 +2763,45 @@ int items( int allow_uniques, // not just true-false,
switch (item.base_type)
{
case OBJ_WEAPONS:
- generate_weapon_item(item, allow_uniques, force_type,
- item_level, item_race);
+ _generate_weapon_item(item, allow_uniques, force_type,
+ item_level, item_race);
break;
case OBJ_MISSILES:
- generate_missile_item(item, force_type, item_level, item_race);
+ _generate_missile_item(item, force_type, item_level, item_race);
break;
case OBJ_ARMOUR:
- generate_armour_item(item, allow_uniques, force_type,
- item_level, item_race);
+ _generate_armour_item(item, allow_uniques, force_type,
+ item_level, item_race);
break;
case OBJ_WANDS:
- generate_wand_item(item, force_type);
+ _generate_wand_item(item, force_type);
break;
case OBJ_FOOD:
- generate_food_item(item, allow_uniques, force_type);
+ _generate_food_item(item, allow_uniques, force_type);
break;
case OBJ_POTIONS:
- generate_potion_item(item, force_type, item_level);
+ _generate_potion_item(item, force_type, item_level);
break;
case OBJ_SCROLLS:
- generate_scroll_item(item, force_type, item_level);
+ _generate_scroll_item(item, force_type, item_level);
break;
case OBJ_JEWELLERY:
- generate_jewellery_item(item, allow_uniques, force_type, item_level);
+ _generate_jewellery_item(item, allow_uniques, force_type, item_level);
break;
case OBJ_BOOKS:
- generate_book_item(item, force_type, item_level);
+ _generate_book_item(item, force_type, item_level);
break;
case OBJ_STAVES:
- generate_staff_item(item, force_type);
+ _generate_staff_item(item, force_type);
break;
case OBJ_ORBS: // always forced in current setup {dlb}
@@ -2782,7 +2810,7 @@ int items( int allow_uniques, // not just true-false,
break;
case OBJ_MISCELLANY:
- generate_misc_item(item, force_type, item_race);
+ _generate_misc_item(item, force_type, item_race);
break;
// that is, everything turns to gold if not enumerated above, so ... {dlb}
@@ -2846,25 +2874,38 @@ void init_rod_mp(item_def &item)
item.plus = item.plus2;
}
-static bool weapon_is_visibly_special(const item_def &item)
+static bool _weapon_is_visibly_special(const item_def &item)
{
const int brand = get_weapon_brand(item);
- const bool visibly_branded = brand != SPWPN_NORMAL;
+ const bool visibly_branded = (brand != SPWPN_NORMAL);
- return (is_random_artefact(item) || visibly_branded
- || ((item.plus || item.plus2)
- && (get_equip_race(item)? one_chance_in(7)
- : one_chance_in(3))))
- // nobody would bother enchanting a mundane club
- && item.sub_type != WPN_CLUB
- && item.sub_type != WPN_GIANT_CLUB
- && item.sub_type != WPN_GIANT_SPIKED_CLUB
- && get_equip_desc(item) == ISFLAG_NO_DESC;
+ // nobody would bother enchanting a mundane club
+ if (item.sub_type == WPN_CLUB || item.sub_type == WPN_GIANT_CLUB
+ || item.sub_type == WPN_GIANT_SPIKED_CLUB)
+ {
+ return false;
+ }
+
+ if (get_equip_desc(item) != ISFLAG_NO_DESC)
+ return false;
+
+
+ if (visibly_branded || is_random_artefact(item))
+ return true;
+
+ if ((item.plus || item.plus2)
+ && (one_chance_in(3)
+ || get_equip_race(item) && one_chance_in(7)))
+ {
+ return true;
+ }
+
+ return false;
}
-static void give_monster_item(monsters *mon, int thing,
- bool force_item = false,
- bool (monsters::*pickupfn)(item_def&, int) = NULL)
+static void _give_monster_item(monsters *mon, int thing,
+ bool force_item = false,
+ bool (monsters::*pickupfn)(item_def&, int) = NULL)
{
item_def &mthing = mitm[thing];
@@ -2880,8 +2921,8 @@ static void give_monster_item(monsters *mon, int thing,
}
unwind_var<int> save_speedinc(mon->speed_increment);
- if (!(pickupfn? (mon->*pickupfn)(mthing, false)
- : mon->pickup_item(mthing, false, true)))
+ if (!(pickupfn ? (mon->*pickupfn)(mthing, false)
+ : mon->pickup_item(mthing, false, true)))
{
#ifdef DEBUG_DIAGNOSTICS
mprf(MSGCH_DIAGNOSTICS, "Destroying %s because %s doesn't want it!",
@@ -2895,7 +2936,7 @@ static void give_monster_item(monsters *mon, int thing,
item_colour( mthing );
}
-static void give_scroll(monsters *mon, int level)
+static void _give_scroll(monsters *mon, int level)
{
//mv - give scroll
if (mons_is_unique( mon->type ) && one_chance_in(3))
@@ -2906,11 +2947,11 @@ static void give_scroll(monsters *mon, int level)
return;
mitm[thing_created].flags = 0;
- give_monster_item(mon, thing_created);
+ _give_monster_item(mon, thing_created);
}
}
-static void give_wand(monsters *mon, int level)
+static void _give_wand(monsters *mon, int level)
{
//mv - give wand
if (mons_is_unique( mon->type ) && one_chance_in(5))
@@ -2930,16 +2971,18 @@ static void give_wand(monsters *mon, int level)
if ( mitm[thing_created].sub_type == WAND_COLD )
mitm[thing_created].sub_type = WAND_FROST;
if ( mitm[thing_created].sub_type == WAND_LIGHTNING )
- mitm[thing_created].sub_type = (coinflip() ?
- WAND_FLAME : WAND_FROST);
+ {
+ mitm[thing_created].sub_type = (coinflip() ? WAND_FLAME
+ : WAND_FROST);
+ }
}
mitm[thing_created].flags = 0;
- give_monster_item(mon, thing_created);
+ _give_monster_item(mon, thing_created);
}
}
-static void give_potion(monsters *mon, int level)
+static void _give_potion(monsters *mon, int level)
{
//mv - give potion
if (mons_species( mon->type ) == MONS_VAMPIRE && one_chance_in(5))
@@ -2952,7 +2995,7 @@ static void give_potion(monsters *mon, int level)
return;
mitm[thing_created].flags = 0;
- give_monster_item(mon, thing_created);
+ _give_monster_item(mon, thing_created);
}
else if (mons_is_unique( mon->type ) && one_chance_in(3))
{
@@ -2962,13 +3005,13 @@ static void give_potion(monsters *mon, int level)
return;
mitm[thing_created].flags = 0;
- give_monster_item(mon, thing_created);
+ _give_monster_item(mon, thing_created);
}
}
-static item_make_species_type give_weapon(monsters *mon, int level,
- bool melee_only = false,
- bool give_aux_melee = true)
+static item_make_species_type _give_weapon(monsters *mon, int level,
+ bool melee_only = false,
+ bool give_aux_melee = true)
{
const int bp = get_item_slot();
bool force_item = false;
@@ -3009,8 +3052,8 @@ static item_make_species_type give_weapon(monsters *mon, int level,
const int temp_rand = random2(5);
item.sub_type = ((temp_rand > 2) ? WPN_DAGGER : // 40%
- (temp_rand > 0) ? WPN_SHORT_SWORD // 40%
- : WPN_CLUB); // 20%
+ (temp_rand > 0) ? WPN_SHORT_SWORD // 40%
+ : WPN_CLUB); // 20%
}
else
return (item_race);
@@ -3056,8 +3099,7 @@ static item_make_species_type give_weapon(monsters *mon, int level,
case MONS_NORRIS:
item.base_type = OBJ_WEAPONS;
item.sub_type = (one_chance_in(6) ? WPN_WAR_AXE + random2(4)
- : WPN_MACE + random2(12));
-
+ : WPN_MACE + random2(12));
if (coinflip())
{
force_item = true;
@@ -3087,9 +3129,9 @@ static item_make_species_type give_weapon(monsters *mon, int level,
const int temp_rand = random2(5);
item.sub_type = ((temp_rand > 2) ? WPN_SPEAR : // 40%
- (temp_rand == 2) ? WPN_FLAIL : // 20%
- (temp_rand == 1) ? WPN_HALBERD // 20%
- : WPN_CLUB); // 20%
+ (temp_rand == 2) ? WPN_FLAIL : // 20%
+ (temp_rand == 1) ? WPN_HALBERD // 20%
+ : WPN_CLUB); // 20%
}
break;
@@ -3107,19 +3149,19 @@ static item_make_species_type give_weapon(monsters *mon, int level,
const int temp_rand = random2(240);
item.sub_type = ((temp_rand > 209) ? WPN_DAGGER : //12.50%
- (temp_rand > 179) ? WPN_CLUB : //12.50%
- (temp_rand > 152) ? WPN_FLAIL : //11.25%
- (temp_rand > 128) ? WPN_HAND_AXE : //10.00%
- (temp_rand > 108) ? WPN_HAMMER : // 8.33%
- (temp_rand > 88) ? WPN_HALBERD : // 8.33%
- (temp_rand > 68) ? WPN_SHORT_SWORD : // 8.33%
- (temp_rand > 48) ? WPN_MACE : // 8.33%
- (temp_rand > 38) ? WPN_WHIP : // 4.17%
- (temp_rand > 28) ? WPN_TRIDENT : // 4.17%
- (temp_rand > 18) ? WPN_FALCHION : // 4.17%
- (temp_rand > 8) ? WPN_MORNINGSTAR : // 4.17%
- (temp_rand > 2) ? WPN_WAR_AXE // 2.50%
- : WPN_SPIKED_FLAIL);// 1.25%
+ (temp_rand > 179) ? WPN_CLUB : //12.50%
+ (temp_rand > 152) ? WPN_FLAIL : //11.25%
+ (temp_rand > 128) ? WPN_HAND_AXE : //10.00%
+ (temp_rand > 108) ? WPN_HAMMER : // 8.33%
+ (temp_rand > 88) ? WPN_HALBERD : // 8.33%
+ (temp_rand > 68) ? WPN_SHORT_SWORD : // 8.33%
+ (temp_rand > 48) ? WPN_MACE : // 8.33%
+ (temp_rand > 38) ? WPN_WHIP : // 4.17%
+ (temp_rand > 28) ? WPN_TRIDENT : // 4.17%
+ (temp_rand > 18) ? WPN_FALCHION : // 4.17%
+ (temp_rand > 8) ? WPN_MORNINGSTAR : // 4.17%
+ (temp_rand > 2) ? WPN_WAR_AXE // 2.50%
+ : WPN_SPIKED_FLAIL);// 1.25%
}
else
return (item_race);
@@ -3141,7 +3183,7 @@ static item_make_species_type give_weapon(monsters *mon, int level,
(temp_rand > 31) ? WPN_MACE : // 14%
(temp_rand > 18) ? WPN_BOW : // 13%
(temp_rand > 5) ? WPN_HAND_CROSSBOW // 13%
- : WPN_LONGBOW); // 6%
+ : WPN_LONGBOW); // 6%
break;
}
@@ -3157,10 +3199,12 @@ static item_make_species_type give_weapon(monsters *mon, int level,
if (weap && weap->base_type == OBJ_WEAPONS)
item.sub_type = weap->sub_type;
else
+ {
item.sub_type = random_choose_weighted(40, WPN_SABRE,
10, WPN_SHORT_SWORD,
2, WPN_QUICK_BLADE,
0);
+ }
break;
}
@@ -3191,10 +3235,10 @@ static item_make_species_type give_weapon(monsters *mon, int level,
const int temp_rand = random2(6);
item.sub_type = ((temp_rand > 3) ? WPN_LONG_SWORD : // 2 in 6
- (temp_rand > 2) ? WPN_SHORT_SWORD :// 1 in 6
- (temp_rand > 1) ? WPN_SABRE : // 1 in 6
- (temp_rand > 0) ? WPN_DAGGER // 1 in 6
- : WPN_WHIP); // 1 in 6
+ (temp_rand > 2) ? WPN_SHORT_SWORD :// 1 in 6
+ (temp_rand > 1) ? WPN_SABRE : // 1 in 6
+ (temp_rand > 0) ? WPN_DAGGER // 1 in 6
+ : WPN_WHIP); // 1 in 6
break;
}
case MONS_ORC_WARRIOR:
@@ -3227,19 +3271,19 @@ static item_make_species_type give_weapon(monsters *mon, int level,
item.base_type = OBJ_WEAPONS;
const int temp_rand = random2(120);
item.sub_type = ((temp_rand > 109) ? WPN_LONG_SWORD : // 8.33%
- (temp_rand > 99) ? WPN_SHORT_SWORD : // 8.33%
- (temp_rand > 89) ? WPN_SCIMITAR : // 8.33%
- (temp_rand > 79) ? WPN_BATTLEAXE : // 8.33%
- (temp_rand > 69) ? WPN_HAND_AXE : // 8.33%
- (temp_rand > 59) ? WPN_HALBERD : // 8.33%
- (temp_rand > 49) ? WPN_GLAIVE : // 8.33%
- (temp_rand > 39) ? WPN_MORNINGSTAR : // 8.33%
- (temp_rand > 29) ? WPN_GREAT_MACE : // 8.33%
- (temp_rand > 19) ? WPN_TRIDENT : // 8.33%
- (temp_rand > 10) ? WPN_WAR_AXE : // 7.50%
- (temp_rand > 1) ? WPN_FLAIL : // 7.50%
- (temp_rand > 0) ? WPN_BROAD_AXE // 0.83%
- : WPN_SPIKED_FLAIL); // 0.83%
+ (temp_rand > 99) ? WPN_SHORT_SWORD : // 8.33%
+ (temp_rand > 89) ? WPN_SCIMITAR : // 8.33%
+ (temp_rand > 79) ? WPN_BATTLEAXE : // 8.33%
+ (temp_rand > 69) ? WPN_HAND_AXE : // 8.33%
+ (temp_rand > 59) ? WPN_HALBERD : // 8.33%
+ (temp_rand > 49) ? WPN_GLAIVE : // 8.33%
+ (temp_rand > 39) ? WPN_MORNINGSTAR : // 8.33%
+ (temp_rand > 29) ? WPN_GREAT_MACE : // 8.33%
+ (temp_rand > 19) ? WPN_TRIDENT : // 8.33%
+ (temp_rand > 10) ? WPN_WAR_AXE : // 7.50%
+ (temp_rand > 1) ? WPN_FLAIL : // 7.50%
+ (temp_rand > 0) ? WPN_BROAD_AXE // 0.83%
+ : WPN_SPIKED_FLAIL); // 0.83%
break;
}
case MONS_ORC_WARLORD:
@@ -3271,15 +3315,15 @@ static item_make_species_type give_weapon(monsters *mon, int level,
const int temp_rand = random2(25);
item.sub_type = ((temp_rand > 20) ? WPN_GREAT_SWORD : // 16%
- (temp_rand > 16) ? WPN_LONG_SWORD : // 16%
- (temp_rand > 12) ? WPN_BATTLEAXE : // 16%
- (temp_rand > 8) ? WPN_WAR_AXE : // 16%
- (temp_rand > 5) ? WPN_GREAT_MACE : // 12%
- (temp_rand > 3) ? WPN_DIRE_FLAIL : // 8%
- (temp_rand > 2) ? WPN_BARDICHE : // 4%
- (temp_rand > 1) ? WPN_GLAIVE : // 4%
- (temp_rand > 0) ? WPN_BROAD_AXE // 4%
- : WPN_HALBERD); // 4%
+ (temp_rand > 16) ? WPN_LONG_SWORD : // 16%
+ (temp_rand > 12) ? WPN_BATTLEAXE : // 16%
+ (temp_rand > 8) ? WPN_WAR_AXE : // 16%
+ (temp_rand > 5) ? WPN_GREAT_MACE : // 12%
+ (temp_rand > 3) ? WPN_DIRE_FLAIL : // 8%
+ (temp_rand > 2) ? WPN_BARDICHE : // 4%
+ (temp_rand > 1) ? WPN_GLAIVE : // 4%
+ (temp_rand > 0) ? WPN_BROAD_AXE // 4%
+ : WPN_HALBERD); // 4%
if (one_chance_in(4))
item.plus += 1 + random2(3);
@@ -3299,12 +3343,12 @@ static item_make_species_type give_weapon(monsters *mon, int level,
item_race = MAKE_ITEM_NO_RACE;
item.base_type = OBJ_WEAPONS;
item.sub_type = (one_chance_in(3) ? WPN_GIANT_SPIKED_CLUB
- : WPN_GIANT_CLUB);
+ : WPN_GIANT_CLUB);
if (one_chance_in(10) || mon->type == MONS_ETTIN)
{
item.sub_type = ((one_chance_in(10)) ? WPN_DIRE_FLAIL
- : WPN_GREAT_MACE);
+ : WPN_GREAT_MACE);
}
break;
@@ -3330,7 +3374,7 @@ static item_make_species_type give_weapon(monsters *mon, int level,
item_race = MAKE_ITEM_NO_RACE;
item.base_type = OBJ_WEAPONS;
item.sub_type = (one_chance_in(3) ? WPN_DEMON_TRIDENT
- : WPN_TRIDENT);
+ : WPN_TRIDENT);
}
break;
@@ -3341,12 +3385,12 @@ static item_make_species_type give_weapon(monsters *mon, int level,
item.base_type = OBJ_WEAPONS;
item.sub_type = (one_chance_in(3) ? WPN_GIANT_SPIKED_CLUB
- : WPN_GIANT_CLUB);
+ : WPN_GIANT_CLUB);
if (one_chance_in(10))
{
item.sub_type = (one_chance_in(10) ? WPN_DIRE_FLAIL
- : WPN_GREAT_MACE);
+ : WPN_GREAT_MACE);
}
break;
@@ -3425,7 +3469,7 @@ static item_make_species_type give_weapon(monsters *mon, int level,
item.colour = WHITE; // forced by force_item above {dlb}
item.sub_type = (one_chance_in(4) ? WPN_BLESSED_BLADE
- : WPN_LONG_SWORD);
+ : WPN_LONG_SWORD);
set_equip_desc( item, ISFLAG_GLOWING );
set_item_ego_type( item, OBJ_WEAPONS, SPWPN_HOLY_WRATH );
@@ -3566,11 +3610,11 @@ static item_make_species_type give_weapon(monsters *mon, int level,
const int temp_rand = random2(6);
item.sub_type = ((temp_rand == 5) ? WPN_GREAT_SWORD :
- (temp_rand == 4) ? WPN_TRIDENT :
- (temp_rand == 3) ? WPN_SPEAR :
- (temp_rand == 2) ? WPN_GLAIVE :
- (temp_rand == 1) ? WPN_BOW
- : WPN_HALBERD);
+ (temp_rand == 4) ? WPN_TRIDENT :
+ (temp_rand == 3) ? WPN_SPEAR :
+ (temp_rand == 2) ? WPN_GLAIVE :
+ (temp_rand == 1) ? WPN_BOW
+ : WPN_HALBERD);
if (is_range_weapon(item))
set_item_ego_type( item, OBJ_WEAPONS, SPWPN_FLAME );
@@ -3634,16 +3678,16 @@ static item_make_species_type give_weapon(monsters *mon, int level,
if (iquan > 1 && !force_item)
i.quantity = iquan;
- give_monster_item(mon, thing_created, force_item);
+ _give_monster_item(mon, thing_created, force_item);
if (give_aux_melee && (i.base_type != OBJ_WEAPONS || is_range_weapon(i)))
- give_weapon(mon, level, true, false);
+ _give_weapon(mon, level, true, false);
return (item_race);
}
-static void give_ammo(monsters *mon, int level,
- item_make_species_type item_race)
+static void _give_ammo(monsters *mon, int level,
+ item_make_species_type item_race)
{
// mv: gives ammunition
// note that item_race is not reset for this section
@@ -3664,15 +3708,15 @@ static void give_ammo(monsters *mon, int level,
if (xitt == MI_NEEDLE)
{
set_item_ego_type(mitm[thing_created], OBJ_MISSILES,
- got_curare_roll(level) ? SPMSL_CURARE
- : SPMSL_POISONED);
+ _got_curare_roll(level) ? SPMSL_CURARE
+ : SPMSL_POISONED);
}
// Master archers get double ammo - archery is their only attack.
if (mon->type == MONS_DEEP_ELF_MASTER_ARCHER)
mitm[thing_created].quantity *= 2;
- give_monster_item(mon, thing_created);
+ _give_monster_item(mon, thing_created);
} // end if needs ammo
else
{
@@ -3707,8 +3751,7 @@ static void give_ammo(monsters *mon, int level,
case MONS_ORC:
if (one_chance_in(20))
{
- weap_type =
- random_choose(WPN_HAND_AXE, WPN_SPEAR, -1);
+ weap_type = random_choose(WPN_HAND_AXE, WPN_SPEAR, -1);
qty = random_range(2, 5);
item_race = MAKE_ITEM_ORCISH;
}
@@ -3737,7 +3780,15 @@ static void give_ammo(monsters *mon, int level,
qty = 3 + random2(6);
}
}
- // fall through
+ if (one_chance_in(6))
+ {
+ weap_class = OBJ_MISSILES;
+ weap_type = MI_THROWING_NET;
+ qty = 1;
+ if (one_chance_in(4))
+ qty += random2(3); // up to three nets
+ }
+ break;
case MONS_DRACONIAN_KNIGHT:
case MONS_GNOLL:
@@ -3746,10 +3797,15 @@ static void give_ammo(monsters *mon, int level,
break;
// fall through
case MONS_HAROLD: // bounty hunters
- case MONS_JOZEF:
+ case MONS_JOZEF: // up to 5 nets
weap_class = OBJ_MISSILES;
weap_type = MI_THROWING_NET;
- qty = coinflip() + 1;
+ qty = 1;
+ if (one_chance_in(3))
+ qty++;
+ if (mon->type == MONS_HAROLD || mon->type == MONS_JOZEF)
+ qty += random2(4);
+
break;
}
@@ -3761,8 +3817,8 @@ static void give_ammo(monsters *mon, int level,
if (thing_created != NON_ITEM)
{
mitm[thing_created].quantity = qty;
- give_monster_item(mon, thing_created, false,
- &monsters::pickup_throwable_weapon);
+ _give_monster_item(mon, thing_created, false,
+ &monsters::pickup_throwable_weapon);
}
}
}
@@ -3785,7 +3841,7 @@ static bool make_item_for_monster(
if (thing_created == NON_ITEM)
return (false);
- give_monster_item(mons, thing_created);
+ _give_monster_item(mons, thing_created);
return (true);
}
@@ -3801,27 +3857,35 @@ void give_shield(monsters *mon, int level)
case MONS_DEEP_ELF_SOLDIER:
case MONS_DEEP_ELF_FIGHTER:
if (one_chance_in(6))
+ {
make_item_for_monster(mon, OBJ_ARMOUR, ARM_BUCKLER,
level, MAKE_ITEM_ELVEN);
+ }
break;
case MONS_NAGA_WARRIOR:
case MONS_VAULT_GUARD:
if (one_chance_in(3))
+ {
make_item_for_monster(mon, OBJ_ARMOUR,
one_chance_in(3)? ARM_LARGE_SHIELD
: ARM_SHIELD,
level, MAKE_ITEM_NO_RACE);
+ }
break;
case MONS_DRACONIAN_KNIGHT:
if (coinflip())
+ {
make_item_for_monster(mon, OBJ_ARMOUR,
coinflip()? ARM_LARGE_SHIELD : ARM_SHIELD,
level, MAKE_ITEM_NO_RACE);
+ }
break;
case MONS_DEEP_ELF_KNIGHT:
if (one_chance_in(3))
+ {
make_item_for_monster(mon, OBJ_ARMOUR, ARM_BUCKLER,
level, MAKE_ITEM_ELVEN);
+ }
break;
case MONS_NORRIS:
make_item_for_monster(mon, OBJ_ARMOUR, ARM_BUCKLER,
@@ -4068,7 +4132,7 @@ void give_armour(monsters *mon, int level)
if (thing_created == NON_ITEM)
return;
- give_monster_item(mon, thing_created);
+ _give_monster_item(mon, thing_created);
//mv: all items with force_colour = 0 are colored via items().
if (force_colour)
@@ -4079,13 +4143,13 @@ void give_item(int mid, int level_number) //mv: cleanup+minor changes
{
monsters *mons = &menv[mid];
- give_scroll(mons, level_number);
- give_wand(mons, level_number);
- give_potion(mons, level_number);
+ _give_scroll(mons, level_number);
+ _give_wand(mons, level_number);
+ _give_potion(mons, level_number);
- const item_make_species_type item_race = give_weapon(mons, level_number);
+ const item_make_species_type item_race = _give_weapon(mons, level_number);
- give_ammo(mons, level_number, item_race);
+ _give_ammo(mons, level_number, item_race);
give_armour(mons, 1 + level_number / 2);
give_shield(mons, 1 + level_number / 2);
}
@@ -4096,22 +4160,22 @@ jewellery_type get_random_amulet_type()
(AMU_FIRST_AMULET + random2(NUM_JEWELLERY - AMU_FIRST_AMULET));
}
-static jewellery_type get_raw_random_ring_type()
+static jewellery_type _get_raw_random_ring_type()
{
return (jewellery_type) (RING_REGENERATION + random2(NUM_RINGS));
}
jewellery_type get_random_ring_type()
{
- const jewellery_type j = get_raw_random_ring_type();
+ const jewellery_type j = _get_raw_random_ring_type();
// Adjusted distribution here -- bwr
if ((j == RING_INVISIBILITY
- || j == RING_REGENERATION
- || j == RING_TELEPORT_CONTROL
- || j == RING_SLAYING)
+ || j == RING_REGENERATION
+ || j == RING_TELEPORT_CONTROL
+ || j == RING_SLAYING)
&& !one_chance_in(3))
{
- return get_raw_random_ring_type();
+ return _get_raw_random_ring_type();
}
return (j);
@@ -4203,15 +4267,17 @@ void item_set_appearance(item_def &item)
switch (item.base_type)
{
case OBJ_WEAPONS:
- if (weapon_is_visibly_special(item))
+ if (_weapon_is_visibly_special(item))
+ {
set_equip_desc( item,
(coinflip() ? ISFLAG_GLOWING : ISFLAG_RUNED) );
+ }
break;
case OBJ_ARMOUR:
// if not given a racial type, and special, give shiny/runed/etc desc.
if (get_armour_ego_type( item ) != SPARM_NORMAL
- || (item.plus != 0 && !one_chance_in(3)))
+ || item.plus != 0 && !one_chance_in(3))
{
const item_status_flag_type descs[] =
{