diff options
author | zelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-01-18 12:28:32 +0000 |
---|---|---|
committer | zelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-01-18 12:28:32 +0000 |
commit | 5ce6c53bfc93be25a45d95cb00e5c6bea9ef34e9 (patch) | |
tree | 2ddea46d5c0023e5a168cd8ee7bb1e4255923d08 /crawl-ref/source | |
parent | 8f6cfc7dc436f084353cadb8ec1358257947eeea (diff) | |
download | crawl-ref-5ce6c53bfc93be25a45d95cb00e5c6bea9ef34e9.tar.gz crawl-ref-5ce6c53bfc93be25a45d95cb00e5c6bea9ef34e9.zip |
Fix bug #2482254: a giant spore exploding was having the mgrd where it used to
be set to NON_MONSTER *twice*, the second time after the royal jelly had
responded to the explosion and spat out a new jelly on the spot the spore used
to occupy, leading to the new jelly becoming detached from the mgrd.
Allowing the royal jelly to be radnomly generated in the arena with the
random_uniques tag, since it's no longer causing a crash.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8545 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/arena.cc | 5 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 6 |
2 files changed, 6 insertions, 5 deletions
diff --git a/crawl-ref/source/arena.cc b/crawl-ref/source/arena.cc index e295a0ea77..45a76e1d7b 100644 --- a/crawl-ref/source/arena.cc +++ b/crawl-ref/source/arena.cc @@ -863,11 +863,6 @@ namespace arena if (i == MONS_PLAYER_GHOST) continue; - // Skip the royal jelly for now, since if it gets hit by - // multiple explosions it can cause an assertion. - if (i == MONS_ROYAL_JELLY) - continue; - if (mons_is_unique(i) && !arena_veto_random_monster( (monster_type) i)) { diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 831fbddc15..2529eca193 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -957,6 +957,12 @@ static bool _spore_goes_pop(monsters *monster, killer_type killer, // its own explosion. (GDL) mgrd(monster->pos()) = NON_MONSTER; + // The explosion might cause a monster to be placed where the spore + // used to be, so make sure that mgrd() doesn't get cleared a second + // time (causing the new monster to become floating) when + // monster->reset() is called. + monster->pos().reset(); + // Exploding kills the monster a bit earlier than normal. monster->hit_points = -16; if (saw) |