git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@615 c06c8d41-db1a-0410-9941-cceddc491573
GMYJ4XEEKZASQWMXQZUME5VYCDBRODO7UJJUEZSVZBMSFVBFLK2AC
}
// return GOD_NO_GOD if it isn't a god ability, otherwise return
// the index of the god.
static int is_god_ability(int abil)
{
if ( abil == ABIL_NON_ABILITY )
return GOD_NO_GOD;
for ( int i = 0; i < MAX_NUM_GODS; ++i )
for ( int j = 0; j < MAX_GOD_ABILITIES; ++j )
if ( god_abilities[i][j] == abil )
return i;
return GOD_NO_GOD;
int num_abil = 0;
int abil_start = ABIL_NON_ABILITY;
switch (you.religion)
{
case GOD_ZIN:
abil_start = ABIL_ZIN_REPEL_UNDEAD;
num_abil = 5;
break;
case GOD_SHINING_ONE:
abil_start = ABIL_TSO_REPEL_UNDEAD;
num_abil = 5;
break;
case GOD_KIKUBAAQUDGHA:
abil_start = ABIL_KIKU_RECALL_UNDEAD_SLAVES;
num_abil = 3;
break;
case GOD_YREDELEMNUL:
abil_start = ABIL_YRED_ANIMATE_CORPSE;
num_abil = 5;
break;
case GOD_OKAWARU:
abil_start = ABIL_OKAWARU_MIGHT;
num_abil = 3;
break;
case GOD_MAKHLEB:
abil_start = ABIL_MAKHLEB_MINOR_DESTRUCTION;
num_abil = 4;
break;
case GOD_SIF_MUNA:
abil_start = ABIL_SIF_MUNA_CHANNEL_ENERGY;
num_abil = 2;
break;
case GOD_TROG:
abil_start = ABIL_TROG_BERSERK;
num_abil = 3;
break;
case GOD_ELYVILON:
abil_start = ABIL_ELYVILON_LESSER_HEALING;
num_abil = 5;
break;
case GOD_VEHUMET:
case GOD_NEMELEX_XOBEH:
case GOD_XOM:
default:
break;
}
// clear out other god invocations:
// clear out other god invocations
const int abil = you.ability_letter_table[i];
if ((abil >= ABIL_ZIN_REPEL_UNDEAD // is a god ability
&& abil <= ABIL_ELYVILON_GREATER_HEALING)
&& (num_abil == 0 // current god does have abilities
|| abil < abil_start // not one of current god's abilities
|| abil >= abil_start + num_abil))
{
const int god = is_god_ability(you.ability_letter_table[i]);
if ( god != GOD_NO_GOD && god != you.religion )