111 lines
2.0 KiB
Plaintext
111 lines
2.0 KiB
Plaintext
void() make_bubbles;
|
|
void() bubble_remove;
|
|
void() bubble_bob;
|
|
|
|
/*QUAKED air_bubbles (0 .5 .8) (-8 -8 -8) (8 8 8)
|
|
|
|
testing air bubbles
|
|
*/
|
|
|
|
void() air_bubbles =
|
|
|
|
{
|
|
if (deathmatch)
|
|
{
|
|
remove (self);
|
|
return;
|
|
}
|
|
precache_model ("progs/s_bubble.spr");
|
|
self.nextthink = time + 1;
|
|
self.think = make_bubbles;
|
|
};
|
|
|
|
void() make_bubbles =
|
|
{
|
|
local entity bubble;
|
|
|
|
bubble = spawn();
|
|
setmodel (bubble, "progs/s_bubble.spr");
|
|
setorigin (bubble, self.origin);
|
|
bubble.movetype = MOVETYPE_NOCLIP;
|
|
bubble.solid = SOLID_NOT;
|
|
bubble.velocity = '0 0 15';
|
|
bubble.nextthink = time + 0.5;
|
|
bubble.think = bubble_bob;
|
|
bubble.touch = bubble_remove;
|
|
bubble.classname = "bubble";
|
|
bubble.frame = 0;
|
|
bubble.cnt = 0;
|
|
setsize (bubble, '-8 -8 -8', '8 8 8');
|
|
self.nextthink = time + random() + 0.5;
|
|
self.think = make_bubbles;
|
|
};
|
|
|
|
void() bubble_split =
|
|
{
|
|
local entity bubble;
|
|
bubble = spawn();
|
|
setmodel (bubble, "progs/s_bubble.spr");
|
|
setorigin (bubble, self.origin);
|
|
bubble.movetype = MOVETYPE_NOCLIP;
|
|
bubble.solid = SOLID_NOT;
|
|
bubble.velocity = self.velocity;
|
|
bubble.nextthink = time + 0.5;
|
|
bubble.think = bubble_bob;
|
|
bubble.touch = bubble_remove;
|
|
bubble.classname = "bubble";
|
|
bubble.frame = 1;
|
|
bubble.cnt = 10;
|
|
setsize (bubble, '-8 -8 -8', '8 8 8');
|
|
self.frame = 1;
|
|
self.cnt = 10;
|
|
if (self.waterlevel != 3)
|
|
remove (self);
|
|
};
|
|
|
|
void() bubble_remove =
|
|
{
|
|
if (other.classname == self.classname)
|
|
{
|
|
// dprint ("bump");
|
|
return;
|
|
}
|
|
remove(self);
|
|
};
|
|
|
|
void() bubble_bob =
|
|
{
|
|
local float rnd1, rnd2, rnd3;
|
|
|
|
self.cnt = self.cnt + 1;
|
|
if (self.cnt == 4)
|
|
bubble_split();
|
|
if (self.cnt == 20)
|
|
remove(self);
|
|
|
|
rnd1 = self.velocity_x + (-10 + (random() * 20));
|
|
rnd2 = self.velocity_y + (-10 + (random() * 20));
|
|
rnd3 = self.velocity_z + 10 + random() * 10;
|
|
|
|
if (rnd1 > 10)
|
|
rnd1 = 5;
|
|
if (rnd1 < -10)
|
|
rnd1 = -5;
|
|
|
|
if (rnd2 > 10)
|
|
rnd2 = 5;
|
|
if (rnd2 < -10)
|
|
rnd2 = -5;
|
|
|
|
if (rnd3 < 10)
|
|
rnd3 = 15;
|
|
if (rnd3 > 30)
|
|
rnd3 = 25;
|
|
|
|
self.velocity_x = rnd1;
|
|
self.velocity_y = rnd2;
|
|
self.velocity_z = rnd3;
|
|
|
|
self.nextthink = time + 0.5;
|
|
self.think = bubble_bob;
|
|
}; |