void weapon_shotgun_fire (gentity_t *ent) { gentity_t *tent; // send shotgun blast tent = G_TempEntity( muzzle, EV_SHOTGUN ); VectorScale( forward, 4096, tent->s.origin2 ); SnapVector( tent->s.origin2 ); tent->s.otherEntityNum = ent->s.number; shotEnt = NULL; ShotgunPattern( tent->s.pos.trBase, tent->s.origin2, ent ); if ( shotEnt && shotEnt->takedamage && shotEnt->client && level.delagWeapons && shotEnt->client && !(ent->r.svFlags & SVF_BOT) ) { vec3_t delta; float distance; // compensate for lag effects VectorSubtract( shotEnt->r.currentOrigin, ent->r.currentOrigin, delta ); distance = VectorLength( delta ); VectorSubtract( shotEnt->client->saved.currentOrigin, shotEnt->r.currentOrigin, delta ); VectorMA( tent->s.origin2, 4096 / distance, delta, tent->s.origin2 ); SnapVector( tent->s.origin2 ); } }
void weapon_supershotgun_fire (gentity_t *ent) { gentity_t *tent; // send shotgun blast tent = G_TempEntity( muzzle, EV_SHOTGUN ); VectorScale( forward, 4096, tent->s.origin2 ); SnapVector( tent->s.origin2 ); tent->s.eventParm = 255; // seed for spread pattern tent->s.otherEntityNum = ent->s.number; ShotgunPattern( tent->s.pos.trBase, tent->s.origin2, tent->s.eventParm, ent ); }
void shotgunFire( gentity_t *ent ) { gentity_t *tent; // send shotgun blast tent = G_NewTempEntity( muzzle, EV_SHOTGUN ); VectorScale( forward, 4096, tent->s.origin2 ); SnapVector( tent->s.origin2 ); tent->s.eventParm = rand() / ( RAND_MAX / 0x100 + 1 ); // seed for spread pattern tent->s.otherEntityNum = ent->s.number; G_UnlaggedOn( ent, muzzle, SHOTGUN_RANGE ); ShotgunPattern( tent->s.pos.trBase, tent->s.origin2, tent->s.eventParm, ent ); G_UnlaggedOff(); }
void weapon_supershotgun_fire(Gentity *ent) { Gentity *tent; /* send shotgun blast */ tent = G_TempEntity(muzzle, EV_SHOTGUN); scalev3(forward, 4096, tent->s.origin2); snapv3(tent->s.origin2); tent->s.eventParm = rand() & 255; /* seed for spread pattern */ tent->s.otherEntityNum = ent->s.number; ShotgunPattern(tent->s.traj.base, tent->s.origin2, tent->s.eventParm, ent); }
void shotgunFire( gentity_t *ent ) { gentity_t *tent; // send shotgun blast tent = G_TempEntity( muzzle, EV_SHOTGUN ); VectorScale( forward, 4096, tent->s.origin2 ); SnapVector( tent->s.origin2 ); tent->s.eventParm = rand() & 255; // seed for spread pattern tent->s.otherEntityNum = ent->s.number; G_UnlaggedOn( muzzle, 8192 * 16 ); ShotgunPattern( tent->s.pos.trBase, tent->s.origin2, tent->s.eventParm, ent ); G_UnlaggedOff(); }
static void FireShotgun( gentity_t *self ) { gentity_t *tent; // instead of an EV_WEAPON_HIT_* event, send this so client can generate the same spread pattern tent = G_NewTempEntity( muzzle, EV_SHOTGUN ); VectorScale( forward, 4096, tent->s.origin2 ); SnapVector( tent->s.origin2 ); tent->s.eventParm = rand() / ( RAND_MAX / 0x100 + 1 ); // seed for spread pattern tent->s.otherEntityNum = self->s.number; // caclulate the pattern and do the damage G_UnlaggedOn( self, muzzle, SHOTGUN_RANGE ); ShotgunPattern( tent->s.pos.trBase, tent->s.origin2, tent->s.eventParm, self ); G_UnlaggedOff(); }
void weapon_supershotgun_fire (gentity_t *ent) { gentity_t *tent; // send shotgun blast tent = G_TempEntity( muzzle, EV_SHOTGUN ); VectorScale( forward, 4096, tent->s.origin2 ); SnapVector( tent->s.origin2 ); tent->s.eventParm = rand() & 255; // seed for spread pattern //unlagged - attack prediction #2 if ( g_unlagged.integer ) { // this has to be something the client can predict now tent->s.eventParm = ent->client->attackTime % 256; // seed for spread pattern } else { tent->s.eventParm = rand() & 255; // seed for spread pattern } //unlagged - attack prediction #2 tent->s.otherEntityNum = ent->s.number; ShotgunPattern( tent->s.pos.trBase, tent->s.origin2, tent->s.eventParm, ent ); }