cancel obj, possibly carried by you or a monster */
| 1236 | |
| 1237 | /* cancel obj, possibly carried by you or a monster */ |
| 1238 | void |
| 1239 | cancel_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 |
no test coverage detected