+#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;
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;
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 != "")
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);
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;
}
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;