git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1916 c06c8d41-db1a-0410-9941-cceddc491573
K2MLPJIAXXZRWEWZCNSGICCBNIU2WAAPT7SPIMOH7FLLTOB4QFRAC 7EI4HMXZ7TAWZKFZG2SXHDAX3FWFBCZLUAKOALPRFF72FS7NKVBQC USOQ63RA4KJNPRKVNDTW2MXBEY7JMDJWFG2HVX7YWLKQ6DBC5H5QC XNYPQTF74HLRSKTEVLTNCDB43YHWOFTQL5TVSNO6WWPAJGZSCYKQC KZKTA7OVWQEZIR27FWMJQ7PJMPP2PQG7SN2WESDIC6SLU7Z6XFOAC PFEJ4LMDNEKLMGRCMWQ7EIRVU4JMYGICI4G7X4WVWOROVXQCBZ7QC 4GFCF6N3MZSCHUB77Z3SQYJ3FYR5N3VBW2CGWANLJ74O5FEQH3CQC KS4WBDOLZ45T5Q742JZQIRN3H7XZTYDPM4TCIAILIRO3OV7ANR2AC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC E5DMZFW6WCFAKTKKOQPYTQXZ2CGLWMVH64LRXDUI2UIG4VYUHIVQC 7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC HH3HFWVXABJ4IRMN22PPJCREMULZSN6DA7VYKOGECGMNUQTZ5QNQC 5SLFWZQ2S5XZUTUSEHPHACETQ6EXUZXSUYKJHHVXN77PTJSE36LAC QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC CDKRLJIGVWQE2PMHCSLJBLYQEK7JYC4LQM7H2X3O6NMJMCCDRVIAC FUEEIUKGHHFPIRZCN3N753GONWAZTWQ2ZWR53IBJAAZ6FZUNGOMAC 5RK245FAGZFCDDYG4AZAXSC7JPVIJG4DSAVAKHWWVBUNGICHYNJQC IPXXB4VRVZWOU5DKQ5ZTD37LS3QNK2R6APNZUO672YEEJT6OFAYQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC YATODO2EN3AW7IXW5PL25HHK34YHF6Y32QBMOUZXEATZZ4YQQWZQC 43ZTEB57FU7KE5EVMYWZONNVJBZCGF3JEAJZIY25LC4LGE65PG5QC PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC V4WGXVERZ34B7CEINV4D3ZYEKKT2TUIUYTOX5FSOX6B26U3DPVLQC BWAQ3FHBBM6G3K3KYP75CRTR343RDQZJRYX5ZGYUEXYBAC3APDLAC UEAJDUSNR7OHYBVHEE2ZSKGKHA6EL4OKU3QYLXLVHXX7BUH3A3KQC SIKFXNXSAMU6IYRGDG6SWP3LOX6SEE7PDFA7RVQAGG2SLWQ72D2QC ZJLJGSB2XSBQU42OFQMXL3EG4CXAQGOYAU6YTV2SAWZEJIPFH2CAC EHSY6DVGUMI6C67WKET3GDJVLWJWGYBYQONNDK5JVT7BCTHBEZVAC RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC XPCGZBHHSL6MB3ORMUJI64BAERU6AZTIY6RK56BBW7SNB3IK24IAC D77K7ISUWRLGNSQGYH5P2KEJZCNYQHDZC5AMLSKTXVBIRNG6F5KQC void init_monster_symbols(){for (int i = 0; i < NUM_MONSTERS; ++i){mon_display &md = monster_symbols[i];const monsterentry *me = get_monster_data(i);if (me){md.glyph = me->showchar;md.colour = me->colour;}}for (int i = 0, size = Options.mon_glyph_overrides.size();i < size; ++i){const mon_display &md = Options.mon_glyph_overrides[i];if (md.type == MONS_PROGRAM_BUG)continue;if (md.glyph)monster_symbols[md.type].glyph = md.glyph;if (md.colour)monster_symbols[md.type].colour = md.colour;}}
int mons_class_colour(int mc){const monsterentry *m = smc;if (!m)return (BLACK);const int class_colour = m->colour;return (class_colour);} // end mons_colour()
}void game_options::add_mon_glyph_override(monster_type mtype,mon_display &mdisp){mdisp.type = mtype;mon_glyph_overrides.push_back(mdisp);}void game_options::add_mon_glyph_overrides(const std::string &mons,mon_display &mdisp){// If one character, this is a monster letter.int letter = -1;if (mons.length() == 1)letter = mons[0] == '_' ? ' ' : mons[0];for (int i = 0; i < NUM_MONSTERS; ++i){const monsterentry *me = get_monster_data(i);if (!me || me->mc == MONS_PROGRAM_BUG)continue;if (me->showchar == letter || me->name == mons)add_mon_glyph_override(static_cast<monster_type>(i), mdisp);}}mon_display game_options::parse_mon_glyph(const std::string &s) const{mon_display md;std::vector<std::string> phrases = split_string(" ", s);for (int i = 0, size = phrases.size(); i < size; ++i){const std::string &p = phrases[i];const int col = str_to_colour(p, -1, false);if (col != -1 && colour)md.colour = col;elsemd.glyph = p == "_"? ' ' : read_symbol(p);}return (md);}void game_options::add_mon_glyph_override(const std::string &text){std::vector<std::string> override = split_string(":", text);if (override.size() != 2u)return;mon_display mdisp = parse_mon_glyph(override[1]);if (mdisp.glyph || mdisp.colour)add_mon_glyph_overrides(override[0], mdisp);
void add_all(const std::string &s, const std::string &separator,void (game_options::*add)(const std::string &));void add_mon_glyph_override(monster_type mtype, mon_display &mdisp);void add_mon_glyph_overrides(const std::string &mons, mon_display &mdisp);void add_mon_glyph_override(const std::string &);mon_display parse_mon_glyph(const std::string &s) const;
You can customise symbols based on monster names or their existingsymbols. For instance, if you want to put elves on E and efreetion e, you can do this:mon_glyph = e : Emon_glyph = E : eIf you want to change the symbol for a monster that uses aspace as a symbol, specify an underscore on the left:mon_glyph = _ : #(That changes shades to use #.)You can specify a different symbol, or a colour, or both, inany order. Here are more examples:mon_glyph = deep elf annihilator : E lightmagentamon_glyph = Xtahua : lightmagenta Dmon_glyph = large zombie : darkgreymon_glyph = small simulacrum : x(The left hand side of the : is case-sensitive.)You can specify symbols using their code points using thesyntax as shown in feature. If you're using char_set=unicode,you can use unicode code points:mon_glyph = draconian scorcher : x6e9A single _ is treated as a space; if you want a real underscore,put a \ in front of it like this:mon_glyph = player ghost : \_