that can summon multiple wraiths and ghosts (FR 2865657).
ZR6IG6JO2HEUWDJX5C3BHN3Z4Z2V6HFRGGS2NIW3PCODCWL7PRYAC 6QIJGB3K64A3JK6S7FRHT4A64MNI2ENZPGWNZO6WOYYO3LFV43UAC Q6QWWEURCCP5CRAMRDPFPMM7B6FLLOQZZMI553QKG4KEYVMXARCAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC QO5ZJWQ3JK3PEGBPTQSAYIPEJEHG2M2KTD74227G5VG7DVXUL3BQC NQMXQ6OQVUSC7Y7F7IL252QW4A5JED224EECNHWAM4ZZYVNY745AC PR2XIEELO6UJWT3EXDHWCJZGIZCCF3D6KF6LC67R6RWWAVNWEHWAC SUWIERONPDATHPDMZRYO6GYIXSW6XIS5V5MK5IV23DWQH2LL7VIAC ZEFGFQHN6J2S6EIPX7EPDG22C5YXTI6DMKQHHRCLWN5MQC44KY3AC WZWOQZCXUB7QX7PGQMIUCH5JM5YME25GE2GMMT2NIJP5OIZUZLBQC 4SWAT5KCKQV527NKELAXFQ5XA4Q5HONQXD4VBXMUZNPVPQKPCPNAC EY6KXNVGJ5OWJQWBE3W5E4T625XZXUNJMXIEQLCZUAJASUK4KHMQC DL4ZORRUZ3X4OCAGW5GVSIXLNK72KFHQOVA5QXU5QHT4YPRLFS2QC RA7RDZC5P4OYMR4MKTBO463YCREXENESV2VTMWKIT4G4SBJHFGLQC EEXPOHBIJ7CZLM4L7ZDIYANWJ4SDA4XNDEVOEPHAVFPUSKX465AAC XGPPA2X3G3266EVSTXGQ7ZWYOCJ32FEYPEUJV55AI5TGFYHTYTQQC DHI4FAUHYA3V7I2LKBE74AA672FVDUE2LBOZHTTL3EAE4YJP2ICAC 7P5WSNAGXFBICVTPQO6EHXMJ7O2HAYOIGVRS37EPA5GDQY7KUMIQC BMGB25AWEDOAWKDB7H22R6D4SL32CSBSOBWBIEN3GFGDLEDGEWJAC AYU5OVG2HZO46KDAPKUWAVHS5HTYFKUWIMIRMTHAXVVFEDJE7YPAC LHYPG77SUY6OKJV3KQ7CLHGSVTSLS54OGWPOVX6IP3CKLU2YJX2QC DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC AA3I6WU2SPJUPKRIPGXCLU4EZOV4QELVVZ7EIAW3H73GES5DSFXQC UAJN2CFA2QHYDHW2UFAVPPHDQFCD54RKM6V2UC4AMEDJUBBLNWIQC YO7TE72UUQA22IZVAYEFAKVFC24Q3AMVUQZHQGKVKKM34T52TJZAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC IE3INS4WUXZOBVXB5VWRBYPVPXADD2U2W5H3TBTOYNWJ3EGRSGQQC const int chance = random2(25);monster_type mon = ((chance > 8) ? MONS_WRAITH : // 64%(chance > 3) ? MONS_FREEZING_WRAITH // 20%: MONS_SPECTRAL_WARRIOR); // 16%
if (m == NULL){mpr("An evil force gathers but it quickly dissipates.");return (true);}int mi = monster_index(m);ASSERT(!(invalid_monster_index(mi)));
const int monster =create_monster(mgen_data(mon,friendly ? BEH_FRIENDLY : BEH_HOSTILE,5, SPELL_SUMMON_WRAITHS,you.pos(), MHITYOU, MG_FORCE_BEH, god));
bool friendly = true;int success = 0;int to_summon = stepdown_value(2 + (random2(pow) / 10) + (random2(pow) / 10),2, 2, 6, -1);
success = true;
const int chance = random2(25);monster_type mon = ((chance > 22) ? MONS_PHANTOM : // 8%(chance > 20) ? MONS_HUNGRY_GHOST : // 8%(chance > 18) ? MONS_FLAYED_GHOST : // 8%(chance > 7) ? MONS_WRAITH : // 44%/40%(chance > 2) ? MONS_FREEZING_WRAITH // 20%/16%: MONS_SPECTRAL_WARRIOR); // 12%if ((chance == 3 || chance == 8) && player_see_invis())mon = MONS_SHADOW_WRAITH; // 0%/8%const int monster =create_monster(mgen_data(mon,BEH_FRIENDLY,5, SPELL_SUMMON_WRAITHS,where, mi, MG_FORCE_BEH, god));
}void mons_cast_haunt(monsters *monster){coord_def fpos;switch (monster->foe){case MHITNOT:return;case MHITYOU:fpos = you.pos();break;default:fpos = menv[monster->foe].pos();}_do_high_level_summon(monster, mons_near(monster), SPELL_SUMMON_WRAITHS,_pick_random_wraith, random_range(3, 6), GOD_NO_GOD, &fpos);
return;case SPELL_SUMMON_WRAITHS:_do_high_level_summon(monster, monsterNearby, spell_cast,_pick_random_wraith, random_range(3, 6), god);