(SubgameEntity ent, float[] g_offset, int damage,
boolean hyper, int effect, GameExportsImpl gameExports)
| 1401 | */ |
| 1402 | |
| 1403 | public static void Blaster_Fire(SubgameEntity ent, float[] g_offset, int damage, |
| 1404 | boolean hyper, int effect, GameExportsImpl gameExports) { |
| 1405 | float[] forward = { 0, 0, 0 }, right = { 0, 0, 0 }; |
| 1406 | float[] start = { 0, 0, 0 }; |
| 1407 | float[] offset = { 0, 0, 0 }; |
| 1408 | |
| 1409 | if (gameExports.is_quad) |
| 1410 | damage *= 4; |
| 1411 | gclient_t client = ent.getClient(); |
| 1412 | Math3D.AngleVectors(client.v_angle, forward, right, null); |
| 1413 | Math3D.VectorSet(offset, 24, 8, ent.viewheight - 8); |
| 1414 | Math3D.VectorAdd(offset, g_offset, offset); |
| 1415 | P_ProjectSource(client, ent.s.origin, offset, forward, right, start); |
| 1416 | |
| 1417 | Math3D.VectorScale(forward, -2, client.kick_origin); |
| 1418 | client.kick_angles[0] = -1; |
| 1419 | |
| 1420 | GameWeapon.fire_blaster(ent, start, forward, damage, 1000, effect, hyper, gameExports); |
| 1421 | |
| 1422 | // send muzzle flash |
| 1423 | final int flashType; |
| 1424 | if (hyper) |
| 1425 | flashType = Defines.MZ_HYPERBLASTER | gameExports.is_silenced; |
| 1426 | else |
| 1427 | flashType = Defines.MZ_BLASTER | gameExports.is_silenced; |
| 1428 | |
| 1429 | gameExports.gameImports.multicastMessage(ent.s.origin, new WeaponSoundMessage(ent.index, flashType), MulticastTypes.MULTICAST_PVS); |
| 1430 | |
| 1431 | PlayerWeapon.PlayerNoise(ent, start, GameDefines.PNOISE_WEAPON, gameExports); |
| 1432 | } |
| 1433 | |
| 1434 | /* |
| 1435 | * =============== |
no test coverage detected