X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_impulse.qc;h=8b36e17531c6a221d70d8ca2fa088b12b29c5f00;hb=c51698509e174e343dff48128a1dcfff1527c535;hp=a02cf40acab473d57b6854da0d29f7e72f0bf1dd;hpb=263c592e468eeeffb2755d204b21eb13e398adac;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_impulse.qc b/qcsrc/server/cl_impulse.qc index a02cf40ac..8b36e1753 100644 --- a/qcsrc/server/cl_impulse.qc +++ b/qcsrc/server/cl_impulse.qc @@ -1,4 +1,3 @@ -#include "_all.qh" #include "round_handler.qh" #include "bot/waypoints.qh" @@ -10,12 +9,17 @@ #include "weapons/selection.qh" #include "weapons/tracing.qh" #include "weapons/weaponsystem.qh" -#include "vehicles/vehicle.qh" -#include "waypointsprites.qh" -#include "../common/weapons/weapons.qh" +#include "../common/minigames/sv_minigames.qh" -/* +#include "../common/weapons/all.qh" +#include "../common/vehicles/sv_vehicles.qh" + +#include "../common/mutators/mutator/waypoints/waypointsprites.qh" + +.entity vehicle; + +/** * Impulse map: * * 0 reserved (no input) @@ -51,7 +55,7 @@ */ void ImpulseCommands (void) -{ +{SELFPARAM(); int imp; vector org; float i; @@ -63,6 +67,10 @@ void ImpulseCommands (void) return; self.impulse = 0; + if ( self.active_minigame ) + if ( MinigameImpulse(imp) ) + return; + // allow only weapon change impulses when not in round time if(round_handler_IsActive() && !round_handler_IsRoundStarted()) if(imp == 17 || (imp >= 20 && imp < 200) || imp > 253) @@ -71,11 +79,15 @@ void ImpulseCommands (void) if (timeout_status == TIMEOUT_ACTIVE) //don't allow any impulses while the game is paused return; - if(self.vehicle) - if(self.vehicle.deadflag == DEAD_NO) - if(self.vehicle.vehicles_impulse) - if(self.vehicle.vehicles_impulse(imp)) - return; + if(self.vehicle) + if(self.vehicle.deadflag == DEAD_NO) + { + if(self.vehicle.vehicles_impulse) + if(self.vehicle.vehicles_impulse(imp)) + return; + if(vehicle_impulse(imp)) + return; + } if(CheatImpulse(imp)) { @@ -90,6 +102,7 @@ void ImpulseCommands (void) } else if(imp >= 10 && imp <= 20) { + if(!self.vehicle) if(self.deadflag == DEAD_NO) { switch(imp) @@ -125,7 +138,10 @@ void ImpulseCommands (void) W_PreviousWeapon(1); break; case 20: - if(!forbidWeaponUse()) { WEP_ACTION(self.weapon, WR_RELOAD); } + if(!forbidWeaponUse(self)) { + Weapon w = get_weaponinfo(self.weapon); + w.wr_reload(w); + } break; } } @@ -138,6 +154,7 @@ void ImpulseCommands (void) } else if(imp >= 200 && imp <= 229) { + if(!self.vehicle) if(self.deadflag == DEAD_NO) { // custom order weapon cycling @@ -148,10 +165,11 @@ void ImpulseCommands (void) else self.impulse = imp; // retry in next frame } - else if(imp >= 230 && imp <= 253) + else if(imp >= WEP_IMPULSE_BEGIN && imp <= WEP_IMPULSE_END) { + if(!self.vehicle) if(self.deadflag == DEAD_NO) - W_SwitchWeapon (imp - 230 + WEP_FIRST); + W_SwitchWeapon (imp - WEP_IMPULSE_BEGIN + WEP_FIRST); else self.impulse = imp; // retry in next frame } @@ -162,14 +180,14 @@ void ImpulseCommands (void) switch(imp) { case 30: - wp = WaypointSprite_DeployPersonal("waypoint", self.origin, RADARICON_WAYPOINT, '0 1 1'); + wp = WaypointSprite_DeployPersonal(WP_Waypoint, self.origin, RADARICON_WAYPOINT); if(wp) WaypointSprite_Ping(wp); sprint(self, "personal waypoint spawned at location\n"); break; case 31: WarpZone_crosshair_trace(self); - wp = WaypointSprite_DeployPersonal("waypoint", trace_endpos, RADARICON_WAYPOINT, '0 1 1'); + wp = WaypointSprite_DeployPersonal(WP_Waypoint, trace_endpos, RADARICON_WAYPOINT); if(wp) WaypointSprite_Ping(wp); sprint(self, "personal waypoint spawned at crosshair\n"); @@ -177,7 +195,7 @@ void ImpulseCommands (void) case 32: if(vlen(self.death_origin)) { - wp = WaypointSprite_DeployPersonal("waypoint", self.death_origin, RADARICON_WAYPOINT, '0 1 1'); + wp = WaypointSprite_DeployPersonal(WP_Waypoint, self.death_origin, RADARICON_WAYPOINT); if(wp) WaypointSprite_Ping(wp); sprint(self, "personal waypoint spawned at death location\n"); @@ -186,9 +204,9 @@ void ImpulseCommands (void) case 33: if(self.deadflag == DEAD_NO && teamplay) { - if (!MUTATOR_CALLHOOK(HelpMePing)) + if (!MUTATOR_CALLHOOK(HelpMePing, self)) { - wp = WaypointSprite_Attach("helpme", true, RADARICON_HELPME, '1 0.5 0'); + wp = WaypointSprite_Attach(WP_Helpme, true, RADARICON_HELPME); if(!wp) WaypointSprite_HelpMePing(self.waypointsprite_attachedforcarrier); else @@ -198,14 +216,14 @@ void ImpulseCommands (void) } break; case 34: - wp = WaypointSprite_DeployFixed("here", false, self.origin, RADARICON_HERE, '0 1 0'); + wp = WaypointSprite_DeployFixed(WP_Here, false, self.origin, RADARICON_HERE); if(wp) WaypointSprite_Ping(wp); sprint(self, "HERE spawned at location\n"); break; case 35: WarpZone_crosshair_trace(self); - wp = WaypointSprite_DeployFixed("here", false, trace_endpos, RADARICON_HERE, '0 1 0'); + wp = WaypointSprite_DeployFixed(WP_Here, false, trace_endpos, RADARICON_HERE); if(wp) WaypointSprite_Ping(wp); sprint(self, "HERE spawned at crosshair\n"); @@ -213,21 +231,21 @@ void ImpulseCommands (void) case 36: if(vlen(self.death_origin)) { - wp = WaypointSprite_DeployFixed("here", false, self.death_origin, RADARICON_HERE, '0 1 0'); + wp = WaypointSprite_DeployFixed(WP_Here, false, self.death_origin, RADARICON_HERE); if(wp) WaypointSprite_Ping(wp); sprint(self, "HERE spawned at death location\n"); } break; case 37: - wp = WaypointSprite_DeployFixed("danger", false, self.origin, RADARICON_DANGER, '1 0.5 0'); + wp = WaypointSprite_DeployFixed(WP_Danger, false, self.origin, RADARICON_DANGER); if(wp) WaypointSprite_Ping(wp); sprint(self, "DANGER spawned at location\n"); break; case 38: WarpZone_crosshair_trace(self); - wp = WaypointSprite_DeployFixed("danger", false, trace_endpos, RADARICON_DANGER, '1 0.5 0'); + wp = WaypointSprite_DeployFixed(WP_Danger, false, trace_endpos, RADARICON_DANGER); if(wp) WaypointSprite_Ping(wp); sprint(self, "DANGER spawned at crosshair\n"); @@ -235,7 +253,7 @@ void ImpulseCommands (void) case 39: if(vlen(self.death_origin)) { - wp = WaypointSprite_DeployFixed("danger", false, self.death_origin, RADARICON_DANGER, '1 0.5 0'); + wp = WaypointSprite_DeployFixed(WP_Danger, false, self.death_origin, RADARICON_DANGER); if(wp) WaypointSprite_Ping(wp); sprint(self, "DANGER spawned at death location\n"); @@ -300,7 +318,7 @@ void ImpulseCommands (void) { if(e.wpcost >= 10000000) { - print("unreachable: ", etos(e), " ", vtos(e.origin), "\n"); + LOG_INFO("unreachable: ", etos(e), " ", vtos(e.origin), "\n"); e.colormod_z = 8; e.effects |= EF_NODEPTHTEST | EF_BLUE; ++i; @@ -308,14 +326,14 @@ void ImpulseCommands (void) } } if(i) - print(ftos(i), " waypoints cannot be reached from here in any way (marked with blue light)\n"); + LOG_INFO(ftos(i), " waypoints cannot be reached from here in any way (marked with blue light)\n"); navigation_markroutes_inverted(e2); i = 0; for(e = findchain(classname, "waypoint"); e; e = e.chain) { if(e.wpcost >= 10000000) { - print("cannot reach me: ", etos(e), " ", vtos(e.origin), "\n"); + LOG_INFO("cannot reach me: ", etos(e), " ", vtos(e.origin), "\n"); e.colormod_x = 8; if(!(e.effects & EF_NODEPTHTEST)) // not already reported before ++m; @@ -324,9 +342,9 @@ void ImpulseCommands (void) } } if(i) - print(ftos(i), " waypoints cannot walk to here in any way (marked with red light)\n"); + LOG_INFO(ftos(i), " waypoints cannot walk to here in any way (marked with red light)\n"); if(m) - print(ftos(m), " waypoints have been marked total\n"); + LOG_INFO(ftos(m), " waypoints have been marked total\n"); i = 0; for(e = findchain(classname, "info_player_deathmatch"); e; e = e.chain) { @@ -342,9 +360,9 @@ void ImpulseCommands (void) else { setorigin(e, org); - print("spawn without waypoint: ", etos(e), " ", vtos(e.origin), "\n"); + LOG_INFO("spawn without waypoint: ", etos(e), " ", vtos(e.origin), "\n"); e.effects |= EF_NODEPTHTEST; - setmodel(e, self.model); + _setmodel(e, self.model); e.frame = self.frame; e.skin = self.skin; e.colormod = '8 0.5 8'; @@ -353,7 +371,7 @@ void ImpulseCommands (void) } } if(i) - print(ftos(i), " spawnpoints have no nearest waypoint (marked by player model)\n"); + LOG_INFO(ftos(i), " spawnpoints have no nearest waypoint (marked by player model)\n"); i = 0; entity start; start = findchainflags(flags, FL_ITEM); @@ -369,14 +387,14 @@ void ImpulseCommands (void) } else { - print("item without waypoint: ", etos(e), " ", vtos(e.origin), "\n"); + LOG_INFO("item without waypoint: ", etos(e), " ", vtos(e.origin), "\n"); e.effects |= EF_NODEPTHTEST | EF_RED; e.colormod_x = 8; ++i; } } if(i) - print(ftos(i), " items have no nearest waypoint and cannot be walked away from (marked with red light)\n"); + LOG_INFO(ftos(i), " items have no nearest waypoint and cannot be walked away from (marked with red light)\n"); i = 0; for(e = start; e; e = e.chain) { @@ -386,20 +404,16 @@ void ImpulseCommands (void) } else { - print("item without waypoint: ", etos(e), " ", vtos(e.origin), "\n"); + LOG_INFO("item without waypoint: ", etos(e), " ", vtos(e.origin), "\n"); e.effects |= EF_NODEPTHTEST | EF_BLUE; e.colormod_z = 8; ++i; } } if(i) - print(ftos(i), " items have no nearest waypoint and cannot be walked to (marked with blue light)\n"); + LOG_INFO(ftos(i), " items have no nearest waypoint and cannot be walked to (marked with blue light)\n"); break; } } } -#ifdef TETRIS - else if(imp == 100) - TetrisImpulse(); -#endif }