diff options
-rw-r--r-- | crawl-ref/docs/crawl_manual.txt | 13 | ||||
-rw-r--r-- | crawl-ref/settings/init.txt | 2 | ||||
-rw-r--r-- | crawl-ref/source/acr.cc | 20 | ||||
-rw-r--r-- | crawl-ref/source/command.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/database.cc | 6 | ||||
-rw-r--r-- | crawl-ref/source/database.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/directn.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/fight.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/item_use.cc | 39 | ||||
-rw-r--r-- | crawl-ref/source/message.cc | 22 | ||||
-rw-r--r-- | crawl-ref/source/religion.cc | 14 | ||||
-rw-r--r-- | crawl-ref/source/transfor.cc | 9 | ||||
-rw-r--r-- | crawl-ref/source/xom.cc | 7 |
13 files changed, 87 insertions, 59 deletions
diff --git a/crawl-ref/docs/crawl_manual.txt b/crawl-ref/docs/crawl_manual.txt index f4f1216157..88e9bb806a 100644 --- a/crawl-ref/docs/crawl_manual.txt +++ b/crawl-ref/docs/crawl_manual.txt @@ -1016,12 +1016,13 @@ screen. Else, you use the following commands: nearer to further away. Similarly, '-' cycles backwards. - Any direction key moves the cursor by one square. Occasionally, it can be useful to target non-inhabited squares. - - When you are content with your choice of target, press one of '.' - (period), Del, Enter, or Space to fire at the target. If you press - '!', you also fire, but the spell/missile will stop at the target's - square if it misses. This can be useful to keep friendlies out of the - fire, and is also the only way to attack submerged creatures. You can - press Escape if you changed your mind - no turns are deducted. + - When you are content with your choice of target, press one of '!' + Del, Enter, or Space to fire at the target. If you press '.' + (period), you also fire, but the spell/missile will stop at the + target's square if it misses. This can be useful to keep friendlies + out of the fire, and is also the only way to attack submerged + creatures. You can press Escape if you changed your mind - no turns + are deducted. There are some shortcuts while targeting: - Typing Shift-direction on your keypad fires straight away in that diff --git a/crawl-ref/settings/init.txt b/crawl-ref/settings/init.txt index 84dead9dcc..19252434d2 100644 --- a/crawl-ref/settings/init.txt +++ b/crawl-ref/settings/init.txt @@ -277,7 +277,7 @@ menu_colour = notes:white:Reached XP level # message_colour = mute:(HP|Magic) restored # message_colour = mute:warning:Not with.*(in view|monsters around) -# You can also enforce a -more- prompt for messages +# You can also enforce a --more-- prompt for messages # force_more_message = You are starting to lose your buoyancy ##### 4-k Firing Commands ####################### diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc index 067db5d042..58ce26362c 100644 --- a/crawl-ref/source/acr.cc +++ b/crawl-ref/source/acr.cc @@ -1856,8 +1856,9 @@ void process_command( command_type cmd ) case CMD_REST: if (i_feel_safe()) { - if ( you.hp == you.hp_max - && you.magic_points == you.max_magic_points ) + if ((you.hp == you.hp_max || you.species == SP_VAMPIRE + && you.hunger_state == HS_STARVING) + && you.magic_points == you.max_magic_points ) { mpr("You start searching."); } @@ -2075,6 +2076,11 @@ void process_command( command_type cmd ) case CMD_REMOVE_ARMOUR: { + if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT) + { + mpr("You can't wear or remove anything in your present form."); + break; + } int index = 0; if (armour_prompt("Take off which item?", &index, OPER_TAKEOFF)) @@ -2083,20 +2089,10 @@ void process_command( command_type cmd ) break; case CMD_REMOVE_JEWELLERY: - if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT) - { - canned_msg(MSG_PRESENT_FORM); - break; - } remove_ring(); break; case CMD_WEAR_JEWELLERY: - if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT) - { - canned_msg(MSG_PRESENT_FORM); - break; - } puton_ring(-1, false); break; diff --git a/crawl-ref/source/command.cc b/crawl-ref/source/command.cc index b105afd8eb..a50b5d0ac7 100644 --- a/crawl-ref/source/command.cc +++ b/crawl-ref/source/command.cc @@ -733,8 +733,8 @@ static const char *targeting_help_1 = "<h>Targeting (zapping wands, casting spells, etc.):\n" "The keys from examine surroundings also work here.\n" "In addition, you can use:\n" - "<w>.</w> : fire at target (<w>Enter</w>, <w>Del</w>, <w>Space</w>)\n" - "<w>!</w> : fire at target and stop there (may hit submerged creatures)\n" + "<w>!</w> : fire at target (<w>Enter</w>, <w>Del</w>, <w>Space</w>)\n" + "<w>.</w> : fire at target and stop there (may hit submerged creatures)\n" "<w>p</w> : fire at Previous target (also <w>f</w>)\n" "<w>:</w> : show/hide beam path\n" "<w>Shift-Dir</w> : shoot straight-line beam\n" diff --git a/crawl-ref/source/database.cc b/crawl-ref/source/database.cc index 254b800b57..f60a8b59eb 100644 --- a/crawl-ref/source/database.cc +++ b/crawl-ref/source/database.cc @@ -654,7 +654,7 @@ std::string getShoutString(const std::string &monst, ///////////////////////////////////////////////////////////////////////////// // Speak DB specific functions. -std::string getSpeakString(const std::string &monst) +std::string getSpeakString(const std::string &key) { if (!SpeakDB) return (""); @@ -662,9 +662,9 @@ std::string getSpeakString(const std::string &monst) int num_replacements = 0; #ifdef DEBUG_MONSPEAK - mprf(MSGCH_DIAGNOSTICS, "monster speech lookup for %s", monst.c_str()); + mprf(MSGCH_DIAGNOSTICS, "monster speech lookup for %s", key.c_str()); #endif - return _getRandomizedStr(SpeakDB, monst, "", num_replacements); + return _getRandomizedStr(SpeakDB, key, "", num_replacements); } ///////////////////////////////////////////////////////////////////////////// diff --git a/crawl-ref/source/database.h b/crawl-ref/source/database.h index 138a7fe0b2..9a5c44e9ba 100644 --- a/crawl-ref/source/database.h +++ b/crawl-ref/source/database.h @@ -60,7 +60,7 @@ std::vector<std::string> getLongDescBodiesByRegex(const std::string ®ex, std::string getShoutString(const std::string &monst, const std::string &suffix = ""); -std::string getSpeakString(const std::string &monst); +std::string getSpeakString(const std::string &key); std::string getRandNameString(const std::string &itemtype, const std::string &suffix = ""); std::string getHelpString(const std::string &topic); diff --git a/crawl-ref/source/directn.cc b/crawl-ref/source/directn.cc index 6e395a802a..e84c8d8319 100644 --- a/crawl-ref/source/directn.cc +++ b/crawl-ref/source/directn.cc @@ -2524,10 +2524,10 @@ command_type targeting_behaviour::get_command(int key) case CONTROL('C'): return CMD_TARGET_CYCLE_BEAM; #endif case ':': return CMD_TARGET_HIDE_BEAM; + case '!': return CMD_TARGET_SELECT; case '\r': return CMD_TARGET_SELECT; - case '.': return CMD_TARGET_SELECT; case '5': return CMD_TARGET_SELECT; - case '!': return CMD_TARGET_SELECT_ENDPOINT; + case '.': return CMD_TARGET_SELECT_ENDPOINT; case '\\': case '\t': return CMD_TARGET_FIND_PORTAL; diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index 2b1e89e019..1c702548ac 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -3038,7 +3038,7 @@ int melee_attack::player_calc_base_unarmed_damage() damage = 5; break; case TRAN_BAT: - damage = (you.species == SP_VAMPIRE ? 1 : coinflip()); + damage = (you.species == SP_VAMPIRE ? 2 : 1); break; case TRAN_ICE_BEAST: damage = 12; @@ -3075,7 +3075,7 @@ int melee_attack::player_calc_base_unarmed_damage() if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT) { // Bats really don't do a lot of damage. - damage += random2(you.skills[SK_UNARMED_COMBAT]/5 + 1); + damage += you.skills[SK_UNARMED_COMBAT]/5; } else damage += you.skills[SK_UNARMED_COMBAT]; diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index e462ffb936..6390e5b743 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -101,10 +101,11 @@ bool can_wield(const item_def *weapon, bool say_reason, SAY(canned_msg(MSG_TOO_BERSERK)); return false; } + if (!can_equip( EQ_WEAPON, ignore_temporary_disability )) { SAY(mpr("You can't wield anything in your present form.")); - return false; + return (false); } if (!ignore_temporary_disability @@ -113,7 +114,7 @@ bool can_wield(const item_def *weapon, bool say_reason, && item_cursed( you.inv[you.equip[EQ_WEAPON]] )) { SAY(mpr("You can't unwield your weapon to draw a new one!")); - return false; + return (false); } // If we don't have an actual weapon to check, return now. @@ -818,6 +819,12 @@ static bool cloak_is_being_removed( void ) //--------------------------------------------------------------- void wear_armour( int slot ) // slot is for tiles { + if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT) + { + mpr("You can't wear anything in your present form."); + return; + } + int armour_wear_2 = 0; if (slot != -1) @@ -2848,7 +2855,9 @@ static int prompt_ring_to_remove(int new_ring) int c; do + { c = getch(); + } while (c != lslot && c != rslot && c != ESCAPE && c != ' '); mesclr(); @@ -3072,6 +3081,12 @@ bool puton_item(int item_slot, bool prompt_finger) bool puton_ring(int slot, bool prompt_finger) { + if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT) + { + mpr("You can't put on anything in your present form."); + return (false); + } + int item_slot; if (inv_count() < 1) @@ -3186,6 +3201,12 @@ void jewellery_remove_effects(item_def &item) bool remove_ring(int slot, bool announce) { + if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT) + { + mpr("You can't wear or remove anything in your present form."); + return (false); + } + equipment_type hand_used = EQ_NONE; int ring_wear_2; @@ -4804,26 +4825,34 @@ void tile_use_item(int idx, InvAction act) // Use it const int type = item.base_type; +/* + if ((type == OBJ_ARMOUR || type == OBJ_JEWELLERY) + && you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT) + { + canned_msg(MSG_PRESENT_FORM); + return; + } +*/ switch (type) { case OBJ_WEAPONS: case OBJ_STAVES: case OBJ_MISCELLANY: - // wield any unwielded item of these types + // Wield any unwielded item of these types. if (!equipped) { if (check_warning_inscriptions(item, OPER_WIELD)) wield_weapon(true, idx); return; } - // evoke misc. items and rods + // Evoke misc. items and rods. if (type == OBJ_MISCELLANY || item_is_rod(item)) { if (check_warning_inscriptions(item, OPER_EVOKE)) evoke_wielded(); return; } - // unwield staves or weapons + // Unwield staves or weapons. if (check_warning_inscriptions(item, OPER_WIELD)) wield_weapon(true, PROMPT_GOT_SPECIAL); // unwield return; diff --git a/crawl-ref/source/message.cc b/crawl-ref/source/message.cc index dfc4baad0c..46d1e2b4dd 100644 --- a/crawl-ref/source/message.cc +++ b/crawl-ref/source/message.cc @@ -424,7 +424,6 @@ void mpr(const char *inf, msg_channel_type channel, int param) return; } - char mbuf[400]; size_t i = 0; const int stepsize = get_number_of_cols() - 1; @@ -434,24 +433,26 @@ void mpr(const char *inf, msg_channel_type channel, int param) // If a message is exactly STEPSIZE characters long, // it should precisely fit in one line. The printing is thus // from I to I + STEPSIZE - 1. Stop when I reaches MSGLEN. - while ( i < msglen || i == 0 ) + while (i < msglen || i == 0) { strncpy( mbuf, inf + i, stepsize ); mbuf[stepsize] = 0; // Did the message break? - if ( i + stepsize < msglen ) + if (i + stepsize < msglen) { // Aes, find a nicer place to break it. int lookback, where = 0; - for ( lookback = 0; lookback < lookback_size; ++lookback ) + for (lookback = 0; lookback < lookback_size; ++lookback) { where = stepsize - 1 - lookback; - if ( where >= 0 && isspace(mbuf[where]) ) + if (where >= 0 && isspace(mbuf[where])) + { // aha! break; + } } - if ( lookback != lookback_size ) + if (lookback != lookback_size) { // Found a good spot to break. mbuf[where] = 0; @@ -463,7 +464,7 @@ void mpr(const char *inf, msg_channel_type channel, int param) else i += stepsize; - base_mpr( mbuf, channel, param ); + base_mpr(mbuf, channel, param); } } @@ -658,6 +659,7 @@ static int prepare_message(const std::string& imsg, msg_channel_type channel, if (New_Message_Count == num_lines - 1) more(); } + return colour; } @@ -710,9 +712,9 @@ static void mpr_formatted_output(formatted_string fs, int colour) need_prefix = false; } - for ( unsigned i = 0; i < fs.ops.size(); ++i ) + for (unsigned i = 0; i < fs.ops.size(); ++i) { - switch ( fs.ops[i].type ) + switch (fs.ops[i].type) { case FSOP_COLOUR: colour = fs.ops[i].x; @@ -726,7 +728,7 @@ static void mpr_formatted_output(formatted_string fs, int colour) break; } } - message_out( Message_Line, colour, "", Options.delay_message_clear? 2 : 1); + message_out(Message_Line, colour, "", Options.delay_message_clear? 2 : 1); } // Line wrapping is not available here! diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc index 01dbc8d09d..b9b2a994ae 100644 --- a/crawl-ref/source/religion.cc +++ b/crawl-ref/source/religion.cc @@ -2150,8 +2150,8 @@ god_type string_to_god(const char *name) void god_speaks( god_type god, const char *mesg ) { - mpr( mesg, MSGCH_GOD, god ); -} // end god_speaks() + mpr(mesg, MSGCH_GOD, god); +} // This function is the merger of done_good() and naughty(). // Returns true if god was interested (good or bad) in conduct. @@ -2808,8 +2808,10 @@ static void _dock_piety(int piety_loss, int penance) else if (penance) // only if still in religion { if (last_penance_lecture != you.num_turns) + { god_speaks(you.religion, "\"You will pay for your transgression, mortal!\""); + } last_penance_lecture = you.num_turns; _inc_penance(penance); } @@ -2902,7 +2904,7 @@ void gain_piety(int pgn) const char first = pmsg[0]; if ( first ) { - if ( isupper(first) ) + if (isupper(first)) god_speaks(you.religion, pmsg); else { @@ -3244,9 +3246,9 @@ void lose_piety(int pgn) { const char* pmsg = god_lose_power_messages[you.religion][i]; const char first = pmsg[0]; - if ( first ) + if (first) { - if ( isupper(first) ) + if (isupper(first)) god_speaks(you.religion, pmsg); else { @@ -3255,7 +3257,7 @@ void lose_piety(int pgn) } } - if ( _need_water_walking() && !beogh_water_walk() ) + if (_need_water_walking() && !beogh_water_walk()) { fall_into_a_pool( you.x_pos, you.y_pos, true, grd[you.x_pos][you.y_pos] ); diff --git a/crawl-ref/source/transfor.cc b/crawl-ref/source/transfor.cc index 2eaaf8ff4b..b27ad87854 100644 --- a/crawl-ref/source/transfor.cc +++ b/crawl-ref/source/transfor.cc @@ -50,12 +50,9 @@ static void _init_equipment_removal(std::set<equipment_type> &rem_stuff, break; case TRAN_BAT: - // Bats CAN wear soft helmets. - if (you.equip[EQ_HELMET] == -1 - || !is_hard_helmet(you.inv[you.equip[EQ_HELMET]])) - { - rem_stuff.erase(EQ_HELMET); - } + // Bats can't wear rings. + rem_stuff.insert(EQ_LEFT_RING); + rem_stuff.insert(EQ_RIGHT_RING); break; case TRAN_ICE_BEAST: diff --git a/crawl-ref/source/xom.cc b/crawl-ref/source/xom.cc index a933a075a3..8a27691849 100644 --- a/crawl-ref/source/xom.cc +++ b/crawl-ref/source/xom.cc @@ -117,10 +117,11 @@ static const char* _get_xom_speech(const std::string key) if (result.empty()) result = getSpeakString("Xom general effect"); - if (!result.empty()) - return (result.c_str()); + if (result.empty()) + return ("Xom makes something happen."); - return ("Xom makes something happen."); +// mprf(MSGCH_DIAGNOSTICS, "Xom speech result: %s", result.c_str()); + return (result.c_str()); } static void _xom_is_stimulated(int maxinterestingness, |