Fix 2002931: feature_item_brand not working
No, it's not the important bugs, but at least these are bugs I can reproduce. :P
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6433 c06c8d41-db1a-0410-9941-cceddc491573
CFWPAA7X7JQBNHFFEY7FJUZZ56YIQXGXEQ7EEVZMJ65YCPNO2L5AC
76LKB66IWIPTE75HR2T4B75YFRVZ3PVRPX5WTRPNTOOP3SLAQWFAC
JQK4F4RTKVQWIF5YKFPH7IHF7UREBOY2NOFQ7J3O44KYPCNHNL5AC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
AXQJOPTECRU3ECV3ICDUR6SGBIOIZT5HIOSJ77MRLF5ECGOITMDQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
72CQFK27NR37P2WQ32U4PEXXKMRIO7JEMJN2ZCPNVPZMT7UPFJJAC
MJWFTUS66PTCNEYXEJA3CUJFXNWXIKDD6H3V24PW7HK64NSVOFSAC
GL7TJGUGV4JPLZCDWH6QVST4RYW7UJV6IP7UAEWEKNBWJO2H2ZHAC
LHHRXD4GGPHSU6OGOVJEHDHYJA3Q5X45VKMZYUWZP3VXOLYZRTIAC
WT66JDIRTLLP37SHTV4GI3V64JFJ4D25LNRLGCHFG6CLEFKJ3QGQC
WYMN37VYSETF56RTTJ45VMB2YS4OUUKRL2JNWJSUKNLBFGGGECNQC
5HBRQ2QZTFBQE2Z2CFADUI2D52LO5Z5CNHXHA7BJP3LGO7FJPUCQC
I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC
XIVK73TDPJKGRQ2EHPNUERDI5JIYTYAPSCVKXROD36BIHFE3WNQQC
3HA76QBIYDRXHHKK7FRIGTEZLRFPECJW2AYXOBYNZM4FIDSDLWGAC
3JLXUHLLGWTSJEGNAUUKFR7HWYDPAOR4WTJKYP5TFGMGQ3GDOU6AC
3ZWALZFSTSIVYXY4BAY6ANGINTDACZC6RSSJTEMQSTSUIE66YOBQC
ENOQQ6DEA6ECRNTBGYYNK7G3DFEILMKQBNKP4SUQIZW2L6HWVR7QC
3VWSZUGYL36SO5AOZRASGK3VHFCFZUGGCGRT3R7BZB36IZPN7OSQC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
QYUAYEGK7WPBJLZRSWZVDWD5SMNAWWIJSQPWYA7BEYXMEBD2SDKAC
LS2FPEQQPF3L6AG6NCI2EMBQYWB7POZQBAUCNCGXG4H3Z3ACZG5AC
7NDXS36TE7QVXTXJWMYSVG5UHCCLPIO4VL6NXFGTDK3ZNKE3A2IAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
AMBBZGB4EP4MA2ILKQSAY4O2XQAIH673JHCDQ6N4MBGL2MAZGXNAC
LCCFD6BLLDJO3PVPKKJ7YJ4PQUHLUKQBWRCYRH26UVMOTYZPJQRQC
DNDSBJEVLBOUBZY23HUBQX7FVHYYPLOUZK7RRAFRCANLXELO2V6QC
IXW2IM5ITYDCXDB3ORDDVAR5XUSPVQ3BWLP3Q6TRXNTIKGMZTHXAC
int hitp;
hitp = (you.base_hp - 5000) + (you.base_hp2 - 5000);
hitp += (you.experience_level * you.skills[SK_FIGHTING]) / 5;
// being berserk makes you resistant to damage. I don't know why.
if (you.duration[DUR_BERSERKER] && !real_hp)
{
hitp *= 15;
hitp /= 10;
}
if (!real_hp)
{
// some transformations give you extra hp
switch (you.attribute[ATTR_TRANSFORMATION])
{
case TRAN_STATUE:
hitp *= 15;
hitp /= 10;
break;
case TRAN_ICE_BEAST:
hitp *= 12;
hitp /= 10;
break;
case TRAN_DRAGON:
hitp *= 16;
hitp /= 10;
break;
}
}
int hitp = get_real_hp(!real_hp, false);
// frail and robust mutations, and divine robustness
hitp *= (10 + player_mutation_level(MUT_ROBUST)
+ you.attribute[ATTR_DIVINE_ROBUSTNESS]
- player_mutation_level(MUT_FRAIL));
hitp /= 10;
// If trans is true, being berserk and/or transformed is taken into account
// here. Else, the base hp is calculated. If rotted is true, calculate the
// real max hp you'd have if the rotting was cured.
int get_real_hp(bool trans, bool rotted)
{
int hitp;
hitp = (you.base_hp - 5000) + (you.base_hp2 - 5000);
hitp += (you.experience_level * you.skills[SK_FIGHTING]) / 5;
// Being berserk makes you resistant to damage. I don't know why.
if (trans && you.duration[DUR_BERSERKER])
{
hitp *= 15;
hitp /= 10;
}
if (trans)
{
// Some transformations give you extra hp.
switch (you.attribute[ATTR_TRANSFORMATION])
{
case TRAN_STATUE:
hitp *= 15;
hitp /= 10;
break;
case TRAN_ICE_BEAST:
hitp *= 12;
hitp /= 10;
break;
case TRAN_DRAGON:
hitp *= 16;
hitp /= 10;
break;
}
}
if (rotted)
hitp += player_rotted();
// Frail and robust mutations, and divine robustness.
hitp *= (10 + player_mutation_level(MUT_ROBUST)
+ you.attribute[ATTR_DIVINE_ROBUSTNESS]
- player_mutation_level(MUT_FRAIL));
hitp /= 10;
return (hitp);
}
return (col & COLFLAG_FRIENDLY_MONSTER)? Options.friend_brand :
(col & COLFLAG_NEUTRAL_MONSTER)? Options.neutral_brand :
(col & COLFLAG_ITEM_HEAP)? Options.heap_brand :
(col & COLFLAG_WILLSTAB)? Options.stab_brand :
(col & COLFLAG_MAYSTAB)? Options.may_stab_brand :
(col & COLFLAG_STAIR_ITEM)? Options.feature_item_brand :
(col & COLFLAG_TRAP_ITEM)? Options.trap_item_brand :
(col & COLFLAG_REVERSE)? CHATTR_REVERSE :
CHATTR_NORMAL;
return (col & COLFLAG_FRIENDLY_MONSTER) ? Options.friend_brand :
(col & COLFLAG_NEUTRAL_MONSTER) ? Options.neutral_brand :
(col & COLFLAG_ITEM_HEAP) ? Options.heap_brand :
(col & COLFLAG_WILLSTAB) ? Options.stab_brand :
(col & COLFLAG_MAYSTAB) ? Options.may_stab_brand :
(col & COLFLAG_FEATURE_ITEM) ? Options.feature_item_brand :
(col & COLFLAG_TRAP_ITEM) ? Options.trap_item_brand :
(col & COLFLAG_REVERSE) ? CHATTR_REVERSE
: CHATTR_NORMAL;