diff options
author | Jude Brown <bookofjude@users.sourceforge.net> | 2009-12-24 20:34:29 +1000 |
---|---|---|
committer | Jude Brown <bookofjude@users.sourceforge.net> | 2009-12-24 21:17:11 +1000 |
commit | 9fcc7c41761ea968d0da075f2974a8908a2ef19b (patch) | |
tree | 85c8495c846722906b4832ba3d5de430532d95f6 /crawl-ref/source/kills.cc | |
parent | bcc249f77c1459b75b7a4f96b018a15569e675b3 (diff) | |
download | crawl-ref-9fcc7c41761ea968d0da075f2974a8908a2ef19b.tar.gz crawl-ref-9fcc7c41761ea968d0da075f2974a8908a2ef19b.zip |
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.
Diffstat (limited to 'crawl-ref/source/kills.cc')
-rw-r--r-- | crawl-ref/source/kills.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/crawl-ref/source/kills.cc b/crawl-ref/source/kills.cc index fa7e0a3924..f0ea8ee3f0 100644 --- a/crawl-ref/source/kills.cc +++ b/crawl-ref/source/kills.cc @@ -280,7 +280,7 @@ void Kills::merge(const Kills &k) void Kills::record_kill(const struct monsters *mon) { // Handle player ghosts separately. - if (mon->type == MONS_PLAYER_GHOST) + if (mon->type == MONS_PLAYER_GHOST && !mon->is_summoned()) { record_ghost_kill(mon); return ; @@ -533,6 +533,9 @@ std::string kill_def::base_name(const kill_monster_desc &md) const case MONS_RAKSHASA_FAKE: name = "illusory " + name; break; + case MONS_MARA_FAKE: + name = "illusory " + name; + break; } return name; } @@ -622,7 +625,7 @@ kill_ghost::kill_ghost(const monsters *mon) // Check whether this is really a ghost, since we also have to handle // the Pandemonic demons. - if (mon->type == MONS_PLAYER_GHOST) + if (mon->type == MONS_PLAYER_GHOST && !mon->is_summoned()) ghost_name = "The ghost of " + get_ghost_description(*mon, true); } |