X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_impulse.qc;h=dd010214e589a57cbbfc70033bf22e87f67e25bc;hb=86c9dc7c3696c329496b06375c1e79fb407401ce;hp=2cc8e0215bb8c1b1f0be9620c2b484326f4acde0;hpb=128cea32714586feb51b4a0d78a6bd4e35fef9f2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_impulse.qc b/qcsrc/server/cl_impulse.qc index 2cc8e0215..dd010214e 100644 --- a/qcsrc/server/cl_impulse.qc +++ b/qcsrc/server/cl_impulse.qc @@ -1,10 +1,19 @@ +#include "_all.qh" #include "round_handler.qh" #include "bot/waypoints.qh" #include "weapons/throwing.qh" +#include "command/common.qh" +#include "cheats.qh" +#include "bot/navigation.qh" +#include "weapons/selection.qh" +#include "weapons/tracing.qh" +#include "weapons/weaponsystem.qh" -#include "../common/weapons/weapons.qh" +#include "../common/minigames/sv_minigames.qh" + +#include "../common/weapons/all.qh" /* * Impulse map: @@ -54,6 +63,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) @@ -62,11 +75,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)) { @@ -81,6 +98,7 @@ void ImpulseCommands (void) } else if(imp >= 10 && imp <= 20) { + if(!self.vehicle) if(self.deadflag == DEAD_NO) { switch(imp) @@ -116,7 +134,7 @@ void ImpulseCommands (void) W_PreviousWeapon(1); break; case 20: - if(!forbidWeaponUse()) { WEP_ACTION(self.weapon, WR_RELOAD); } + if(!forbidWeaponUse(self)) { WEP_ACTION(self.weapon, WR_RELOAD); } break; } } @@ -129,10 +147,11 @@ void ImpulseCommands (void) } else if(imp >= 200 && imp <= 229) { + if(!self.vehicle) if(self.deadflag == DEAD_NO) { // custom order weapon cycling - i = imp % 10; + int i = imp % 10; m = (imp - (210 + i)); // <0 for prev, =0 for best, >0 for next W_CycleWeapon(self.(cvar_cl_weaponpriorities[i]), m); } @@ -141,6 +160,7 @@ void ImpulseCommands (void) } else if(imp >= 230 && imp <= 253) { + if(!self.vehicle) if(self.deadflag == DEAD_NO) W_SwitchWeapon (imp - 230 + WEP_FIRST); else @@ -153,14 +173,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"); @@ -168,7 +188,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"); @@ -177,9 +197,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 @@ -189,14 +209,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"); @@ -204,21 +224,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"); @@ -226,7 +246,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"); @@ -291,7 +311,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; @@ -299,14 +319,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; @@ -315,9 +335,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) { @@ -333,7 +353,7 @@ 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); e.frame = self.frame; @@ -344,7 +364,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); @@ -360,14 +380,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) { @@ -377,20 +397,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 }