(MuzzleFlash2Message mzzl)
| 510 | * ============== CL_ParseMuzzleFlash2 ============== |
| 511 | */ |
| 512 | static void ParseMuzzleFlash2(MuzzleFlash2Message mzzl) { |
| 513 | String soundname; |
| 514 | |
| 515 | int ent = mzzl.entityIndex; |
| 516 | if (ent < 1 || ent >= Defines.MAX_EDICTS) |
| 517 | Com.Error(Defines.ERR_DROP, "CL_ParseMuzzleFlash2: bad entity"); |
| 518 | |
| 519 | int flash_number = mzzl.flashType; |
| 520 | |
| 521 | // locate the origin |
| 522 | Math3D.AngleVectors(ClientGlobals.cl_entities[ent].current.angles, forward, right, null); |
| 523 | origin[0] = ClientGlobals.cl_entities[ent].current.origin[0] + forward[0] * M_Flash.monster_flash_offset[flash_number][0] + right[0] |
| 524 | * M_Flash.monster_flash_offset[flash_number][1]; |
| 525 | origin[1] = ClientGlobals.cl_entities[ent].current.origin[1] + forward[1] * M_Flash.monster_flash_offset[flash_number][0] + right[1] |
| 526 | * M_Flash.monster_flash_offset[flash_number][1]; |
| 527 | origin[2] = ClientGlobals.cl_entities[ent].current.origin[2] + forward[2] * M_Flash.monster_flash_offset[flash_number][0] + right[2] |
| 528 | * M_Flash.monster_flash_offset[flash_number][1] + M_Flash.monster_flash_offset[flash_number][2]; |
| 529 | |
| 530 | cdlight_t dl = AllocDlight(ent); |
| 531 | Math3D.VectorCopy(origin, dl.origin); |
| 532 | dl.radius = 200 + (Globals.rnd.nextInt() & 31); |
| 533 | dl.minlight = 32; |
| 534 | dl.die = ClientGlobals.cl.time; // + 0.1; |
| 535 | |
| 536 | switch (flash_number) { |
| 537 | case Defines.MZ2_INFANTRY_MACHINEGUN_1: |
| 538 | case Defines.MZ2_INFANTRY_MACHINEGUN_2: |
| 539 | case Defines.MZ2_INFANTRY_MACHINEGUN_3: |
| 540 | case Defines.MZ2_INFANTRY_MACHINEGUN_4: |
| 541 | case Defines.MZ2_INFANTRY_MACHINEGUN_5: |
| 542 | case Defines.MZ2_INFANTRY_MACHINEGUN_6: |
| 543 | case Defines.MZ2_INFANTRY_MACHINEGUN_7: |
| 544 | case Defines.MZ2_INFANTRY_MACHINEGUN_8: |
| 545 | case Defines.MZ2_INFANTRY_MACHINEGUN_9: |
| 546 | case Defines.MZ2_INFANTRY_MACHINEGUN_10: |
| 547 | case Defines.MZ2_INFANTRY_MACHINEGUN_11: |
| 548 | case Defines.MZ2_INFANTRY_MACHINEGUN_12: |
| 549 | case Defines.MZ2_INFANTRY_MACHINEGUN_13: |
| 550 | dl.color[0] = 1; |
| 551 | dl.color[1] = 1; |
| 552 | dl.color[2] = 0; |
| 553 | ParticleEffect(origin, Globals.vec3_origin, 0, 40); |
| 554 | CL_tent.SmokeAndFlash(origin); |
| 555 | S.StartSound(null, ent, Defines.CHAN_WEAPON, S.RegisterSound("infantry/infatck1.wav"), 1, Defines.ATTN_NORM, 0); |
| 556 | break; |
| 557 | |
| 558 | case Defines.MZ2_SOLDIER_MACHINEGUN_1: |
| 559 | case Defines.MZ2_SOLDIER_MACHINEGUN_2: |
| 560 | case Defines.MZ2_SOLDIER_MACHINEGUN_3: |
| 561 | case Defines.MZ2_SOLDIER_MACHINEGUN_4: |
| 562 | case Defines.MZ2_SOLDIER_MACHINEGUN_5: |
| 563 | case Defines.MZ2_SOLDIER_MACHINEGUN_6: |
| 564 | case Defines.MZ2_SOLDIER_MACHINEGUN_7: |
| 565 | case Defines.MZ2_SOLDIER_MACHINEGUN_8: |
| 566 | dl.color[0] = 1; |
| 567 | dl.color[1] = 1; |
| 568 | dl.color[2] = 0; |
| 569 | ParticleEffect(origin, Globals.vec3_origin, 0, 40); |
no test coverage detected