summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/itemprop.cc
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-23 21:46:25 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-23 21:46:25 +0000
commit4199cb903775df050465148d7ade49daf09fac39 (patch)
tree80945903f518f9711e28c413438e51d9890473d8 /crawl-ref/source/itemprop.cc
parent9e511702e814c94093bb77ae460f8be8b7a49b16 (diff)
downloadcrawl-ref-4199cb903775df050465148d7ade49daf09fac39.tar.gz
crawl-ref-4199cb903775df050465148d7ade49daf09fac39.zip
Add a weapon enchantment blessing that will enchant a monster's weapon
by two points (either this or armor enchantment blessing can occur, with 5% rarity). Whether to-hit or to-damage is chosen is random. Split handling of weapon enchantment into enchant_weapon() for the generic item routines, and handle_enchant_weapon() for the player-specific routines. Furthermore, make enchant_weapon() and enchant_armour() more similar in terms of structure. Also, in bless_follower(), store the blessing description and monster name in std::strings instead of const char*'s. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3839 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/itemprop.cc')
-rw-r--r--crawl-ref/source/itemprop.cc29
1 files changed, 28 insertions, 1 deletions
diff --git a/crawl-ref/source/itemprop.cc b/crawl-ref/source/itemprop.cc
index 9db56d82d7..14851779d4 100644
--- a/crawl-ref/source/itemprop.cc
+++ b/crawl-ref/source/itemprop.cc
@@ -1291,6 +1291,33 @@ bool item_is_rechargable(const item_def &it, bool known)
&& (!known || item_type_known(it)) );
}
+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 )
+ || is_random_artefact( wpn )))
+ {
+ return (uncurse && item_cursed( wpn )); // ?EW may uncurse artefacts
+ }
+
+ // Nor can highly enchanted items (missiles only have one stat)
+ if ( wpn.plus >= 9 ||
+ (wpn.base_type == OBJ_WEAPONS && wpn.plus2 >= 9) )
+ {
+ return (uncurse && item_cursed( wpn )); // ?EW may uncurse items
+ }
+
+ return (true);
+}
+
bool is_enchantable_armour(const item_def &arm, bool uncurse)
{
if (arm.base_type != OBJ_ARMOUR)
@@ -1312,7 +1339,7 @@ bool is_enchantable_armour(const item_def &arm, bool uncurse)
&& (arm.sub_type >= ARM_CLOAK && arm.sub_type <= ARM_BOOTS
|| is_shield(arm)) )
{
- return (uncurse && item_cursed( arm )); // ?EA may uncurse item
+ return (uncurse && item_cursed( arm )); // ?EA may uncurse items
}
return (true);