…and replace all references to mons_res_foo() with res_foo(). Where "foo" is one of the many different things monsters can resist that happened to have a function of that format.
TGfR! (Thank God for Regex!)
Signed-off-by: Robert Vollmert <rvollmert@gmx.net>
4I6DI5BZ4OTBYZCR2FT226PI3WJFJHL3YXPVELPDDMX4MHL5IUXAC
XAFYT4W6V7C47S6N7E52YTPQV6BUOOHCXNTXD7I2DYGED5HAVTTAC
HVBIFFGMVMU3J6SCKE5277427L6EMV4WZXI7XXJBE4RBQVBSZILAC
27TTAENBISK4C2N2SWCEEWCGKM3J452ZXHL4LAE7REMDAQXEBJVQC
VBLQFLLGYJYCYOZRYQORQX2YGULJJ7T6IQBHTSTFH536IR3SXSAQC
6KNLZ3K5VMPGGO2WVAW5MC76J3GEEMJDLPUIHIZQXGHX6P56DXDAC
4HA53ET5DT6L6OXZ2GCP3JQ4WUJSXHRKHFDQ4SKOIVNGPTGIHQUQC
OCIBK2NBMT2VBN7UWK5H24J3HUJHQV5BWUIJQW7CKLDTXMXZSWVAC
Y33EE4Z2NFWA2UM2KBSDNBTVKPDPTEA5N2NZXVDI442K5WXADNSAC
ASXBSZVXJCWVX5VQSRWXL5BWQ4NA7JLYXP6LWQTRGYW6DC2DZZPQC
KATZLWENEIQMKKWIV4ZLXJ5HFUW6SU5K4ZU6NENBOL4XAAVTDUKAC
HB27XKFYVYIEQZGBCEZ6LKPUBMXLIPDAAS636GJ5TULIQ7KND5KQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
UJMQZDP3ZBWXZICQ47JRNNR73BUP4OGLOKW66INUFPBFDBL7YSPQC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
ZB5MLJOVFY2ZULUWA237VLTIJONQOW2QMOEB4O3WRQRJK4QWYOZQC
66A23OYT2NMU3M2NIOKNAKM5MQVOVRTOCXYB7BALJPB7CRIPQZLAC
4672347M2OUNNY45GNM3UZRZMP2FWO2I3LMWIEXTO47S2F6LHHIQC
6O47K6HB324PF6GFUVSE7W6AE2DFITU6ZTM5VJGT3PXSTCLAHXOQC
PCD4U3T32DRY6DNUXP6VEESUPOY72NN42KY6KWPEMSFUU5NOFKYAC
EYHC4V76YSCWY22DQIXLVTAP5SKZLBSBQWYFPDVEXF6IW552HR5QC
S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC
LG7XJWUXOV4ZBMOTZX7R5NUC5IONVNCF5O42M4QVYLHNZ62AV25AC
CLBOD3ANEMCQTE6USMTZAH4UWNLB73AIT3ZCDHLUUTMLQTCZJ4GAC
V3YASGPC7MVXZE75XX7YQ7U6LFEJDNCTQA6NMI6R5TB5KEZH4RCQC
IYMUEJG2VI3TV7HVAZIU2L4DVQY7VNSIFVV4I3QIVP7H66EVJISAC
NNG27Y5ZQAZX6UD7F7M4F6KEZBEDFXPEEC3LFUSX4ESKT7K6UJQAC
TGMLNXYRQPKRNQLMRQYRF2SPMB7SREC5N3H5QXT3UYSSY7UCTLCAC
C67GX7W5HBCDPQJRSHWMLM4DUJ3ELFSHH42SVICFJVCJW25T5Z3AC
LJFI2JIGND5STQQXWGFQ75YLPW34PSHGJGZBHYG5ZVYMO7FZYOYAC
47NSOFQMBZCDIBHEAZSENFUGDSQCX3GJHFBUZ65ARDKCYIZ435LAC
23I5KJ245D43B6QYWS4TDQYJO2W2PKTDCLFBWPVAFDWS6L7NMGKQC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
SJDOBXECX7F3ZPPVR7FPURE53D47PP2TFIF4SB6XPS456PZV3DQAC
PFEJ4LMDNEKLMGRCMWQ7EIRVU4JMYGICI4G7X4WVWOROVXQCBZ7QC
TJ72NVTRNJKF55RTH5MRLTHHVPOJ2M5OOYEWF4UFLTO2PPPTU6PQC
6TQASFI7B552ZNCBVI7AS3MMMACNTGEJESTB74EFCH2MJGH5LW3AC
IZ2FRVXI5H4TXLFZETEZEDBBC4KKSS7F4W6NWAZ37L7B6HU7HXKAC
KDK4YJQS4P7HRB334SZ3EFCW27AEGRPE3PXW6S6TKRIG6HLOKQNAC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
ADIVVYTV2MJ3XVRYDNBLPTAEACCNF27XZDCRVZFQEHRHPMZGNITQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
WVKP2MFDE56ZO3OI7FCEKE5LI3MAUIL6IDTUW6MEBCV5OWF4OKEAC
DCD5TZTIZ2JNYXJT22YSIS7FPOSUEUUV3B7GSY2DWP2NSVLXAVQAC
RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC
FAVME2A2U4OUKN2BTISAG5PCI5Y4BN6YVFKCSQQHHZLEVVVF4LKAC
UWI3ZNJDRQRL7CXFNFEG46TA6SAK24XUFY5YOKVOTJA3VG3OBNFAC
ZWBPR3CERTLNVE7MNKMLFHCZA7U2VXLV3W7X7DBATGZZI2S2YV4QC
4Q5OYUKF2SGF7WHMIVYFZVXXDCFUCYY534VLOGKWYRSPYKRXMVDAC
UDFLMJBZ6KY6Z33MSHVFJBOI6JH6WXVPSQK6PUZLXJ76TIQNHPHAC
J4DJEUCVC76RZYRYC77TJWS6OFT62IJNDVU2YTAIX23QFESJXHHAC
VK3LNDA3TXEPBMLDWBTEBDOZMPP3YUED3A624XMHWI6FI7LP3HGAC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
3LBVOBA2BOYLMSZPC47WGOMCRFCZ3AOYG4675W7F3N6Z2ESNFZQAC
7TW2ZEZ6DTENSGICHJBGYKZW4B5DORQLRIHVOT5ZAIDJFCBJOIOQC
ZNGET7722J4PJXQM7IISUIIUFGB6D7WBD4IXR4QQENHERHXOG7KQC
U7JRZNFGHRV7T3NIB7DY5OZOYDJRUCENBGVY25FJNZHH42VGZFEAC
NGYDCXRTQ4LRZC2A4DMLD63PPU65PN6ZGCAUD3S3HVBXU6TFLY7AC
RLHYD2BIXELGP4XRXCIFSCYJEHLO4YL45DU77WQAZL7ZU6UBLWEQC
HE3D6YNIZOLTMT7TCUPL7GMHNYOUUF6B7357F6K5PKXTVDOEDI6AC
BR4UJTJEP76VHWKMNCRIQAIBHH4XWRNTXYQU4POSNLMSND65MMHAC
PWY4VZVHDLYL7UVNCCOW7BM7LYK2BOGTL23P75HXUJ33MHJPEJPQC
634UBQG7RYANZYTNHYLPHMXXO3FUJYUVHGFSK53TH6572QDVUOBQC
6LTQT4CP7LJZLAE7JTPQ4OT4JOG3IFYM7RNXL3FINKBFO6452DTAC
3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
GE7XFWXEYNZXWNCKWHBHYIBSYQPZMBAE43PN7RW4B7WOCJKM7DZQC
T7CUIVICB74342RA32BR37T36FOX4RBSQIB5PNOHTGTGUYGDKSTQC
5FHWTG7M6FW4B3I33YI7QSM3OZIB6ZGC6TI6JISSLY5Y43HI56VAC
P4KV3XKK2NCQAUPCMTHJPSA2FETTBY5WOMCVP4IFMNJZABEQWKWQC
IXEEKYV5WQQFMWSWPD53HXPEZTBL4FCPJCSBFBBNG2I7JHRE4QEAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
TBXBRCAS7AFZCWERO77ZIPUORPNX747YLK73B4MPFBR7XXMQO6GAC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
PR42BCP5BPRFD2MP5H6CIJP7E57Q6TKL6SOXZWFKMFVR2OZWHT7AC
PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC
JDIK6Y6PQBNY4C7XGSTUDWNDHP3KUEV54SGWOBLVUHNE4H674TEQC
SUIDQIK6BZDJSYSFG6AK5A6K76EKGPKBKGGRCIU2AN6XOTCUHOBAC
3JKKL6VSKQHBBTKEBSADZVCNXZLL4S6KN2W7G2CY5OBOMMUTIWXQC
46I36AWFYIFDOUPKFEMJSJTPQ27CQP7FNKOLT3ZOBUI6SF4EL7RQC
K33CV7EYR37TTSEXQWQ6QPHSEUFO545AIPUZOA2C47QTUCUWFPAAC
RIMJO42HB75SAZH44KZ2UH2QULOPIJLMEN4CR2CYNR2EKEKLFHSQC
QLEBDRVUQ3BMCT7LV4EBPG7T5X4KMQJAVLMLHHB7DRCNNGDQBRNQC
UADYVV3UD5ERJTZZJGY4EUQ4NJ2JSBG7YYUJ75ZRBIXRQXQKOJPAC
ZI7643NG3LOKVSDXHFNV2YU3ZIQUVEY25AOXZCPBXJB5SQAUCE6QC
int mons_res_cold(const monsters *mon);
int mons_res_elec(const monsters *mon);
int mons_res_fire(const monsters *mon);
int mons_res_steam(const monsters *mon);
int mons_res_poison(const monsters *mon);
int mons_res_asphyx(const monsters *mon);
int mons_res_sticky_flame(const monsters *mon);
int mons_res_rotting(const monsters *mon);
int mons_res_acid(const monsters *mon);
int mons_res_negative_energy(const monsters *mon);
}
int mons_res_elec(const monsters *mon)
{
// This is a variable, not a player_xx() function, so can be above 1.
int u = 0;
u += get_mons_resists(mon).elec;
// Don't bother checking equipment if the monster can't use it.
if (mons_itemuse(mon) >= MONUSE_STARTING_EQUIPMENT)
{
u += _scan_mon_inv_randarts(mon, ARTP_ELECTRICITY);
// No ego armour, but storm dragon.
const int armour = mon->inv[MSLOT_ARMOUR];
if (armour != NON_ITEM && mitm[armour].base_type == OBJ_ARMOUR
&& mitm[armour].sub_type == ARM_STORM_DRAGON_ARMOUR)
{
u += 1;
}
}
// Monsters can legitimately get multiple levels of electricity resistance.
return (u);
}
int mons_res_acid(const monsters *mon)
{
return (get_mons_resists(mon).acid);
}
int mons_res_poison(const monsters *mon)
{
int u = get_mons_resists(mon).poison;
if (mons_itemuse(mon) >= MONUSE_STARTING_EQUIPMENT)
{
u += _scan_mon_inv_randarts( mon, ARTP_POISON );
const int armour = mon->inv[MSLOT_ARMOUR];
const int shield = mon->inv[MSLOT_SHIELD];
if (armour != NON_ITEM && mitm[armour].base_type == OBJ_ARMOUR)
{
// intrinsic armour abilities
switch (mitm[armour].sub_type)
{
case ARM_SWAMP_DRAGON_ARMOUR: u += 1; break;
case ARM_GOLD_DRAGON_ARMOUR: u += 1; break;
default: break;
}
// ego armour resistance
if (get_armour_ego_type(mitm[armour]) == SPARM_POISON_RESISTANCE)
u += 1;
}
if (shield != NON_ITEM && mitm[shield].base_type == OBJ_ARMOUR)
{
// ego armour resistance
if (get_armour_ego_type(mitm[shield]) == SPARM_POISON_RESISTANCE)
u += 1;
}
}
// Monsters can legitimately get multiple levels of poison resistance.
return (u);
int mons_res_asphyx(const monsters *mon)
{
int res = get_mons_resists(mon).asphyx;
const mon_holy_type holiness = mons_holiness(mon);
if (mons_is_unholy(mon)
|| holiness == MH_NONLIVING
|| holiness == MH_PLANT)
{
res += 1;
}
return (res);
}
int mons_res_sticky_flame(const monsters *mon)
{
int res = get_mons_resists(mon).sticky_flame;
if (mon->has_equipped(EQ_BODY_ARMOUR, ARM_MOTTLED_DRAGON_ARMOUR))
res += 1;
return (res);
}
int mons_res_rotting(const monsters *mon)
{
int res = get_mons_resists(mon).rotting;
if (mons_holiness(mon) != MH_NATURAL)
res += 1;
return (res);
}
int mons_res_steam(const monsters *mon)
{
int res = get_mons_resists(mon).steam;
if (mon->has_equipped(EQ_BODY_ARMOUR, ARM_STEAM_DRAGON_ARMOUR))
res += 3;
return (res + mons_res_fire(mon) / 2);
}
int mons_res_fire(const monsters *mon)
{
const mon_resist_def res = get_mons_resists(mon);
int u = std::min(res.fire + res.hellfire * 3, 3);
if (mons_itemuse(mon) >= MONUSE_STARTING_EQUIPMENT)
{
u += _scan_mon_inv_randarts(mon, ARTP_FIRE);
const int armour = mon->inv[MSLOT_ARMOUR];
const int shield = mon->inv[MSLOT_SHIELD];
if (armour != NON_ITEM && mitm[armour].base_type == OBJ_ARMOUR)
{
// intrinsic armour abilities
switch (mitm[armour].sub_type)
{
case ARM_DRAGON_ARMOUR: u += 2; break;
case ARM_GOLD_DRAGON_ARMOUR: u += 1; break;
case ARM_ICE_DRAGON_ARMOUR: u -= 1; break;
default: break;
}
// check ego resistance
const int ego = get_armour_ego_type(mitm[armour]);
if (ego == SPARM_FIRE_RESISTANCE || ego == SPARM_RESISTANCE)
u += 1;
}
if (shield != NON_ITEM && mitm[shield].base_type == OBJ_ARMOUR)
{
// check ego resistance
const int ego = get_armour_ego_type(mitm[shield]);
if (ego == SPARM_FIRE_RESISTANCE || ego == SPARM_RESISTANCE)
u += 1;
}
}
if (u < -3)
u = -3;
else if (u > 3)
u = 3;
return (u);
}
int mons_res_cold(const monsters *mon)
{
int u = get_mons_resists(mon).cold;
if (mons_itemuse(mon) >= MONUSE_STARTING_EQUIPMENT)
{
u += _scan_mon_inv_randarts(mon, ARTP_COLD);
const int armour = mon->inv[MSLOT_ARMOUR];
const int shield = mon->inv[MSLOT_SHIELD];
if (armour != NON_ITEM && mitm[armour].base_type == OBJ_ARMOUR)
{
// intrinsic armour abilities
switch (mitm[armour].sub_type)
{
case ARM_ICE_DRAGON_ARMOUR: u += 2; break;
case ARM_GOLD_DRAGON_ARMOUR: u += 1; break;
case ARM_DRAGON_ARMOUR: u -= 1; break;
default: break;
}
// check ego resistance
const int ego = get_armour_ego_type(mitm[armour]);
if (ego == SPARM_COLD_RESISTANCE || ego == SPARM_RESISTANCE)
u += 1;
}
if (shield != NON_ITEM && mitm[shield].base_type == OBJ_ARMOUR)
{
// check ego resistance
const int ego = get_armour_ego_type(mitm[shield]);
if (ego == SPARM_COLD_RESISTANCE || ego == SPARM_RESISTANCE)
u += 1;
}
}
if (u < -3)
u = -3;
else if (u > 3)
u = 3;
return (u);
}
int mons_res_negative_energy(const monsters *mon)
{
if (mons_holiness(mon) != MH_NATURAL
|| mon->type == MONS_SHADOW_DRAGON)
{
return (3);
}
int u = 0;
if (mons_itemuse(mon) >= MONUSE_STARTING_EQUIPMENT)
{
u += _scan_mon_inv_randarts(mon, ARTP_NEGATIVE_ENERGY);
const int armour = mon->inv[MSLOT_ARMOUR];
const int shield = mon->inv[MSLOT_SHIELD];
if (armour != NON_ITEM && mitm[armour].base_type == OBJ_ARMOUR)
{
// check for ego resistance
if (get_armour_ego_type(mitm[armour]) == SPARM_POSITIVE_ENERGY)
u += 1;
}
if (shield != NON_ITEM && mitm[shield].base_type == OBJ_ARMOUR)
{
// check for ego resistance
if (get_armour_ego_type(mitm[shield]) == SPARM_POSITIVE_ENERGY)
u += 1;
}
}
if (u > 3)
u = 3;
return (u);
}
return (mons_res_fire(this));
const mon_resist_def res = get_mons_resists(this);
int u = std::min(res.fire + res.hellfire * 3, 3);
if (mons_itemuse(this) >= MONUSE_STARTING_EQUIPMENT)
{
u += _scan_mon_inv_randarts(this, ARTP_FIRE);
const int armour = inv[MSLOT_ARMOUR];
const int shield = inv[MSLOT_SHIELD];
if (armour != NON_ITEM && mitm[armour].base_type == OBJ_ARMOUR)
{
// intrinsic armour abilities
switch (mitm[armour].sub_type)
{
case ARM_DRAGON_ARMOUR: u += 2; break;
case ARM_GOLD_DRAGON_ARMOUR: u += 1; break;
case ARM_ICE_DRAGON_ARMOUR: u -= 1; break;
default: break;
}
// check ego resistance
const int ego = get_armour_ego_type(mitm[armour]);
if (ego == SPARM_FIRE_RESISTANCE || ego == SPARM_RESISTANCE)
u += 1;
}
if (shield != NON_ITEM && mitm[shield].base_type == OBJ_ARMOUR)
{
// check ego resistance
const int ego = get_armour_ego_type(mitm[shield]);
if (ego == SPARM_FIRE_RESISTANCE || ego == SPARM_RESISTANCE)
u += 1;
}
}
if (u < -3)
u = -3;
else if (u > 3)
u = 3;
return (u);
return (mons_res_cold(this));
int u = get_mons_resists(this).cold;
if (mons_itemuse(this) >= MONUSE_STARTING_EQUIPMENT)
{
u += _scan_mon_inv_randarts(this, ARTP_COLD);
const int armour = inv[MSLOT_ARMOUR];
const int shield = inv[MSLOT_SHIELD];
if (armour != NON_ITEM && mitm[armour].base_type == OBJ_ARMOUR)
{
// intrinsic armour abilities
switch (mitm[armour].sub_type)
{
case ARM_ICE_DRAGON_ARMOUR: u += 2; break;
case ARM_GOLD_DRAGON_ARMOUR: u += 1; break;
case ARM_DRAGON_ARMOUR: u -= 1; break;
default: break;
}
// check ego resistance
const int ego = get_armour_ego_type(mitm[armour]);
if (ego == SPARM_COLD_RESISTANCE || ego == SPARM_RESISTANCE)
u += 1;
}
if (shield != NON_ITEM && mitm[shield].base_type == OBJ_ARMOUR)
{
// check ego resistance
const int ego = get_armour_ego_type(mitm[shield]);
if (ego == SPARM_COLD_RESISTANCE || ego == SPARM_RESISTANCE)
u += 1;
}
}
if (u < -3)
u = -3;
else if (u > 3)
u = 3;
return (u);
return (mons_res_elec(this));
// This is a variable, not a player_xx() function, so can be above 1.
int u = 0;
u += get_mons_resists(this).elec;
// Don't bother checking equipment if the monster can't use it.
if (mons_itemuse(this) >= MONUSE_STARTING_EQUIPMENT)
{
u += _scan_mon_inv_randarts(this, ARTP_ELECTRICITY);
// No ego armour, but storm dragon.
const int armour = inv[MSLOT_ARMOUR];
if (armour != NON_ITEM && mitm[armour].base_type == OBJ_ARMOUR
&& mitm[armour].sub_type == ARM_STORM_DRAGON_ARMOUR)
{
u += 1;
}
}
// Monsters can legitimately get multiple levels of electricity resistance.
return (u);
return (mons_res_poison(this));
int u = get_mons_resists(this).poison;
if (mons_itemuse(this) >= MONUSE_STARTING_EQUIPMENT)
{
u += _scan_mon_inv_randarts( this, ARTP_POISON );
const int armour = mon->inv[MSLOT_ARMOUR];
const int shield = mon->inv[MSLOT_SHIELD];
if (armour != NON_ITEM && mitm[armour].base_type == OBJ_ARMOUR)
{
// intrinsic armour abilities
switch (mitm[armour].sub_type)
{
case ARM_SWAMP_DRAGON_ARMOUR: u += 1; break;
case ARM_GOLD_DRAGON_ARMOUR: u += 1; break;
default: break;
}
// ego armour resistance
if (get_armour_ego_type(mitm[armour]) == SPARM_POISON_RESISTANCE)
u += 1;
}
if (shield != NON_ITEM && mitm[shield].base_type == OBJ_ARMOUR)
{
// ego armour resistance
if (get_armour_ego_type(mitm[shield]) == SPARM_POISON_RESISTANCE)
u += 1;
}
}
// Monsters can legitimately get multiple levels of poison resistance.
return (u);
return (mons_res_negative_energy(this));
if (mons_holiness(this) != MH_NATURAL
|| type == MONS_SHADOW_DRAGON)
{
return (3);
}
int u = 0;
if (mons_itemuse(this) >= MONUSE_STARTING_EQUIPMENT)
{
u += _scan_mon_inv_randarts(this, ARTP_NEGATIVE_ENERGY);
const int armour = mon->inv[MSLOT_ARMOUR];
const int shield = mon->inv[MSLOT_SHIELD];
if (armour != NON_ITEM && mitm[armour].base_type == OBJ_ARMOUR)
{
// check for ego resistance
if (get_armour_ego_type(mitm[armour]) == SPARM_POSITIVE_ENERGY)
u += 1;
}
if (shield != NON_ITEM && mitm[shield].base_type == OBJ_ARMOUR)
{
// check for ego resistance
if (get_armour_ego_type(mitm[shield]) == SPARM_POSITIVE_ENERGY)
u += 1;
}
}
if (u > 3)
u = 3;
return (u);
mons_res_fire( &mons ),
mons_res_cold( &mons ),
mons_res_elec( &mons ),
mons_res_poison( &mons ),
mons_res_negative_energy( &mons ),
mons_res_acid( &mons ),
mons_res_sticky_flame( &mons ) ? "yes" : "no",
mons_res_rotting( &mons ) ? "yes" : "no");
mons.res_fire(),
mons.res_cold(),
mons.res_elec(),
mons.res_poison(),
mons.res_negative_energy(),
mons.res_acid(),
mons.res_sticky_flame() ? "yes" : "no",
mons.res_rotting() ? "yes" : "no");