| 2284 | } |
| 2285 | |
| 2286 | BOOL WeaponDur(int pnum, int durrnd) |
| 2287 | { |
| 2288 | if (pnum != myplr) { |
| 2289 | return FALSE; |
| 2290 | } |
| 2291 | |
| 2292 | if (random_(3, durrnd) != 0) { |
| 2293 | return FALSE; |
| 2294 | } |
| 2295 | |
| 2296 | if ((DWORD)pnum >= MAX_PLRS) { |
| 2297 | app_fatal("WeaponDur: illegal player %d", pnum); |
| 2298 | } |
| 2299 | |
| 2300 | if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype != ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_LEFT]._iClass == ICLASS_WEAPON) { |
| 2301 | if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._iDurability == DUR_INDESTRUCTIBLE) { |
| 2302 | return FALSE; |
| 2303 | } |
| 2304 | |
| 2305 | plr[pnum].InvBody[INVLOC_HAND_LEFT]._iDurability--; |
| 2306 | if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._iDurability == 0) { |
| 2307 | NetSendCmdDelItem(TRUE, INVLOC_HAND_LEFT); |
| 2308 | plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype = ITYPE_NONE; |
| 2309 | CalcPlrInv(pnum, TRUE); |
| 2310 | return TRUE; |
| 2311 | } |
| 2312 | } |
| 2313 | |
| 2314 | if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype != ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iClass == ICLASS_WEAPON) { |
| 2315 | if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iDurability == DUR_INDESTRUCTIBLE) { |
| 2316 | return FALSE; |
| 2317 | } |
| 2318 | |
| 2319 | plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iDurability--; |
| 2320 | if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iDurability == 0) { |
| 2321 | NetSendCmdDelItem(TRUE, INVLOC_HAND_RIGHT); |
| 2322 | plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype = ITYPE_NONE; |
| 2323 | CalcPlrInv(pnum, TRUE); |
| 2324 | return TRUE; |
| 2325 | } |
| 2326 | } |
| 2327 | |
| 2328 | if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD) { |
| 2329 | if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iDurability == DUR_INDESTRUCTIBLE) { |
| 2330 | return FALSE; |
| 2331 | } |
| 2332 | |
| 2333 | plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iDurability--; |
| 2334 | if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._iDurability == 0) { |
| 2335 | NetSendCmdDelItem(TRUE, INVLOC_HAND_RIGHT); |
| 2336 | plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype = ITYPE_NONE; |
| 2337 | CalcPlrInv(pnum, TRUE); |
| 2338 | return TRUE; |
| 2339 | } |
| 2340 | } |
| 2341 | |
| 2342 | if (plr[pnum].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE && plr[pnum].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SHIELD) { |
| 2343 | if (plr[pnum].InvBody[INVLOC_HAND_LEFT]._iDurability == DUR_INDESTRUCTIBLE) { |
no test coverage detected