mess in the meantime.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5545 c06c8d41-db1a-0410-9941-cceddc491573
NFJKJYTT6CBLOKLGT6HIVIDEPWXMGXJV5AAL37SBZTG2HSFMJMKQC
77G2A767EQKROYP7WEHAITU4T6V6PU6QO33CRSA3QWDYFD45SNSAC
SZJGHYGJ5AAZDOAQ53LXGP2WKEMIZABCVVGDJMOOMHA7M5ZDT3YQC
S6FRUNPFE3PD2DAMVJGWX7TX262KVATIMQ4ON67BPRNVTOOO2XVQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
4HHCHQD26LSGYC5TSQV25D2KIWLRJDB4BJQHJPSIB3MWNSSE4TGAC
3XL4DKV7PSWAU3ZBJSKZFJ2VUYABC47I7KKWGIRCJYXULQD453MQC
KLCR26P7MSX4ZWIHQHRK7BZH7M2QGCITN46FCFVHNX7U7WQWYDAQC
VBQODM6G5B35WWYGNT36EQDJFVTHMZB6CJWAFP3UQVD6NRUSKJAQC
JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC
Q4S2HEQNQZUN6Q2LIX36URDANVAYBMRWUTEDANKXFICOBGMCEGDAC
5XSXMOBGXFLTIQE6WDXWWFVDOTUPZSIQ2FWT3YI5QMVU6D76IUYQC
KBH6DZPJCNMT3OMEMHKLASTWQZ24FIVNVANBCVI3SEVAMMPSWRWQC
KOAFIKAEALY4VZ6VILEKAUY7RVLI222KHUV4J2DXMTTIQ6FP2NRQC
LUNOTEIMYZJ7JL5P55GEHUVSDEZMYX3TWYUB2ABRHAYJEWQSSXIAC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
4LNIHTHZTCOEZEHZ4GW6WCZH4UCDWKK5UVUKEDODEBBS4YH2KONQC
VRSBPOOVRUXKIP6HQPVZ3ZY2N2TFRUF2GOZM2CA6PXUM5IJTCY2QC
GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC
UHL7ECQOTO3SHFAPV4T6ODJ2HLSMUKVHQJQF3CXM3IUNICR7LACAC
KHHAE5ZK7ITEZVMMUKYROKECLE2RU5ZU5OQ4Z4XSRQXE2R65O67AC
NS62TYCMR2U6B3DTJRAJ2OSYTZQY7OZSEQGPPPZOBLNTS3TANPHQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
5HBRQ2QZTFBQE2Z2CFADUI2D52LO5Z5CNHXHA7BJP3LGO7FJPUCQC
SWOYPTHJAWFEDBMB3ROT33VQZIXGZD5UOXEV456DDUENW2HGA66QC
UURAYLSSITZLQR56MCWFPIWMECU7F3USMA2UPJAO4IPIY5WVKP5QC
HHKRUVC6WMVKQRUQRYB5VAEDXUS6TMAKO7BSTBGVVL2AUOEBFUJAC
SJXOZ6J66G3S5VYGIZ3YHEUCKUF5554YEFUYLVBH7X4ALYSXKTGQC
U3KGUJJQWQORJIIFH3ADVNIEEX5HOX6KEOXO7DJSL7L3Z6GG3PAQC
TS7X6ZTTQRB2I53VV4LXZPXZWM3DIKYI3T5PPHZANSEW4Q7QZBOAC
5MGUZD2UACJCSG74TEZHI3Z4YL5KL6ZVUCQ3XVZKDOLKM7EMGWJAC
2E4RV454MTTCKYLKMSHEEAFPNAFVUXXPBZV3XP6V7QMF4BBWE7TAC
DH3YTI6VVI727SQXO4CXSDCSBG2UN3UAWLFULBGRLBVH22ACRXIAC
MSMWAL6JZAWNGZXCNXPATUMAU6TVXBWWFY666P7UBSZ5LPYJYUCQC
C7EEMEI6FU6L2VWZBTDCZO5ZTB2N5TCNGSMIBZTN6NZRE7BUBFPQC
TXF4NRVICF3RMD3VQARDJKGOGBGIJNO6FKOV5POTF73XQHNB6WVAC
IE3INS4WUXZOBVXB5VWRBYPVPXADD2U2W5H3TBTOYNWJ3EGRSGQQC
LEGFIEUGVU2LZELGQH4TZTIJGKEVUHFTRGQ4Y2KGLSK7KNDI7BFQC
JOE4G4IU6O64WRW4CYDALGFCN6XHDI57MGLBBDHS4KHFLAH473PAC
KQNMFSLV62B4ANDKTUZ7LQH2MD2NDGNCP55MKM5YAATQ4T52H2PQC
SZ6PLJPQC2RGWBLXPWV76LVCUKIV7VJGU5WKDH7ZMW6XUBEB2ZHQC
CA6ZG6P2CE5EPAOQSB3P7NBDKTNFFHQP4CPOUFZL32ON6N32GSSQC
mgen_data(MONS_DANCING_WEAPON, beha, numsc,
you.pos(), hitting));
if (summs == -1)
failed = true;
mgen_data(MONS_DANCING_WEAPON,
friendly ? BEH_FRIENDLY : BEH_HOSTILE,
dur, you.pos(),
friendly ? you.pet_target : MHITYOU));
if (monster == -1)
success = false;
bool cast_summon_butterflies(int pow, bool god_gift)
{
bool success = false;
const int how_many = std::max(15, 4 + random2(3) + random2(pow) / 10);
for (int i = 0; i < how_many; ++i)
{
if (create_monster(
mgen_data(MONS_BUTTERFLY, BEH_FRIENDLY, 3,
you.pos(), you.pet_target,
god_gift ? MF_GOD_GIFT : 0)) != -1)
{
success = true;
}
}
if (!success)
canned_msg(MSG_NOTHING_HAPPENS);
return (success);
}
bool cast_summon_scorpions(int pow, bool god_gift)
{
bool success = false;
const int how_many = stepdown_value(1 + random2(pow)/10 + random2(pow)/10,
2, 2, 6, 8);
for (int i = 0; i < how_many; ++i)
{
bool friendly = (random2(pow) > 3);
if (create_monster(
mgen_data(MONS_SCORPION,
friendly ? BEH_FRIENDLY : BEH_HOSTILE,
3, you.pos(),
friendly ? you.pet_target : MHITYOU,
god_gift ? MF_GOD_GIFT : 0)) != -1)
{
success = true;
mprf("A scorpion appears.%s",
friendly ? "" : " It doesn't look very happy.");
}
}
if (!success)
canned_msg(MSG_NOTHING_HAPPENS);
return (success);
}
bool summon_swarm(int pow, bool god_gift, bool force_hostile,
bool quiet)
{
bool success = false;
monster_type mon = MONS_PROGRAM_BUG;
const int dur = std::min(2 + (random2(pow) / 4), 6);
const int how_many = stepdown_value(2 + random2(pow)/10 + random2(pow)/25,
2, 2, 6, 8);
for (int i = 0; i < how_many; ++i)
{
switch (random2(14))
{
case 0:
case 1: // prototypical swarming creature {dlb}
mon = MONS_KILLER_BEE;
break;
case 2: // comment said "larva", code read scorpion {dlb}
mon = MONS_SCORPION;
break; // think: "The Arrival" {dlb}
case 3: //jmf: technically not insects but still cool
mon = MONS_WORM;
break; // but worms kinda "swarm" so s'ok {dlb}
case 4: // comment read "larva", code was for scorpion
mon = MONS_GIANT_MOSQUITO;
break; // changed into giant mosquito 12jan2000 {dlb}
case 5: // think: scarabs in "The Mummy" {dlb}
mon = MONS_GIANT_BEETLE;
break;
case 6: //jmf: blowfly instead of queen bee
mon = MONS_GIANT_BLOWFLY;
break;
// queen bee added if more than x bees in swarm? {dlb}
// the above would require code rewrite - worth it? {dlb}
case 8: //jmf: changed to red wasp; was wolf spider
mon = MONS_WOLF_SPIDER; //jmf: spiders aren't insects
break; // think: "Kingdom of the Spiders" {dlb}
// not just insects!!! - changed back {dlb}
case 9:
mon = MONS_BUTTERFLY; // comic relief? {dlb}
break;
case 10: // change into some kind of snake -- {dlb}
mon = MONS_YELLOW_WASP; // do wasps swarm? {dlb}
break; // think: "Indiana Jones" and snakepit? {dlb}
default: // 3 in 14 chance, 12jan2000 {dlb}
mon = MONS_GIANT_ANT;
break;
} // end switch
bool friendly = (god_gift) ? !force_hostile
: (random2(pow) > 7);
if (create_monster(
mgen_data(mon,
friendly ? BEH_FRIENDLY : BEH_HOSTILE,
dur, you.pos(),
friendly ? you.pet_target : MHITYOU,
god_gift ? MF_GOD_GIFT : 0)) != -1)
{
success = true;
if (!god_gift && !quiet)
{
mprf("A swarming creature appears!%s",
friendly ? "" : " It doesn't look very happy.");
}
}
}
if (!god_gift && !quiet && !success)
canned_msg(MSG_NOTHING_HAPPENS);
return (success);
}
int how_many = (spell == SPELL_SUMMON_BUTTERFLIES) ?
std::max(15, 4 + random2(3) + random2(pow) / 10) :
(spell == SPELL_SUMMON_SCORPIONS) ?
stepdown_value(1 + random2(pow) / 10 + random2(pow) / 10,
2, 2, 6, 8) :
(spell == SPELL_DEMONIC_HORDE) ?
int how_many = (spell == SPELL_DEMONIC_HORDE) ?
mgen_data(mon, beha, dur,
you.pos(), hitting,
god_gift ? MF_GOD_GIFT : 0));
mgen_data(mon,
!force_hostile ? BEH_FRIENDLY : BEH_HOSTILE,
dur, you.pos(),
!force_hostile ? you.pet_target : MHITYOU,
MF_GOD_GIFT));
bool summon_swarm(int pow, beh_type beha, bool god_gift)
{
bool success = false;
monster_type mon = MONS_PROGRAM_BUG;
int dur = std::min(2 + (random2(pow) / 4), 6);
unsigned short hitting = (beha == BEH_FRIENDLY) ? you.pet_target : MHITYOU;
int how_many = stepdown_value(2 + random2(pow) / 10 + random2(pow) / 25,
2, 2, 6, 8);
for (int scount = 0; scount < how_many; ++scount)
{
switch (random2(14))
{
case 0:
case 1: // prototypical swarming creature {dlb}
mon = MONS_KILLER_BEE;
break;
case 2: // comment said "larva", code read scorpion {dlb}
mon = MONS_SCORPION;
break; // think: "The Arrival" {dlb}
case 3: //jmf: technically not insects but still cool
mon = MONS_WORM;
break; // but worms kinda "swarm" so s'ok {dlb}
case 4: // comment read "larva", code was for scorpion
mon = MONS_GIANT_MOSQUITO;
break; // changed into giant mosquito 12jan2000 {dlb}
case 5: // think: scarabs in "The Mummy" {dlb}
mon = MONS_GIANT_BEETLE;
break;
case 6: //jmf: blowfly instead of queen bee
mon = MONS_GIANT_BLOWFLY;
break;
// queen bee added if more than x bees in swarm? {dlb}
// the above would require code rewrite - worth it? {dlb}
case 8: //jmf: changed to red wasp; was wolf spider
mon = MONS_WOLF_SPIDER; //jmf: spiders aren't insects
break; // think: "Kingdom of the Spiders" {dlb}
// not just insects!!! - changed back {dlb}
case 9:
mon = MONS_BUTTERFLY; // comic relief? {dlb}
break;
case 10: // change into some kind of snake -- {dlb}
mon = MONS_YELLOW_WASP; // do wasps swarm? {dlb}
break; // think: "Indiana Jones" and snakepit? {dlb}
default: // 3 in 14 chance, 12jan2000 {dlb}
mon = MONS_GIANT_ANT;
break;
} // end switch
// If it's not a god gift, it's from a spell.
if (!god_gift && random2(pow) > 7)
{
beha = BEH_FRIENDLY;
hitting = you.pet_target;
}
if (create_monster(
mgen_data(mon, beha, dur,
you.pos(), hitting,
god_gift ? MF_GOD_GIFT : 0)) != -1)
{
success = true;
}
}
return (success);
}