more union/enum use
a few more fixes git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1084 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
4a3f0aa335
commit
d2f4a6a213
7 changed files with 141 additions and 158 deletions
|
@ -554,7 +554,7 @@ void() PutClientInServer =
|
||||||
self.max_health = 100;
|
self.max_health = 100;
|
||||||
self.flags = FL_CLIENT;
|
self.flags = FL_CLIENT;
|
||||||
self.air_finished = time + 12;
|
self.air_finished = time + 12;
|
||||||
self.dmg = 2; // initial water damage
|
self.waterdmg = 2; // initial water damage
|
||||||
self.super_damage_finished = 0;
|
self.super_damage_finished = 0;
|
||||||
self.radsuit_finished = 0;
|
self.radsuit_finished = 0;
|
||||||
self.invisible_finished = 0;
|
self.invisible_finished = 0;
|
||||||
|
@ -857,8 +857,6 @@ WaterMove
|
||||||
|
|
||||||
============
|
============
|
||||||
*/
|
*/
|
||||||
.float dmgtime;
|
|
||||||
|
|
||||||
void() WaterMove =
|
void() WaterMove =
|
||||||
{
|
{
|
||||||
//dprint (ftos(self.waterlevel));
|
//dprint (ftos(self.waterlevel));
|
||||||
|
@ -874,16 +872,16 @@ void() WaterMove =
|
||||||
else if (self.air_finished < time + 9)
|
else if (self.air_finished < time + 9)
|
||||||
sound (self, CHAN_VOICE, "player/gasp1.wav", 1, ATTN_NORM);
|
sound (self, CHAN_VOICE, "player/gasp1.wav", 1, ATTN_NORM);
|
||||||
self.air_finished = time + 12;
|
self.air_finished = time + 12;
|
||||||
self.dmg = 2;
|
self.waterdmg = 2;
|
||||||
}
|
}
|
||||||
else if (self.air_finished < time)
|
else if (self.air_finished < time)
|
||||||
{ // drown!
|
{ // drown!
|
||||||
if (self.pain_finished < time)
|
if (self.pain_finished < time)
|
||||||
{
|
{
|
||||||
self.dmg = self.dmg + 2;
|
self.waterdmg = self.waterdmg + 2;
|
||||||
if (self.dmg > 15)
|
if (self.waterdmg > 15)
|
||||||
self.dmg = 10;
|
self.waterdmg = 10;
|
||||||
T_Damage (self, world, world, self.dmg, MOD_DROWN);
|
T_Damage (self, world, world, self.waterdmg, MOD_DROWN);
|
||||||
self.pain_finished = time + 1;
|
self.pain_finished = time + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,11 +175,13 @@ void(entity targ, entity inflictor, entity attacker, float damage, INTEGER mod)
|
||||||
damage_mod = mod;
|
damage_mod = mod;
|
||||||
|
|
||||||
// check for quad damage powerup on the attacker
|
// check for quad damage powerup on the attacker
|
||||||
if (attacker.super_damage_finished > time && inflictor.classname != "door")
|
if (attacker.super_damage_finished > time && mod != MOD_SQUISH)
|
||||||
if (deathmatch == 4)
|
{
|
||||||
damage = damage * 8;
|
if (deathmatch == 4)
|
||||||
else
|
damage = damage * 8;
|
||||||
damage = damage * 4;
|
else
|
||||||
|
damage = damage * 4;
|
||||||
|
}
|
||||||
|
|
||||||
// save damage based on the target's armor level
|
// save damage based on the target's armor level
|
||||||
|
|
||||||
|
|
|
@ -169,8 +169,6 @@ void end_sys_globals; // flag for structure dumping
|
||||||
.float nextthink;
|
.float nextthink;
|
||||||
.entity groundentity;
|
.entity groundentity;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// stats
|
// stats
|
||||||
.float health;
|
.float health;
|
||||||
.float frags;
|
.float frags;
|
||||||
|
@ -354,11 +352,6 @@ float CONTENT_SLIME = -4;
|
||||||
float CONTENT_LAVA = -5;
|
float CONTENT_LAVA = -5;
|
||||||
float CONTENT_SKY = -6;
|
float CONTENT_SKY = -6;
|
||||||
|
|
||||||
float STATE_TOP = 0;
|
|
||||||
float STATE_BOTTOM = 1;
|
|
||||||
float STATE_UP = 2;
|
|
||||||
float STATE_DOWN = 3;
|
|
||||||
|
|
||||||
vector VEC_ORIGIN = '0 0 0';
|
vector VEC_ORIGIN = '0 0 0';
|
||||||
vector VEC_HULL_MIN = '-16 -16 -24';
|
vector VEC_HULL_MIN = '-16 -16 -24';
|
||||||
vector VEC_HULL_MAX = '16 16 32';
|
vector VEC_HULL_MAX = '16 16 32';
|
||||||
|
@ -378,7 +371,6 @@ float SVC_SMALLKICK = 34;
|
||||||
float SVC_BIGKICK = 35;
|
float SVC_BIGKICK = 35;
|
||||||
float SVC_MUZZLEFLASH = 39;
|
float SVC_MUZZLEFLASH = 39;
|
||||||
|
|
||||||
|
|
||||||
float TE_SPIKE = 0;
|
float TE_SPIKE = 0;
|
||||||
float TE_SUPERSPIKE = 1;
|
float TE_SUPERSPIKE = 1;
|
||||||
float TE_GUNSHOT = 2;
|
float TE_GUNSHOT = 2;
|
||||||
|
@ -461,7 +453,6 @@ entity damage_attacker; // set by T_Damage
|
||||||
entity damage_inflictor; // set by T_Damage
|
entity damage_inflictor; // set by T_Damage
|
||||||
INTEGER damage_mod; // set by T_Damage
|
INTEGER damage_mod; // set by T_Damage
|
||||||
|
|
||||||
|
|
||||||
float framecount;
|
float framecount;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -486,117 +477,61 @@ float spotspawn;
|
||||||
|
|
||||||
//================================================
|
//================================================
|
||||||
|
|
||||||
//
|
|
||||||
// world fields (FIXME: make globals)
|
|
||||||
//
|
|
||||||
.string wad;
|
|
||||||
.string map;
|
|
||||||
.float worldtype; // 0=medieval 1=metal 2=base
|
|
||||||
#define WT_MEDIEVAL 0
|
#define WT_MEDIEVAL 0
|
||||||
#define WT_METAL 1
|
#define WT_METAL 1
|
||||||
#define WT_BASE 2
|
#define WT_BASE 2
|
||||||
|
|
||||||
//================================================
|
//================================================
|
||||||
|
|
||||||
.string killtarget;
|
.string killtarget; // used by anything using SUB_UseTargets (items/triggers/etc)
|
||||||
|
|
||||||
//
|
|
||||||
// quakeed fields
|
|
||||||
//
|
|
||||||
.float light_lev; // not used by game, but parsed by light util
|
|
||||||
.float style;
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// monster ai
|
// monster ai
|
||||||
//
|
//
|
||||||
.void(entity attacker, float damage) th_pain;
|
.void(entity attacker, float damage) th_pain; // used by secret doors, monsters, players
|
||||||
.void() th_die;
|
.void() th_die; // used by anything damagable (doors/buttons/players/monsters/explobox/triggermultiple)
|
||||||
.void() th_stand;
|
.void() th_stand; // used by monsters
|
||||||
|
|
||||||
|
// Stuff used by monsters
|
||||||
|
/*
|
||||||
.void() th_walk;
|
.void() th_walk;
|
||||||
.void() th_run;
|
.void() th_run;
|
||||||
.void() th_missile;
|
.void() th_missile;
|
||||||
.void() th_melee;
|
.void() th_melee;
|
||||||
|
|
||||||
/*
|
|
||||||
.entity oldenemy;
|
.entity oldenemy;
|
||||||
|
|
||||||
.float search_time;
|
.float search_time;
|
||||||
.float attack_state;
|
.float attack_state;
|
||||||
|
|
||||||
float AS_STRAIGHT = 1;
|
enum
|
||||||
float AS_SLIDING = 2;
|
{
|
||||||
float AS_MELEE = 3;
|
AS_NONE,
|
||||||
float AS_MISSILE = 4;
|
AS_STRAIGHT,
|
||||||
|
AS_SLIDING,
|
||||||
|
AS_MELEE,
|
||||||
|
AS_MISSILE
|
||||||
|
};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.float speed;
|
.float speed; // used with door/plats/fireball spawner, inherited
|
||||||
|
.string map; // used with world/trigger_changelevel, inherited
|
||||||
//
|
|
||||||
// player only fields
|
|
||||||
//
|
|
||||||
.float walkframe;
|
|
||||||
|
|
||||||
// Zoid Additions
|
// Zoid Additions
|
||||||
.float maxspeed; // Used to set Maxspeed on a player
|
.float maxspeed; // Used to set Maxspeed on a player
|
||||||
.float gravity; // Gravity Multiplier (0 to 1.0)
|
.float gravity; // Gravity Multiplier (0 to 1.0)
|
||||||
|
|
||||||
.float attack_finished;
|
.float attack_finished; // used with lots of stuff...
|
||||||
.float pain_finished;
|
.float pain_finished; // used with monsters/players
|
||||||
|
|
||||||
.float invincible_finished;
|
.float invincible_finished; // only used for players but object check needed for T_Damage
|
||||||
.float invisible_finished;
|
.float super_damage_finished; // only used for players but object check needed for T_Damage
|
||||||
.float super_damage_finished;
|
|
||||||
.float radsuit_finished;
|
|
||||||
|
|
||||||
.float invincible_time, invincible_sound;
|
|
||||||
.float invisible_time, invisible_sound;
|
|
||||||
.float super_time, super_sound;
|
|
||||||
.float rad_time;
|
|
||||||
|
|
||||||
.float jump_flag; // player jump flag
|
|
||||||
.float swim_flag; // player swimming sound flag
|
|
||||||
.float air_finished; // when time > air_finished, start drowning
|
|
||||||
|
|
||||||
//
|
|
||||||
// object stuff
|
|
||||||
//
|
|
||||||
.vector mangle; // angle at start
|
|
||||||
|
|
||||||
//
|
|
||||||
// doors, etc
|
|
||||||
//
|
|
||||||
.vector dest, dest1, dest2;
|
|
||||||
.entity trigger_field; // door's trigger entity
|
|
||||||
.string noise4;
|
|
||||||
|
|
||||||
//
|
|
||||||
// doors
|
|
||||||
//
|
|
||||||
.float dmg; // damage done by door when hit
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// misc
|
// misc
|
||||||
//
|
//
|
||||||
.float cnt; // misc flag
|
.float cnt; // misc flag used by trains/dropped pent and quad
|
||||||
|
|
||||||
//
|
|
||||||
// plats / doors / buttons
|
|
||||||
//
|
|
||||||
.float lip;
|
|
||||||
.float state;
|
|
||||||
.vector pos1, pos2; // top and bottom positions
|
|
||||||
.float height;
|
|
||||||
|
|
||||||
//
|
|
||||||
// sounds
|
|
||||||
//
|
|
||||||
|
|
||||||
// heal stuff
|
|
||||||
#define H_ROTTEN 1
|
|
||||||
#define H_MEGA 2
|
|
||||||
|
|
||||||
// intermission
|
// intermission
|
||||||
float intermission_running;
|
float intermission_running;
|
||||||
float intermission_exittime;
|
float intermission_exittime;
|
||||||
|
@ -605,6 +540,24 @@ float intermission_exittime;
|
||||||
entity newmis;
|
entity newmis;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// extensions
|
||||||
|
.float alpha; // DP_ENT_ALPHA
|
||||||
|
|
||||||
|
// enums
|
||||||
|
// door/plat states
|
||||||
|
enum {
|
||||||
|
STATE_TOP,
|
||||||
|
STATE_BOTTOM,
|
||||||
|
STATE_UP,
|
||||||
|
STATE_DOWN
|
||||||
|
};
|
||||||
|
|
||||||
|
// heal defines
|
||||||
|
enumflags {
|
||||||
|
H_ROTTEN,
|
||||||
|
H_MEGA
|
||||||
|
};
|
||||||
|
|
||||||
// weaponstate defines
|
// weaponstate defines
|
||||||
enum {
|
enum {
|
||||||
WS_IDLE,
|
WS_IDLE,
|
||||||
|
@ -615,31 +568,62 @@ enum {
|
||||||
// unions
|
// unions
|
||||||
// DO NOT MIX UNION TYPES LIKE I AM DOING
|
// DO NOT MIX UNION TYPES LIKE I AM DOING
|
||||||
.union {
|
.union {
|
||||||
|
struct { // fields used with world object
|
||||||
|
string wad;
|
||||||
|
float worldtype; // world type, 0=medieval 1=metal 2=base
|
||||||
|
};
|
||||||
struct { // fields used with triggers/doors/plats
|
struct { // fields used with triggers/doors/plats
|
||||||
float delay; // time from activation to firing
|
float delay; // time from activation to firing
|
||||||
float wait; // time from firing to restarting
|
float wait; // time from firing to restarting
|
||||||
float t_length; // override length to move sideways
|
float t_length; // override length to move sideways
|
||||||
float t_width; // override length to move upwards/downwards
|
float t_width; // override length to move upwards/downwards
|
||||||
void() think1; // used with SUB_CalcMove
|
void() think1; // used with SUB_CalcMove
|
||||||
vector finaldest; // used with SUB_CalcMove
|
vector finaldest; // used with SUB_CalcMove
|
||||||
vector finalangle;// used with SUB_CalcMove
|
vector finalangle; // used with SUB_CalcMove
|
||||||
float count; // for counting triggers
|
float count; // for counting triggers
|
||||||
|
float dmg; // damage done by door/train/trigger hurt
|
||||||
|
vector mangle; // initial angle (doors/teleporter/intermission)
|
||||||
|
float lip; // position adjustment (func_door/func_button)
|
||||||
|
float state; // object state (doors/buttons/plats)
|
||||||
|
vector pos1; // top position (doors/buttons/plats)
|
||||||
|
vector pos2; // bottom position (doors/buttons/plats)
|
||||||
|
float height; // height (plats/trigger_monsterjump)
|
||||||
|
string noise4; // extra sound (doors)
|
||||||
|
entity trigger_field; // used with linking (doors)
|
||||||
|
vector dest1; // passed to CalcMove (doors)
|
||||||
|
vector dest2; // passed to CalcMove (doors)
|
||||||
};
|
};
|
||||||
struct { // fields used with players
|
struct { // fields used with players
|
||||||
float weaponframe_time; // weapon frame advance time
|
float weaponframe_time; // weapon frame advance time
|
||||||
INTEGER weaponstate; // firing state of current weapon
|
INTEGER weaponstate; // firing state of current weapon
|
||||||
float suicide_time; // time to allow suicide after spawn
|
float suicide_time; // time to allow suicide after spawn
|
||||||
float healdecay; // time when health will decay
|
float healdecay; // time when health will decay
|
||||||
float show_hostile; // used to alert monsters
|
float show_hostile; // used to alert monsters
|
||||||
float lightning_sound; // used for lightning sound playback
|
float lightning_sound; // used for lightning sound playback
|
||||||
float fly_sound; // used with trigger_push and maintaining wind sound
|
float fly_sound; // used with trigger_push and maintaining wind sound
|
||||||
|
float invincible_time; // pentagram state
|
||||||
|
float invincible_sound; // pentagram sound playback
|
||||||
|
float invisible_time; // ring state
|
||||||
|
float invisible_sound; // ring sound playback
|
||||||
|
float invisible_finished; // ring current duration
|
||||||
|
float super_time; // quad state
|
||||||
|
float super_sound; // quad sound playback
|
||||||
|
float rad_time; // rad suit state
|
||||||
|
float radsuit_finished; // rad suit current duration
|
||||||
|
float dmgtime; // time slime/lava will damage
|
||||||
|
float swim_flag; // swim sound playback
|
||||||
|
float air_finished; // when time > air_finished, start drowning
|
||||||
|
float waterdmg; // damage water will deal when drowning
|
||||||
|
float walkframe; // used with walking animation
|
||||||
|
float jump_flag; // last z velocity used for falling damage
|
||||||
};
|
};
|
||||||
struct { // fields used with bubbles spawned from drowning
|
struct { // fields used with bubbles spawned from drowning
|
||||||
INTEGER bubble_count; // keeps track of the number of bubbles
|
INTEGER bubble_count; // keeps track of the number of bubbles
|
||||||
|
INTEGER bubble_state; // associated with bubble progression
|
||||||
};
|
};
|
||||||
struct { // fields used with items
|
struct { // fields used with items
|
||||||
float healamount; // amount healed with health item
|
float healamount; // amount healed with health item
|
||||||
float healtype; // type of health with health item
|
INTEGER healtype; // type of health with health item
|
||||||
string mdl; // model used with SUB_regen
|
string mdl; // model used with SUB_regen
|
||||||
float ammo_count; // ammo amount
|
float ammo_count; // ammo amount
|
||||||
};
|
};
|
||||||
|
@ -656,10 +640,14 @@ enum {
|
||||||
float expire_time; // time when projectile dies
|
float expire_time; // time when projectile dies
|
||||||
void() proj_think; // extra think function used with projectile
|
void() proj_think; // extra think function used with projectile
|
||||||
float proj_think_time; // interval between thinks
|
float proj_think_time; // interval between thinks
|
||||||
INTEGER proj_effect; // effect used with projectile
|
INTEGER proj_effect; // effect used with projectile
|
||||||
INTEGER voided; // projectile has been voided
|
INTEGER voided; // projectile has been voided
|
||||||
float() proj_touch; // extra touch function used with projectile
|
float() proj_touch; // extra touch function used with projectile
|
||||||
};
|
};
|
||||||
|
struct { // fields used with lights
|
||||||
|
float light_lev; // not used by game, but parsed by light util
|
||||||
|
float style; // lightstyle to use for light
|
||||||
|
};
|
||||||
// fields used with ambient sounds?
|
// fields used with ambient sounds?
|
||||||
/*
|
/*
|
||||||
struct {
|
struct {
|
||||||
|
|
|
@ -1179,7 +1179,7 @@ void() item_sigil =
|
||||||
precache_sound ("misc/runekey.wav");
|
precache_sound ("misc/runekey.wav");
|
||||||
self.noise = "misc/runekey.wav";
|
self.noise = "misc/runekey.wav";
|
||||||
|
|
||||||
switch (self.spawnflags)
|
switch (self.spawnflags & 15)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
precache_model ("progs/end1.mdl");
|
precache_model ("progs/end1.mdl");
|
||||||
|
|
|
@ -102,6 +102,7 @@ void() light_globe =
|
||||||
{
|
{
|
||||||
precache_model ("progs/s_light.spr");
|
precache_model ("progs/s_light.spr");
|
||||||
setmodel (self, "progs/s_light.spr");
|
setmodel (self, "progs/s_light.spr");
|
||||||
|
self.alpha = 0.5;
|
||||||
makestatic (self);
|
makestatic (self);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -133,6 +134,7 @@ void() light_flame_large_yellow =
|
||||||
precache_model ("progs/flame2.mdl");
|
precache_model ("progs/flame2.mdl");
|
||||||
setmodel (self, "progs/flame2.mdl");
|
setmodel (self, "progs/flame2.mdl");
|
||||||
self.frame = 1;
|
self.frame = 1;
|
||||||
|
self.alpha = 0.5;
|
||||||
FireAmbient ();
|
FireAmbient ();
|
||||||
makestatic (self);
|
makestatic (self);
|
||||||
};
|
};
|
||||||
|
@ -144,6 +146,7 @@ void() light_flame_small_yellow =
|
||||||
{
|
{
|
||||||
precache_model ("progs/flame2.mdl");
|
precache_model ("progs/flame2.mdl");
|
||||||
setmodel (self, "progs/flame2.mdl");
|
setmodel (self, "progs/flame2.mdl");
|
||||||
|
self.alpha = 0.5;
|
||||||
FireAmbient ();
|
FireAmbient ();
|
||||||
makestatic (self);
|
makestatic (self);
|
||||||
};
|
};
|
||||||
|
@ -155,6 +158,7 @@ void() light_flame_small_white =
|
||||||
{
|
{
|
||||||
precache_model ("progs/flame2.mdl");
|
precache_model ("progs/flame2.mdl");
|
||||||
setmodel (self, "progs/flame2.mdl");
|
setmodel (self, "progs/flame2.mdl");
|
||||||
|
self.alpha = 0.5;
|
||||||
FireAmbient ();
|
FireAmbient ();
|
||||||
makestatic (self);
|
makestatic (self);
|
||||||
};
|
};
|
||||||
|
@ -166,8 +170,22 @@ void() light_flame_small_white =
|
||||||
Lava Balls
|
Lava Balls
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void() fire_fly;
|
void() fire_fly =
|
||||||
void() fire_touch;
|
{
|
||||||
|
local vector vel;
|
||||||
|
|
||||||
|
vel_x = (random() * 100) - 50;
|
||||||
|
vel_y = (random() * 100) - 50;
|
||||||
|
vel_z = self.speed + (random() * 200);
|
||||||
|
|
||||||
|
PRJ_FireProjectile (world, "progs/lavaball.mdl", self.origin, vel, PE_NONE, 20, MOD_FIREBALL, 5);
|
||||||
|
newmis.movetype = MOVETYPE_BOUNCE;
|
||||||
|
newmis.alpha = 0.9;
|
||||||
|
|
||||||
|
self.nextthink = time + (random() * 5) + 3;
|
||||||
|
self.think = fire_fly;
|
||||||
|
};
|
||||||
|
|
||||||
void() misc_fireball =
|
void() misc_fireball =
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -179,36 +197,6 @@ void() misc_fireball =
|
||||||
self.speed = 1000;
|
self.speed = 1000;
|
||||||
};
|
};
|
||||||
|
|
||||||
void() fire_fly =
|
|
||||||
{
|
|
||||||
local entity fireball;
|
|
||||||
|
|
||||||
fireball = spawn();
|
|
||||||
fireball.solid = SOLID_TRIGGER;
|
|
||||||
fireball.movetype = MOVETYPE_TOSS;
|
|
||||||
fireball.velocity = '0 0 1000';
|
|
||||||
fireball.velocity_x = (random() * 100) - 50;
|
|
||||||
fireball.velocity_y = (random() * 100) - 50;
|
|
||||||
fireball.velocity_z = self.speed + (random() * 200);
|
|
||||||
fireball.classname = "fireball";
|
|
||||||
setmodel (fireball, "progs/lavaball.mdl");
|
|
||||||
setsize (fireball, '0 0 0', '0 0 0');
|
|
||||||
setorigin (fireball, self.origin);
|
|
||||||
fireball.nextthink = time + 5;
|
|
||||||
fireball.think = SUB_Remove;
|
|
||||||
fireball.touch = fire_touch;
|
|
||||||
|
|
||||||
self.nextthink = time + (random() * 5) + 3;
|
|
||||||
self.think = fire_fly;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void() fire_touch =
|
|
||||||
{
|
|
||||||
T_Damage (other, world, world, 20, MOD_FIREBALL);
|
|
||||||
remove(self);
|
|
||||||
};
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -306,6 +294,7 @@ void() spikeshooter_use =
|
||||||
MOD_LASER,
|
MOD_LASER,
|
||||||
5);
|
5);
|
||||||
newmis.effects |= EF_DIMLIGHT;
|
newmis.effects |= EF_DIMLIGHT;
|
||||||
|
newmis.alpha = 0.5;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -418,7 +407,8 @@ local entity bubble;
|
||||||
bubble.touch = bubble_remove;
|
bubble.touch = bubble_remove;
|
||||||
bubble.classname = "bubble";
|
bubble.classname = "bubble";
|
||||||
bubble.frame = 0;
|
bubble.frame = 0;
|
||||||
bubble.cnt = 0;
|
bubble.bubble_state = 0;
|
||||||
|
bubble.alpha = 0.4;
|
||||||
setsize (bubble, '-8 -8 -8', '8 8 8');
|
setsize (bubble, '-8 -8 -8', '8 8 8');
|
||||||
self.nextthink = time + random() + 0.5;
|
self.nextthink = time + random() + 0.5;
|
||||||
self.think = make_bubbles;
|
self.think = make_bubbles;
|
||||||
|
@ -438,10 +428,10 @@ local entity bubble;
|
||||||
bubble.touch = bubble_remove;
|
bubble.touch = bubble_remove;
|
||||||
bubble.classname = "bubble";
|
bubble.classname = "bubble";
|
||||||
bubble.frame = 1;
|
bubble.frame = 1;
|
||||||
bubble.cnt = 10;
|
bubble.bubble_state = 10;
|
||||||
setsize (bubble, '-8 -8 -8', '8 8 8');
|
setsize (bubble, '-8 -8 -8', '8 8 8');
|
||||||
self.frame = 1;
|
self.frame = 1;
|
||||||
self.cnt = 10;
|
self.bubble_state = 10;
|
||||||
if (self.waterlevel != 3)
|
if (self.waterlevel != 3)
|
||||||
remove (self);
|
remove (self);
|
||||||
};
|
};
|
||||||
|
@ -460,10 +450,10 @@ void() bubble_bob =
|
||||||
{
|
{
|
||||||
local float rnd1, rnd2, rnd3;
|
local float rnd1, rnd2, rnd3;
|
||||||
|
|
||||||
self.cnt = self.cnt + 1;
|
self.bubble_state = self.bubble_state + 1;
|
||||||
if (self.cnt == 4)
|
if (self.bubble_state == 4)
|
||||||
bubble_split();
|
bubble_split();
|
||||||
if (self.cnt == 20)
|
if (self.bubble_state == 20)
|
||||||
remove(self);
|
remove(self);
|
||||||
|
|
||||||
rnd1 = self.velocity_x + (-10 + (random() * 20));
|
rnd1 = self.velocity_x + (-10 + (random() * 20));
|
||||||
|
|
|
@ -317,8 +317,8 @@ local entity bubble;
|
||||||
setsize (bubble, '-8 -8 -8', '8 8 8');
|
setsize (bubble, '-8 -8 -8', '8 8 8');
|
||||||
self.nextthink = time + 0.1;
|
self.nextthink = time + 0.1;
|
||||||
self.think = DeathBubblesSpawn;
|
self.think = DeathBubblesSpawn;
|
||||||
self.air_finished = self.air_finished + 1;
|
self.bubble_count = self.bubble_count - 1;
|
||||||
if (self.air_finished >= self.bubble_count)
|
if (self.bubble_count <= 0)
|
||||||
remove(self);
|
remove(self);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -332,7 +332,6 @@ local entity bubble_spawner;
|
||||||
bubble_spawner.solid = SOLID_NOT;
|
bubble_spawner.solid = SOLID_NOT;
|
||||||
bubble_spawner.nextthink = time + 0.1;
|
bubble_spawner.nextthink = time + 0.1;
|
||||||
bubble_spawner.think = DeathBubblesSpawn;
|
bubble_spawner.think = DeathBubblesSpawn;
|
||||||
bubble_spawner.air_finished = 0;
|
|
||||||
bubble_spawner.owner = self;
|
bubble_spawner.owner = self;
|
||||||
bubble_spawner.bubble_count = num_bubbles;
|
bubble_spawner.bubble_count = num_bubbles;
|
||||||
};
|
};
|
||||||
|
|
|
@ -619,6 +619,12 @@ Walking monsters that touch this will jump in the direction of the trigger's ang
|
||||||
*/
|
*/
|
||||||
void() trigger_monsterjump =
|
void() trigger_monsterjump =
|
||||||
{
|
{
|
||||||
|
if (deathmatch)
|
||||||
|
{
|
||||||
|
remove(self);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!self.speed)
|
if (!self.speed)
|
||||||
self.speed = 200;
|
self.speed = 200;
|
||||||
if (!self.height)
|
if (!self.height)
|
||||||
|
|
Loading…
Reference in a new issue