summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/dat/descript/gods.txt30
-rw-r--r--crawl-ref/source/dat/descript/items.txt3
-rw-r--r--crawl-ref/source/externs.h10
-rw-r--r--crawl-ref/source/initfile.cc14
-rw-r--r--crawl-ref/source/item_use.cc23
-rw-r--r--crawl-ref/source/libunix.cc2
-rw-r--r--crawl-ref/source/religion.cc48
-rw-r--r--crawl-ref/source/view.cc12
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;