Munites need not pray at all now.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1013 c06c8d41-db1a-0410-9941-cceddc491573
3NFVCXRVGHN2CHLLWFZES5RBS4R2BCDS4EEQNSDCFYIFQWQK7MUQC
K4YLFB7HWLEYHZANRSKOXQ6V7YLXMG32PQLL7SYSTJZJKKLPCSIAC
XKAJWK6MPHS3ZCZIPPLTIMOPF6AROGLRDDCS6EFE3IGE4AHT7MYQC
MI7CWKRDXHAU7PIHLXXOSFBULRGT2OOMIMOSQLMVYOUVGABIVXGAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
JW2KRJHES33W7UTWZ6NDO4TLMK4EFU4HKZXBWR2UJOMPCCOTR4CQC
unsigned char was_praying = you.duration[DUR_PRAYER];
bool success = false;
if (silenced(you.x_pos, you.y_pos))
{
mpr("You are unable to make a sound!");
return;
}
// all prayers take time
you.turn_is_over = true;
if (you.religion != GOD_NO_GOD
&& grid_altar_god(grd[you.x_pos][you.y_pos]) == you.religion)
{
altar_prayer();
}
else if (grid_altar_god(grd[you.x_pos][you.y_pos]) != 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;
}
if (you.religion == GOD_NO_GOD)
{
strcpy(info, "You spend a moment contemplating the meaning of ");
if (you.is_undead)
strcat(info, "un");
strcat(info, "life.");
mpr(info, MSGCH_PRAY);
// Zen meditation is timeless.
you.turn_is_over = false;
return;
}
else if (you.religion == GOD_XOM)
{
if (one_chance_in(100))
{
// Every now and then, Xom listens
// This is for flavour, not effect, so praying should not be
// encouraged.
// Xom is nicer to experienced players
bool nice = (27 <= random2( 27 + you.experience_level ));
// and he's not very nice even then
int sever = (nice) ? random2( random2( you.experience_level ) )
: you.experience_level;
// bad results are enforced, good are not
bool force = !nice;
Xom_acts( nice, 1 + sever, force );
}
else
mpr("Xom ignores you.");
return;
}
strcpy( info, "You offer a prayer to " );
strcat( info, god_name( you.religion ) );
strcat( info, "." );
mpr(info, MSGCH_PRAY);
you.duration[DUR_PRAYER] = 9 + (random2(you.piety) / 20)
+ (random2(you.piety) / 20);
if (player_under_penance())
simple_god_message(" demands penance!");
else
{
strcpy(info, god_name(you.religion));
strcat(info, " is ");
strcat(info, (you.piety > 130) ? "exalted by your worship" :
(you.piety > 100) ? "extremely pleased with you" :
(you.piety > 70) ? "greatly pleased with you" :
(you.piety > 40) ? "most pleased with you" :
(you.piety > 20) ? "pleased with you" :
(you.piety > 5) ? "noncommittal"
: "displeased");
strcat(info, ".");
mpr( info, MSGCH_PRAY, you.religion );
if (you.piety > 130)
you.duration[DUR_PRAYER] *= 3;
else if (you.piety > 70)
you.duration[DUR_PRAYER] *= 2;
}
#if DEBUG_DIAGNOSTICS
snprintf( info, INFO_SIZE, "piety: %d", you.piety );
mpr( info, MSGCH_DIAGNOSTICS );
#endif
}
void pray(void)
{
unsigned char was_praying = you.duration[DUR_PRAYER];
if (silenced(you.x_pos, you.y_pos))
{
mpr("You are unable to make a sound!");
return;
}
// all prayers take time
you.turn_is_over = true;
if (you.religion != GOD_NO_GOD
&& grid_altar_god(grd[you.x_pos][you.y_pos]) == you.religion)
{
altar_prayer();
}
else if (grid_altar_god(grd[you.x_pos][you.y_pos]) != 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;
}
if (you.religion == GOD_NO_GOD)
{
strcpy(info, "You spend a moment contemplating the meaning of ");
if (you.is_undead)
strcat(info, "un");
strcat(info, "life.");
mpr(info, MSGCH_PRAY);
// Zen meditation is timeless.
you.turn_is_over = false;
return;
}
else if (you.religion == GOD_XOM)
{
if (one_chance_in(100))
{
// Every now and then, Xom listens
// This is for flavour, not effect, so praying should not be
// encouraged.
// Xom is nicer to experienced players
bool nice = (27 <= random2( 27 + you.experience_level ));
// and he's not very nice even then
int sever = (nice) ? random2( random2( you.experience_level ) )
: you.experience_level;
// bad results are enforced, good are not
bool force = !nice;
Xom_acts( nice, 1 + sever, force );
}
else
mpr("Xom ignores you.");
return;
}
strcpy( info, "You offer a prayer to " );
strcat( info, god_name( you.religion ) );
strcat( info, "." );
mpr(info, MSGCH_PRAY);
you.duration[DUR_PRAYER] = 9 + (random2(you.piety) / 20)
+ (random2(you.piety) / 20);
if (player_under_penance())
simple_god_message(" demands penance!");
else
{
strcpy(info, god_name(you.religion));
strcat(info, " is ");
strcat(info, (you.piety > 130) ? "exalted by your worship" :
(you.piety > 100) ? "extremely pleased with you" :
(you.piety > 70) ? "greatly pleased with you" :
(you.piety > 40) ? "most pleased with you" :
(you.piety > 20) ? "pleased with you" :
(you.piety > 5) ? "noncommittal"
: "displeased");
strcat(info, ".");
mpr( info, MSGCH_PRAY, you.religion );
if (you.piety > 130)
you.duration[DUR_PRAYER] *= 3;
else if (you.piety > 70)
you.duration[DUR_PRAYER] *= 2;
}
#if DEBUG_DIAGNOSTICS
snprintf( info, INFO_SIZE, "piety: %d", you.piety );
mpr( info, MSGCH_DIAGNOSTICS );
#endif
if (!was_praying)
do_god_gift();