move enums and constants around
This commit is contained in:
		
							parent
							
								
									8a8b6c6cc1
								
							
						
					
					
						commit
						661307339e
					
				| 
						 | 
				
			
			@ -233,7 +233,7 @@ void() execute_changelevel = {
 | 
			
		|||
 | 
			
		||||
	other = find(world, classname, "player");
 | 
			
		||||
	while(other != world) {
 | 
			
		||||
		other.view_ofs = '0 0 0';
 | 
			
		||||
		other.view_ofs = VEC_ORIGIN;
 | 
			
		||||
		other.angles = other.v_angle = pos.mangle;
 | 
			
		||||
		other.fixangle = TRUE; // turn this way immediately
 | 
			
		||||
		other.nextthink = time + 0.5;
 | 
			
		||||
| 
						 | 
				
			
			@ -449,7 +449,7 @@ void() PutClientInServer = {
 | 
			
		|||
	setmodel(self, "progs/player.mdl");
 | 
			
		||||
	modelindex_player = self.modelindex;
 | 
			
		||||
 | 
			
		||||
	setsize(self, VEC_HULL_MIN, VEC_HULL_MAX);
 | 
			
		||||
	setsize(self, '-16 -16 -24', '16 16 32');
 | 
			
		||||
 | 
			
		||||
	self.view_ofs = '0 0 22';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -593,7 +593,7 @@ void() PlayerDeathThink = {
 | 
			
		|||
		forward = vlen(self.velocity);
 | 
			
		||||
		forward = forward - 20;
 | 
			
		||||
		if(forward <= 0) {
 | 
			
		||||
			self.velocity = '0 0 0';
 | 
			
		||||
			self.velocity = VEC_ORIGIN;
 | 
			
		||||
		} else {
 | 
			
		||||
			self.velocity = forward * normalize(self.velocity);
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -782,15 +782,12 @@ Called every frame before physics are run
 | 
			
		|||
================
 | 
			
		||||
*/
 | 
			
		||||
void() PlayerPreThink = {
 | 
			
		||||
	float mspeed, aspeed;
 | 
			
		||||
	float r;
 | 
			
		||||
 | 
			
		||||
	if(intermission_running) {
 | 
			
		||||
		IntermissionThink(); // otherwise a button could be missed between
 | 
			
		||||
		return; // the think tics
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(self.view_ofs == '0 0 0') {
 | 
			
		||||
	if(self.view_ofs == VEC_ORIGIN) {
 | 
			
		||||
		return; // intermission or finale
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -820,7 +817,7 @@ void() PlayerPreThink = {
 | 
			
		|||
 | 
			
		||||
	// teleporters can force a non-moving pause time
 | 
			
		||||
	if(time < self.pausetime) {
 | 
			
		||||
		self.velocity = '0 0 0';
 | 
			
		||||
		self.velocity = VEC_ORIGIN;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(time > self.attack_finished && self.currentammo == 0 && self.weapon != IT_AXE) {
 | 
			
		||||
| 
						 | 
				
			
			@ -952,7 +949,6 @@ void() CheckPowerups = {
 | 
			
		|||
			self.radsuit_finished = 0;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -963,11 +959,8 @@ Called every frame after physics are run
 | 
			
		|||
================
 | 
			
		||||
*/
 | 
			
		||||
void() PlayerPostThink = {
 | 
			
		||||
	float mspeed, aspeed;
 | 
			
		||||
	float r;
 | 
			
		||||
 | 
			
		||||
	if(self.view_ofs == '0 0 0') {
 | 
			
		||||
		return; // intermission or finale
 | 
			
		||||
	if(self.view_ofs == VEC_ORIGIN) {
 | 
			
		||||
		return; // intermission, finale or spectating
 | 
			
		||||
	}
 | 
			
		||||
	if(self.deadflag) {
 | 
			
		||||
		return;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,10 +53,7 @@ float(entity targ) visible = {
 | 
			
		|||
		return FALSE; // sight line crossed contents
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(trace_fraction == 1) {
 | 
			
		||||
		return TRUE;
 | 
			
		||||
	}
 | 
			
		||||
	return FALSE;
 | 
			
		||||
	return trace_fraction == 1;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// returns 1 if the entity is in front(in sight) of self
 | 
			
		||||
| 
						 | 
				
			
			@ -68,10 +65,7 @@ float(entity targ) infront = {
 | 
			
		|||
	vec = normalize(targ.origin - self.origin);
 | 
			
		||||
	dot = vec * v_forward;
 | 
			
		||||
 | 
			
		||||
	if(dot > 0.3) {
 | 
			
		||||
		return TRUE;
 | 
			
		||||
	}
 | 
			
		||||
	return FALSE;
 | 
			
		||||
	return dot > 0.3;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// EOF
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,8 +20,8 @@ float deathmatch;
 | 
			
		|||
float coop;
 | 
			
		||||
float teamplay;
 | 
			
		||||
 | 
			
		||||
float serverflags; // propagated from level to level, used to
 | 
			
		||||
// keep track of completed episodes
 | 
			
		||||
// propagated from level to level, used to keep track of completed episodes
 | 
			
		||||
float serverflags;
 | 
			
		||||
 | 
			
		||||
float total_secrets;
 | 
			
		||||
float total_monsters;
 | 
			
		||||
| 
						 | 
				
			
			@ -272,11 +272,15 @@ void(entity e) setspawnparms = #78;
 | 
			
		|||
// constants -----------------------------------------------------------------|
 | 
			
		||||
 | 
			
		||||
const vector VEC_ORIGIN = '0 0 0';
 | 
			
		||||
const vector VEC_HULL_MIN = '-16 -16 -24';
 | 
			
		||||
const vector VEC_HULL_MAX = '16 16 32';
 | 
			
		||||
 | 
			
		||||
const vector VEC_HULL2_MIN = '-32 -32 -24';
 | 
			
		||||
const vector VEC_HULL2_MAX = '32 32 64';
 | 
			
		||||
const string WEPNAME_AXE              = "Axe";
 | 
			
		||||
const string WEPNAME_SHOTGUN          = "Shotgun";
 | 
			
		||||
const string WEPNAME_SUPER_SHOTGUN    = "Double-barrelled Shotgun";
 | 
			
		||||
const string WEPNAME_NAILGUN          = "Nailgun";
 | 
			
		||||
const string WEPNAME_SUPER_NAILGUN    = "Super Nailgun";
 | 
			
		||||
const string WEPNAME_GRENADE_LAUNCHER = "Grenade Launcher";
 | 
			
		||||
const string WEPNAME_ROCKET_LAUNCHER  = "Rocket Launcher";
 | 
			
		||||
const string WEPNAME_LIGHTNING        = "Thunderbolt";
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	FALSE,
 | 
			
		||||
| 
						 | 
				
			
			@ -302,8 +306,6 @@ enum {
 | 
			
		|||
// edict.movetype values
 | 
			
		||||
enum {
 | 
			
		||||
	MOVETYPE_NONE, // never moves
 | 
			
		||||
	//MOVETYPE_ANGLENOCLIP,
 | 
			
		||||
	//MOVETYPE_ANGLECLIP,
 | 
			
		||||
	MOVETYPE_WALK = 3, // players only
 | 
			
		||||
	MOVETYPE_STEP, // discrete, not real time unless fall
 | 
			
		||||
	MOVETYPE_FLY,
 | 
			
		||||
| 
						 | 
				
			
			@ -489,6 +491,72 @@ enum {
 | 
			
		|||
 | 
			
		||||
	PRO_MAX,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	DOOR_START_OPEN = 1,
 | 
			
		||||
	DOOR_DONT_LINK = 4,
 | 
			
		||||
	DOOR_GOLD_KEY = 8,
 | 
			
		||||
	DOOR_SILVER_KEY = 16,
 | 
			
		||||
	DOOR_TOGGLE = 32,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	SECRET_OPEN_ONCE = 1, // stays open
 | 
			
		||||
	SECRET_1ST_LEFT = 2, // 1st move is left of arrow
 | 
			
		||||
	SECRET_1ST_DOWN = 4, // 1st move is down from arrow
 | 
			
		||||
	SECRET_NO_SHOOT = 8, // only opened by trigger
 | 
			
		||||
	SECRET_YES_SHOOT = 16, // shootable even if targeted
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	COUNTER_NOMESSAGE = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	MULTIPLE_NOTOUCH = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	TELE_PLAYER_ONLY = 1,
 | 
			
		||||
	TELE_SILENT = 2,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	PUSH_ONCE = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	ZOMBIE_SPAWN_CRUCIFIED = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	PLAT_LOW_TRIGGER = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	LIGHT_START_OFF = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	SPIKESHOOTER_SUPER = 1,
 | 
			
		||||
	SPIKESHOOTER_LASER = 2,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	HEALTH_ROTTEN = 1,
 | 
			
		||||
	HEALTH_MEGA = 2,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	AMMO_BIG = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	WEAPON_SHOTGUN = 1,
 | 
			
		||||
	WEAPON_ROCKET = 2,
 | 
			
		||||
	WEAPON_SPIKES = 4,
 | 
			
		||||
	WEAPON_BIG = 8,
 | 
			
		||||
};
 | 
			
		||||
#pragma noref 0
 | 
			
		||||
 | 
			
		||||
// globals -------------------------------------------------------------------|
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -189,7 +189,7 @@ void() monster_demon1 = {
 | 
			
		|||
 | 
			
		||||
	setmodel(self, "progs/demon.mdl");
 | 
			
		||||
 | 
			
		||||
	setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX);
 | 
			
		||||
	setsize(self, '-32 -32 -24', '32 32 64');
 | 
			
		||||
	self.health = 300;
 | 
			
		||||
 | 
			
		||||
	self.th_stand = demon1_stand1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +1,5 @@
 | 
			
		|||
// doors.qc: player-triggered moving brush entities
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	DOOR_START_OPEN = 1,
 | 
			
		||||
	DOOR_DONT_LINK = 4,
 | 
			
		||||
	DOOR_GOLD_KEY = 8,
 | 
			
		||||
	DOOR_SILVER_KEY = 16,
 | 
			
		||||
	DOOR_TOGGLE = 32,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
Doors are similar to buttons, but can spawn a fat trigger field around them
 | 
			
		||||
| 
						 | 
				
			
			@ -492,14 +484,6 @@ SECRET DOORS
 | 
			
		|||
=============================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	SECRET_OPEN_ONCE = 1, // stays open
 | 
			
		||||
	SECRET_1ST_LEFT = 2, // 1st move is left of arrow
 | 
			
		||||
	SECRET_1ST_DOWN = 4, // 1st move is down from arrow
 | 
			
		||||
	SECRET_NO_SHOOT = 8, // only opened by trigger
 | 
			
		||||
	SECRET_YES_SHOOT = 16, // shootable even if targeted
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void() fd_secret_use = {
 | 
			
		||||
	float temp;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -518,7 +502,7 @@ void() fd_secret_use = {
 | 
			
		|||
		self.th_pain = SUB_PainNull;
 | 
			
		||||
		self.takedamage = DAMAGE_NO;
 | 
			
		||||
	}
 | 
			
		||||
	self.velocity = '0 0 0';
 | 
			
		||||
	self.velocity = VEC_ORIGIN;
 | 
			
		||||
 | 
			
		||||
	// Make a sound, wait a little...
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -682,7 +666,7 @@ void() func_door_secret = {
 | 
			
		|||
 | 
			
		||||
	// Magic formula...
 | 
			
		||||
	self.mangle = self.angles;
 | 
			
		||||
	self.angles = '0 0 0';
 | 
			
		||||
	self.angles = VEC_ORIGIN;
 | 
			
		||||
	self.solid = SOLID_BSP;
 | 
			
		||||
	self.movetype = MOVETYPE_PUSH;
 | 
			
		||||
	self.classname = "door";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,7 +76,7 @@ void(vector org, vector vec) LaunchLaser = {
 | 
			
		|||
	newmis.effects = EF_DIMLIGHT;
 | 
			
		||||
 | 
			
		||||
	setmodel(newmis, "progs/laser.mdl");
 | 
			
		||||
	setsize(newmis, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(newmis, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
 | 
			
		||||
	setorigin(newmis, org);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										109
									
								
								source/items.qc
									
									
									
									
									
								
							
							
						
						
									
										109
									
								
								source/items.qc
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -1,14 +1,5 @@
 | 
			
		|||
// items.qc: items the player can pick up
 | 
			
		||||
 | 
			
		||||
const string WEPNAME_AXE = "Axe";
 | 
			
		||||
const string WEPNAME_SHOTGUN = "Shotgun";
 | 
			
		||||
const string WEPNAME_SUPER_SHOTGUN = "Double-barrelled Shotgun";
 | 
			
		||||
const string WEPNAME_NAILGUN = "Nailgun";
 | 
			
		||||
const string WEPNAME_SUPER_NAILGUN = "Super Nailgun";
 | 
			
		||||
const string WEPNAME_GRENADE_LAUNCHER = "Grenade Launcher";
 | 
			
		||||
const string WEPNAME_ROCKET_LAUNCHER = "Rocket Launcher";
 | 
			
		||||
const string WEPNAME_LIGHTNING = "Thunderbolt";
 | 
			
		||||
 | 
			
		||||
string() Key1Name = {
 | 
			
		||||
	switch(world.worldtype) {
 | 
			
		||||
		case WORLD_MEDIEVAL:
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +63,7 @@ void() PlaceItem = {
 | 
			
		|||
	self.flags = FL_ITEM; // make extra wide
 | 
			
		||||
	self.solid = SOLID_TRIGGER;
 | 
			
		||||
	self.movetype = MOVETYPE_TOSS;
 | 
			
		||||
	self.velocity = '0 0 0';
 | 
			
		||||
	self.velocity = VEC_ORIGIN;
 | 
			
		||||
	self.origin_z = self.origin_z + 6;
 | 
			
		||||
	oldz = self.origin_z;
 | 
			
		||||
	if(!droptofloor()) {
 | 
			
		||||
| 
						 | 
				
			
			@ -133,22 +124,17 @@ rot you down to your maximum health limit,
 | 
			
		|||
one point per second.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	H_ROTTEN = 1,
 | 
			
		||||
	H_MEGA = 2,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void() item_health = {
 | 
			
		||||
	self.touch = health_touch;
 | 
			
		||||
 | 
			
		||||
	if(self.spawnflags & H_ROTTEN) {
 | 
			
		||||
	if(self.spawnflags & HEALTH_ROTTEN) {
 | 
			
		||||
		precache_model("maps/b_bh10.bsp");
 | 
			
		||||
		precache_sound("items/r_item1.wav");
 | 
			
		||||
		setmodel(self, "maps/b_bh10.bsp");
 | 
			
		||||
		self.noise = "items/r_item1.wav";
 | 
			
		||||
		self.healamount = 15;
 | 
			
		||||
		self.healtype = 0;
 | 
			
		||||
	} else if(self.spawnflags & H_MEGA) {
 | 
			
		||||
	} else if(self.spawnflags & HEALTH_MEGA) {
 | 
			
		||||
		precache_model("maps/b_bh100.bsp");
 | 
			
		||||
		precache_sound("items/r_item2.wav");
 | 
			
		||||
		setmodel(self, "maps/b_bh100.bsp");
 | 
			
		||||
| 
						 | 
				
			
			@ -163,7 +149,7 @@ void() item_health = {
 | 
			
		|||
		self.healamount = 25;
 | 
			
		||||
		self.healtype = 1;
 | 
			
		||||
	}
 | 
			
		||||
	setsize(self, '0 0 0', '32 32 56');
 | 
			
		||||
	setsize(self, VEC_ORIGIN, '32 32 56');
 | 
			
		||||
	StartItem();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -680,20 +666,12 @@ void() ammo_touch = {
 | 
			
		|||
	SUB_UseTargets(); // fire all targets / killtargets
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	WEAPON_BIG2 = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*QUAKED item_shells(0 .5 .8) (0 0 0) (32 32 32) big
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
void() item_shells = {
 | 
			
		||||
	self.touch = ammo_touch;
 | 
			
		||||
 | 
			
		||||
	if(self.spawnflags & WEAPON_BIG2) {
 | 
			
		||||
	if(self.spawnflags & AMMO_BIG) {
 | 
			
		||||
		precache_model("maps/b_shell1.bsp");
 | 
			
		||||
		setmodel(self, "maps/b_shell1.bsp");
 | 
			
		||||
		self.aflag = 40;
 | 
			
		||||
| 
						 | 
				
			
			@ -704,17 +682,16 @@ void() item_shells = {
 | 
			
		|||
	}
 | 
			
		||||
	self.weapon = 1;
 | 
			
		||||
	self.netname = "shells";
 | 
			
		||||
	setsize(self, '0 0 0', '32 32 56');
 | 
			
		||||
	setsize(self, VEC_ORIGIN, '32 32 56');
 | 
			
		||||
	StartItem();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*QUAKED item_spikes(0 .5 .8) (0 0 0) (32 32 32) big
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
void() item_spikes = {
 | 
			
		||||
	self.touch = ammo_touch;
 | 
			
		||||
 | 
			
		||||
	if(self.spawnflags & WEAPON_BIG2) {
 | 
			
		||||
	if(self.spawnflags & AMMO_BIG) {
 | 
			
		||||
		precache_model("maps/b_nail1.bsp");
 | 
			
		||||
		setmodel(self, "maps/b_nail1.bsp");
 | 
			
		||||
		self.aflag = 50;
 | 
			
		||||
| 
						 | 
				
			
			@ -725,17 +702,16 @@ void() item_spikes = {
 | 
			
		|||
	}
 | 
			
		||||
	self.weapon = 2;
 | 
			
		||||
	self.netname = "nails";
 | 
			
		||||
	setsize(self, '0 0 0', '32 32 56');
 | 
			
		||||
	setsize(self, VEC_ORIGIN, '32 32 56');
 | 
			
		||||
	StartItem();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*QUAKED item_rockets(0 .5 .8) (0 0 0) (32 32 32) big
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
void() item_rockets = {
 | 
			
		||||
	self.touch = ammo_touch;
 | 
			
		||||
 | 
			
		||||
	if(self.spawnflags & WEAPON_BIG2) {
 | 
			
		||||
	if(self.spawnflags & AMMO_BIG) {
 | 
			
		||||
		precache_model("maps/b_rock1.bsp");
 | 
			
		||||
		setmodel(self, "maps/b_rock1.bsp");
 | 
			
		||||
		self.aflag = 10;
 | 
			
		||||
| 
						 | 
				
			
			@ -746,7 +722,7 @@ void() item_rockets = {
 | 
			
		|||
	}
 | 
			
		||||
	self.weapon = 3;
 | 
			
		||||
	self.netname = "rockets";
 | 
			
		||||
	setsize(self, '0 0 0', '32 32 56');
 | 
			
		||||
	setsize(self, VEC_ORIGIN, '32 32 56');
 | 
			
		||||
	StartItem();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -757,7 +733,7 @@ void() item_rockets = {
 | 
			
		|||
void() item_cells = {
 | 
			
		||||
	self.touch = ammo_touch;
 | 
			
		||||
 | 
			
		||||
	if(self.spawnflags & WEAPON_BIG2) {
 | 
			
		||||
	if(self.spawnflags & AMMO_BIG) {
 | 
			
		||||
		precache_model("maps/b_batt1.bsp");
 | 
			
		||||
		setmodel(self, "maps/b_batt1.bsp");
 | 
			
		||||
		self.aflag = 12;
 | 
			
		||||
| 
						 | 
				
			
			@ -768,71 +744,10 @@ void() item_cells = {
 | 
			
		|||
	}
 | 
			
		||||
	self.weapon = 4;
 | 
			
		||||
	self.netname = "cells";
 | 
			
		||||
	setsize(self, '0 0 0', '32 32 56');
 | 
			
		||||
	setsize(self, VEC_ORIGIN, '32 32 56');
 | 
			
		||||
	StartItem();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*QUAKED item_weapon(0 .5 .8) (0 0 0) (32 32 32) shotgun rocket spikes big
 | 
			
		||||
DO NOT USE THIS!!!! IT WILL BE REMOVED!
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	WEAPON_SHOTGUN = 1,
 | 
			
		||||
	WEAPON_ROCKET = 2,
 | 
			
		||||
	WEAPON_SPIKES = 4,
 | 
			
		||||
	WEAPON_BIG = 8,
 | 
			
		||||
};
 | 
			
		||||
void() item_weapon = {
 | 
			
		||||
	self.touch = ammo_touch;
 | 
			
		||||
 | 
			
		||||
	if(self.spawnflags & WEAPON_SHOTGUN) {
 | 
			
		||||
		if(self.spawnflags & WEAPON_BIG) {
 | 
			
		||||
			precache_model("maps/b_shell1.bsp");
 | 
			
		||||
			setmodel(self, "maps/b_shell1.bsp");
 | 
			
		||||
			self.aflag = 40;
 | 
			
		||||
		} else {
 | 
			
		||||
			precache_model("maps/b_shell0.bsp");
 | 
			
		||||
			setmodel(self, "maps/b_shell0.bsp");
 | 
			
		||||
			self.aflag = 20;
 | 
			
		||||
		}
 | 
			
		||||
		self.weapon = 1;
 | 
			
		||||
		self.netname = "shells";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(self.spawnflags & WEAPON_SPIKES) {
 | 
			
		||||
		if(self.spawnflags & WEAPON_BIG) {
 | 
			
		||||
			precache_model("maps/b_nail1.bsp");
 | 
			
		||||
			setmodel(self, "maps/b_nail1.bsp");
 | 
			
		||||
			self.aflag = 40;
 | 
			
		||||
		} else {
 | 
			
		||||
			precache_model("maps/b_nail0.bsp");
 | 
			
		||||
			setmodel(self, "maps/b_nail0.bsp");
 | 
			
		||||
			self.aflag = 20;
 | 
			
		||||
		}
 | 
			
		||||
		self.weapon = 2;
 | 
			
		||||
		self.netname = "spikes";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(self.spawnflags & WEAPON_ROCKET) {
 | 
			
		||||
		if(self.spawnflags & WEAPON_BIG) {
 | 
			
		||||
			precache_model("maps/b_rock1.bsp");
 | 
			
		||||
			setmodel(self, "maps/b_rock1.bsp");
 | 
			
		||||
			self.aflag = 10;
 | 
			
		||||
		} else {
 | 
			
		||||
			precache_model("maps/b_rock0.bsp");
 | 
			
		||||
			setmodel(self, "maps/b_rock0.bsp");
 | 
			
		||||
			self.aflag = 5;
 | 
			
		||||
		}
 | 
			
		||||
		self.weapon = 3;
 | 
			
		||||
		self.netname = "rockets";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	setsize(self, '0 0 0', '32 32 56');
 | 
			
		||||
	StartItem();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
===============================================================================
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,17 +15,13 @@ void() info_notnull = {
 | 
			
		|||
 | 
			
		||||
//============================================================================
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	START_OFF = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void() light_use = {
 | 
			
		||||
	if(self.spawnflags & START_OFF) {
 | 
			
		||||
	if(self.spawnflags & LIGHT_START_OFF) {
 | 
			
		||||
		lightstyle(self.style, "m");
 | 
			
		||||
		self.spawnflags = self.spawnflags - START_OFF;
 | 
			
		||||
		self.spawnflags = self.spawnflags - LIGHT_START_OFF;
 | 
			
		||||
	} else {
 | 
			
		||||
		lightstyle(self.style, "a");
 | 
			
		||||
		self.spawnflags = self.spawnflags + START_OFF;
 | 
			
		||||
		self.spawnflags = self.spawnflags + LIGHT_START_OFF;
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +40,7 @@ void() light = {
 | 
			
		|||
 | 
			
		||||
	if(self.style >= 32) {
 | 
			
		||||
		self.use = light_use;
 | 
			
		||||
		if(self.spawnflags & START_OFF) {
 | 
			
		||||
		if(self.spawnflags & LIGHT_START_OFF) {
 | 
			
		||||
			lightstyle(self.style, "a");
 | 
			
		||||
		} else {
 | 
			
		||||
			lightstyle(self.style, "m");
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +58,7 @@ Makes steady fluorescent humming sound
 | 
			
		|||
void() light_fluoro = {
 | 
			
		||||
	if(self.style >= 32) {
 | 
			
		||||
		self.use = light_use;
 | 
			
		||||
		if(self.spawnflags & START_OFF) {
 | 
			
		||||
		if(self.spawnflags & LIGHT_START_OFF) {
 | 
			
		||||
			lightstyle(self.style, "a");
 | 
			
		||||
		} else {
 | 
			
		||||
			lightstyle(self.style, "m");
 | 
			
		||||
| 
						 | 
				
			
			@ -176,7 +172,7 @@ void() fire_fly = {
 | 
			
		|||
	fireball.velocity_z = self.speed + (random() * 200);
 | 
			
		||||
	fireball.classname = "fireball";
 | 
			
		||||
	setmodel(fireball, "progs/lavaball.mdl");
 | 
			
		||||
	setsize(fireball, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(fireball, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
	setorigin(fireball, self.origin);
 | 
			
		||||
	fireball.nextthink = time + 5;
 | 
			
		||||
	fireball.think = SUB_Remove;
 | 
			
		||||
| 
						 | 
				
			
			@ -199,7 +195,7 @@ void() barrel_explode = {
 | 
			
		|||
	// did say self.owner
 | 
			
		||||
	T_RadiusDamage(self, self, 160, world);
 | 
			
		||||
	sound(self, CHAN_VOICE, "weapons/r_exp3.wav", 1, ATTN_NORM);
 | 
			
		||||
	particle(self.origin, '0 0 0', 75, 255);
 | 
			
		||||
	particle(self.origin, VEC_ORIGIN, 75, 255);
 | 
			
		||||
 | 
			
		||||
	self.origin_z = self.origin_z + 32;
 | 
			
		||||
	BecomeExplosion();
 | 
			
		||||
| 
						 | 
				
			
			@ -260,20 +256,15 @@ void() misc_explobox2 = {
 | 
			
		|||
 | 
			
		||||
//============================================================================
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	SPAWNFLAG_SUPERSPIKE = 1,
 | 
			
		||||
	SPAWNFLAG_LASER = 2,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void() spikeshooter_use = {
 | 
			
		||||
	if(self.spawnflags & SPAWNFLAG_LASER) {
 | 
			
		||||
	if(self.spawnflags & SPIKESHOOTER_LASER) {
 | 
			
		||||
		sound(self, CHAN_VOICE, "enforcer/enfire.wav", 1, ATTN_NORM);
 | 
			
		||||
		LaunchLaser(self.origin, self.movedir);
 | 
			
		||||
	} else {
 | 
			
		||||
		sound(self, CHAN_VOICE, "weapons/spike2.wav", 1, ATTN_NORM);
 | 
			
		||||
		launch_spike(self.origin, self.movedir);
 | 
			
		||||
		newmis.velocity = self.movedir * 500;
 | 
			
		||||
		if(self.spawnflags & SPAWNFLAG_SUPERSPIKE) {
 | 
			
		||||
		if(self.spawnflags & SPIKESHOOTER_SUPER) {
 | 
			
		||||
			newmis.touch = superspike_touch;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -293,7 +284,7 @@ Laser is only for REGISTERED.
 | 
			
		|||
void() trap_spikeshooter = {
 | 
			
		||||
	SetMovedir();
 | 
			
		||||
	self.use = spikeshooter_use;
 | 
			
		||||
	if(self.spawnflags & SPAWNFLAG_LASER) {
 | 
			
		||||
	if(self.spawnflags & SPIKESHOOTER_LASER) {
 | 
			
		||||
		precache_model2("progs/laser.mdl");
 | 
			
		||||
		precache_sound2("enforcer/enfire.wav");
 | 
			
		||||
		precache_sound2("enforcer/enfstop.wav");
 | 
			
		||||
| 
						 | 
				
			
			@ -442,9 +433,7 @@ void() bubble_bob = {
 | 
			
		|||
Just for the debugging level. Don't use
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
void() viewthing =
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
void() viewthing = {
 | 
			
		||||
	self.movetype = MOVETYPE_NONE;
 | 
			
		||||
	self.solid = SOLID_NOT;
 | 
			
		||||
	precache_model("progs/player.mdl");
 | 
			
		||||
| 
						 | 
				
			
			@ -468,7 +457,7 @@ void() func_wall_use = {
 | 
			
		|||
This is just a solid wall if not inhibitted
 | 
			
		||||
*/
 | 
			
		||||
void() func_wall = {
 | 
			
		||||
	self.angles = '0 0 0';
 | 
			
		||||
	self.angles = VEC_ORIGIN;
 | 
			
		||||
	self.movetype = MOVETYPE_PUSH; // so it doesn't get pushed by anything
 | 
			
		||||
	self.solid = SOLID_BSP;
 | 
			
		||||
	self.use = func_wall_use;
 | 
			
		||||
| 
						 | 
				
			
			@ -479,7 +468,7 @@ void() func_wall = {
 | 
			
		|||
A simple entity that looks solid but lets you walk through it.
 | 
			
		||||
*/
 | 
			
		||||
void() func_illusionary = {
 | 
			
		||||
	self.angles = '0 0 0';
 | 
			
		||||
	self.angles = VEC_ORIGIN;
 | 
			
		||||
	self.movetype = MOVETYPE_NONE;
 | 
			
		||||
	self.solid = SOLID_NOT;
 | 
			
		||||
	setmodel(self, self.model);
 | 
			
		||||
| 
						 | 
				
			
			@ -489,14 +478,12 @@ void() func_illusionary = {
 | 
			
		|||
/*QUAKED func_episodegate(0 .5 .8) ? E1 E2 E3 E4
 | 
			
		||||
This bmodel will appear if the episode has allready been completed, so players can't reenter it.
 | 
			
		||||
*/
 | 
			
		||||
void() func_episodegate =
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
void() func_episodegate = {
 | 
			
		||||
	if(!(serverflags & self.spawnflags)) {
 | 
			
		||||
		return; // can still enter episode
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	self.angles = '0 0 0';
 | 
			
		||||
	self.angles = VEC_ORIGIN;
 | 
			
		||||
	self.movetype = MOVETYPE_PUSH; // so it doesn't get pushed by anything
 | 
			
		||||
	self.solid = SOLID_BSP;
 | 
			
		||||
	self.use = func_wall_use;
 | 
			
		||||
| 
						 | 
				
			
			@ -506,13 +493,11 @@ void() func_episodegate =
 | 
			
		|||
/*QUAKED func_bossgate(0 .5 .8) ?
 | 
			
		||||
This bmodel appears unless players have all of the episode sigils.
 | 
			
		||||
*/
 | 
			
		||||
void() func_bossgate =
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
void() func_bossgate = {
 | 
			
		||||
	if((serverflags & 15) == 15) {
 | 
			
		||||
		return; // all episodes completed
 | 
			
		||||
	}
 | 
			
		||||
	self.angles = '0 0 0';
 | 
			
		||||
	self.angles = VEC_ORIGIN;
 | 
			
		||||
	self.movetype = MOVETYPE_PUSH; // so it doesn't get pushed by anything
 | 
			
		||||
	self.solid = SOLID_BSP;
 | 
			
		||||
	self.use = func_wall_use;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,7 +53,7 @@ void() OgreGrenadeExplode = {
 | 
			
		|||
	WriteCoord(MSG_BROADCAST, self.origin_y);
 | 
			
		||||
	WriteCoord(MSG_BROADCAST, self.origin_z);
 | 
			
		||||
 | 
			
		||||
	self.velocity = '0 0 0';
 | 
			
		||||
	self.velocity = VEC_ORIGIN;
 | 
			
		||||
	self.touch = SUB_Null;
 | 
			
		||||
	setmodel(self, "progs/s_explod.spr");
 | 
			
		||||
	self.solid = SOLID_NOT;
 | 
			
		||||
| 
						 | 
				
			
			@ -69,8 +69,8 @@ void() OgreGrenadeTouch = {
 | 
			
		|||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	sound(self, CHAN_VOICE, "weapons/bounce.wav", 1, ATTN_NORM); // bounce sound
 | 
			
		||||
	if(self.velocity == '0 0 0') {
 | 
			
		||||
		self.avelocity = '0 0 0';
 | 
			
		||||
	if(self.velocity == VEC_ORIGIN) {
 | 
			
		||||
		self.avelocity = VEC_ORIGIN;
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +110,7 @@ void() OgreFireGrenade = {
 | 
			
		|||
	missile.think = OgreGrenadeExplode;
 | 
			
		||||
 | 
			
		||||
	setmodel(missile, "progs/grenade.mdl");
 | 
			
		||||
	setsize(missile, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(missile, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
	setorigin(missile, self.origin);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -422,7 +422,7 @@ void() monster_ogre = {
 | 
			
		|||
 | 
			
		||||
	setmodel(self, "progs/ogre.mdl");
 | 
			
		||||
 | 
			
		||||
	setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX);
 | 
			
		||||
	setsize(self, '-32 -32 -24', '32 32 64');
 | 
			
		||||
	self.health = 200;
 | 
			
		||||
 | 
			
		||||
	self.th_stand = ogre_stand1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -116,7 +116,7 @@ void() finale_1 = {
 | 
			
		|||
 | 
			
		||||
	pl = find(world, classname, "player");
 | 
			
		||||
	while(pl != world) {
 | 
			
		||||
		pl.view_ofs = '0 0 0';
 | 
			
		||||
		pl.view_ofs = VEC_ORIGIN;
 | 
			
		||||
		pl.angles = other.v_angle = pos.mangle;
 | 
			
		||||
		pl.fixangle = TRUE; // turn this way immediately
 | 
			
		||||
		pl.map = self.map;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,5 @@
 | 
			
		|||
// plats.qc: moving platforms
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	PLAT_LOW_TRIGGER = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void() plat_spawn_inside_trigger = {
 | 
			
		||||
	entity trigger;
 | 
			
		||||
	vector tmin, tmax;
 | 
			
		||||
| 
						 | 
				
			
			@ -165,7 +161,7 @@ void() func_plat = {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	self.mangle = self.angles;
 | 
			
		||||
	self.angles = '0 0 0';
 | 
			
		||||
	self.angles = VEC_ORIGIN;
 | 
			
		||||
 | 
			
		||||
	self.classname = "plat";
 | 
			
		||||
	self.solid = SOLID_BSP;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -436,7 +436,7 @@ void(string gibname, float dm) ThrowGib = {
 | 
			
		|||
	new = spawn();
 | 
			
		||||
	new.origin = self.origin;
 | 
			
		||||
	setmodel(new, gibname);
 | 
			
		||||
	setsize(new, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(new, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
	new.velocity = VelocityForDamage(dm);
 | 
			
		||||
	new.movetype = MOVETYPE_BOUNCE;
 | 
			
		||||
	new.solid = SOLID_NOT;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -137,7 +137,7 @@ void() ShalMissile = {
 | 
			
		|||
	missile.movetype = MOVETYPE_FLYMISSILE;
 | 
			
		||||
	setmodel(missile, "progs/v_spike.mdl");
 | 
			
		||||
 | 
			
		||||
	setsize(missile, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(missile, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
 | 
			
		||||
	missile.origin = self.origin + '0 0 10';
 | 
			
		||||
	missile.velocity = dir * 400;
 | 
			
		||||
| 
						 | 
				
			
			@ -182,7 +182,7 @@ void() ShalMissileTouch = {
 | 
			
		|||
	WriteCoord(MSG_BROADCAST, self.origin_y);
 | 
			
		||||
	WriteCoord(MSG_BROADCAST, self.origin_z);
 | 
			
		||||
 | 
			
		||||
	self.velocity = '0 0 0';
 | 
			
		||||
	self.velocity = VEC_ORIGIN;
 | 
			
		||||
	self.touch = SUB_Null;
 | 
			
		||||
	setmodel(self, "progs/s_explod.spr");
 | 
			
		||||
	self.solid = SOLID_NOT;
 | 
			
		||||
| 
						 | 
				
			
			@ -213,7 +213,7 @@ void() monster_shalrath = {
 | 
			
		|||
	self.movetype = MOVETYPE_STEP;
 | 
			
		||||
 | 
			
		||||
	setmodel(self, "progs/shalrath.mdl");
 | 
			
		||||
	setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX);
 | 
			
		||||
	setsize(self, '-32 -32 -24', '32 32 64');
 | 
			
		||||
	self.health = 400;
 | 
			
		||||
 | 
			
		||||
	self.th_stand = shal_stand;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -346,7 +346,7 @@ void() monster_shambler = {
 | 
			
		|||
	self.movetype = MOVETYPE_STEP;
 | 
			
		||||
	setmodel(self, "progs/shambler.mdl");
 | 
			
		||||
 | 
			
		||||
	setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX);
 | 
			
		||||
	setsize(self, '-32 -32 -24', '32 32 64');
 | 
			
		||||
	self.health = 600;
 | 
			
		||||
 | 
			
		||||
	self.th_stand = sham_stand1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ void() SetMovedir = {
 | 
			
		|||
		self.movedir = v_forward;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	self.angles = '0 0 0';
 | 
			
		||||
	self.angles = VEC_ORIGIN;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -29,7 +29,7 @@ InitTrigger
 | 
			
		|||
void() InitTrigger = {
 | 
			
		||||
	// trigger angles are used for one-way touches. An angle of 0 is assumed
 | 
			
		||||
	// to mean no restrictions, so use a yaw of 360 instead.
 | 
			
		||||
	if(self.angles != '0 0 0') {
 | 
			
		||||
	if(self.angles != VEC_ORIGIN) {
 | 
			
		||||
		SetMovedir();
 | 
			
		||||
	}
 | 
			
		||||
	self.solid = SOLID_TRIGGER;
 | 
			
		||||
| 
						 | 
				
			
			@ -69,7 +69,7 @@ void(vector tdest, float tspeed, void() func) SUB_CalcMove = {
 | 
			
		|||
	self.think = SUB_CalcMoveDone;
 | 
			
		||||
 | 
			
		||||
	if(tdest == self.origin) {
 | 
			
		||||
		self.velocity = '0 0 0';
 | 
			
		||||
		self.velocity = VEC_ORIGIN;
 | 
			
		||||
		self.nextthink = self.ltime + 0.1;
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -84,7 +84,7 @@ void(vector tdest, float tspeed, void() func) SUB_CalcMove = {
 | 
			
		|||
	traveltime = len / tspeed;
 | 
			
		||||
 | 
			
		||||
	if(traveltime < 0.1) {
 | 
			
		||||
		self.velocity = '0 0 0';
 | 
			
		||||
		self.velocity = VEC_ORIGIN;
 | 
			
		||||
		self.nextthink = self.ltime + 0.1;
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -103,7 +103,7 @@ After moving, set origin to exact final destination
 | 
			
		|||
*/
 | 
			
		||||
void() SUB_CalcMoveDone = {
 | 
			
		||||
	setorigin(self, self.finaldest);
 | 
			
		||||
	self.velocity = '0 0 0';
 | 
			
		||||
	self.velocity = VEC_ORIGIN;
 | 
			
		||||
	self.nextthink = -1;
 | 
			
		||||
	if(self.think1) {
 | 
			
		||||
		self.think1();
 | 
			
		||||
| 
						 | 
				
			
			@ -163,7 +163,7 @@ After rotating, set angle to exact final angle
 | 
			
		|||
*/
 | 
			
		||||
void() SUB_CalcAngleMoveDone = {
 | 
			
		||||
	self.angles = self.finalangle;
 | 
			
		||||
	self.avelocity = '0 0 0';
 | 
			
		||||
	self.avelocity = VEC_ORIGIN;
 | 
			
		||||
	self.nextthink = -1;
 | 
			
		||||
	if(self.think1) {
 | 
			
		||||
		self.think1();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,14 +6,6 @@ void() trigger_reactivate = {
 | 
			
		|||
 | 
			
		||||
//=============================================================================
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	SPAWNFLAG_NOMESSAGE = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	SPAWNFLAG_NOTOUCH = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// the wait time has passed, so set back up for another activation
 | 
			
		||||
void() multi_wait = {
 | 
			
		||||
	if(self.max_health) {
 | 
			
		||||
| 
						 | 
				
			
			@ -78,7 +70,7 @@ void() multi_touch = {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	// if the trigger has an angles field, check player's facing direction
 | 
			
		||||
	if(self.movedir != '0 0 0') {
 | 
			
		||||
	if(self.movedir != VEC_ORIGIN) {
 | 
			
		||||
		makevectors(other.angles);
 | 
			
		||||
		if(v_forward * self.movedir < 0) {
 | 
			
		||||
			return; // not facing the right way
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +114,7 @@ void() trigger_multiple = {
 | 
			
		|||
	InitTrigger();
 | 
			
		||||
 | 
			
		||||
	if(self.health) {
 | 
			
		||||
		if(self.spawnflags & SPAWNFLAG_NOTOUCH) {
 | 
			
		||||
		if(self.spawnflags & MULTIPLE_NOTOUCH) {
 | 
			
		||||
			objerror("health and notouch don't make sense\n");
 | 
			
		||||
		}
 | 
			
		||||
		self.max_health = self.health;
 | 
			
		||||
| 
						 | 
				
			
			@ -131,7 +123,7 @@ void() trigger_multiple = {
 | 
			
		|||
		self.solid = SOLID_BBOX;
 | 
			
		||||
		setorigin(self, self.origin); // make sure it links into the world
 | 
			
		||||
	} else {
 | 
			
		||||
		if(!(self.spawnflags & SPAWNFLAG_NOTOUCH)) {
 | 
			
		||||
		if(!(self.spawnflags & MULTIPLE_NOTOUCH)) {
 | 
			
		||||
			self.touch = multi_touch;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -199,8 +191,6 @@ void() trigger_secret = {
 | 
			
		|||
//=============================================================================
 | 
			
		||||
 | 
			
		||||
void() counter_use = {
 | 
			
		||||
	string junk;
 | 
			
		||||
 | 
			
		||||
	self.count = self.count - 1;
 | 
			
		||||
	if(self.count < 0) {
 | 
			
		||||
		return;
 | 
			
		||||
| 
						 | 
				
			
			@ -208,7 +198,7 @@ void() counter_use = {
 | 
			
		|||
 | 
			
		||||
	if(self.count != 0) {
 | 
			
		||||
		if(activator.classname == "player"
 | 
			
		||||
				&& (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0) {
 | 
			
		||||
				&& (self.spawnflags & COUNTER_NOMESSAGE) == 0) {
 | 
			
		||||
			if(self.count >= 4) {
 | 
			
		||||
				centerprint(activator, "There are more to go...");
 | 
			
		||||
			} else if(self.count == 3) {
 | 
			
		||||
| 
						 | 
				
			
			@ -222,8 +212,7 @@ void() counter_use = {
 | 
			
		|||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(activator.classname == "player"
 | 
			
		||||
			&& (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0) {
 | 
			
		||||
	if(activator.classname == "player" && (self.spawnflags & COUNTER_NOMESSAGE) == 0) {
 | 
			
		||||
		centerprint(activator, "Sequence completed!");
 | 
			
		||||
	}
 | 
			
		||||
	self.enemy = activator;
 | 
			
		||||
| 
						 | 
				
			
			@ -254,11 +243,6 @@ TELEPORT TRIGGERS
 | 
			
		|||
==============================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	PLAYER_ONLY = 1,
 | 
			
		||||
	SILENT = 2,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void() play_teleport = {
 | 
			
		||||
	float v;
 | 
			
		||||
	string tmpstr;
 | 
			
		||||
| 
						 | 
				
			
			@ -324,7 +308,7 @@ void(vector org, entity death_owner) spawn_tdeath = {
 | 
			
		|||
	death.classname = "teledeath";
 | 
			
		||||
	death.movetype = MOVETYPE_NONE;
 | 
			
		||||
	death.solid = SOLID_TRIGGER;
 | 
			
		||||
	death.angles = '0 0 0';
 | 
			
		||||
	death.angles = VEC_ORIGIN;
 | 
			
		||||
	setsize(death, death_owner.mins - '1 1 1', death_owner.maxs + '1 1 1');
 | 
			
		||||
	setorigin(death, org);
 | 
			
		||||
	death.touch = tdeath_touch;
 | 
			
		||||
| 
						 | 
				
			
			@ -345,7 +329,7 @@ void() teleport_touch = {
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(self.spawnflags & PLAYER_ONLY) {
 | 
			
		||||
	if(self.spawnflags & TELE_PLAYER_ONLY) {
 | 
			
		||||
		if(other.classname != "player") {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -399,7 +383,7 @@ This is the destination marker for a teleporter. It should have a "targetname" f
 | 
			
		|||
void() info_teleport_destination = {
 | 
			
		||||
	// this does nothing, just serves as a target spot
 | 
			
		||||
	self.mangle = self.angles;
 | 
			
		||||
	self.angles = '0 0 0';
 | 
			
		||||
	self.angles = VEC_ORIGIN;
 | 
			
		||||
	self.model = "";
 | 
			
		||||
	self.origin = self.origin + '0 0 27';
 | 
			
		||||
	if(!self.targetname) {
 | 
			
		||||
| 
						 | 
				
			
			@ -429,7 +413,7 @@ void() trigger_teleport = {
 | 
			
		|||
	}
 | 
			
		||||
	self.use = teleport_use;
 | 
			
		||||
 | 
			
		||||
	if(!(self.spawnflags & SILENT)) {
 | 
			
		||||
	if(!(self.spawnflags & TELE_SILENT)) {
 | 
			
		||||
		precache_sound("ambience/hum1.wav");
 | 
			
		||||
		o = (self.mins + self.maxs) * 0.5;
 | 
			
		||||
		ambientsound(o, "ambience/hum1.wav", 0.5, ATTN_STATIC);
 | 
			
		||||
| 
						 | 
				
			
			@ -532,10 +516,6 @@ void() trigger_hurt = {
 | 
			
		|||
 | 
			
		||||
//============================================================================
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	PUSH_ONCE = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void() trigger_push_touch = {
 | 
			
		||||
	if(other.classname == "grenade") {
 | 
			
		||||
		other.velocity = self.speed * self.movedir * 10;
 | 
			
		||||
| 
						 | 
				
			
			@ -597,7 +577,7 @@ void() trigger_monsterjump = {
 | 
			
		|||
	if(!self.height) {
 | 
			
		||||
		self.height = 200;
 | 
			
		||||
	}
 | 
			
		||||
	if(self.angles == '0 0 0') {
 | 
			
		||||
	if(self.angles == VEC_ORIGIN) {
 | 
			
		||||
		self.angles = '0 360 0';
 | 
			
		||||
	}
 | 
			
		||||
	InitTrigger();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ void() W_FireAxe = {
 | 
			
		|||
 | 
			
		||||
	if(trace_ent.takedamage) {
 | 
			
		||||
		trace_ent.axhitme = 1;
 | 
			
		||||
		SpawnBlood(org, '0 0 0', 20);
 | 
			
		||||
		SpawnBlood(org, VEC_ORIGIN, 20);
 | 
			
		||||
		T_Damage(trace_ent, self, self, 20);
 | 
			
		||||
	} else {
 | 
			
		||||
		// hit wall
 | 
			
		||||
| 
						 | 
				
			
			@ -88,7 +88,7 @@ void(vector org, vector vel) SpawnMeatSpray = {
 | 
			
		|||
	missile.think = SUB_Remove;
 | 
			
		||||
 | 
			
		||||
	setmodel(missile, "progs/zom_gib.mdl");
 | 
			
		||||
	setsize(missile, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(missile, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
	setorigin(missile, org);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -277,7 +277,7 @@ void() s_explode6 = [5, SUB_Remove] {};
 | 
			
		|||
 | 
			
		||||
void() BecomeExplosion = {
 | 
			
		||||
	self.movetype = MOVETYPE_NONE;
 | 
			
		||||
	self.velocity = '0 0 0';
 | 
			
		||||
	self.velocity = VEC_ORIGIN;
 | 
			
		||||
	self.touch = SUB_Null;
 | 
			
		||||
	setmodel(self, "progs/s_explod.spr");
 | 
			
		||||
	self.solid = SOLID_NOT;
 | 
			
		||||
| 
						 | 
				
			
			@ -356,7 +356,7 @@ void() W_FireRocket = {
 | 
			
		|||
	missile.think = SUB_Remove;
 | 
			
		||||
 | 
			
		||||
	setmodel(missile, "progs/missile.mdl");
 | 
			
		||||
	setsize(missile, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(missile, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
	setorigin(missile, self.origin + v_forward * 8 + '0 0 16');
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -479,8 +479,8 @@ void() GrenadeTouch = {
 | 
			
		|||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	sound(self, CHAN_WEAPON, "weapons/bounce.wav", 1, ATTN_NORM); // bounce sound
 | 
			
		||||
	if(self.velocity == '0 0 0') {
 | 
			
		||||
		self.avelocity = '0 0 0';
 | 
			
		||||
	if(self.velocity == VEC_ORIGIN) {
 | 
			
		||||
		self.avelocity = VEC_ORIGIN;
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -527,7 +527,7 @@ void() W_FireGrenade = {
 | 
			
		|||
	missile.think = GrenadeExplode;
 | 
			
		||||
 | 
			
		||||
	setmodel(missile, "progs/grenade.mdl");
 | 
			
		||||
	setsize(missile, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(missile, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
	setorigin(missile, self.origin);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -679,51 +679,61 @@ PLAYER WEAPON USE
 | 
			
		|||
void() W_SetCurrentAmmo = {
 | 
			
		||||
	player_run(); // get out of any weapon firing states
 | 
			
		||||
 | 
			
		||||
	self.items = self.items - (self.items & (IT_SHELLS | IT_NAILS | IT_ROCKETS | IT_CELLS));
 | 
			
		||||
	self.items &= ~(IT_SHELLS | IT_NAILS | IT_ROCKETS | IT_CELLS);
 | 
			
		||||
 | 
			
		||||
	if(self.weapon == IT_AXE) {
 | 
			
		||||
		self.currentammo = 0;
 | 
			
		||||
		self.weaponmodel = "progs/v_axe.mdl";
 | 
			
		||||
		self.weaponframe = 0;
 | 
			
		||||
	} else if(self.weapon == IT_SHOTGUN) {
 | 
			
		||||
		self.currentammo = self.ammo_shells;
 | 
			
		||||
		self.weaponmodel = "progs/v_shot.mdl";
 | 
			
		||||
		self.weaponframe = 0;
 | 
			
		||||
		self.items = self.items | IT_SHELLS;
 | 
			
		||||
	} else if(self.weapon == IT_SUPER_SHOTGUN) {
 | 
			
		||||
		self.currentammo = self.ammo_shells;
 | 
			
		||||
		self.weaponmodel = "progs/v_shot2.mdl";
 | 
			
		||||
		self.weaponframe = 0;
 | 
			
		||||
		self.items = self.items | IT_SHELLS;
 | 
			
		||||
	} else if(self.weapon == IT_NAILGUN) {
 | 
			
		||||
		self.currentammo = self.ammo_nails;
 | 
			
		||||
		self.weaponmodel = "progs/v_nail.mdl";
 | 
			
		||||
		self.weaponframe = 0;
 | 
			
		||||
		self.items = self.items | IT_NAILS;
 | 
			
		||||
	} else if(self.weapon == IT_SUPER_NAILGUN) {
 | 
			
		||||
		self.currentammo = self.ammo_nails;
 | 
			
		||||
		self.weaponmodel = "progs/v_nail2.mdl";
 | 
			
		||||
		self.weaponframe = 0;
 | 
			
		||||
		self.items = self.items | IT_NAILS;
 | 
			
		||||
	} else if(self.weapon == IT_GRENADE_LAUNCHER) {
 | 
			
		||||
		self.currentammo = self.ammo_rockets;
 | 
			
		||||
		self.weaponmodel = "progs/v_rock.mdl";
 | 
			
		||||
		self.weaponframe = 0;
 | 
			
		||||
		self.items = self.items | IT_ROCKETS;
 | 
			
		||||
	} else if(self.weapon == IT_ROCKET_LAUNCHER) {
 | 
			
		||||
		self.currentammo = self.ammo_rockets;
 | 
			
		||||
		self.weaponmodel = "progs/v_rock2.mdl";
 | 
			
		||||
		self.weaponframe = 0;
 | 
			
		||||
		self.items = self.items | IT_ROCKETS;
 | 
			
		||||
	} else if(self.weapon == IT_LIGHTNING) {
 | 
			
		||||
		self.currentammo = self.ammo_cells;
 | 
			
		||||
		self.weaponmodel = "progs/v_light.mdl";
 | 
			
		||||
		self.weaponframe = 0;
 | 
			
		||||
		self.items = self.items | IT_CELLS;
 | 
			
		||||
	} else {
 | 
			
		||||
		self.currentammo = 0;
 | 
			
		||||
		self.weaponmodel = "";
 | 
			
		||||
		self.weaponframe = 0;
 | 
			
		||||
	switch(self.weapon) {
 | 
			
		||||
		case IT_AXE:
 | 
			
		||||
			self.currentammo = 0;
 | 
			
		||||
			self.weaponmodel = "progs/v_axe.mdl";
 | 
			
		||||
			self.weaponframe = 0;
 | 
			
		||||
			break;
 | 
			
		||||
		case IT_SHOTGUN:
 | 
			
		||||
			self.currentammo = self.ammo_shells;
 | 
			
		||||
			self.weaponmodel = "progs/v_shot.mdl";
 | 
			
		||||
			self.weaponframe = 0;
 | 
			
		||||
			self.items |= IT_SHELLS;
 | 
			
		||||
			break;
 | 
			
		||||
		case IT_SUPER_SHOTGUN:
 | 
			
		||||
			self.currentammo = self.ammo_shells;
 | 
			
		||||
			self.weaponmodel = "progs/v_shot2.mdl";
 | 
			
		||||
			self.weaponframe = 0;
 | 
			
		||||
			self.items |= IT_SHELLS;
 | 
			
		||||
			break;
 | 
			
		||||
		case IT_NAILGUN:
 | 
			
		||||
			self.currentammo = self.ammo_nails;
 | 
			
		||||
			self.weaponmodel = "progs/v_nail.mdl";
 | 
			
		||||
			self.weaponframe = 0;
 | 
			
		||||
			self.items |= IT_NAILS;
 | 
			
		||||
			break;
 | 
			
		||||
		case IT_SUPER_NAILGUN:
 | 
			
		||||
			self.currentammo = self.ammo_nails;
 | 
			
		||||
			self.weaponmodel = "progs/v_nail2.mdl";
 | 
			
		||||
			self.weaponframe = 0;
 | 
			
		||||
			self.items |= IT_NAILS;
 | 
			
		||||
			break;
 | 
			
		||||
		case IT_GRENADE_LAUNCHER:
 | 
			
		||||
			self.currentammo = self.ammo_rockets;
 | 
			
		||||
			self.weaponmodel = "progs/v_rock.mdl";
 | 
			
		||||
			self.weaponframe = 0;
 | 
			
		||||
			self.items |= IT_ROCKETS;
 | 
			
		||||
			break;
 | 
			
		||||
		case IT_ROCKET_LAUNCHER:
 | 
			
		||||
			self.currentammo = self.ammo_rockets;
 | 
			
		||||
			self.weaponmodel = "progs/v_rock2.mdl";
 | 
			
		||||
			self.weaponframe = 0;
 | 
			
		||||
			self.items |= IT_ROCKETS;
 | 
			
		||||
			break;
 | 
			
		||||
		case IT_LIGHTNING:
 | 
			
		||||
			self.currentammo = self.ammo_cells;
 | 
			
		||||
			self.weaponmodel = "progs/v_light.mdl";
 | 
			
		||||
			self.weaponframe = 0;
 | 
			
		||||
			self.items |= IT_CELLS;
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			self.currentammo = 0;
 | 
			
		||||
			self.weaponmodel = "";
 | 
			
		||||
			self.weaponframe = 0;
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,7 +62,7 @@ void(entity missile, float mspeed, float accuracy) LaunchMissile = {
 | 
			
		|||
 | 
			
		||||
	missile.velocity = vec * mspeed;
 | 
			
		||||
 | 
			
		||||
	missile.angles = '0 0 0';
 | 
			
		||||
	missile.angles = VEC_ORIGIN;
 | 
			
		||||
	missile.angles_y = vectoyaw(missile.velocity);
 | 
			
		||||
 | 
			
		||||
	// set missile duration
 | 
			
		||||
| 
						 | 
				
			
			@ -196,7 +196,7 @@ void() Wiz_StartFast = {
 | 
			
		|||
	missile = spawn();
 | 
			
		||||
	missile.owner = self;
 | 
			
		||||
	missile.nextthink = time + 0.6;
 | 
			
		||||
	setsize(missile, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(missile, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
	setorigin(missile, self.origin + '0 0 30' + v_forward * 14 + v_right * 14);
 | 
			
		||||
	missile.enemy = self.enemy;
 | 
			
		||||
	missile.nextthink = time + 0.8;
 | 
			
		||||
| 
						 | 
				
			
			@ -206,7 +206,7 @@ void() Wiz_StartFast = {
 | 
			
		|||
	missile = spawn();
 | 
			
		||||
	missile.owner = self;
 | 
			
		||||
	missile.nextthink = time + 1;
 | 
			
		||||
	setsize(missile, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(missile, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
	setorigin(missile, self.origin + '0 0 30' + v_forward * 14 + v_right * -14);
 | 
			
		||||
	missile.enemy = self.enemy;
 | 
			
		||||
	missile.nextthink = time + 0.3;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,10 +45,6 @@ $frame paine29 paine30
 | 
			
		|||
 | 
			
		||||
$frame cruc_1 cruc_2 cruc_3 cruc_4 cruc_5 cruc_6
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	SPAWN_CRUCIFIED = 1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//=============================================================================
 | 
			
		||||
 | 
			
		||||
void() zombie_stand1 = [ $stand1, zombie_stand2 ] {ai_stand();};
 | 
			
		||||
| 
						 | 
				
			
			@ -149,8 +145,8 @@ void() ZombieGrenadeTouch = {
 | 
			
		|||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	sound(self, CHAN_WEAPON, "zombie/z_miss.wav", 1, ATTN_NORM); // bounce sound
 | 
			
		||||
	self.velocity = '0 0 0';
 | 
			
		||||
	self.avelocity = '0 0 0';
 | 
			
		||||
	self.velocity = VEC_ORIGIN;
 | 
			
		||||
	self.avelocity = VEC_ORIGIN;
 | 
			
		||||
	self.touch = SUB_Remove;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -190,7 +186,7 @@ void(vector st) ZombieFireGrenade = {
 | 
			
		|||
	missile.think = SUB_Remove;
 | 
			
		||||
 | 
			
		||||
	setmodel(missile, "progs/zom_gib.mdl");
 | 
			
		||||
	setsize(missile, '0 0 0', '0 0 0');
 | 
			
		||||
	setsize(missile, VEC_ORIGIN, VEC_ORIGIN);
 | 
			
		||||
	setorigin(missile, org);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -497,7 +493,7 @@ void() monster_zombie = {
 | 
			
		|||
	self.th_die = zombie_die;
 | 
			
		||||
	self.th_missile = zombie_missile;
 | 
			
		||||
 | 
			
		||||
	if(self.spawnflags & SPAWN_CRUCIFIED) {
 | 
			
		||||
	if(self.spawnflags & ZOMBIE_SPAWN_CRUCIFIED) {
 | 
			
		||||
		self.movetype = MOVETYPE_NONE;
 | 
			
		||||
		zombie_cruc1();
 | 
			
		||||
	} else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user