Drop items and weapons in deathmatch games.
(SubgameEntity self, GameExportsImpl gameExports)
| 1345 | * Drop items and weapons in deathmatch games. |
| 1346 | */ |
| 1347 | public static void TossClientWeapon(SubgameEntity self, GameExportsImpl gameExports) { |
| 1348 | |
| 1349 | if (gameExports.gameCvars.deathmatch.value == 0) |
| 1350 | return; |
| 1351 | |
| 1352 | gclient_t client = self.getClient(); |
| 1353 | GameItem item = client.pers.weapon; |
| 1354 | if (0 == client.pers.inventory[client.ammo_index]) |
| 1355 | item = null; |
| 1356 | if (item != null && ("Blaster".equals(item.pickup_name))) |
| 1357 | item = null; |
| 1358 | |
| 1359 | boolean quad; |
| 1360 | if (0 == ((int) (gameExports.gameCvars.dmflags.value) & Defines.DF_QUAD_DROP)) |
| 1361 | quad = false; |
| 1362 | else |
| 1363 | quad = (client.quad_framenum > (gameExports.level.framenum + 10)); |
| 1364 | |
| 1365 | float spread; |
| 1366 | if (item != null && quad) |
| 1367 | spread = 22.5f; |
| 1368 | else |
| 1369 | spread = 0.0f; |
| 1370 | |
| 1371 | SubgameEntity drop; |
| 1372 | if (item != null) { |
| 1373 | client.v_angle[Defines.YAW] -= spread; |
| 1374 | drop = GameItems.Drop_Item(self, item, gameExports); |
| 1375 | client.v_angle[Defines.YAW] += spread; |
| 1376 | drop.spawnflags = GameDefines.DROPPED_PLAYER_ITEM; |
| 1377 | } |
| 1378 | |
| 1379 | if (quad) { |
| 1380 | client.v_angle[Defines.YAW] += spread; |
| 1381 | drop = GameItems.Drop_Item(self, GameItems |
| 1382 | .FindItemByClassname("item_quad", gameExports), gameExports); |
| 1383 | client.v_angle[Defines.YAW] -= spread; |
| 1384 | drop.spawnflags |= GameDefines.DROPPED_PLAYER_ITEM; |
| 1385 | |
| 1386 | drop.touch = GameItems.Touch_Item; |
| 1387 | drop.think.nextTime = gameExports.level.time |
| 1388 | + (client.quad_framenum - gameExports.level.framenum) |
| 1389 | * Defines.FRAMETIME; |
| 1390 | drop.think.action = GameUtil.G_FreeEdictA; |
| 1391 | } |
| 1392 | } |
| 1393 | } |
no test coverage detected