summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/xom.cc
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-24 19:23:47 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-24 19:23:47 +0000
commit2013a8bc4c4a49c29069e3d6e5231227e5b64239 (patch)
treec7f7cba5c7a240e8b6d8abf98e1c7a9d3d91b271 /crawl-ref/source/xom.cc
parent0aff0188aadd0a8661abc5b2d2bd33d763243796 (diff)
downloadcrawl-ref-2013a8bc4c4a49c29069e3d6e5231227e5b64239.tar.gz
crawl-ref-2013a8bc4c4a49c29069e3d6e5231227e5b64239.zip
Simplify Xom's polymorphing monsters.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6123 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/xom.cc')
-rw-r--r--crawl-ref/source/xom.cc73
1 files changed, 34 insertions, 39 deletions
diff --git a/crawl-ref/source/xom.cc b/crawl-ref/source/xom.cc
index 3a737d2763..a178001328 100644
--- a/crawl-ref/source/xom.cc
+++ b/crawl-ref/source/xom.cc
@@ -597,30 +597,28 @@ static bool _xom_is_good(int sever)
}
else if (random2(sever) <= 7)
{
- if (!there_are_monsters_nearby())
- goto try_again;
+ if (there_are_monsters_nearby())
+ {
+ monsters *mon =
+ choose_random_nearby_monster(0, _choose_mutatable_monster);
- monsters *mon =
- choose_random_nearby_monster(0, _choose_mutatable_monster);
+ if (mon)
+ {
+ god_speaks(GOD_XOM, _get_xom_speech("good monster polymorph"));
- if (mon)
- {
- god_speaks(GOD_XOM, _get_xom_speech("good monster polymorph"));
+ monster_polymorph(mon, RANDOM_MONSTER,
+ mons_wont_attack(mon) ? PPT_MORE : PPT_LESS);
- if (mons_wont_attack(mon))
- monster_polymorph(mon, RANDOM_MONSTER, PPT_MORE);
- else
- monster_polymorph(mon, RANDOM_MONSTER, PPT_LESS);
+ if (one_chance_in(8)
+ && !mon->has_ench(ENCH_GLOWING_SHAPESHIFTER,
+ ENCH_SHAPESHIFTER))
+ {
+ mon->add_ench(one_chance_in(3) ? ENCH_GLOWING_SHAPESHIFTER
+ : ENCH_SHAPESHIFTER);
+ }
- if (one_chance_in(8)
- && !mon->has_ench(ENCH_GLOWING_SHAPESHIFTER,
- ENCH_SHAPESHIFTER))
- {
- mon->add_ench(one_chance_in(3) ? ENCH_GLOWING_SHAPESHIFTER
- : ENCH_SHAPESHIFTER);
+ done = true;
}
-
- done = true;
}
}
else if (random2(sever) <= 8)
@@ -792,30 +790,28 @@ static bool _xom_is_bad(int sever)
}
else if (random2(sever) <= 7)
{
- if (!there_are_monsters_nearby())
- goto try_again;
+ if (there_are_monsters_nearby())
+ {
+ monsters *mon =
+ choose_random_nearby_monster(0, _choose_mutatable_monster);
- monsters *mon =
- choose_random_nearby_monster(0, _choose_mutatable_monster);
+ if (mon)
+ {
+ god_speaks(GOD_XOM, _get_xom_speech("bad monster polymorph"));
- if (mon)
- {
- god_speaks(GOD_XOM, _get_xom_speech("bad monster polymorph"));
+ monster_polymorph(mon, RANDOM_MONSTER,
+ mons_wont_attack(mon) ? PPT_LESS : PPT_MORE);
- if (mons_wont_attack(mon))
- monster_polymorph(mon, RANDOM_MONSTER, PPT_LESS);
- else
- monster_polymorph(mon, RANDOM_MONSTER, PPT_MORE);
+ if (one_chance_in(8)
+ && !mon->has_ench(ENCH_GLOWING_SHAPESHIFTER,
+ ENCH_SHAPESHIFTER))
+ {
+ mon->add_ench(one_chance_in(3) ? ENCH_GLOWING_SHAPESHIFTER
+ : ENCH_SHAPESHIFTER);
+ }
- if (one_chance_in(8)
- && !mon->has_ench(ENCH_GLOWING_SHAPESHIFTER,
- ENCH_SHAPESHIFTER))
- {
- mon->add_ench(one_chance_in(3) ? ENCH_GLOWING_SHAPESHIFTER
- : ENCH_SHAPESHIFTER);
+ done = true;
}
-
- done = true;
}
}
else if (random2(sever) <= 8)
@@ -907,7 +903,6 @@ static bool _xom_is_bad(int sever)
}
}
-try_again:
return (done);
}