From 9fcc7c41761ea968d0da075f2974a8908a2ef19b Mon Sep 17 00:00:00 2001 From: Jude Brown Date: Thu, 24 Dec 2009 20:34:29 +1000 Subject: New (rakshasa) unique: Mara, Lord of Ilusions. This re-uses several ideas from the Emerald Eye FR, and implements the spell "Mislead": this grants the "Misled" status effect to the player, and causes on-level monsters to appear (glyph, name and tile) to be other monsters. Only their appearance is changed. Healing potions and rain remove this status effect. Mara also has a beefed-up version of the Rakshasa clone spell: it instead creates an "exact" clone (slightly altered spells list, and non-unique status for his clones). Only two will ever be created at once. Finally, he has the spell "Summon Player Ghost". This spell creates a ghost of the player (though marked as a summon, meaning that it (shouldn't) register a milestone, though it will be treated as a self-ghost kill) that is hostile. Only one of these should be existant at any one point in time. I'm pretty sure that I haven't broken anything, but would definitely appreciate someone sanity-checking this commit. Known minor issue: Kirke's summon ugly things being cast while having the Misled status causes them to show up with no glyph. --- crawl-ref/source/directn.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'crawl-ref/source/directn.cc') diff --git a/crawl-ref/source/directn.cc b/crawl-ref/source/directn.cc index 1526fd6255..518d21b23c 100644 --- a/crawl-ref/source/directn.cc +++ b/crawl-ref/source/directn.cc @@ -3140,8 +3140,11 @@ static std::string _get_monster_desc(const monsters *mon) else if (mon->neutral()) // don't differentiate between permanent or not text += pronoun + " is indifferent to you.\n"; - if (mon->is_summoned() && mon->type != MONS_RAKSHASA_FAKE) + if (mon->is_summoned() && (mon->type != MONS_RAKSHASA_FAKE + && mon->type != MONS_MARA_FAKE)) + { text += pronoun + " has been summoned.\n"; + } if (mon->haloed()) text += pronoun + " is illuminated by a divine halo.\n"; @@ -3242,7 +3245,8 @@ std::string get_monster_equipment_desc(const monsters *mon, bool full_desc, std::string weap = ""; // We don't report rakshasa equipment in order not to give away the - // true rakshasa when it summons. + // true rakshasa when it summons. But Mara is fine, because his weapons + // and armour are cloned with him. if (mon->type != MONS_DANCING_WEAPON && (mon->type != MONS_RAKSHASA || mon->friendly())) @@ -3258,7 +3262,8 @@ std::string get_monster_equipment_desc(const monsters *mon, bool full_desc, } // Print the rest of the equipment only for full descriptions. - if (full_desc && (mon->type != MONS_RAKSHASA || mon->friendly())) + if (full_desc && ((mon->type != MONS_RAKSHASA && mon->type != MONS_MARA + && mon->type != MONS_MARA_FAKE) || mon->friendly())) { const int mon_arm = mon->inv[MSLOT_ARMOUR]; const int mon_shd = mon->inv[MSLOT_SHIELD]; -- cgit v1.2.3-54-g00ecf