From: <gi...@cr...> - 2025-07-11 07:05:14
|
via 71506e332b858dde8cde902e42d1823f00edc394 (commit) from 79144c677037e29759d624930c45b1401d67b5c2 (commit) ----------------------------------------------------------------------- commit 71506e332b858dde8cde902e42d1823f00edc394 Author: David Lawrence Ramsey <poo...@gm...> Date: Wed Jul 9 20:01:16 2025 -0500 Adjust crawling flesh cage polymorphing/mutation. Since they're made of mostly ugly thing fragments, they shouldn't polymorph the usual way, and since they don't have different colours the way ordinary ugly things do, disallow their polymorphing, and make their mutation only cosmetic. (Coincidentally, both of these are exactly how polymorphed/mutated abominations are treated.) ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/monster.cc | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc index 596c8ad003..9ab429fca8 100644 --- a/crawl-ref/source/monster.cc +++ b/crawl-ref/source/monster.cc @@ -5107,10 +5107,15 @@ bool monster::can_mutate() const if (type == MONS_CHAOS_SPAWN) return false; - // Abominations re-randomize their tile when mutated. They do not gain the - // malmutate status or experience any other non-cosmetic effect. - if (type == MONS_ABOMINATION_SMALL || type == MONS_ABOMINATION_LARGE) + // Abominations and crawling flesh cages re-randomize their tile when + // mutated. They do not gain the malmutate status or experience any other + // non-cosmetic effect. + if (type == MONS_ABOMINATION_SMALL + || type == MONS_ABOMINATION_LARGE + || type == MONS_CRAWLING_FLESH_CAGE) + { return true; + } const mon_holy_type holi = holiness(); @@ -5128,10 +5133,17 @@ bool monster::can_polymorph() const if (type == MONS_CHAOS_SPAWN) return true; - // Abominations re-randomize their tile when mutated, so can_mutate returns - // true for them. Like all undead, they can't be polymorphed. - if (type == MONS_ABOMINATION_SMALL || type == MONS_ABOMINATION_LARGE) + // Abominations and crawling flesh cages re-randomize their tile when + // mutated, so can_mutate returns true for them. Abominations can't be + // polymorphed because they're undead, and crawling flesh cages can't be + // polymorphed the usual way because they're mostly made of ugly thing + // fragments. + if (type == MONS_ABOMINATION_SMALL + || type == MONS_ABOMINATION_LARGE + || type == MONS_CRAWLING_FLESH_CAGE) + { return false; + } // Polymorphing apostles breaks all sorts of things (like making challenges // unwinnable if it happens) and it would be complex to fix this, so let's @@ -5185,9 +5197,12 @@ bool monster::malmutate(const actor* source, const string& /*reason*/) if (!can_mutate()) return false; - // Abominations re-randomize their tile when mutated. They do not gain the - // malmutate status or experience any other non-cosmetic effect. - if (type == MONS_ABOMINATION_SMALL || type == MONS_ABOMINATION_LARGE) + // Abominations and crawling flesh cages re-randomize their tile when + // mutated. They do not gain the malmutate status or experience any other + // non-cosmetic effect. + if (type == MONS_ABOMINATION_SMALL + || type == MONS_ABOMINATION_LARGE + || type == MONS_CRAWLING_FLESH_CAGE) { #ifdef USE_TILE props[TILE_NUM_KEY].get_short() = ui_random(256); -- Dungeon Crawl Stone Soup |