mirror of
https://github.com/Q3Rally-Team/q3rally.git
synced 2024-11-24 21:01:34 +00:00
Merge branch 'master' of https://github.com/Q3Rally-Team/q3rally
This commit is contained in:
commit
d6005fb74c
4 changed files with 140 additions and 118 deletions
|
@ -25,61 +25,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
#define MISSILE_PRESTEP_TIME 50
|
||||
|
||||
/*
|
||||
================
|
||||
G_HomingMissile
|
||||
================
|
||||
*/
|
||||
|
||||
#define ROCKET_SPEED 650
|
||||
|
||||
void rocket_think( gentity_t *ent )
|
||||
{
|
||||
gentity_t *target = NULL;
|
||||
gentity_t *rad = NULL;
|
||||
vec3_t dir, dir2, raddir, start;
|
||||
|
||||
while ((rad = findradius(rad, ent->r.currentOrigin, 1000)) != NULL)
|
||||
{
|
||||
if (!rad->client)
|
||||
continue;
|
||||
if (rad == ent->parent)
|
||||
continue;
|
||||
if (rad->health <= 0)
|
||||
continue;
|
||||
if (rad->client->sess.sessionTeam == TEAM_SPECTATOR)
|
||||
continue;
|
||||
if ( (g_gametype.integer == GT_TEAM || g_gametype.integer == GT_CTF || g_gametype.integer == GT_DOMINATION ) && rad->client->sess.sessionTeam == rad->parent->client->sess.sessionTeam)
|
||||
continue;
|
||||
if (!visible (ent, rad))
|
||||
continue;
|
||||
|
||||
VectorSubtract(rad->r.currentOrigin, ent->r.currentOrigin, raddir);
|
||||
raddir[2] += 16;
|
||||
if ((target == NULL) || (VectorLength(raddir) < VectorLength(dir)))
|
||||
{
|
||||
target = rad;
|
||||
VectorCopy(raddir, dir);
|
||||
}
|
||||
}
|
||||
|
||||
if (target != NULL)
|
||||
{
|
||||
VectorCopy( ent->r.currentOrigin, start );
|
||||
VectorCopy( ent->r.currentAngles, dir2 );
|
||||
VectorNormalize(dir);
|
||||
VectorScale(dir, 0.2, dir);
|
||||
VectorAdd(dir, dir2, dir);
|
||||
VectorNormalize(dir);
|
||||
VectorCopy( start, ent->s.pos.trBase );
|
||||
VectorScale( dir, 400, ent->s.pos.trDelta );
|
||||
SnapVector( ent->s.pos.trDelta );
|
||||
VectorCopy (start, ent->r.currentOrigin);
|
||||
VectorCopy (dir, ent->r.currentAngles);
|
||||
}
|
||||
ent->nextthink = level.time + 100;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
=================
|
||||
|
@ -843,47 +788,6 @@ gentity_t *fire_plasma_bounce (gentity_t *self, vec3_t start, vec3_t dir) {
|
|||
return bolt;
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
fire_grenade
|
||||
=================
|
||||
*/
|
||||
gentity_t *fire_grenade (gentity_t *self, vec3_t start, vec3_t dir) {
|
||||
gentity_t *bolt;
|
||||
|
||||
VectorNormalize (dir);
|
||||
|
||||
bolt = G_Spawn();
|
||||
bolt->classname = "grenade";
|
||||
bolt->nextthink = level.time + 2500;
|
||||
bolt->think = G_ExplodeMissile;
|
||||
bolt->s.eType = ET_MISSILE;
|
||||
bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
|
||||
bolt->s.weapon = WP_GRENADE_LAUNCHER;
|
||||
bolt->s.eFlags = EF_BOUNCE_HALF;
|
||||
bolt->r.ownerNum = self->s.number;
|
||||
bolt->parent = self;
|
||||
//bolt->damage = 100; //TBB - too high for short reload
|
||||
bolt->damage = 40; //TBB
|
||||
//bolt->splashDamage = 100; //TBB - too high for short reload
|
||||
bolt->splashDamage = 20; //TBB
|
||||
bolt->splashRadius = 150;
|
||||
bolt->methodOfDeath = MOD_GRENADE;
|
||||
bolt->splashMethodOfDeath = MOD_GRENADE_SPLASH;
|
||||
bolt->clipmask = MASK_SHOT;
|
||||
bolt->target_ent = NULL;
|
||||
|
||||
bolt->s.pos.trType = TR_GRAVITY;
|
||||
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
|
||||
VectorCopy( start, bolt->s.pos.trBase );
|
||||
VectorScale( dir, 800, bolt->s.pos.trDelta );
|
||||
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
|
||||
|
||||
VectorCopy (start, bolt->r.currentOrigin);
|
||||
|
||||
return bolt;
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
fire_cluster_grenade
|
||||
|
@ -968,6 +872,47 @@ gentity_t *fire_cluster_grenade2 (gentity_t *self, vec3_t start, vec3_t dir) {
|
|||
return bolt;
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
fire_grenade
|
||||
=================
|
||||
*/
|
||||
gentity_t *fire_grenade (gentity_t *self, vec3_t start, vec3_t dir) {
|
||||
gentity_t *bolt;
|
||||
|
||||
VectorNormalize (dir);
|
||||
|
||||
bolt = G_Spawn();
|
||||
bolt->classname = "grenade";
|
||||
bolt->nextthink = level.time + 2500;
|
||||
bolt->think = G_ExplodeMissile;
|
||||
bolt->s.eType = ET_MISSILE;
|
||||
bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
|
||||
bolt->s.weapon = WP_GRENADE_LAUNCHER;
|
||||
bolt->s.eFlags = EF_BOUNCE_HALF;
|
||||
bolt->r.ownerNum = self->s.number;
|
||||
bolt->parent = self;
|
||||
bolt->damage = 40;
|
||||
bolt->splashDamage = 20;
|
||||
bolt->splashRadius = 150;
|
||||
bolt->methodOfDeath = MOD_GRENADE;
|
||||
bolt->splashMethodOfDeath = MOD_GRENADE_SPLASH;
|
||||
bolt->clipmask = MASK_SHOT;
|
||||
bolt->target_ent = NULL;
|
||||
|
||||
bolt->s.pos.trType = TR_GRAVITY;
|
||||
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
|
||||
VectorCopy( start, bolt->s.pos.trBase );
|
||||
VectorScale( dir, 800, bolt->s.pos.trDelta );
|
||||
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
|
||||
|
||||
VectorCopy (start, bolt->r.currentOrigin);
|
||||
|
||||
return bolt;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
@ -1014,6 +959,8 @@ gentity_t *fire_bfg (gentity_t *self, vec3_t start, vec3_t dir) {
|
|||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
=================
|
||||
fire_rocket
|
||||
|
@ -1050,6 +997,61 @@ gentity_t *fire_rocket (gentity_t *self, vec3_t start, vec3_t dir) {
|
|||
return bolt;
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
G_HomingMissile
|
||||
================
|
||||
*/
|
||||
|
||||
#define ROCKET_SPEED 650
|
||||
|
||||
void rocket_think( gentity_t *ent )
|
||||
{
|
||||
gentity_t *target = NULL;
|
||||
gentity_t *rad = NULL;
|
||||
vec3_t dir, dir2, raddir, start;
|
||||
|
||||
while ((rad = findradius(rad, ent->r.currentOrigin, 1000)) != NULL)
|
||||
{
|
||||
if (!rad->client)
|
||||
continue;
|
||||
if (rad == ent->parent)
|
||||
continue;
|
||||
if (rad->health <= 0)
|
||||
continue;
|
||||
if (rad->client->sess.sessionTeam == TEAM_SPECTATOR)
|
||||
continue;
|
||||
if ( (g_gametype.integer == GT_TEAM || g_gametype.integer == GT_CTF || g_gametype.integer == GT_DOMINATION ) && rad->client->sess.sessionTeam == rad->parent->client->sess.sessionTeam)
|
||||
continue;
|
||||
if (!visible (ent, rad))
|
||||
continue;
|
||||
|
||||
VectorSubtract(rad->r.currentOrigin, ent->r.currentOrigin, raddir);
|
||||
raddir[2] += 16;
|
||||
if ((target == NULL) || (VectorLength(raddir) < VectorLength(dir)))
|
||||
{
|
||||
target = rad;
|
||||
VectorCopy(raddir, dir);
|
||||
}
|
||||
}
|
||||
|
||||
if (target != NULL)
|
||||
{
|
||||
VectorCopy( ent->r.currentOrigin, start );
|
||||
VectorCopy( ent->r.currentAngles, dir2 );
|
||||
VectorNormalize(dir);
|
||||
VectorScale(dir, 0.2, dir);
|
||||
VectorAdd(dir, dir2, dir);
|
||||
VectorNormalize(dir);
|
||||
VectorCopy( start, ent->s.pos.trBase );
|
||||
VectorScale( dir, 400, ent->s.pos.trDelta );
|
||||
SnapVector( ent->s.pos.trDelta );
|
||||
VectorCopy (start, ent->r.currentOrigin);
|
||||
VectorCopy (dir, ent->r.currentAngles);
|
||||
}
|
||||
ent->nextthink = level.time + 100;
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
fire_homing_rocket
|
||||
|
|
|
@ -734,7 +734,7 @@ void weapon_telefrag_fire (gentity_t *ent,vec3_t muzzle,vec3_t forward,vec3_t ri
|
|||
trace_t trace;
|
||||
gentity_t *tent;
|
||||
gentity_t *traceEnt;
|
||||
int damage = 1000;
|
||||
int damage = 50;
|
||||
int hits = 0;
|
||||
int passent = ent->s.number;
|
||||
|
||||
|
@ -807,7 +807,7 @@ void weapon_telefrag_fire (gentity_t *ent,vec3_t muzzle,vec3_t forward,vec3_t ri
|
|||
}
|
||||
tent->s.clientNum = ent->s.clientNum;
|
||||
|
||||
// give the shooter a reward sound if they have made two railgun hits in a row
|
||||
// give the shooter a reward sound if they have made two telefrag hits in a row
|
||||
if ( hits == 0 )
|
||||
{
|
||||
// complete miss
|
||||
|
|
|
@ -67,7 +67,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#define BASETA "missionpack"
|
||||
|
||||
#ifndef PRODUCT_VERSION
|
||||
#define PRODUCT_VERSION "v0.3c_r478"
|
||||
#define PRODUCT_VERSION "v0.3c_r481"
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -886,29 +886,49 @@ q3rallycode
|
|||
engine\cross-make-mingw64.sh
|
||||
[Open project files]
|
||||
0=engine\code\qcommon\q_shared.h
|
||||
1=engine\code\game\g_weapon.c
|
||||
2=engine\code\game\g_missile.c
|
||||
3=engine\code\game\g_local.h
|
||||
4=engine\code\cgame\cg_main.c
|
||||
5=engine\code\cgame\cg_playerstate.c
|
||||
1=engine\code\game\g_missile.c
|
||||
2=engine\code\game\g_local.h
|
||||
3=engine\code\cgame\cg_event.c
|
||||
4=engine\code\game\bg_misc.c
|
||||
5=engine\code\game\bg_public.h
|
||||
6=engine\code\cgame\cg_effects.c
|
||||
7=engine\code\cgame\cg_rally_tools.c
|
||||
8=engine\code\cgame\cg_weapons.c
|
||||
9=engine\code\game\g_client.c
|
||||
10=engine\code\game\g_items.c
|
||||
[Selected Project Files]
|
||||
Main=
|
||||
Selected=engine\code\game\g_weapon.c
|
||||
Selected=engine\code\game\g_missile.c
|
||||
[engine\code\qcommon\q_shared.h]
|
||||
TopLine=46
|
||||
TopLine=58
|
||||
Caret=36,70
|
||||
[engine\code\game\g_weapon.c]
|
||||
TopLine=699
|
||||
Caret=35,710
|
||||
[engine\code\game\g_missile.c]
|
||||
TopLine=1066
|
||||
Caret=1,1077
|
||||
TopLine=1065
|
||||
Caret=26,896
|
||||
[engine\code\game\g_local.h]
|
||||
TopLine=26
|
||||
TopLine=627
|
||||
Caret=30,42
|
||||
[engine\code\cgame\cg_main.c]
|
||||
TopLine=769
|
||||
Caret=89,775
|
||||
[engine\code\cgame\cg_playerstate.c]
|
||||
TopLine=86
|
||||
Caret=1,50
|
||||
[engine\code\cgame\cg_event.c]
|
||||
TopLine=1069
|
||||
Caret=1,1085
|
||||
[engine\code\game\bg_misc.c]
|
||||
TopLine=1633
|
||||
Caret=1,1651
|
||||
[engine\code\game\bg_public.h]
|
||||
TopLine=373
|
||||
Caret=1,385
|
||||
[engine\code\cgame\cg_effects.c]
|
||||
TopLine=1121
|
||||
Caret=1,1137
|
||||
[engine\code\cgame\cg_rally_tools.c]
|
||||
TopLine=160
|
||||
Caret=1,166
|
||||
[engine\code\cgame\cg_weapons.c]
|
||||
TopLine=43
|
||||
Caret=1,55
|
||||
[engine\code\game\g_client.c]
|
||||
TopLine=472
|
||||
Caret=1,488
|
||||
[engine\code\game\g_items.c]
|
||||
TopLine=1044
|
||||
Caret=1,1060
|
||||
|
|
Loading…
Reference in a new issue