Places are saved as level_ids, not strings.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1776 c06c8d41-db1a-0410-9941-cceddc491573
ANBVGN4RZOMY5LI4QSHOV2477FN55H353ZYLSVCPTXC7AWWSQZBAC 45FTVJJ5FMXBXQ2GVUZVJZU6Y6NUYG2JZIHWVMONA7QYYCZQSM2QC 4RFKVDJKTCRBZU6WPJ2E5OVI5IRPY3UTRPOBLC5QHY4CQJJTLZKQC 6HG6JFO47Y3BZLU7Y6G3R2CX6JFGN4X5PKK6S5IGUXUYQ5GVZYFQC 5ASC3STDYCNLZFEBN6UTMUCGDETHBR2OCBZCF5VIAZ5RRWLOTDYQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC WX2VFNANQZ3IRHBXSLKJT3G3OAQREAZISXLOTG6JO7KXFBHQFOYAC 6QWZDCP5HGYLTJO3WWYJJGRRT7QFY6IG64TC7TUB553Z7GAA2HIQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC KXUQB3WNWC5IFL6VFWADEPQMMU3VV3NDI5FLA666PGOEWFYUHCLQC AYAQKTO6HOZJ44NDH5UIP6WFNB54Z5EZ4UMUISIQ67ZOIDB6OIQAC RGHXFBNIULRVRYLBGG5JZDMYVM2E2JJ2Y5KQPMU6PUS3V26G6ZXQC MSQI3TH6T62JAXQGLL52QZCWAMC372TGB6ZNNRDGUGMJKBNNV2VAC NCDWWDJQLAU5ORSAQGZKJJ5E22VTDGGPJMVVBWQFHQ2B3U3UFHDQC U7BN4TQ36FIOAGBVWQ4A6VXFZN2GETLGCLD4E3MCBA7OQ3TXYUXQC 5P64LHKJKGKIO3FUV63KFQ2OHZ5RNRV7WXS25OHXVNYYFZAVGLMAC AUXHSGS4EFOPZ6TVZYWNVOUDO7NYKUKE3HBKGQQWTALSVFOE3HAAC ZJLJGSB2XSBQU42OFQMXL3EG4CXAQGOYAU6YTV2SAWZEJIPFH2CAC SCWXQW5H65OXUP2MEJ2MEEAVPSRJDT3RQGKYCMKVTORS2334PQSQC KAGDUJFWWZGGIYQECFGRHNSQT47XIUN3ZTSETAIWLYIZ43QXGQ2AC ENXH3WOZDV5SVVQ2WIGVUOUZ7LEIEOGBHVOY7TD6DUSJEJGXU33QC KCHX2F3JFEWOZT3WMJVZAAQUU2QSZ5Q7RDCD7WUJ7VE65J52JFUQC JNB3PBPBJHDUHH47ZICB25QENPTMLYK7CXC5BXRVWZ3J3ZZPKCUAC 5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC Q5SFQO7ANODRI6OXKHPFQ4QWKGQ367S64DPURQW2TWK7ANTYO4NQC 34C4U6EQWERY75GZJKUCM5KVGU2OUICETS5LGZF6RMKMZT4R5SQAC MI7CWKRDXHAU7PIHLXXOSFBULRGT2OOMIMOSQLMVYOUVGABIVXGAC H3552BCIAVBLKAYKE4DHFLBLFW5RGRMYBMRRYHYEB5IPIJRUVU5QC }level_id level_id::parse_level_id(const std::string &s) throw (std::string){std::string::size_type cpos = s.find(':');std::string branch =cpos != std::string::npos? s.substr(0, cpos) : s;std::string depth =cpos != std::string::npos? s.substr(cpos + 1) : "";if (branch == "Abyss")return (level_id(LEVEL_ABYSS));else if (branch == "Pan")return (level_id(LEVEL_PANDEMONIUM));else if (branch == "Lab")return (level_id(LEVEL_LABYRINTH));const branch_type br = str_to_branch(branch);if (br == NUM_BRANCHES)throw make_stringf("Invalid branch \"%s\" in spec \"%s\"",branch.c_str(), s.c_str());const int dep =depth.empty()? 1 :depth == "$" ? branches[br].depth :atoi(depth.c_str());if (dep < 0 || dep > branches[br].depth)throw make_stringf("Invalid depth for %s in spec \"%s\"",branch.c_str(), s.c_str());return level_id(br, dep);
int random_map_for_place(const std::string &place, bool mini = false);int random_map_for_depth(const level_id &lid, bool want_minivault = false);
int random_map_for_place(const level_id &place, bool mini = false);int random_map_in_depth(const level_id &lid, bool want_minivault = false);
static std::string level_name(int subdepth){return place_name(get_packed_place(you.where_are_you, subdepth, you.level_type ) );}
int subdepth = subdungeon_depth(you.where_are_you, level_number);const std::string name = level_name(subdepth);std::string altname;// This dodge allows designers to specify PLACE: as Elf:$ or Slime:$ or// whatever:$ to say "last level in branch 'whatever'".if (subdepth == your_branch().depth)altname = level_name(0);int vault = random_map_for_place(name, wantmini);if (vault == -1)vault = random_map_for_place(altname, wantmini);
const level_id lid = level_id::current();int vault = random_map_for_place(lid, wantmini);