summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/player.cc4
-rw-r--r--crawl-ref/source/religion.cc28
2 files changed, 22 insertions, 10 deletions
diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc
index fe6c3a2e76..5788486b63 100644
--- a/crawl-ref/source/player.cc
+++ b/crawl-ref/source/player.cc
@@ -5352,7 +5352,9 @@ flight_type player::flies() const
if ( !is_levitating() )
return (FL_NONE);
else
- return (you.duration[DUR_CONTROLLED_FLIGHT] ? FL_FLY : FL_LEVITATE);
+ return (you.duration[DUR_CONTROLLED_FLIGHT]
+ || wearing_amulet(AMU_CONTROLLED_FLIGHT)
+ ? FL_FLY : FL_LEVITATE);
}
bool player::light_flight() const
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index 5f59b99f05..5e4833204e 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -742,19 +742,29 @@ void pray()
}
const god_type altar_god = grid_altar_god(grd[you.x_pos][you.y_pos]);
- if (you.religion != GOD_NO_GOD && altar_god == you.religion)
+ if (altar_god != GOD_NO_GOD)
{
- altar_prayer();
- }
- else if (altar_god != GOD_NO_GOD)
- {
- if (you.species == SP_DEMIGOD)
+ if (player_is_levitating()
+ && !wearing_amulet(AMU_CONTROLLED_FLIGHT))
{
- mpr("Sorry, a being of your status cannot worship here.");
+ mpr("You are floating high above the altar.");
+ return;
+ }
+
+ if (you.religion != GOD_NO_GOD && altar_god == you.religion)
+ {
+ altar_prayer();
+ }
+ else if (altar_god != GOD_NO_GOD)
+ {
+ if (you.species == SP_DEMIGOD)
+ {
+ mpr("Sorry, a being of your status cannot worship here.");
+ return;
+ }
+ god_pitch( grid_altar_god(grd[you.x_pos][you.y_pos]) );
return;
}
- god_pitch( grid_altar_god(grd[you.x_pos][you.y_pos]) );
- return;
}
if (you.religion == GOD_NO_GOD)