MCPcopy Create free account
hub / github.com/diasurgical/devilution / WeaponDur

Function WeaponDur

Source/player.cpp:2286–2357  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2284}
2285
2286BOOL 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) {

Callers 2

PM_DoAttackFunction · 0.85
PM_DoRangeAttackFunction · 0.85

Calls 4

random_Function · 0.85
app_fatalFunction · 0.85
NetSendCmdDelItemFunction · 0.85
CalcPlrInvFunction · 0.85

Tested by

no test coverage detected