git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7550 c06c8d41-db1a-0410-9941-cceddc491573
ZBFNQZV6XCH4NUTHJU4K7RN4KLUMWNCWWO6UP7TIRASCWD5J5OMQC SQDS2YBPOYDDDCW3GGARBZ2HQIUHCQKL7SSHKFQWDENOL5YNNVNQC EH4VJW3I5Y4V6DT3YMLNDA3NW2DEAV4LRE4T5IEXAVB4WB3JJMGAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC WW6THKR7JN447YC23YYHYYNH7ABMCFFSECNUFTIJBZX6JHX6W7TAC GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC 3UKFCWWS5BLFQWZRB5FUA46CE2XGX5VRCEWC3K3XH5RCGQK64N2AC GRH4XPIYHDOXXF3R3QPMZTFHGLO2OJAZS4FLNBBXG3DHTQQM7RDQC 7YSKYUNV34XIWRTJUHJV4QMQRTXXYDIXM5AZSPSDPAYDW4B4PU6QC APGCKU4AFOV7Z7XIEO5A27H4IFUGDU227I3Z7OIRROYSLOFFBJ5AC OAPAH3WEFTT2T7NVSSENRR5JCIZYA6UZSQQ6LQEHAAXCX6FIM7HQC R2DQBWKIW7YUJB5SOQ7J274JIYRVX4H3ISFRPAL5RG2RVVP4G2KAC P5TRGRH7XMQSPCZKM5IEEO34TY6WMLGHHX7BU6Y453JFRXLUR2VQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC MXOCLQAUGWLOS7AOTYZ46JZDMRL4EVRK5YN4JJUQ76GLKBOBHEVAC R6XS2HO5QX2FJUGL5UQQRNETKCMYWTUFPHPPS5SYWK3OQA4UDUQQC : mid(id), monbase(base), number(num), genweight(gw), mlevel(ml),fix_mons(_fixmons), generate_awake(awaken), patrolling(false),colour(BLACK), items()
: mid(id), place(), monbase(base), number(num), genweight(gw),mlevel(ml), fix_mons(_fixmons), generate_awake(awaken),patrolling(false), colour(BLACK), items()
// place:Elf:7 to choose monsters appropriate for that level,// for example.const std::string place = strip_tag_prefix(mon_str, "place:");if (!place.empty()){try{mspec.place = level_id::parse_level_id(place);}catch (const std::string &err){error = err;return (slot);}}mspec.mlevel = strip_number_tag(mon_str, "lev:");if (mspec.mlevel == TAG_UNFOUND)mspec.mlevel = 0;
else if (mspec.place.is_valid()){// For monster specs such as place:Orc:4 zombie, we may// have a monster modifier, in which case we set the// modifier in monbase.const mons_spec nspec = mons_by_name("orc " + mon_str);if (nspec.mid != MONS_PROGRAM_BUG){// Is this a modified monster?if (nspec.monbase != MONS_PROGRAM_BUG&& mons_class_is_zombified(nspec.mid)){mspec.monbase = static_cast<monster_type>(nspec.mid);}}}
if (mg.cls == RANDOM_MONSTER && mspec.place.is_valid()){int lev = monster_level;if (mspec.place.level_type == LEVEL_DUNGEON)lev = absdungeon_depth(mspec.place.branch, mspec.place.depth);if (mlev == -8)lev = 4 + lev * 2;else if (mlev == -9)lev += 5;int tries = 100;do{mg.cls = pick_random_monster(mspec.place, lev, lev);} while (mg.cls != MONS_PROGRAM_BUG&& mons_class_is_zombified(mspec.monbase)&& !mons_zombie_size(mg.cls)&& tries-- > 0);if (mg.cls == MONS_PROGRAM_BUG|| (mons_class_is_zombified(mspec.monbase)&& !mons_zombie_size(mg.cls))){mg.cls = RANDOM_MONSTER;}}
If you want to place a random monster suitable for the levelthe map is generated on, you can useMONS: randomIf you want to place a random monster suitable for some otherplace, you can use a place: tag in the monster spec:MONS: place:AbyssorMONS: place:Slime:6Using place: with MONS implies that you want a random monster.You can also request zombies from random monsters suitablefor some other depth as:MONS: place:Elf:7 zombieorMONS: place:Zot:5 simulacrumorMONS: place:Vault:8 spectre