GamePlanet
Planet:
-
News
- Contests
- Staff

Quake 3 Arena:
- Home
- Tutorials
- Maps
- Files
- Reviews
- Mods
- Models


Games:
- Jedi Knight
- Quake 3 Arena
- Unreal Tournament

Hosted Sites:
- Rebel Alliance Editors
- Get Hosted

Quake 3 Arena/Teleporting Plasma Gun:
Okay this tutorial is simple, open up g_missile.c. Find this part:

// impact damage
if (other->takedamage) {
// FIXME: wrong damage direction?
if ( ent->damage ) {
vec3_t velocity;
if( LogAccuracyHit( other, &g_entities[ent->r.ownerNum] ) ) { g_entities[ent->r.ownerNum].client->ps.persistant[PERS_ACCURACY_HITS]++; hitClient = qtrue;
}
BG_EvaluateTrajectoryDelta( &ent->s.pos, level.time, velocity );
if ( VectorLength( velocity ) == 0 ) { velocity[2] = 1; // stepped on a grenade
}
G_Damage (other, ent, &g_entities[ent->r.ownerNum], velocity,
ent->s.origin, ent->damage, 0, ent->methodOfDeath);
}
}


And replace it with this:

// impact damage
if (other->takedamage) {
// FIXME: wrong damage direction?
if ( ent->damage ) {
vec3_t velocity;
if( LogAccuracyHit( other, &g_entities[ent->r.ownerNum] ) ) { g_entities[ent->r.ownerNum].client->ps.persistant[PERS_ACCURACY_HITS]++; hitClient = qtrue;
}
BG_EvaluateTrajectoryDelta( &ent->s.pos, level.time, velocity );
if ( VectorLength( velocity ) == 0 ) { velocity[2] = 1; // stepped on a grenade
}
if (!Q_stricmp(ent->classname, "plasma")) {
G_Damage (other, ent, &g_entities[ent->r.ownerNum], velocity,
ent->s.origin, ent->damage,
0, ent->methodOfDeath);
if(other->health > 0) {
SelectSpawnPoint( other->client->ps.origin, origin, angles );
TeleportPlayer( other, origin, angles );
}
} else { G_Damage (other, ent, &g_entities[ent->r.ownerNum], velocity, ent->s.origin, ent->damage, 0, ent->methodOfDeath);
}
}
}

Created by Inolen
Email:
Contact Me Contact Me

Give credit where needed!