redraw_dexterity now implies redraw_evasion.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@987 c06c8d41-db1a-0410-9941-cceddc491573
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC EIULXYQC3OPXDGTBRDOI7ITILQ22RGEGG6UFCGY2O5HD7SN5NUUQC SUQ7J6V6BDWG6G6KBGPQ6HYKBMJDM6VKN7ODHVU6YCPRWNEOZCJQC VJMZ3UWE4TY2RPKX32HI2K6OAZJKULKWJISAOTU2W5UHKUJ463NQC IJ6KN5MQLEB7DR7NW2AYQNCVBV5IUKECUSECUMEJWOBRNJBAXHCQC GZAXHJZJ7XJYCMNEYCLWIZFF3RTJI66627YDHVH5MO3ZHKSAEVXAC CAHE52HL2ZGRJPBYZ3DS4BVKUD2XC7N3SG25TGG7JGHGJDST4P3QC MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC LW4N5EHKL776DURXZMAM6JEW3JPWWX5BSNP7TCZHTLCDOQTTGFCAC WTBQLBYFLQCF3NRAMB4Z2YA4MHYVFYI5YS7FXXBPICY2KCBA63AQC QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC T7PHMSG47WP4MTKIGVBP4EAQRGXHMZPYSI3GT3DAEWKHUDFCH3QQC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC WHY6LRRJ5T2NSBE3IUCR4X3TOAH7TTK5NPUPUIFT7TPNJ6J4HBDAC 43ZTEB57FU7KE5EVMYWZONNVJBZCGF3JEAJZIY25LC4LGE65PG5QC YRY2TC3VHOYE47M23UJGUWDGF7H7WGU7WLWI4SUNM4EDNTGUPHGAC ZK5H5YBD3R7H3KKNKSJYE65TUEPPWIWUJLU567FKSZYQYIW6ZVFAC TXFN7TLLKYEM2W5HVB2UXKXUH7MTXOU77PXBPMP7NJKXSLVX5PMQC AY7Z23L4WPEFEL2HMF3KX3IM6OYMLB2QWY3AIHHQ37CMRVCXRCMAC GBUB77EAYHOFY6GQ5IY3ZSBC7FSQFZZKYNBD5QMCQFIKFLYLWHOQC R325RPUV26YH65VIJKYEFZ2XCVXQHO5N3ELPX6RNQ5TSI3JJNQGQC JM6GKZ6VMX6FNVOZIDXIV22HGX7YESMIFZFE6EEQVCMFJIEA3FNAC QVVC7AYGVA6U64PTNA7L27422NLMO327P22BQKXEVIMPZHIHO7MQC R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC JJH7VX2LLBZPDKG24SQREWQLX6I6RYNWFECHRZVK7PT5KPQ4MAMAC // 35--48 is the spell schoolsgotoxy(51, wherey());cprintf("%s",spell_power_to_string(calc_spell_power(spell,true)));
// 35--48 is the spell schoolsgotoxy(51, wherey());cprintf("%s",spell_power_to_string(calc_spell_power(spell,true)));
const bool can_afford = (you.gold >= gp_value);textcolor( can_afford ? LIGHTGREEN : LIGHTRED );
const bool can_afford = (you.gold >= gp_value);textcolor( can_afford ? LIGHTGREEN : LIGHTRED );
char buf[ITEMNAME_SIZE];char buf2[ITEMNAME_SIZE];item_name( mitm[item_got], DESC_NOCAP_A, buf );strcpy(buf2, origin_desc(mitm[item_got]).c_str());take_note(Note(NOTE_ID_ITEM, 0, 0, buf, buf2));
char buf[ITEMNAME_SIZE];char buf2[ITEMNAME_SIZE];item_name( mitm[item_got], DESC_NOCAP_A, buf );strcpy(buf2, origin_desc(mitm[item_got]).c_str());take_note(Note(NOTE_ID_ITEM, 0, 0, buf, buf2));
char buf[200];sprintf(buf, "HP: %d/%d MP: %d/%d",you.hp, you.hp_max, you.magic_points, you.max_magic_points);take_note(Note(NOTE_XP_LEVEL_CHANGE, you.experience_level, 0, buf));
char buf[200];sprintf(buf, "HP: %d/%d MP: %d/%d",you.hp, you.hp_max, you.magic_points, you.max_magic_points);take_note(Note(NOTE_XP_LEVEL_CHANGE, you.experience_level, 0, buf));
"%s in your current equipment.",(to_hit < 1) ? "You are completely incapable of fighting" :(to_hit < 5) ? "Hitting even clumsy monsters is extremely awkward" :(to_hit < 10) ? "Hitting average monsters is awkward" :(to_hit < 15) ? "Hitting average monsters is difficult" :(to_hit < 20) ? "Hitting average monsters is hard" :(to_hit < 30) ? "Very agile monsters are a bit awkward to hit" :(to_hit < 45) ? "Very agile monsters are a bit difficult to hit" :(to_hit < 60) ? "Very agile monsters are a bit hard to hit" :(to_hit < 100) ? "You feel comfortable with your ability to fight": "You feel confident with your ability to fight" );
"%s in your current equipment.",(to_hit < 1) ? "You are completely incapable of fighting" :(to_hit < 5) ? "Hitting even clumsy monsters is extremely awkward" :(to_hit < 10) ? "Hitting average monsters is awkward" :(to_hit < 15) ? "Hitting average monsters is difficult" :(to_hit < 20) ? "Hitting average monsters is hard" :(to_hit < 30) ? "Very agile monsters are a bit awkward to hit" :(to_hit < 45) ? "Very agile monsters are a bit difficult to hit" :(to_hit < 60) ? "Very agile monsters are a bit hard to hit" :(to_hit < 100) ? "You feel comfortable with your ability to fight": "You feel confident with your ability to fight" );
(ustealth < 10) ? "extremely un" :(ustealth < 20) ? "very un" :(ustealth < 30) ? "un" :(ustealth < 50) ? "fairly " :(ustealth < 80) ? "" :(ustealth < 120) ? "quite " :(ustealth < 160) ? "very " :(ustealth < 200) ? "extremely ": "incredibly " );
(ustealth < 10) ? "extremely un" :(ustealth < 20) ? "very un" :(ustealth < 30) ? "un" :(ustealth < 50) ? "fairly " :(ustealth < 80) ? "" :(ustealth < 120) ? "quite " :(ustealth < 160) ? "very " :(ustealth < 200) ? "extremely ": "incredibly " );
note.type == NOTE_GET_GOD ||note.type == NOTE_GOD_GIFT ||note.type == NOTE_GET_MUTATION ||note.type == NOTE_LOSE_MUTATION ||
note.type == NOTE_GET_GOD ||note.type == NOTE_GOD_GIFT ||note.type == NOTE_GET_MUTATION ||note.type == NOTE_LOSE_MUTATION ||
if ( is_noteworthy_skill_level(note.second) )return true;if ( Options.note_skill_max && is_highest_skill(note.first) )return true;return false;
if ( is_noteworthy_skill_level(note.second) )return true;if ( Options.note_skill_max && is_highest_skill(note.first) )return true;return false;
if ( note_list[i].type != note.type )continue;const Note& rnote( note_list[i] );switch ( note.type )
if ( note_list[i].type != note.type )continue;const Note& rnote( note_list[i] );switch ( note.type )
case NOTE_DUNGEON_LEVEL_CHANGE:if ( rnote.packed_place == note.packed_place )return false;break;case NOTE_LEARN_SPELL:if (spell_difficulty(rnote.first) >= spell_difficulty(note.first))return false;break;case NOTE_GOD_POWER:if ( rnote.first == note.first && rnote.second == note.second )return false;break;case NOTE_ID_ITEM:/* re-id'ing an item, e.g. second copy of book, isn'tnoteworthy */if ( rnote.name == note.name )return false;break;case NOTE_HP_CHANGE:/* not if we have a recent warning */if ( (note.turn - rnote.turn < 5) &&/* unless we've lost half our HP since then */(note.first * 2 >= rnote.first) )return false;break;default:
case NOTE_DUNGEON_LEVEL_CHANGE:if ( rnote.packed_place == note.packed_place )return false;break;case NOTE_LEARN_SPELL:if (spell_difficulty(rnote.first) >= spell_difficulty(note.first))return false;break;case NOTE_GOD_POWER:if ( rnote.first == note.first && rnote.second == note.second )return false;break;case NOTE_ID_ITEM:/* re-id'ing an item, e.g. second copy of book, isn'tnoteworthy */if ( rnote.name == note.name )return false;break;case NOTE_HP_CHANGE:/* not if we have a recent warning */if ( (note.turn - rnote.turn < 5) &&/* unless we've lost half our HP since then */(note.first * 2 >= rnote.first) )return false;break;default:
(get_helmet_type(you.inv[you.equip[EQ_HELMET]]) == THELM_CAP ||get_helmet_type(you.inv[you.equip[EQ_HELMET]]) == THELM_WIZARD_HAT))
(get_helmet_type(you.inv[you.equip[EQ_HELMET]]) == THELM_CAP ||get_helmet_type(you.inv[you.equip[EQ_HELMET]]) == THELM_WIZARD_HAT))
if ( spell_cast == MS_SUMMON_SMALL_MAMMALS )sumcount2 = 1 + random2(4);elsesumcount2 = 3 + random2(3) + monster->hit_dice / 5;
if ( spell_cast == MS_SUMMON_SMALL_MAMMALS )sumcount2 = 1 + random2(4);elsesumcount2 = 3 + random2(3) + monster->hit_dice / 5;
learned_something_new(TUT_KILLED_MONSTER);else if (Options.tutorial_left && (you.religion == GOD_TROG || you.religion == GOD_OKAWARU || you.religion == GOD_MAKHLEB)&& !you.duration[DUR_PRAYER])tutorial_prayer_reminder();
learned_something_new(TUT_KILLED_MONSTER);else if (Options.tutorial_left && (you.religion == GOD_TROG || you.religion == GOD_OKAWARU || you.religion == GOD_MAKHLEB)&& !you.duration[DUR_PRAYER])tutorial_prayer_reminder();
// If old monster is visible to the player, and is interesting,// then note why the interesting monster went away.if (player_monster_visible(monster) && mons_near(monster)&& MONST_INTERESTING(monster))
// If old monster is visible to the player, and is interesting,// then note why the interesting monster went away.if (player_monster_visible(monster) && mons_near(monster)&& MONST_INTERESTING(monster))
// If new monster is visible to player, then we've seen itif (player_monster_visible(monster) && mons_near(monster))seen_monster(monster);
// If new monster is visible to player, then we've seen itif (player_monster_visible(monster) && mons_near(monster))seen_monster(monster);
moname(monster->type, true, DESC_NOCAP_A, namebuf);std::string iname = namebuf;for (unsigned i = 0; i < Options.note_monsters.size(); ++i) {if (Options.note_monsters[i].matches(iname)) {interesting = true;break;}}
moname(monster->type, true, DESC_NOCAP_A, namebuf);std::string iname = namebuf;for (unsigned i = 0; i < Options.note_monsters.size(); ++i) {if (Options.note_monsters[i].matches(iname)) {interesting = true;break;}}
you.level_type == LEVEL_DUNGEON &&mons_level(monster->type) >= you.your_level + ood_limit() &&mons_level(monster->type) < 99 &&!(monster->type >= MONS_EARTH_ELEMENTAL &&monster->type <= MONS_AIR_ELEMENTAL) )interesting = true;
you.level_type == LEVEL_DUNGEON &&mons_level(monster->type) >= you.your_level + ood_limit() &&mons_level(monster->type) < 99 &&!(monster->type >= MONS_EARTH_ELEMENTAL &&monster->type <= MONS_AIR_ELEMENTAL) )interesting = true;
/* make a note of it */if ( is_interesting_item(item) ) {char buf[ITEMNAME_SIZE];char buf2[ITEMNAME_SIZE];item_name( item, DESC_NOCAP_A, buf );strcpy(buf2, origin_desc(item).c_str());take_note(Note(NOTE_ID_ITEM, 0, 0, buf, buf2));}
/* make a note of it */if ( is_interesting_item(item) ) {char buf[ITEMNAME_SIZE];char buf2[ITEMNAME_SIZE];item_name( item, DESC_NOCAP_A, buf );strcpy(buf2, origin_desc(item).c_str());take_note(Note(NOTE_ID_ITEM, 0, 0, buf, buf2));}
const std::string& r(you.inv[i].inscription);/* note that r.size() is unsigned */for ( j = 0; j + 2 < r.size(); ++j ) {if ( r[j] == '@' &&(r[j+1] == iletter || r[j+1] == '*') &&r[j+2] == digit ) {return i;}}}
const std::string& r(you.inv[i].inscription);/* note that r.size() is unsigned */for ( j = 0; j + 2 < r.size(); ++j ) {if ( r[j] == '@' &&(r[j+1] == iletter || r[j+1] == '*') &&r[j+2] == digit ) {return i;}}}
fprintf(f, "book = %s\n",Options.prev_book == SBT_FIRE ? "fire" :Options.prev_book == SBT_COLD ? "cold" :Options.prev_book == SBT_SUMM ? "summ" :"random");
fprintf(f, "book = %s\n",Options.prev_book == SBT_FIRE ? "fire" :Options.prev_book == SBT_COLD ? "cold" :Options.prev_book == SBT_SUMM ? "summ" :"random");
for (int i = 0; i < ENDOFPACK; ++i) {if (is_valid_item( you.inv[i] )&& can_cut_meat( you.inv[i] )&& you.inv[i].base_type == OBJ_WEAPONS&& item_known_uncursed(you.inv[i])&& item_type_known(you.inv[i])&& get_weapon_brand(you.inv[i]) != SPWPN_DISTORTION&& can_wield( &you.inv[i] )){mpr("Switching to a butchering implement.");wield_weapon( true, i, false );
for (int i = 0; i < ENDOFPACK; ++i){if (is_valid_item( you.inv[i] )&& can_cut_meat( you.inv[i] )&& you.inv[i].base_type == OBJ_WEAPONS&& item_known_uncursed(you.inv[i])&& item_type_known(you.inv[i])&& get_weapon_brand(you.inv[i]) != SPWPN_DISTORTION&& can_wield( &you.inv[i] )){mpr("Switching to a butchering implement.");wield_weapon( true, i, false );
// Account for the weapon switch...we're doing this here// since the above switch may reveal information about the// weapon (curse status, ego type). So even if the// character fails to or decides not to butcher past this// point, they have achieved something and there should be// a cost.start_delay( DELAY_UNINTERRUPTIBLE, 1 );return true;}
// Account for the weapon switch...we're doing this here// since the above switch may reveal information about the// weapon (curse status, ego type). So even if the// character fails to or decides not to butcher past this// point, they have achieved something and there should be// a cost.start_delay( DELAY_UNINTERRUPTIBLE, 1 );return true;}
you.attribute[ATTR_TRANSFORMATION] == TRAN_DRAGON ||(you.attribute[ATTR_TRANSFORMATION] == TRAN_NONE &&(you.species == SP_TROLL ||you.species == SP_GHOUL ||you.mutation[MUT_CLAWS])));
you.attribute[ATTR_TRANSFORMATION] == TRAN_DRAGON ||(you.attribute[ATTR_TRANSFORMATION] == TRAN_NONE &&(you.species == SP_TROLL ||you.species == SP_GHOUL ||you.mutation[MUT_CLAWS])));
for(item_tries = 0; item_tries < 50; item_tries++){// BCR - unique is now used for food quantity.thing_created = items( unique, class_wanted, type_wanted, true,MAKE_GOOD_ITEM, 250 );// MT - Check: god-gifted weapons and armor shouldn't kill you. Except Xom.if(agent != GOD_TROG && agent != GOD_OKAWARU)break;else{randart_wpn_properties( mitm[thing_created], proprt );
for (int item_tries = 0; item_tries < 50; item_tries++){// BCR - unique is now used for food quantity.thing_created = items( unique, class_wanted, type_wanted, true,MAKE_GOOD_ITEM, 250 );if (thing_created == NON_ITEM)continue;// MT - Check: god-gifted weapons and armor shouldn't kill you.// Except Xom.if (agent == GOD_TROG || agent == GOD_OKAWARU)break;else{randart_wpn_properties( mitm[thing_created], proprt );
//check vs stats. positive stats will automatically fall through.//As will negative stats that won't kill you.if((proprt[RAP_STRENGTH] * -1 >= you.strength ||proprt[RAP_INTELLIGENCE] * -1 >= you.intel ||proprt[RAP_DEXTERITY] * -1 >= you.dex) && item_tries < 50){//try againdestroy_item(thing_created);thing_created = NON_ITEM;}elsebreak;}}
// check vs stats. positive stats will automatically fall// through. As will negative stats that won't kill you.if (-proprt[RAP_STRENGTH] >= you.strength ||-proprt[RAP_INTELLIGENCE] >= you.intel ||-proprt[RAP_DEXTERITY] >= you.dex){// try againdestroy_item(thing_created);thing_created = NON_ITEM;}elsebreak;}}
// don't give top-tier wands before 5 HDif ( menv[mid].hit_dice < 5 ){// technically these wands will be undercharged, but it// doesn't really matterif ( mitm[thing_created].sub_type == WAND_FIRE )mitm[thing_created].sub_type = WAND_FLAME;if ( mitm[thing_created].sub_type == WAND_COLD )mitm[thing_created].sub_type = WAND_FROST;if ( mitm[thing_created].sub_type == WAND_LIGHTNING )mitm[thing_created].sub_type = (coinflip() ?WAND_FLAME : WAND_FROST);}
// don't give top-tier wands before 5 HDif ( menv[mid].hit_dice < 5 ){// technically these wands will be undercharged, but it// doesn't really matterif ( mitm[thing_created].sub_type == WAND_FIRE )mitm[thing_created].sub_type = WAND_FLAME;if ( mitm[thing_created].sub_type == WAND_COLD )mitm[thing_created].sub_type = WAND_FROST;if ( mitm[thing_created].sub_type == WAND_LIGHTNING )mitm[thing_created].sub_type = (coinflip() ?WAND_FLAME : WAND_FROST);}
"this spell has little to do with one's skill with ""weapons, and more to do with personal strength, ""translocation skill, and magic ability. ";
"this spell has little to do with one's skill with ""weapons, and more to do with personal strength, ""translocation skill, and magic ability. ";
if ( spell_line.length() > 24 )spell_line = spell_line.substr(0, 24);for (int i = spell_line.length(); i < 26; i++)spell_line += ' ';
if ( spell_line.length() > 24 )spell_line = spell_line.substr(0, 24);for (int i = spell_line.length(); i < 26; i++)spell_line += ' ';