git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9523 c06c8d41-db1a-0410-9941-cceddc491573
SJJMO4TFG3QO46SLHUFSUYXXVZJDULVYTU4RTCM7TQPIGHZTWBDAC
F5IBWECAJWVDCUERZTQVISEJ3L7Q3ORMOQSYNALB45YUBQESUWZAC
37KUEOBEFZ3X7Z5YYARYE6L6EEFYIB55VP4ABKYNQF5BJBYK6KCAC
7WSQG3B2JCG5IV2UXMDFA6PAWJSAXLCOWAM2AP232VKCQTDUIVFQC
QF5LILALY55UNUHCZE22D6FGPJOJJKNJQFLBMRACMBWJBSO7PMCQC
26TGZ3ARBTOI4GTW4LO7R25QYQP3KDY75D4RFWUUFB3OBWVOIDMQC
GP7RUHLNB4KISSZAENEYVNY3MB5YRCFRWRWYAROBZIQ5MR4DXB7QC
HCVH2CWL32UD66O6Z7ZYDUASWN3RF5TW6FSWURGMD7MELKB772FAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
GYOKKBVTZ6HRW2NYC3EMGSB6ULBX24L5DLDZNEP2F6UTA4KPU3CAC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
5MGUZD2UACJCSG74TEZHI3Z4YL5KL6ZVUCQ3XVZKDOLKM7EMGWJAC
RDOOG5LBE5TCTFYCKJIB7TGGTRFX4HBLMJZYXS5TCFWNCU3QII5QC
6YMXFO4BZAMBWHSVWS2FTO2D7EGABBK4NPCSCAN4ELFHEYTWGXVAC
3BYUIM6LIJXLXBFPOHP7GMXZTICP522CRFSVEKUCBOHLRW7XC3KAC
EFWEYIB2R3DPD3JWIPU6LS6SFLPMYN7J7X4GBZR7DJWKHJ3UELSAC
NYURIMPCM2RADLMIQSN76OPKXQSK4XBLFNXD2OO53KGZI3MA6AQAC
DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC
TZ2SH2SPO5TFSFL2OCV5A32P2X4CRHEKEK7ENUFCBVF3RKUWAD4AC
Q3DNEB5OOJ34P5ML4CMK3L6SCP7RLW7DDOZEG24KZBX3C7BJRQDAC
M2HMYLYYXSP5XGX6MCI77IT6UW5K4YSEUJWHPQPYXVSW5L36BJ2AC
7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC
Q3XHNSHW6FI4JCXSEABATRFBJPMCF7PXNG2K6ZQTRRPVMIZFHUBQC
2G7MZ653N3JUHJ4DA5Q7VRO3S5T27DLPKDCJEKB6DGYSTXULUVWAC
OQ76R2BGEXU64TGDEQF46WVKM3LW5JO67CVITYQSIKE36LQZ725AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
WDWRHNIIHFS24TXNPNRR43PXFEEJHFPKDURX6IZSW6P25TBMJFXAC
VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC
PAYI4UTJCR3XZSFOX5L35EURHRXQ6STO4Z7AQ3525QPNL3QYLNBAC
J44YLLLSMPKEY3IXV3CPOM257PQZW45A4QWSSBYVFXS5T5XGQQWAC
WXSNNK2RXP3DQFAEQGQUZJHFWXJC7ZKG2WURZGL566UDM4YXFSWQC
7NDXS36TE7QVXTXJWMYSVG5UHCCLPIO4VL6NXFGTDK3ZNKE3A2IAC
// Does Xom consider an item boring?
static bool _is_boring_item(int type, int sub_type)
{
switch (type)
{
case OBJ_POTIONS:
return (sub_type == POT_CURE_MUTATION);
case OBJ_SCROLLS:
// The corresponding spells are considered "boring", so Xom
// shouldn't gift these scrolls either.
switch (sub_type)
{
case SCR_DETECT_CURSE:
case SCR_REMOVE_CURSE:
case SCR_IDENTIFY:
case SCR_MAGIC_MAPPING:
return (true);
default:
break;
}
break;
case OBJ_JEWELLERY:
return (sub_type == RING_TELEPORT_CONTROL
|| sub_type == AMU_RESIST_MUTATION);
default:
break;
}
return (false);
}
while ( stype == POT_POISON && item_level < 1
|| stype == POT_STRONG_POISON && item_level < 11 );
while (stype == POT_POISON && item_level < 1
|| stype == POT_STRONG_POISON && item_level < 11
|| agent == GOD_XOM && _is_boring_item(OBJ_POTIONS, stype));
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)
// total weight: 10000
item.sub_type = random_choose_weighted(
1797, SCR_IDENTIFY,
1305, SCR_REMOVE_CURSE,
802, SCR_TELEPORTATION,
642, SCR_DETECT_CURSE,
321, SCR_FEAR,
321, SCR_NOISE,
321, SCR_MAGIC_MAPPING,
321, SCR_FOG,
321, SCR_RANDOM_USELESSNESS,
321, SCR_CURSE_WEAPON,
321, SCR_CURSE_ARMOUR,
321, SCR_RECHARGING,
321, SCR_BLINKING,
161, SCR_PAPER,
321, SCR_ENCHANT_ARMOUR,
321, SCR_ENCHANT_WEAPON_I,
321, SCR_ENCHANT_WEAPON_II,
do
{
// total weight: 10000
item.sub_type = random_choose_weighted(
1797, SCR_IDENTIFY,
1305, SCR_REMOVE_CURSE,
802, SCR_TELEPORTATION,
642, SCR_DETECT_CURSE,
321, SCR_FEAR,
321, SCR_NOISE,
321, SCR_MAGIC_MAPPING,
321, SCR_FOG,
321, SCR_RANDOM_USELESSNESS,
321, SCR_CURSE_WEAPON,
321, SCR_CURSE_ARMOUR,
321, SCR_RECHARGING,
321, SCR_BLINKING,
161, SCR_PAPER,
321, SCR_ENCHANT_ARMOUR,
321, SCR_ENCHANT_WEAPON_I,
321, SCR_ENCHANT_WEAPON_II,
// Medium-level scrolls
160, (depth_mod < 4 ? SCR_TELEPORTATION : SCR_ACQUIREMENT),
160, (depth_mod < 4 ? SCR_TELEPORTATION : SCR_ENCHANT_WEAPON_III),
160, (depth_mod < 4 ? SCR_DETECT_CURSE : SCR_SUMMONING),
160, (depth_mod < 4 ? SCR_PAPER : SCR_VULNERABILITY),
// Medium-level scrolls
160, (depth_mod < 4 ? SCR_TELEPORTATION : SCR_ACQUIREMENT),
160, (depth_mod < 4 ? SCR_TELEPORTATION : SCR_ENCHANT_WEAPON_III),
160, (depth_mod < 4 ? SCR_DETECT_CURSE : SCR_SUMMONING),
160, (depth_mod < 4 ? SCR_PAPER : SCR_VULNERABILITY),
// High-level scrolls
160, (depth_mod < 7 ? SCR_TELEPORTATION : SCR_VORPALISE_WEAPON),
160, (depth_mod < 7 ? SCR_DETECT_CURSE : SCR_TORMENT),
160, (depth_mod < 7 ? SCR_DETECT_CURSE : SCR_HOLY_WORD),
0);
// High-level scrolls
160, (depth_mod < 7 ? SCR_TELEPORTATION : SCR_VORPALISE_WEAPON),
160, (depth_mod < 7 ? SCR_DETECT_CURSE : SCR_TORMENT),
160, (depth_mod < 7 ? SCR_DETECT_CURSE : SCR_HOLY_WORD),
0);
}
while (agent == GOD_XOM && _is_boring_item(OBJ_SCROLLS, item.sub_type));
item.sub_type = (one_chance_in(4) ? get_random_amulet_type()
: get_random_ring_type());
do
{
item.sub_type = (one_chance_in(4) ? get_random_amulet_type()
: get_random_ring_type());
}
while (agent == GOD_XOM
&& _is_boring_item(OBJ_JEWELLERY, item.sub_type));