These are:
Tweaked make_book_theme_randart() to allow for one forced spell and owner's name. Used to occasionally give Roxanne a randart book containing Statue Form. (Was: always book of earth)
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8207 c06c8d41-db1a-0410-9941-cceddc491573
2FHNLTLN3DVVD67N4QMAQ2LO7YY4GVZWXJAOIWGCCYYGIX7UHSVQC
6RQ5YXKQ2UQEDYE7C57IVGJH2DFVUZE2IB5UPYEWJL6LSNTYUUJAC
NMQJRQVXOKOQADYBO5JJKVMNYOOIKVVHPMZ2ZO4ZC52U34P2EPBAC
S5RANRFX6SRLISGDLFVHDWHWXZ4IIEMM23FMY4IHK5PZQBLRTTYAC
P6JHIG4GFZEBV3XFKWZMZRUD6PJWQKNPG6CUNIWBYV3WHBY73ONQC
DAB4UJ6EPV46LAI7QWYRELMJ4ZCFNNR3KVQFIVMULDV3VHYYFQLAC
JWJGOMVBPZRSP2VSHLFFFDIF2CS6UPBA6AHL7DAJWGBCHAV3PJDQC
2OY3EXIBFR22QCCKPZOA37YUI7CX7BEKRRYSDSBDKQN6VTDBD7LAC
2I5XEYRJKLUS7MO42MCR6KT2URGFQ3YDKTNTIBNKVKLX5LMG6CEQC
HM6NOS7BN5665KWIFGBXOHZIDMRSVCESN72GMGI6NVBFZGCF3L6QC
CCDQMJMMVC6MIZRZ6JSKKCMEDPUGEVVSFPJUOC5WP63J6SX35MXAC
Z2GW2JB2K2MS67IU7O566FX7PSJPZIFN52PWECBBSJMB4LS6HXUQC
G7ZXJ4RUQB3U5NL2DEWXMTHRRDT7WTONWKTPOOGWFCE46ZWUVLOQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
QO5ZJWQ3JK3PEGBPTQSAYIPEJEHG2M2KTD74227G5VG7DVXUL3BQC
FWNNTOEERPUKXPE4OC52UABFZLKIU3O5GRNNLDK4QI4HR2IOU36QC
CEZMQA2KOTLG7IO5QBVAM2OALIZJ45CFLNLCG3OQA6IX6URDCCYAC
6F6OFJCUOBUP7QTVWSMSQPW25RLVRYVXO3VO5GLMFRY6K5RMOWFAC
CCRQESB4ADT4WA7FGLNZZXAJ6G5QMCTYCZIWORBN45P6ZPILC34AC
LUH6GAJODIQXNPBEHMSUTKH3KA3DYVRCKZ6GJJ4HHNHOIMMUEP6QC
IXLNOTBJGHKESBCTME6QAR6XVWFNCHYGMS62V62ZJEA7VLQHXO2QC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC
BUSA7O6EFBZVAG2RL5T7MD2WTWKOEKKIAAZ2VS4Y3L6ECT4HQR6QC
TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC
4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC
T4FNOPMWYYJHJBTTY33PB43HTJPKEC46L62YERTWIX73HYZSELXQC
MIMW5CBZXQEGL6BFKK2LK322VRSBADFF7AXMC24F3OBCDUYKQTGQC
2DORUQ4B574MDOOMRYWGU5I72AKHMCSTZ6B3VSHQBUQOZYHRC7FAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
TZ55IZNANEJO2WDTKYWVLY2W2VV6BR7WKIN7XLNISAMMFT6LG2WQC
IIK2W5J4NQWD3BVXPJDUCTONSF2ENXPSZBWMZCBC25RCTNMKSK6AC
IPQ63XIUPHFMCQOZZAVSGCJOZFDRDWZTUUJSAUMARNDUFLBEMYIAC
5DTIUKGTVV66QTZE2DFRBGGBCS57NVM4H6DRQRYEJNWJ2LYFRARQC
RKFHYYANUZQHOWOE6YHVFFJNCZU7X67FWUQPQFF6KJKMNIKXFWEAC
QS3ZRS3E6KL3YJHPKYEWCWJYRBJSXD5OOYF6Y25HZVECGPJRDB5QC
Q6WLX2VTRJ3LGDPWBH5WKQM7CIIJ5H6AEIKMXPF2PJA5JX5ZLUZQC
WQIEW3O4MANA2KKYRUWEZP44KHVJ4RRHEZTDXSF4EDELX66LO26QC
KS4WBDOLZ45T5Q742JZQIRN3H7XZTYDPM4TCIAILIRO3OV7ANR2AC
EJYK3CKIEMP4NMZUCMUYLHIBE7A3LPZOU7DUON5V7CPHY7QEKLEAC
UAJN2CFA2QHYDHW2UFAVPPHDQFCD54RKM6V2UC4AMEDJUBBLNWIQC
OP6CTAKWCAU64JXQ3USQYR5E5IFHQHNCACII5UMVRXUTZXJQOAZAC
3WHI3KM43ZCN4ITJLFQQBQBC4OJPRS7QTBPIQ6QBCUVKRSK476SAC
5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC
WMHFDQKUDCUGM3R245LLVZ5NNEZSCXFDSTNMVS2O5EFUHHO7HU3AC
OSGS3PH2L5CBTDVZCZS6OCFQNA4A7RMEXBYJQB7DDZBYYJW7QSSAC
CG4TL4AKSN4J7CMATZFJ5N7PSDCQXLS3QYX7PZ3K67KMMBT675OQC
2QVYB344D5ACPD2ZTKAYJHC54AUETODV4EU5R7RFJ5S426XSBT5AC
MHWSAWELF3VEV52PNGAI43GK7OGF5PTYATO4O7ERZ75O7RCRKQRQC
C7RRWT4OPLL3MLBTFYI2Z4PJX2DMS2QHKDLTLQBGR3LD6UCO6XEAC
YFACWAHJI6DAZDNCI7C4NSSPYFRAKORZTXUFX6PRM6JQ7GCQKHGAC
7Y3S4RV2RP433W4PD2MFJCZTR7OKP62KXYLEEHWUBXJLVX6EOMHQC
QAUXI2U6XHSKZTLWIDBACYCHVFEKHFZSS3TMSADAJKH2TJGDYJRQC
HQWYYWOSTVGQWEH5ONUYGT3ZZX73CBFZL4BW4USZK34L6KBAYRAQC
JFDTUUUT6AKIGPBKGYFC7HZKGQUZOMG7EUWU4QYKSDVXXPQBBFHAC
W4NSRSRRGLNYFSAHRXGXXZSQ4XCNFSDCPZOYJPDPIXYOXHUBWWPQC
F6LX36GU6BWJFJLV2JNVM6PWTMQ35R33EOMQNGGQNQY67V2LJVIAC
VX2D7IVDD7OFX55ZVY5NKPITC3XWNJX4WSEBBTYASMXKJY5E7VBAC
FEQ5JZXDHM2SCZGWVJO76HQBYZRKRNR5DYXACUMQYOG3X3TIFO6QC
LIGJ4EFGYMNHEEC2K3SMXTXULAB2U5LCRVTGTEYJLU74KKK6OIMAC
AOAY6DBJDKJXJ3G4ROBIKYR4UUDKI5Y6TBP6N7DAONV75OEVOGUQC
FUEEIUKGHHFPIRZCN3N753GONWAZTWQ2ZWR53IBJAAZ6FZUNGOMAC
56ICTLPN524NZO4F7QRN2G7R55L4XKC73XYYAHCUUU7GK3XIYDXQC
DYBB7LISQQKT734KRIQZCO67OGDQWLZ2KSTDZUY4BZFCCOIDTUWAC
4VK7VHWRVRO66BRSGTBPSYJGGXLRF6AG6G74UDTPHTPXR7ZRNINQC
UEOAUCQN2CGVHV2EYBZL3M4QKTINCOLY4INQ4Z4NNGMRWSIIPXQAC
4OSUVBYSWHTVNVQXDFLVJELPMVYV2CBWDYRQQSFTTFJZ57BPZM5QC
K25HMGF5625EQYQENFEWILNFIBK5FAZYYURPJV6UPIPIRWW5FNXAC
Q3DNEB5OOJ34P5ML4CMK3L6SCP7RLW7DDOZEG24KZBX3C7BJRQDAC
DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC
TZ2SH2SPO5TFSFL2OCV5A32P2X4CRHEKEK7ENUFCBVF3RKUWAD4AC
T7CUIVICB74342RA32BR37T36FOX4RBSQIB5PNOHTGTGUYGDKSTQC
UZTLX4J6HKEAPFLUWL4WVUXZKSUONPOEJVLG5Q5MC4HEYBYERRIQC
L4PKJZERR7WADKWHY3MR6J6OZFREVPL3CB43I6MLJ2BVKWCUTE7AC
BGJ7P65JV2OFVXMGAJDHV5Y36TR7JOFDWJUZJBHUBD7SCQMDRBEAC
6L4EP4ZRWWYLT55PD5KTTJON5J2JB5VV5MWNHF5VPZQZ5BKEYZ4QC
TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC
45EMD3KLQPMERNMIKU5G76H6556XOMIW352TSBP7VLWJX2YYGS7AC
JNB3PBPBJHDUHH47ZICB25QENPTMLYK7CXC5BXRVWZ3J3ZZPKCUAC
Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC
I7QLYOTE6DLQZM7YWUWYLKHRJRB2A3STQ42ALSRGQICEWKD2QTEQC
S3NE6MVA6EPJE4HRAPF57NPASFIE4XUJ5MNF4IIL5R5CCZNFHJAQC
Z6343ZVG2VOE7WOLBS7YLIWJ6XGCRCGJRJLP5WUVRTG7VOIXRRLAC
BMHUBADDGIOZRVN4P3O5QKIDUYD4RFWBS7MP5X6LZWAYHUBRVD2QC
6TEISZD7HYSSL24EOKIBNURU66KGSQX7B7SNAHBP4DQSAOTGH2MQC
G5WLU3B4MR3ZDJLGR6OHNIMLZXGQS2EWBJ5YYY5J2GWM6DTD44BAC
YM3U5YZEFIYLRJVDWQCSP75JL56WC36XLQSL5ZBT4IWSXYJRBCBAC
// Takes a book of any type, a spell discipline or two, the number of spells
// (up to 8), the total spell levels of all spells, a spell that absolutely
// has to be included, and the name of whomever the book should be named after.
// With all that information the book is turned into a random artefact
// containing random spells of the given disciplines (random if none set).
// NOTE: This function calls make_item_randart() which recursively calls
// make_book_theme_randart() again but without all those parameters,
// so they have to be stored in the book attributes so as to not
// forget them.
if (god != GOD_NO_GOD)
{
name = '"';
name += god_name(god, false) + "'s ";
}
if (!owner.empty())
name = owner;
else if (god != GOD_NO_GOD)
name = god_name(god, false);
// Give Roxanne a randart spellbook of the disciplines Transmigration/Earth
// that includes Statue Form and is named after her.
void make_book_Roxanne_special(item_def *book)
{
int disc = coinflip() ? SPTYP_TRANSMIGRATION : SPTYP_EARTH;
make_book_theme_randart(*book, disc, 0, 5, 19,
SPELL_STATUE_FORM, "Roxanne");
}
}
},
{ MST_GERYON,
{
SPELL_SUMMON_BEAST,
SPELL_SUMMON_BEAST,
SPELL_NO_SPELL,
SPELL_SUMMON_BEAST,
SPELL_NO_SPELL,
SPELL_SUMMON_BEAST
}
},
{ MST_DISPATER,
{
SPELL_SUMMON_GREATER_DEMON,
SPELL_BOLT_OF_IRON,
SPELL_SUMMON_DEMON,
SPELL_LIGHTNING_BOLT,
SPELL_HELLFIRE,
SPELL_SUMMON_GREATER_DEMON
}
},
{ MST_ASMODEUS,
{
SPELL_BOLT_OF_FIRE,
SPELL_HELLFIRE,
SPELL_SUMMON_DEMON,
SPELL_SUMMON_GREATER_DEMON,
SPELL_BOLT_OF_DRAINING,
SPELL_TELEPORT_SELF
}
},
{ MST_ERESHKIGAL,
{
SPELL_BOLT_OF_DRAINING,
SPELL_BOLT_OF_COLD,
SPELL_SUMMON_GREATER_DEMON,
SPELL_SYMBOL_OF_TORMENT,
SPELL_PARALYSE,
SPELL_LESSER_HEALING
}
},
{ MST_ANTAEUS,
{
SPELL_BOLT_OF_COLD,
SPELL_LIGHTNING_BOLT,
SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_NO_SPELL
}
},
{ MST_MNOLEG,
{
SPELL_SUMMON_GREATER_DEMON,
SPELL_SMITING,
SPELL_INVISIBILITY,
SPELL_SUMMON_HORRIBLE_THINGS,
SPELL_SUMMON_HORRIBLE_THINGS,
SPELL_TELEPORT_SELF
}
},
{ MST_LOM_LOBON,
{
SPELL_ICE_STORM,
SPELL_CONJURE_BALL_LIGHTNING,
SPELL_GREATER_HEALING,
SPELL_BLINK,
SPELL_BLINK,
SPELL_TELEPORT_SELF
}
},
{ MST_CEREBOV,
{
SPELL_FIRE_STORM,
SPELL_BOLT_OF_IRON,
SPELL_HASTE,
SPELL_HASTE,
SPELL_SUMMON_GREATER_DEMON,
SPELL_HASTE
{ MST_GLOORX_VLOQ,
{
SPELL_POISON_ARROW,
SPELL_MIASMA,
SPELL_SYMBOL_OF_TORMENT,
SPELL_BOLT_OF_DRAINING,
SPELL_DISPEL_UNDEAD,
SPELL_INVISIBILITY
}
},
{ MST_ICE_STATUE,
{ MST_ROXANNE,
{
SPELL_LEHUDIBS_CRYSTAL_SPEAR,
SPELL_BOLT_OF_IRON,
SPELL_BOLT_OF_MAGMA,
SPELL_STONE_ARROW,
SPELL_ISKENDERUNS_MYSTIC_BLAST,
SPELL_SANDBLAST
}
},
{ MST_SONJA,
{
SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_BLINK,
SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_TELEPORT_SELF
}
},
{ MST_EUSTACHIO,
{
SPELL_SUMMON_SMALL_MAMMALS,
SPELL_CALL_IMP,
SPELL_BLINK,
SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_BLINK
}
},
{ MST_ILSUIW,
{
SPELL_THROW_FROST, // was: SPELL_CONFUSED
SPELL_SLOW,
SPELL_INVISIBILITY,
SPELL_BLINK,
SPELL_WATER_ELEMENTALS,
SPELL_WATER_ELEMENTALS
}
},
{ MST_PRINCE_RIBBIT,
{
SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_TELEPORT_SELF
}
},
{ MST_GERYON,
{
SPELL_SUMMON_BEAST,
SPELL_SUMMON_BEAST,
SPELL_NO_SPELL,
SPELL_SUMMON_BEAST,
SPELL_NO_SPELL,
SPELL_SUMMON_BEAST
}
},
{ MST_DISPATER,
{
SPELL_SUMMON_GREATER_DEMON,
SPELL_BOLT_OF_IRON,
SPELL_SUMMON_DEMON,
SPELL_LIGHTNING_BOLT,
SPELL_HELLFIRE,
SPELL_SUMMON_GREATER_DEMON
}
},
{ MST_ASMODEUS,
{
SPELL_BOLT_OF_FIRE,
SPELL_HELLFIRE,
SPELL_SUMMON_DEMON,
SPELL_SUMMON_GREATER_DEMON,
SPELL_BOLT_OF_DRAINING,
SPELL_TELEPORT_SELF
}
},
{ MST_ERESHKIGAL,
{
SPELL_BOLT_OF_DRAINING,
SPELL_BOLT_OF_COLD,
SPELL_SUMMON_GREATER_DEMON,
SPELL_SYMBOL_OF_TORMENT,
SPELL_PARALYSE,
SPELL_LESSER_HEALING
}
},
{ MST_ANTAEUS,
SPELL_FREEZING_CLOUD,
SPELL_SUMMON_ICE_BEAST,
SPELL_SUMMON_ICE_BEAST
SPELL_NO_SPELL
}
},
{ MST_MNOLEG,
{
SPELL_SUMMON_GREATER_DEMON,
SPELL_SMITING,
SPELL_INVISIBILITY,
SPELL_SUMMON_HORRIBLE_THINGS,
SPELL_SUMMON_HORRIBLE_THINGS,
SPELL_TELEPORT_SELF
{ MST_LOM_LOBON,
{
SPELL_ICE_STORM,
SPELL_CONJURE_BALL_LIGHTNING,
SPELL_GREATER_HEALING,
SPELL_BLINK,
SPELL_BLINK,
SPELL_TELEPORT_SELF
}
},
{ MST_CEREBOV,
{
SPELL_FIRE_STORM,
SPELL_BOLT_OF_IRON,
SPELL_HASTE,
SPELL_HASTE,
SPELL_SUMMON_GREATER_DEMON,
SPELL_HASTE
}
},
{ MST_GLOORX_VLOQ,
{
SPELL_POISON_ARROW,
SPELL_MIASMA,
SPELL_SYMBOL_OF_TORMENT,
SPELL_BOLT_OF_DRAINING,
SPELL_DISPEL_UNDEAD,
SPELL_INVISIBILITY
}
},
},
{
MONS_BLORK_THE_ORC, 'o', BROWN, "Blork the orc",
M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_NO_FLAGS,
0, 15, MONS_ORC, MONS_ORC, MH_NATURAL, -4,
{ {AT_HIT, AF_PLAIN, 7}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 3, 0, 0, 32 },
0, 9, MST_ORC_WIZARD_III, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_NORMAL,
HT_LAND, 8, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM
},
{
MONS_URUG, 'o', RED, "Urug",
M_FIGHTER | M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_ORC, MONS_ORC, MH_NATURAL, -5,
{ {AT_HIT, AF_PLAIN, 12}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 6, 0, 0, 66 },
0, 11, MST_NO_SPELLS, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_NORMAL,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM
},
{
MONS_EROLCHA, 'O', LIGHTBLUE, "Erolcha",
M_SPELLCASTER | M_ACTUAL_SPELLS | M_SEE_INVIS | M_WARM_BLOOD
| M_SPEAKS | M_EVIL | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_OGRE, MONS_OGRE, MH_NATURAL, -7,
{ {AT_HIT, AF_PLAIN, 20}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 6, 0, 0, 54 },
3, 7, MST_NO_SPELLS, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_NORMAL,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_LARGE
},
{
// Snorg can go berserk.
MONS_SNORG, 'T', GREEN, "Snorg",
M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 25, MONS_TROLL, MONS_TROLL, MH_NATURAL, -6,
{ {AT_BITE, AF_PLAIN, 20}, {AT_CLAW, AF_PLAIN, 15},
{AT_CLAW, AF_PLAIN, 15}, AT_NO_ATK },
{ 8, 0, 0, 96 },
0, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_NORMAL,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_OPEN_DOORS, SIZE_LARGE
},
{
MONS_TIAMAT, 'd', MAGENTA, "Tiamat",
M_UNIQUE | M_SEE_INVIS | M_FLIES | M_COLD_BLOOD | M_SPEAKS,
MR_RES_POISON,
0, 10, MONS_DRACONIAN, MONS_DRACONIAN, MH_NATURAL, -5,
{ {AT_HIT, AF_PLAIN, 65}, {AT_TAIL_SLAP, AF_PLAIN, 45},
AT_NO_ATK, AT_NO_ATK },
{ 22, 0, 0, 380 },
25, 10, MST_NO_SPELLS, CE_NOCORPSE, Z_NOZOMBIE, S_ROAR, I_HIGH,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_STARTING_EQUIPMENT, SIZE_MEDIUM
{
MONS_AZRAEL, 'E', LIGHTRED, "Azrael",
M_UNIQUE | M_SPELLCASTER | M_LEVITATE | M_EVIL | M_GLOWS | M_SPEAKS,
MR_RES_POISON | mrd(MR_RES_FIRE, 3) | MR_VUL_COLD,
0, 12, MONS_EFREET, MONS_EFREET, MH_DEMONIC, -3,
{ {AT_HIT, AF_PLAIN, 12}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 11, 3, 5, 0 },
10, 5, MST_DRAC_SCORCHER, CE_NOCORPSE, Z_NOZOMBIE, S_SILENT, I_HIGH,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_LARGE
},
MONS_TIAMAT, 'd', MAGENTA, "Tiamat",
M_SEE_INVIS | M_UNIQUE | M_FLIES | M_COLD_BLOOD | M_SPEAKS,
MR_RES_POISON,
0, 10, MONS_DRACONIAN, MONS_DRACONIAN, MH_NATURAL, -5,
{ {AT_HIT, AF_PLAIN, 65}, {AT_TAIL_SLAP, AF_PLAIN, 45},
AT_NO_ATK, AT_NO_ATK },
{ 22, 0, 0, 380 },
25, 10, MST_NO_SPELLS, CE_NOCORPSE, Z_NOZOMBIE, S_ROAR, I_HIGH,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_STARTING_EQUIPMENT, SIZE_MEDIUM
MONS_PRINCE_RIBBIT, 'F', LIGHTCYAN, "Prince Ribbit",
M_UNIQUE | M_COLD_BLOOD | M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS,
MR_NO_FLAGS,
800, 12, MONS_BLINK_FROG, MONS_HUMAN, MH_NATURAL, -5,
{ {AT_HIT, AF_PLAIN, 20}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 6, 3, 5, 0 },
3, 12, MST_PRINCE_RIBBIT, CE_CONTAMINATED, Z_SMALL, S_CROAK, I_NORMAL,
HT_AMPHIBIOUS_LAND, 14, DEFAULT_ENERGY, MONUSE_NOTHING, SIZE_LITTLE
},
{
MONS_SONJA, 'K', RED, "Sonja",
M_UNIQUE | M_WARM_BLOOD | M_SPEAKS | M_SPELLCASTER | M_ACTUAL_SPELLS
| M_SPEAKS,
MR_NO_FLAGS,
400, 10, MONS_KOBOLD, MONS_KOBOLD, MH_NATURAL, -1,
{ {AT_HIT, AF_PLAIN, 9}, {AT_HIT, AF_PLAIN, 5}, {AT_HIT, AF_PLAIN, 5}, AT_NO_ATK },
{ 6, 2, 3, 0 },
2, 24, MST_SONJA, CE_POISONOUS, Z_SMALL, S_SHOUT, I_NORMAL,
HT_LAND, 14, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_SMALL
MONS_ILSUIW, 'm', GREEN, "Ilsuiw",
M_UNIQUE | M_WARM_BLOOD | M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS,
MR_RES_POISON | MR_RES_COLD,
500, 10, MONS_MERFOLK, MONS_MERFOLK, MH_NATURAL, 90,
{ {AT_HIT, AF_PLAIN, 10}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 9, 2, 4, 0 },
5, 18, MST_ILSUIW, CE_CONTAMINATED, Z_SMALL, S_SHOUT, I_NORMAL,
HT_AMPHIBIOUS_WATER, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM
},
{
MONS_BLORK_THE_ORC, 'o', BROWN, "Blork the orc",
M_UNIQUE | M_SPELLCASTER | M_ACTUAL_SPELLS| M_WARM_BLOOD | M_SPEAKS,
MR_NO_FLAGS,
0, 15, MONS_ORC, MONS_ORC, MH_NATURAL, -4,
{ {AT_HIT, AF_PLAIN, 7}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 3, 0, 0, 32 },
0, 9, MST_ORC_WIZARD_III, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_NORMAL,
HT_LAND, 8, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM
},
{
MONS_URUG, 'o', RED, "Urug",
M_UNIQUE | M_FIGHTER | M_WARM_BLOOD | M_SPEAKS,
MR_NO_FLAGS,
0, 20, MONS_ORC, MONS_ORC, MH_NATURAL, -5,
{ {AT_HIT, AF_PLAIN, 12}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 6, 0, 0, 66 },
0, 11, MST_NO_SPELLS, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_NORMAL,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM
},
{
MONS_NERGALLE, 'o', WHITE, "Nergalle",
M_UNIQUE | M_SPELLCASTER | M_SEE_INVIS | M_EVIL | M_ACTUAL_SPELLS
| M_WARM_BLOOD | M_SPEAKS,
MR_RES_FIRE | MR_RES_COLD,
600, 12, MONS_ORC, MONS_ORC, MH_NATURAL, 50,
{ {AT_HIT, AF_PLAIN, 6}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 10, 2, 3, 0 },
9, 11, MST_ORC_SORCERER, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_HIGH,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM
},
{
MONS_SAINT_ROKA, 'o', LIGHTBLUE, "Saint Roka",
M_UNIQUE | M_FIGHTER | M_WARM_BLOOD | M_SPELLCASTER | M_PRIEST | M_EVIL
| M_SPEAKS,
MR_NO_FLAGS,
600, 15, MONS_ORC, MONS_ORC, MH_NATURAL, -3,
{ {AT_HIT, AF_PLAIN, 32}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 15, 4, 7, 0 },
3, 10, MST_DAEVA, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_NORMAL,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM
},
{
MONS_EROLCHA, 'O', LIGHTBLUE, "Erolcha",
M_UNIQUE | M_SPELLCASTER | M_ACTUAL_SPELLS | M_SEE_INVIS | M_WARM_BLOOD
| M_EVIL | M_SPEAKS,
MR_NO_FLAGS,
0, 20, MONS_OGRE, MONS_OGRE, MH_NATURAL, -7,
{ {AT_HIT, AF_PLAIN, 20}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 6, 0, 0, 54 },
3, 7, MST_NO_SPELLS, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_NORMAL,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_LARGE
},
{
// Snorg can go berserk.
MONS_SNORG, 'T', GREEN, "Snorg",
M_UNIQUE | M_WARM_BLOOD | M_SPEAKS,
MR_NO_FLAGS,
0, 25, MONS_TROLL, MONS_TROLL, MH_NATURAL, -6,
{ {AT_BITE, AF_PLAIN, 20}, {AT_CLAW, AF_PLAIN, 15},
{AT_CLAW, AF_PLAIN, 15}, AT_NO_ATK },
{ 8, 0, 0, 96 },
0, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_NORMAL,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_OPEN_DOORS, SIZE_LARGE
},
{
{
// Roxanne obviously can't use items, but we want to equip her with
// a spellbook, so MONUSE_STARTING_EQUIPMENT is necessary.
MONS_ROXANNE, '8', LIGHTGREEN, "Roxanne",
M_UNIQUE | M_SPELLCASTER | M_ACTUAL_SPELLS | M_STATIONARY | M_SPEAKS,
mrd(MR_RES_POISON | MR_RES_FIRE | MR_RES_COLD | MR_RES_ELEC, 2),
0, 10, MONS_CLAY_GOLEM, MONS_ROXANNE, MH_NONLIVING, MAG_IMMUNE,
{ AT_NO_ATK, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 14, 0, 0, 180 },
20, 0, MST_ROXANNE, CE_NOCORPSE, Z_NOZOMBIE, S_SILENT, I_HIGH,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_STARTING_EQUIPMENT, SIZE_LARGE
},
M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
| M_SEE_INVIS | M_EVIL | M_UNIQUE,
M_UNIQUE | M_SPELLCASTER | M_ACTUAL_SPELLS | M_WARM_BLOOD | M_SEE_INVIS
| M_EVIL | M_SPEAKS,
M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
| M_SEE_INVIS | M_EVIL | M_UNIQUE,
M_UNIQUE | M_SPELLCASTER | M_ACTUAL_SPELLS | M_WARM_BLOOD | M_SEE_INVIS
| M_EVIL | M_SPEAKS,
M_FIGHTER | M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
| M_SEE_INVIS | M_EVIL | M_UNIQUE,
M_UNIQUE | M_FIGHTER | M_SPELLCASTER | M_ACTUAL_SPELLS | M_WARM_BLOOD
| M_SEE_INVIS | M_EVIL | M_SPEAKS,
M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
| M_SEE_INVIS | M_EVIL | M_UNIQUE,
M_UNIQUE | M_SPELLCASTER | M_ACTUAL_SPELLS | M_WARM_BLOOD | M_SEE_INVIS
| M_EVIL | M_SPEAKS,
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM
},
{
MONS_EUSTACHIO, '@', GREEN, "Eustachio",
M_UNIQUE | M_SPELLCASTER | M_ACTUAL_SPELLS | M_WARM_BLOOD | M_SPEAKS,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, 24,
{ {AT_HIT, AF_PLAIN, 6}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 4, 0, 0, 40 },
0, 13, MST_EUSTACHIO, CE_CONTAMINATED, Z_NOZOMBIE, S_SHOUT, I_NORMAL,
const int thing_created =
items(0, OBJ_SCROLLS, OBJ_RANDOM, true, level, 0);
if (thing_created == NON_ITEM)
return;
// Not a scroll, but this comes closest.
int which_book = (one_chance_in(3) ? BOOK_TRANSFIGURATIONS
: BOOK_EARTH);
thing_created = items(0, OBJ_BOOKS, which_book, true, level, 0);
mitm[thing_created].flags = 0;
_give_monster_item(mon, thing_created);
if (thing_created != NON_ITEM && coinflip())
{
// Give Roxanne a random book containing Statue Form instead.
item_def &item(mitm[thing_created]);
make_book_Roxanne_special(&item);
_give_monster_item(mon, thing_created, true);
return;
}
case MONS_SONJA:
if (!melee_only)
{
item.base_type = OBJ_WEAPONS;
item.sub_type = WPN_BLOWGUN;
item_race = MAKE_ITEM_NO_RACE;
break;
}
force_item = true;
item_race = MAKE_ITEM_NO_RACE;
item.base_type = OBJ_WEAPONS;
item.sub_type = coinflip()? WPN_DAGGER : WPN_SHORT_SWORD;
{
const int temp_rand = random2(5);
set_item_ego_type( item, OBJ_WEAPONS,
((temp_rand == 0) ? SPWPN_VENOM :
(temp_rand == 1) ? SPWPN_DRAINING :
(temp_rand == 2) ? SPWPN_VAMPIRICISM :
(temp_rand == 3) ? SPWPN_DISTORTION
: SPWPN_NORMAL) );
}
break;
case MONS_EUSTACHIO:
item_race = MAKE_ITEM_NO_RACE;
item.base_type = OBJ_WEAPONS;
item.sub_type = (one_chance_in(3) ? WPN_FALCHION
: WPN_SABRE);
break;
MH_HOLY, // 0 - was -1
MH_NATURAL, // 1 - was 0
MH_UNDEAD, // 2 - was 1
MH_DEMONIC, // 3 - was 2
MH_NONLIVING, // golems and other constructs
MH_PLANT // plants
MH_HOLY, // 0
MH_NATURAL, // 1
MH_UNDEAD, // 2
MH_DEMONIC, // 3
MH_NONLIVING, // 4, golems and other constructs
MH_PLANT // 5, plants
MST_TEST_SPAWNER,
// unique monsters' "spellbooks"
MST_RUPERT = 140,
MST_ROXANNE,
MST_SONJA,
MST_EUSTACHIO,
MST_ILSUIW,
MST_PRINCE_RIBBIT,
MST_GERYON = 150,
MST_DISPATER,
MST_ASMODEUS,
MST_ERESHKIGAL,
MST_ANTAEUS,
MST_MNOLEG = 160,
MST_LOM_LOBON,
MST_CEREBOV,
MST_GLOORX_VLOQ,
MST_TEST_SPAWNER = 170,
if (player_in_branch(BRANCH_VESTIBULE_OF_HELL) && one_chance_in(7))
which_unique = MONS_MURRAY;
if (player_in_branch(BRANCH_HALL_OF_ZOT) && one_chance_in(3))
which_unique = MONS_TIAMAT;
if (player_in_branch(BRANCH_SHOALS) && player_branch_depth() > 1
&& coinflip())
if (player_in_branch(BRANCH_VESTIBULE_OF_HELL))
{
if (one_chance_in(7))
which_unique = MONS_MURRAY;
}
else if (player_in_branch(BRANCH_HALL_OF_ZOT))
{
if (one_chance_in(3))
which_unique = MONS_TIAMAT;
}
else if (player_in_branch(BRANCH_SHOALS))
A fair-haired mage, wandering and seemingly half-mad
with grief and guilt.
A fair-haired mage, wandering and seemingly half-mad with grief and guilt.
%%%%
Roxanne
A beautiful sapphire statue of a famous earth mage who disappeared after a
catastrophic spell failure.
%%%%
# efreet
Azrael
@_Azrael_common_@
w:2
@_Azrael_rare_@
%%%%
adj_flammable
flammable
inflammable
%%%%
_Azrael_common_
@The_monster@ laughs insanely.
@The_monster@ howls in rage.
@The_monster@ screams, "No! No! YES! No!"
@The_monster@ screams, "Burn! Burn! All of it must BURN!"
VISUAL:@The_monster@ blows smoke rings.
%%%%
# apprentice summoner, has funny ideas about honour
Eustachio
@_Eustachio_common_@
w:5
@_Eustachio_rare_@
%%%%
_Eustachio_common_
@The_monster@ screams, "At last I'll have my revenge!"
@The_monster@ screams, "Hey, you killed my favorite bat!"
@The_monster@ says, "Summoning is fun!"
@The_monster@ says, "My allies will avenge me."
%%%%
_Eustachio_rare_
@The_monster@ yells, "Perjured traitor, DIE!"
VISUAL:@The_monster@ twirls his moustache.
# doesn't really work if there are no summons nearby
#VISUAL:@The_monster@ strokes his familiar.
SPELL:@The_monster@ calls on the powers of Hell!
@The_monster@ brags, "I can call spirits from the vastly deeps."
## END Eustachio ##
%%%%
# a pretty merfolk witch
Ilsuiw
@_Ilsuiw_common_@
w:5
@_Ilsuiw_rare_@
%%%%
_Ilsuiw_common_
@The_monster@ asks, "Won't you come swim with me?"
@The_monster@ whispers, "Come on in, the water's fine."
@The_monster@ sings a @strange_or_haunting@ @chanty@.
VISUAL:@The_monster@ runs @possessive@ fingers through @possessive@ long green hair.
%%%%
_Ilsuiw_rare_
VISUAL:@The_monster@ gazes at you @hypnot_or_seductively@.
@The_monster@ sings, "To sleep, to sleep ... mayhap to drown."
@The_monster@ says, "It's lovely beneath the waves -- you'll see!"
@The_monster@ asks, "Do you dare to walk upon the beach?"
%%%%
hypnot_or_seductively
hypnotically
seductively
%%%%
strange_or_haunting
strange
haunting
_Prince_Ribbit_common_
@The_monster@ croaks regally.
@The_monster@ lets out a mournful croak.
VISUAL:@The_monster@ hops awkwardly around.
VISUAL:@The_monster@ catches a @_frog_food_@ with @possessive@ tongue.
%%%%
_Prince_Ribbit_rare_
@The_monster@ asks, "Just a little smooch?"
@The_monster@ sighs, "It's not easy being green!"
@The_monster@ says, "You're just another fly to me."
%%%%
_frog_food_
fly
w:5
bug
w:1
small bird
## END Prince Ribbit ##
%%%%
%%%%
# a sapphire statue of an earth mage
Roxanne
@_Roxanne_common_@
w:5
@_Roxanne_medium_@
w:1
@_Roxanne_rare_@
%%%%
_Roxanne_common_
@The_monster@ says, "Come a little closer, will you?"
@The_monster@ mutters, "When I said I wanted to live forever... this was not what I had in mind."
@The_monster@ says, "At least I didn't end up somewhere with nobody to talk to."
@The_monster@ wails, "NOOOO!"
w:20
__NONE
%%%%
_Roxanne_medium_
@The_monster@ asks, "Could you be a darling and pick up those spellbooks for me?"
@The_monster@ asks, "Say, could you scratch my back for me?"
@The_monster@ sighs and says, "It wouldn't be so bad were it not for the bird droppings."
%%%%
_Roxanne_rare_
@The_monster@ shouts, "I'd kick your ass right now if I could just get over there!"
@The_monster@ prays for a Stone to Flesh spell.
@The_monster@ wonders, "Maybe oil would work? Probably not."
@The_monster@ says, "They said I was crazy for my new spells... Turns out they were right."
## END Roxanne ##
%%%%
# orc warlord
# Only used if the player is not a Hill Orc.
Saint Roka
w:7
@related Saint Roka@
@The_monster@ says, "Down here, you're an orc or you're nobody."
@The_monster@ says, "In the orcish mines, orcs kill the likes of you."
%%%%
related Saint Roka
w:2
@_generic_orc_speech_@
@The_monster@ calls out, "Orcs! Behind me!"
@The_monster@ calls out, "Only Beogh rules here!"
@The_monster@ says, "I shall smite you and smash you."
@The_monster@ lets out a mighty cry!
@The_monster@ cries, "Beogh give me strength!"
@The_monster@ cries, "In the name of Beogh, DIE!"
@The_monster@ calls out, "Join me or die!"
_Sonja_common_
@The_monster@ says, "I'm academy-trained, you know."
@The_monster@ shouts, "Too slow!"
VISUAL:@The_monster@ twirls her cape.
VISUAL:@The_monster@ bows elegantly.
VISUAL:@The_monster@ plants her feet in a plie.
%%%%
_Sonja_rare_
@The_monster@ shouts, "Hah! Missed me again!"
@The_monster@ says, "The Royal Ballet doesn't accept kobolds. That's why I went into killing people."
@The_monster@ says, "If only old Madame Brzewit could see me now!"
@The_monster@ shouts, "Some dancing partner you are!"
@The_monster@ says, "Someone hired me to kill you, but I'm not supposed to say who."
## END Sonja ##
%%%%
%%%%
_hostile_beogh_speech_common_
# unbelievers
w:1
@_hostile_orc_beogh_unbeliever_common_@
# orcs doubting you
w:6
@_hostile_orc_beogh_believer_common_@
%%%%
_hostile_beogh_speech_rare_
# unbelievers
w:3
@_hostile_orc_beogh_unbeliever_rare_@
# orcs doubting you
w:7
@_hostile_orc_beogh_believer_rare_@