taking probability (equal to ?oHolyWord) from the ?oPaper.
Effects apply to all creatures within LOS, including you, with no magic resistance check:
Balance testing, etc., needed.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7211 c06c8d41-db1a-0410-9941-cceddc491573
2G7MZ653N3JUHJ4DA5Q7VRO3S5T27DLPKDCJEKB6DGYSTXULUVWAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
ZR4ALQ5F2ETOD3GXMBYXSN6P75DPDGI3C275A7W5XHYI5TGPHNUQC
3CKYPX7QMW4HS3XWRADGEYMZ7VUKFQL2PZP5BAXILQS3SCHJGKEQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
3VWSZUGYL36SO5AOZRASGK3VHFCFZUGGCGRT3R7BZB36IZPN7OSQC
EB33TUEEJFHMEO6YHEXSYX3MBXHNPEFNMZL2VA75GOGKY6POSF2AC
5B5DP5S6A6LQMKZYVLQAEMHQZWFWYDHPCKQGRNSCNNYIBQYZ6BIQC
JR2RAQ523LOWNDYJNK6AZVKI6WVMI622PIV72XWOVZYPXPUKSQWAC
23PFLB2E4QHL5SF3Q2YV5FXRH6MFHENEU2ACVC572ZCYDXCBZVQAC
5XSXMOBGXFLTIQE6WDXWWFVDOTUPZSIQ2FWT3YI5QMVU6D76IUYQC
JI4NDSOXGGZ7QHXXFB3ZTHAKHABXYBZXPDGLUFV5SKYEOL5FT7JQC
NRTBKC3AXWOHMSLJ2CTBGG3NQHSY6BLK7AOZ7TJV4FPWQ4PUZ7XAC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
JN4GPMQCXOY5ICTLPLWP6DXBFULN4GMAEK7T4GXTZVIJAUUKBBYAC
D54BYIF6H4WYWDUFPAEPH3HFZLRFCWSATJ2JBS3I4S2JYKZFB34QC
AXRXY7RSEN3QHQRK6SFEH2OZAAYJRR5RBBBFF4YJF756V2FPFJ3AC
IQFLSXLOKMSMM65BL7XOEI5ZP55WKZ7BFBOIA44AMTPNJ7DAQXBQC
4EDGGEJV3BZ7NQYJSYFYK2KYAUZVKYGOB7U2JYFJHAQ7NXRJ5MIQC
WZTIVJJVK7CAHU5D2IYPH7TWGTLBBYPJZJYPGWKCDGM3JQ6Z6VKAC
TO43FWKHNIA5MVDOFXYHQODTLBQYEZKX5UIUGID57436UF7G2EXQC
NO2HRD7RZS42S55UG4FQ5EFQDY6WYWKGIXHUKYLWF36HHE3VZ7WAC
Q3DNEB5OOJ34P5ML4CMK3L6SCP7RLW7DDOZEG24KZBX3C7BJRQDAC
DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC
KX6HOBTF5OBZLH2VNEFHH6YAX66FSE6JGBY5I2WIAW5IEJUGNL6AC
7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC
TZ2SH2SPO5TFSFL2OCV5A32P2X4CRHEKEK7ENUFCBVF3RKUWAD4AC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
VNHFP63ZLLZU3A3PLXP4BITX57DUIYDHFOHQYK3BOBHV3S64G26QC
MDAJYB6STTZPNHRQ2X66MMMSONMKXTESLHJSFPGN7H3D3TOVBAVAC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC
NG53L53MSFQZAIVKHG54IEMXNJ33AYVPF2OZM4MMJFDKEJCGPBSAC
OFH2B2UZBK43QLFQBZ54FOCFLFNE54BZVDNCEUGDTBCUGNVZULIQC
5FBOE2QNRLKUNOP54CZD6LFAMM7LX6NNLHJRJHRDDIUTQ7J723DQC
JBZ7NU4BB5PGQWCOSZHD5OQUHQIVOD4XGJLSJQ7BUGQEGPRTVGZQC
RQFQSU37Y3ZBFR634JWYHE77LIOOINGBRNL4KUHPPRA3ZR6W5QIAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
KQNMFSLV62B4ANDKTUZ7LQH2MD2NDGNCP55MKM5YAATQ4T52H2PQC
O6ZMFKDI3XO2SWPNEYHIPYFDWJR4TVDP5BAATK6LVCVETQID6E7AC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
if (see_grid(*ri))
monsters *mon = &menv[targ_monst];
if (mon->alive()
&& (!require_visible || player_monster_visible(mon))
&& !mons_is_submerged(mon)
&& (!mons_is_mimic(mon->type) || mons_is_known_mimic(mon))
&& (!dangerous_only || !mons_is_safe(mon, want_move)))
monsters *mon = &menv[targ_monst];
if (mon->alive()
&& (!require_visible || player_monster_visible(mon))
&& !mons_is_submerged(mon)
&& (!mons_is_mimic(mon->type) || mons_is_known_mimic(mon))
&& (!dangerous_only || !mons_is_safe(mon, want_move)))
{
mons.push_back(mon);
if (just_check) // stop once you find one
return mons;
}
mons.push_back(mon);
if (just_check) // stop once you find one
return mons;
item.sub_type =
((temp_rand > 766) ? SCR_IDENTIFY : // 17.97%
(temp_rand > 644) ? SCR_REMOVE_CURSE : // 13.05%
(temp_rand > 569) ? SCR_TELEPORTATION : // 8.02%
(temp_rand > 509) ? SCR_DETECT_CURSE : // 6.42%
(temp_rand > 479) ? SCR_FEAR : // 3.21%
(temp_rand > 449) ? SCR_NOISE : // 3.21%
(temp_rand > 419) ? SCR_MAGIC_MAPPING : // 3.21%
(temp_rand > 389) ? SCR_FOG : // 3.21%
(temp_rand > 359) ? SCR_RANDOM_USELESSNESS :// 3.21%
(temp_rand > 329) ? SCR_CURSE_WEAPON : // 3.21%
(temp_rand > 299) ? SCR_CURSE_ARMOUR : // 3.21%
(temp_rand > 269) ? SCR_RECHARGING : // 3.21%
(temp_rand > 239) ? SCR_BLINKING : // 3.21%
(temp_rand > 209) ? SCR_PAPER : // 3.21%
(temp_rand > 179) ? SCR_ENCHANT_ARMOUR : // 3.21%
(temp_rand > 149) ? SCR_ENCHANT_WEAPON_I : // 3.21%
(temp_rand > 119) ? SCR_ENCHANT_WEAPON_II : // 3.21%
// 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,
// Don't create ?oImmolation at low levels (encourage read-ID)
321, (item_level < 4 ? SCR_TELEPORTATION : SCR_IMMOLATION),
// 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_ANTIMAGIC),
// Crawl is kind to newbie adventurers {dlb}:
// yes -- these five are messy {dlb}:
// 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%
(temp_rand > 74) ?
((depth_mod < 4) ? SCR_TELEPORTATION
: SCR_ACQUIREMENT) : // 1.60%
(temp_rand > 59) ?
((depth_mod < 4) ? SCR_DETECT_CURSE
: SCR_SUMMONING) : // 1.60%
(temp_rand > 44) ?
((depth_mod < 4) ? SCR_TELEPORTATION // 1.60%
: SCR_ENCHANT_WEAPON_III) :
(temp_rand > 29) ?
((depth_mod < 7) ? SCR_DETECT_CURSE
: SCR_TORMENT) : // 1.60%
(temp_rand > 14) ?
((depth_mod < 7) ? SCR_DETECT_CURSE
: SCR_HOLY_WORD) : // 1.60%
// default:
((depth_mod < 7) ? SCR_TELEPORTATION // 1.60%
: SCR_VORPALISE_WEAPON));
// 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);
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)
int affected = 0;
int i;
int count;
int nthing;
struct bolt beam;
// First cast antimagic on yourself.
antimagic();
const enchant_type lost_enchantments[] = {
ENCH_SLOW,
ENCH_HASTE,
ENCH_FEAR,
ENCH_CONFUSION,
ENCH_INVIS,
ENCH_BACKLIGHT,
ENCH_CHARM,
ENCH_PARALYSIS,
ENCH_PETRIFYING,
ENCH_PETRIFIED
};
mon_enchant lowered_mr(ENCH_LOWERED_MR, 1, KC_YOU, 40);
// All nearby creatures lose all magical enchantments, and halve
// their MR halved (if they're not magic-immune.)
for (radius_iterator ri(you.pos(), LOS_RADIUS); ri; ++ri)
{
const unsigned short targ_monst = env.mgrid(*ri);
if (targ_monst != NON_MONSTER)
{
monsters& mon = menv[targ_monst];
for (unsigned int i = 0; i < ARRAYSZ(lost_enchantments); ++i)
mon.del_ench(lost_enchantments[i], true, true);
mon.add_ench(lowered_mr);
// Annoying but not enough to turn friendlies against you.
behaviour_event(&mon, ME_ANNOY, MHITYOU);
}
}