From d8aa4c0b1fdbe447c82fc9afc3de0d4f00d038ae Mon Sep 17 00:00:00 2001 From: PatR Date: Sat, 1 Jun 2024 02:08:06 -0700 Subject: [PATCH] still more brides of Dracula Another tweak to PR #1240. Vampires start out vampshifted to bat/fog/wolf form. Marking them as 'waiting' forces them back to vampire form. Testing that revealed one of the brides as a vampire lord rather than a vampire lady. That could probably be construed as being politically correct but doesn't match the source material. The reversion from vampshifted to vampire entailed a 10% chance of toggling gender, comparable to hero self-polymorph. Don't do that for vampires. From the player's perspective they change randomly but from their own perspective, the change is controlled. --- dat/tower1.lua | 9 +++++---- src/mon.c | 7 +++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/dat/tower1.lua b/dat/tower1.lua index 238a8455e..c968b707c 100644 --- a/dat/tower1.lua +++ b/dat/tower1.lua @@ -35,10 +35,11 @@ des.monster("V",niches[3]) -- no consensus for their names. According to the Wikipedia entry for -- "Brides of Dracula", the "Czechoslovakian TV film Hrabe Drakula (1971)" -- gave them titles rather than (or perhaps in addition to) specific names --- and we use those titles here. -des.monster({ id="Vampire Lady", niches[4], name="Madame" }) -des.monster({ id="Vampire Lady", niches[5], name="Marquise" }) -des.monster({ id="Vampire Lady", niches[6], name="Countess" }) +-- and we use those titles here. Marking them as 'waiting' forces them to +-- start in vampire form instead of vampshifted into bat/fog/wolf form. +des.monster({ id="Vampire Lady", niches[4], name="Madame", waiting=1 }) +des.monster({ id="Vampire Lady", niches[5], name="Marquise", waiting=1 }) +des.monster({ id="Vampire Lady", niches[6], name="Countess", waiting=1 }) -- The doors des.door("closed",08,03) des.door("closed",10,03) diff --git a/src/mon.c b/src/mon.c index c4ad04027..5d3e37824 100644 --- a/src/mon.c +++ b/src/mon.c @@ -5027,8 +5027,11 @@ mgender_from_permonst( } else if (is_female(mdat)) { mtmp->female = TRUE; } else if (!is_neuter(mdat)) { - /* usually leave as-is; same chance to change as polymorphing hero */ - if (!rn2(10)) + /* usually leave as-is; same chance to change as polymorphing hero; + vampires use controlled shapechange (from their perspective, even + if it is random from the player's perspective) and don't undergo + gender change */ + if (!rn2(10) && !(is_vampire(mdat) || is_vampshifter(mtmp))) mtmp->female = !mtmp->female; } }