summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-18 17:56:33 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-18 17:56:33 +0000
commit468034182154a782ee368da983882595b50de550 (patch)
tree9a908659d8f5100443b09c0f2e85512271c94a61
parentd6ed0679ee7d39d2bf597cbe92e4aebbcf2d0793 (diff)
downloadcrawl-ref-468034182154a782ee368da983882595b50de550.tar.gz
crawl-ref-468034182154a782ee368da983882595b50de550.zip
Apply my commits r6601, r6604 and r6605 to the 0.4 branch, excluding
purely cosmetic changes. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/branches/stone_soup-0.4@6606 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/dat/descript/ability.txt4
-rw-r--r--crawl-ref/source/dat/descript/gods.txt4
-rw-r--r--crawl-ref/source/effects.cc3
-rw-r--r--crawl-ref/source/food.cc15
-rw-r--r--crawl-ref/source/makeitem.cc11
-rw-r--r--crawl-ref/source/mon-util.cc12
-rw-r--r--crawl-ref/source/ouch.cc6
7 files changed, 44 insertions, 11 deletions
diff --git a/crawl-ref/source/dat/descript/ability.txt b/crawl-ref/source/dat/descript/ability.txt
index cab36e1cee..a0969f8cf1 100644
--- a/crawl-ref/source/dat/descript/ability.txt
+++ b/crawl-ref/source/dat/descript/ability.txt
@@ -342,7 +342,9 @@ when you left the dungeon.
%%%%
Bend Space
-Cause distortional damage to a targeted monster.
+Bends the fabric of space around you, instantly translocating you a small
+distance and possibly also translocating and damaging monsters in your
+vicinity.
%%%%
Banish
diff --git a/crawl-ref/source/dat/descript/gods.txt b/crawl-ref/source/dat/descript/gods.txt
index 15700f0ca8..5c42911d79 100644
--- a/crawl-ref/source/dat/descript/gods.txt
+++ b/crawl-ref/source/dat/descript/gods.txt
@@ -72,11 +72,11 @@ Beogh is the deity worshipped by the cave orcs native to parts of the dungeon. O
%%%%
Zin powers
-Zin grants followers the ability to preach to the unenlightened masses. Later, followers will gain the power to help them purify and strengthen their body, and eventually they can find temporary safety in a divine refuge. Apart from that, Zin may occasionally directly intervene to save a follower's life.
+Zin grants followers the ability to preach to the unenlightened masses. When hungry, a follow can pray to Zin for nutrition. Later, followers will gain the power to help them purify and strengthen their body, and eventually they can find temporary safety in a divine refuge. As piety grows, followers will be protected from any source of mutations. Apart from that, Zin may occasionally directly intervene to save a follower's life.
%%%%
The Shining One powers
-Followers will gain use of a divine shield to protect them in battle. Later, they can hurl blasts of cleansing flame that are particularly effective against unholy creatures, and, eventually, they can ask the Shining One to send them help in the form of a Daeva, a powerful divine being. The Shining One may occasionally directly intervene to save a follower's life.
+Followers will gain use of a divine shield to protect them in battle. Later, they can hurl blasts of cleansing flame that are particularly effective against unholy creatures, and, eventually, they can ask the Shining One to send them help in the form of a Daeva, a powerful divine being. The Shining One may occasionally directly intervene to save a follower's life. With growing piety the Shining One will protect a follower's life force.
%%%%
Kikubaaqudgha powers
diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc
index 4ad8841591..05850e6ef0 100644
--- a/crawl-ref/source/effects.cc
+++ b/crawl-ref/source/effects.cc
@@ -876,8 +876,7 @@ static int _find_acquirement_subtype(object_class_type class_wanted,
int count = 0;
int skill = SK_FIGHTING;
- // Can't do much with launchers, so we'll avoid them for now -- bwr
- for (int i = SK_SHORT_BLADES; i < SK_DARTS; i++)
+ for (int i = SK_SHORT_BLADES; i <= SK_DARTS; i++)
{
if (i == SK_UNUSED_1)
continue;
diff --git a/crawl-ref/source/food.cc b/crawl-ref/source/food.cc
index c1b4d0d9c3..e160412b89 100644
--- a/crawl-ref/source/food.cc
+++ b/crawl-ref/source/food.cc
@@ -314,7 +314,8 @@ static bool _prepare_butchery(bool can_butcher, bool removed_gloves,
return (true);
}
-static bool _butcher_corpse(int corpse_id, bool force_butcher = false)
+static bool _butcher_corpse(int corpse_id, bool first_corpse = true,
+ bool force_butcher = false)
{
ASSERT(corpse_id != -1);
@@ -336,6 +337,10 @@ static bool _butcher_corpse(int corpse_id, bool force_butcher = false)
you.religion);
}
+ // Start work on the first corpse we butcher.
+ if (first_corpse)
+ mitm[corpse_id].plus2++;
+
int work_req = 4 - mitm[corpse_id].plus2;
if (work_req < 0)
work_req = 0;
@@ -546,7 +551,7 @@ bool butchery(int which_corpse)
{
return (false);
}
- success = _butcher_corpse(corpse_id);
+ success = _butcher_corpse(corpse_id, true);
_terminate_butchery(wpn_switch, removed_gloves, old_weapon, old_gloves);
// Remind player of corpses in pack that could be butchered or
@@ -561,6 +566,7 @@ bool butchery(int which_corpse)
bool bottle_all = false; // for Vampires
bool force_butcher = false;
bool repeat_prompt = false;
+ bool first_corpse = true;
int keyin;
for (stack_iterator si(you.pos()); si; ++si)
{
@@ -654,8 +660,11 @@ bool butchery(int which_corpse)
if (corpse_id != -1)
{
- if (_butcher_corpse(corpse_id, force_butcher || butcher_all))
+ if (_butcher_corpse(corpse_id, first_corpse,
+ force_butcher || butcher_all))
+ {
success = true;
+ }
if (!butcher_all && !bottle_all)
break;
diff --git a/crawl-ref/source/makeitem.cc b/crawl-ref/source/makeitem.cc
index 9897f63201..1c5773419e 100644
--- a/crawl-ref/source/makeitem.cc
+++ b/crawl-ref/source/makeitem.cc
@@ -3707,6 +3707,17 @@ static void _give_ammo(monsters *mon, int level,
_got_curare_roll(level) ? SPMSL_CURARE
: SPMSL_POISONED);
}
+ else
+ {
+ // Sanity check to avoid useless brands.
+ const int bow_brand = get_weapon_brand(*launcher);
+ const int ammo_brand = get_ammo_brand(mitm[thing_created]);
+ if (ammo_brand != SPMSL_NORMAL
+ && (bow_brand == SPWPN_FLAME || bow_brand == SPWPN_FROST))
+ {
+ mitm[thing_created].special = SPMSL_NORMAL;
+ }
+ }
// Master archers get double ammo - archery is their only attack.
if (mon->type == MONS_DEEP_ELF_MASTER_ARCHER)
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index a664852bcd..763364d943 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -3969,13 +3969,21 @@ bool monsters::pickup_missile(item_def &item, int near, bool force)
launch = mslot_item(static_cast<mon_inv_type>(i));
if (launch)
{
+ const int bow_brand = get_weapon_brand(*launch);
+ const int item_brand = get_ammo_brand(item);
// If this ammunition is better, drop the old ones.
+ // Don't upgrade to ammunition whose brand cancels the
+ // launcher brand or doesn't improve it further.
if (fires_ammo_type(*launch) == item.sub_type
&& (fires_ammo_type(*launch) != miss->sub_type
|| item.plus > miss->plus
- || item.plus == miss->plus
+ && get_ammo_brand(*miss) == item_brand
+ || item.plus >= miss->plus
&& get_ammo_brand(*miss) == SPMSL_NORMAL
- && get_ammo_brand(item) != SPMSL_NORMAL))
+ && item_brand != SPMSL_NORMAL
+ && (bow_brand != SPWPN_FLAME
+ || item_brand == SPMSL_POISONED)
+ && bow_brand != SPWPN_FROST))
{
if (!drop_item(MSLOT_MISSILE, near))
return (false);
diff --git a/crawl-ref/source/ouch.cc b/crawl-ref/source/ouch.cc
index 3a49f7aee3..b9e509eead 100644
--- a/crawl-ref/source/ouch.cc
+++ b/crawl-ref/source/ouch.cc
@@ -562,7 +562,11 @@ void expose_items_to_element(beam_type flavour, int x, int y, int strength)
if (x_chance_in_y(strength, 100))
{
num_dest++;
- dec_mitm_item_quantity(si->index(), 1);
+ if (!dec_mitm_item_quantity(si->index(), 1)
+ && is_blood_potion(*si))
+ {
+ remove_oldest_blood_potion(*si);
+ }
}
}
}