homing rockets now shootable

adjusted rocket speed
This commit is contained in:
q3rally 2021-06-24 20:34:54 +00:00
parent 64ee3a5374
commit 6c8224cce7
6 changed files with 50 additions and 186 deletions

View file

@ -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:

View file

@ -265,7 +265,7 @@ void CG_DrawInformation( void ) {
break; break;
// Q3Rally Code Start // Q3Rally Code Start
case GT_DOMINATION: case GT_DOMINATION:
s = "Domination"; s = "Domination";
break; break;
/* /*

View file

@ -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 ) {
@ -158,21 +157,7 @@ void G_ExplodeCluster( gentity_t *ent ){
VectorSet(dir, 11, -11, -66); VectorSet(dir, 11, -11, -66);
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){

View file

@ -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;
} }

View file

@ -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

View file

@ -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