diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-23 21:46:25 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-23 21:46:25 +0000 |
commit | 4199cb903775df050465148d7ade49daf09fac39 (patch) | |
tree | 80945903f518f9711e28c413438e51d9890473d8 /crawl-ref/source/itemprop.cc | |
parent | 9e511702e814c94093bb77ae460f8be8b7a49b16 (diff) | |
download | crawl-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.cc | 29 |
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); |