X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_physics.qc;h=782ecd65caa9718805c85878f3976bbaf555e5eb;hb=d561f76342a7e8060a5a1aae4bab3f2bf56c17aa;hp=c9531bbc630d45f2cca4bfc2aeb97e5b248e2072;hpb=9bad86b2cf8cbfcc1c29b6aef66f6cae39476e03;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index c9531bbc6..782ecd65c 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -673,6 +673,7 @@ void SpecialCommand() float speedaward_speed; string speedaward_holder; +string speedaward_uid; void race_send_speedaward(float msg) { // send the best speed of the round @@ -685,6 +686,7 @@ void race_send_speedaward(float msg) float speedaward_alltimebest; string speedaward_alltimebest_holder; +string speedaward_alltimebest_uid; void race_send_speedaward_alltimebest(float msg) { // send the best speed @@ -1306,6 +1308,7 @@ void SV_PlayerPhysics() if(vlen(self.velocity - self.velocity_z * '0 0 1') > speedaward_speed) { speedaward_speed = vlen(self.velocity - self.velocity_z * '0 0 1'); speedaward_holder = self.netname; + speedaward_uid = self.crypto_idfp; speedaward_lastupdate = time; } if(speedaward_speed > speedaward_lastsent && time - speedaward_lastupdate > 1) { @@ -1319,21 +1322,24 @@ void SV_PlayerPhysics() if (speedaward_speed > speedaward_alltimebest) { speedaward_alltimebest = speedaward_speed; speedaward_alltimebest_holder = speedaward_holder; + speedaward_alltimebest_uid = speedaward_uid; db_put(ServerProgsDB, strcat(GetMapname(), rr, "speed/speed"), ftos(speedaward_alltimebest)); - db_put(ServerProgsDB, strcat(GetMapname(), rr, "speed/netname"), speedaward_alltimebest_holder); + db_put(ServerProgsDB, strcat(GetMapname(), rr, "speed/crypto_idfp"), speedaward_alltimebest_uid); race_send_speedaward_alltimebest(MSG_ALL); } } } - float f; float xyspeed; - f = cvar("g_balance_nex_velocitydependent_falloff_factor"); xyspeed = vlen('1 0 0' * self.velocity_x + '0 1 0' * self.velocity_y); - if(xyspeed > self.nexspeed) - self.nexspeed = min(xyspeed, cvar("g_balance_nex_velocitydependent_maxspeed")); - else - self.nexspeed = (1 - f) * self.nexspeed; + if(self.weapon == WEP_NEX && cvar("g_balance_nex_charge") && cvar("g_balance_nex_charge_velocity_rate") && xyspeed > cvar("g_balance_nex_charge_minspeed")) + { + // add a maximum of charge_velocity_rate when going fast (f = 1), gradually increasing from minspeed (f = 0) to maxspeed + xyspeed = min(xyspeed, cvar("g_balance_nex_charge_maxspeed")); + f = (xyspeed - cvar("g_balance_nex_charge_minspeed")) / (cvar("g_balance_nex_charge_maxspeed") - cvar("g_balance_nex_charge_minspeed")); + // add the extra charge + self.nex_charge = min(1, self.nex_charge + cvar("g_balance_nex_charge_velocity_rate") * f * frametime); + } :end if(self.flags & FL_ONGROUND) self.lastground = time;