summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikko Tiusanen <ams@daug.net>2014-07-25 23:56:53 +0300
committerMikko Tiusanen <ams@daug.net>2014-07-25 23:56:53 +0300
commit73fa3f4498b3b477233f3aa0b2cc2d0a2cc726be (patch)
treeba28e9e235701af93737b96d91e83377c6ad44f5
parent4c26da913161e0bc3d5a912c6b154e33c38d9546 (diff)
Added lasgun portable shield secondary fire functionality.
-rw-r--r--assets/models/weapons/lgun/light_lgun.md3bin0 -> 6648 bytes
-rw-r--r--assets/models/weapons/lgun/weapon.cfg2
-rw-r--r--src/game/g_missile.c104
-rw-r--r--src/game/tremulous.h3
4 files changed, 57 insertions, 52 deletions
diff --git a/assets/models/weapons/lgun/light_lgun.md3 b/assets/models/weapons/lgun/light_lgun.md3
new file mode 100644
index 0000000..9ccf871
--- /dev/null
+++ b/assets/models/weapons/lgun/light_lgun.md3
Binary files differ
diff --git a/assets/models/weapons/lgun/weapon.cfg b/assets/models/weapons/lgun/weapon.cfg
index 9612f9d..8682728 100644
--- a/assets/models/weapons/lgun/weapon.cfg
+++ b/assets/models/weapons/lgun/weapon.cfg
@@ -17,5 +17,5 @@ secondary
flashDlightColor 0.5 0.5 1.0
flashSound 0 models/weapons/lgun/flash0.wav
- missileModel models/buildables/light/light.md3
+ missileModel models/weapons/lgun/light_lgun.md3
}
diff --git a/src/game/g_missile.c b/src/game/g_missile.c
index 3fea37b..0cf7c5d 100644
--- a/src/game/g_missile.c
+++ b/src/game/g_missile.c
@@ -1032,86 +1032,90 @@ void G_LasgunPush( gentity_t *self )
VectorAdd( self->r.currentOrigin, range, maxs );
VectorSubtract( self->r.currentOrigin, range, mins );
- num = trap_EntitiesInBox( mins, maxs, entityList, MAX_GENTITIES );
-
- for( i = 0; i < num; i++ )
+ if (self->count++ > LASGUN_PUSH_COUNT)
{
- enemy = &g_entities[ entityList[ i ] ];
-
- if( enemy->flags & FL_NOTARGET )
- continue;
-
- if( !G_Visible( self, enemy, CONTENTS_SOLID ) )
- continue;
-
- if( enemy->client && enemy->client->ps.stats[ STAT_TEAM ] != TEAM_HUMANS )
- {
- if (!enemy->client)
- continue;
-
- if (enemy == self->parent)
- continue;
-
- if (!enemy->takedamage)
- continue;
+ num = trap_EntitiesInBox( mins, maxs, entityList, MAX_GENTITIES );
- active = qtrue;
- break;
- }
- }
-
- if (active)
- {
for( i = 0; i < num; i++ )
{
enemy = &g_entities[ entityList[ i ] ];
-
+
if( enemy->flags & FL_NOTARGET )
continue;
if( !G_Visible( self, enemy, CONTENTS_SOLID ) )
continue;
- if( enemy->client && enemy->client->ps.stats[ STAT_TEAM ] != TEAM_NONE )
+ if( enemy->client && enemy->client->ps.stats[ STAT_TEAM ] != TEAM_HUMANS )
{
if (!enemy->client)
continue;
-
+
if (enemy == self->parent)
continue;
if (!enemy->takedamage)
continue;
- if ( enemy->client->ps.stats[ STAT_CLASS ] == PCL_ALIEN_LEVEL5 )
- force = LASGUN_PUSH_FORCE;
- else
- force = LASGUN_WEAK_FORCE;
+ active = qtrue;
+ break;
+ }
+ }
- VectorSubtract( enemy->r.currentOrigin, self->r.currentOrigin, dir);
- VectorNormalize( dir );
- VectorScale( dir, force, enemy->client->ps.velocity );
+ if (active)
+ {
+ for( i = 0; i < num; i++ )
+ {
+ enemy = &g_entities[ entityList[ i ] ];
+
+ if( enemy->flags & FL_NOTARGET )
+ continue;
+
+ if( !G_Visible( self, enemy, CONTENTS_SOLID ) )
+ continue;
+
+ if( enemy->client && enemy->client->ps.stats[ STAT_TEAM ] != TEAM_NONE )
+ {
+ if (!enemy->client)
+ continue;
+
+ if (enemy == self->parent)
+ continue;
+
+ if (!enemy->takedamage)
+ continue;
+
+ if ( enemy->client->ps.stats[ STAT_CLASS ] == PCL_ALIEN_LEVEL5 )
+ force = LASGUN_PUSH_FORCE;
+ else
+ force = LASGUN_WEAK_FORCE;
+
+ VectorSubtract( enemy->r.currentOrigin, self->r.currentOrigin, dir);
+ VectorNormalize( dir );
+ VectorScale( dir, force, enemy->client->ps.velocity );
+ }
}
}
- }
+ self->count = 0;
/*
- if( enemy->client && enemy->client->ps.stats[ STAT_TEAM ] == TEAM_ALIENS )
- {
+ if( enemy->client && enemy->client->ps.stats[ STAT_TEAM ] == TEAM_ALIENS )
+ {
// start the attack animation
G_AddEvent( self, EV_FORCE_FIELD, DirToByte( self->s.origin2 ) );
if( level.time >= self->timestamp + 500 )
- {
- self->timestamp = level.time;
- G_SetBuildableAnim( self, BANIM_ATTACK1, qfalse );
- }
- return;
+ {
+ self->timestamp = level.time;
+ G_SetBuildableAnim( self, BANIM_ATTACK1, qfalse );
+ }
+ return;
+ }
}
- }
*/
- if( level.time >= self->timestamp ) {
- self->freeAfterEvent = qtrue;
- self->parent->parentNode = NULL;
+ if( level.time >= self->timestamp ) {
+ self->freeAfterEvent = qtrue;
+ self->parent->parentNode = NULL;
+ }
}
trap_LinkEntity( self );
}
diff --git a/src/game/tremulous.h b/src/game/tremulous.h
index ca59a92..8a393b8 100644
--- a/src/game/tremulous.h
+++ b/src/game/tremulous.h
@@ -453,7 +453,8 @@ TREMULOUS EDGE MOD SRC FILE
#define LASGUN_REPEAT2 5000
#define LASGUN_PUSH_DURATION 4000
-#define LASGUN_PUSH_REPEAT 400
+#define LASGUN_PUSH_REPEAT 40
+#define LASGUN_PUSH_COUNT 10
#define LASGUN_PUSH_RANGE 140
#define LASGUN_PUSH_FORCE 900
#define LASGUN_WEAK_FORCE 675