mutate into (very) ugly things of a different color. Also, shapeshifters can no longer take their forms, and they can no longer be made shapeshifters themselves.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10718 c06c8d41-db1a-0410-9941-cceddc491573
JMBL7S3FVFBUQGRYXVHY4LCL3RTWMFFW42EG4FQPH45YTERD35RAC
6VNXS26SKWXBVS5B3UCWS3OIIPIM2MDHBPUXBVLT5EXXZEEOFVMQC
4OKEEU32EGHIDAJ75GH3USSQHQPZBDZVC7TOP7ALMHZRUFPE5WEQC
HGBHRHXFVTEWYYV2D5HKTKL4Z6OSNR2ZOIHFQX55CVRCXQUQ7MQAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC
2Z3OOVUKQAJ7BYWNDX46DIQFTBK6GALPD3JCVD4YQFNDEKXEPDEQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
542UIZKI65UDRNEMGFFDBWYD5XC7AYLTZ3JZQRR2GHYJALD3YY6QC
SMQ5TWOKCXGJ5DP2EJE2RXMHEKZKDOKVDUCEO7WOSSOJLS76WP4QC
MX2KOWAIE37VLSQJWXVEDVQVB3DL325Q7YFUSSHYMAIH53Y74IJQC
IXOB6KSQY3CWTXS3LLNDWLVMNK6CV2MCXJAR5CJLNNX4ZOLAMV6QC
3U7R5PBYTKTXZIIC2UE3MWMJSQSDK2EIZKSPR3PF434ZWK7A76JQC
Y4WR4EIOFFXHRQI2PJAZWD4MVL6A7MNBHLN4KOV6BIKGGA7FXQTQC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
Z6Q7JVMFQ32SC7FRGOB7CE7JS2HEOPAO3B2VLU3YR3UCUDZFIPFQC
3DO3LBKJRTDOI6MBMVQGH6KESDFKRYMNIGKDTCWCMPACRMWTQYIQC
C4CGYUPRJPDPAF6E65Y3MGAK45PNDPF2CNT276V7P37PPLX3AR5QC
S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC
SLS2XJULEDJ4THKXXVQ2XPTO47773EYMG4FPIRDN63BXY3QLMSLQC
RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC
7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC
7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC
if (mons_class_holiness( new_mclass ) != mons_holiness( monster )
|| mons_class_flag( new_mclass, M_UNIQUE) // no uniques
|| mons_class_flag( new_mclass, M_NO_EXP_GAIN ) // not helpless
|| new_mclass == mons_species( monster->type ) // must be different
if (mons_class_holiness(new_mclass) != mons_holiness(monster)
|| mons_class_flag(new_mclass, M_UNIQUE) // no uniques
|| mons_class_flag(new_mclass, M_NO_EXP_GAIN) // not helpless
|| new_mclass == mons_species(monster->type) // must be different
// These shouldn't happen anyways (demons unaffected + holiness check),
// but if we ever do have polydemon, these will be needed:
|| new_mclass == MONS_PLAYER_GHOST
|| new_mclass == MONS_PANDEMONIUM_DEMON
// These require manual setting of the ghost demon struct to
// indicate their characteristics, which we currently aren't
// smart enough to handle.
|| mons_is_ghost_demon(new_mclass)
// An ugly thing always gets a low-intensity colour.
colour = _ugly_thing_random_colour();
// An ugly thing always gets a low-intensity colour. If we're
// mutating it, it always gets a different colour from what it had
// before.
colour = _ugly_thing_random_colour(mutate ? colour : BLACK);