X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_physics.qc;h=bf555d4fcd173d4fa245f1635d7c610594c7d45e;hb=9a6a0128b84883350982d582b14f5c25fa5a6881;hp=9718260a9f554c0915c90bb2b5b82aa6734ca8eb;hpb=c88e8c59836e3d8577e939a2e92610771ad44c39;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index 9718260a9..bf555d4fc 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -159,30 +159,37 @@ void CheckWaterJump() .float multijump_count; void CheckPlayerJump() { - if (self.BUTTON_JUMP) + float was_flying = self.items & IT_USING_JETPACK; + + if (self.cvar_cl_jetpack_jump < 2) + self.items &= ~IT_USING_JETPACK; + + if (self.BUTTON_JUMP || self.BUTTON_JETPACK) { - if (!PlayerJump() || self.multijump_count > 0) + float air_jump = !PlayerJump() || self.multijump_count > 0; // PlayerJump() has important side effects + float activate = self.cvar_cl_jetpack_jump && air_jump && self.BUTTON_JUMP || self.BUTTON_JETPACK; + float has_fuel = !autocvar_g_jetpack_fuel || self.ammo_fuel || self.items & IT_UNLIMITED_WEAPON_AMMO; + if (!(self.items & IT_JETPACK)) { } + else if (self.jetpack_stopped) { } + else if (!has_fuel) { - if (!self.jetpack_stopped && (!autocvar_g_jetpack_fuel || self.ammo_fuel > 0 || self.items & IT_UNLIMITED_WEAPON_AMMO) && !self.frozen) - { - self.items |= IT_USING_JETPACK; - } - else - { - // we get here if we ran out of ammo - if (!self.jetpack_stopped) - sprint(self, "You don't have any fuel for the ^2Jetpack\n"); - self.jetpack_stopped = TRUE; - self.items &= ~IT_USING_JETPACK; - } + if (was_flying) // TODO: ran out of fuel message + Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL); + else if (activate) + Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL); + self.jetpack_stopped = TRUE; + self.items &= ~IT_USING_JETPACK; } + else if (activate && !self.frozen) + self.items |= IT_USING_JETPACK; } else { - self.flags |= FL_JUMPRELEASED; self.jetpack_stopped = FALSE; self.items &= ~IT_USING_JETPACK; } + if (!self.BUTTON_JUMP) + self.flags |= FL_JUMPRELEASED; if (self.waterlevel == WATERLEVEL_SWIMMING) CheckWaterJump (); @@ -778,8 +785,6 @@ void SV_PlayerPhysics() bot_think(); } - self.items &= ~IT_USING_JETPACK; - if(IS_PLAYER(self)) { if(self.race_penalty) @@ -1144,6 +1149,10 @@ void SV_PlayerPhysics() } else if (self.flags & FL_ONGROUND) { + // we get here if we ran out of ammo + if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32) && self.ammo_fuel < 0.01) + Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL); + // walking makevectors(self.v_angle_y * '0 1 0'); wishvel = v_forward * self.movement_x + v_right * self.movement_y; @@ -1209,6 +1218,9 @@ void SV_PlayerPhysics() else { float wishspeed0; + // we get here if we ran out of ammo + if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32) && self.ammo_fuel < 0.01) + Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL); if(maxspd_mod < 1) {