git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5594 c06c8d41-db1a-0410-9941-cceddc491573
KJO5N6UIPKQ6TZNNOWZEHUAWZNUW7CAHLIW2ARX47K4SIE3N5LYAC
3QOEXNBHHP45XQ2EDJR7JAGZY7YIRQIHZSQETQPU3LB62JIWQ45AC
QME3SNESM4AEPUDL3QUVQUXGGFY7PJ7GQKFWBCHX257NSQU6O5GAC
HRQ7G7GU3R4LAKI2ME7TI5MQSW3J6CCU3ED4OCD55J2WJP6IOZQAC
BH2RBXQLAMSL2UYMSB7XGDEDO3WZRTJXKMFKDMYCPKEXNBX3YDXAC
M4UE7F2OYLXEV3GZVES4RM4Q3AQSU5BUHKDWHCVYNLT5NU5GFTDAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
UHL7ECQOTO3SHFAPV4T6ODJ2HLSMUKVHQJQF3CXM3IUNICR7LACAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
SO6OPFUUGKUK24KOXKAPNXR334J7NG76F3Y7ZGC6H3XYSGWTWXWAC
FVT2J6IVMSQZYKQGUHQVGT4ADYM7AWUQ4U7766GBRRFMSR2WBMLAC
Q4S2HEQNQZUN6Q2LIX36URDANVAYBMRWUTEDANKXFICOBGMCEGDAC
NFJKJYTT6CBLOKLGT6HIVIDEPWXMGXJV5AAL37SBZTG2HSFMJMKQC
LUNOTEIMYZJ7JL5P55GEHUVSDEZMYX3TWYUB2ABRHAYJEWQSSXIAC
KBH6DZPJCNMT3OMEMHKLASTWQZ24FIVNVANBCVI3SEVAMMPSWRWQC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
K3WXOHMGLLPL4CHGWRK227FWKCMBA7KHLJXLY6DTKEC5LKFJI62QC
4LNIHTHZTCOEZEHZ4GW6WCZH4UCDWKK5UVUKEDODEBBS4YH2KONQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
KOAFIKAEALY4VZ6VILEKAUY7RVLI222KHUV4J2DXMTTIQ6FP2NRQC
VRSBPOOVRUXKIP6HQPVZ3ZY2N2TFRUF2GOZM2CA6PXUM5IJTCY2QC
GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC
KHHAE5ZK7ITEZVMMUKYROKECLE2RU5ZU5OQ4Z4XSRQXE2R65O67AC
NS62TYCMR2U6B3DTJRAJ2OSYTZQY7OZSEQGPPPZOBLNTS3TANPHQC
5HBRQ2QZTFBQE2Z2CFADUI2D52LO5Z5CNHXHA7BJP3LGO7FJPUCQC
HHKRUVC6WMVKQRUQRYB5VAEDXUS6TMAKO7BSTBGVVL2AUOEBFUJAC
7KBQYZSNXBMQGEEOAZI6YU34XZ5ECFGTJA32QIJDZP2NYS3SF3IQC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
N3NXT75G2JYKVON7ZTE3TG34BBWITCL2HHVQ6H7QREYCDTVQFSGAC
// updated 24may2000 {dlb}
/* ***********************************************************************
* called from: religion - spell
* *********************************************************************** */
bool dancing_weapon(int pow, bool force_hostile = false,
bool quiet_failure = false);
}
}
bool dancing_weapon(int pow, bool force_hostile,
bool quiet_failure)
{
bool success = true;
const int dur = std::min(2 + (random2(pow) / 5), 6);
const int wpn = you.equip[EQ_WEAPON];
// See if wielded item is appropriate:
if (wpn == -1
|| you.inv[wpn].base_type != OBJ_WEAPONS
|| is_range_weapon(you.inv[wpn])
|| is_fixed_artefact( you.inv[wpn]))
{
success = false;
}
// See if we can get an mitm for the dancing weapon:
int i = get_item_slot();
if (i == NON_ITEM)
success = false;
int monster;
if (success)
{
// Cursed weapons become hostile.
bool friendly = (!force_hostile && !item_cursed(you.inv[wpn]));
monster =
create_monster(
mgen_data(MONS_DANCING_WEAPON,
friendly ? BEH_FRIENDLY : BEH_HOSTILE,
dur, you.pos(),
friendly ? you.pet_target : MHITYOU));
if (monster == -1)
success = false;
if (!success)
{
destroy_item(i);
if (!quiet_failure)
{
if (wpn != -1)
mpr("Your weapon vibrates crazily for a second.");
else
msg::stream << "Your " << your_hand(true) << " twitch."
<< std::endl;
}
return (false);
}
// We are successful. Unwield the weapon, removing any wield effects.
unwield_item();
// Copy the unwielded item.
mitm[i] = you.inv[wpn];
mitm[i].quantity = 1;
mitm[i].x = 0;
mitm[i].y = 0;
mitm[i].link = NON_ITEM;
// Mark the weapon as thrown, so that we'll autograb it when the
// tango's done.
mitm[i].flags |= ISFLAG_THROWN;
mprf("%s dances into the air!", you.inv[wpn].name(DESC_CAP_YOUR).c_str());
you.inv[wpn].quantity = 0;
menv[monster].inv[MSLOT_WEAPON] = i;
menv[monster].colour = mitm[i].colour;
burden_change();
return (true);
// last updated 24may2000 {dlb}
/* ***********************************************************************
* called from: ability - religion - spell
* *********************************************************************** */
bool dancing_weapon(int pow, bool god_gift = false, bool force_hostile = false,
bool quiet_failure = false);
// last updated 24may2000 {dlb}
/* ***********************************************************************
* called from: ability - spell
* *********************************************************************** */
bool dancing_weapon(int pow, bool god_gift, bool force_hostile,
bool quiet_failure)
{
bool success = true;
const int dur = std::min(2 + (random2(pow) / 5), 6);
const int wpn = you.equip[EQ_WEAPON];
// See if wielded item is appropriate.
if (wpn == -1
|| you.inv[wpn].base_type != OBJ_WEAPONS
|| is_range_weapon(you.inv[wpn])
|| is_fixed_artefact(you.inv[wpn]))
{
success = false;
}
// See if we can get an mitm for the dancing weapon.
const int i = get_item_slot();
if (i == NON_ITEM)
success = false;
int monster;
if (success)
{
// Cursed weapons become hostile.
const bool friendly = (!force_hostile && !item_cursed(you.inv[wpn]));
monster =
create_monster(
mgen_data(MONS_DANCING_WEAPON,
friendly ? BEH_FRIENDLY : BEH_HOSTILE,
dur, you.pos(),
friendly ? you.pet_target : MHITYOU,
god_gift ? MF_GOD_GIFT : 0));
if (monster == -1)
success = false;
}
if (!success)
{
destroy_item(i);
if (!quiet_failure)
{
if (wpn != -1)
mpr("Your weapon vibrates crazily for a second.");
else
msg::stream << "Your " << your_hand(true) << " twitch."
<< std::endl;
}
return (false);
}
// We are successful. Unwield the weapon, removing any wield effects.
unwield_item();
// Copy the unwielded item.
mitm[i] = you.inv[wpn];
mitm[i].quantity = 1;
mitm[i].x = 0;
mitm[i].y = 0;
mitm[i].link = NON_ITEM;
// Mark the weapon as thrown, so that we'll autograb it when the
// tango's done.
mitm[i].flags |= ISFLAG_THROWN;
mprf("%s dances into the air!", you.inv[wpn].name(DESC_CAP_YOUR).c_str());
you.inv[wpn].quantity = 0;
menv[monster].inv[MSLOT_WEAPON] = i;
menv[monster].colour = mitm[i].colour;
burden_change();
return (true);
}