self.owner = world;
}
-void racer_worldimpact()
+void racer_impact()
{
- if(self.play_time < time)
if(autocvar_g_vehicle_racer_bouncepain_x)
- vehilces_worldimpact(autocvar_g_vehicle_racer_bouncepain_x, autocvar_g_vehicle_racer_bouncepain_y, autocvar_g_vehicle_racer_bouncepain_z);
-
+ vehilces_impact(autocvar_g_vehicle_racer_bouncepain_x, autocvar_g_vehicle_racer_bouncepain_y, autocvar_g_vehicle_racer_bouncepain_z);
}
void racer_spawn()
setsize(self, RACER_MIN * 0.5, RACER_MAX * 0.5);
self.bouncefactor = autocvar_g_vehicle_racer_bouncefactor;
self.bouncestop = autocvar_g_vehicle_racer_bouncestop;
- self.vehicle_worldimpact = racer_worldimpact;
+ self.vehicle_impact = racer_impact;
//self.destvec = autocvar_g_vehicle_racer_bouncepain;
}
VEHICLE_UPDATE_PLAYER(shield, raptor);
player.BUTTON_ATCK = player.BUTTON_ATCK2 = player.BUTTON_CROUCH = 0;
+
+ self = player;
return 1;
}
self.touch = raptor_blowup;
}
-void raptor_worldimpact()
+void raptor_impact()
{
- if(self.play_time < time)
if(autocvar_g_vehicle_raptor_bouncepain_x)
- vehilces_worldimpact(autocvar_g_vehicle_raptor_bouncepain_x, autocvar_g_vehicle_raptor_bouncepain_y, autocvar_g_vehicle_raptor_bouncepain_z);
+ vehilces_impact(autocvar_g_vehicle_raptor_bouncepain_x, autocvar_g_vehicle_raptor_bouncepain_y, autocvar_g_vehicle_raptor_bouncepain_z);
}
void raptor_spawn()
self.bouncefactor = autocvar_g_vehicle_raptor_bouncefactor;
self.bouncestop = autocvar_g_vehicle_raptor_bouncestop;
- self.vehicle_worldimpact = raptor_worldimpact;
+ self.vehicle_impact = raptor_impact;
}
// If we dont do this ever now and then, the raptors rotors
self.owner = world;
}
-void spider_worldimpact()
+void spider_impact()
{
- if(self.play_time < time)
if(autocvar_g_vehicle_spiderbot_bouncepain_x)
- vehilces_worldimpact(autocvar_g_vehicle_spiderbot_bouncepain_x, autocvar_g_vehicle_spiderbot_bouncepain_y, autocvar_g_vehicle_spiderbot_bouncepain_z);
+ vehilces_impact(autocvar_g_vehicle_spiderbot_bouncepain_x, autocvar_g_vehicle_spiderbot_bouncepain_y, autocvar_g_vehicle_spiderbot_bouncepain_z);
}
void spiderbot_spawn()
{
setorigin(self, self.pos1 + '0 0 128');
self.angles = self.pos2;
- self.vehicle_worldimpact = spider_worldimpact;
+ self.vehicle_impact = spider_impact;
}
void spiderbot_headfade()
return FALSE;
}
-void vehilces_worldimpact(float _minspeed, float _speedfac, float _maxpain)
-{
+void vehilces_impact(float _minspeed, float _speedfac, float _maxpain)
+{
+ if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
+ return;
+
if(self.play_time < time)
{
- float wc, take;
- wc = vlen(self.velocity - self.oldvelocity);
+ float wc = vlen(self.velocity - self.oldvelocity);
+ //dprint("oldvel: ", vtos(self.oldvelocity), "\n");
+ //dprint("vel: ", vtos(self.velocity), "\n");
if(_minspeed < wc)
{
- take = min(_speedfac * wc, _maxpain);
+ float take = take = min(_speedfac * wc, _maxpain);
Damage (self, world, world, take, DEATH_FALL, self.origin, '0 0 0');
self.play_time = time + 0.25;
- dprint("oldvel: ", vtos(self.oldvelocity), "\n");
- dprint("vel: ", vtos(self.velocity), "\n");
- dprint("wc: ", ftos(wc), "\n");
- dprint("take: ", ftos(take), "\n");
-
+ //dprint("wc: ", ftos(wc), "\n");
+ //dprint("take: ", ftos(take), "\n");
}
}
}
-.void() vehicle_worldimpact;
+.void() vehicle_impact;
void vehicles_touch()
{
// Vehicle currently in use
if(self.owner)
{
- // Colided with world?
- if(other == world)
- {
- if(self.vehicle_worldimpact)
- self.vehicle_worldimpact();
- }
- else
+ if(other != world)
+ if(vehicles_crushable(other))
{
- if(other.vehicle_flags & VHF_ISVEHICLE)
- {
- //other.velocity += self.velocity * (self.mass / other.mass);
- }
- else if(vehicles_crushable(other))
- {
- if(vlen(self.velocity) != 0)
- Damage(other, self, self.owner, autocvar_g_vehicles_crush_dmg, DEATH_VHCRUSH, '0 0 0', normalize(other.origin - self.origin) * autocvar_g_vehicles_crush_force);
- }
+ if(vlen(self.velocity) != 0)
+ Damage(other, self, self.owner, autocvar_g_vehicles_crush_dmg, DEATH_VHCRUSH, '0 0 0', normalize(other.origin - self.origin) * autocvar_g_vehicles_crush_force);
+
+ return; // Dont do selfdamage when hitting "soft targets".
}
+
+ if(self.play_time < time)
+ if(self.vehicle_impact)
+ self.vehicle_impact();
+
return;
}