+#include "g_triggers.qh"
+#include "t_jumppads.qh"
+
void SUB_DontUseTargets()
{
}
-void() SUB_UseTargets;
-
void DelayThink()
{
activator = self.enemy;
//
// print the message
//
- if (IS_PLAYER(activator) && self.message != "")
+ if(self)
+ if(IS_PLAYER(activator) && self.message != "")
+ if(IS_REAL_CLIENT(activator))
{
- if(IS_REAL_CLIENT(activator))
- {
- centerprint (activator, self.message);
- if (self.noise == "")
- play2(activator, "misc/talk.wav");
- }
+ centerprint(activator, self.message);
+ if (self.noise == "")
+ play2(activator, "misc/talk.wav");
}
//
//=============================================================================
-const float SPAWNFLAG_NOMESSAGE = 1;
-const float SPAWNFLAG_NOTOUCH = 1;
-
// the wait time has passed, so set back up for another activation
void multi_wait()
{
void multi_touch()
{
- if (!(self.spawnflags & 2))
- if (!other.iscreature)
+ if(!(self.spawnflags & 2))
+ if(!other.iscreature)
return;
if(self.team)
multi_trigger ();
}
-void multi_eventdamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
+void multi_eventdamage (entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
{
if (!self.takedamage)
return;
void counter_use()
{
- self.count = self.count - 1;
+ self.count -= 1;
if (self.count < 0)
return;
- if (self.count != 0)
+ if (self.count == 0)
{
- if (IS_PLAYER(activator)
- && (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0)
- {
- if (self.count >= 4)
- centerprint (activator, "There are more to go...");
- else if (self.count == 3)
- centerprint (activator, "Only 3 more to go...");
- else if (self.count == 2)
- centerprint (activator, "Only 2 more to go...");
- else
- centerprint (activator, "Only 1 more to go...");
- }
- return;
- }
+ if(IS_PLAYER(activator) && (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0)
+ Send_Notification(NOTIF_ONE, activator, MSG_CENTER, CENTER_SEQUENCE_COMPLETED);
- if (IS_PLAYER(activator)
- && (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0)
- centerprint(activator, "Sequence completed!");
- self.enemy = activator;
- multi_trigger ();
+ self.enemy = activator;
+ multi_trigger ();
+ }
+ else
+ {
+ if(IS_PLAYER(activator) && (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0)
+ if(self.count >= 4)
+ Send_Notification(NOTIF_ONE, activator, MSG_CENTER, CENTER_SEQUENCE_COUNTER);
+ else
+ Send_Notification(NOTIF_ONE, activator, MSG_CENTER, CENTER_SEQUENCE_COUNTER_FEWMORE, self.count);
+ }
}
void counter_reset()
self.enemy = world; // let's just destroy it, if taking over is too much work
}
-.float triggerhurttime;
void trigger_hurt_touch()
{
if (self.active != ACTIVE_ACTIVE)
set dmg to damage amount
defalt dmg = 5
*/
-.entity trigger_hurt_next;
-entity trigger_hurt_last;
-entity trigger_hurt_first;
void spawnfunc_trigger_hurt()
{
EXACTTRIGGER_INIT;
for(th = trigger_hurt_first; th; th = th.trigger_hurt_next)
if(tracebox_hits_box(start, mi, ma, end, th.absmin, th.absmax))
- return TRUE;
+ return true;
- return FALSE;
+ return false;
}
//////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////
-.float triggerhealtime;
void trigger_heal_touch()
{
if (self.active != ACTIVE_ACTIVE)
//
//////////////////////////////////////////////////////////////
-.entity trigger_gravity_check;
void trigger_gravity_remove(entity own)
{
if(own.trigger_gravity_check.owner == own)
{
float g;
- if(self.state != TRUE)
+ if(self.state != true)
return;
EXACTTRIGGER_TOUCH;
if(self.noise != "")
precache_sound(self.noise);
- self.state = TRUE;
+ self.state = true;
IFTARGETED
{
self.use = trigger_gravity_use;
if(self.spawnflags & 2)
- self.state = FALSE;
+ self.state = false;
}
}
//=============================================================================
// TODO add a way to do looped sounds with sound(); then complete this entity
-.float volume, atten;
-void target_speaker_use_off();
void target_speaker_use_activator()
{
if (!IS_REAL_CLIENT(activator))
self.effects = EF_STARDUST;
}
-.string bgmscript;
-.float bgmscriptattack;
-.float bgmscriptdecay;
-.float bgmscriptsustain;
-.float bgmscriptrelease;
float pointparticles_SendEntity(entity to, float fl)
{
WriteByte(MSG_ENTITY, ENT_CLIENT_POINTPARTICLES);
}
if(fl & 4)
{
- WriteCoord(MSG_ENTITY, self.origin_x);
- WriteCoord(MSG_ENTITY, self.origin_y);
- WriteCoord(MSG_ENTITY, self.origin_z);
+ WriteCoord(MSG_ENTITY, self.origin.x);
+ WriteCoord(MSG_ENTITY, self.origin.y);
+ WriteCoord(MSG_ENTITY, self.origin.z);
}
if(fl & 1)
{
WriteShort(MSG_ENTITY, self.modelindex);
if(fl & 0x80)
{
- WriteCoord(MSG_ENTITY, self.mins_x);
- WriteCoord(MSG_ENTITY, self.mins_y);
- WriteCoord(MSG_ENTITY, self.mins_z);
- WriteCoord(MSG_ENTITY, self.maxs_x);
- WriteCoord(MSG_ENTITY, self.maxs_y);
- WriteCoord(MSG_ENTITY, self.maxs_z);
+ WriteCoord(MSG_ENTITY, self.mins.x);
+ WriteCoord(MSG_ENTITY, self.mins.y);
+ WriteCoord(MSG_ENTITY, self.mins.z);
+ WriteCoord(MSG_ENTITY, self.maxs.x);
+ WriteCoord(MSG_ENTITY, self.maxs.y);
+ WriteCoord(MSG_ENTITY, self.maxs.z);
}
}
else
WriteShort(MSG_ENTITY, 0);
if(fl & 0x80)
{
- WriteCoord(MSG_ENTITY, self.maxs_x);
- WriteCoord(MSG_ENTITY, self.maxs_y);
- WriteCoord(MSG_ENTITY, self.maxs_z);
+ WriteCoord(MSG_ENTITY, self.maxs.x);
+ WriteCoord(MSG_ENTITY, self.maxs.y);
+ WriteCoord(MSG_ENTITY, self.maxs.z);
}
}
WriteShort(MSG_ENTITY, self.cnt);
spawnfunc_func_pointparticles();
}
-float rainsnow_SendEntity(entity to, float sf)
+float rainsnow_SendEntity(entity to, int sf)
{
WriteByte(MSG_ENTITY, ENT_CLIENT_RAINSNOW);
WriteByte(MSG_ENTITY, self.state);
- WriteCoord(MSG_ENTITY, self.origin_x + self.mins_x);
- WriteCoord(MSG_ENTITY, self.origin_y + self.mins_y);
- WriteCoord(MSG_ENTITY, self.origin_z + self.mins_z);
- WriteCoord(MSG_ENTITY, self.maxs_x - self.mins_x);
- WriteCoord(MSG_ENTITY, self.maxs_y - self.mins_y);
- WriteCoord(MSG_ENTITY, self.maxs_z - self.mins_z);
+ WriteCoord(MSG_ENTITY, self.origin.x + self.mins.x);
+ WriteCoord(MSG_ENTITY, self.origin.y + self.mins.y);
+ WriteCoord(MSG_ENTITY, self.origin.z + self.mins.z);
+ WriteCoord(MSG_ENTITY, self.maxs.x - self.mins.x);
+ WriteCoord(MSG_ENTITY, self.maxs.y - self.mins.y);
+ WriteCoord(MSG_ENTITY, self.maxs.z - self.mins.z);
WriteShort(MSG_ENTITY, compressShortVector(self.dest));
WriteShort(MSG_ENTITY, self.count);
WriteByte(MSG_ENTITY, self.cnt);
self.cnt = 12;
if (!self.count)
self.count = 2000;
- self.count = 0.01 * self.count * (self.size_x / 1024) * (self.size_y / 1024);
+ self.count = 0.01 * self.count * (self.size.x / 1024) * (self.size.y / 1024);
if (self.count < 1)
self.count = 1;
if(self.count > 65535)
self.state = 1; // 1 is rain, 0 is snow
self.Version = 1;
- Net_LinkEntity(self, FALSE, 0, rainsnow_SendEntity);
+ Net_LinkEntity(self, false, 0, rainsnow_SendEntity);
}
self.cnt = 12;
if (!self.count)
self.count = 2000;
- self.count = 0.01 * self.count * (self.size_x / 1024) * (self.size_y / 1024);
+ self.count = 0.01 * self.count * (self.size.x / 1024) * (self.size.y / 1024);
if (self.count < 1)
self.count = 1;
if(self.count > 65535)
self.state = 0; // 1 is rain, 0 is snow
self.Version = 1;
- Net_LinkEntity(self, FALSE, 0, rainsnow_SendEntity);
+ Net_LinkEntity(self, false, 0, rainsnow_SendEntity);
}
-
-void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, float mindist, float maxdist, float halflifedist, float forcehalflifedist, float deathtype);
-
-.float modelscale;
void misc_laser_aim()
{
vector a;
else
{
a = vectoangles(self.enemy.origin - self.origin);
- a_x = -a_x;
+ a.x = -a.x;
if(a != self.mangle)
{
self.mangle = a;
self.enemy = find(world, targetname, self.target);
}
-.entity pusher;
void misc_laser_think()
{
vector o;
WriteByte(MSG_ENTITY, fl);
if(fl & 1)
{
- WriteCoord(MSG_ENTITY, self.origin_x);
- WriteCoord(MSG_ENTITY, self.origin_y);
- WriteCoord(MSG_ENTITY, self.origin_z);
+ WriteCoord(MSG_ENTITY, self.origin.x);
+ WriteCoord(MSG_ENTITY, self.origin.y);
+ WriteCoord(MSG_ENTITY, self.origin.z);
}
if(fl & 8)
{
- WriteByte(MSG_ENTITY, self.colormod_x * 255.0);
- WriteByte(MSG_ENTITY, self.colormod_y * 255.0);
- WriteByte(MSG_ENTITY, self.colormod_z * 255.0);
+ WriteByte(MSG_ENTITY, self.colormod.x * 255.0);
+ WriteByte(MSG_ENTITY, self.colormod.y * 255.0);
+ WriteByte(MSG_ENTITY, self.colormod.z * 255.0);
if(fl & 0x40)
WriteByte(MSG_ENTITY, self.alpha * 255.0);
if(fl & 0x20)
{
if(fl & 0x80)
{
- WriteCoord(MSG_ENTITY, self.enemy.origin_x);
- WriteCoord(MSG_ENTITY, self.enemy.origin_y);
- WriteCoord(MSG_ENTITY, self.enemy.origin_z);
+ WriteCoord(MSG_ENTITY, self.enemy.origin.x);
+ WriteCoord(MSG_ENTITY, self.enemy.origin.y);
+ WriteCoord(MSG_ENTITY, self.enemy.origin.z);
}
else
{
- WriteAngle(MSG_ENTITY, self.mangle_x);
- WriteAngle(MSG_ENTITY, self.mangle_y);
+ WriteAngle(MSG_ENTITY, self.mangle.x);
+ WriteAngle(MSG_ENTITY, self.mangle.y);
}
}
if(fl & 4)
self.mangle = self.angles;
- Net_LinkEntity(self, FALSE, 0, laser_SendEntity);
+ Net_LinkEntity(self, false, 0, laser_SendEntity);
IFTARGETED
{
}
// tZorks trigger impulse / gravity
-.float radius;
-.float falloff;
-.float strength;
-.float lastpushtime;
// targeted (directional) mode
void trigger_impulse_touch1()
-.entity voicescript; // attached voice script
-.float voicescript_index; // index of next voice, or -1 to use the randomized ones
-.float voicescript_nextthink; // time to play next voice
-.float voicescript_voiceend; // time when this voice ends
-
void target_voicescript_clear(entity pl)
{
pl.voicescript = world;
if(pl.voicescript_index < vs.cnt)
i = pl.voicescript_index * 2;
else if(n > vs.cnt * 2)
- i = mod(pl.voicescript_index - vs.cnt, (n - vs.cnt * 2 - 1) / 2) * 2 + vs.cnt * 2 + 1;
+ i = ((pl.voicescript_index - vs.cnt) % ((n - vs.cnt * 2 - 1) / 2)) * 2 + vs.cnt * 2 + 1;
else
i = -1;
self.use = trigger_disablerelay_use;
}
-float magicear_matched;
-float W_Tuba_HasPlayed(entity pl, string melody, float instrument, float ignorepitch, float mintempo, float maxtempo);
string trigger_magicear_processmessage(entity ear, entity source, float teamsay, entity privatesay, string msgin)
{
float domatch, dotrigger, matchstart, l;
entity oldself;
string savemessage;
- magicear_matched = FALSE;
+ magicear_matched = false;
dotrigger = ((IS_PLAYER(source)) && (source.deadflag == DEAD_NO) && ((ear.radius == 0) || (vlen(source.origin - ear.origin) <= ear.radius)));
domatch = ((ear.spawnflags & 32) || dotrigger);
if (!(ear.spawnflags & 256))
return msgin;
- if(!W_Tuba_HasPlayed(source, ear.message, ear.movedir_x, !(ear.spawnflags & 512), ear.movedir_y, ear.movedir_z))
+ if(!W_Tuba_HasPlayed(source, ear.message, ear.movedir.x, !(ear.spawnflags & 512), ear.movedir.y, ear.movedir.z))
return msgin;
- magicear_matched = TRUE;
+ magicear_matched = true;
if(dotrigger)
{
if(matchstart == -1) // no match
return msgin;
- magicear_matched = TRUE;
+ magicear_matched = true;
if(dotrigger)
{
return msgin;
}
-entity magicears;
string trigger_magicear_processmessage_forallears(entity source, float teamsay, entity privatesay, string msgin)
{
entity ear;
for(ear = magicears; ear; ear = ear.enemy)
{
msgout = trigger_magicear_processmessage(ear, source, teamsay, privatesay, msgin);
- if (!(ear.spawnflags & 64))
- if(magicear_matched)
- return msgout;
+ if(!(ear.spawnflags & 64))
+ if(magicear_matched)
+ return msgout;
msgin = msgout;
}
return msgin;
self.use = relay_activators_use;
}
-.string chmap, gametype;
void spawnfunc_target_changelevel_use()
{
if(self.gametype != "")