a Visitor for every dungeon level. The idea is to use this for galaxy-spanning effects, e.g. if you want to shuffle all the decks in existence or deconvert all the Beogh-converted orcs. Not well tested; might be buggy.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2960 c06c8d41-db1a-0410-9941-cceddc491573
XYBPIU6AQ77EID4VNOMI7KQZULZI4VBZHHIGBRYO7QRJVCODEKYAC AFY6BHEVU67PXCVX6M3KUG5DTLOJTDGF3D4CQ4S7OMIB35WDSJAAC EFWEYIB2R3DPD3JWIPU6LS6SFLPMYN7J7X4GBZR7DJWKHJ3UELSAC AVCMVFA3MKCXHO6H44UK5KJNIHTGQV7UA7GYXM26VI6TXXU5ZN6QC OONYLF4DAPLIYLBNNRW74IVT5BBTWI4XHQBXSNSPVRX3FTKJBTRAC ZLQAAP55CJ77XIJN3DZVPT4GTTVLIBFJLIJJKI6L5UBSHX7VUK6AC UWMN4HLG6YA2YFQEVIVMDISD6APKEPIZXMMPMNUYCBQDSAUYSXPQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC ANOEQTM6IGCBTESKKQ5PCBSDTZ7VGRCMDIOAFEH4R7DJHKWKDFAAC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC IVVRQ52VA3MAD25ZMPID3GCRBBFYR54CH33DKXYTRAGUBLTRAZNAC JUNF2JNFSVAITA6XQU3CEOMP5PG4PVSHKIGFTSUCYCN4ICPEXEKAC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC DOZORMA366M4HB5JKSS27BMCR6ET7QNZNND2B7KV3NVEEPR5H7EAC SW3RLYFNRT3IJBK6LYKHKP2J2YDU7SXQWAJZX7U6S7ICYW43OMNQC ZJLJGSB2XSBQU42OFQMXL3EG4CXAQGOYAU6YTV2SAWZEJIPFH2CAC UURAYLSSITZLQR56MCWFPIWMECU7F3USMA2UPJAO4IPIY5WVKP5QC 7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC 7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC W5VEC2PBIM5DMU5233HOWAZUEPTGWJRZZIA3H35YYQQW6BTP6XUAC ZP2KE7A2LE7Z2S7AC45WE4CXDSEVDTWIMV2EM4IBUKXYJIDU6R7QC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC char buf[200];sprintf(buf, "Level annotation: %s\n",get_level_annotation().c_str() );mpr(buf, MSGCH_PLAIN, YELLOW);
mprf(MSGCH_PLAIN, YELLOW, "Level annotation: %s",get_level_annotation().c_str());
void apply_to_all_dungeons(void (*applicator)()){const branch_type original_branch = you.where_are_you;const int original_level = you.your_level;const level_area_type original_type = you.level_type;branch_type last_visited_branch = original_branch;int last_visited_level = original_level;const coord_def old_pos(you.pos());// Apply to current level, then save it out.applicator();save_level(original_level, original_type, original_branch);you.level_type = LEVEL_DUNGEON;for ( int i = 0; i < MAX_LEVELS; ++i ){for ( int j = 0; j < NUM_BRANCHES; ++j ){if ( tmp_file_pairs[i][j] ){you.your_level = i;you.where_are_you = static_cast<branch_type>(j);// Don't apply to the original level - already done up top.if ( original_type == you.level_type &&original_level == you.your_level &&original_branch == you.where_are_you )continue;// Load the dungeon level...load( DNGN_STONE_STAIRS_DOWN_I, LOAD_VISITOR,LEVEL_DUNGEON, last_visited_level,last_visited_branch );// Modify it...applicator();// And save it back.save_level(you.your_level, LEVEL_DUNGEON, you.where_are_you);last_visited_branch = you.where_are_you;last_visited_level = you.your_level;}}}// Reload the original level.you.where_are_you = original_branch;you.your_level = original_level;you.level_type = original_type;load( DNGN_STONE_STAIRS_DOWN_I, LOAD_VISITOR,original_type, original_level, original_branch );}