]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/triggers/trigger/magicear.qc
magicear: replace magic numbers
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / triggers / trigger / magicear.qc
index 3287210409c8cd65b73cbd378e02920f5c7a70e4..16118cb9d6e54906ea35f5634d095ad879f2a96f 100644 (file)
@@ -1,8 +1,9 @@
+#include "magicear.qh"
 #ifdef SVQC
 float magicear_matched;
-float W_Tuba_HasPlayed(entity pl, string melody, float instrument, float ignorepitch, float mintempo, float maxtempo);
+float W_Tuba_HasPlayed(entity pl, .entity weaponentity, string melody, float instrument, float ignorepitch, float mintempo, float maxtempo);
 string trigger_magicear_processmessage(entity ear, entity source, float teamsay, entity privatesay, string msgin)
-{SELFPARAM();
+{
        float domatch, dotrigger, matchstart, l;
        string s, msg;
        string savemessage;
@@ -10,7 +11,7 @@ string trigger_magicear_processmessage(entity ear, entity source, float teamsay,
        magicear_matched = false;
 
        dotrigger = ((IS_PLAYER(source)) && (!IS_DEAD(source)) && ((ear.radius == 0) || (vdist(source.origin - ear.origin, <=, ear.radius))));
-       domatch = ((ear.spawnflags & 32) || dotrigger);
+       domatch = ((ear.spawnflags & MAGICEAR_REPLACE_OUTSIDE) || dotrigger);
 
        if (!domatch)
                return msgin;
@@ -18,20 +19,24 @@ string trigger_magicear_processmessage(entity ear, entity source, float teamsay,
        if (!msgin)
        {
                // we are in TUBA mode!
-               if (!(ear.spawnflags & 256))
+               if (!(ear.spawnflags & MAGICEAR_TUBA))
                        return msgin;
 
-               if(!W_Tuba_HasPlayed(source, ear.message, ear.movedir_x, !(ear.spawnflags & 512), ear.movedir_y, ear.movedir_z))
-                       return msgin;
+               for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
+               {
+                       .entity weaponentity = weaponentities[slot];
+                       if(!W_Tuba_HasPlayed(source, weaponentity, ear.message, ear.movedir_x, !(ear.spawnflags & MAGICEAR_TUBA_EXACTPITCH), ear.movedir_y, ear.movedir_z))
+                               return msgin;
+               }
 
                magicear_matched = true;
 
                if(dotrigger)
                {
-                       savemessage = self.message;
-                       self.message = string_null;
+                       savemessage = ear.message;
+                       ear.message = string_null;
                        SUB_UseTargets(ear, source, NULL);
-                       self.message = savemessage;
+                       ear.message = savemessage;
                }
 
                if(ear.netname != "")
@@ -40,31 +45,31 @@ string trigger_magicear_processmessage(entity ear, entity source, float teamsay,
                return msgin;
        }
 
-       if(ear.spawnflags & 256) // ENOTUBA
+       if(ear.spawnflags & MAGICEAR_TUBA) // ENOTUBA
                return msgin;
 
        if(privatesay)
        {
-               if(ear.spawnflags & 4)
+               if(ear.spawnflags & MAGICEAR_IGNORE_TELL)
                        return msgin;
        }
        else
        {
                if(!teamsay)
-                       if(ear.spawnflags & 1)
+                       if(ear.spawnflags & MAGICEAR_IGNORE_SAY)
                                return msgin;
                if(teamsay > 0)
-                       if(ear.spawnflags & 2)
+                       if(ear.spawnflags & MAGICEAR_IGNORE_TEAMSAY)
                                return msgin;
                if(teamsay < 0)
-                       if(ear.spawnflags & 8)
+                       if(ear.spawnflags & MAGICEAR_IGNORE_INVALIDTELL)
                                return msgin;
        }
 
        matchstart = -1;
        l = strlen(ear.message);
 
-       if(ear.spawnflags & 128)
+       if(ear.spawnflags & MAGICEAR_NODECOLORIZE)
                msg = msgin;
        else
                msg = strdecolorize(msgin);
@@ -115,13 +120,13 @@ string trigger_magicear_processmessage(entity ear, entity source, float teamsay,
 
        if(dotrigger)
        {
-               savemessage = self.message;
-               self.message = string_null;
+               savemessage = ear.message;
+               ear.message = string_null;
                SUB_UseTargets(ear, source, NULL);
-               self.message = savemessage;
+               ear.message = savemessage;
        }
 
-       if(ear.spawnflags & 16)
+       if(ear.spawnflags & MAGICEAR_REPLACE_WHOLE_MESSAGE)
        {
                return ear.netname;
        }
@@ -148,7 +153,7 @@ string trigger_magicear_processmessage_forallears(entity source, float teamsay,
        for(ear = magicears; ear; ear = ear.enemy)
        {
                msgout = trigger_magicear_processmessage(ear, source, teamsay, privatesay, msgin);
-               if(!(ear.spawnflags & 64))
+               if(!(ear.spawnflags & MAGICEAR_CONTINUE))
                if(magicear_matched)
                        return msgout;
                msgin = msgout;