2 .entity trigger_gravity_check;
3 void trigger_gravity_remove(entity own)
5 if(own.trigger_gravity_check.owner == own)
7 UpdateCSQCProjectile(own);
8 own.gravity = own.trigger_gravity_check.gravity;
9 remove(own.trigger_gravity_check);
12 backtrace("Removing a trigger_gravity_check with no valid owner");
13 own.trigger_gravity_check = world;
15 void trigger_gravity_check_think()
17 // This spawns when a player enters the gravity zone and checks if he left.
18 // Each frame, self.count is set to 2 by trigger_gravity_touch() and decreased by 1 here.
19 // It the player has left the gravity trigger, this will be allowed to reach 0 and indicate that.
22 if(self.owner.trigger_gravity_check == self)
23 trigger_gravity_remove(self.owner);
31 self.nextthink = time;
35 void trigger_gravity_use()
37 self.state = !self.state;
40 void trigger_gravity_touch()
44 if(self.state != true)
51 if (!(self.spawnflags & 1))
53 if(other.trigger_gravity_check)
55 if(self == other.trigger_gravity_check.enemy)
58 other.trigger_gravity_check.count = 2; // gravity one more frame...
63 if(self.cnt > other.trigger_gravity_check.enemy.cnt)
64 trigger_gravity_remove(other);
68 other.trigger_gravity_check = spawn();
69 other.trigger_gravity_check.enemy = self;
70 other.trigger_gravity_check.owner = other;
71 other.trigger_gravity_check.gravity = other.gravity;
72 other.trigger_gravity_check.think = trigger_gravity_check_think;
73 other.trigger_gravity_check.nextthink = time;
74 other.trigger_gravity_check.count = 2;
79 if (other.gravity != g)
83 _sound (other, CH_TRIGGER, self.noise, VOL_BASE, ATTEN_NORM);
84 UpdateCSQCProjectile(self.owner);
88 spawnfunc(trigger_gravity)
94 self.touch = trigger_gravity_touch;
96 precache_sound(self.noise);
101 self.use = trigger_gravity_use;
102 if(self.spawnflags & 2)