to meld into your body than rather than being removed, so that when untransforming you don't have to put everything on again.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7300 c06c8d41-db1a-0410-9941-cceddc491573
IP4A3VRYFYIVLRUAU4DF4KDNP6E4UISWJX3LI2F4EGSSMIJYRJXAC
AHMSJ3PDQ7XBTTWVI3QBBTN3FA3DEPWMXNRHCLYZPISPAE7CPO3QC
7F5A7R3P2V3SPUNNJMOEG5ISKKANHC5C5G34YV77QCLQP2T3BV2QC
QDGSYNKEBLC3VBPXJVE4MJWVI3QZZLX7QUHULGGW7CC7TIF7HTJQC
FE4NKR5J4P53PSRDZPEW6MNHUJNCFSWCE6RWBMXIMQBV3EGCDOWQC
OMSSJON5IE4LBXJ7CZE52IZRZS7ZICS23SKP4AGLHH3QNCRMEFVAC
JHG2LHZ2YTRRYYD2QAQ5JIAK3AALUEHXPMJQO5KB72Q5NIF6F2ZAC
EYYPQHFWHZDTHI6FJYCVGWLOXOI3J4LIQXFFYOBI74WYYIE2IL5QC
NSHZVI2TCGOCTEKV72C5K4CNZW3I6MCHG372NYXYZI7U2U5BQ66AC
XCPNY2Q3F3ELK3L2FRCXHVLANQ7JLB47VBIFIUME5I2PCXNRA3ZAC
SHFSQYLN7WPQC35V3XYYEIZ4CQMREASUNR474CIKFG3C2FYI4SHQC
MK7MCWBPFRJSUWVXZ43LPFJ5Y2AYZZCREDYBT7AWJUMTQ2ET5AZQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
6CZYPP67SB2M3SQS3QIPJWHZY7PJIRTTBH5CLORV3AALVTJIL5MQC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
4EZVKDQA5GM3QDTNTCKEKGH4F6LGAYNLBT756PXODKZ2B7C4ZVHAC
JCWJWGMQIKQGSSFJUQRKNIWW3HBOJSHYDTOPPE5BWOJTIJTDYUTAC
TKZWK7DWRWXIN7IJNWF3IKWGZOUSCGYXEJWWYGRKD7TAWJVEXGEAC
PBTLQZHBQK5TAIO7SNSCKSHOQQ65CFFI55OTTETV7FG2FCJOXKHQC
X6ULJWV7HNNP7XTRF4LT5OVBE4RARGQZARKJUSU6DR3PTQTR4JOQC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
NDE6CROMCVOJRMRMEID7QISFPZKUK2VCV6ISP5OEQRBH7EIXUIEQC
MADTICUXDKQB7EKTXG7J2OIJGUM7A437FRWIBRA3BIVEKXEXHO6AC
RZTIYZABUF6FQZEBZOPVWTIMYI3ZI637PTR4MZTBPLOCDRAXPPOQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
7CMQLE4XIFMWDEUZAOKIKDW7BHAJCK5S26APMEZ6TEFEH63TEZ6AC
UVJBHQ5KGUIEFRHKTYQPKSXYDUDKTRAXINUXGJJJ6QGNCR6JO7ZAC
BZMLXBTB63CXPZZPFXM4VLE7IBXPBEZ6YLM4MSNQGJR4L5IBM3OAC
ADIVVYTV2MJ3XVRYDNBLPTAEACCNF27XZDCRVZFQEHRHPMZGNITQC
3BYA46OYLVN6ZPGAZD5OGIMMH5PRWGNSU3ITJRCVBE6P5HYYYAYQC
MNYDF64QY6NHYKOAFOGBQJFYU7TZDILXRV23EXJPN4IZOCLSJ2AQC
TUKBRR44ONNRAUYHTQTQIYIQPFK752EGWEZ5A5PULTTQDEDD7DRAC
AMSENYIGRJWHHGHLKIZQGZZQTWCZBTS2Y3WKPVTZZRI7ZMTATBCAC
XCEZ7OA2INNPSYNAB5U6JB7XNDAD5BKU26YLFPPZ3SEESFZKADQAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
VNHFP63ZLLZU3A3PLXP4BITX57DUIYDHFOHQYK3BOBHV3S64G26QC
6T6E2JGOAQCQU56ZR6D6BTCQ6PKWLHQUPYVQZI6GRGX2FDDLILFQC
LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC
SRQJVKQVUY7QGCEBA2VQTWEJ7ADIUSY7L46HJQSQNM5DXYRRH5KAC
SN3VSV7G6NF6NLX5E47QJQQFDIPC2LQUUYGZMH6AWBF3FOUHXCBQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
L53UJK6PPEZ2IG7TJGHN3Y3A6JYIO6PHBWG4MDAENOXPVFDKK6FQC
MJRXH3WGYWQK3PONPCZSAVOKSAGVJZCLXYA476KTEBAJZ744JJXAC
E3X5HVN5UN75OMTJA6JFQBNZ54P37NDZLZZF7EFBZZC45KR73YGAC
SHSIZVHSB4RPTLGMFJXUDVHF3FTEZZYCRIH4CBZP4MXOBR3HC4QAC
OFH2B2UZBK43QLFQBZ54FOCFLFNE54BZVDNCEUGDTBCUGNVZULIQC
XS4OT3JJKMXJIOMIGSSHIE4IOV2EXKFFELHEU7J2C2B7PKAP4V4QC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC
XXPLTLK26AM2J2QBEJS7UVZV2C6T4J2D7VCIO4L5S4NBNR57X4FAC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
3D6NWJ44UYHLZMD3BOQIWXJUEGITAVCHK6Z2WWDQONVQC4HSBRXQC
P2YNOE2TUTZFAOBTHJOIVD6TCV7J7D2UKUX67LHZUL6QY44ZMENQC
XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC
DLVXY6DBP65B3RGWW4PNBEBPBNHNM3LSRYD36F3XDARFY7SPSJYAC
NQ5MZTGKHPSXGP6F7BIEFPGDN2CVBYOREAWOKRQOCXK2PCQYJWGQC
WFIA2XFIWZF3XVLH52GC57XK7A6ECI3K6P7GRZSHPIUBX66OF3OQC
TDAVD56MGLFSMJLPLSYLEVW7MBRMT7V5BNII4TRWVDIHH47CD2OAC
you.equip[e] = -1;
}
}
return (true);
}
static bool _unmeld_equipment(std::set<equipment_type> melded)
{
// Unmeld items in order.
std::set<equipment_type>::const_iterator iter;
for (iter = melded.begin(); iter != melded.end(); ++iter)
{
const equipment_type e = *iter;
if (e == EQ_WEAPON || you.equip[e] == -1)
continue;
if (e == EQ_LEFT_RING || e == EQ_RIGHT_RING || e == EQ_AMULET)
{
item_def &ring = you.inv[you.equip[e]];
jewellery_wear_effects(ring);
}
else // armour
{
armour_wear_effects( you.equip[e] );
// We may have to unmeld a couple of equipment types.
const equipment_type default_rem[] = {
EQ_CLOAK, EQ_HELMET, EQ_GLOVES, EQ_BOOTS, EQ_SHIELD, EQ_BODY_ARMOUR
};
std::set<equipment_type> melded(default_rem,
default_rem + ARRAYSZ(default_rem));
_init_equipment_removal(melded, old_form);
*
* Changelog(most recent first): *
*
* <3> 04oct2001 bwr absorbed spells0.cc
* <2> 24jun2000 jmf changed to use new data structure
* <1> 12jun2000 dlb created after much thought
bool you_tran_can_wear(const item_def &item)
{
switch (item.base_type)
{
case OBJ_WEAPONS:
return you_tran_can_wear(EQ_WEAPON);
case OBJ_JEWELLERY:
return you_tran_can_wear(jewellery_is_amulet(item) ? EQ_AMULET
: EQ_LEFT_RING);
case OBJ_ARMOUR:
if (item.sub_type == ARM_CAP)
{
const int transform = you.attribute[ATTR_TRANSFORMATION];
return (transform != TRAN_BAT && transform != TRAN_AIR);
}
return you_tran_can_wear(get_armour_slot(item), true);
default:
return (true);
}
}
if (you.equip[ e_order[i] ] != -1)
if (!you_can_wear(e_order[i], true))
{
snprintf(buf, sizeof buf,
"%s<darkgrey>(%s unavailable)</darkgrey>",
slot, slot_name_lwr);
}
else if (!you_tran_can_wear(e_order[i], true))
{
snprintf(buf, sizeof buf,
"%s<darkgrey>(%s currently unavailable)</darkgrey>",
slot, slot_name_lwr);
}
else if (you.equip[ e_order[i] ] != -1)
else if (!you_tran_can_wear(e_order[i], true))
{
snprintf(buf, sizeof buf,
"%s<darkgrey>(%s currently unavailable)</darkgrey>",
slot, slot_name_lwr);
}
else if (!you_can_wear(e_order[i]))
{
snprintf(buf, sizeof buf,
"%s<lightgrey>(%s restricted)</lightgrey>",
slot, slot_name_lwr);
}
File 'spl-util.cc':
* Changelog(most recent first): *
*
* <3> 04oct2001 bwr absorbed spells0.cc
* <2> 24jun2000 jmf changed to use new data structure
* <1> 12jun2000 dlb created after much thought
--------------------------------------------------
File 'spl-util.h':
* Changelog(most recent first):
*
* 24jun2000 jmf simplified structures
* <00> 12jun2000 dlb created after much thought
--------------------------------------------------