Quake Style - Quake 3 Tutorials
Weapon Mods - Remote Detonation Pipe Bombs!
Turns the grenade launcher into a pipe bomb launcher!

Pipe bombs!

This tutorial modifies the original grenade launcher so the grenades explode on command.
First, open up g_missile.c and goto about line 296 to the fire_grenade function and modify
 
bolt->nextthink = level.time + 2500;

so it looks like this:
  
bolt->nextthink = level.time + 60000;
 

This will change the amount of time each grenade waits before exploding.

Next goto g_cmds.c and at the very top right after #include "g_local.h" add the following:
  
void G_ExplodeMissile( gentity_t *ent );
 

This declares the G_ExplodeMissile function in g_missile.c so we can use it here.


At around line 1027 before ClientCommand we are going to add the command that will detonate the grenades. Add this:
  
void Cmd_Detonate_f( gentity_t *ent)
{
	gentity_t *grenades = NULL;

	while ((grenades = G_Find (grenades, FOFS(classname), "grenade")) != NULL) //search for grenade entities
	{
		if(grenades->r.ownerNum == ent->s.clientNum)  //make sure its our grenade
		{
			grenades->think = G_ExplodeMissile;
			grenades->nextthink = level.time + 5;
		}
	}

}
 

This will search for grenades in the level and makes sure it belongs to the player who fired it, then finally detonates it. After (at around line 1112):
 	
	else if (Q_stricmp (cmd, "setviewpos") == 0)
		Cmd_SetViewpos_f( ent );

add this:
  
	else if (Q_stricmp (cmd, "detonate") == 0)
		Cmd_Detonate_f(ent);


This adds a console command that will call the Cmd_Detonate_f function we made when typed in the console. Compile and run. Make sure you type /detonate in the console, you now have a grenade launcher that fires pipe bombs.


-- Credits:
   Tutorial by Gerbil!
   Return to QS Tutorials

-- Important:
   If you do use something from QuakeStyle in your mod, please give us credit.
   Our code is copyrighted, but we give permission to everyone to use it in any way they see fit, as long as we are recognized.