From 0aa94f6b6b7b49972a839aadaee4dbb42a3a53de Mon Sep 17 00:00:00 2001 From: enneract Date: Tue, 25 Nov 2014 01:45:57 +0100 Subject: Lightning Gun assets. --- src/cgame/cg_event.c | 3 +++ src/cgame/cg_local.h | 1 + src/cgame/cg_main.c | 2 ++ src/cgame/cg_weapons.c | 33 ++++++++++++++++++++++++++++++++- src/game/tremulous.h | 6 +++--- 5 files changed, 41 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/cgame/cg_event.c b/src/cgame/cg_event.c index d9e2f77..4c756ad 100644 --- a/src/cgame/cg_event.c +++ b/src/cgame/cg_event.c @@ -335,6 +335,9 @@ static void CG_Obituary( entityState_t *ent ) message = "^5almost dodged^7"; message2 = "^5's ^5rocket"; break; + case MOD_LIGHTNING: + message = "^5was electrocuted by^7"; + break; case MOD_GRENADE: message = "^5couldn't escape^7"; message2 = "^5's ^5grenade"; diff --git a/src/cgame/cg_local.h b/src/cgame/cg_local.h index 72b5a96..d979046 100644 --- a/src/cgame/cg_local.h +++ b/src/cgame/cg_local.h @@ -1338,6 +1338,7 @@ typedef struct qhandle_t alienWoundsBleedPS; qhandle_t lightningBeam; + qhandle_t lightningImpactPS; } cgMedia_t; typedef struct diff --git a/src/cgame/cg_main.c b/src/cgame/cg_main.c index 9abdc7e..6be1d50 100644 --- a/src/cgame/cg_main.c +++ b/src/cgame/cg_main.c @@ -867,6 +867,8 @@ static void CG_RegisterGraphics( void ) cgs.media.humanWoundsBleedPS = CG_RegisterParticleSystem( "humanWoundBleedPS" ); cgs.media.headShotPS = CG_RegisterParticleSystem( "headShotPS" ); + cgs.media.lightningImpactPS = CG_RegisterParticleSystem( "models/weapons/lightning/impactPS" ); + CG_BuildableStatusParse( "ui/assets/human/buildstat.cfg", &cgs.humanBuildStat ); CG_BuildableStatusParse( "ui/assets/alien/buildstat.cfg", &cgs.alienBuildStat ); diff --git a/src/cgame/cg_weapons.c b/src/cgame/cg_weapons.c index 86306e1..21d0352 100644 --- a/src/cgame/cg_weapons.c +++ b/src/cgame/cg_weapons.c @@ -868,7 +868,7 @@ static float CG_MachinegunSpinAngle( centity_t *cent, qboolean firing ) /* ============= -CG_RenderBeam +CG_RenderGenericBeam ============= */ @@ -1169,6 +1169,7 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent cent->muzzlePsTrigger = qfalse; } + // Lightning Gun's beam if( weaponNum == WP_LIGHTNING_GUN ) { attachment_t attachment; @@ -1213,6 +1214,19 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent if( CG_AttachmentPoint( &attachment, beam_start ) ) CG_RenderGenericBeam( beam_start, tr.endpos, cgs.media.lightningBeam, 3 ); + + if( tr.entityNum != ENTITYNUM_NONE && + !( tr.surfaceFlags & SURF_NOIMPACT ) ) + { + particleSystem_t *ps = CG_SpawnNewParticleSystem( cgs.media.lightningImpactPS ); + + if( CG_IsParticleSystemValid( &ps ) ) + { + CG_SetAttachmentPoint( &ps->attachment, tr.endpos ); + CG_SetParticleSystemNormal( ps, tr.plane.normal ); + CG_AttachToPoint( &ps->attachment ); + } + } } // make a dlight for the flash @@ -1353,6 +1367,15 @@ void CG_AddViewWeapon( playerState_t *ps ) } + // Lightning Gun vibration effect + if( ( weapon == WP_LIGHTNING_GUN ) && ps->eFlags & EF_FIRING ) + { + VectorMA( hand.origin, random( ) * 0.1, cg.refdef.viewaxis[ 0 ], + hand.origin ); + VectorMA( hand.origin, random( ) * 0.1, cg.refdef.viewaxis[ 1 ], + hand.origin ); + } + AnglesToAxis( angles, hand.axis ); // map torso animations to weapon animations @@ -1753,6 +1776,7 @@ void CG_FireWeapon( centity_t *cent, weaponMode_t weaponMode ) int c; weaponInfo_t *wi; weapon_t weaponNum; + qboolean skipSound = qfalse; es = ¢->currentState; @@ -1772,6 +1796,10 @@ void CG_FireWeapon( centity_t *cent, weaponMode_t weaponMode ) wi = &cg_weapons[ weaponNum ]; + if( wi->wim[ weaponMode ].continuousFlash && + cent->muzzleFlashTime >= cg.time - 100 ) + skipSound = qtrue; + // mark the entity as muzzle flashing, so when it is added it will // append the flash to the weapon model cent->muzzleFlashTime = cg.time; @@ -1783,6 +1811,9 @@ void CG_FireWeapon( centity_t *cent, weaponMode_t weaponMode ) cent->muzzlePsTrigger = qtrue; } + if( skipSound ) + return; + // play a sound for( c = 0; c < 4; c++ ) { diff --git a/src/game/tremulous.h b/src/game/tremulous.h index b42a7b4..ad4a688 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -515,9 +515,9 @@ TREMULOUS EDGE MOD SRC FILE #define PRIFLE_SECONDARY_REPEAT 400 #define LIGHTNING_PRICE 500 -#define LIGHTNING_AMMO 500 -#define LIGHTNING_K_SCALE 500 -#define LIGHTNING_DPS 100 // damage per second +#define LIGHTNING_AMMO 300 +#define LIGHTNING_K_SCALE 1 +#define LIGHTNING_DPS 60 // damage per second #define LIGHTNING_REPEAT 50 // keep it as low as possible #define LIGHTNING_DAMAGE ( LIGHTNING_DPS * LIGHTNING_REPEAT / 1000 ) #define LIGHTNING_RANGE 450 -- cgit