From: Mircea Kitsune Date: Mon, 26 Apr 2010 21:38:04 +0000 (+0300) Subject: Merge branch 'master' into mirceakitsune/multijump X-Git-Tag: xonotic-v0.1.0preview~361^2~11^2~9 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=9301604b1b5894e57227d32785b9a9460e9a3f51;hp=-c Merge branch 'master' into mirceakitsune/multijump --- 9301604b1b5894e57227d32785b9a9460e9a3f51 diff --combined defaultXonotic.cfg index 165c53dddf,0c44f8ef8a..9976b8e395 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@@ -319,7 -319,7 +319,7 @@@ set sv_fragmessage_information_typefra // 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" @@@ -512,6 -512,19 +512,19 @@@ alias clearmap "disconnect 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. @@@ -812,10 -825,6 +825,10 @@@ set g_bloodloss 0 "amount of health b 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 @@@ -1151,8 -1160,6 +1164,6 @@@ set g_chat_flood_lmax_tell 2 "private c 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" @@@ -1470,6 -1477,7 +1481,7 @@@ seta cl_weaponpriority6 "" "use impuls 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" @@@ -1780,3 -1788,13 +1792,13 @@@ seta _cl_userid "" "player ID (e.g. fo // 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 diff --combined qcsrc/server/cl_physics.qc index eef7724768,52477cb9a8..11d0cbf253 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@@ -29,10 -29,6 +29,10 @@@ float sv_warsowbunny_backtosideratio .float wasFlying; .float spectatorspeed; +.float multijump_count; +.float multijump_delay; +.float multijump_ready; + /* ============= PlayerJump @@@ -57,27 -53,7 +57,27 @@@ void PlayerJump (void 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) @@@ -138,9 -114,6 +138,9 @@@ 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 @@@ -715,6 -688,8 +715,8 @@@ void SV_PlayerPhysics( bot_think(); } + MUTATOR_CALLHOOK(PlayerPhysics); + self.items &~= IT_USING_JETPACK; if(self.classname == "player")