More type-safety.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1624 c06c8d41-db1a-0410-9941-cceddc491573
DH3YTI6VVI727SQXO4CXSDCSBG2UN3UAWLFULBGRLBVH22ACRXIAC
I7NXCEKCEBDWOGO7EDNRZ36GELP3P5GTOOXQG2YS5TXZTCNN7CDQC
XUCCWGMXKPIR34BBCCOI67YHI3RST4STDWSDUZTN4B2CJWXQLQ7AC
7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
ODNAIEJW732NG7USKQKCIP4R4DAEYXXJQX6LY7TIN32NKE75454QC
XPCGZBHHSL6MB3ORMUJI64BAERU6AZTIY6RK56BBW7SNB3IK24IAC
TZ55IZNANEJO2WDTKYWVLY2W2VV6BR7WKIN7XLNISAMMFT6LG2WQC
XAFFD52IHN6FWFR2TT5F2KCUS7HAVCBI5CWTFMKPQG77GGTGAHLAC
3KAINFIXO7WNWGUGZB43EUNFRS2ZPBLQZDTY456QACMRHYIJ7WDAC
if (you.slow)
you.slow = 1;
if (you.paralysis)
you.paralysis = 1;
if (you.conf)
you.conf = 1;
if (you.might)
you.might = 1;
duration_type dur_list[] = {
DUR_WEAPON_BRAND, DUR_ICY_ARMOUR, DUR_REPEL_MISSILES, DUR_REGENERATION,
DUR_DEFLECT_MISSILES, DUR_SWIFTNESS, DUR_INSULATION, DUR_STONEMAIL,
DUR_CONTROLLED_FLIGHT, DUR_CONTROL_TELEPORT, DUR_RESIST_POISON,
DUR_RESIST_FIRE, DUR_RESIST_COLD, DUR_TRANSFORMATION, DUR_STONESKIN,
DUR_FORESCRY, DUR_SEE_INVISIBLE, DUR_SILENCE, DUR_CONDENSATION_SHIELD
};
if (you.invis)
you.invis = 1;
if (you.duration[DUR_WEAPON_BRAND])
you.duration[DUR_WEAPON_BRAND] = 1;
if (you.duration[DUR_ICY_ARMOUR])
you.duration[DUR_ICY_ARMOUR] = 1;
if (you.duration[DUR_REPEL_MISSILES])
you.duration[DUR_REPEL_MISSILES] = 1;
if (you.duration[DUR_REGENERATION])
you.duration[DUR_REGENERATION] = 1;
if (you.duration[DUR_DEFLECT_MISSILES])
you.duration[DUR_DEFLECT_MISSILES] = 1;
if (you.duration[DUR_INSULATION])
you.duration[DUR_INSULATION] = 1;
if (you.duration[DUR_STONEMAIL])
you.duration[DUR_STONEMAIL] = 1;
if (you.duration[DUR_CONTROLLED_FLIGHT])
you.duration[DUR_CONTROLLED_FLIGHT] = 1;
if (you.duration[DUR_CONTROL_TELEPORT])
you.duration[DUR_CONTROL_TELEPORT] = 1;
if (you.duration[DUR_RESIST_POISON])
you.duration[DUR_RESIST_POISON] = 1;
if (you.duration[DUR_TRANSFORMATION])
you.duration[DUR_TRANSFORMATION] = 1;
//jmf: added following
if (you.duration[DUR_STONESKIN])
you.duration[DUR_STONESKIN] = 1;
if (you.duration[DUR_FORESCRY])
you.duration[DUR_FORESCRY] = 1;
if (you.duration[DUR_SEE_INVISIBLE])
you.duration[DUR_SEE_INVISIBLE] = 1;
if (you.duration[DUR_SILENCE])
you.duration[DUR_SILENCE] = 1;
if (you.duration[DUR_CONDENSATION_SHIELD])
you.duration[DUR_CONDENSATION_SHIELD] = 1;
static void minefield_card(int power, deck_rarity_type rarity)
{
const int power_level = get_power_level(power, rarity);
const int radius = power_level * 2 + 2;
for ( int dx = -radius; dx <= radius; ++dx )
{
for ( int dy = -radius; dy <= radius; ++dy )
{
if ( dx * dx + dy*dy > radius*radius + 1 )
continue;
if ( dx == 0 && dy == 0 )
continue;
const int rx = you.x_pos + dx;
const int ry = you.y_pos + dy;
if ( !in_bounds(rx, ry) )
continue;
if ( grd[rx][ry] == DNGN_FLOOR && trap_at_xy(rx,ry) == -1 &&
one_chance_in(4 - power_level) )
{
place_specific_trap(rx, ry, TRAP_RANDOM);
}
}
}
}
if ( num_resists )
{
const duration_type possible_resists[4] = {
DUR_RESIST_POISON, DUR_INSULATION,
DUR_RESIST_FIRE, DUR_RESIST_COLD
};
const char* resist_names[4] = {
"poison", "electricity", "fire", "cold"
};
for ( int i = 0; i < 4 && num_resists; ++i )
{
// if there are n left, of which we need to choose
// k, we have chance k/n of selecting the next item.
if ( random2(4-i) < num_resists )
{
// Add a temporary resist
you.duration[possible_resists[i]] += random2(power/7);
msg::stream << "You feel resistant to " << resist_names[i]
<< '.' << std::endl;
--num_resists;
if ( num_resists == 0 )
break;
}
}
}
static void summon_demon_card(int power, deck_rarity_type rarity)
{
const int power_level = get_power_level(power, rarity);
demon_class_type dct;
if ( power_level >= 2 )
dct = DEMON_GREATER;
else if ( power_level == 1 )
dct = DEMON_COMMON;
else
dct = DEMON_LESSER;
create_monster( dct, power/50, BEH_FRIENDLY, you.x_pos, you.y_pos,
MHITYOU, 250 );
}
/* if (create_monster( summon_any_demon( DEMON_LESSER ), 6,
BEH_HOSTILE, you.x_pos, you.y_pos,
MHITYOU, 250 ) != -1)
*/
}
if (you.duration[DUR_RESIST_FIRE] > 1)
{
you.duration[DUR_RESIST_FIRE]--;
if (you.duration[DUR_RESIST_FIRE] == 6)
{
mpr("Your fire resistance is about to expire.", MSGCH_DURATION);
if (coinflip())
you.duration[DUR_RESIST_FIRE]--;
}
}
else if (you.duration[DUR_RESIST_FIRE] == 1)
{
mpr("Your fire resistance expires.", MSGCH_DURATION);
you.duration[DUR_RESIST_FIRE] = 0;
}
if (you.duration[DUR_RESIST_COLD] > 1)
{
you.duration[DUR_RESIST_COLD]--;
if (you.duration[DUR_RESIST_COLD] == 6)
{
mpr("Your cold resistance is about to expire.", MSGCH_DURATION);
if (coinflip())
you.duration[DUR_RESIST_COLD]--;
}