the latter summon_general_creature().
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5511 c06c8d41-db1a-0410-9941-cceddc491573
KLCR26P7MSX4ZWIHQHRK7BZH7M2QGCITN46FCFVHNX7U7WQWYDAQC
CGYHG44SVDDUHZEOTYYIE6LMAOC2NFEH3N7VSYY7TLRNDD4KXMWQC
SX3MNDBNCNGQUOTUAZ52OT47O2PYHSJZBERP4UJUOUPMTWW5CZHAC
Q33I2KIQNJQ7SS6XE7GPOOGESXOPMIHRF4PZLW6XCDZ5CTC73J3AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
3XL4DKV7PSWAU3ZBJSKZFJ2VUYABC47I7KKWGIRCJYXULQD453MQC
UHOAWBSBZBPHWMNXZCVB4SBJM4DTZAG3YRNNJNIKJN4CE2DP27JQC
SJXOZ6J66G3S5VYGIZ3YHEUCKUF5554YEFUYLVBH7X4ALYSXKTGQC
KVW54IFH4ZGUGFISE42UUJCACJRVV3ITFCCUYO3OVPHMQFHIHG7QC
64534WL35FKYVCX53LHIWA6GLZPK6BLDYKQ2SNQCP7DIIVHV6RKAC
MHHBLKFDEKM5CJ55ZCCFJEI4QH3WVLX673FWNJMXAKBG4FHXG4DAC
TXF4NRVICF3RMD3VQARDJKGOGBGIJNO6FKOV5POTF73XQHNB6WVAC
UABPE6GY5LDGEUPJVH6K7DNWQRAEQ4DXPB2NNM45SI47QYFV2XOQC
GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC
J4F3IKATRP5DPK25BEXCPKC4JME3DJHEIGYHJOYXGHYXUEY633AAC
RDXVYNDERZPFQYVM6TAPCKWLDM7SB4JLYX6PYDVEQBX4SEVQOAHQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
5XSXMOBGXFLTIQE6WDXWWFVDOTUPZSIQ2FWT3YI5QMVU6D76IUYQC
WQIEW3O4MANA2KKYRUWEZP44KHVJ4RRHEZTDXSF4EDELX66LO26QC
QL5YCGGNXVNGD5WACTFKXQOUCCXOKMUQGRHDJAUEIW25LQUSTD2QC
summon_ice_beast_etc(powc, MONS_ICE_BEAST, BEH_FRIENDLY, false);
case SPELL_SUMMON_UGLY_THING:
case SPELL_SUMMON_GUARDIAN:
case SPELL_SUMMON_DAEVA:
{
monster_type mon = MONS_PROGRAM_BUG;
switch (spell)
{
case SPELL_CALL_IMP:
mon = (one_chance_in(3)) ? MONS_WHITE_IMP :
(one_chance_in(7)) ? MONS_SHADOW_IMP
: MONS_IMP;
break;
case SPELL_SUMMON_ICE_BEAST:
mon = MONS_ICE_BEAST;
break;
case SPELL_SUMMON_UGLY_THING:
{
const int chance = std::max(6 - (powc / 12), 1);
mon = (one_chance_in(chance)) ? MONS_VERY_UGLY_THING
: MONS_UGLY_THING;
break;
}
case SPELL_SUMMON_GUARDIAN:
mon = MONS_ANGEL;
break;
case SPELL_SUMMON_DAEVA:
mon = MONS_DAEVA;
break;
default:
break;
}
summon_general_creature(powc, mon, BEH_FRIENDLY, false);
case SPELL_CALL_IMP:
{
monster_type mon = (one_chance_in(3)) ? MONS_WHITE_IMP :
(one_chance_in(7)) ? MONS_SHADOW_IMP
: MONS_IMP;
summon_ice_beast_etc(powc, mon, BEH_FRIENDLY, false);
break;
}
int chance = std::max(6 - (pow / 12), 1);
monster_type ugly = (one_chance_in(chance)) ?
MONS_VERY_UGLY_THING : MONS_UGLY_THING;
bool friendly = (random2(pow) > 3);
if (create_monster(
mgen_data(ugly,
friendly ? BEH_FRIENDLY : BEH_HOSTILE,
numsc, you.pos(),
friendly ? you.pet_target : MHITYOU)) != -1)
{
const char *prefix = (ugly == MONS_VERY_UGLY_THING) ? " very" : "n";
mprf("A%s ugly thing appears.%s", prefix,
friendly ? "" : " It doesn't look very happy.");
}
} // end summon_ugly_thing()
bool summon_ice_beast_etc(int pow, monster_type mon, beh_type beha,
bool god_gift)
{
int numsc = std::min(2 + (random2(pow) / 4), 6);
break;
case MONS_UGLY_THING:
case MONS_VERY_UGLY_THING:
{
bool friendly = (random2(pow) > 3);
const char *prefix = (mon == MONS_VERY_UGLY_THING) ? " very" : "n";
mprf("A%s ugly thing appears.%s", prefix,
friendly ? "" : " It doesn't look very happy.");
if (!friendly)
{
beha = BEH_HOSTILE;
hitting = MHITYOU;
}
summon_ice_beast_etc(20 + you.skills[SK_INVOCATIONS] * 3,
static_cast<monster_type>(
MONS_NEQOXEC + random2(5)),
BEH_FRIENDLY, true);
summon_general_creature(20 + you.skills[SK_INVOCATIONS] * 3,
static_cast<monster_type>(
MONS_NEQOXEC + random2(5)),
BEH_FRIENDLY, true);
summon_ice_beast_etc(20 + you.skills[SK_INVOCATIONS] * 3,
static_cast<monster_type>(
MONS_EXECUTIONER + random2(5)),
BEH_FRIENDLY, true);
summon_general_creature(20 + you.skills[SK_INVOCATIONS] * 3,
static_cast<monster_type>(
MONS_EXECUTIONER + random2(5)),
BEH_FRIENDLY, true);