monster-creating spells, and avoid assertion failures caused by setting an abjuration duration of 0 and a spell_type to something other than 0.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8162 c06c8d41-db1a-0410-9941-cceddc491573
XGPPA2X3G3266EVSTXGQ7ZWYOCJ32FEYPEUJV55AI5TGFYHTYTQQC
SZZXVYILGCHJC3NI3RWK2GQQEEN46SGQO2IRJYSEQ4DLHNIUZS3AC
MJLQ4KWA2RV6L45QWWUIU4ABW4NGQ5A3DUJHO2XYJ3KNDNWSF6XQC
XWC7QAAK6UYBQED7MTA4NO7EOEYM4IEJAKLZWERCPUER2GCVY33AC
NNHSQNYOLBUL6C5W7NNM7XYRHJZKU3ALJZKA5YIPQQVQ7GWPWL7QC
WEXUI7XAIWYPGH6BNFTFXR5UHPHMSUV2BQS3RKBH67MFHZ7HK6JAC
EC76VUBNPZVDOVDX3KPSDF3KCNMOOGXZEALYVDATPE42BCA4GUVQC
AA3I6WU2SPJUPKRIPGXCLU4EZOV4QELVVZ7EIAW3H73GES5DSFXQC
G6U4Z6D52TVBX4MQLECOVYDMYUV4SCOX3K7LRGASRKTFILS7NVKQC
SLLTYX5LKR3TL75K5CTVINM42WQR5XY5HWYROSCXHP4DTFEGTCMAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
N3NXT75G2JYKVON7ZTE3TG34BBWITCL2HHVQ6H7QREYCDTVQFSGAC
KLCR26P7MSX4ZWIHQHRK7BZH7M2QGCITN46FCFVHNX7U7WQWYDAQC
GP7DDCLYNLI6SDXJJ7MH6XHXS5FGFM4SNL2J7J5DGE2EJOETJPHAC
3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC
AYU5OVG2HZO46KDAPKUWAVHS5HTYFKUWIMIRMTHAXVVFEDJE7YPAC
4SWAT5KCKQV527NKELAXFQ5XA4Q5HONQXD4VBXMUZNPVPQKPCPNAC
DZD6YG52TXNI4CJ2FRGFULBH6G5MDLRVQV3X3V35AW533Z3TVBKAC
XMQ2SLCLZOJMBDJYLSQKQRJ3FGLMEEESBS4N3C2LD4Y4BFHRU4HQC
Y5IKTUDW3HOMUJBEUKVTLM4KZTNX4KMPE544A5LFY2S2BKSQRNSQC
WZWOQZCXUB7QX7PGQMIUCH5JM5YME25GE2GMMT2NIJP5OIZUZLBQC
AX7U6QDL2V7RIIB26R7YUCDD36OE7LCEWBQXYJUST2ZURV2VBZZQC
KJO5N6UIPKQ6TZNNOWZEHUAWZNUW7CAHLIW2ARX47K4SIE3N5LYAC
UW6UG6U4J27IFH2472MBAU6BT7AUKO5YW7YOTYZ5KX4JRHUNORUAC
2ED6A5MQQW2S74LJO3T23TRWWVYAAF2ZN6PXH7LRDK64RWKMOVLQC
SYNARO4WXXFW5D6XQYFPSNS23LK44OPQPKPUD4PNL3AWKQWGA5WQC
GB3AUQG7L5SP2UWS4SBW6OTBTHHDQA7W2TVPOVDWWFPQ4GEDV27QC
BH2RBXQLAMSL2UYMSB7XGDEDO3WZRTJXKMFKDMYCPKEXNBX3YDXAC
ZI3XDQ75HFW54FG6ZK6ERZYV6FEXUGFY35Z6VZMKMQK3IMDG6XBQC
NFJKJYTT6CBLOKLGT6HIVIDEPWXMGXJV5AAL37SBZTG2HSFMJMKQC
ARUYZ6FYS52BELXCRNAU3EREQHTFTIGZWHZPL4OLKQRL6MFNMCHAC
M3CHZA76JC34OROJ2A3HD5KBAFYMU3D7HYZPXT6UOD5DUNIDWT7QC
L5J2VB34AN7QGOSP5SVJ5FTXDVYCY34VHN3M6VLRGPBMPUHBNZQQC
D5XNQEDVMK5UZPEE2HI7BNESRN7Y23FQ44LXJDURDLFBN6GUNYHQC
NQ2PC2EO6VIBYU5MR4LNSLV3LDOYABKSKZEVEDTML6BAJAQAWWBAC
U3KGUJJQWQORJIIFH3ADVNIEEX5HOX6KEOXO7DJSL7L3Z6GG3PAQC
UME4OHLPT46275QEB5TLLWKQR34D632UEH44QK3Y353A7RPNE6WAC
EJYL6BLIGHOMKK35VYL2X2MT2HILY2XGKIP4NYU6Q7R5YTYEAT5QC
XQYNQDAY5HSS57HPEH3GG3OZHAK6NUQZUU5DHZSJ3H7TAFZPMWZAC
XEZ5PLCFGH7YHIQVUCB3VO5C35DXE7N4RSBC7M3AKXJW4OBDZWVQC
PWY4VZVHDLYL7UVNCCOW7BM7LYK2BOGTL23P75HXUJ33MHJPEJPQC
GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC
3XL4DKV7PSWAU3ZBJSKZFJ2VUYABC47I7KKWGIRCJYXULQD453MQC
JOE4G4IU6O64WRW4CYDALGFCN6XHDI57MGLBBDHS4KHFLAH473PAC
7O3C7BZXXFHJQQMLE636R26QJPETYRADNLVJWQDJYGWLQFEG2ISAC
KQNMFSLV62B4ANDKTUZ7LQH2MD2NDGNCP55MKM5YAATQ4T52H2PQC
Y2NYY7HWFZ2LQDK3ACSLGS37F2J2IJ5LRGCIMZYXLEOSVPD3A4DAC
5ETBQI75XWCYG5UALQR6TKD7FCJYTCVQEN64D6OHXVOGO3QB3AKAC
DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC
7OUAAZXWRGOXSQR5ELUZ25KQ5DMWAZBBPFIIZNSEXTTANSJKONLAC
OEITBWQWZDJ2VBG24XPTJYA445XKT3X7XHGZL3F2WX4IVZEXQL5QC
JBB7GZTVO3UJSPFVELSP4WPJZ5SC5LY36FJJ7WF2BJGZTVPNIV3AC
3BYQVNIM2NMSGEW7MJCZDSH5WSQQDM5NKJFGR4GVMB6DGAOCOEXAC
DQBVHSQ2AD3666R763NHIJ7KVJ7GER5NHXPVQCISIUFSNNRSIM6QC
YO7TE72UUQA22IZVAYEFAKVFC24Q3AMVUQZHQGKVKKM34T52TJZAC
UAJN2CFA2QHYDHW2UFAVPPHDQFCD54RKM6V2UC4AMEDJUBBLNWIQC
XLFUVG5L5ESJZAGXKU4QQE6FUJPOQG75TWOVCBWFMD6EDIEIE3OAC
KEYK3CH5J46U6TTOKTWRNMYTZXMQXFVEAZUC4ZQ4QCOSJHVIBDRQC
I2OEVGXBBJ3MFLF7GCYA73LMKUFXMZ72YQER66VGJ4HJM5WK5ZIAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
3RNRFLMD2X4RUFTDVITLXAP377YB6F6YMQLL3DAXSUZDZBTWSLRQC
ZUV76RGZDBOY745YXVMGFUOWEH2B47J74BCT5MDKHIDHC4URGMKAC
AZEDPVKNGB4BVHN2XBSBQAC3RCG7AWT3TWPH7ATUG43RQADRPNKAC
5AZ6MLZVJXRGXNJYLWDQB5RS3A3GKIYS52RA4SOST3PR2FTFNNNQC
XGAEDOORDNSVEDQ577A7QNKMYJJ2BZXFL6JITM7RAVRIDHHBRJXAC
7P5WSNAGXFBICVTPQO6EHXMJ7O2HAYOIGVRS37EPA5GDQY7KUMIQC
57QTW7NCMZ7EU7BDETQP252YVCJZJWSEFV7MHF5OXESSNBDH3CFQC
UPA65AL4JXYLIHH4D42IWJHRTOAF2BPOVZOAKOXBLZBYIMDZDFFQC
7XJLSTDZDOSHW6JF3Y4545YGGK5BC2SOXJVQXXVOFR3I7PXYUJZQC
QHQ3XPTZT5KCOGNPTZS62XEBHO7NQUXZ2YZ2GGBDAJJ4JMT2N3XQC
5XNQ3SSNBFXFNWA6DPM74W6FH65NX665P3DMH6YCWVFOPZTJSYCQC
FVKF37R37QZRNUKHBLKGKA3YU2YH3DDQZR54QCARFBZWIVRWSSCAC
B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC
MWA35QHODXDNH2OYJ3URQQOXSEONHFXY4OG4VMGHYBBTAC777NLQC
// If data.abjuration_duration == 0 then data.summon_type will simply
// be ignored.
if (you.penance[god] > 0)
data.summon_type = MON_SUMM_WRATH;
else if (source == ZOT_TRAP_MISCAST)
data.summon_type = MON_SUMM_ZOT;
else
data.summon_type = MON_SUMM_MISCAST;
// If data.abjuration_duration == 0, then data.summon_type will
// simply be ignored.
if (data.abjuration_duration != 0)
{
if (you.penance[god] > 0)
data.summon_type = MON_SUMM_WRATH;
else if (source == ZOT_TRAP_MISCAST)
data.summon_type = MON_SUMM_ZOT;
else
data.summon_type = MON_SUMM_MISCAST;
}
static bool _summon_demon_wrapper(int pow, god_type god, monster_type mon,
int dur, bool friendly, bool charmed,
bool quiet)
static bool _summon_demon_wrapper(int pow, god_type god, int spell,
monster_type mon, int dur, bool friendly,
bool charmed, bool quiet)
static bool _summon_demon_wrapper(int pow, god_type god, demon_class_type dct,
int dur, bool friendly, bool charmed,
bool quiet)
static bool _summon_demon_wrapper(int pow, god_type god, int spell,
demon_class_type dct, int dur, bool friendly,
bool charmed, bool quiet)
static bool _summon_holy_being_wrapper(int pow, god_type god,
holy_being_class_type hbct,
int dur, bool friendly, bool quiet)
static bool _summon_holy_being_wrapper(int pow, god_type god, int spell,
holy_being_class_type hbct, int dur,
bool friendly, bool quiet)
abjuration_duration(abj), summon_type(0), pos(p), foe(mfoe),
flags(monflags), god(which_god), number(monnumber), colour(moncolour),
power(monpower), proximity(prox), level_type(ltype), map_mask(0)
{
}
mgen_data(monster_type mt,
beh_type beh,
int abj,
int st,
const coord_def &p = coord_def(-1, -1),
unsigned short mfoe = MHITNOT,
unsigned monflags = 0,
god_type which_god = GOD_NO_GOD,
monster_type base = MONS_PROGRAM_BUG,
int monnumber = 0,
int moncolour = BLACK,
int monpower = you.your_level,
proximity_type prox = PROX_ANYWHERE,
level_area_type ltype = you.level_type)
: cls(mt), base_type(base), behaviour(beh),
// Non-spell "summoning" types to give to monsters::mark_summoned(), or as
// the fourth parameter of mgen_data's second constructor.
// Non-spell "summoning" types to give to monsters::mark_summoned(), or
// as the fourth parameter of mgen_data's constructor.