MCPcopy Create free account
hub / github.com/NetHack/NetHack / cancel_item

Function cancel_item

src/zap.c:1238–1362  ·  view source on GitHub ↗

cancel obj, possibly carried by you or a monster */

Source from the content-addressed store, hash-verified

1236
1237/* cancel obj, possibly carried by you or a monster */
1238void
1239cancel_item(struct obj *obj)
1240{
1241 int otyp = obj->otyp;
1242
1243 if (carried(obj)) {
1244 /* handle items being worn by hero */
1245 switch (otyp) {
1246 case RIN_GAIN_STRENGTH:
1247 if ((obj->owornmask & W_RING) != 0L) {
1248 ABON(A_STR) -= obj->spe;
1249 disp.botl = TRUE;
1250 }
1251 break;
1252 case RIN_GAIN_CONSTITUTION:
1253 if ((obj->owornmask & W_RING) != 0L) {
1254 ABON(A_CON) -= obj->spe;
1255 disp.botl = TRUE;
1256 }
1257 break;
1258 case RIN_ADORNMENT:
1259 if ((obj->owornmask & W_RING) != 0L) {
1260 ABON(A_CHA) -= obj->spe;
1261 disp.botl = TRUE;
1262 }
1263 break;
1264 case RIN_INCREASE_ACCURACY:
1265 if ((obj->owornmask & W_RING) != 0L)
1266 u.uhitinc -= obj->spe;
1267 break;
1268 case RIN_INCREASE_DAMAGE:
1269 if ((obj->owornmask & W_RING) != 0L)
1270 u.udaminc -= obj->spe;
1271 break;
1272 case RIN_PROTECTION:
1273 if ((obj->owornmask & W_RING) != 0L)
1274 disp.botl = TRUE;
1275 break;
1276 case GAUNTLETS_OF_DEXTERITY:
1277 if ((obj->owornmask & W_ARMG) != 0L) {
1278 ABON(A_DEX) -= obj->spe;
1279 disp.botl = TRUE;
1280 }
1281 break;
1282 case HELM_OF_BRILLIANCE:
1283 if ((obj->owornmask & W_ARMH) != 0L) {
1284 ABON(A_INT) -= obj->spe;
1285 ABON(A_WIS) -= obj->spe;
1286 disp.botl = TRUE;
1287 }
1288 break;
1289 default:
1290 if ((obj->owornmask & W_ARMOR) != 0L) /* AC */
1291 disp.botl = TRUE;
1292 break;
1293 }
1294 }
1295 /* cancelled item might not be in hero's possession but

Callers 2

bhitoFunction · 0.85
cancel_monstFunction · 0.85

Calls 8

costly_alterationFunction · 0.85
blank_novelFunction · 0.85
obj_to_anyFunction · 0.85
peek_timerFunction · 0.85
stop_timerFunction · 0.85
start_timerFunction · 0.85
unblessFunction · 0.85
uncurseFunction · 0.85

Tested by

no test coverage detected