Fixed a possible crash when using Backspace to restart character selection.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1855 c06c8d41-db1a-0410-9941-cceddc491573
LUNOTEIMYZJ7JL5P55GEHUVSDEZMYX3TWYUB2ABRHAYJEWQSSXIAC
DWQDVEHZSTDVFS2GU24ZLIGJDA3M4767TB734JAQEAUVOOCLZ75AC
GUXTGUEMZYBRGV5QUAQSJHG3AOIQDWWCDIMOX4LASFJAZVGL2WQAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
SWOYPTHJAWFEDBMB3ROT33VQZIXGZD5UOXEV456DDUENW2HGA66QC
7NDXS36TE7QVXTXJWMYSVG5UHCCLPIO4VL6NXFGTDK3ZNKE3A2IAC
HYS3HXTXATFPN7GLN3WBGDCP22UT2D3JBVUS7SP5FE7L54TDCJRQC
5KJCHLIUFKRPMIVWUAYT6EOF7SW4PTQF6Y5OPEFWXGLE7DUGYLZAC
XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC
TPSCOEB3X6LNZ7F5UBMHDZ4IUE4H3RLX6IGNW65VSJBDMNNZ3FMAC
DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC
MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC
YYHCM4CUN6G5PFWPGOYMDYX4P3SGNYUT5SZK5AUWUL2G7RULQJDAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
summs = create_monster( MONS_DANCING_WEAPON, numsc, behavi,
you.x_pos, you.y_pos, you.pet_target, 1 );
// cursed weapons become hostile
if (item_cursed( you.inv[wpn] ) || force_hostile)
behavi = BEH_HOSTILE;
summs = create_monster( MONS_DANCING_WEAPON, numsc, behavi,
you.x_pos, you.y_pos, you.pet_target, 1 );
if ( summs == -1 )
failed = true;
}
// must delete the item before failing!
mitm[i].base_type = OBJ_UNASSIGNED;
mitm[i].quantity = 0;
goto failed_spell;
destroy_item(i);
if ( wpn != -1 )
mpr("Your weapon vibrates crazily for a second.");
else
msg::stream << "Your " << your_hand(true) << " twitch."
<< std::endl;
return;
snprintf(info, INFO_SIZE, "%s%s%s", you.your_name, title, race_class);
text += info;
int k = get_number_of_cols() - linelength -1;
text += std::string(k, ' ');
snprintf(info, INFO_SIZE, "%s", time_turns);
text += info;
text += you.your_name;
text += title;
text += race_class;
text += std::string(get_number_of_cols() - linelength - 1, ' ');
text += time_turns;
// note that this uses full ( not random2limit(foo,40) ) player_evasion.
trap_hit = (20 + (you.your_level * 2)) * random2(200) / 100;
your_dodge = player_evasion() + random2(you.dex) / 3
- 2 + (you.duration[DUR_REPEL_MISSILES] * 10);
if (trap_hit >= your_dodge && you.duration[DUR_DEFLECT_MISSILES] == 0)
else
if (poison && random2(100) < 50 - (3 * player_AC()) / 2
your_dodge = player_evasion() + random2(you.dex) / 3
- 2 + (you.duration[DUR_REPEL_MISSILES] * 10);
if (trap_hit >= your_dodge && you.duration[DUR_DEFLECT_MISSILES] == 0)
{
msg += "hits you!";
mpr(msg.c_str());
if (poison && random2(100) < 50 - (3 * player_AC()) / 2
damage_taken = roll_dice( pbolt.damage );
damage_taken -= random2( player_AC() + 1 );
if (damage_taken > 0)
ouch( damage_taken, 0, KILLED_BY_TRAP, pbolt.name.c_str() );
if (player_light_armour(true) && coinflip())
exercise( SK_DODGING, 1 );
else
{
msg += "misses you.";
mpr(msg.c_str());
}
if (player_light_armour(true) && coinflip())
exercise( SK_DODGING, 1 );
out_of_trap:
if (keyin == '*' || keyin == '?')
{
nthing = list_spells();
needs_redraw = true;
}
if (isalpha( nthing ) || nthing == ESCAPE)
keyin = nthing;
else
{
mesclr( true );
goto query;
}
keyin = get_ch();
if (keyin == '?' || keyin == '*')
keyin = list_spells();
index_1 = letter_to_index( input_1 );
spell_type spell = get_spell_by_letter( input_1 );
const int input_1 = keyin;
const int index_1 = letter_to_index( input_1 );
spell_type spell = get_spell_by_letter( input_1 );
// print out spell in new slot (now at input_2)
mprf("%c - %s", input_2, spell_title( get_spell_by_letter(input_2) ) );
// print out spell in new slot
mprf("%c - %s", input_2, spell_title(get_spell_by_letter(input_2)));