* trigger given targets
*/
void trigger_keylock_trigger(string s)
-{
- entity stemp = self;
+{SELFPARAM();
entity otemp = other;
entity atemp = activator;
for(t = world; (t = find(t, targetname, s)); )
if(t.use)
{
- self = t;
- other = stemp;
+ setself(t);
+ other = this;
activator = atemp;
self.use();
}
- self = stemp;
+ setself(this);
other = otemp;
activator = atemp;
}
}
void trigger_keylock_touch()
-{
+{SELFPARAM();
bool key_used = false;
bool started_delay = false;
#ifdef SVQC
bool trigger_keylock_send(entity to, int sf)
-{
- WriteByte(MSG_ENTITY, ENT_CLIENT_KEYLOCK);
+{SELFPARAM();
+ WriteHeader(MSG_ENTITY, ENT_CLIENT_KEYLOCK);
WriteInt24_t(MSG_ENTITY, self.itemkeys);
WriteByte(MSG_ENTITY, self.height);
If spawned without any key specified in itemkeys, this trigger will display an error and remove itself.
message2 and noise2 will be resent to the player every 2 seconds while he is in the trigger zone.
*/
-void spawnfunc_trigger_keylock(void)
+spawnfunc(trigger_keylock)
{
if(!self.itemkeys) { remove(self); return; }
if(self.sounds == 1)
self.noise = "misc/secret.wav";
else if(self.sounds == 2)
- self.noise = "misc/talk.wav";
+ self.noise = strzone(SND(TALK));
else //if (self.sounds == 3) {
self.noise = "misc/trigger1.wav";
}
// set closed sourd
if(self.noise2 == "")
- self.noise2 = "misc/talk.wav";
+ self.noise2 = SND(TALK);
// delay between triggering message2 and trigger2
if(!self.wait) { self.wait = 5; }
}
#elif defined(CSQC)
void keylock_remove()
-{
+{SELFPARAM();
if(self.target) { strunzone(self.target); }
self.target = string_null;
}
void ent_keylock()
-{
+{SELFPARAM();
self.itemkeys = ReadInt24_t();
self.height = ReadByte();