diff options
Diffstat (limited to 'crawl-ref/source/player.cc')
-rw-r--r-- | crawl-ref/source/player.cc | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index da0ed6aa3f..5ac9124d99 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -438,10 +438,6 @@ bool player_genus(unsigned char which_genus, unsigned char species) // ------------------------------------------------- bool you_can_wear(int eq) { - // bats cannot use anything - if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT) - return false; - // these can be used by all if (eq == EQ_LEFT_RING || eq == EQ_RIGHT_RING || eq == EQ_AMULET || eq == EQ_WEAPON || eq == EQ_SHIELD || eq == EQ_CLOAK) @@ -475,6 +471,55 @@ bool you_can_wear(int eq) return true; } +bool you_tran_can_wear(int eq) +{ + int transform = you.attribute[ATTR_TRANSFORMATION]; + + // no further restrictions + if (transform == TRAN_NONE || transform == TRAN_LICH) + return true; + + // bats cannot use anything, clouds obviously so + if (transform == TRAN_BAT || transform == TRAN_AIR) + return false; + + // everyone else can wear jewellery, at least + if (eq == EQ_LEFT_RING || eq == EQ_RIGHT_RING || eq == EQ_AMULET) + return true; + + // these cannot use anything but jewellery + if (transform == TRAN_SPIDER || transform == TRAN_DRAGON + || transform == TRAN_SERPENT_OF_HELL) + { + return false; + } + + if (transform == TRAN_BLADE_HANDS) + { + if (eq == EQ_WEAPON || eq == EQ_GLOVES || eq == EQ_SHIELD) + return false; + return true; + } + + if (transform == TRAN_ICE_BEAST) + { + if (eq != EQ_CLOAK) + { + return false; + } + return true; + } + + if (transform == TRAN_STATUE) + { + if (eq == EQ_BODY_ARMOUR || eq == EQ_GLOVES || eq == EQ_SHIELD) + return false; + return true; + } + + return true; +} + // Returns the item in the given equipment slot, NULL if the slot is empty. // eq must be in [EQ_WEAPON, EQ_AMULET], or bad things will happen. item_def *player_slot_item(equipment_type eq) |