diff options
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/dat/descript/gods.txt | 30 | ||||
-rw-r--r-- | crawl-ref/source/dat/descript/items.txt | 3 | ||||
-rw-r--r-- | crawl-ref/source/externs.h | 10 | ||||
-rw-r--r-- | crawl-ref/source/initfile.cc | 14 | ||||
-rw-r--r-- | crawl-ref/source/item_use.cc | 23 | ||||
-rw-r--r-- | crawl-ref/source/libunix.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/religion.cc | 48 | ||||
-rw-r--r-- | crawl-ref/source/view.cc | 12 |
8 files changed, 90 insertions, 52 deletions
diff --git a/crawl-ref/source/dat/descript/gods.txt b/crawl-ref/source/dat/descript/gods.txt index 3702c296a0..9198612e3e 100644 --- a/crawl-ref/source/dat/descript/gods.txt +++ b/crawl-ref/source/dat/descript/gods.txt @@ -13,23 +13,24 @@ Buggy (It's a bug if you ever see this.) %%%% Zin -Zin is an ancient and revered God, dedicated to the establishment of -order and the destruction of the forces of chaos and night. Valued -worshippers can gain sustenance in times of need and a variety of -powers useful in the fight against chaos, but are required to remain -pure of body and soul, in particular abstain from the consumption of -corpses of intelligent beings, and the use of necromancy and mutating -substances. Zin values selflessness and appreciates long-standing -faith. +Zin is an ancient and revered God, dedicated to the establishment of +order. Worshippers are required to remain pure of body and soul, in +particular to abstain from the consumption of corpses of intelligent +beings, and the use of necromancy and deliberate mutations. They can +gain a variety of powers useful against chaos, including a divine +refuge. Zin values selflessness and appreciates long-standing faith. +Zin is a good god, and does not mind switching to another good god. %%%% The Shining One -The Shining One is a powerful crusading deity, allied with Zin in the -fight against evil. Followers may be granted blessings on their -weapons and the ability to summarily dispense the wrath of heaven, but -must never use any form of evil magic and should fight honourably. The -Shining One appreciates long-standing persistence in the endless -crusade, as well as the dedicated destruction of unholy creatures. +The Shining One is a powerful crusading deity. Followers may be +granted blessings on their weapons and the ability to summarily +dispense the wrath of heaven, but must never use any form of evil +magic and should fight honourably. The Shining One appreciates +long-standing persistence in the endless crusade, as well as the +dedicated destruction of unholy creatures. +The Shining One is a good god, and does not mind switching to another +good god. %%%% Kikubaaqudgha @@ -107,6 +108,7 @@ Elyvilon the Healer is worshipped by the healers (among others), who gain their healing powers by long worship and devotion. Although Elyvilon prefers a creed of pacifism, those who crusade against evil are not excluded. Elyvilon appreciates the destruction of weapons. +Elyvilon is a good god, and does not mind switching to another good god. %%%% Lugonu diff --git a/crawl-ref/source/dat/descript/items.txt b/crawl-ref/source/dat/descript/items.txt index a8ebf85c5b..748da1c49b 100644 --- a/crawl-ref/source/dat/descript/items.txt +++ b/crawl-ref/source/dat/descript/items.txt @@ -1112,7 +1112,8 @@ your possessions. %%%% scroll of enchant armour -This scroll places an enchantment on a piece of armour. +This scroll places an enchantment on a piece of armour. It can also +be used to enchant the hides of certain exotic creatures. %%%% scroll of enchant weapon i diff --git a/crawl-ref/source/externs.h b/crawl-ref/source/externs.h index c62fe73685..0faa9eb854 100644 --- a/crawl-ref/source/externs.h +++ b/crawl-ref/source/externs.h @@ -1657,11 +1657,11 @@ public: unsigned detected_monster_colour; // Colour of detected monsters unsigned detected_item_colour; // Colour of detected items - unsigned heap_brand; // Highlight heaps of items - unsigned stab_brand; // Highlight monsters that are stabbable - unsigned may_stab_brand; // Highlight potential stab candidates - unsigned stair_item_brand; // Highlight stairs covered by items. - unsigned trap_item_brand; // Highlight traps covered by items. + unsigned heap_brand; // Highlight heaps of items + unsigned stab_brand; // Highlight monsters that are stabbable + unsigned may_stab_brand; // Highlight potential stab candidates + unsigned feature_item_brand; // Highlight features covered by items. + unsigned trap_item_brand; // Highlight traps covered by items. // What is the minimum number of items in a stack for which // you show summary (one-line) information diff --git a/crawl-ref/source/initfile.cc b/crawl-ref/source/initfile.cc index e5a6ffcd5d..587a89ba4b 100644 --- a/crawl-ref/source/initfile.cc +++ b/crawl-ref/source/initfile.cc @@ -734,12 +734,12 @@ void game_options::reset_options() sc_entries = 0; sc_format = -1; - friend_brand = CHATTR_NORMAL; - stab_brand = CHATTR_NORMAL; - may_stab_brand = CHATTR_NORMAL; - heap_brand = CHATTR_REVERSE; - stair_item_brand = CHATTR_REVERSE; - trap_item_brand = CHATTR_NORMAL; + friend_brand = CHATTR_NORMAL; + stab_brand = CHATTR_NORMAL; + may_stab_brand = CHATTR_NORMAL; + heap_brand = CHATTR_REVERSE; + feature_item_brand = CHATTR_REVERSE; + trap_item_brand = CHATTR_NORMAL; no_dark_brand = true; @@ -1836,7 +1836,7 @@ void game_options::read_option_line(const std::string &str, bool runscript) } else if (key == "stair_item_brand") { - stair_item_brand = curses_attribute(field); + feature_item_brand = curses_attribute(field); } else if (key == "trap_item_brand") { diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index 4a7237c0f2..14adf663b5 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -1686,7 +1686,8 @@ bool throw_it(bolt &pbolt, int throw_2, bool teleport, int acc_bonus, int exHitBonus = 0, exDamBonus = 0; // 'extra' bonus from skill/dex/str int effSkill = 0; // effective launcher skill int dice_mult = 100; - bool returning = false; // item will return to pack + bool returning = false; // item can return to pack + bool did_return = false; // returning item actually does return to pack int slayDam = 0; if (!teleport) @@ -2122,9 +2123,11 @@ bool throw_it(bolt &pbolt, int throw_2, bool teleport, int acc_bonus, if (projected == LRET_THROWN) { returning = ((get_weapon_brand(item) == SPWPN_RETURNING || - get_ammo_brand(item) == SPMSL_RETURNING) && - !teleport && - !one_chance_in(1 + skill_bump(SK_THROWING))); + get_ammo_brand(item) == SPMSL_RETURNING) && !teleport); + + if (returning && !one_chance_in(1 + skill_bump(SK_THROWING))) + did_return = true; + baseHit = 0; // missiles only use inv_plus @@ -2403,17 +2406,17 @@ bool throw_it(bolt &pbolt, int throw_2, bool teleport, int acc_bonus, else { // Dropping item copy, since the launched item might be different. - fire_beam(pbolt, returning ? NULL : &item); + fire_beam(pbolt, did_return? NULL : &item); // The item can be destroyed before returning. if (returning && thrown_object_destroyed(&item, pbolt.target_x, pbolt.target_y, true)) { - returning = false; + did_return = false; } } - if ( returning ) + if ( did_return ) { // Fire beam in reverse pbolt.setup_retrace(); @@ -2428,7 +2431,13 @@ bool throw_it(bolt &pbolt, int throw_2, bool teleport, int acc_bonus, set_ident_flags(you.inv[throw_2], ISFLAG_KNOW_TYPE); } else + { + if (returning) // should have returned but didn't + msg::stream << item.name(DESC_CAP_THE) + << " fails to return to your pack!" << std::endl; + dec_inv_item_quantity( throw_2, 1 ); + } // throwing and blowguns are silent if (projected == LRET_LAUNCHED && lnchType != WPN_BLOWGUN) diff --git a/crawl-ref/source/libunix.cc b/crawl-ref/source/libunix.cc index 93ce48d10a..5b3bac84bc 100644 --- a/crawl-ref/source/libunix.cc +++ b/crawl-ref/source/libunix.cc @@ -725,7 +725,7 @@ inline unsigned get_brand(int col) (col & COLFLAG_ITEM_HEAP)? Options.heap_brand : (col & COLFLAG_WILLSTAB)? Options.stab_brand : (col & COLFLAG_MAYSTAB)? Options.may_stab_brand : - (col & COLFLAG_STAIR_ITEM)? Options.stair_item_brand : + (col & COLFLAG_STAIR_ITEM)? Options.feature_item_brand : (col & COLFLAG_TRAP_ITEM)? Options.trap_item_brand : (col & COLFLAG_REVERSE)? CHATTR_REVERSE : CHATTR_NORMAL; diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc index 192e22bd8d..1fc0c51855 100644 --- a/crawl-ref/source/religion.cc +++ b/crawl-ref/source/religion.cc @@ -3276,8 +3276,14 @@ static void give_sac_group_feedback(int which) void offer_items() { - if (you.religion == GOD_NO_GOD || !god_likes_items(you.religion)) + if (you.religion == GOD_NO_GOD) + return; + + if (!god_likes_items(you.religion)) + { + simple_god_message(" doesn't care about such mundane gifts.", you.religion); return; + } god_acting gdact; @@ -3306,14 +3312,25 @@ void offer_items() simple_god_message(" finds your generosity lacking."); return; } - else if (donation_value <= 5) // $100 or more - simple_god_message(" is satisfied with your donation."); - else if (donation_value <= 20) // about $400 or more - simple_god_message(" is pleased about your sacrifice."); - else if (donation_value <= 50) // about $1500 or more - simple_god_message(" is impressed by your generosity."); - else // about $3000 or more - simple_god_message(" is deeply moved by your generosity."); + + int estimated_piety = you.piety + donation_value; + std::string result = god_name(GOD_ZIN) + " will soon be "; + + result += + (estimated_piety > 130) ? "exalted by your worship" : + (estimated_piety > 100) ? "extremely pleased with you" : + (estimated_piety > 70) ? "greatly pleased with you" : + (estimated_piety > 40) ? "most pleased with you" : + (estimated_piety > 20) ? "pleased with you" : + (estimated_piety > 5) ? "noncommittal" + : "displeased"; + + if (donation_value >= 30 && you.piety <= 170) + result += "!"; + else + result += "."; + + mpr(result.c_str()); you.duration[DUR_PIETY_POOL] += donation_value; if (you.duration[DUR_PIETY_POOL] > 500) @@ -3442,12 +3459,19 @@ void offer_items() const int new_leading = leading_sacrifice_group(); if ( old_leading != new_leading || one_chance_in(50) ) give_sac_group_feedback(new_leading); - } - + #if DEBUG_GIFTS || DEBUG_CARDS || DEBUG_SACRIFICE - if (num_sacced > 0 && you.religion == GOD_NEMELEX_XOBEH) show_pure_deck_chances(); #endif + } + else if (!num_sacced) // explanatory messages if nothing sacrificed + { + if (you.religion == GOD_KIKUBAAQUDGHA || you.religion == GOD_TROG) + simple_god_message(" only cares about primal sacrifices!", you.religion); + else if (you.religion == GOD_NEMELEX_XOBEH) + simple_god_message(" expects you to use your decks, not offer them!", you.religion); + // everyone else was handled above (Zin!) or likes everything + } } void god_pitch(god_type which_god) diff --git a/crawl-ref/source/view.cc b/crawl-ref/source/view.cc index f1a3deb2bc..d4a92bc38f 100644 --- a/crawl-ref/source/view.cc +++ b/crawl-ref/source/view.cc @@ -304,7 +304,7 @@ static unsigned colflag2brand(int colflag) case COLFLAG_MAYSTAB: return (Options.may_stab_brand); case COLFLAG_STAIR_ITEM: - return (Options.stair_item_brand); + return (Options.feature_item_brand); case COLFLAG_TRAP_ITEM: return (Options.trap_item_brand); default: @@ -631,8 +631,10 @@ screen_buffer_t colour_code_map( int x, int y, bool item_colour, if (feature_colour != DARKGREY) tc = feature_colour; - if (Options.stair_item_brand - && is_stair(grid_value) && igrd[x][y] != NON_ITEM) + if (Options.feature_item_brand + && (is_stair(grid_value) || grid_altar_god(grid_value) != GOD_NO_GOD + || grid_value == DNGN_ENTER_SHOP || grid_is_portal(grid_value)) + && igrd[x][y] != NON_ITEM) { tc |= COLFLAG_STAIR_ITEM; } @@ -709,7 +711,7 @@ int get_mons_colour(const monsters *mons) } else if (mons_is_stationary(mons)) { - if (Options.stair_item_brand != CHATTR_NORMAL + if (Options.feature_item_brand != CHATTR_NORMAL && grid_stair_direction(grd(mons->pos())) != CMD_NO_CMD) { col |= COLFLAG_STAIR_ITEM; @@ -1253,7 +1255,7 @@ inline static void update_item_grid(const coord_def &gp, const coord_def &ep) unsigned short &ecol = env.show_col(ep); const dungeon_feature_type grid = grd(gp); - if (Options.stair_item_brand && is_stair(grid)) + if (Options.feature_item_brand && is_stair(grid)) ecol |= COLFLAG_STAIR_ITEM; else if (Options.trap_item_brand && grid_is_trap(grid)) ecol |= COLFLAG_TRAP_ITEM; |