| 589 | vector<hitmsg> hits; |
| 590 | |
| 591 | void hit(int damage, playerent *d, playerent *at, const vec &vel, int gun, bool gib, int info) |
| 592 | { |
| 593 | if(d==player1 || d->type==ENT_BOT || !m_mp(gamemode)) d->hitpush(damage, vel, at, gun); |
| 594 | |
| 595 | if(at == player1 && d != player1) |
| 596 | { |
| 597 | extern int hitsound; |
| 598 | extern int lasthit; |
| 599 | if(hitsound == 2 && lasthit != lastmillis) |
| 600 | { |
| 601 | defformatstring(hitsnd)("sound %d %d;", S_HITSOUND, SP_HIGHEST); |
| 602 | addsleep(60, hitsnd); |
| 603 | lasthit = lastmillis; |
| 604 | } |
| 605 | } |
| 606 | |
| 607 | if(!m_mp(gamemode)) dodamage(damage, d, at, gun, gib); |
| 608 | else |
| 609 | { |
| 610 | hitmsg &h = hits.add(); |
| 611 | h.target = d->clientnum; |
| 612 | h.lifesequence = d->lifesequence; |
| 613 | h.info = info; |
| 614 | if(d==player1) |
| 615 | { |
| 616 | h.dir = ivec(0, 0, 0); |
| 617 | d->damageroll(damage); |
| 618 | if(d != at) updatedmgindicator(player1, at->o); |
| 619 | damageblend(damage, d); |
| 620 | damageeffect(damage, d); |
| 621 | audiomgr.playsound(S_PAIN6, SP_HIGH); |
| 622 | } |
| 623 | else |
| 624 | { |
| 625 | h.dir = ivec(int(vel.x*DNF), int(vel.y*DNF), int(vel.z*DNF)); |
| 626 | // damageeffect(damage, d); |
| 627 | // audiomgr.playsound(S_PAIN1+rnd(5), d); |
| 628 | } |
| 629 | } |
| 630 | } |
| 631 | |
| 632 | void hitpush(int damage, playerent *d, playerent *at, vec &from, vec &to, int gun, bool gib, int info) |
| 633 | { |
no test coverage detected