summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/religion.cc14
-rw-r--r--crawl-ref/source/spells2.cc10
-rw-r--r--crawl-ref/source/spells2.h1
3 files changed, 14 insertions, 11 deletions
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index 2d2d2e0986..8bbdfc7693 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -3543,17 +3543,15 @@ static bool _tso_retribution()
{
case 0:
case 1:
- case 2: // summon holy beings (3/7)
+ case 2: // summon holy warriors (3/7)
{
bool success = false;
int how_many = 1 + random2(you.experience_level / 5) + random2(3);
for (int i = 0; i < how_many; ++i)
{
- if (create_monster(
- mgen_data::hostile_at(
- summon_any_holy_being(HOLY_BEING_RANDOM),
- you.pos(), 0, 0, true, god)) != -1)
+ if (summon_holy_warrior(you.experience_level * 20, god, true, true,
+ true))
{
success = true;
}
@@ -5235,9 +5233,9 @@ void excommunication(god_type new_god)
// Leaving TSO for a non-good god will make all your followers
// abandon you. Leaving him for a good god will make your holy
- // followers (his daeva servants) indifferent, while leaving
- // your other followers (blessed with friendliness by his power,
- // but not his servants) alone.
+ // followers (his daeva and angel servants) indifferent, while
+ // leaving your other followers (blessed with friendliness by
+ // his power, but not his servants) alone.
if (!is_good_god(new_god))
{
_inc_penance(old_god, 50);
diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc
index e5ec060ba1..91d1a09b74 100644
--- a/crawl-ref/source/spells2.cc
+++ b/crawl-ref/source/spells2.cc
@@ -1656,11 +1656,15 @@ static bool _summon_holy_being_wrapper(int pow, god_type god,
return _summon_holy_being_wrapper(pow, god, mon, dur, friendly, quiet);
}
-bool summon_holy_warrior(int pow, god_type god, bool quiet)
+bool summon_holy_warrior(int pow, god_type god,
+ bool force_hostile, bool permanent,
+ bool quiet)
{
return _summon_holy_being_wrapper(pow, god, HOLY_BEING_WARRIOR,
- std::min(2 + (random2(pow) / 4), 6),
- true, quiet);
+ !permanent ?
+ std::min(2 + (random2(pow) / 4), 6) :
+ 0,
+ !force_hostile, quiet);
}
bool summon_holy_being_type(monster_type mon, int pow, god_type god)
diff --git a/crawl-ref/source/spells2.h b/crawl-ref/source/spells2.h
index 6d8d4b9aaa..1ed6cec231 100644
--- a/crawl-ref/source/spells2.h
+++ b/crawl-ref/source/spells2.h
@@ -64,6 +64,7 @@ bool cast_summon_dragon(int pow, god_type god = GOD_NO_GOD);
bool summon_berserker(int pow, god_type god = GOD_NO_GOD,
bool force_hostile = false);
bool summon_holy_warrior(int pow, god_type god = GOD_NO_GOD,
+ bool force_hostile = false, bool permanent = false,
bool quiet = false);
bool summon_holy_being_type(monster_type mon, int pow,
god_type god = GOD_NO_GOD);