diff options
-rw-r--r-- | crawl-ref/source/acr.cc | 6 | ||||
-rw-r--r-- | crawl-ref/source/beam.cc | 65 | ||||
-rw-r--r-- | crawl-ref/source/effects.cc | 26 | ||||
-rw-r--r-- | crawl-ref/source/food.cc | 27 | ||||
-rw-r--r-- | crawl-ref/source/initfile.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/item_use.cc | 50 | ||||
-rw-r--r-- | crawl-ref/source/itemname.cc | 25 | ||||
-rw-r--r-- | crawl-ref/source/itemname.h | 6 | ||||
-rw-r--r-- | crawl-ref/source/itemprop.cc | 14 | ||||
-rw-r--r-- | crawl-ref/source/items.cc | 38 | ||||
-rw-r--r-- | crawl-ref/source/misc.cc | 16 | ||||
-rw-r--r-- | crawl-ref/source/spells3.cc | 6 | ||||
-rw-r--r-- | crawl-ref/source/tutorial.cc | 2 |
13 files changed, 169 insertions, 114 deletions
diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc index 327a50d4f9..612f125951 100644 --- a/crawl-ref/source/acr.cc +++ b/crawl-ref/source/acr.cc @@ -1363,7 +1363,9 @@ static void _input() Options.tut_just_triggered = false; - if ( i_feel_safe() ) + // He, we don't want those "Whew, it's safe to rest now" messages when + // you were just cast into the abyss. Right? + if (i_feel_safe() && you.level_type != LEVEL_ABYSS) { if (Options.tutorial_left) { @@ -2199,7 +2201,7 @@ void process_command( command_type cmd ) { coord_def pos; #ifdef USE_TILE - // Since they're no actual overview map, but the functionality + // Since there's no actual overview map, but the functionality // exists, give a message to explain what's going on. std::string str = "Move the cursor to view the level map, or " "type <w>?</w> for a list of commands."; diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 5d7b327212..25cc0aeee5 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -233,6 +233,7 @@ static void _beam_set_default_values(bolt &beam, int power) // If needs_tracer is true, we need to check the beam path for friendly // monsters for *player beams* only! If allies are found, the player is // prompted to stop or continue. +// NOTE: Doesn't check for the player being hit by a rebounding lightning bolt. bool zapping(zap_type ztype, int power, bolt &pbolt, bool needs_tracer, std::string msg) { @@ -249,9 +250,9 @@ bool zapping(zap_type ztype, int power, bolt &pbolt, bool needs_tracer, _beam_set_default_values(pbolt, power); // For player bolts, check whether tracer goes through friendlies. - // NOTE: Whenever zapping() is called with a randomized value for power, - // player_tracer should be called directly with the highest power possible - // respecting current skill, experience level etc. + // NOTE: Whenever zapping() is called with a randomized value for power + // (or effect), player_tracer should be called directly with the highest + // power possible respecting current skill, experience level etc. if (needs_tracer && pbolt.thrower == KILL_YOU_MISSILE && !player_tracer(ztype, power, pbolt)) @@ -259,7 +260,7 @@ bool zapping(zap_type ztype, int power, bolt &pbolt, bool needs_tracer, return (false); } - // fill in the bolt structure + // Fill in the bolt structure. _zappy( ztype, power, pbolt ); if (!msg.empty()) @@ -267,14 +268,14 @@ bool zapping(zap_type ztype, int power, bolt &pbolt, bool needs_tracer, if (ztype == ZAP_LIGHTNING) { - // XXX: needs to check silenced at other location, too {dlb} + // XXX: Needs to check silenced at other location, too. {dlb} noisy(25, you.x_pos, you.y_pos, "You hear a mighty clap of thunder!"); } fire_beam(pbolt); return (true); -} // end zapping() +} // pbolt needs to be initialized for tracing: with the the maximum range, // and the flavour to allow for completely resistant monsters. @@ -660,8 +661,6 @@ static void _get_max_range( zap_type z_type, int power, bolt &pbolt ) // Returns true if the path is considered "safe", and false if there are // monsters in the way the player doesn't want to hit. -// FIXME: Also needs to check for fleeing monster with TSO and neutrals for -// all good gods. bool player_tracer( zap_type ztype, int power, bolt &pbolt, int range) { // Non-controlleable during confusion. @@ -669,11 +668,17 @@ bool player_tracer( zap_type ztype, int power, bolt &pbolt, int range) if (you.duration[DUR_CONF]) return (true); + // If you target yourself, that's always deliberate. + // This is basically pbolt.aimed_at_feet except that that hasn't been + // initialized yet. + if (pbolt.target_x == you.x_pos && pbolt.target_y == you.y_pos); + return (true); + _beam_set_default_values(pbolt, power); pbolt.name = "unimportant"; _get_max_range(ztype, power, pbolt); - // override range if necessary + // Override range if necessary. if (range > 0) pbolt.rangeMax = range; @@ -684,7 +689,7 @@ bool player_tracer( zap_type ztype, int power, bolt &pbolt, int range) pbolt.smart_monster = true; pbolt.attitude = ATT_FRIENDLY; - // init tracer variables + // Init tracer variables. pbolt.foe_count = pbolt.fr_count = 0; pbolt.foe_power = pbolt.fr_power = 0; pbolt.fr_helped = pbolt.fr_hurt = 0; @@ -1733,7 +1738,7 @@ static bool _affect_mon_in_wall(bolt &pbolt, item_def *item, int tx, int ty) void fire_beam( bolt &pbolt, item_def *item, bool drop_item ) { - bool beamTerminate; // has beam been 'stopped' by something? + bool beamTerminate; // Has beam been 'stopped' by something? int &tx(pbolt.pos.x), &ty(pbolt.pos.y); // test(new) x,y - integer int rangeRemaining; bool did_bounce = false; @@ -1792,7 +1797,7 @@ void fire_beam( bolt &pbolt, item_def *item, bool drop_item ) // Give chance for beam to affect one cell even if aimed_at_feet. beamTerminate = false; - // setup range + // Setup range. rangeRemaining = pbolt.range; if (pbolt.rangeMax > pbolt.range) { @@ -1892,7 +1897,9 @@ void fire_beam( bolt &pbolt, item_def *item, bool drop_item ) // monsters have no chance to dodge or block such // a beam, and we want to avoid silly messages. if (tx == pbolt.target_x && ty == pbolt.target_y) + { beamTerminate = _beam_term_on_target(pbolt, tx, ty); + } // Affect the cell, except in the special case noted // above -- affect() will early out if something gets @@ -1909,7 +1916,9 @@ void fire_beam( bolt &pbolt, item_def *item, bool drop_item ) } if (!pbolt.affects_nothing) + { rangeRemaining -= affect(pbolt, tx, ty, item); + } if (random_beam) { @@ -1962,15 +1971,15 @@ void fire_beam( bolt &pbolt, item_def *item, bool drop_item ) pbolt.colour == BLACK ? random_colour() : pbolt.colour, pbolt.type ); - // get curses to update the screen so we can see the beam + // Get curses to update the screen so we can see the beam. update_screen(); delay(15); #ifdef MISSILE_TRAILS_OFF + // mv: It's not optimal but is usually enough. if (!pbolt.is_beam || pbolt.name[0] == '0') - viewwindow(1,false); // mv: added. It's not optimal but - // is usually enough + viewwindow(1,false); #endif } @@ -1982,9 +1991,9 @@ void fire_beam( bolt &pbolt, item_def *item, bool drop_item ) ray.advance(true); } // end- while !beamTerminate - // the beam has finished, and terminated at tx, ty + // The beam has finished, and terminated at tx, ty. - // leave an object, if applicable + // Leave an object, if applicable. if (drop_item && item) beam_drop_object( pbolt, item, tx, ty ); @@ -2022,7 +2031,7 @@ void fire_beam( bolt &pbolt, item_def *item, bool drop_item ) else if (pbolt.foe_helped > 0 && pbolt.fr_helped == 0) xom_is_stimulated(128); - // allow friendlies to react to projectiles. + // Allow friendlies to react to projectiles. const monsters *mon = &menv[pbolt.beam_source]; if (pbolt.foe_hurt > 0 && !mons_wont_attack(mon) && you.pet_target == MHITNOT) @@ -2031,7 +2040,7 @@ void fire_beam( bolt &pbolt, item_def *item, bool drop_item ) } } - // that's it! + // That's it! #ifdef WIN32CONSOLE if (!pbolt.is_tracer) set_buffering(oldValue); @@ -3093,8 +3102,8 @@ int affect(bolt &beam, int x, int y, item_def *item) return (BEAM_STOP); } - // if there is a monster at this location, affect it - // submerged monsters aren't really there -- bwr + // If there is a monster at this location, affect it. + // Submerged monsters aren't really there. -- bwr int mid = mgrd[x][y]; if (mid != NON_MONSTER) { @@ -3545,11 +3554,11 @@ static std::string _beam_zapper(const bolt &beam) // Returns amount of extra range used up by affectation of the player. static int _affect_player( bolt &beam, item_def *item ) { - // digging -- don't care. + // Digging -- don't care. if (beam.flavour == BEAM_DIGGING) return (0); - // check for tracer + // Check for tracer. if (beam.is_tracer) { // Check whether thrower can see player, unless thrower == player. @@ -3686,7 +3695,7 @@ static int _affect_player( bolt &beam, item_def *item ) && you_resist_magic( beam.ench_power )) { bool need_msg = true; - if (beam.beam_source != -1) + if (beam.thrower != KILL_YOU_MISSILE && beam.beam_source != -1) { monsters *mon = &menv[beam.beam_source]; if (!player_monster_visible(mon)) @@ -4649,9 +4658,9 @@ static int _affect_monster(bolt &beam, monsters *mon, item_def *item) else num_success = 1; - if ( num_success ) + if (num_success) { - if ( num_success == 2 ) + if (num_success == 2) num_levels++; poison_monster( mon, _whose_kill(beam), num_levels ); } @@ -4687,7 +4696,7 @@ static int _affect_monster_enchantment(bolt &beam, monsters *mon) if (check_mons_resist_magic( mon, beam.ench_power ) && !beam.aimed_at_feet) { - return mons_immune_magic(mon) ? MON_UNAFFECTED : MON_RESIST; + return (mons_immune_magic(mon) ? MON_UNAFFECTED : MON_RESIST); } if (mons_near(mon) && player_monster_visible(mon)) @@ -5549,7 +5558,7 @@ void bolt::set_target(const dist &d) target_y = d.ty; chose_ray = d.choseRay; - if ( d.choseRay ) + if (d.choseRay) ray = d.ray; if (d.isEndpoint) diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc index f172544727..b6fbdf6106 100644 --- a/crawl-ref/source/effects.cc +++ b/crawl-ref/source/effects.cc @@ -304,16 +304,20 @@ void banished(dungeon_feature_type gate_type, const std::string &who) { #ifdef DGL_MILESTONES if (gate_type == DNGN_ENTER_ABYSS) + { mark_milestone("abyss.enter", "is cast into the Abyss!" + who_banished(who)); + } else if (gate_type == DNGN_EXIT_ABYSS) + { mark_milestone("abyss.exit", "escaped from the Abyss!" + who_banished(who)); + } #endif std::string cast_into = ""; - switch(gate_type) + switch (gate_type) { case DNGN_ENTER_ABYSS: if (you.level_type == LEVEL_ABYSS) @@ -430,7 +434,7 @@ void banished(dungeon_feature_type gate_type, const std::string &who) take_note(Note(NOTE_MESSAGE, 0, 0, what.c_str()), true); } - // no longer held in net + // No longer held in net. clear_trapping_net(); down_stairs(you.your_level, gate_type, you.entry_cause); // heh heh @@ -1407,7 +1411,7 @@ static int find_acquirement_subtype(object_class_type class_wanted, type_wanted = random_rod_subtype(); break; - default: // invocations and leftover spell schools + default: // Invocations and leftover spell schools. switch (random2(5)) { case 0: @@ -1499,7 +1503,7 @@ bool acquirement(object_class_type class_wanted, int agent, if (grid_destroys_items(grd[you.x_pos][you.y_pos])) { - // how sad (and stupid) + // How sad (and stupid). if (!silenced(you.pos()) && !quiet) { mprf(MSGCH_SOUND, @@ -1515,7 +1519,7 @@ bool acquirement(object_class_type class_wanted, int agent, { int type_wanted = find_acquirement_subtype(class_wanted, quant); - // clobber class_wanted for vampires + // Clobber class_wanted for vampires. if (you.species == SP_VAMPIRE && class_wanted == OBJ_FOOD) class_wanted = OBJ_POTIONS; @@ -1569,13 +1573,13 @@ bool acquirement(object_class_type class_wanted, int agent, randart_properties_t proprt; randart_wpn_properties( doodad, proprt ); - // check vs stats. positive stats will automatically fall + // 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 again + // Try again. destroy_item(thing_created); thing_created = NON_ITEM; continue; @@ -1592,10 +1596,10 @@ bool acquirement(object_class_type class_wanted, int agent, return (false); } - // easier to read this way + // Easier to read this way. item_def& thing(mitm[thing_created]); - // give some more gold + // Give some more gold. if ( class_wanted == OBJ_GOLD ) thing.quantity += 150; else if (quant > 1) @@ -1604,7 +1608,7 @@ bool acquirement(object_class_type class_wanted, int agent, if (is_blood_potion(thing)) init_stack_blood_potions(thing); - // remove curse flag from item + // Remove curse flag from item. do_uncurse_item( thing ); if (thing.base_type == OBJ_BOOKS) @@ -1616,7 +1620,7 @@ bool acquirement(object_class_type class_wanted, int agent, switch (thing.sub_type) { case RING_SLAYING: - // make sure plus to damage is >= 1 + // Make sure plus to damage is >= 1. thing.plus2 = abs( thing.plus2 ); if (thing.plus2 == 0) thing.plus2 = 1; diff --git a/crawl-ref/source/food.cc b/crawl-ref/source/food.cc index c23724aa73..5283e0e9dc 100644 --- a/crawl-ref/source/food.cc +++ b/crawl-ref/source/food.cc @@ -387,13 +387,13 @@ static bool _have_corpses_in_pack(bool remind) if (remind) { - text << "You might want to also " << verb << " the " << noun - << " in your pack."; + mprf("You might want to also %s the %s in your pack.", verb.c_str(), + noun.c_str()); } else { - text << "If you dropped the " << noun << " in your pack " - << "then you could " << verb << " " << pronoun << "."; + mprf("If you dropped the %s in your pack you could %s %s.", + verb.c_str(), noun.c_str(), pronoun.c_str()); } mpr(text.str().c_str()); @@ -550,24 +550,11 @@ bool butchery(int which_corpse) // * Mummies can't eat // * Ghouls relish the bad things // * Vampires won't bottle bad corpses + // Also, don't bother colouring if it's only for sacrificing. if (!sacrifice && !you.is_undead) { - // Don't bother colouring if it's only for sacrificing. - std::string cprf = menu_colour_item_prefix(mitm[o]); - std::string colour = ""; - std::string colour_off = ""; - int col = menu_colour(corpse_name, cprf, "pickup"); - - if (col != LIGHTGRAY) - colour = colour_to_str( col ); - - if (!colour.empty()) - { - // Order is important here. - colour_off = "</" + colour + ">"; - colour = "<" + colour + ">"; - corpse_name = colour + corpse_name + colour_off; - } + corpse_name = get_menu_colour_prefix_tags(mitm[o], + DESC_NOCAP_A); } // Shall we butcher this corpse? diff --git a/crawl-ref/source/initfile.cc b/crawl-ref/source/initfile.cc index 2ec348288b..6665a7a096 100644 --- a/crawl-ref/source/initfile.cc +++ b/crawl-ref/source/initfile.cc @@ -126,7 +126,7 @@ const char* colour_to_str(unsigned char colour) return cols[colour].c_str(); } -// returns -1 if unmatched else returns 0-15 +// Returns -1 if unmatched else returns 0-15. int str_to_colour( const std::string &str, int default_colour, bool accept_number ) { diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index 95337fcec1..c660210e59 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -3410,44 +3410,47 @@ void zap_wand( int slot ) zap_wand.ty = you.y_pos + random2(13) - 6; } - zap_type type_zapped = static_cast<zap_type>(wand.zap()); - bool random = false; if (wand.sub_type == WAND_RANDOM_EFFECTS) - { beam.effect_known = false; - random = true; - if (dangerous) - { - // Xom loves it when you use a Wand of Random Effects and - // there is a dangerous monster nearby... - xom_is_stimulated(255); - } - } + zap_type type_zapped = static_cast<zap_type>(wand.zap()); beam.source_x = you.x_pos; beam.source_y = you.y_pos; beam.set_target(zap_wand); + beam.aimed_at_feet = + (beam.target_x == you.x_pos && beam.target_y == you.y_pos); + // Check whether we may hit friends, use "safe" values for random effects - // (highest possible range, and unresistable beam flavour). - if (!player_tracer(random ? ZAP_DEBUGGING_RAY : type_zapped, - 2 * (you.skills[SK_EVOCATIONS] - 1), beam, - random ? 17 : 0)) + // and unknown wands (highest possible range, and unresistable beam + // flavour). Don't use the tracer if firing at self. + if (!beam.aimed_at_feet + && !player_tracer(!beam.effect_known ? ZAP_DEBUGGING_RAY + : type_zapped, + 2 * (you.skills[SK_EVOCATIONS] - 1), + beam, !beam.effect_known ? 17 : 0)) { return; } - // zapping() updates beam + if (dangerous && alreadyknown && wand.sub_type == WAND_RANDOM_EFFECTS) + { + // Xom loves it when you use a Wand of Random Effects and + // there is a dangerous monster nearby... + xom_is_stimulated(255); + } + + // zapping() updates beam. zapping( type_zapped, 30 + roll_dice(2, you.skills[SK_EVOCATIONS]), beam ); - // take off a charge + // Take off a charge. wand.plus--; - // increment zap count + // Increment zap count. if (wand.plus2 >= 0) wand.plus2++; - // identify if necessary + // Identify if necessary. if (!alreadyknown && (beam.obvious_effect || type_zapped == ZAP_FIREBALL)) { set_ident_type( wand.base_type, wand.sub_type, ID_KNOWN_TYPE ); @@ -3963,7 +3966,6 @@ bool enchant_armour( int &ac_change, bool quiet, item_def &arm ) mprf("%s glows silver for a moment.", arm.name(DESC_CAP_YOUR).c_str()); } - do_uncurse_item( arm ); return (true); } @@ -4349,8 +4351,8 @@ void read_scroll( int slot ) } else { + // Also sets wield_change. do_curse_item( you.inv[nthing], false ); - you.wield_change = true; } break; @@ -4465,7 +4467,7 @@ void read_scroll( int slot ) } else { - // make the name before we curse it + // Make the name before we curse it. do_curse_item( you.inv[you.equip[affected]], false ); } break; @@ -4638,8 +4640,8 @@ void use_randart(item_def &item) randart_wpn_learn_prop(item, RAP_BERSERK); } - if ( !item_cursed(item) && proprt[RAP_CURSED] > 0 - && one_chance_in(proprt[RAP_CURSED]) ) + if (!item_cursed(item) && proprt[RAP_CURSED] > 0 + && one_chance_in(proprt[RAP_CURSED])) { do_curse_item( item, false ); randart_wpn_learn_prop(item, RAP_CURSED); diff --git a/crawl-ref/source/itemname.cc b/crawl-ref/source/itemname.cc index 947937e859..96069237a5 100644 --- a/crawl-ref/source/itemname.cc +++ b/crawl-ref/source/itemname.cc @@ -29,6 +29,7 @@ #include "decks.h" #include "food.h" +#include "initfile.h" #include "invent.h" #include "it_use2.h" #include "itemprop.h" @@ -2244,6 +2245,30 @@ const std::string menu_colour_item_prefix(const item_def &item) return result; } +const std::string get_menu_colour_prefix_tags(item_def &item, + description_level_type desc) +{ + std::string cprf = menu_colour_item_prefix(item); + std::string colour = ""; + std::string colour_off = ""; + std::string item_name = item.name(desc); + int col = menu_colour(item_name, cprf, "pickup"); + + if (col != LIGHTGRAY) + colour = colour_to_str( col ); + + if (!colour.empty()) + { + // Order is important here. + colour_off = "</" + colour + ">"; + colour = "<" + colour + ">"; + item_name = colour + item_name + colour_off; + } + + return (item_name); +} + + typedef std::map<std::string, item_types_pair> item_names_map; static item_names_map item_names_cache; diff --git a/crawl-ref/source/itemname.h b/crawl-ref/source/itemname.h index af5645892a..e1a01c241c 100644 --- a/crawl-ref/source/itemname.h +++ b/crawl-ref/source/itemname.h @@ -40,7 +40,7 @@ enum item_type_id_state_type // used for values in id[4][50] ID_KNOWN_TYPE }; -// [dshaligram] If you edit potion colours/descriptions, also update +// [dshaligram] If you edit potion colours/descriptions, also update // itemname.cc. enum potion_description_colour_type { @@ -61,7 +61,7 @@ enum potion_description_colour_type PDC_NCOLOURS }; -// [dshaligram] If you edit potion colours/descriptions, also update +// [dshaligram] If you edit potion colours/descriptions, also update // itemname.cc. enum potion_description_qualifier_type { @@ -131,6 +131,8 @@ void set_ident_type( object_class_type basetype, int subtype, * called from: command - itemname - invent.h * *********************************************************************** */ const std::string menu_colour_item_prefix(const item_def &item); +const std::string get_menu_colour_prefix_tags(item_def &item, + description_level_type desc); void init_item_name_cache(); item_types_pair item_types_by_name(std::string name); diff --git a/crawl-ref/source/itemprop.cc b/crawl-ref/source/itemprop.cc index 01030b45f8..df2d9250bf 100644 --- a/crawl-ref/source/itemprop.cc +++ b/crawl-ref/source/itemprop.cc @@ -499,6 +499,11 @@ void do_curse_item( item_def &item, bool quiet ) { amusement *= 2; } + else if (you.equip[EQ_WEAPON] == item.link) + { + // Redraw the weapon. + you.wield_change = true; + } } xom_is_stimulated(amusement); } @@ -514,6 +519,11 @@ void do_curse_item( item_def &item, bool quiet ) void do_uncurse_item( item_def &item ) { + if (item.x == -1 && item.y == -1 && you.equip[EQ_WEAPON] == item.link) + { + // Redraw the weapon. + you.wield_change = true; + } item.flags &= (~ISFLAG_CURSED); } @@ -1334,10 +1344,6 @@ bool is_enchantable_weapon(const item_def &wpn, bool uncurse) if (wpn.base_type != OBJ_WEAPONS && wpn.base_type != OBJ_MISSILES) return (false); - // only equipped items should be affected -// if (!item_is_equipped(wpn)) -// return (false); - // Artefacts cannot be enchanted (missiles can't be artefacts). if (wpn.base_type == OBJ_WEAPONS && (is_fixed_artefact(wpn) diff --git a/crawl-ref/source/items.cc b/crawl-ref/source/items.cc index 5ae4aa1229..96b3f907a2 100644 --- a/crawl-ref/source/items.cc +++ b/crawl-ref/source/items.cc @@ -768,8 +768,9 @@ void item_check(bool verbose) if (items.size() == 1 ) { - strm << "You see here " << items[0]->name(DESC_NOCAP_A) - << '.' << std::endl; + item_def it(*items[0]); + std::string name = get_menu_colour_prefix_tags(it, DESC_NOCAP_A); + strm << "You see here " << name << '.' << std::endl; return; } @@ -805,26 +806,32 @@ void item_check(bool verbose) } out_string += static_cast<unsigned char>(item_chars[i] / 0x100); - if (i + 1 < item_chars.size() && - (item_chars[i] / 0x100) != (item_chars[i+1] / 0x100)) + if (i + 1 < item_chars.size() + && (item_chars[i] / 0x100) != (item_chars[i+1] / 0x100)) + { out_string += ' '; + } } formatted_mpr(formatted_string::parse_string(out_string), MSGCH_FLOOR_ITEMS); done_init_line = true; } - if ( verbose || static_cast<int>(items.size() + 1) < crawl_view.msgsz.y ) + if (verbose || static_cast<int>(items.size() + 1) < crawl_view.msgsz.y) { - if ( !done_init_line ) + if (!done_init_line) strm << "Things that are here:" << std::endl; - for ( unsigned int i = 0; i < items.size(); ++i ) - strm << items[i]->name(DESC_NOCAP_A) << std::endl; + for (unsigned int i = 0; i < items.size(); ++i) + { + item_def it(*items[i]); + std::string name = get_menu_colour_prefix_tags(it, DESC_NOCAP_A); + strm << name << std::endl; + } } - else if ( !done_init_line ) + else if (!done_init_line) strm << "There are many items here." << std::endl; - if ( items.size() > 5 ) + if (items.size() > 5) learned_something_new(TUT_MULTI_PICKUP); } @@ -1219,7 +1226,8 @@ void pickup() if (keyin != 'a') { mprf(MSGCH_PROMPT, "Pick up %s? (y/n/a/*?g,/q)", - mitm[o].name(DESC_NOCAP_A).c_str() ); + get_menu_colour_prefix_tags(mitm[o], + DESC_NOCAP_A).c_str()); #ifndef USE_TILE keyin = get_ch(); #else @@ -1905,9 +1913,9 @@ bool drop_item( int item_dropped, int quant_drop, bool try_offer ) const dungeon_feature_type my_grid = grd[you.x_pos][you.y_pos]; - if ( !grid_destroys_items(my_grid) - && !copy_item_to_grid( you.inv[item_dropped], - you.x_pos, you.y_pos, quant_drop, true )) + if (!grid_destroys_items(my_grid) + && !copy_item_to_grid( you.inv[item_dropped], + you.x_pos, you.y_pos, quant_drop, true )) { mpr( "Too many items on this level, not dropping the item." ); return (false); @@ -2155,10 +2163,8 @@ static void _autoinscribe_floor_items() static void _autoinscribe_inventory() { for (int i = 0; i < ENDOFPACK; i++) - { if (is_valid_item(you.inv[i])) _autoinscribe_item( you.inv[i] ); - } } bool need_to_autoinscribe() diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc index 1ce293a3e6..ddd1a0c1cb 100644 --- a/crawl-ref/source/misc.cc +++ b/crawl-ref/source/misc.cc @@ -2124,9 +2124,21 @@ void down_stairs( int old_level, dungeon_feature_type force_stair, if (!player_is_airborne() && you.duration[DUR_CONF] && !grid_is_escape_hatch(stair_find) - && random2(100) > you.dex) + && force_stair != DNGN_ENTER_ABYSS + /*&& random2(100) > you.dex*/) { - mpr("In your confused state, you trip and fall down the stairs."); + std::string fall_where = "down the stairs"; + + if (stair_find == DNGN_ENTER_ABYSS + || stair_find == DNGN_ENTER_PANDEMONIUM + || stair_find == DNGN_TRANSIT_PANDEMONIUM + || stair_find == DNGN_ENTER_PORTAL_VAULT) + { + fall_where = "through the gate"; + } + + mprf("In your confused state, you trip and fall %s.", + fall_where.c_str()); // Nastier than when climbing stairs, but you'll aways get to // your destination. -- bwr diff --git a/crawl-ref/source/spells3.cc b/crawl-ref/source/spells3.cc index c58bf6b3a2..c8e970ceeb 100644 --- a/crawl-ref/source/spells3.cc +++ b/crawl-ref/source/spells3.cc @@ -89,7 +89,7 @@ bool cast_selective_amnesia(bool force) break; } - // actual handling begins here {dlb}: + // Actual handling begins here {dlb}: const spell_type spell = get_spell_by_letter( keyin ); const int slot = get_spell_slot_by_letter( keyin ); @@ -129,15 +129,15 @@ bool remove_curse(bool suppress_msg) bool success = false; // whether or not curse(s) removed {dlb} // Special "wield slot" case - see if you can figure out why {dlb}: - // ... because only cursed weapons in hand count as cursed -- bwr + // ... because only cursed *weapons* in hand count as cursed -- bwr if (you.equip[EQ_WEAPON] != -1 && you.inv[you.equip[EQ_WEAPON]].base_type == OBJ_WEAPONS) { if (item_cursed( you.inv[you.equip[EQ_WEAPON]] )) { + // Also sets wield_change. do_uncurse_item( you.inv[you.equip[EQ_WEAPON]] ); success = true; - you.wield_change = true; } } diff --git a/crawl-ref/source/tutorial.cc b/crawl-ref/source/tutorial.cc index 1c7fe0a5dd..42c24e53b2 100644 --- a/crawl-ref/source/tutorial.cc +++ b/crawl-ref/source/tutorial.cc @@ -921,7 +921,7 @@ void tutorial_healing_reminder() std::string text; text = "Remember to rest between fights and to enter unexplored " "terrain with full hitpoints and magic. Ideally you " - "should retreat back areas you've already explored and " + "should retreat into areas you've already explored and " "cleared of monsters; resting on the edge of the explored " "terrain increases the chances of your rest being " "interrupted by wandering monsters. For resting, press " |