Alright, found a solution that works, at least in terms of delaying the shot:
I recycled the kamikaze timer a bit, and created a timer that is triggered by the weapon fire function normally, but uses a blank entity that executes the firing effect after a given amount of milliseconds. Tested it with rocket fire and now with lightning fire, looks pretty awesome when you fire 3 rockets in a row, and melting down a foe with 3 lightning bolts ain't too bad either.
in g_combat.c:
void Gauntlet_Timer( gentity_t *self, int delay ) {
gentity_t *ent;
ent = G_Spawn();
ent->classname = "gauntlet timer";
VectorCopy(self->s.pos.trBase, ent->s.pos.trBase);
ent->r.svFlags |= SVF_NOCLIENT;
ent->think = FireTheGauntlet;
ent->nextthink = level.time + delay;
}
and
void FireTheGauntlet( gentity_t *ent ) {
Weapon_LightningFire( ent );
G_FreeEntity(ent);
}
In g_weapon.c, I modified the gauntlet case to:
case WP_GAUNTLET:
Weapon_LightningFire( ent );
Gauntlet_Timer ( ent, 300 );
Gauntlet_Timer ( ent, 600 );
break;
Only issue I have now is that the spawn vector isn't updated for the fire sequences after the initial shot, which almost made me blow up myself as the second and third rocket exploded inside me.^^
Need to figure that one out tonight, or whenever I feel like coding again.