dungeon.cc.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3984 c06c8d41-db1a-0410-9941-cceddc491573
B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC DDCHJDZXKVD3OR767DLXGZG22SU2SFSDJHZUAAN73OYITFQXJAYAC NHZ3VSRYE72XHSNDHOL2P6IX7DS3FK4FDAD2MDEULM3YFJDYTYDAC D6AJOTSOJNLJBBLQC2RAQOTPJJQENNBBVNRP45CZKDUHLLZLBFFQC PJ52ZBDCBPZMFAH5VRITX3OM67W4DCSZQP3BG44GU6N3DQC2YSEAC A7NKTYZ6VZC42TSSSDEWD5ROPE3P3M5I2QSNAVUMCYJ46PCXTDPQC QJXVVCY2SB3JOFTGVYQBBIIIJRLBTUJCBWOTAX44VEJ4ZK5JD2JQC ITXPKG6VHYSJSRQBRJUTD4AGCMMF4RDAJBAULFAN4J7OPQEHAQGQC Y2CHAC4BULOT2UHD47F7JTSLUGGMVHYOJZB4W76AXMSLIDVHULEQC KC4WE63EQMVI6QBPDO3EAEPMFLAOS7H5WUAFL7JPRIE3V7CR333AC IFUVP76NTBEAK2WA5HC4QWPQ2DUBVL2TKFKG5EIMEXARGVPUHOIQC KZ362RP6C7HRFQB66QL3PBRG7MBEPLRKTFMJYK7DFJQKERFGNFXQC MC5GWSF6I7TGB422CBRCP6IPX5SV36OX4LAXEE33C65GKCDI64IQC L3DRKFURVDCV3EJKGG6GVVQX3D5MZPICTVOKNOD3LGM2PECBA7PQC 72GIZBEMQLEF3TITOHABWHRLL5TE7KOUSVWOUEHFMO2OZQ4EIB7AC 4ZFFJ2D4IE2FXSGONGJWPOTHX4CFIGLVQOGZYV2KFAGYDUBJYCCQC LVCBY444HPB4RRFMUAZPHVZ67IC3L6DB27AEMCW3DEXHLBF73TMQC KYKFOLADMUWUGJG2YWH2SSQRPRU5VOLSORANZKHDYGJSLIKVAXUQC 45EMD3KLQPMERNMIKU5G76H6556XOMIW352TSBP7VLWJX2YYGS7AC F7X6HVUKHZXYURABYAZJHRYBV7UZTIPOWJMGCMDK26FQ66WGKFZAC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC U6ILMKBXTQZYT62IGD2CALYNU4VQGRSTHN6QBFBU7BVUBHWYOEQQC LP5EK64IEM7AHNYQID4GGKOQJQNZLKY4DCCZN47SIUZ6IXAXH5UAC GSS3OCYMI4MYKACCGNLFA267VDH2U7G4QVVDLMOVAUHZTYQ3QJDAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC WG6O475IOLZFMUQSLVR2KHM7XTBF5HH276L2KDGF7UOSESDOAILQC DH3YTI6VVI727SQXO4CXSDCSBG2UN3UAWLFULBGRLBVH22ACRXIAC AREBCIU2RU2RNHBWD4GARWEBKSL7HDFGDLII22H56OJO2AQUOMLQC U6HLBU2OIMKVNWWZ55SERG56WKAW3GSFFEGUJBP4SQVYSESGXC2QC X4OCLD5YEXCYVQNMOQORLIO72AKUEMT3BT6FB3TW2HARKN5X7MEQC 74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC HH3HFWVXABJ4IRMN22PPJCREMULZSN6DA7VYKOGECGMNUQTZ5QNQC X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC SJDOBXECX7F3ZPPVR7FPURE53D47PP2TFIF4SB6XPS456PZV3DQAC NNG27Y5ZQAZX6UD7F7M4F6KEZBEDFXPEEC3LFUSX4ESKT7K6UJQAC 6G4LD3DLA4TB7BEXUK262EDZQYL2S4JTLEMAMS4HOPLF3CPIWJ4AC 5DI5IBEYOMNFQOLSI4ZNFJCGG4CFYYEEMIGZNCA42ESVEIBTJLSAC LS3DAZVRDCXVN2BKBC6RGCKO3R43Z7HKG4GXJWLBK4AKBL2G6QDQC 4PUWNQO7QMEWY3GSUHLBKMYOAI7ASYSRM32KDGTA7DLNDIGFAWFAC RSIUBEQUGNU4LO6KH4PKVROWQS33DAKSY4XFVGN7T3CEKSXABCSAC 6GSGCC5JQJ5NOKX36UHRNOCXNHDBS2A2TDMAR34UBOGWE2DORXIQC J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC AIIVH43Z5X3GTPFY4FXQRZPG6Y7QPH2KJ47VM2Q43PCGGD5MTMOAC 3QLM46S44Z7GDLWPH3VHBMW2RSWZAOLGJMG2BDKNGUOZIM4IX6WAC 64RZSOR4B4T5QO3FAERBTH2QJIQFSCIFHI4WYK3MDAEAZVAHRLVQC G5WLU3B4MR3ZDJLGR6OHNIMLZXGQS2EWBJ5YYY5J2GWM6DTD44BAC SCWXQW5H65OXUP2MEJ2MEEAVPSRJDT3RQGKYCMKVTORS2334PQSQC 2YSMM7QMFZOPD5NXAD2OAMDJEY5LOZO4NCYBC7UCQVANKINJRNBAC ILOED4VB4I6VPAUTR75ZWX6MXDYXB5DO2EDK2UH67O3HNKWV23RQC 56C44YMFHZ62GXAAOLYSLLGBVGRWXB53W2VI37Q26ZECEK2XG5SQC C22455VGUQOSUX2OORA32LROFQ7NNYDMD2ZDTTUZSAQLXK4AD6QAC 3XZOL3FFQZITUJIGDD6B6V6ZYMBN524JKNN6ZPJAXEC7RY433I3QC GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC KCHX2F3JFEWOZT3WMJVZAAQUU2QSZ5Q7RDCD7WUJ7VE65J52JFUQC ZVK4J5HTKFNOOIVCI62ZWEYGXEE5TYJ65DLYYZAZWTADFSXE62ZAC 6QWZDCP5HGYLTJO3WWYJJGRRT7QFY6IG64TC7TUB553Z7GAA2HIQC SSCG2FLJMUTTIRXBFSPLAUUBUIN375ZGL5UOAF3SC62ZIILSMMKAC 34C4U6EQWERY75GZJKUCM5KVGU2OUICETS5LGZF6RMKMZT4R5SQAC TFZ4TER7O2Z4FOGF2RCPEPYIHBTUA4LG3ECXLR7XGLCC6GO6OOTAC TZ55IZNANEJO2WDTKYWVLY2W2VV6BR7WKIN7XLNISAMMFT6LG2WQC HZK3YN3SAISTDS5JI4COBYFG7YB4ABDVENXWZZEYLFA2LDI232VAC WWR4IDWLXP4XLBWDZBA5GFG7CRKUJQNRK7FFUFOISK6OJTMYQPFQC FZAQNANLZOQHX675KR5GE2ZAVNT4AWX4TWEUJXXEZMOXWQ5FDHOAC TLA5UN6LZPXGKERI27EFY4HKIIU3VU5Y7ZU54WXL6ANBUV2VOTMQC K6ELQ4HEZYDROC7CJFLPJS64AAJQ4G6RVLL4GBRUG6FJMKSBDDIQC KKROXTUPBNEXXEUUDJNADATK3BCQPSQWFZ6L4VTKBPTYXJLYUHDQC FSD7GIK3YLZXWLEH37BU6KV3IUCFGXPQL6IZ7H65YWNRBEKDBX5AC AO3KHGKGSX2ZR24KJVIOTUY7EHYHMMI5W4HN3CAG4YGQHBOHLGDQC AF7VAKCSGEYCXRTITS2WAW7VTM3OEQOECMNXR6YMOQLBCVZZFAVQC PISXY4NKSKL5KDJWAHD7CTXWTQDH3NFWQSFAHUAI3VVATWKXRODQC A3CO4KBFTFU3ZSHWRY2OPPX3MMTFV7OUCZGL7Q4Y2FU7JO4AP7MAC 5KJCHLIUFKRPMIVWUAYT6EOF7SW4PTQF6Y5OPEFWXGLE7DUGYLZAC JDM27QE4HR52AYFSQE763BFF57ANOTF5MXKMO377PP5EXMN7SAOAC 7Z37EO2GGM2DAS65DWEI5VVPRPXMGH6XHB6IADG3Q6KOITSV25MAC 3PY3L3A4QRW3Z5Y7SHO4TMVOOP2VNCO27X2MX4DTOP2SADLBQUOAC OY7KHQPESOUHPBXRZ2JSNUKPAC7DCDY73TAUHCSJG5V6TPAHBVYQC XAFFD52IHN6FWFR2TT5F2KCUS7HAVCBI5CWTFMKPQG77GGTGAHLAC ZJLJGSB2XSBQU42OFQMXL3EG4CXAQGOYAU6YTV2SAWZEJIPFH2CAC CCMBDS5S4KEI4LJTVBFDDEGWRTWM4GQB2GLEUUT7TMQRXFLZ4HXQC WLX2RQMMOMP2PYPAGJRM4VFD2WTLJTOAZZPPY3MV76FU2EGEJ54QC ED62QWGKBPORWVKDFOQRKJXEIWZVNGR3O4KWQBDSRNPT36AYOQYAC TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC 2WRXQTGYDBLV46WRNVIUKGNA5QS563XZNNW3N2L6PVOCHIP2YGHQC 2G55UEHQ7554OPNSZVTUCZTWSHIFKGT56QEGSYFKCTX547I4AL3AC NDTQUANX3GZ6HZP5FONYNJUYPD3R2P6SGRC3ICKJ7ZWF3KO23LTAC E5JKWMBVQQGVSCAX4UOGHI6QW5RFOX6PJB77LHL3UI2NJ427BFFQC JNB3PBPBJHDUHH47ZICB25QENPTMLYK7CXC5BXRVWZ3J3ZZPKCUAC UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC DKRSOHZXL6EPSLKOKHF7GJXSZEJVY7CXGACSHWLM5B5FTRETWWCAC BTO5WE4OEK64DZQVNYLOESM74KKQNE7KSNMQVF5UDB26OBKP7ORQC YYHCM4CUN6G5PFWPGOYMDYX4P3SGNYUT5SZK5AUWUL2G7RULQJDAC AOLWOUIFBQDQTCMSVB7N7GAKFUY5J5LH7CJZAY3HEY3WEUSLADZAC MSQI3TH6T62JAXQGLL52QZCWAMC372TGB6ZNNRDGUGMJKBNNV2VAC SH6NU4H5TG4O7CRXRHZ7MDHABZLWWXQ77NJDBHI7KCVHXHQYK46QC EJ4GIPFSSQCQASUMRF4CR2WPUQOTEHFRGLOYEZ7BH6YEMIR6DN4QC ANBVGN4RZOMY5LI4QSHOV2477FN55H353ZYLSVCPTXC7AWWSQZBAC KXUQB3WNWC5IFL6VFWADEPQMMU3VV3NDI5FLA666PGOEWFYUHCLQC 5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC 6L4EP4ZRWWYLT55PD5KTTJON5J2JB5VV5MWNHF5VPZQZ5BKEYZ4QC I7NXCEKCEBDWOGO7EDNRZ36GELP3P5GTOOXQG2YS5TXZTCNN7CDQC CREW3VTGN2BV622ZXHCPHUEZWBAGEQMNUELDLTHLEKG4VBXGMRPQC JT672SIJK4BOIUAGL2WQ6NR2NF4PSWP3BT6Q4HMNRF25UN6JQ2MAC 4WOHWWHMQPU22PK6TN5KIFCB4G22NDF5OQ3ZEYDK4Z5U7XCB5IWQC KNBQ2Y4XXAJGSHC4FU2AHCRGLLHETYA2MU55TDSHV2TIMTOX3QZQC 7J3H7JY6AUO2UHNF6DAHDZI4O33JMTUUTYTPRM3CKNPUOF2RQOGAC SCXU5KW3LWPSVVCOWSCZLDXHV7IUMCFTGIWZ2LFSBIUKAOBYHJBQC ZJU5Z2WDMI7HN4XJ3NVTVRHIZO2CGFUQ2FSKIRJVTQG47XHNCZFQC 3C2VE43SHCSBY4LTRTFYFLIPRWFUN6DXU6D34QVWDQTSNRBUFG7AC 442VGKMARB6LTQUEBIB5P447EI34BRJL6JALZKXLWPDHWCM6KKCQC EH4VJW3I5Y4V6DT3YMLNDA3NW2DEAV4LRE4T5IEXAVB4WB3JJMGAC APGCKU4AFOV7Z7XIEO5A27H4IFUGDU227I3Z7OIRROYSLOFFBJ5AC ILN2K6ASDZSMEHOPJ22IZLZJUO6DDGZTKAKXM3YXG6JZZHJNLX4AC NTFA3ZSJFTVLTTKI6ONJE33PGGDW36IVGWMO6GXRA4ZG57TOWNFAC OYTCBRC7LE44EUVRZVYTOOVKQWJ6P6YE3FXTOGUTNKEMLNWPHKSQC GTPAKUU3R5AS3LQNCCZIP3BWV473RM4EB2AIS4FXAJRXHEOVH2PAC QZERCVTY5BISIKSDH6WUXGZPIBAF4KUCGSZEEGMGBCORNUXT4HXAC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC O4XZM4P4VW53I4TZMQWCQ7K4SOEL2YHKDWXWXCDPLZ6LJNKZDD4AC R5JKQLY5QE6UBG3RH3Y5ZRSX6H35CHYI2HYNDZF6ZHVRULUORXBQC ITUTGFJ56GR7FWMC5Y7XKUJJ4Z35I6BMOHCPCW3W5MKDQGVOGM4AC CUNNC574MESEMTTONZ6YB6CJ2S5P6VA3V7Z3OODESWAK37GYOBPAC PJ7HBIWAV3H23LXGZAAD2QYJ7HMOFOIR5ZJ4U2UTHI766LOTRRWQC 475LL4U4ND6PTNV4XKC7WQAOJC7RF2VCCVX3DRILP2PKIBFYWE6QC 7UQJTYJTHTDW55ZUKG4TINZTNALGPK5CB7UB7PJ2Y2SKQ5XOYP5AC BNP25NWD5OXPQEPLM3YJRJCRE24DH55RZKFCZPUX5NLWGOSBIYGAC EGV2HM7SD7UQSWJGLR65NQJTUBAJ7WHLM67FMH4UFP7JRSFKREPAC 3KAINFIXO7WNWGUGZB43EUNFRS2ZPBLQZDTY456QACMRHYIJ7WDAC 2IJDLTWK74ULETLFTIPUIY2MSG6RNONVAFNFE7MADPT6UNYSSBDAC 3YBQGKQ22WFXA5RXDSKLFWMABLJ6KHBVWEIA3WIDHWM25OECNTYAC VUP5G3CB6L5I5TPVWMM4KAMF6N4X6UPO4HQZKTSO2ETXZEFBMOMAC QMDOGHN3AZOBGTS2CHK5VYAZ5MKYHTSIDJYN7HANSGWFWSNXCLAQC MWA35QHODXDNH2OYJ3URQQOXSEONHFXY4OG4VMGHYBBTAC777NLQC 6LYLJJDKKIPIXKJITRAC7LAZSNBO7O4IJIVBKUC7FD57AV53LHHAC 2BCJY2VAUXBEDHN7RN5T3DZ4Q2PNXKVZF7RYH5TY6M2CXGJAPZYAC CUB27EJDQG66FF2YCKOV4HU3LAJVJIHUJ5QYLURRDIEVGPK666DQC Q2XCGRT36NCRQKWNL53EAS3ADON5SJQ5GEMJMX5S3QAG553HFVFQC QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC CJWCTWT75S4P3OSCMUZ2W6UTWI6GOQMUSBUN6KEN4TVFEG4HHHGQC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC 2ESKXYN266CEMLSL6DNCKG4REDO34FXL4ODVGMWDJTNJRKMXWCRQC LBTLHHRZTKOBOGAEWQH7VFEDG4WY5IDUEIZARAUFR6SBVWTTMYJQC JPYDWBRN75GC6UZ26MXJTCXGORTJOWGRDEU4JFPU52LYHGK6UI2QC Z7SW3IKYNXMOHHD77NGXN6RGL32PZBO6AIHLJY74IRO23AIRKWMQC PTHJX2MZO5SDSHZMZOWBUPHUEZZPNU6NQAFOC6L3IYMO7C3C4UWQC RR2J4VLJCZSAKY3HNS334KI4YUAPOMSETO2HGCGEEIUCUJAYAGSQC HVFAA245ZWF7IALC2ZFCJREYGHIZQ2FTW2VO4Z7FTET2B3JZIZCAC XUCCWGMXKPIR34BBCCOI67YHI3RST4STDWSDUZTN4B2CJWXQLQ7AC TMFNNWBMIPWM2FDC7I5R2RUKWNBS3GD3DX6VN452VYRPC3GU2HCQC IXLNOTBJGHKESBCTME6QAR6XVWFNCHYGMS62V62ZJEA7VLQHXO2QC ZTBLYDLADGKZ7JZVYC2GJQFODEUOGBPBKDIVYJOE3MON5SV5PTAAC EWQIUA5WOC7YATFBBYEC4FM3V36MPM44EEDIMR4NU2DEUCSB2GSAC SJXOZ6J66G3S5VYGIZ3YHEUCKUF5554YEFUYLVBH7X4ALYSXKTGQC JIMH7VEMQ7QF6VV2D65UISCRG5W55UX5YSQLLUW6SZNSTZMFWQ5AC IE3INS4WUXZOBVXB5VWRBYPVPXADD2U2W5H3TBTOYNWJ3EGRSGQQC I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC C6E4OROPXFOSAVGLTJE2MYHOGC6QXP4JU275LGBHAYASP27KCY3AC WVFKGV3AMOYUZ53MWH2RWRITRRCPKKNPTO7QASA5WVKWAUGDJ2OQC 35KOQQV4ZBNNIAXGKPOYHOWTN7RBQY7HRZTVMR3WAS4GOYFBM6PQC XDJGQNFELURGXMUAOOVALQMSLAJVHMG63KPKVA33HTJFVZROGZ4AC LKLHWERPXMDTRNYPEXVDVB6PE7CT5PZ6WMNJJDTBBE5FBHOCEK5AC 3BUZB6SWAESYJGX564WE7IS2FFURCDOZT4D2I4PWSZXUVHEQDTQAC JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC else if ((intel == I_NORMAL && one_chance_in(13))|| (intel == I_HIGH && one_chance_in(6)))
else if (intel == I_NORMAL && one_chance_in(13)|| intel == I_HIGH && one_chance_in(6)){
static std::string try_exact_string(const std::vector<std::string> prefixes,const std::string key,bool ignore_hostile = false,bool ignore_related = false,bool ignore_religion = false,bool ignore_silenced = false)
static std::string _try_exact_string(const std::vector<std::string> prefixes,const std::string key,bool ignore_hostile = false,bool ignore_related = false,bool ignore_religion = false,bool ignore_silenced = false)
static void build_dungeon_level(int level_number, int level_type);static void reset_level();static bool valid_dungeon_level(int level_number, int level_type);
static void _build_dungeon_level(int level_number, int level_type);static void _reset_level();static bool _valid_dungeon_level(int level_number, int level_type);
static bool find_in_area(int sx, int sy, int ex, int ey,dungeon_feature_type feature);static bool make_box(int room_x1, int room_y1, int room_x2, int room_y2,dungeon_feature_type floor=DNGN_UNSEEN,dungeon_feature_type wall=DNGN_UNSEEN,dungeon_feature_type avoid=DNGN_UNSEEN);static void replace_area(int sx, int sy, int ex, int ey,dungeon_feature_type replace,dungeon_feature_type feature,unsigned mmask = 0);static builder_rc_type builder_by_type(int level_number, char level_type);static builder_rc_type builder_by_branch(int level_number);static builder_rc_type builder_normal(int level_number, char level_type, spec_room &s);static builder_rc_type builder_basic(int level_number);static void builder_extras(int level_number, int level_type);static void builder_items(int level_number, char level_type, int items_wanted);static void builder_monsters(int level_number, char level_type, int mon_wanted);static void place_specific_stair(dungeon_feature_type stair,const std::string &tag = "",int dl = 0,bool vault_only = false);static void place_branch_entrances(int dlevel, char level_type);static void place_extra_vaults();static void place_minivaults(const std::string &tag = "",int fewest = -1, int most = -1,bool force = false);static void place_traps( int level_number );static void place_fog_machines( int level_number );static void prepare_swamp();static void prepare_shoals( int level_number );static void prepare_water( int level_number );static void check_doors();static void hide_doors();static void make_trail(int xs, int xr, int ys, int yr,int corrlength,int intersect_chance,int no_corr, dungeon_feature_type begin,dungeon_feature_type end=DNGN_UNSEEN);static bool make_room(int sx,int sy,int ex,int ey,int max_doors, int doorlevel);static void place_pool(dungeon_feature_type pool_type, unsigned char pool_x1,unsigned char pool_y1, unsigned char pool_x2,unsigned char pool_y2);static void many_pools(dungeon_feature_type pool_type);static bool join_the_dots(const coord_def &from, const coord_def &to,unsigned mmask, bool early_exit = false);static bool join_the_dots_rigorous(const coord_def &from,const coord_def &to,unsigned mapmask,bool early_exit = false);
static bool _find_in_area(int sx, int sy, int ex, int ey,dungeon_feature_type feature);static bool _make_box(int room_x1, int room_y1, int room_x2, int room_y2,dungeon_feature_type floor=DNGN_UNSEEN,dungeon_feature_type wall=DNGN_UNSEEN,dungeon_feature_type avoid=DNGN_UNSEEN);static void _replace_area(int sx, int sy, int ex, int ey,dungeon_feature_type replace,dungeon_feature_type feature,unsigned mmask = 0);static builder_rc_type _builder_by_type(int level_number, char level_type);static builder_rc_type _builder_by_branch(int level_number);static builder_rc_type _builder_normal(int level_number, char level_type,spec_room &s);static builder_rc_type _builder_basic(int level_number);static void _builder_extras(int level_number, int level_type);static void _builder_items(int level_number, char level_type, int items_wanted);static void _builder_monsters(int level_number, char level_type, int mon_wanted);static void _place_specific_stair(dungeon_feature_type stair,const std::string &tag = "",int dl = 0, bool vault_only = false);static void _place_branch_entrances(int dlevel, char level_type);static void _place_extra_vaults();static void _place_minivaults(const std::string &tag = "",int fewest = -1, int most = -1,bool force = false);static void _place_traps( int level_number );static void _place_fog_machines( int level_number );static void _prepare_swamp();static void _prepare_shoals( int level_number );static void _prepare_water( int level_number );static void _check_doors();static void _hide_doors();static void _make_trail(int xs, int xr, int ys, int yr,int corrlength,int intersect_chance,int no_corr, dungeon_feature_type begin,dungeon_feature_type end=DNGN_UNSEEN);static bool _make_room(int sx,int sy,int ex,int ey,int max_doors, int doorlevel);static void _place_pool(dungeon_feature_type pool_type, unsigned char pool_x1,unsigned char pool_y1, unsigned char pool_x2,unsigned char pool_y2);static void _many_pools(dungeon_feature_type pool_type);static bool _join_the_dots(const coord_def &from, const coord_def &to,unsigned mmask, bool early_exit = false);static bool _join_the_dots_rigorous(const coord_def &from,const coord_def &to,unsigned mapmask,bool early_exit = false);
static void build_river(dungeon_feature_type river_type); //mvstatic void build_lake(dungeon_feature_type lake_type); //mv
static void _build_river(dungeon_feature_type river_type); //mvstatic void _build_lake(dungeon_feature_type lake_type); //mv
static void spotty_level(bool seeded, int iterations, bool boxy);static void bigger_room();static void plan_main(int level_number, int force_plan);static char plan_1();static char plan_2();static char plan_3();static char plan_4(char forbid_x1, char forbid_y1, char forbid_x2,char forbid_y2, dungeon_feature_type force_wall);static char plan_5();static char plan_6(int level_number);static bool octa_room(spec_room &sr, int oblique_max,dungeon_feature_type type_floor);static void portal_vault_level(int level_number);static void labyrinth_level(int level_number);static void box_room(int bx1, int bx2, int by1, int by2,dungeon_feature_type wall_type);static int box_room_doors( int bx1, int bx2, int by1, int by2, int new_doors);static void city_level(int level_number);static void diamond_rooms(int level_number);
static void _spotty_level(bool seeded, int iterations, bool boxy);static void _bigger_room();static void _plan_main(int level_number, int force_plan);static char _plan_1();static char _plan_2();static char _plan_3();static char _plan_4(char forbid_x1, char forbid_y1, char forbid_x2,char forbid_y2, dungeon_feature_type force_wall);static char _plan_5();static char _plan_6(int level_number);static bool _octa_room(spec_room &sr, int oblique_max,dungeon_feature_type type_floor);static void _portal_vault_level(int level_number);static void _labyrinth_level(int level_number);static void _box_room(int bx1, int bx2, int by1, int by2,dungeon_feature_type wall_type);static int _box_room_doors( int bx1, int bx2, int by1, int by2, int new_doors);static void _city_level(int level_number);static void _diamond_rooms(int level_number);
static void pick_float_exits(vault_placement &place,std::vector<coord_def> &targets);static void connect_vault(const vault_placement &vp);
static void _pick_float_exits(vault_placement &place,std::vector<coord_def> &targets);static void _connect_vault(const vault_placement &vp);
static void place_shops(int level_number, int nshops = 0);static object_class_type item_in_shop(unsigned char shop_type);static bool treasure_area(int level_number, unsigned char ta1_x,unsigned char ta2_x, unsigned char ta1_y,unsigned char ta2_y);static void big_room(int level_number);static void chequerboard(spec_room &sr, dungeon_feature_type target,dungeon_feature_type floor1,dungeon_feature_type floor2);static void roguey_level(int level_number, spec_room &sr);static void morgue(spec_room &sr);
static void _place_shops(int level_number, int nshops = 0);static object_class_type _item_in_shop(unsigned char shop_type);static bool _treasure_area(int level_number, unsigned char ta1_x,unsigned char ta2_x, unsigned char ta1_y,unsigned char ta2_y);
static void special_room(int level_number, spec_room &sr);static void specr_2(spec_room &sr);static void beehive(spec_room &sr);static void jelly_pit(int level_number, spec_room &sr);
static void _special_room(int level_number, spec_room &sr);static void _specr_2(spec_room &sr);static void _big_room(int level_number);static void _chequerboard(spec_room &sr, dungeon_feature_type target,dungeon_feature_type floor1,dungeon_feature_type floor2);static void _roguey_level(int level_number, spec_room &sr);static void _morgue(spec_room &sr);static void _beehive(spec_room &sr);static void _jelly_pit(int level_number, spec_room &sr);
static bool build_secondary_vault(int level_number, int vault,int rune_subst = -1,bool generating_level = true,bool clobber = false,bool make_no_exits = false,const coord_def &where = coord_def(-1, -1));static bool build_vaults(int level_number, int vault_number,int rune_subst = -1, bool build_only = false,bool check_vault_place = false,bool generating_level = true, bool clobber = false,bool make_no_exits = false,const coord_def &where = coord_def(-1, -1));static bool build_minivaults(int level_number, int force_vault,bool level_builder = true, bool clobber = false,bool make_no_exits = false,const coord_def &where = coord_def() );static int vault_grid( vault_placement &,int level_number, int vx, int vy, int altar_count,FixedVector < object_class_type, 7 > &acq_item_class,int vgrid, std::vector<coord_def> &targets,int &num_runes, int rune_subst = -1, bool foll = false);
static bool _build_secondary_vault(int level_number, int vault,int rune_subst = -1,bool generating_level = true,bool clobber = false,bool make_no_exits = false,const coord_def &where = coord_def(-1, -1));static bool _build_vaults(int level_number, int vault_number,int rune_subst = -1, bool build_only = false,bool check_vault_place = false,bool generating_level = true, bool clobber = false,bool make_no_exits = false,const coord_def &where = coord_def(-1, -1));static bool _build_minivaults(int level_number, int force_vault,bool level_builder = true, bool clobber = false,bool make_no_exits = false,const coord_def &where = coord_def() );static int _vault_grid( vault_placement &,int level_number, int vx, int vy, int altar_count,FixedVector < object_class_type, 7 > &acq_item_class,int vgrid, std::vector<coord_def> &targets,int &num_runes, int rune_subst = -1, bool foll = false);
static int dgn_random_map_for_place(bool wantmini);static void dgn_load_colour_grid();static void dgn_map_colour_fixup();
static int _dgn_random_map_for_place(bool wantmini);static void _dgn_load_colour_grid();static void _dgn_map_colour_fixup();
static void dgn_fill_zone( const coord_def &c, int zone, point_record &prec,bool (*passable)(const coord_def &)= dgn_square_is_passable)
static void _dgn_fill_zone( const coord_def &c, int zone, point_record &prec,bool (*passable)(const coord_def &)= _dgn_square_is_passable)
replace_area( 0,0,GXM-1,GYM-1, DNGN_BUILDER_SPECIAL_WALL, DNGN_ROCK_WALL );replace_area( 0,0,GXM-1,GYM-1, DNGN_BUILDER_SPECIAL_FLOOR, DNGN_FLOOR );
_replace_area( 0,0,GXM-1,GYM-1, DNGN_BUILDER_SPECIAL_WALL, DNGN_ROCK_WALL );_replace_area( 0,0,GXM-1,GYM-1, DNGN_BUILDER_SPECIAL_FLOOR, DNGN_FLOOR );
place_minivaults();place_branch_entrances( level_number, level_type );place_extra_vaults();dgn_verify_connectivity(nvaults);
_place_minivaults();_place_branch_entrances( level_number, level_type );_place_extra_vaults();_dgn_verify_connectivity(nvaults);
if (!player_in_branch(BRANCH_COCYTUS) &&!player_in_branch(BRANCH_SWAMP) &&!player_in_branch(BRANCH_SHOALS))prepare_water( level_number );
if (!player_in_branch(BRANCH_COCYTUS)&& !player_in_branch(BRANCH_SWAMP)&& !player_in_branch(BRANCH_SHOALS)){_prepare_water( level_number );}
static void replace_in_grid(int x1, int y1, int x2, int y2,dungeon_feature_type oldfeat,dungeon_feature_type newfeat)
static void _replace_in_grid(int x1, int y1, int x2, int y2,dungeon_feature_type oldfeat,dungeon_feature_type newfeat)
static bool make_box(int room_x1, int room_y1, int room_x2, int room_y2,dungeon_feature_type floor,dungeon_feature_type wall,dungeon_feature_type avoid)
static bool _make_box(int room_x1, int room_y1, int room_x2, int room_y2,dungeon_feature_type floor,dungeon_feature_type wall,dungeon_feature_type avoid)
make_trail( 35, 30, 35, 20, corrlength, intersect_chance, no_corr,DNGN_STONE_STAIRS_DOWN_I, DNGN_STONE_STAIRS_UP_I );
_make_trail( 35, 30, 35, 20, corrlength, intersect_chance, no_corr,DNGN_STONE_STAIRS_DOWN_I, DNGN_STONE_STAIRS_UP_I );
make_trail( 10, 15, 10, 15, corrlength, intersect_chance, no_corr,DNGN_STONE_STAIRS_DOWN_II, DNGN_STONE_STAIRS_UP_II );
_make_trail( 10, 15, 10, 15, corrlength, intersect_chance, no_corr,DNGN_STONE_STAIRS_DOWN_II, DNGN_STONE_STAIRS_UP_II );
make_trail(50,20,10,15,corrlength,intersect_chance,no_corr,DNGN_STONE_STAIRS_DOWN_III, DNGN_STONE_STAIRS_UP_III);
_make_trail( 50, 20, 10, 15, corrlength, intersect_chance, no_corr,DNGN_STONE_STAIRS_DOWN_III, DNGN_STONE_STAIRS_UP_III);
static void place_specific_stair(dungeon_feature_type stair,const std::string &tag,int dlevel,bool vault_only)
static void _place_specific_stair(dungeon_feature_type stair,const std::string &tag,int dlevel,bool vault_only)
static void make_trail(int xs, int xr, int ys, int yr, int corrlength,int intersect_chance, int no_corr,dungeon_feature_type begin,dungeon_feature_type end)
static void _make_trail(int xs, int xr, int ys, int yr, int corrlength,int intersect_chance, int no_corr,dungeon_feature_type begin,dungeon_feature_type end)
diag_door += good_door_spot(sx,sy);diag_door += good_door_spot(ex,sy);diag_door += good_door_spot(sx,ey);diag_door += good_door_spot(ex,ey);
diag_door += _good_door_spot(sx,sy);diag_door += _good_door_spot(ex,sy);diag_door += _good_door_spot(sx,ey);diag_door += _good_door_spot(ex,ey);
place_monster_vector(swimming_things, level_number,std::min(random2avg(9, 2)+ (random2(lava_spaces) / 10), 15));
_place_monster_vector(swimming_things, level_number,std::min(random2avg(9, 2)+ (random2(lava_spaces) / 10), 15));
place_monster_vector(swimming_things, level_number,std::min(random2avg(9, 2)+ (random2(water_spaces) / 10), 15));
_place_monster_vector(swimming_things, level_number,std::min(random2avg(9, 2)+ (random2(water_spaces) / 10), 15));
static void fill_monster_pit( spec_room &sr, FixedVector<pit_mons_def,MAX_PIT_MONSTERS> &pit_list, int density,int lord_type, int lordx, int lordy )
static void _fill_monster_pit( spec_room &sr, FixedVector<pit_mons_def,MAX_PIT_MONSTERS> &pit_list, int density,int lord_type, int lordx, int lordy )
static bool build_minivaults(int level_number, int force_vault,bool building_level, bool clobber,bool make_no_exits, const coord_def &where)
static bool _build_minivaults(int level_number, int force_vault,bool building_level, bool clobber,bool make_no_exits, const coord_def &where)
altar_count = vault_grid( place,level_number, vx, vy,altar_count,acq_item_class,feat, target_connections,num_runes );
altar_count = _vault_grid( place,level_number, vx, vy,altar_count,acq_item_class,feat, target_connections,num_runes );
static coord_def dig_away_dir(const vault_placement &place,const coord_def &pos)
static coord_def _dig_away_dir(const vault_placement &place,const coord_def &pos)
static void pick_float_exits(vault_placement &place,std::vector<coord_def> &targets)
static void _pick_float_exits(vault_placement &place,std::vector<coord_def> &targets)
static std::vector<coord_def> external_connection_points(const vault_placement &place,const std::vector<coord_def> &target_connections)
static std::vector<coord_def> _external_connection_points(const vault_placement &place,const std::vector<coord_def> &target_connections)
rune_subst = dgn_find_rune_subst_tags(mdef->tags);did_map = build_secondary_vault(you.your_level, map, rune_subst,generating_level, clobber,make_no_exits, where);
rune_subst = _dgn_find_rune_subst_tags(mdef->tags);did_map = _build_secondary_vault(you.your_level, map, rune_subst,generating_level, clobber,make_no_exits, where);
static bool build_secondary_vault(int level_number, int vault,int rune_subst, bool generating_level,bool clobber, bool no_exits,const coord_def &where)
static bool _build_secondary_vault(int level_number, int vault,int rune_subst, bool generating_level,bool clobber, bool no_exits,const coord_def &where)
static bool build_vaults(int level_number, int force_vault, int rune_subst,bool build_only, bool check_collisions,bool generating_level, bool clobber,bool make_no_exits, const coord_def &where)
static bool _build_vaults(int level_number, int force_vault, int rune_subst,bool build_only, bool check_collisions,bool generating_level, bool clobber,bool make_no_exits, const coord_def &where)
altar_count = vault_grid( place,level_number, vx, vy, altar_count,acq_item_class,vgrid[vy][vx],target_connections,num_runes,rune_subst );
altar_count = _vault_grid( place,level_number, vx, vy, altar_count,acq_item_class,vgrid[vy][vx],target_connections,num_runes,rune_subst );
static int vault_grid( vault_placement &place,int level_number,int vx, int vy,int altar_count,FixedVector < object_class_type, 7 > &acq_item_class,int vgrid,std::vector<coord_def> &targets,int &num_runes,int rune_subst,bool following )
static int _vault_grid( vault_placement &place,int level_number,int vx, int vy,int altar_count,FixedVector < object_class_type, 7 > &acq_item_class,int vgrid,std::vector<coord_def> &targets,int &num_runes,int rune_subst,bool following )
altar_count = vault_grid( place, level_number, vx, vy,altar_count, acq_item_class,f.glyph, targets, num_runes,rune_subst, true );
altar_count = _vault_grid( place, level_number, vx, vy,altar_count, acq_item_class,f.glyph, targets, num_runes,rune_subst, true );
static void replace_area( int sx, int sy, int ex, int ey,dungeon_feature_type replace,dungeon_feature_type feature, unsigned mapmask)
static void _replace_area( int sx, int sy, int ex, int ey,dungeon_feature_type replace,dungeon_feature_type feature, unsigned mapmask)
static bool join_the_dots_pathfind(coord_set &coords,const coord_def &from, const coord_def &to,unsigned mapmask, bool early_exit)
static bool _join_the_dots_pathfind(coord_set &coords,const coord_def &from, const coord_def &to,unsigned mapmask, bool early_exit)
static void place_pool(dungeon_feature_type pool_type, unsigned char pool_x1,unsigned char pool_y1, unsigned char pool_x2,unsigned char pool_y2)
static void _place_pool(dungeon_feature_type pool_type, unsigned char pool_x1,unsigned char pool_y1, unsigned char pool_x2,unsigned char pool_y2)
count_feature_in_box(px-2, py-2, px+3, py+3, DNGN_ROCK_WALL) +count_feature_in_box(px-2, py-2, px+3, py+3, DNGN_CLOSED_DOOR) +count_feature_in_box(px-2, py-2, px+3, py+3, DNGN_SECRET_DOOR) +count_feature_in_box(px-2, py-2, px+3, py+3, DNGN_FLOOR);
_count_feature_in_box(px-2, py-2, px+3, py+3, DNGN_ROCK_WALL) +_count_feature_in_box(px-2, py-2, px+3, py+3, DNGN_CLOSED_DOOR) +_count_feature_in_box(px-2, py-2, px+3, py+3, DNGN_SECRET_DOOR) +_count_feature_in_box(px-2, py-2, px+3, py+3, DNGN_FLOOR);
place_specific_stair( static_cast<dungeon_feature_type>(j + ((i==0) ? DNGN_STONE_STAIRS_DOWN_I: DNGN_STONE_STAIRS_UP_I)) );
_place_specific_stair( static_cast<dungeon_feature_type>(j + ((i == 0) ? DNGN_STONE_STAIRS_DOWN_I: DNGN_STONE_STAIRS_UP_I)) );
do_stairs = ((force_plan == 1) ? plan_1() :(force_plan == 2) ? plan_2() :(force_plan == 3) ? plan_3() :(force_plan == 4) ? plan_4(0, 0, 0, 0, NUM_FEATURES) :(force_plan == 5) ? (one_chance_in(9) ? plan_5(): plan_3()) :(force_plan == 6) ? plan_6(level_number): plan_3());
do_stairs = ((force_plan == 1) ? _plan_1() :(force_plan == 2) ? _plan_2() :(force_plan == 3) ? _plan_3() :(force_plan == 4) ? _plan_4(0, 0, 0, 0, NUM_FEATURES) :(force_plan == 5) ? (one_chance_in(9) ? _plan_5(): _plan_3()) :(force_plan == 6) ? _plan_6(level_number): _plan_3());
place_specific_stair( static_cast<dungeon_feature_type>(j + ((i==0) ? DNGN_STONE_STAIRS_DOWN_I: DNGN_STONE_STAIRS_UP_I)) );
_place_specific_stair( static_cast<dungeon_feature_type>(j + ((i == 0)? DNGN_STONE_STAIRS_DOWN_I: DNGN_STONE_STAIRS_UP_I)));
replace_area(10, 10, (GXM - 10), (10 + width), DNGN_ROCK_WALL, DNGN_FLOOR);replace_area(10, (60 - width), (GXM - 10), (GYM - 10),DNGN_ROCK_WALL, DNGN_FLOOR);replace_area(10, 10, (10 + width), (GYM - 10), DNGN_ROCK_WALL, DNGN_FLOOR);replace_area((60 - width), 10, (GXM - 10), (GYM - 10),DNGN_ROCK_WALL, DNGN_FLOOR);
_replace_area(10, 10, (GXM - 10), (10 + width), DNGN_ROCK_WALL, DNGN_FLOOR);_replace_area(10, (60 - width), (GXM - 10), (GYM - 10),DNGN_ROCK_WALL, DNGN_FLOOR);_replace_area(10, 10, (10 + width), (GYM - 10), DNGN_ROCK_WALL, DNGN_FLOOR);_replace_area((60 - width), 10, (GXM - 10), (GYM - 10),DNGN_ROCK_WALL, DNGN_FLOOR);
replace_area(10, (35 - width2), (GXM - 10), (35 + width2),DNGN_ROCK_WALL, DNGN_FLOOR);replace_area((40 - width2), 10, (40 + width2), (GYM - 10),DNGN_ROCK_WALL, DNGN_FLOOR);
_replace_area(10, (35 - width2), (GXM - 10), (35 + width2),DNGN_ROCK_WALL, DNGN_FLOOR);_replace_area((40 - width2), 10, (40 + width2), (GYM - 10),DNGN_ROCK_WALL, DNGN_FLOOR);
replace_area(10, (35 - width2), (GXM - 10), (35 + width2),DNGN_ROCK_WALL, DNGN_FLOOR);replace_area((40 - width2), 10, (40 + width2), (GYM - 10),DNGN_ROCK_WALL, DNGN_FLOOR);
_replace_area(10, (35 - width2), (GXM - 10), (35 + width2),DNGN_ROCK_WALL, DNGN_FLOOR);_replace_area((40 - width2), 10, (40 + width2), (GYM - 10),DNGN_ROCK_WALL, DNGN_FLOOR);
if (exclusive && count_antifeature_in_box(romx1[which_room] - 1,romy1[which_room] - 1,romx2[which_room] + 1,romy2[which_room] + 1,DNGN_ROCK_WALL))
if (exclusive && _count_antifeature_in_box(romx1[which_room] - 1,romy1[which_room] - 1,romx2[which_room] + 1,romy2[which_room] + 1,DNGN_ROCK_WALL))
replace_area(romx1[which_room], romy1[which_room], romx2[which_room],romy2[which_room], DNGN_ROCK_WALL, DNGN_FLOOR);
_replace_area(romx1[which_room], romy1[which_room], romx2[which_room],romy2[which_room], DNGN_ROCK_WALL, DNGN_FLOOR);
join_the_dots( coord_def(rx1 + random2( rx2 - rx1 ),ry1 + random2( ry2 - ry1 )),coord_def(prev_rx1 + random2(prev_rx2 - prev_rx1),prev_ry1 + random2(prev_ry2 - prev_ry1)),MMT_VAULT );
_join_the_dots( coord_def(rx1 + random2( rx2 - rx1 ),ry1 + random2( ry2 - ry1 )),coord_def(prev_rx1 + random2(prev_rx2 - prev_rx1),prev_ry1 + random2(prev_ry2 - prev_ry1)),MMT_VAULT );
join_the_dots( coord_def( rx1 + random2( rx2 - rx1 ),ry1 + random2( ry2 - ry1 ) ),coord_def(prev_rx1 + random2( prev_rx2 - prev_rx1 ),prev_ry1 + random2( prev_ry2 - prev_ry1 ) ),MMT_VAULT );
_join_the_dots( coord_def( rx1 + random2( rx2 - rx1 ),ry1 + random2( ry2 - ry1 ) ),coord_def(prev_rx1 + random2( prev_rx2 - prev_rx1 ),prev_ry1 + random2( prev_ry2 - prev_ry1 ) ),MMT_VAULT );
static char plan_4(char forbid_x1, char forbid_y1, char forbid_x2,char forbid_y2, dungeon_feature_type force_wall)
static char _plan_4(char forbid_x1, char forbid_y1, char forbid_x2,char forbid_y2, dungeon_feature_type force_wall)
replace_area(23, 23, 26, 26, DNGN_FLOOR, DNGN_STONE_WALL);replace_area(23, 47, 26, 50, DNGN_FLOOR, DNGN_STONE_WALL);replace_area(55, 23, 58, 26, DNGN_FLOOR, DNGN_STONE_WALL);replace_area(55, 47, 58, 50, DNGN_FLOOR, DNGN_STONE_WALL);replace_area(39, 20, 43, 23, DNGN_FLOOR, DNGN_STONE_WALL);replace_area(39, 50, 43, 53, DNGN_FLOOR, DNGN_STONE_WALL);replace_area(20, 30, 23, 33, DNGN_FLOOR, DNGN_STONE_WALL);replace_area(20, 40, 23, 43, DNGN_FLOOR, DNGN_STONE_WALL);replace_area(58, 30, 61, 33, DNGN_FLOOR, DNGN_STONE_WALL);replace_area(58, 40, 61, 43, DNGN_FLOOR, DNGN_STONE_WALL);
_replace_area(23, 23, 26, 26, DNGN_FLOOR, DNGN_STONE_WALL);_replace_area(23, 47, 26, 50, DNGN_FLOOR, DNGN_STONE_WALL);_replace_area(55, 23, 58, 26, DNGN_FLOOR, DNGN_STONE_WALL);_replace_area(55, 47, 58, 50, DNGN_FLOOR, DNGN_STONE_WALL);_replace_area(39, 20, 43, 23, DNGN_FLOOR, DNGN_STONE_WALL);_replace_area(39, 50, 43, 53, DNGN_FLOOR, DNGN_STONE_WALL);_replace_area(20, 30, 23, 33, DNGN_FLOOR, DNGN_STONE_WALL);_replace_area(20, 40, 23, 43, DNGN_FLOOR, DNGN_STONE_WALL);_replace_area(58, 30, 61, 33, DNGN_FLOOR, DNGN_STONE_WALL);_replace_area(58, 40, 61, 43, DNGN_FLOOR, DNGN_STONE_WALL);
static void change_walls_from_centre(const dgn_region ®ion,const coord_def ¢re,bool rectangular,unsigned mmask,dungeon_feature_type wall,const std::vector<dist_feat> &ldist)
static void _change_walls_from_centre(const dgn_region ®ion,const coord_def ¢re,bool rectangular,unsigned mmask,dungeon_feature_type wall,const std::vector<dist_feat> &ldist)
static void change_walls_from_centre(const dgn_region ®ion,const coord_def &c,bool rectangular,dungeon_feature_type wall,...)
static void _change_walls_from_centre(const dgn_region ®ion,const coord_def &c,bool rectangular,dungeon_feature_type wall,...)
static void labyrinth_level(int level_number)
static void _labyrinth_level(int level_number)
change_walls_from_centre(lab, end, false,DNGN_ROCK_WALL,15 * 15, DNGN_METAL_WALL,34 * 34, DNGN_STONE_WALL,0);
_change_walls_from_centre(lab, end, false,DNGN_ROCK_WALL,15 * 15, DNGN_METAL_WALL,34 * 34, DNGN_STONE_WALL,0);
if (grd[x-1][y] == DNGN_CLOSED_DOOR && is_wall(x-1,y-1) && is_wall(x-1,y+1)|| grd[x+1][y] == DNGN_CLOSED_DOOR && is_wall(x+1,y-1) && is_wall(x+1,y+1)|| grd[x][y-1] == DNGN_CLOSED_DOOR && is_wall(x-1,y-1) && is_wall(x+1,y-1)|| grd[x][y+1] == DNGN_CLOSED_DOOR && is_wall(x-1,y+1) && is_wall(x+1,y+1))
if ( grd[x-1][y] == DNGN_CLOSED_DOOR&& _is_wall(x-1,y-1) && _is_wall(x-1,y+1)|| grd[x+1][y] == DNGN_CLOSED_DOOR&& _is_wall(x+1,y-1) && _is_wall(x+1,y+1)|| grd[x][y-1] == DNGN_CLOSED_DOOR&& _is_wall(x-1,y-1) && _is_wall(x+1,y-1)|| grd[x][y+1] == DNGN_CLOSED_DOOR&& _is_wall(x-1,y+1) && _is_wall(x+1,y+1))
place_specific_stair( static_cast<dungeon_feature_type>(j + ((i == 0) ? DNGN_STONE_STAIRS_DOWN_I: DNGN_STONE_STAIRS_UP_I)) );
_place_specific_stair( static_cast<dungeon_feature_type>(j + ((i == 0) ? DNGN_STONE_STAIRS_DOWN_I: DNGN_STONE_STAIRS_UP_I)) );
static bool treasure_area(int level_number, unsigned char ta1_x,unsigned char ta2_x, unsigned char ta1_y,unsigned char ta2_y)
static bool _treasure_area(int level_number, unsigned char ta1_x,unsigned char ta2_x, unsigned char ta1_y,unsigned char ta2_y)
replace_area(sr.x1, sr.y1, sr.x2, sr.y2, DNGN_ROCK_WALL, type_floor);replace_area(sr.x1, sr.y1, sr.x2, sr.y2, DNGN_CLOSED_DOOR, type_floor);
_replace_area(sr.x1, sr.y1, sr.x2, sr.y2, DNGN_ROCK_WALL, type_floor);_replace_area(sr.x1, sr.y1, sr.x2, sr.y2, DNGN_CLOSED_DOOR, type_floor);
static void chequerboard( spec_room &sr, dungeon_feature_type target,dungeon_feature_type floor1,dungeon_feature_type floor2 )
static void _chequerboard( spec_room &sr, dungeon_feature_type target,dungeon_feature_type floor1,dungeon_feature_type floor2 )
replace_area(sr.x1-1, sr.y1-1, sr.x2+1,sr.y1-1, DNGN_ROCK_WALL, DNGN_BUILDER_SPECIAL_WALL);replace_area(sr.x1-1, sr.y1-1, sr.x2+1,sr.y1-1, DNGN_FLOOR, DNGN_BUILDER_SPECIAL_FLOOR);replace_area(sr.x1-1, sr.y1-1, sr.x2+1,sr.y1-1, DNGN_CLOSED_DOOR, DNGN_BUILDER_SPECIAL_FLOOR);
_replace_area(sr.x1-1, sr.y1-1, sr.x2+1,sr.y1-1,DNGN_ROCK_WALL, DNGN_BUILDER_SPECIAL_WALL);_replace_area(sr.x1-1, sr.y1-1, sr.x2+1,sr.y1-1,DNGN_FLOOR, DNGN_BUILDER_SPECIAL_FLOOR);_replace_area(sr.x1-1, sr.y1-1, sr.x2+1,sr.y1-1,DNGN_CLOSED_DOOR, DNGN_BUILDER_SPECIAL_FLOOR);
replace_area(sr.x1-1, sr.y2+1, sr.x2+1,sr.y2+1, DNGN_ROCK_WALL, DNGN_BUILDER_SPECIAL_WALL);replace_area(sr.x1-1, sr.y2+1, sr.x2+1,sr.y2+1, DNGN_FLOOR, DNGN_BUILDER_SPECIAL_FLOOR);replace_area(sr.x1-1, sr.y2+1, sr.x2+1,sr.y2+1, DNGN_CLOSED_DOOR, DNGN_BUILDER_SPECIAL_FLOOR);
_replace_area(sr.x1-1, sr.y2+1, sr.x2+1,sr.y2+1,DNGN_ROCK_WALL, DNGN_BUILDER_SPECIAL_WALL);_replace_area(sr.x1-1, sr.y2+1, sr.x2+1,sr.y2+1,DNGN_FLOOR, DNGN_BUILDER_SPECIAL_FLOOR);_replace_area(sr.x1-1, sr.y2+1, sr.x2+1,sr.y2+1,DNGN_CLOSED_DOOR, DNGN_BUILDER_SPECIAL_FLOOR);
replace_area(sr.x1-1, sr.y1-1, sr.x1-1, sr.y2+1, DNGN_ROCK_WALL, DNGN_BUILDER_SPECIAL_WALL);replace_area(sr.x1-1, sr.y1-1, sr.x1-1, sr.y2+1, DNGN_FLOOR, DNGN_BUILDER_SPECIAL_FLOOR);replace_area(sr.x1-1, sr.y1-1, sr.x1-1, sr.y2+1, DNGN_CLOSED_DOOR, DNGN_BUILDER_SPECIAL_FLOOR);
_replace_area(sr.x1-1, sr.y1-1, sr.x1-1, sr.y2+1,DNGN_ROCK_WALL, DNGN_BUILDER_SPECIAL_WALL);_replace_area(sr.x1-1, sr.y1-1, sr.x1-1, sr.y2+1,DNGN_FLOOR, DNGN_BUILDER_SPECIAL_FLOOR);_replace_area(sr.x1-1, sr.y1-1, sr.x1-1, sr.y2+1,DNGN_CLOSED_DOOR, DNGN_BUILDER_SPECIAL_FLOOR);
replace_area(sr.x2+1, sr.y1-1, sr.x2+1, sr.y2+1, DNGN_ROCK_WALL, DNGN_BUILDER_SPECIAL_WALL);replace_area(sr.x2+1, sr.y1-1, sr.x2+1, sr.y2+1, DNGN_FLOOR, DNGN_BUILDER_SPECIAL_FLOOR);replace_area(sr.x2+1, sr.y1-1, sr.x2+1, sr.y2+1, DNGN_CLOSED_DOOR, DNGN_BUILDER_SPECIAL_FLOOR);
_replace_area(sr.x2+1, sr.y1-1, sr.x2+1, sr.y2+1,DNGN_ROCK_WALL, DNGN_BUILDER_SPECIAL_WALL);_replace_area(sr.x2+1, sr.y1-1, sr.x2+1, sr.y2+1,DNGN_FLOOR, DNGN_BUILDER_SPECIAL_FLOOR);_replace_area(sr.x2+1, sr.y1-1, sr.x2+1, sr.y2+1,DNGN_CLOSED_DOOR, DNGN_BUILDER_SPECIAL_FLOOR);
place_specific_stair( static_cast<dungeon_feature_type>(j + ((i==0) ? DNGN_STONE_STAIRS_DOWN_I: DNGN_STONE_STAIRS_UP_I)) );
_place_specific_stair( static_cast<dungeon_feature_type>(j + ((i == 0) ? DNGN_STONE_STAIRS_DOWN_I: DNGN_STONE_STAIRS_UP_I)) );
case CARD_PORTAL: return "the Portal";case CARD_WARP: return "the Warp";case CARD_SWAP: return "Swap";case CARD_VELOCITY: return "Velocity";case CARD_DAMNATION: return "Damnation";case CARD_SOLITUDE: return "Solitude";case CARD_ELIXIR: return "the Elixir";case CARD_BATTLELUST: return "Battlelust";case CARD_METAMORPHOSIS: return "Metamorphosis";case CARD_HELM: return "the Helm";case CARD_BLADE: return "the Blade";case CARD_SHADOW: return "the Shadow";case CARD_POTION: return "the Potion";case CARD_FOCUS: return "Focus";case CARD_SHUFFLE: return "Shuffle";case CARD_EXPERIENCE: return "Experience";case CARD_HELIX: return "the Helix";case CARD_SAGE: return "the Sage";case CARD_DOWSING: return "Dowsing";case CARD_TROWEL: return "the Trowel";case CARD_MINEFIELD: return "the Minefield";case CARD_GENIE: return "the Genie";case CARD_TOMB: return "the Tomb";case CARD_GLASS: return "Vitrification";case CARD_MAP: return "the Map";case CARD_BANSHEE: return "the Banshee";case CARD_WILD_MAGIC: return "Wild Magic";case CARD_CRUSADE: return "the Crusade";case CARD_SUMMON_ANIMAL: return "the Herd";case CARD_SUMMON_DEMON: return "the Pentagram";case CARD_SUMMON_WEAPON: return "the Dance";case CARD_SUMMON_FLYING: return "Foxfire";
case CARD_PORTAL: return "the Portal";case CARD_WARP: return "the Warp";case CARD_SWAP: return "Swap";case CARD_VELOCITY: return "Velocity";case CARD_DAMNATION: return "Damnation";case CARD_SOLITUDE: return "Solitude";case CARD_ELIXIR: return "the Elixir";case CARD_BATTLELUST: return "Battlelust";case CARD_METAMORPHOSIS: return "Metamorphosis";case CARD_HELM: return "the Helm";case CARD_BLADE: return "the Blade";case CARD_SHADOW: return "the Shadow";case CARD_POTION: return "the Potion";case CARD_FOCUS: return "Focus";case CARD_SHUFFLE: return "Shuffle";case CARD_EXPERIENCE: return "Experience";case CARD_HELIX: return "the Helix";case CARD_SAGE: return "the Sage";case CARD_DOWSING: return "Dowsing";case CARD_TROWEL: return "the Trowel";case CARD_MINEFIELD: return "the Minefield";case CARD_GENIE: return "the Genie";case CARD_TOMB: return "the Tomb";case CARD_GLASS: return "Vitrification";case CARD_MAP: return "the Map";case CARD_BANSHEE: return "the Banshee";case CARD_WILD_MAGIC: return "Wild Magic";case CARD_CRUSADE: return "the Crusade";case CARD_SUMMON_ANIMAL: return "the Herd";case CARD_SUMMON_DEMON: return "the Pentagram";case CARD_SUMMON_WEAPON: return "the Dance";case CARD_SUMMON_FLYING: return "Foxfire";
case CARD_SUMMON_ANY: return "Summoning";case CARD_XOM: return "Xom";case CARD_FAMINE: return "Famine";case CARD_FEAST: return "the Feast";case CARD_WARPWRIGHT: return "Warpwright";case CARD_VITRIOL: return "Vitriol";case CARD_FLAME: return "Flame";case CARD_FROST: return "Frost";case CARD_VENOM: return "Venom";case CARD_SPARK: return "the Spark";case CARD_HAMMER: return "the Hammer";case CARD_PAIN: return "Pain";case CARD_TORMENT: return "Torment";case CARD_SPADE: return "the Spade";case CARD_BARGAIN: return "the Bargain";case CARD_WRATH: return "Wrath";case CARD_WRAITH: return "the Wraith";case CARD_CURSE: return "the Curse";case NUM_CARDS: return "a buggy card";
case CARD_SUMMON_ANY: return "Summoning";case CARD_XOM: return "Xom";case CARD_FAMINE: return "Famine";case CARD_FEAST: return "the Feast";case CARD_WARPWRIGHT: return "Warpwright";case CARD_VITRIOL: return "Vitriol";case CARD_FLAME: return "Flame";case CARD_FROST: return "Frost";case CARD_VENOM: return "Venom";case CARD_SPARK: return "the Spark";case CARD_HAMMER: return "the Hammer";case CARD_PAIN: return "Pain";case CARD_TORMENT: return "Torment";case CARD_SPADE: return "the Spade";case CARD_BARGAIN: return "the Bargain";case CARD_WRATH: return "Wrath";case CARD_WRAITH: return "the Wraith";case CARD_CURSE: return "the Curse";case NUM_CARDS: return "a buggy card";
set_card_and_flags(deck, 0, card1, flags1 | CFLAG_SEEN);set_card_and_flags(deck, 1, card2, flags2 | CFLAG_SEEN);set_card_and_flags(deck, 2, card3, flags3 | CFLAG_SEEN);
_set_card_and_flags(deck, 0, card1, flags1 | CFLAG_SEEN);_set_card_and_flags(deck, 1, card2, flags2 | CFLAG_SEEN);_set_card_and_flags(deck, 2, card3, flags3 | CFLAG_SEEN);
const zap_type firezaps[3] = { ZAP_FLAME, ZAP_STICKY_FLAME, ZAP_FIRE };const zap_type frostzaps[3] = { ZAP_FROST, ZAP_ICE_BOLT, ZAP_COLD };
const zap_type firezaps[3] = { ZAP_FLAME, ZAP_STICKY_FLAME, ZAP_FIRE };const zap_type frostzaps[3] = { ZAP_FROST, ZAP_ICE_BOLT, ZAP_COLD };
const zap_type venomzaps[3] = { ZAP_STING, ZAP_VENOM_BOLT,ZAP_POISON_ARROW };const zap_type sparkzaps[3] = { ZAP_ELECTRICITY, ZAP_LIGHTNING,ZAP_ORB_OF_ELECTRICITY };const zap_type painzaps[2] = { ZAP_AGONY, ZAP_NEGATIVE_ENERGY };
const zap_type venomzaps[3] = { ZAP_STING, ZAP_VENOM_BOLT,ZAP_POISON_ARROW };const zap_type sparkzaps[3] = { ZAP_ELECTRICITY, ZAP_LIGHTNING,ZAP_ORB_OF_ELECTRICITY };const zap_type painzaps[2] = { ZAP_AGONY, ZAP_NEGATIVE_ENERGY };
if (monster->type == -1 || !mons_near(monster) ||mons_friendly(monster) ||mons_holiness(monster) != MH_NATURAL ||mons_is_unique(monster->type) ||mons_immune_magic(monster) ||(is_good_god(you.religion) && mons_is_evil(monster)))
if (monster->type == -1 || !mons_near(monster)|| mons_friendly(monster)|| mons_holiness(monster) != MH_NATURAL|| mons_is_unique(monster->type)|| mons_immune_magic(monster)|| (is_good_god(you.religion) && mons_is_evil(monster)))
case CARD_PORTAL: portal_card(power, rarity); break;case CARD_WARP: warp_card(power, rarity); break;case CARD_SWAP: swap_monster_card(power, rarity); break;case CARD_VELOCITY: velocity_card(power, rarity); break;case CARD_DAMNATION: damnation_card(power, rarity); break;
case CARD_PORTAL: _portal_card(power, rarity); break;case CARD_WARP: _warp_card(power, rarity); break;case CARD_SWAP: _swap_monster_card(power, rarity); break;case CARD_VELOCITY: _velocity_card(power, rarity); break;case CARD_DAMNATION: _damnation_card(power, rarity); break;
case CARD_ELIXIR: elixir_card(power, rarity); break;case CARD_BATTLELUST: battle_lust_card(power, rarity); break;case CARD_METAMORPHOSIS: metamorphosis_card(power, rarity); break;case CARD_HELM: helm_card(power, rarity); break;case CARD_BLADE: blade_card(power, rarity); break;case CARD_SHADOW: shadow_card(power, rarity); break;case CARD_POTION: potion_card(power, rarity); break;case CARD_FOCUS: focus_card(power, rarity); break;case CARD_SHUFFLE: shuffle_card(power, rarity); break;case CARD_EXPERIENCE: experience_card(power, rarity); break;case CARD_HELIX: helix_card(power, rarity); break;case CARD_SAGE: sage_card(power, rarity); break;case CARD_GLASS: glass_card(power, rarity); break;case CARD_DOWSING: dowsing_card(power, rarity); break;case CARD_MINEFIELD: minefield_card(power, rarity); break;case CARD_GENIE: genie_card(power, rarity); break;case CARD_CURSE: curse_card(power, rarity); break;case CARD_WARPWRIGHT: warpwright_card(power, rarity); break;
case CARD_ELIXIR: _elixir_card(power, rarity); break;case CARD_BATTLELUST: _battle_lust_card(power, rarity); break;case CARD_METAMORPHOSIS: _metamorphosis_card(power, rarity); break;case CARD_HELM: _helm_card(power, rarity); break;case CARD_BLADE: _blade_card(power, rarity); break;case CARD_SHADOW: _shadow_card(power, rarity); break;case CARD_POTION: _potion_card(power, rarity); break;case CARD_FOCUS: _focus_card(power, rarity); break;case CARD_SHUFFLE: _shuffle_card(power, rarity); break;case CARD_EXPERIENCE: _experience_card(power, rarity); break;case CARD_HELIX: _helix_card(power, rarity); break;case CARD_SAGE: _sage_card(power, rarity); break;case CARD_GLASS: _glass_card(power, rarity); break;case CARD_DOWSING: _dowsing_card(power, rarity); break;case CARD_MINEFIELD: _minefield_card(power, rarity); break;case CARD_GENIE: _genie_card(power, rarity); break;case CARD_CURSE: _curse_card(power, rarity); break;case CARD_WARPWRIGHT: _warpwright_card(power, rarity); break;
case CARD_WRATH: godly_wrath(); break;case CARD_CRUSADE: crusade_card(power, rarity); break;case CARD_SUMMON_DEMON: summon_demon_card(power, rarity); break;
case CARD_WRATH: _godly_wrath(); break;case CARD_CRUSADE: _crusade_card(power, rarity); break;case CARD_SUMMON_DEMON: _summon_demon_card(power, rarity); break;
case CARD_SUMMON_ANY: summon_any_monster(power, rarity); break;case CARD_SUMMON_WEAPON: summon_dancing_weapon(power, rarity); break;case CARD_SUMMON_FLYING: summon_flying(power, rarity); break;case CARD_SUMMON_SKELETON: summon_skeleton(power, rarity); break;
case CARD_SUMMON_ANY: _summon_any_monster(power, rarity); break;case CARD_SUMMON_WEAPON: _summon_dancing_weapon(power, rarity); break;case CARD_SUMMON_FLYING: _summon_flying(power, rarity); break;case CARD_SUMMON_SKELETON: _summon_skeleton(power, rarity); break;
case CARD_TROWEL: rc = trowel_card(power, rarity); break;case CARD_SPADE: your_spells(SPELL_DIG, random2(power/4), false); break;
case CARD_TROWEL: rc = _trowel_card(power, rarity); break;case CARD_SPADE: your_spells(SPELL_DIG, random2(power/4), false); break;
case CARD_VITRIOL: case CARD_FLAME: case CARD_FROST: case CARD_HAMMER:case CARD_SPARK: case CARD_PAIN:rc = damaging_card(which_card, power, rarity);
case CARD_VITRIOL:case CARD_FLAME:case CARD_FROST:case CARD_HAMMER:case CARD_SPARK:case CARD_PAIN:rc = _damaging_card(which_card, power, rarity);