implement ammo distribution flag
This commit is contained in:
		
							parent
							
								
									71ac1c45a1
								
							
						
					
					
						commit
						6bca60e74a
					
				| 
						 | 
				
			
			@ -442,7 +442,7 @@ void() weapon_touch = {
 | 
			
		|||
	sound(other, CHAN_ITEM, "weapons/pkup.wav", 1, ATTN_NORM);
 | 
			
		||||
	stuffcmd(other, "bf\n");
 | 
			
		||||
 | 
			
		||||
	bound_other_ammo();
 | 
			
		||||
	bound_ammo(other);
 | 
			
		||||
 | 
			
		||||
	// change to the weapon
 | 
			
		||||
	old = other.items;
 | 
			
		||||
| 
						 | 
				
			
			@ -566,65 +566,66 @@ AMMO
 | 
			
		|||
===============================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
void(.float ammo, float max) distribute_ammo = {
 | 
			
		||||
	entity pl, stemp;
 | 
			
		||||
 | 
			
		||||
	if(sf_dist_ammo) {
 | 
			
		||||
		pl = find(world, classname, "player");
 | 
			
		||||
		while(pl != world) {
 | 
			
		||||
			pl.ammo += self.aflag;
 | 
			
		||||
			bound_ammo(pl);
 | 
			
		||||
			stemp = self;
 | 
			
		||||
			self = pl;
 | 
			
		||||
			W_SetCurrentAmmo();
 | 
			
		||||
			self = stemp;
 | 
			
		||||
			pl = find(pl, classname, "player");
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		if(other.ammo >= max) {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		other.ammo += self.aflag;
 | 
			
		||||
		bound_ammo(other);
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void() ammo_touch = {
 | 
			
		||||
	entity stemp;
 | 
			
		||||
	float best;
 | 
			
		||||
 | 
			
		||||
	if(other.classname != "player") {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	if(other.health <= 0) {
 | 
			
		||||
	if(other.classname != "player" || other.health <= 0) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// if the player was using their best weapon, change up to the new one if better
 | 
			
		||||
	// if the player was using their best weapon, change up to the new one if
 | 
			
		||||
	// better
 | 
			
		||||
	stemp = self;
 | 
			
		||||
	self = other;
 | 
			
		||||
	best = W_BestWeapon();
 | 
			
		||||
	self = stemp;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	// shotgun
 | 
			
		||||
	if(self.weapon == 1) {
 | 
			
		||||
		if(other.ammo_shells >= 100) {
 | 
			
		||||
			return;
 | 
			
		||||
	switch(self.weapon) {
 | 
			
		||||
		case AMTYPE_SHELLS:
 | 
			
		||||
			distribute_ammo(ammo_shells, AMMAX_SHELLS);
 | 
			
		||||
			break;
 | 
			
		||||
		case AMTYPE_NAILS:
 | 
			
		||||
			distribute_ammo(ammo_nails, AMMAX_NAILS);
 | 
			
		||||
			break;
 | 
			
		||||
		case AMTYPE_ROCKETS:
 | 
			
		||||
			distribute_ammo(ammo_rockets, AMMAX_ROCKETS);
 | 
			
		||||
			break;
 | 
			
		||||
		case AMTYPE_CELLS:
 | 
			
		||||
			distribute_ammo(ammo_cells, AMMAX_CELLS);
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
		other.ammo_shells = other.ammo_shells + self.aflag;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// spikes
 | 
			
		||||
	if(self.weapon == 2) {
 | 
			
		||||
		if(other.ammo_nails >= 200) {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		other.ammo_nails = other.ammo_nails + self.aflag;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// rockets
 | 
			
		||||
	if(self.weapon == 3) {
 | 
			
		||||
		if(other.ammo_rockets >= 100) {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		other.ammo_rockets = other.ammo_rockets + self.aflag;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// cells
 | 
			
		||||
	if(self.weapon == 4) {
 | 
			
		||||
		if(other.ammo_cells >= 100) {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		other.ammo_cells = other.ammo_cells + self.aflag;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bound_other_ammo();
 | 
			
		||||
 | 
			
		||||
	sprint(other, "You got the ", self.netname, "\n");
 | 
			
		||||
 | 
			
		||||
	// ammo touch sound
 | 
			
		||||
	sound(other, CHAN_ITEM, "weapons/lock4.wav", 1, ATTN_NORM);
 | 
			
		||||
	stuffcmd(other, "bf\n");
 | 
			
		||||
 | 
			
		||||
	// change to a better weapon if appropriate
 | 
			
		||||
 | 
			
		||||
	if(other.weapon == best) {
 | 
			
		||||
		stemp = self;
 | 
			
		||||
		self = other;
 | 
			
		||||
| 
						 | 
				
			
			@ -1100,7 +1101,7 @@ void() BackpackTouch = {
 | 
			
		|||
	old = other.items;
 | 
			
		||||
	other.items = other.items | new;
 | 
			
		||||
 | 
			
		||||
	bound_other_ammo();
 | 
			
		||||
	bound_ammo(other);
 | 
			
		||||
 | 
			
		||||
	if(self.ammo_shells) {
 | 
			
		||||
		if(acount) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										6
									
								
								todo
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								todo
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -9,7 +9,8 @@ rename all functions to be lower_underscore
 | 
			
		|||
 | 
			
		||||
core features:
 | 
			
		||||
 | 
			
		||||
distributed ammo
 | 
			
		||||
add registercvar support
 | 
			
		||||
restart map after 10 seconds when everyone is dead
 | 
			
		||||
 | 
			
		||||
useful features:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -21,7 +22,7 @@ extraneous features:
 | 
			
		|||
 | 
			
		||||
emotes
 | 
			
		||||
player sound effect option
 | 
			
		||||
players shoot through eachother
 | 
			
		||||
players shoot through eachother (teamplay 4?)
 | 
			
		||||
selectable player models and skins
 | 
			
		||||
sound clips
 | 
			
		||||
third person player weapon models
 | 
			
		||||
| 
						 | 
				
			
			@ -30,5 +31,6 @@ done:
 | 
			
		|||
 | 
			
		||||
corpse pickups have keys
 | 
			
		||||
custom pronouns
 | 
			
		||||
distributed ammo
 | 
			
		||||
lives counting
 | 
			
		||||
no friendly fire
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user