From 28368f51696277dc00533de59defa97c790b77d5 Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 30 Jan 2015 21:08:20 +1100 Subject: [PATCH] More fun stuff --- .../triggers/func/breakable.qc} | 2 + qcsrc/common/triggers/func/include.qc | 1 + qcsrc/common/triggers/target/include.qc | 2 + .../triggers/target/music.qc} | 2 + .../triggers/target/spawn.qc} | 22 +-------- qcsrc/common/triggers/trigger/include.qc | 2 + qcsrc/common/triggers/trigger/include.qh | 1 + qcsrc/common/triggers/trigger/jumppads.qc | 8 ---- qcsrc/common/triggers/trigger/jumppads.qh | 8 ++++ qcsrc/common/triggers/trigger/relay_if.qc | 20 ++++++++ .../triggers/trigger}/secret.qc | 5 +- .../triggers/trigger}/secret.qh | 3 +- qcsrc/server/progs.src | 6 --- qcsrc/warpzonelib/common.qc | 47 +++++++++++++++++++ 14 files changed, 91 insertions(+), 38 deletions(-) rename qcsrc/{server/func_breakable.qc => common/triggers/func/breakable.qc} (99%) rename qcsrc/{server/target_music.qc => common/triggers/target/music.qc} (99%) rename qcsrc/{server/target_spawn.qc => common/triggers/target/spawn.qc} (95%) create mode 100644 qcsrc/common/triggers/trigger/relay_if.qc rename qcsrc/{server => common/triggers/trigger}/secret.qc (99%) rename qcsrc/{server => common/triggers/trigger}/secret.qh (93%) diff --git a/qcsrc/server/func_breakable.qc b/qcsrc/common/triggers/func/breakable.qc similarity index 99% rename from qcsrc/server/func_breakable.qc rename to qcsrc/common/triggers/func/breakable.qc index 0bf71059e..c3890d142 100644 --- a/qcsrc/server/func_breakable.qc +++ b/qcsrc/common/triggers/func/breakable.qc @@ -1,3 +1,4 @@ +#ifdef SVQC .entity sprite; .float dmg; @@ -284,3 +285,4 @@ void spawnfunc_func_breakable() { void spawnfunc_misc_breakablemodel() { spawnfunc_func_breakable(); } +#endif diff --git a/qcsrc/common/triggers/func/include.qc b/qcsrc/common/triggers/func/include.qc index 4fad7b412..dc0369353 100644 --- a/qcsrc/common/triggers/func/include.qc +++ b/qcsrc/common/triggers/func/include.qc @@ -1,4 +1,5 @@ #include "bobbing.qc" +#include "breakable.qc" #include "button.qc" #include "conveyor.qc" #include "door.qc" diff --git a/qcsrc/common/triggers/target/include.qc b/qcsrc/common/triggers/target/include.qc index 43e4741cb..a8c876b9c 100644 --- a/qcsrc/common/triggers/target/include.qc +++ b/qcsrc/common/triggers/target/include.qc @@ -1,3 +1,5 @@ #include "changelevel.qc" +#include "music.qc" +#include "spawn.qc" #include "speaker.qc" #include "voicescript.qc" diff --git a/qcsrc/server/target_music.qc b/qcsrc/common/triggers/target/music.qc similarity index 99% rename from qcsrc/server/target_music.qc rename to qcsrc/common/triggers/target/music.qc index cd1b374e6..5aa095d12 100644 --- a/qcsrc/server/target_music.qc +++ b/qcsrc/common/triggers/target/music.qc @@ -1,3 +1,4 @@ +#ifdef SVQC .float lifetime; // values: // volume @@ -132,3 +133,4 @@ void spawnfunc_trigger_music() Net_LinkEntity(self, FALSE, 0, trigger_music_SendEntity); } +#endif diff --git a/qcsrc/server/target_spawn.qc b/qcsrc/common/triggers/target/spawn.qc similarity index 95% rename from qcsrc/server/target_spawn.qc rename to qcsrc/common/triggers/target/spawn.qc index 4da6b13bb..d661b98eb 100644 --- a/qcsrc/server/target_spawn.qc +++ b/qcsrc/common/triggers/target/spawn.qc @@ -1,3 +1,4 @@ +#ifdef SVQC // spawner entity // "classname" "target_spawn" // "message" "fieldname value fieldname value ..." @@ -333,23 +334,4 @@ void spawnfunc_target_spawn() self.target_spawn_id = ++target_spawn_count; InitializeEntity(self, target_spawn_spawnfirst, INITPRIO_LAST); } - - -void trigger_relay_if_use() -{ - float n; - n = self.count; - - // TODO make this generic AND faster than nextent()ing through all, if somehow possible - n = (cvar_string(self.netname) == cvar_string(self.message)); - if(self.spawnflags & 1) - n = !n; - - if(n) - SUB_UseTargets(); -} - -void spawnfunc_trigger_relay_if() -{ - self.use = trigger_relay_if_use; -} +#endif diff --git a/qcsrc/common/triggers/trigger/include.qc b/qcsrc/common/triggers/trigger/include.qc index 0de1d26d6..5a0e83f5a 100644 --- a/qcsrc/common/triggers/trigger/include.qc +++ b/qcsrc/common/triggers/trigger/include.qc @@ -14,5 +14,7 @@ #include "multivibrator.qc" #include "relay.qc" #include "relay_activators.qc" +#include "relay_if.qc" #include "relay_teamcheck.qc" +#include "secret.qc" #include "swamp.qc" diff --git a/qcsrc/common/triggers/trigger/include.qh b/qcsrc/common/triggers/trigger/include.qh index dd841de14..5ec31751c 100644 --- a/qcsrc/common/triggers/trigger/include.qh +++ b/qcsrc/common/triggers/trigger/include.qh @@ -1,3 +1,4 @@ #include "multi.qh" #include "jumppads.qh" +#include "secret.qh" #include "swamp.qh" diff --git a/qcsrc/common/triggers/trigger/jumppads.qc b/qcsrc/common/triggers/trigger/jumppads.qc index f2074f031..67fd6a91d 100644 --- a/qcsrc/common/triggers/trigger/jumppads.qc +++ b/qcsrc/common/triggers/trigger/jumppads.qc @@ -2,14 +2,6 @@ #ifdef SVQC -const float PUSH_ONCE = 1; -const float PUSH_SILENT = 2; - -.float pushltime; -.float istypefrag; - -void() SUB_UseTargets; - void trigger_push_use() { if(teamplay) diff --git a/qcsrc/common/triggers/trigger/jumppads.qh b/qcsrc/common/triggers/trigger/jumppads.qh index 2c5363b59..6330dc3c4 100644 --- a/qcsrc/common/triggers/trigger/jumppads.qh +++ b/qcsrc/common/triggers/trigger/jumppads.qh @@ -2,3 +2,11 @@ void ent_trigger_push(); void ent_target_push(); #endif + +const float PUSH_ONCE = 1; +const float PUSH_SILENT = 2; + +.float pushltime; +.float istypefrag; + +void() SUB_UseTargets; diff --git a/qcsrc/common/triggers/trigger/relay_if.qc b/qcsrc/common/triggers/trigger/relay_if.qc new file mode 100644 index 000000000..ade56c1e8 --- /dev/null +++ b/qcsrc/common/triggers/trigger/relay_if.qc @@ -0,0 +1,20 @@ +#ifdef SVQC +void trigger_relay_if_use() +{ + float n; + n = self.count; + + // TODO make this generic AND faster than nextent()ing through all, if somehow possible + n = (cvar_string(self.netname) == cvar_string(self.message)); + if(self.spawnflags & 1) + n = !n; + + if(n) + SUB_UseTargets(); +} + +void spawnfunc_trigger_relay_if() +{ + self.use = trigger_relay_if_use; +} +#endif diff --git a/qcsrc/server/secret.qc b/qcsrc/common/triggers/trigger/secret.qc similarity index 99% rename from qcsrc/server/secret.qc rename to qcsrc/common/triggers/trigger/secret.qc index 06f7e075d..48dc360af 100644 --- a/qcsrc/server/secret.qc +++ b/qcsrc/common/triggers/trigger/secret.qc @@ -1,5 +1,4 @@ - - +#ifdef SVQC void secrets_setstatus() { self.stat_secrets_total = secrets_total; self.stat_secrets_found = secrets_found; @@ -73,4 +72,4 @@ void spawnfunc_trigger_secret() { // ignore triggering; self.use = func_null; } - +#endif diff --git a/qcsrc/server/secret.qh b/qcsrc/common/triggers/trigger/secret.qh similarity index 93% rename from qcsrc/server/secret.qh rename to qcsrc/common/triggers/trigger/secret.qh index dd94b1921..e289f57ec 100644 --- a/qcsrc/server/secret.qh +++ b/qcsrc/common/triggers/trigger/secret.qh @@ -1,3 +1,4 @@ +#ifdef SVQC /** * Total number of secrets on the map. */ @@ -16,4 +17,4 @@ float secrets_found; * update secrets status. */ void secrets_setstatus(); - +#endif diff --git a/qcsrc/server/progs.src b/qcsrc/server/progs.src index 5aa07a33d..8da8a6fc5 100644 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@ -104,7 +104,6 @@ round_handler.qh // singleplayer stuff item_key.qh -secret.qh scores_rules.qc @@ -150,7 +149,6 @@ g_models.qc // singleplayer stuff item_key.qc -secret.qc weapons/accuracy.qc weapons/common.qc @@ -221,10 +219,6 @@ spawnpoints.qc portals.qc -target_spawn.qc -func_breakable.qc -target_music.qc - ../common/nades.qc ../common/buffs.qc diff --git a/qcsrc/warpzonelib/common.qc b/qcsrc/warpzonelib/common.qc index 521cf343b..16e026d48 100644 --- a/qcsrc/warpzonelib/common.qc +++ b/qcsrc/warpzonelib/common.qc @@ -564,6 +564,45 @@ vector WarpZoneLib_NearestPointOnBox(vector mi, vector ma, vector org) return nearest; } +float WarpZoneLib_BadClassname(string myclassname) +{ + switch(myclassname) + { + case "weapon_info": + case "monster_info": + case "deathtype": + case "callback": + case "callbackchain": + case "weaponentity": + case "exteriorweaponentity": + case "csqc_score_team": + case "pingplreport": + case "ent_client_scoreinfo": + case "saved_cvar_value": + case "accuracy": + case "entcs_sender_v2": + case "entcs_receiver_v2": + case "clientinit": + case "sprite_waypoint": + case "waypoint": + case "gibsplash": + //case "net_linked": // actually some real entities are linked without classname, fail + case "": + return TRUE; + } + + if(startsWith(myclassname, "msg_")) + return TRUE; + + if(startsWith(myclassname, "target_")) + return TRUE; + + if(startsWith(myclassname, "info_")) + return TRUE; + + return FALSE; +} + .float WarpZone_findradius_hit; .entity WarpZone_findradius_next; void WarpZone_FindRadius_Recurse(vector org, float rad, vector org0, vector transform, vector shift, float needlineofsight) @@ -582,6 +621,9 @@ void WarpZone_FindRadius_Recurse(vector org, float rad, vector org0, for(e = e0; e; e = e.chain) { + if(WarpZoneLib_BadClassname(e.classname)) + continue; + print(e.classname, ", first check\n"); p = WarpZoneLib_NearestPointOnBox(e.origin + e.mins, e.origin + e.maxs, org0); if(needlineofsight) { @@ -617,6 +659,11 @@ void WarpZone_FindRadius_Recurse(vector org, float rad, vector org0, } for(e = wz; e; e = e.WarpZone_findradius_next) { + if(WarpZoneLib_BadClassname(e.classname)) + continue; + + print(e.classname, ", second check\n"); + org0_new = WarpZone_TransformOrigin(e, org); traceline(e.warpzone_targetorigin, org0_new, MOVE_NOMONSTERS, e); org_new = trace_endpos; -- 2.39.2