diff options
39 files changed, 391 insertions, 114 deletions
diff --git a/assets/icons/iconw_rocketl.tga b/assets/icons/iconw_rocketl.tga Binary files differnew file mode 100644 index 0000000..0aa1e97 --- /dev/null +++ b/assets/icons/iconw_rocketl.tga diff --git a/assets/models/ammo/rocket/rocket.md3 b/assets/models/ammo/rocket/rocket.md3 Binary files differnew file mode 100644 index 0000000..c181114 --- /dev/null +++ b/assets/models/ammo/rocket/rocket.md3 diff --git a/assets/models/ammo/rocket/rocket.tga b/assets/models/ammo/rocket/rocket.tga Binary files differnew file mode 100644 index 0000000..47e4606 --- /dev/null +++ b/assets/models/ammo/rocket/rocket.tga diff --git a/assets/models/ammo/rocket/rocket_1.md3 b/assets/models/ammo/rocket/rocket_1.md3 Binary files differnew file mode 100644 index 0000000..668f3f9 --- /dev/null +++ b/assets/models/ammo/rocket/rocket_1.md3 diff --git a/assets/models/ammo/rocket/rocket_2.md3 b/assets/models/ammo/rocket/rocket_2.md3 Binary files differnew file mode 100644 index 0000000..c2af2a0 --- /dev/null +++ b/assets/models/ammo/rocket/rocket_2.md3 diff --git a/assets/models/ammo/rocket/thrustc1.tga b/assets/models/ammo/rocket/thrustc1.tga Binary files differnew file mode 100644 index 0000000..581b972 --- /dev/null +++ b/assets/models/ammo/rocket/thrustc1.tga diff --git a/assets/models/ammo/rocket/thrustc2.tga b/assets/models/ammo/rocket/thrustc2.tga Binary files differnew file mode 100644 index 0000000..718f95d --- /dev/null +++ b/assets/models/ammo/rocket/thrustc2.tga diff --git a/assets/models/ammo/rocket/thrustc3.tga b/assets/models/ammo/rocket/thrustc3.tga Binary files differnew file mode 100644 index 0000000..ea1cc68 --- /dev/null +++ b/assets/models/ammo/rocket/thrustc3.tga diff --git a/assets/models/weapons/abuildupg/flash0.wav b/assets/models/weapons/abuild/flash0.wav Binary files differindex 97e12c9..97e12c9 100644 --- a/assets/models/weapons/abuildupg/flash0.wav +++ b/assets/models/weapons/abuild/flash0.wav diff --git a/assets/models/weapons/abuildupg/impactflesh0.wav b/assets/models/weapons/abuild/impactflesh0.wav Binary files differindex 53476e8..53476e8 100644 --- a/assets/models/weapons/abuildupg/impactflesh0.wav +++ b/assets/models/weapons/abuild/impactflesh0.wav diff --git a/assets/models/weapons/abuild/weapon.cfg b/assets/models/weapons/abuild/weapon.cfg index 46cfdaa..a359c2e 100644 --- a/assets/models/weapons/abuild/weapon.cfg +++ b/assets/models/weapons/abuild/weapon.cfg @@ -5,7 +5,15 @@ icon icons/icona_builder secondary { - flashSound 0 models/weapons/abuildupg/flash0.wav - impactFleshSound 0 models/weapons/abuildupg/impactflesh0.wav + flashSound 0 models/weapons/abuild/flash0.wav + impactFleshSound 0 models/weapons/abuild/impactflesh0.wav alwaysImpact } + +tertiary +{ + missileModel models/weapons/level3upg/missile.md3 + + impactMark 64 granger_spit + impactSound 0 sound/misc/organic_bounce.wav +} diff --git a/assets/models/weapons/abuildupg/weapon.cfg b/assets/models/weapons/abuildupg/weapon.cfg deleted file mode 100644 index 45d154c..0000000 --- a/assets/models/weapons/abuildupg/weapon.cfg +++ /dev/null @@ -1,19 +0,0 @@ -disableIn3rdPerson -crosshair 15 gfx/2d/crosshair-alien_s - -icon icons/icona_builder - -secondary -{ - flashSound 0 models/weapons/abuildupg/flash0.wav - impactFleshSound 0 models/weapons/abuildupg/impactflesh0.wav - alwaysImpact -} - -tertiary -{ - missileModel models/weapons/level3upg/missile.md3 - - impactMark 64 granger_spit - impactSound 0 sound/misc/organic_bounce.wav -} diff --git a/assets/models/weapons/rocketl/flare.tga b/assets/models/weapons/rocketl/flare.tga Binary files differnew file mode 100644 index 0000000..86516ca --- /dev/null +++ b/assets/models/weapons/rocketl/flare.tga diff --git a/assets/models/weapons/rocketl/flarey.tga b/assets/models/weapons/rocketl/flarey.tga Binary files differnew file mode 100644 index 0000000..37f56dc --- /dev/null +++ b/assets/models/weapons/rocketl/flarey.tga diff --git a/assets/models/weapons/rocketl/flash0.wav b/assets/models/weapons/rocketl/flash0.wav Binary files differnew file mode 100644 index 0000000..009febe --- /dev/null +++ b/assets/models/weapons/rocketl/flash0.wav diff --git a/assets/models/weapons/rocketl/impact0.wav b/assets/models/weapons/rocketl/impact0.wav Binary files differnew file mode 100644 index 0000000..f232ff1 --- /dev/null +++ b/assets/models/weapons/rocketl/impact0.wav diff --git a/assets/models/weapons/rocketl/muzzy.tga b/assets/models/weapons/rocketl/muzzy.tga Binary files differnew file mode 100644 index 0000000..a452b3f --- /dev/null +++ b/assets/models/weapons/rocketl/muzzy.tga diff --git a/assets/models/weapons/rocketl/newflare.tga b/assets/models/weapons/rocketl/newflare.tga Binary files differnew file mode 100644 index 0000000..fd6866e --- /dev/null +++ b/assets/models/weapons/rocketl/newflare.tga diff --git a/assets/models/weapons/rocketl/rocketl.md3 b/assets/models/weapons/rocketl/rocketl.md3 Binary files differnew file mode 100644 index 0000000..4119209 --- /dev/null +++ b/assets/models/weapons/rocketl/rocketl.md3 diff --git a/assets/models/weapons/rocketl/rocketl_hand.md3 b/assets/models/weapons/rocketl/rocketl_hand.md3 Binary files differnew file mode 100644 index 0000000..2a03eed --- /dev/null +++ b/assets/models/weapons/rocketl/rocketl_hand.md3 diff --git a/assets/models/weapons/rocketl/skin.tga b/assets/models/weapons/rocketl/skin.tga Binary files differnew file mode 100644 index 0000000..59e1399 --- /dev/null +++ b/assets/models/weapons/rocketl/skin.tga diff --git a/assets/models/weapons/rocketl/weapon.cfg b/assets/models/weapons/rocketl/weapon.cfg new file mode 100644 index 0000000..e5dafc6 --- /dev/null +++ b/assets/models/weapons/rocketl/weapon.cfg @@ -0,0 +1,19 @@ +weaponModel models/weapons/rocketl/rocketl.md3 +icon icons/iconw_rocketl +crosshair 48 gfx/2d/crosshair-lcannon_s + +primary +{ + missileModel models/ammo/rocket/rocket.md3 + + missileSound models/weapons/lcannon/missle.wav + missileParticleSystem models/weapons/rocketl/missilePS + + flashDlightColor 1.0 0.7 0.0 + flashSound 0 models/weapons/rocketl/flash0.wav + + impactMark 32 gfx/marks/bullet_mrk + impactSound 0 models/weapons/rocketl/impact0.wav + impactParticleSystem models/weapons/rocketl/impactPS +} + diff --git a/assets/models/weapons/rocketl/wide.tga b/assets/models/weapons/rocketl/wide.tga Binary files differnew file mode 100644 index 0000000..04a59b4 --- /dev/null +++ b/assets/models/weapons/rocketl/wide.tga diff --git a/assets/rocketl-copyright b/assets/rocketl-copyright new file mode 100644 index 0000000..fcb3c04 --- /dev/null +++ b/assets/rocketl-copyright @@ -0,0 +1,11 @@ +Rocket Launcher assets: + +flash0.wav: + http://freesound.org/people/shaynecantly/sounds/131555/ + +impact0.wav: + http://freesound.org/people/sarge4267/sounds/102734/ + http://freesound.org/people/sarge4267/sounds/102719/ + +Models and textures: + http://openarena.ws/ diff --git a/assets/scripts/general_human_buildables.particle b/assets/scripts/general_human_buildables.particle index 52ffb64..8a40717 100644 --- a/assets/scripts/general_human_buildables.particle +++ b/assets/scripts/general_human_buildables.particle @@ -261,4 +261,4 @@ humanBuildableDestroyedPS delay 0 period 0 - ~0% } -}
\ No newline at end of file +} diff --git a/assets/scripts/hw_rocketl.particle b/assets/scripts/hw_rocketl.particle new file mode 100644 index 0000000..891ac18 --- /dev/null +++ b/assets/scripts/hw_rocketl.particle @@ -0,0 +1,135 @@ +models/weapons/rocketl/missilePS +{ + ejector + { + particle + { + shader sync gfx/sprites/smoke + + displacement 0 0 0 ~0 + + velocityType static + velocityDir linear + velocityMagnitude 50 + velocity 0 0 1 ~20 + + accelerationType static + accelerationDir linear + accelerationMagnitude 50 + acceleration 0 0 0 0 + + radius 0 0.0 60.0 + alpha 0 1.0 0.0 + rotation ~360 ~360 - + bounce 0.5 + + lifeTime 700~50% + } + + count infinite + delay 0 + period 20 - ~0% + } +} + +models/weapons/rocketl/impactPS +{ + ejector + { + particle + { + shader sync rocketFlareParticle + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 0 + velocity 0 0 0 ~0 + + accelerationType static + accelerationDir linear + acceleration 0 0 0 ~0 + accelerationMagnitude 0 + + radius 0 50 100 + alpha 250 1 0 + rotation 0 ~-15 ~15 + bounce 0.0 + + lifeTime 40 + } + + count 1 + delay 0 + period 0 - 0 + } + + ejector + { + particle + { + shader sync gfx/sprites/smoke + //shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25 + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 100 + velocity 0 0 0 ~35 + + accelerationType static + accelerationDir linear + acceleration 0 0 -1 ~5 + accelerationMagnitude 25 + + radius 0 0 60 + alpha 250 .75 0 + rotation 0 ~-15 ~15 + bounce 0.0 + + lifeTime 800~200 + } + + count 10 + delay 0 + period 0 - 0 + } + + ejector + { + particle + { + shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25 + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 100 + velocity 0 0 0 ~35 + + accelerationType static + accelerationDir linear + acceleration 0 0 -1 ~5 + accelerationMagnitude 25 + + radius 0 0 100 + alpha 250 .75 0 + rotation 0 ~-15 ~15 + bounce 0.0 + color 0 { 0.8 0.2 0.2 } - + + lifeTime 300~100 + } + + count 1 + delay 0 + period 0 - 0 + } +} + diff --git a/assets/scripts/hw_rocketl.shader b/assets/scripts/hw_rocketl.shader new file mode 100644 index 0000000..28c56cb --- /dev/null +++ b/assets/scripts/hw_rocketl.shader @@ -0,0 +1,58 @@ +rocketFlash +{ + deformVertexes autosprite + { + clampmap models/weapons/rocketl/muzzy.tga + blendfunc add + tcMod rotate 1246 + } + { + clampmap models/weapons/rocketl/muzzy.tga + blendfunc add + tcMod rotate -1246 + } +} + +rocketFlare +{ + deformVertexes autosprite + { + clampmap models/weapons/rocketl/wide.tga + blendfunc add + rgbGen const ( 0.980392 0.882353 0.737255 ) + } +} + +rocketFlareParticle +{ + { + clampmap models/weapons/rocketl/wide.tga + blendfunc add + rgbGen const ( 0.980392 0.882353 0.737255 ) + } +} + +rocketThrust +{ + cull disable + { + clampmap models/weapons/rocketl/flarey.tga + blendfunc add + rgbGen const ( 0.541176 0.341176 0.156863 ) + tcMod rotate -96 + tcMod stretch sin 0.3 0.7 0 8 + } + { + clampmap models/weapons/rocketl/wide.tga + blendfunc add + rgbGen const ( 0.843137 0.588235 0.4 ) + } + { + clampmap models/weapons/rocketl/newflare.tga + blendfunc add + rgbGen const ( 0.713726 0.270588 0.121569 ) + tcMod rotate 46 + tcMod stretch inversesawtooth 0.6 0.4 0 4 + } +} + diff --git a/src/cgame/cg_buildable.c b/src/cgame/cg_buildable.c index aaeaf11..909615f 100644 --- a/src/cgame/cg_buildable.c +++ b/src/cgame/cg_buildable.c @@ -436,7 +436,7 @@ void CG_InitBuildables( void ) } cgs.media.teslaZapTS = CG_RegisterTrailSystem( "models/buildables/tesla/zap" ); - //für slime + //f\FCr slime cgs.media.slimeTS = CG_RegisterTrailSystem( "models/buildables/infestationslime" ); } @@ -1229,7 +1229,6 @@ static qboolean CG_PlayerIsBuilder( buildable_t buildable ) switch( cg.predictedPlayerState.weapon ) { case WP_ABUILD: - case WP_ABUILD2: case WP_HBUILD: return BG_Buildable( buildable )->team == BG_Weapon( cg.predictedPlayerState.weapon )->team; diff --git a/src/cgame/cg_draw.c b/src/cgame/cg_draw.c index 6af1375..95ced55 100644 --- a/src/cgame/cg_draw.c +++ b/src/cgame/cg_draw.c @@ -315,8 +315,7 @@ static void CG_DrawPlayerCreditsValue( rectDef_t *rect, vec4_t color, qboolean p ps = &cg.snap->ps; //if the build timer pie is showing don't show this - if( ( cent->currentState.weapon == WP_ABUILD || - cent->currentState.weapon == WP_ABUILD2 ) && ps->stats[ STAT_MISC ] ) + if( ( cent->currentState.weapon == WP_ABUILD ) && ps->stats[ STAT_MISC ] ) return; value = ps->persistant[ PERS_CREDIT ]; @@ -467,7 +466,6 @@ static void CG_DrawPlayerClipsRing( rectDef_t *rect, vec4_t backColor, switch( weapon ) { case WP_ABUILD: - case WP_ABUILD2: case WP_HBUILD: if( buildTime > MAXIMUM_BUILD_TIME ) buildTime = MAXIMUM_BUILD_TIME; @@ -868,7 +866,6 @@ static void CG_DrawPlayerAmmoValue( rectDef_t *rect, vec4_t color ) return; case WP_ABUILD: - case WP_ABUILD2: case WP_HBUILD: value = cg.snap->ps.persistant[ PERS_BP ]; valueMarked = cg.snap->ps.persistant[ PERS_MARKEDBP ]; @@ -1036,7 +1033,6 @@ static void CG_DrawPlayerBuildTimer( rectDef_t *rect, vec4_t color ) switch( BG_PrimaryWeapon( ps->stats ) ) { case WP_ABUILD: - case WP_ABUILD2: case WP_HBUILD: break; @@ -1074,7 +1070,6 @@ static void CG_DrawPlayerClipsValue( rectDef_t *rect, vec4_t color ) case WP_NONE: case WP_BLASTER: case WP_ABUILD: - case WP_ABUILD2: case WP_HBUILD: return; @@ -1210,7 +1205,7 @@ static float CG_ChargeProgress( void ) max = LEVEL4_TRAMPLE_CHARGE_MAX; } } - else if( cg.snap->ps.weapon == WP_LUCIFER_CANNON || cg.snap->ps.weapon == WP_FLAMER ) + else if( cg.snap->ps.weapon == WP_FLAMER ) { min = LCANNON_CHARGE_TIME_MIN; @@ -1290,7 +1285,7 @@ static void CG_DrawPlayerChargeBar( rectDef_t *rect, vec4_t ref_color, color[ 3 ] = ref_color[ 3 ] * cg.chargeMeterAlpha; // Flash red for Lucifer Cannon warning - if( (cg.snap->ps.weapon == WP_LUCIFER_CANNON || cg.snap->ps.weapon == WP_FLAMER ) && + if( (cg.snap->ps.weapon == WP_FLAMER ) && cg.snap->ps.stats[ STAT_MISC ] >= LCANNON_CHARGE_TIME_WARN && ( cg.time & 128 ) ) @@ -2167,8 +2162,8 @@ static void CG_DrawTeamOverlay( rectDef_t *rect, float scale, vec4_t color ) } else { - if( curWeapon == WP_ABUILD2 || curWeapon == WP_ALEVEL1_UPG || - curWeapon == WP_ALEVEL2_UPG || curWeapon == WP_ALEVEL3_UPG ) + if( curWeapon == WP_ALEVEL1_UPG || curWeapon == WP_ALEVEL2_UPG || + curWeapon == WP_ALEVEL3_UPG ) { CG_DrawPic( x + iconSize + leftMargin, y, iconSize, iconSize, cgs.media.upgradeClassIconShader ); diff --git a/src/cgame/cg_event.c b/src/cgame/cg_event.c index 49dec3f..794b8a4 100644 --- a/src/cgame/cg_event.c +++ b/src/cgame/cg_event.c @@ -162,6 +162,16 @@ static void CG_Obituary( entityState_t *ent ) message = "^5irradiated himself"; break; + + case MOD_ROCKETL_SPLASH: + if( gender == GENDER_FEMALE ) + message = "^5blew herself up"; + else if( gender == GENDER_NEUTER ) + message = "^5blew itself up"; + else + message = "^5blew himself up"; + break; + case MOD_PSAWBLADE: if( gender == GENDER_FEMALE ) message = "^5sliced herself up"; @@ -320,6 +330,14 @@ static void CG_Obituary( entityState_t *ent ) message = "^5was caught in the fallout of^7"; message2 = "^5's ^5lucifer cannon"; break; + case MOD_ROCKETL: + message = "^5ate^7"; + message2 = "^5's ^5rocket"; + break; + case MOD_ROCKETL_SPLASH: + message = "^5almost dodged^7"; + message2 = "^5's ^5rocket"; + break; case MOD_GRENADE: message = "^5couldn't escape^7"; message2 = "^5's ^5grenade"; @@ -1009,7 +1027,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) CG_AlienSPITEFUL_ABCESSExplosion( position, dir ); break; -//Scleim greifer schwanz für slime +//Scleim greifer schwanz f\FCr slime case EV_SLIMETRAIL: cent->currentState.weapon = WP_NONE; { diff --git a/src/cgame/cg_main.c b/src/cgame/cg_main.c index c7b470c..b7885ec 100644 --- a/src/cgame/cg_main.c +++ b/src/cgame/cg_main.c @@ -1550,7 +1550,6 @@ static const char *CG_FeederItemText( int feederID, int index, int column, qhand { switch( sp->weapon ) { - case WP_ABUILD2: case WP_ALEVEL0_UPG: case WP_ALEVEL1_UPG: case WP_ALEVEL2_UPG: diff --git a/src/cgame/cg_tutorial.c b/src/cgame/cg_tutorial.c index 6839c3a..d36ecac 100644 --- a/src/cgame/cg_tutorial.c +++ b/src/cgame/cg_tutorial.c @@ -455,6 +455,7 @@ static void CG_HumanText( char *text, playerState_t *ps ) case WP_CHAINGUN: case WP_PULSE_RIFLE: case WP_FLAMER: + case WP_LUCIFER_CANNON: Q_strcat( text, MAX_TUTORIAL_TEXT, va( "Press %s to fire the %s\n", CG_KeyNameForCommand( "+attack" ), @@ -479,17 +480,6 @@ static void CG_HumanText( char *text, playerState_t *ps ) BG_Weapon( ps->weapon )->humanName ) ); break; - case WP_LUCIFER_CANNON: - Q_strcat( text, MAX_TUTORIAL_TEXT, - va( "Hold and release %s to fire a charged shot\n", - CG_KeyNameForCommand( "+attack" ) ) ); - - Q_strcat( text, MAX_TUTORIAL_TEXT, - va( "Press %s to fire the %s\n", - CG_KeyNameForCommand( "+button5" ), - BG_Weapon( ps->weapon )->humanName ) ); - break; - case WP_HBUILD: CG_HumanCkitText( text, ps ); break; diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c index 1597194..92f3826 100644 --- a/src/game/bg_misc.c +++ b/src/game/bg_misc.c @@ -64,7 +64,7 @@ static const buildableAttributes_t bg_buildableList[ ] = ASPAWN_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; ASPAWN_BT, //int buildTime; @@ -99,7 +99,7 @@ static const buildableAttributes_t bg_buildableList[ ] = OVERMIND_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; OVERMIND_ATTACK_REPEAT,//int nextthink; OVERMIND_BT, //int buildTime; @@ -134,7 +134,7 @@ static const buildableAttributes_t bg_buildableList[ ] = BARRICADE_SPLASHRADIUS,//int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ),//weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; BARRICADE_BT, //int buildTime; @@ -169,7 +169,7 @@ static const buildableAttributes_t bg_buildableList[ ] = ACIDTUBE_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 200, //int nextthink; ACIDTUBE_BT, //int buildTime; @@ -204,7 +204,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TRAPPER_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; TRAPPER_BT, //int buildTime; @@ -240,7 +240,7 @@ static const buildableAttributes_t bg_buildableList[ ] = BOOSTER_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; BOOSTER_BT, //int buildTime; @@ -274,7 +274,7 @@ static const buildableAttributes_t bg_buildableList[ ] = HIVE_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 500, //int nextthink; HIVE_BT, //int buildTime; @@ -308,7 +308,7 @@ static const buildableAttributes_t bg_buildableList[ ] = PANZER_SMALL_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; PANZER_SMALL_BT, //int buildTime; @@ -342,7 +342,7 @@ static const buildableAttributes_t bg_buildableList[ ] = PANZER_MEDIUM_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; PANZER_MEDIUM_BT, //int buildTime; @@ -376,7 +376,7 @@ static const buildableAttributes_t bg_buildableList[ ] = PANZER_LARGE_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; PANZER_LARGE_BT, //int buildTime; @@ -410,7 +410,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TENDON_SMALL_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; TENDON_SMALL_BT, //int buildTime; @@ -445,7 +445,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TENDON_MEDIUM_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; TENDON_MEDIUM_BT, //int buildTime; @@ -480,7 +480,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TENDON_LARGE_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; TENDON_LARGE_BT, //int buildTime; @@ -516,7 +516,7 @@ static const buildableAttributes_t bg_buildableList[ ] = NET_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; NET_BT, //int buildTime; @@ -552,7 +552,7 @@ static const buildableAttributes_t bg_buildableList[ ] = NET_SPIKE_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; NET_SPIKE_BT, //int buildTime; @@ -589,7 +589,7 @@ static const buildableAttributes_t bg_buildableList[ ] = INFESTATION_SLIME_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 200, //int nextthink; INFESTATION_SLIME_BT, //int buildTime; @@ -624,7 +624,7 @@ static const buildableAttributes_t bg_buildableList[ ] = INFESTATION_THICKET_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ),//weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; INFESTATION_THICKET_BT, //int buildTime; @@ -660,7 +660,7 @@ static const buildableAttributes_t bg_buildableList[ ] = INFESTATION_BLISTER_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; INFESTATION_BLISTER_BT, //int buildTime; @@ -697,7 +697,7 @@ static const buildableAttributes_t bg_buildableList[ ] = REFLECTOR_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; REFLECTOR_BT, //int buildTime; @@ -731,7 +731,7 @@ static const buildableAttributes_t bg_buildableList[ ] = MUSCLE_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 500, //int nextthink; MUSCLE_BT, //int buildTime; @@ -766,7 +766,7 @@ static const buildableAttributes_t bg_buildableList[ ] = SPITEFUL_ABCESS_SPLASHRADIUS, //int splashRadius; MOD_SPITEFUL_ABCESS, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 200, //int nextthink; SPITEFUL_ABCESS_BT, //int buildTime; @@ -802,7 +802,7 @@ static const buildableAttributes_t bg_buildableList[ ] = COCOON_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; COCOON_BT, //int buildTime; @@ -836,7 +836,7 @@ static const buildableAttributes_t bg_buildableList[ ] = ORGANIC_BULB_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; ORGANIC_BULB_BT, //int buildTime; @@ -871,7 +871,7 @@ static const buildableAttributes_t bg_buildableList[ ] = POD_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; POD_BT, //int buildTime; @@ -905,7 +905,7 @@ static const buildableAttributes_t bg_buildableList[ ] = POD_STUMP_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; POD_STUMP_BT, //int buildTime; @@ -938,7 +938,7 @@ static const buildableAttributes_t bg_buildableList[ ] = CREEPCOLONY_SPLASHRADIUS, //int splashRadius; MOD_ASPAWN, //int meansOfDeath; TEAM_ALIENS, //int team; - ( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; + ( 1 << WP_ABUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 1000, //int nextthink; CREEPCOLONY_BT, //int buildTime; @@ -2248,7 +2248,7 @@ static const classAttributes_t bg_classList[ ] = 0.0f, //float fallDamage; ABUILDER_UPG_REGEN, //float regenRate; SCA_FOVWARPS|SCA_WALLCLIMBER|SCA_ALIENSENSE, //int abilities; - WP_ABUILD2, //weapon_t startWeapon + WP_ABUILD, //weapon_t startWeapon 105.0f, //float buildDist; 110, //int fov; 0.001f, //float bob; @@ -3602,6 +3602,31 @@ static const weaponAttributes_t bg_weapons[ ] = TEAM_HUMANS //team_t team; }, { + WP_ROCKET_LAUNCHER, //int weaponNum; + ROCKETL_PRICE, //int price; + STAGE_GE_5, //int stages + SLOT_WEAPON, //int slots; + "rocketl", //char *weaponName; + "[yefarms]Rocket Launcher", //char *humanName; + "This is a rocket launcher. It launches rockets.", + ROCKETL_AMMO, //int maxAmmo; + ROCKETL_CLIPS, //int maxClips; + qfalse, //int infiniteAmmo; + qfalse, //int usesEnergy; + ROCKETL_REPEAT, //int repeatRate1; + 0, //int repeatRate2; + 0, //int repeatRate3; + ROCKETL_RELOAD, //int reloadTime; + ROCKETL_K_SCALE, //float knockbackScale; + qfalse, //qboolean hasAltMode; + qfalse, //qboolean hasThirdMode; + qfalse, //qboolean canZoom; + 90.0f, //float zoomFov; + qtrue, //qboolean purchasable; + qtrue, //qboolean longRanged; + TEAM_HUMANS //team_t team; + }, + { WP_GRENADE, //int weaponNum; GRENADE_PRICE, //int price; STAGE_GE_3, //int stages @@ -3815,31 +3840,6 @@ static const weaponAttributes_t bg_weapons[ ] = qfalse, //int usesEnergy; ABUILDER_BUILD_REPEAT,//int repeatRate1; ABUILDER_CLAW_REPEAT, //int repeatRate2; - 0, //int repeatRate3; - 0, //int reloadTime; - ABUILDER_CLAW_K_SCALE,//float knockbackScale; - qtrue, //qboolean hasAltMode; - qfalse, //qboolean hasThirdMode; - qfalse, //qboolean canZoom; - 90.0f, //float zoomFov; - qtrue, //qboolean purchasable; - qfalse, //qboolean longRanged; - TEAM_ALIENS //team_t team; - }, - { - WP_ABUILD2, //int weaponNum; - 0, //int price; - STAGE_GE_1, //int stages - SLOT_WEAPON, //int slots; - "abuildupg", //char *weaponName; - "Alien build weapon2",//char *humanName; - "", - 0, //int maxAmmo; - 0, //int maxClips; - qtrue, //int infiniteAmmo; - qfalse, //int usesEnergy; - ABUILDER_BUILD_REPEAT,//int repeatRate1; - ABUILDER_CLAW_REPEAT, //int repeatRate2; ABUILDER_BLOB_REPEAT, //int repeatRate3; 0, //int reloadTime; ABUILDER_CLAW_K_SCALE,//float knockbackScale; diff --git a/src/game/bg_public.h b/src/game/bg_public.h index b7df340..e4f21ac 100644 --- a/src/game/bg_public.h +++ b/src/game/bg_public.h @@ -357,6 +357,7 @@ typedef enum WP_FLAMER, WP_PULSE_RIFLE, WP_LUCIFER_CANNON, + WP_ROCKET_LAUNCHER, WP_GRENADE, WP_SMOKE, WP_MINE, @@ -366,7 +367,6 @@ typedef enum WP_MGTURRET, WP_MGTURRET2, WP_ABUILD, - WP_ABUILD2, WP_HBUILD, WP_NUM_WEAPONS } weapon_t; @@ -846,6 +846,8 @@ typedef enum MOD_LCANNON_SPLASH, MOD_FLAMER, MOD_FLAMER_SPLASH, + MOD_ROCKETL, + MOD_ROCKETL_SPLASH, MOD_GRENADE, MOD_PSAWBLADE, MOD_MINE, diff --git a/src/game/g_active.c b/src/game/g_active.c index f36ec46..c7a8977 100644 --- a/src/game/g_active.c +++ b/src/game/g_active.c @@ -847,7 +847,7 @@ void ClientTimerActions( gentity_t *ent, int msec ) client->ps.stats[ STAT_STAMINA ] += rate_stamina; } - if( weapon == WP_ABUILD || weapon == WP_ABUILD2 || + if( weapon == WP_ABUILD || BG_InventoryContainsWeapon( WP_HBUILD, client->ps.stats ) ) { // Update build timer @@ -870,7 +870,6 @@ void ClientTimerActions( gentity_t *ent, int msec ) switch( weapon ) { case WP_ABUILD: - case WP_ABUILD2: case WP_HBUILD: // Set validity bit on buildable @@ -1088,8 +1087,7 @@ void ClientTimerActions( gentity_t *ent, int msec ) { client->time10000 -= 10000; - if( ent->client->ps.weapon == WP_ABUILD || - ent->client->ps.weapon == WP_ABUILD2 ) + if( ent->client->ps.weapon == WP_ABUILD ) { AddScore( ent, ALIEN_BUILDER_SCOREINC ); } diff --git a/src/game/g_combat.c b/src/game/g_combat.c index 87a6bd6..bddafaa 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -184,8 +184,7 @@ float G_CamperRewardBonus( gentity_t *self ) // exclude builders: switch( BG_GetPlayerWeapon( &self->client->ps ) ) { - case WP_ABUILD: - case WP_ABUILD2: + case WP_ABUILD: case WP_HBUILD: return 1.0f; default: ; } diff --git a/src/game/g_missile.c b/src/game/g_missile.c index 74b351c..959067e 100644 --- a/src/game/g_missile.c +++ b/src/game/g_missile.c @@ -207,8 +207,7 @@ void G_MissileImpact( gentity_t *ent, trace_t *trace ) if( other->client ) { if( ( other->client->ps.stats[ STAT_STATE ] & SS_SLOWLOCKED ) - && ( other->s.weapon < WP_ALEVEL3 - || ( other->s.weapon == WP_ABUILD2 || other->s.weapon == WP_ABUILD ) ) ) + && ( other->s.weapon < WP_ALEVEL3 || other->s.weapon == WP_ABUILD ) ) { other->client->ps.stats[ STAT_STATE ] |= SS_BLOBLOCKED; other->client->lastLockTime = level.time; @@ -966,6 +965,47 @@ gentity_t *fire_luciferCannon( gentity_t *self, vec3_t start, vec3_t dir, return bolt; } + +/* +================= +fire_rocket +================= +*/ +gentity_t *fire_rocket( gentity_t *self, vec3_t start, vec3_t dir ) +{ + gentity_t *bolt; + + VectorNormalize (dir); + + bolt = G_Spawn(); + bolt->classname = "rocket"; + bolt->pointAgainstWorld = qtrue; + bolt->nextthink = level.time + 10000; + bolt->think = G_ExplodeMissile; + bolt->s.eType = ET_MISSILE; + bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN; + bolt->s.weapon = WP_ROCKET_LAUNCHER; + bolt->s.generic1 = self->s.generic1; //weaponMode + bolt->r.ownerNum = self->s.number; + bolt->parent = self; + bolt->damage = ROCKETL_DAMAGE; + bolt->splashDamage = ROCKETL_DAMAGE / 2; + bolt->splashRadius = ROCKETL_RADIUS; + bolt->methodOfDeath = MOD_ROCKETL; + bolt->splashMethodOfDeath = MOD_ROCKETL_SPLASH; + bolt->clipmask = MASK_SHOT; + bolt->target_ent = NULL; + bolt->r.mins[ 0 ] = bolt->r.mins[ 1 ] = bolt->r.mins[ 2 ] = -ROCKETL_SIZE; + bolt->r.maxs[ 0 ] = bolt->r.maxs[ 1 ] = bolt->r.maxs[ 2 ] = ROCKETL_SIZE; + bolt->s.pos.trType = TR_LINEAR; + 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, ROCKETL_SPEED, bolt->s.pos.trDelta ); + SnapVector( bolt->s.pos.trDelta ); // save net bandwidth + VectorCopy( start, bolt->r.currentOrigin ); + return bolt; +} + /* ================= launch_grenade @@ -1502,7 +1542,7 @@ gentity_t *fire_slowBlob( gentity_t *self, vec3_t start, vec3_t dir ) bolt->think = G_ExplodeMissile; bolt->s.eType = ET_MISSILE; bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN; - bolt->s.weapon = WP_ABUILD2; + bolt->s.weapon = WP_ABUILD; bolt->s.generic1 = self->s.generic1; //weaponMode bolt->r.ownerNum = self->s.number; bolt->parent = self; diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c index bbc4e08..5453913 100644 --- a/src/game/g_weapon.c +++ b/src/game/g_weapon.c @@ -831,6 +831,19 @@ void LCChargeFire( gentity_t *ent, qboolean secondary ) /* ====================================================================== + +PULSE RIFLE + +====================================================================== +*/ + +void rocketLauncherFire( gentity_t *ent ) +{ + fire_rocket( ent, muzzle, forward ); +} + +/* +====================================================================== TESLA GENERATOR ====================================================================== */ @@ -937,8 +950,7 @@ void cancelBuildFire( gentity_t *ent ) ent->client->ps.stats[ STAT_BUILDABLE ] = BA_NONE; return; } - if( ent->client->ps.weapon == WP_ABUILD || - ent->client->ps.weapon == WP_ABUILD2 ) + if( ent->client->ps.weapon == WP_ABUILD ) meleeAttack( ent, ABUILDER_CLAW_RANGE, ABUILDER_CLAW_WIDTH, ABUILDER_CLAW_WIDTH, ABUILDER_CLAW_DMG, MOD_ABUILDER_CLAW ); } @@ -1776,7 +1788,7 @@ gclient_t *client; bounceBallFire( ent ); break; - case WP_ABUILD2: + case WP_ABUILD: slowBlobFire( ent ); break; @@ -1877,7 +1889,6 @@ void FireWeapon2( gentity_t *ent ) break; case WP_ABUILD: - case WP_ABUILD2: case WP_HBUILD: cancelBuildFire( ent ); break; @@ -1974,6 +1985,9 @@ void FireWeapon( gentity_t *ent ) case WP_PAIN_SAW: painSawFire( ent ); break; + case WP_ROCKET_LAUNCHER: + rocketLauncherFire( ent ); + break; case WP_GRENADE: throwGrenade( ent ); break; @@ -1999,7 +2013,6 @@ void FireWeapon( gentity_t *ent ) FlameTurretFire( ent ); break; case WP_ABUILD: - case WP_ABUILD2: buildFire( ent, MN_A_BUILD ); break; case WP_HBUILD: diff --git a/src/game/tremulous.h b/src/game/tremulous.h index 44450f2..b2932da 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -538,6 +538,18 @@ TREMULOUS EDGE MOD SRC FILE #define FLAMER_CHARGE_AMMO 50 // ammo cost of a full charge shot #define FLAMER_SECONDARY_REPEAT 200 +#define ROCKETL_PRICE 700 +#define ROCKETL_AMMO 6 +#define ROCKETL_CLIPS 4 +#define ROCKETL_RELOAD 2000 +#define ROCKETL_REPEAT 1000 +#define ROCKETL_K_SCALE 1.0f +#define ROCKETL_DAMAGE HDM(88) +#define ROCKETL_RADIUS 120 +#define ROCKETL_SIZE 5 +#define ROCKETL_SPEED 700 + + #define HBUILD_PRICE 0 #define HBUILD_REPEAT 1000 #define HBUILD_HEALRATE 18 |