float autocvar_g_nix_with_powerups;
float autocvar_g_nodepthtestitems;
float autocvar_g_nodepthtestplayers;
+float autocvar_g_norecoil;
float autocvar_g_onslaught_cp_buildhealth;
float autocvar_g_onslaught_cp_buildtime;
float autocvar_g_onslaught_cp_health;
self.angles_z = 0;
}
+ if(self.flags & FL_ONGROUND)
+ if(IS_PLAYER(self)) // no fall sounds for observers thank you very much
+ if(self.wasFlying)
+ {
+ self.wasFlying = 0;
+
+ if(self.waterlevel < WATERLEVEL_SWIMMING)
+ if(time >= self.ladder_time)
+ if not(self.hook)
+ {
+ self.nextstep = time + 0.3 + random() * 0.1;
+ trace_dphitq3surfaceflags = 0;
+ tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
+ if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
+ {
+ if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
+ GlobalSound(globalsound_metalfall, CH_PLAYER, VOICETYPE_PLAYERSOUND);
+ else
+ GlobalSound(globalsound_fall, CH_PLAYER, VOICETYPE_PLAYERSOUND);
+ }
+ }
+ }
+
if(IsFlying(self))
self.wasFlying = 1;
ent.dphitcontentsmask = oldsolid; // restore solid type (generally SOLID_SLIDEBOX)
- ent.punchangle_x = recoil * -1;
+ if (!autocvar_g_norecoil)
+ ent.punchangle_x = recoil * -1;
if (snd != "")
{
// Globals
-float g_cloaked, g_grappling_hook, g_minstagib;
+float g_cloaked, g_footsteps, g_grappling_hook, g_minstagib;
float g_warmup_limit;
float g_warmup_allguns;
float g_warmup_allow_timeout;
.float in_swamp; // bool
.entity swampslug; // Uses this to release from swamp ("untouch" fix)
+// footstep interval
+.float nextstep;
+
float blockSpectators; //if set, new or existing spectators or observers will be removed unless they become a player within g_maxplayers_spectator_blocktime seconds
.float spectatortime; //point in time since the client is spectating or observing
void checkSpectatorBlock();
if(autocvar_g_weaponarena != "0")
s = strcat(s, ":", autocvar_g_weaponarena, " arena");
+ // TODO to mutator system
+ if(autocvar_g_norecoil)
+ s = strcat(s, ":norecoil");
+
// TODO to mutator system
if(autocvar_g_powerups == 0)
s = strcat(s, ":no_powerups");
CHECK_MUTATOR_ADD("g_midair", mutator_midair, 1);
CHECK_MUTATOR_ADD("g_bloodloss", mutator_bloodloss, !cvar("g_minstagib"));
CHECK_MUTATOR_ADD("g_random_gravity", mutator_random_gravity, 1);
- CHECK_MUTATOR_ADD("g_norecoil", mutator_norecoil, 1);
CHECK_MUTATOR_ADD("g_multijump", mutator_multijump, 1);
- CHECK_MUTATOR_ADD("g_footsteps", mutator_footsteps, 1);
CHECK_MUTATOR_ADD("g_melee_only", mutator_melee_only, !cvar("g_minstagib"));
CHECK_MUTATOR_ADD("g_nades", mutator_nades, 1);
CHECK_MUTATOR_ADD("g_sandbox", sandbox, 1);
- CHECK_MUTATOR_ADD("g_riflearena", mutator_riflearena, !cvar("g_minstagib"));
+ CHECK_MUTATOR_ADD("g_riflearena", mutator_riflearena, !cvar("g_minstagib"));
CHECK_MUTATOR_ADD("g_campcheck", mutator_campcheck, 1);
#undef CHECK_MUTATOR_ADD
g_cloaked = cvar("g_cloaked");
if(g_cts)
g_cloaked = 1; // always enable cloak in CTS
+ g_footsteps = cvar("g_footsteps");
g_grappling_hook = cvar("g_grappling_hook");
g_jetpack = cvar("g_jetpack");
sv_maxidle = cvar("sv_maxidle");
precache_playermodel(s);
}
+ if (g_footsteps)
+ {
+ PrecacheGlobalSound((globalsound_step = "misc/footstep0 6"));
+ PrecacheGlobalSound((globalsound_metalstep = "misc/metalfootstep0 6"));
+ }
+
// gore and miscellaneous sounds
//precache_sound ("misc/h2ohit.wav");
precache_model ("models/hook.md3");
+++ /dev/null
-// footstep interval
-.float nextstep;
-
-MUTATOR_HOOKFUNCTION(footsteps_PlayerPhysics)
-{
- if(self.flags & FL_ONGROUND)
- if(IS_PLAYER(self)) // no fall sounds for observers thank you very much
- if(self.wasFlying)
- {
- self.wasFlying = 0;
-
- if(self.waterlevel < WATERLEVEL_SWIMMING)
- if(time >= self.ladder_time)
- if not(self.hook)
- {
- self.nextstep = time + 0.3 + random() * 0.1;
- trace_dphitq3surfaceflags = 0;
- tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
- if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
- {
- if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
- GlobalSound(globalsound_metalfall, CH_PLAYER, VOICETYPE_PLAYERSOUND);
- else
- GlobalSound(globalsound_fall, CH_PLAYER, VOICETYPE_PLAYERSOUND);
- }
- }
- }
-
- return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(footsteps_StartFrame)
-{
- entity oldself = self;
-
- if(gameover)
- return FALSE;
-
- for(self = world; (self = findfloat(self, damagedbycontents, TRUE)); )
- {
- float velocity_len = vlen(self.velocity);
- // play stupid sounds
- if (self.flags & FL_ONGROUND)
- if (velocity_len > autocvar_sv_maxspeed * 0.6)
- if (!self.deadflag)
- if (time < self.lastground + 0.2)
- {
- if((time > self.nextstep) || (time < (self.nextstep - 10.0)))
- {
- self.nextstep = time + 0.3 + random() * 0.1;
- trace_dphitq3surfaceflags = 0;
- tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
- if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
- {
- if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
- GlobalSound(globalsound_metalstep, CH_PLAYER, VOICETYPE_PLAYERSOUND);
- else
- GlobalSound(globalsound_step, CH_PLAYER, VOICETYPE_PLAYERSOUND);
- }
- }
- }
- }
- self = oldself;
-
- return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(footsteps_BuildMutatorsString)
-{
- ret_string = strcat(ret_string, ":Footsteps");
- return FALSE;
-}
-
-MUTATOR_DEFINITION(mutator_footsteps)
-{
- MUTATOR_HOOK(PlayerPhysics, footsteps_PlayerPhysics, CBC_ORDER_ANY);
- MUTATOR_HOOK(SV_StartFrame, footsteps_StartFrame, CBC_ORDER_ANY);
- MUTATOR_HOOK(BuildMutatorsString, footsteps_BuildMutatorsString, CBC_ORDER_ANY);
-
- MUTATOR_ONADD
- {
- PrecacheGlobalSound((globalsound_step = "misc/footstep0 6"));
- PrecacheGlobalSound((globalsound_metalstep = "misc/metalfootstep0 6"));
- }
-
- return FALSE;
-}
+++ /dev/null
-MUTATOR_HOOKFUNCTION(norecoil_PlayerThink)
-{
- if(IS_PLAYER(self))
- self.punchangle = '0 0 0';
-
- return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(norecoil_BuildMutatorsString)
-{
- ret_string = strcat(ret_string, ":norecoil");
- return FALSE;
-}
-
-MUTATOR_DEFINITION(mutator_norecoil)
-{
- MUTATOR_HOOK(PlayerPreThink, norecoil_PlayerThink, CBC_ORDER_ANY);
- MUTATOR_HOOK(BuildMutatorsString, norecoil_BuildMutatorsString, CBC_ORDER_ANY);
-
- return FALSE;
-}
MUTATOR_DECLARATION(mutator_midair);
MUTATOR_DECLARATION(mutator_bloodloss);
MUTATOR_DECLARATION(mutator_random_gravity);
-MUTATOR_DECLARATION(mutator_norecoil);
MUTATOR_DECLARATION(mutator_multijump);
-MUTATOR_DECLARATION(mutator_footsteps);
MUTATOR_DECLARATION(mutator_melee_only);
MUTATOR_DECLARATION(mutator_nades);
MUTATOR_DECLARATION(mutator_riflearena);
mutators/mutator_midair.qc
mutators/mutator_bloodloss.qc
mutators/mutator_random_gravity.qc
-mutators/mutator_norecoil.qc
mutators/mutator_multijump.qc
-mutators/mutator_footsteps.qc
mutators/mutator_melee_only.qc
mutators/mutator_nades.qc
mutators/mutator_riflearena.qc
if(autocvar_g_maxspeed > 0 && velocity_len > autocvar_g_maxspeed)
Damage (self, world, world, 100000, DEATH_SHOOTING_STAR, self.origin, '0 0 0');
+ // play stupid sounds
+ if (g_footsteps)
+ if (!gameover)
+ if (self.flags & FL_ONGROUND)
+ if (velocity_len > autocvar_sv_maxspeed * 0.6)
+ if (!self.deadflag)
+ if (time < self.lastground + 0.2)
+ {
+ if((time > self.nextstep) || (time < (self.nextstep - 10.0)))
+ {
+ self.nextstep = time + 0.3 + random() * 0.1;
+ trace_dphitq3surfaceflags = 0;
+ tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
+ /*
+ if(trace_fraction == 1)
+ dprint("nohit\n");
+ else
+ dprint(ftos(trace_dphitq3surfaceflags), "\n");
+ */
+ if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
+ {
+ if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
+ GlobalSound(globalsound_metalstep, CH_PLAYER, VOICETYPE_PLAYERSOUND);
+ else
+ GlobalSound(globalsound_step, CH_PLAYER, VOICETYPE_PLAYERSOUND);
+ }
+ }
+ }
}
self.oldvelocity = self.velocity;
W_SetupShot (self, FALSE, 3, "weapons/lasergun_fire.wav", CH_WEAPON_A, autocvar_g_balance_hlac_primary_damage);
pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
-
- self.punchangle_x = random () - 0.5;
- self.punchangle_y = random () - 0.5;
+ if (!autocvar_g_norecoil)
+ {
+ self.punchangle_x = random () - 0.5;
+ self.punchangle_y = random () - 0.5;
+ }
missile = spawn ();
missile.owner = missile.realowner = self;
for(i=autocvar_g_balance_hlac_secondary_shots;i>0;--i)
W_HLAC_Attack2f();
-
- self.punchangle_x = random () - 0.5;
- self.punchangle_y = random () - 0.5;
+
+ if (!autocvar_g_norecoil)
+ {
+ self.punchangle_x = random () - 0.5;
+ self.punchangle_y = random () - 0.5;
+ }
}
// weapon frames
void W_UZI_Attack (float deathtype)
{
W_SetupShot (self, autocvar_g_antilag_bullets && autocvar_g_balance_uzi_speed >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CH_WEAPON_A, ((self.misc_bulletcounter == 1) ? autocvar_g_balance_uzi_first_damage : autocvar_g_balance_uzi_sustained_damage));
-
- self.punchangle_x = random () - 0.5;
- self.punchangle_y = random () - 0.5;
+ if (!autocvar_g_norecoil)
+ {
+ self.punchangle_x = random () - 0.5;
+ self.punchangle_y = random () - 0.5;
+ }
// this attack_finished just enforces a cooldown at the end of a burst
ATTACK_FINISHED(self) = time + autocvar_g_balance_uzi_first_refire * W_WeaponRateFactor();
W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_reload_ammo);
W_SetupShot (self, autocvar_g_antilag_bullets && autocvar_g_balance_uzi_speed >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CH_WEAPON_A, autocvar_g_balance_uzi_sustained_damage);
-
- self.punchangle_x = random () - 0.5;
- self.punchangle_y = random () - 0.5;
+ if (!autocvar_g_norecoil)
+ {
+ self.punchangle_x = random () - 0.5;
+ self.punchangle_y = random () - 0.5;
+ }
uzi_spread = bound(autocvar_g_balance_uzi_spread_min, autocvar_g_balance_uzi_spread_min + (autocvar_g_balance_uzi_spread_add * self.misc_bulletcounter), autocvar_g_balance_uzi_spread_max);
fireBallisticBullet(w_shotorg, w_shotdir, uzi_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_sustained_damage, autocvar_g_balance_uzi_sustained_force, WEP_UZI, 0, 1, autocvar_g_balance_uzi_bulletconstant);
void uzi_mode1_fire_burst()
{
W_SetupShot (self, autocvar_g_antilag_bullets && autocvar_g_balance_uzi_speed >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CH_WEAPON_A, autocvar_g_balance_uzi_sustained_damage);
-
- self.punchangle_x = random () - 0.5;
- self.punchangle_y = random () - 0.5;
+ if (!autocvar_g_norecoil)
+ {
+ self.punchangle_x = random () - 0.5;
+ self.punchangle_y = random () - 0.5;
+ }
fireBallisticBullet(w_shotorg, w_shotdir, autocvar_g_balance_uzi_burst_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_sustained_damage, autocvar_g_balance_uzi_sustained_force, WEP_UZI, 0, 1, autocvar_g_balance_uzi_bulletconstant);
endFireBallisticBullet();