// use default physics
set sv_friction_on_land 0
- exec physics26.cfg
+ exec physicsNoQWBunny.cfg
set sv_player_viewoffset "0 0 35" "view offset of the player model"
set sv_player_mins "-16 -16 -24" "playermodel mins"
set g_grappling_hook 0 "let players spawn with the grappling hook which allows them to pull themselves up"
+ set g_dodging 0 "set to 1 to enable dodging in games"
+
+ seta cl_dodging_timeout 0.2 "determines how long apart (in seconds) two taps on the same direction key are considered a dodge. use 0 to disable"
+
+ set sv_dodging_wall_dodging 0 "set to 1 to allow dodging off walls. 0 to disable"
+ set sv_dodging_delay 0.5 "determines how long a player has to wait to be able to dodge again after dodging"
+ set sv_dodging_up_speed 200 "the jump velocity of the dodge"
+ set sv_dodging_horiz_speed 400 "the horizontal velocity of the dodge"
+ set sv_dodging_ramp_time 0.1 "a ramp so that the horizontal part of the dodge is added smoothly (seconds)"
+ set sv_dodging_height_threshold 10 "the maximum height above ground where to allow dodging"
+ set sv_dodging_wall_distance_threshold 10 "the maximum distance from a wall that still allows dodging"
+ set sv_dodging_sound 1 "if 1 dodging makes a sound. if 0 dodging is silent"
+
set leadlimit 0
// this means that timelimit can be overidden globally and fraglimit can be overidden for each game mode: DM/TDM, Domination, CTF, and Runematch.
set g_footsteps 0 "serverside footstep sounds"
+set g_multijump 0 "Number of multiple jumps to allow (jumping again in the air), -1 allows for infinite jumps"
+set g_multijump_delay 0.25 "Delay between multiple jumps"
+set g_multijump_speed 30 "Minimum vertical speed a player must have in order to jump again"
+
// effects
r_picmipsprites 0 // Xonotic uses sprites that should never be picmipped (team mate, typing, waypoints)
r_mipsprites 1
set g_chat_flood_burst_tell 2 "private chat: allow bursts of so many chat lines"
set g_chat_flood_notify_flooder 1 "when 0, the flooder still can see his own message"
set g_chat_teamcolors 0 "colorize nicknames in team color for chat"
- set g_voice_flood_spv 4 "normal voices: seconds between voices to not count as flooding"
- set g_voice_flood_spv_team 2 "team voices: seconds between voices to not count as flooding"
set g_nick_flood_timeout 120 "time after which nick flood protection resets (set to 0 to disable nick flood checking)"
set g_nick_flood_penalty 0.5 "duration of the nick flood penalty"
set g_nick_flood_penalty_yellow 3 "number of changes to allow before warning and movement blocking"
seta cl_weaponpriority7 "" "use impulse 207 for prev gun from this list, 217 for best gun, 227 for next gun"
seta cl_weaponpriority8 "" "use impulse 208 for prev gun from this list, 218 for best gun, 228 for next gun"
seta cl_weaponpriority9 "" "use impulse 209 for prev gun from this list, 219 for best gun, 229 for next gun"
+ seta cl_weaponimpulsemode 0 "0: only cycle between currently usable weapons in weapon priority order; 1: cycle between all possible weapons on a key in weapon priority order"
seta sv_status_privacy 1 "hide IP addresses from \"status\" replies shown to clients"
// FIXME workaround for engine bug
sv_gameplayfix_nudgeoutofsolid 0
// to div0: remove this once 5b7ac1706712977bbc0297d2d53294e73574c7cd (svn r9537) is in the stable branch of the engine again
+
+ // otherwise, antilag breaks
+ sv_gameplayfix_consistentplayerprethink 1
+
+ // support Q1BSP maps
+ mod_q1bsp_polygoncollisions 1
+
+ // improve some minor details
+ sv_gameplayfix_gravityunaffectedbyticrate 1
+ sv_gameplayfix_nogravityonground 1
.float wasFlying;
.float spectatorspeed;
+.float multijump_count;
+.float multijump_delay;
+.float multijump_ready;
+
/*
=============
PlayerJump
return;
}
- if (!(self.flags & FL_ONGROUND))
+ if (cvar("g_multijump"))
+ {
+ if ((self.flags & FL_JUMPRELEASED) && !(self.flags & FL_ONGROUND))
+ self.multijump_ready = TRUE; // this is necessary to check that we released the jump button and pressed it again
+ else if (self.flags & FL_ONGROUND)
+ {
+ if (cvar("g_multijump") > 0)
+ self.multijump_count = 0;
+ else
+ self.multijump_count = -2; // the cvar value for infinite jumps is -1, so this needs to be smaller
+ self.multijump_ready = FALSE;
+ }
+ }
+
+ if(self.multijump_ready && time > self.multijump_delay && self.multijump_count < cvar("g_multijump") && self.velocity_z > cvar("g_multijump_speed"))
+ {
+ if (cvar("g_multijump") > 0)
+ self.multijump_count += 1;
+ self.multijump_ready = FALSE; // require releasing and pressing the jump button again for the next jump
+ }
+ else if (!(self.flags & FL_ONGROUND))
return;
if(!sv_pogostick)
self.flags &~= FL_ONGROUND;
self.flags &~= FL_JUMPRELEASED;
+ if (cvar("g_multijump"))
+ self.multijump_delay = time + cvar("g_multijump_delay");
+
if (self.crouch)
setanim(self, self.anim_duckjump, FALSE, TRUE, TRUE);
else
bot_think();
}
+ MUTATOR_CALLHOOK(PlayerPhysics);
+
self.items &~= IT_USING_JETPACK;
if(self.classname == "player")