mirror of
https://github.com/Q3Rally-Team/q3rally.git
synced 2024-11-22 03:51:23 +00:00
homing rockets now shootable
adjusted rocket speed
This commit is contained in:
parent
64ee3a5374
commit
6c8224cce7
6 changed files with 50 additions and 186 deletions
|
@ -1,5 +1,23 @@
|
||||||
!!! --- Q3Rally v0.3 changelog --- !!!
|
!!! --- Q3Rally v0.3 changelog --- !!!
|
||||||
|
|
||||||
|
new since v0.3b
|
||||||
|
|
||||||
|
Fixed:
|
||||||
|
|
||||||
|
- A bug in racing mode was fixed where it could be that after the race you lost your position
|
||||||
|
in the ranking to a player who crossed the finish line after you
|
||||||
|
- The power of the homing rockets has been reduced and the amount of ammunition
|
||||||
|
used has been increased from 1 to 3
|
||||||
|
|
||||||
|
new since v0.3
|
||||||
|
|
||||||
|
Added:
|
||||||
|
|
||||||
|
- 2 Racing Maps moved from AddOn to Official
|
||||||
|
- 1 Deathmatch Map moved from AddOn to Official
|
||||||
|
- added the ability to play Domination with 4 Teams
|
||||||
|
- codebase synced with latest ioq3
|
||||||
|
|
||||||
new since v0.0.1.2
|
new since v0.0.1.2
|
||||||
|
|
||||||
Added:
|
Added:
|
||||||
|
|
|
@ -31,7 +31,7 @@ G_HomingMissile
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define ROCKET_SPEED 600
|
#define ROCKET_SPEED 650
|
||||||
|
|
||||||
void rocket_think( gentity_t *ent )
|
void rocket_think( gentity_t *ent )
|
||||||
{
|
{
|
||||||
|
@ -95,7 +95,6 @@ void Missile_Smooth_H( gentity_t *ent, vec3_t origin, trace_t *tr )
|
||||||
/*
|
/*
|
||||||
================
|
================
|
||||||
G_BounceMissile
|
G_BounceMissile
|
||||||
|
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
void G_BounceMissile( gentity_t *ent, trace_t *trace ) {
|
void G_BounceMissile( gentity_t *ent, trace_t *trace ) {
|
||||||
|
@ -160,20 +159,6 @@ void G_ExplodeCluster( gentity_t *ent ){
|
||||||
fire_cluster_grenade2(ent->parent, ent->r.currentOrigin, dir);
|
fire_cluster_grenade2(ent->parent, ent->r.currentOrigin, dir);
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
VectorSet(dir, 33, 33, 0);
|
|
||||||
fire_cluster_grenade2(ent->parent, ent->r.currentOrigin, dir);
|
|
||||||
VectorSet(dir, -33, 33, 0);
|
|
||||||
fire_cluster_grenade2(ent->parent, ent->r.currentOrigin, dir);
|
|
||||||
VectorSet(dir, 0, -33, 0);
|
|
||||||
fire_cluster_grenade2(ent->parent, ent->r.currentOrigin, dir);
|
|
||||||
VectorSet(dir, 33, 33, 40);
|
|
||||||
fire_cluster_grenade2(ent->parent, ent->r.currentOrigin, dir);
|
|
||||||
VectorSet(dir, -33, 33, 30);
|
|
||||||
fire_cluster_grenade2(ent->parent, ent->r.currentOrigin, dir);
|
|
||||||
VectorSet(dir, 0, -33, 20);
|
|
||||||
fire_cluster_grenade2(ent->parent, ent->r.currentOrigin, dir); */
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -778,13 +763,9 @@ void G_RunMissile( gentity_t *ent ) {
|
||||||
G_RunThink( ent );
|
G_RunThink( ent );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
fire_plasma
|
fire_plasma
|
||||||
|
|
||||||
=================
|
=================
|
||||||
*/
|
*/
|
||||||
gentity_t *fire_plasma (gentity_t *self, vec3_t start, vec3_t dir) {
|
gentity_t *fire_plasma (gentity_t *self, vec3_t start, vec3_t dir) {
|
||||||
|
@ -824,9 +805,7 @@ gentity_t *fire_plasma (gentity_t *self, vec3_t start, vec3_t dir) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
//fire_plasma_bounce
|
//fire_plasma_bounce
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -1049,36 +1028,22 @@ gentity_t *fire_rocket (gentity_t *self, vec3_t start, vec3_t dir) {
|
||||||
bolt->classname = "rocket";
|
bolt->classname = "rocket";
|
||||||
bolt->nextthink = level.time + 15000;
|
bolt->nextthink = level.time + 15000;
|
||||||
bolt->think = G_ExplodeMissile;
|
bolt->think = G_ExplodeMissile;
|
||||||
bolt->health = 5;
|
|
||||||
bolt->takedamage = qtrue;
|
|
||||||
bolt->die = G_MissileDie;
|
|
||||||
bolt->r.contents = CONTENTS_BODY;
|
|
||||||
VectorSet(bolt->r.mins, -10, -3, 0);
|
|
||||||
VectorCopy(bolt->r.mins, bolt->r.absmin);
|
|
||||||
VectorSet(bolt->r.maxs, 10, 3, 6);
|
|
||||||
VectorCopy(bolt->r.maxs, bolt->r.absmax);
|
|
||||||
bolt->s.eType = ET_MISSILE;
|
bolt->s.eType = ET_MISSILE;
|
||||||
bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
|
bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
|
||||||
bolt->s.weapon = WP_ROCKET_LAUNCHER;
|
bolt->s.weapon = WP_ROCKET_LAUNCHER;
|
||||||
bolt->r.ownerNum = self->s.number;
|
bolt->r.ownerNum = self->s.number;
|
||||||
bolt->parent = self;
|
bolt->parent = self;
|
||||||
//bolt->damage = 100; //TBB - too high for short reload
|
bolt->damage = 80;
|
||||||
bolt->damage = 80; //TBB
|
bolt->splashDamage = 60;
|
||||||
//bolt->splashDamage = 100; //TBB - too high for short reload
|
|
||||||
bolt->splashDamage = 60; //TBB
|
|
||||||
bolt->splashRadius = 120;
|
bolt->splashRadius = 120;
|
||||||
bolt->methodOfDeath = MOD_ROCKET;
|
bolt->methodOfDeath = MOD_ROCKET;
|
||||||
bolt->splashMethodOfDeath = MOD_ROCKET_SPLASH;
|
bolt->splashMethodOfDeath = MOD_ROCKET_SPLASH;
|
||||||
bolt->clipmask = MASK_SHOT;
|
bolt->clipmask = MASK_SHOT;
|
||||||
bolt->target_ent = NULL;
|
bolt->target_ent = NULL;
|
||||||
|
|
||||||
bolt->s.pos.trType = TR_LINEAR;
|
bolt->s.pos.trType = TR_LINEAR;
|
||||||
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
|
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
|
||||||
VectorCopy( start, bolt->s.pos.trBase );
|
VectorCopy( start, bolt->s.pos.trBase );
|
||||||
// STONELANCE
|
VectorScale( dir, 1400, bolt->s.pos.trDelta );
|
||||||
// VectorScale( dir, 900, bolt->s.pos.trDelta );
|
|
||||||
VectorScale( dir, 1800, bolt->s.pos.trDelta );
|
|
||||||
// END
|
|
||||||
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
|
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
|
||||||
VectorCopy (start, bolt->r.currentOrigin);
|
VectorCopy (start, bolt->r.currentOrigin);
|
||||||
|
|
||||||
|
@ -1099,71 +1064,39 @@ gentity_t *fire_homing_rocket (gentity_t *self, vec3_t start, vec3_t dir) {
|
||||||
bolt->classname = "rocket";
|
bolt->classname = "rocket";
|
||||||
bolt->nextthink = level.time + 1;
|
bolt->nextthink = level.time + 1;
|
||||||
bolt->think = rocket_think;
|
bolt->think = rocket_think;
|
||||||
|
bolt->health = 5;
|
||||||
|
bolt->takedamage = qtrue;
|
||||||
|
bolt->die = G_MissileDie;
|
||||||
|
bolt->r.contents = CONTENTS_BODY;
|
||||||
|
VectorSet(bolt->r.mins, -10, -3, 0);
|
||||||
|
VectorCopy(bolt->r.mins, bolt->r.absmin);
|
||||||
|
VectorSet(bolt->r.maxs, 10, 3, 6);
|
||||||
|
VectorCopy(bolt->r.maxs, bolt->r.absmax);
|
||||||
bolt->s.eType = ET_MISSILE;
|
bolt->s.eType = ET_MISSILE;
|
||||||
bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
|
bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
|
||||||
bolt->s.weapon = WP_ROCKET_LAUNCHER;
|
bolt->s.weapon = WP_ROCKET_LAUNCHER;
|
||||||
bolt->r.ownerNum = self->s.number;
|
bolt->r.ownerNum = self->s.number;
|
||||||
bolt->parent = self;
|
bolt->parent = self;
|
||||||
bolt->damage = 40;
|
bolt->damage = 40;
|
||||||
//bolt->splashDamage = 100; //TBB - too high for being splash
|
bolt->splashDamage = 60;
|
||||||
bolt->splashDamage = 60; //TBB
|
|
||||||
bolt->splashRadius = 75;
|
bolt->splashRadius = 75;
|
||||||
bolt->methodOfDeath = MOD_ROCKET;
|
bolt->methodOfDeath = MOD_ROCKET;
|
||||||
bolt->splashMethodOfDeath = MOD_ROCKET_SPLASH;
|
bolt->splashMethodOfDeath = MOD_ROCKET_SPLASH;
|
||||||
bolt->clipmask = MASK_SHOT;
|
bolt->clipmask = MASK_SHOT;
|
||||||
bolt->target_ent = NULL;
|
bolt->target_ent = NULL;
|
||||||
|
|
||||||
bolt->s.pos.trType = TR_LINEAR;
|
bolt->s.pos.trType = TR_LINEAR;
|
||||||
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
|
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
|
||||||
VectorCopy( start, bolt->s.pos.trBase );
|
VectorCopy( start, bolt->s.pos.trBase );
|
||||||
// STONELANCE
|
|
||||||
// VectorScale( dir, 900, bolt->s.pos.trDelta );
|
|
||||||
VectorScale( dir, ROCKET_SPEED, bolt->s.pos.trDelta );
|
VectorScale( dir, ROCKET_SPEED, bolt->s.pos.trDelta );
|
||||||
// END
|
|
||||||
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
|
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
|
||||||
VectorCopy (start, bolt->r.currentOrigin);
|
VectorCopy (start, bolt->r.currentOrigin);
|
||||||
|
|
||||||
return bolt;
|
return bolt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
//=====================================
|
||||||
=================
|
// fire mine
|
||||||
fire_grapple
|
//=====================================
|
||||||
=================
|
|
||||||
*/
|
|
||||||
// STONELANCE - removed hook
|
|
||||||
/*
|
|
||||||
gentity_t *fire_grapple (gentity_t *self, vec3_t start, vec3_t dir) {
|
|
||||||
gentity_t *hook;
|
|
||||||
|
|
||||||
VectorNormalize (dir);
|
|
||||||
|
|
||||||
hook = G_Spawn();
|
|
||||||
hook->classname = "hook";
|
|
||||||
hook->nextthink = level.time + 10000;
|
|
||||||
hook->think = Weapon_HookFree;
|
|
||||||
hook->s.eType = ET_MISSILE;
|
|
||||||
hook->r.svFlags = SVF_USE_CURRENT_ORIGIN;
|
|
||||||
hook->s.weapon = WP_GRAPPLING_HOOK;
|
|
||||||
hook->r.ownerNum = self->s.number;
|
|
||||||
hook->methodOfDeath = MOD_GRAPPLE;
|
|
||||||
hook->clipmask = MASK_SHOT;
|
|
||||||
hook->parent = self;
|
|
||||||
hook->target_ent = NULL;
|
|
||||||
|
|
||||||
hook->s.pos.trType = TR_LINEAR;
|
|
||||||
hook->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
|
|
||||||
hook->s.otherEntityNum = self->s.number; // use to match beam in client
|
|
||||||
VectorCopy( start, hook->s.pos.trBase );
|
|
||||||
VectorScale( dir, 800, hook->s.pos.trDelta );
|
|
||||||
SnapVector( hook->s.pos.trDelta ); // save net bandwidth
|
|
||||||
VectorCopy (start, hook->r.currentOrigin);
|
|
||||||
|
|
||||||
self->client->hook = hook;
|
|
||||||
|
|
||||||
return hook;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
gentity_t *fire_mine( gentity_t *self, vec3_t start, vec3_t dir){
|
gentity_t *fire_mine( gentity_t *self, vec3_t start, vec3_t dir){
|
||||||
|
|
|
@ -241,6 +241,7 @@ void Bullet_Fire (gentity_t *ent, float spread, int damage, int mod ) {
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
|
|
||||||
trap_Trace (&tr, muzzle, NULL, NULL, end, passent, MASK_SHOT);
|
trap_Trace (&tr, muzzle, NULL, NULL, end, passent, MASK_SHOT);
|
||||||
|
// trap_Trace (&tr, muzzle, NULL, NULL, end, ENTITYNUM_NONE, MASK_SHOT);
|
||||||
if ( tr.surfaceFlags & SURF_NOIMPACT ) {
|
if ( tr.surfaceFlags & SURF_NOIMPACT ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
#define BASETA "missionpack"
|
#define BASETA "missionpack"
|
||||||
|
|
||||||
#ifndef PRODUCT_VERSION
|
#ifndef PRODUCT_VERSION
|
||||||
#define PRODUCT_VERSION "v0.3c" // r414
|
#define PRODUCT_VERSION "v0.3c_r415"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
112
q3rallycode.ppr
112
q3rallycode.ppr
|
@ -192,7 +192,7 @@ q3rallycode
|
||||||
engine\code\client\snd_openal.c
|
engine\code\client\snd_openal.c
|
||||||
engine\code\client\snd_public.h
|
engine\code\client\snd_public.h
|
||||||
engine\code\client\snd_wavelet.c
|
engine\code\client\snd_wavelet.c
|
||||||
-game
|
+game
|
||||||
engine\code\game\ai_chat.c
|
engine\code\game\ai_chat.c
|
||||||
engine\code\game\ai_chat.h
|
engine\code\game\ai_chat.h
|
||||||
engine\code\game\ai_cmd.c
|
engine\code\game\ai_cmd.c
|
||||||
|
@ -886,109 +886,21 @@ q3rallycode
|
||||||
engine\cross-make-mingw64.sh
|
engine\cross-make-mingw64.sh
|
||||||
[Open project files]
|
[Open project files]
|
||||||
0=engine\code\qcommon\q_shared.h
|
0=engine\code\qcommon\q_shared.h
|
||||||
1=engine\code\qcommon\qcommon.h
|
1=engine\code\game\g_client.c
|
||||||
2=engine\code\cgame\cg_info.c
|
2=engine\code\game\g_missile.c
|
||||||
3=engine\code\qcommon\files.c
|
3=engine\code\game\g_weapon.c
|
||||||
4=engine\code\game\bg_public.h
|
|
||||||
5=engine\code\cgame\cg_local.h
|
|
||||||
6=engine\code\cgame\cg_main.c
|
|
||||||
7=engine\code\cgame\cg_players.c
|
|
||||||
8=engine\code\cgame\cg_draw.c
|
|
||||||
9=engine\code\cgame\cg_newdraw.c
|
|
||||||
10=engine\code\cgame\cg_rally_hud.c
|
|
||||||
11=engine\code\cgame\cg_rally_hud2.c
|
|
||||||
12=engine\code\game\g_team.c
|
|
||||||
13=engine\code\cgame\cg_scoreboard.c
|
|
||||||
14=engine\code\game\g_client.c
|
|
||||||
15=engine\code\game\g_cmds.c
|
|
||||||
16=engine\code\renderergl1\tr_shade_calc.c
|
|
||||||
17=engine\code\cgame\cg_servercmds.c
|
|
||||||
18=engine\code\game\bg_misc.c
|
|
||||||
19=engine\code\game\g_items.c
|
|
||||||
20=engine\code\game\g_spawn.c
|
|
||||||
21=engine\code\game\g_arenas.c
|
|
||||||
22=engine\code\game\bg_pmove.c
|
|
||||||
23=engine\code\game\g_weapon.c
|
|
||||||
24=engine\code\cgame\cg_weapons.c
|
|
||||||
25=engine\code\game\g_missile.c
|
|
||||||
[Selected Project Files]
|
[Selected Project Files]
|
||||||
Main=
|
Main=
|
||||||
Selected=engine\code\qcommon\q_shared.h
|
Selected=engine\code\qcommon\q_shared.h
|
||||||
[engine\code\qcommon\q_shared.h]
|
[engine\code\qcommon\q_shared.h]
|
||||||
TopLine=55
|
TopLine=55
|
||||||
Caret=46,70
|
Caret=36,70
|
||||||
[engine\code\qcommon\qcommon.h]
|
|
||||||
TopLine=700
|
|
||||||
Caret=1,715
|
|
||||||
[engine\code\cgame\cg_info.c]
|
|
||||||
TopLine=195
|
|
||||||
Caret=1,210
|
|
||||||
[engine\code\qcommon\files.c]
|
|
||||||
TopLine=193
|
|
||||||
Caret=21,210
|
|
||||||
[engine\code\game\bg_public.h]
|
|
||||||
TopLine=417
|
|
||||||
Caret=24,434
|
|
||||||
[engine\code\cgame\cg_local.h]
|
|
||||||
TopLine=676
|
|
||||||
Caret=1,684
|
|
||||||
[engine\code\cgame\cg_main.c]
|
|
||||||
TopLine=1095
|
|
||||||
Caret=25,1097
|
|
||||||
[engine\code\cgame\cg_players.c]
|
|
||||||
TopLine=2084
|
|
||||||
Caret=1,2099
|
|
||||||
[engine\code\cgame\cg_draw.c]
|
|
||||||
TopLine=533
|
|
||||||
Caret=27,561
|
|
||||||
[engine\code\cgame\cg_newdraw.c]
|
|
||||||
TopLine=1192
|
|
||||||
Caret=29,1211
|
|
||||||
[engine\code\cgame\cg_rally_hud.c]
|
|
||||||
TopLine=828
|
|
||||||
Caret=1,835
|
|
||||||
[engine\code\cgame\cg_rally_hud2.c]
|
|
||||||
TopLine=114
|
|
||||||
Caret=1,129
|
|
||||||
[engine\code\game\g_team.c]
|
|
||||||
TopLine=1137
|
|
||||||
Caret=3,1170
|
|
||||||
[engine\code\cgame\cg_scoreboard.c]
|
|
||||||
TopLine=444
|
|
||||||
Caret=1,457
|
|
||||||
[engine\code\game\g_client.c]
|
[engine\code\game\g_client.c]
|
||||||
TopLine=1
|
TopLine=1651
|
||||||
Caret=1,700
|
Caret=9,1672
|
||||||
[engine\code\game\g_cmds.c]
|
|
||||||
TopLine=110
|
|
||||||
Caret=1,124
|
|
||||||
[engine\code\renderergl1\tr_shade_calc.c]
|
|
||||||
TopLine=896
|
|
||||||
Caret=44,909
|
|
||||||
[engine\code\cgame\cg_servercmds.c]
|
|
||||||
TopLine=397
|
|
||||||
Caret=1,415
|
|
||||||
[engine\code\game\bg_misc.c]
|
|
||||||
TopLine=937
|
|
||||||
Caret=19,958
|
|
||||||
[engine\code\game\g_items.c]
|
|
||||||
TopLine=805
|
|
||||||
Caret=1,819
|
|
||||||
[engine\code\game\g_spawn.c]
|
|
||||||
TopLine=318
|
|
||||||
Caret=59,335
|
|
||||||
[engine\code\game\g_arenas.c]
|
|
||||||
TopLine=79
|
|
||||||
Caret=52,92
|
|
||||||
[engine\code\game\bg_pmove.c]
|
|
||||||
TopLine=1871
|
|
||||||
Caret=15,2050
|
|
||||||
[engine\code\game\g_weapon.c]
|
|
||||||
TopLine=1295
|
|
||||||
Caret=25,1308
|
|
||||||
[engine\code\cgame\cg_weapons.c]
|
|
||||||
TopLine=2121
|
|
||||||
Caret=1,2125
|
|
||||||
[engine\code\game\g_missile.c]
|
[engine\code\game\g_missile.c]
|
||||||
TopLine=1092
|
TopLine=15
|
||||||
Caret=19,1107
|
Caret=27,34
|
||||||
|
[engine\code\game\g_weapon.c]
|
||||||
|
TopLine=734
|
||||||
|
Caret=27,742
|
||||||
|
|
Loading…
Reference in a new issue