diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cgame/cg_buildable.c | 3 | ||||
-rw-r--r-- | src/cgame/cg_draw.c | 15 | ||||
-rw-r--r-- | src/cgame/cg_event.c | 20 | ||||
-rw-r--r-- | src/cgame/cg_main.c | 1 | ||||
-rw-r--r-- | src/cgame/cg_tutorial.c | 12 | ||||
-rw-r--r-- | src/game/bg_misc.c | 104 | ||||
-rw-r--r-- | src/game/bg_mod.h | 68 | ||||
-rw-r--r-- | src/game/bg_public.h | 71 | ||||
-rw-r--r-- | src/game/edge_version.h | 3 | ||||
-rw-r--r-- | src/game/g_active.c | 6 | ||||
-rw-r--r-- | src/game/g_admin.c | 2 | ||||
-rw-r--r-- | src/game/g_buildable.c | 32 | ||||
-rw-r--r-- | src/game/g_cmds.c | 11 | ||||
-rw-r--r-- | src/game/g_combat.c | 75 | ||||
-rw-r--r-- | src/game/g_local.h | 2 | ||||
-rw-r--r-- | src/game/g_main.c | 19 | ||||
-rw-r--r-- | src/game/g_missile.c | 51 | ||||
-rw-r--r-- | src/game/g_svcmds.c | 2 | ||||
-rw-r--r-- | src/game/g_weapon.c | 23 | ||||
-rw-r--r-- | src/game/tremulous.h | 68 |
20 files changed, 297 insertions, 291 deletions
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 46f81d2..11ac93c 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,8 +1205,8 @@ 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_LUCIFER_CANNON || cg.snap->ps.weapon == WP_FLAMER ) { min = LCANNON_CHARGE_TIME_MIN; max = LCANNON_CHARGE_TIME_MAX; @@ -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 ) ) @@ -2187,8 +2182,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_mod.h b/src/game/bg_mod.h new file mode 100644 index 0000000..5e4245b --- /dev/null +++ b/src/game/bg_mod.h @@ -0,0 +1,68 @@ +MOD( MOD_UNKNOWN ), +MOD( MOD_HDOG ), +MOD( MOD_SHOTGUN ), +MOD( MOD_BLASTER ), +MOD( MOD_PAINSAW ), +MOD( MOD_MACHINEGUN ), +MOD( MOD_CHAINGUN ), +MOD( MOD_PRIFLE ), +MOD( MOD_MDRIVER ), +MOD( MOD_LASGUN ), +MOD( MOD_LCANNON ), +MOD( MOD_LCANNON_SPLASH ), +MOD( MOD_FLAMER ), +MOD( MOD_FLAMER_SPLASH ), +MOD( MOD_ROCKETL ), +MOD( MOD_ROCKETL_SPLASH ), +MOD( MOD_GRENADE ), +MOD( MOD_PSAWBLADE ), +MOD( MOD_MINE ), +MOD( MOD_FLAMES ), +MOD( MOD_SMOKE ), +MOD( MOD_SPITEFUL_ABCESS ), +MOD( MOD_WATER ), +MOD( MOD_SLIME ), +MOD( MOD_LAVA ), +MOD( MOD_CRUSH ), +MOD( MOD_TELEFRAG ), +MOD( MOD_FALLING ), +MOD( MOD_SUICIDE ), +MOD( MOD_TARGET_LASER ), +MOD( MOD_TRIGGER_HURT ), +MOD( MOD_ABUILDER_CLAW ), +MOD( MOD_LEVEL0_BITE ), +MOD( MOD_LEVEL1_CLAW ), +MOD( MOD_LEVEL1_PCLOUD ), +MOD( MOD_LEVEL3_CLAW ), +MOD( MOD_LEVEL3_POUNCE ), +MOD( MOD_LEVEL5_POUNCE ), +MOD( MOD_LEVEL5_PRICKLES ), +MOD( MOD_LEVEL3_BOUNCEBALL ), +MOD( MOD_LEVEL2_CLAW ), +MOD( MOD_LEVEL2_ZAP ), +MOD( MOD_LEVEL5_CLAW ), +MOD( MOD_LEVEL5_ZAP ), +MOD( MOD_LEVEL5_BOUNCEBALL ), +MOD( MOD_LEVEL2_BOUNCEBALL ), +MOD( MOD_LEVEL4_CLAW ), +MOD( MOD_LEVEL4_TRAMPLE ), +MOD( MOD_LEVEL4_CRUSH ), +MOD( MOD_SLOWBLOB ), +MOD( MOD_POISON ), +MOD( MOD_INFECTION ), +MOD( MOD_SWARM ), +MOD( MOD_MD2 ), +MOD( MOD_HSPAWN ), +MOD( MOD_TESLAGEN ), +MOD( MOD_MGTURRET ), +MOD( MOD_MGTURRET2 ), +MOD( MOD_REACTOR ), +MOD( MOD_ASPAWN ), +MOD( MOD_ATUBE ), +MOD( MOD_OVERMIND ), +MOD( MOD_SLAP ), +MOD( MOD_DECONSTRUCT ), +MOD( MOD_REPLACE ), +MOD( MOD_NOCREEP ), +MOD( MOD_NOBP ), +MOD( MOD_ABOMB ) diff --git a/src/game/bg_public.h b/src/game/bg_public.h index ad1c917..9edd57b 100644 --- a/src/game/bg_public.h +++ b/src/game/bg_public.h @@ -358,6 +358,7 @@ typedef enum WP_FLAMER, WP_PULSE_RIFLE, WP_LUCIFER_CANNON, + WP_ROCKET_LAUNCHER, WP_GRENADE, WP_SMOKE, WP_MINE, @@ -367,7 +368,6 @@ typedef enum WP_MGTURRET, WP_MGTURRET2, WP_ABUILD, - WP_ABUILD2, WP_HBUILD, WP_NUM_WEAPONS } weapon_t; @@ -833,72 +833,9 @@ typedef enum // means of death typedef enum { - MOD_UNKNOWN, - MOD_HDOG, - MOD_SHOTGUN, - MOD_BLASTER, - MOD_PAINSAW, - MOD_MACHINEGUN, - MOD_CHAINGUN, - MOD_PRIFLE, - MOD_MDRIVER, - MOD_LASGUN, - MOD_LCANNON, - MOD_LCANNON_SPLASH, - MOD_FLAMER, - MOD_FLAMER_SPLASH, - MOD_GRENADE, - MOD_PSAWBLADE, - MOD_MINE, - MOD_FLAMES, - MOD_SMOKE, - MOD_SPITEFUL_ABCESS, - MOD_WATER, - MOD_SLIME, - MOD_LAVA, - MOD_CRUSH, - MOD_TELEFRAG, - MOD_FALLING, - MOD_SUICIDE, - MOD_TARGET_LASER, - MOD_TRIGGER_HURT, - MOD_ABUILDER_CLAW, - MOD_LEVEL0_BITE, - MOD_LEVEL1_CLAW, - MOD_LEVEL1_PCLOUD, - MOD_LEVEL3_CLAW, - MOD_LEVEL3_POUNCE, - MOD_LEVEL5_POUNCE, - MOD_LEVEL5_PRICKLES, - MOD_LEVEL3_BOUNCEBALL, - MOD_LEVEL2_CLAW, - MOD_LEVEL2_ZAP, - MOD_LEVEL5_CLAW, - MOD_LEVEL5_ZAP, - MOD_LEVEL5_BOUNCEBALL, - MOD_LEVEL2_BOUNCEBALL, - MOD_LEVEL4_CLAW, - MOD_LEVEL4_TRAMPLE, - MOD_LEVEL4_CRUSH, - MOD_SLOWBLOB, - MOD_POISON, - MOD_INFECTION, - MOD_SWARM, - MOD_MD2, - MOD_HSPAWN, - MOD_TESLAGEN, - MOD_MGTURRET, - MOD_MGTURRET2, - MOD_REACTOR, - MOD_ASPAWN, - MOD_ATUBE, - MOD_OVERMIND, - MOD_SLAP, - MOD_DECONSTRUCT, - MOD_REPLACE, - MOD_NOCREEP, - MOD_NOBP, - MOD_ABOMB +#define MOD(x) x +#include "bg_mod.h" +#undef MOD } meansOfDeath_t; diff --git a/src/game/edge_version.h b/src/game/edge_version.h new file mode 100644 index 0000000..d5e3ab5 --- /dev/null +++ b/src/game/edge_version.h @@ -0,0 +1,3 @@ +#ifndef EDGE_MOD_VERSION +#define EDGE_MOD_VERSION "7.5e" +#endif 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_admin.c b/src/game/g_admin.c index 5d11ac4..aa07e6f 100644 --- a/src/game/g_admin.c +++ b/src/game/g_admin.c @@ -3859,7 +3859,7 @@ void G_admin_add_score( gentity_t *ent, int score ) { a = ent->client->pers.admin; a->level = n->level; admin_log( va( "^7%d (%s^7) \"%s" S_COLOR_WHITE "\"", a->level, a->guid, a->name ) ); - AP( va("print \"^3setlevel: ^7%s^7 was given level %d admin rights (^7%s^7) through score gained\\\n\"", + AP( va("print \"^3setlevel: ^7%s^7 was given level %d admin rights (^7%s^7) through score gained\n\"", a->name, a->level, n->name ) ); // admin_writeconfig(); } diff --git a/src/game/g_buildable.c b/src/game/g_buildable.c index 841038f..d132890 100644 --- a/src/game/g_buildable.c +++ b/src/game/g_buildable.c @@ -398,30 +398,20 @@ Note: 'pos' can be NULL, in this case return the overall BP of the team. int G_GetBuildPoints( const vec3_t pos, team_t team ) { int value = 0; - - if( !G_Overmind( ) && team == TEAM_ALIENS ) - { - return 0; - } - else if( team == TEAM_ALIENS ) - { + switch(team) { + case TEAM_ALIENS: + if ( !G_Overmind( ) ) return 0; value = level.alienBuildPoints; - } - else if( !G_Reactor( ) && team == TEAM_HUMANS ) - { - return 0; - } - else if( team == TEAM_HUMANS ) - { + break; + case TEAM_HUMANS: + if ( !G_Reactor( ) ) return 0; value = level.humanBuildPoints; - } - else - return 0; - - if( ( value > 0 ) && ( G_TimeTilSuddenDeath( ) <= 0 ) ) + break; + default: return 0; - else - return value; + } + if( ( value > 0 ) && ( G_TimeTilSuddenDeath( ) <= 0 ) ) return 0; + return value; } /* diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c index 39a87b9..8595b60 100644 --- a/src/game/g_cmds.c +++ b/src/game/g_cmds.c @@ -3820,19 +3820,18 @@ void G_UnEscapeString( char *in, char *out, int len ) void Cmd_MyScore_f( gentity_t *ent ) { - g_admin_level_t *n; + g_admin_level_t *l,*n; if ( !ent || !ent->client->pers.admin ) { ADMP( "This command is only available for registered players.\n" ); return; } - if ( n = G_admin_level_next( G_admin_level( ent->client->pers.admin->level ) ) ) { + l = G_admin_find_level_for_score( ent->client->pers.admin->score ); + if ( n = G_admin_level_next( G_admin_level( l->level ) ) ) { ADMP( va( "^7Level %d (%s^7) total score earned: %d next level: %d\n", - ent->client->pers.admin->level, G_admin_level( ent->client->pers.admin->level )->name, - ent->client->pers.admin->score, n->score ) ); + l->level, G_admin_level( l->level )->name, ent->client->pers.admin->score, n->score ) ); } else { ADMP( va( "^7Level %d (%s^7) total score earned: %d (max level)\n", - ent->client->pers.admin->level, G_admin_level( ent->client->pers.admin->level )->name, - ent->client->pers.admin->score ) ); + l->level, G_admin_level( l->level )->name, ent->client->pers.admin->score ) ); } } diff --git a/src/game/g_combat.c b/src/game/g_combat.c index 87a6bd6..e43d036 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -80,75 +80,9 @@ void LookAtKiller( gentity_t *self, gentity_t *inflictor, gentity_t *attacker ) // these are just for logging, the client prints its own messages char *modNames[ ] = { - "MOD_UNKNOWN", - "MOD_HDOG", - "MOD_SHOTGUN", - "MOD_BLASTER", - "MOD_PAINSAW", - "MOD_MACHINEGUN", - "MOD_CHAINGUN", - "MOD_PRIFLE", - "MOD_MDRIVER", - "MOD_LASGUN", - "MOD_LCANNON", - "MOD_LCANNON_SPLASH", - "MOD_FLAMER", - "MOD_FLAMER_SPLASH", - "MOD_GRENADE", - "MOD_PSAWBLADE", - "MOD_MINE", - "MOD_FLAMES", - "MOD_SMOKE", - "MOD_SPITEFUL_ABCESS", - "MOD_WATER", - "MOD_SLIME", - "MOD_LAVA", - "MOD_CRUSH", - "MOD_TELEFRAG", - "MOD_FALLING", - "MOD_SUICIDE", - "MOD_TARGET_LASER", - "MOD_TRIGGER_HURT", - - "MOD_ABUILDER_CLAW", - "MOD_LEVEL0_BITE", - "MOD_LEVEL1_CLAW", - "MOD_LEVEL1_PCLOUD", - "MOD_LEVEL3_CLAW", - "MOD_LEVEL3_POUNCE", - "MOD_LEVEL5_POUNCE", - "MOD_LEVEL5_PRICKLES", - "MOD_LEVEL3_BOUNCEBALL", - "MOD_LEVEL2_CLAW", - "MOD_LEVEL2_ZAP", - "MOD_LEVEL5_CLAW", - "MOD_LEVEL5_ZAP", - "MOD_LEVEL5_BOUNCEBALL", - "MOD_LEVEL2_BOUNCEBALL", - "MOD_LEVEL4_CLAW", - "MOD_LEVEL4_TRAMPLE", - "MOD_LEVEL4_CRUSH", - - "MOD_SLOWBLOB", - "MOD_POISON", - "MOD_INFECTION", - "MOD_SWARM", - "MOD_MD2", - "MOD_HSPAWN", - "MOD_TESLAGEN", - "MOD_MGTURRET", - "MOD_MGTURRET2", - "MOD_REACTOR", - - "MOD_ASPAWN", - "MOD_ATUBE", - "MOD_OVERMIND", - "MOD_SLAP", - "MOD_DECONSTRUCT", - "MOD_REPLACE", - "MOD_NOCREEP", - "MOD_NOBP", - "MOD_ABOMB" +#define MOD(x) #x +#include "bg_mod.h" +#undef MOD }; /* @@ -184,8 +118,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_local.h b/src/game/g_local.h index 1b120a8..32b6075 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -1300,6 +1300,8 @@ extern vmCvar_t g_AutoLevelMinTeamSize; extern vmCvar_t g_RageQuitScorePenalty; extern vmCvar_t g_DretchTurretDamage; extern vmCvar_t g_DretchBuildingDamage; +extern vmCvar_t g_OwnTeamBPFactor; +extern vmCvar_t g_EnemyTeamBPFactor; void trap_Print( const char *fmt ); void trap_Error( const char *fmt ); diff --git a/src/game/g_main.c b/src/game/g_main.c index f4ab0b0..f41d8d3 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -26,9 +26,12 @@ TREMULOUS EDGE MOD SRC FILE =========================================================================== */ #include "g_local.h" +#include "edge_version.h" #define G_MOD_VERSION "Aardvark 0.5x" SVN_VERSION -#define EDGE_MOD_VERSION "7.0.x" +#ifndef EDGE_MOD_VERSION +#define EDGE_MOD_VERSION "7.5.x" +#endif level_locals_t level; typedef struct @@ -200,6 +203,8 @@ vmCvar_t g_AutoLevelMinTeamSize; vmCvar_t g_RageQuitScorePenalty; vmCvar_t g_DretchTurretDamage; vmCvar_t g_DretchBuildingDamage; +vmCvar_t g_OwnTeamBPFactor; +vmCvar_t g_EnemyTeamBPFactor; // copy cvars that can be set in worldspawn so they can be restored later static char cv_gravity[ MAX_CVAR_VALUE_STRING ]; @@ -369,7 +374,9 @@ static cvarTable_t gameCvarTable[ ] = { &g_AutoLevelMinTeamSize, "g_AutoLevelMinTeamSize", "3", CVAR_ARCHIVE, 0, qfalse }, { &g_RageQuitScorePenalty, "g_RageQuitScorePenalty", "2000", CVAR_ARCHIVE, 0, qfalse }, { &g_DretchTurretDamage, "g_DretchTurretDamage", "1", CVAR_ARCHIVE, 0, qfalse }, - { &g_DretchBuildingDamage, "g_DretchBuildingDamage", "0.5", CVAR_ARCHIVE, 0, qfalse } + { &g_DretchBuildingDamage, "g_DretchBuildingDamage", "0.5", CVAR_ARCHIVE, 0, qfalse }, + { &g_OwnTeamBPFactor, "g_OwnTeamBPFactor", "1.0", CVAR_ARCHIVE, 0, qfalse }, + { &g_EnemyTeamBPFactor, "g_EnemyTeamBPFactor", "0.0", CVAR_ARCHIVE, 0, qfalse } }; static int gameCvarTableSize = sizeof( gameCvarTable ) / sizeof( gameCvarTable[ 0 ] ); void G_InitGame( int levelTime, int randomSeed, int restart ); @@ -1087,6 +1094,7 @@ void G_SpawnClients( team_t team ) if( g_teamForceBalance.integer == 2 && !level.humanTeamLocked && !level.alienTeamLocked && + level.numHumanSpawns > 0 && level.numLiveAlienClients-level.numHumanClients > 0 ) numSpawns = -1; } @@ -1097,6 +1105,7 @@ void G_SpawnClients( team_t team ) if( g_teamForceBalance.integer == 2 && !level.humanTeamLocked && !level.alienTeamLocked && + level.numAlienSpawns > 0 && level.numLiveHumanClients-level.numAlienClients > 0 ) numSpawns = -1; } @@ -1389,8 +1398,8 @@ void G_CalculateBuildPoints( void ) hFixed = h_refineries * g_humanRefineryBuildPoints.value; // LimitSum( g_maxFixedBuildPoints.value, 1.0f, &aFixed, &hFixed ); - level.alienExtraBuildPoints = aVar + aFixed; - level.humanExtraBuildPoints = hVar + hFixed; + level.alienExtraBuildPoints = g_OwnTeamBPFactor.value * (aVar + aFixed) + g_EnemyTeamBPFactor.value * (hVar + hFixed); + level.humanExtraBuildPoints = g_OwnTeamBPFactor.value * (hVar + hFixed) + g_EnemyTeamBPFactor.value * (aVar + aFixed); level.humanBuildPoints += level.humanExtraBuildPoints; level.alienBuildPoints += level.alienExtraBuildPoints; @@ -2619,7 +2628,7 @@ void G_ArmageddonStep( void ) if (thresholdOther > 0.0f) if (random() < thresholdOther) { ent->health = -999; ent->enemy = &g_entities[ ENTITYNUM_WORLD ]; - ent->die( ent, ent->enemy, ent->enemy, 999, MOD_UNKNOWN ); + ent->die( ent, ent->enemy, ent->enemy, 999, MOD_HDOG ); } break; } diff --git a/src/game/g_missile.c b/src/game/g_missile.c index 74b351c..fddfe3b 100644 --- a/src/game/g_missile.c +++ b/src/game/g_missile.c @@ -206,14 +206,14 @@ void G_MissileImpact( gentity_t *ent, trace_t *trace ) { if( other->client ) { + /* NOTE: Locking enemies completely in place disabled for now. 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; } - else if( other->s.weapon >= WP_ALEVEL3 && other->s.weapon < WP_BLASTER + else */if( other->s.weapon >= WP_ALEVEL3 && other->s.weapon < WP_BLASTER && other->client->blobs <= 3 ) { other->client->lastSlowTime = level.time; @@ -288,7 +288,7 @@ void G_MissileImpact( gentity_t *ent, trace_t *trace ) return; } } - else if ( other->s.eType == ET_BUILDABLE && other->s.modelindex == BA_A_REFLECTOR && ( !strcmp( ent->classname, "lcannon" ) || !strcmp( ent->classname, "pulse" ) || !strcmp( ent->classname, "lasgun" ) ) ) + else if ( other->s.eType == ET_BUILDABLE && other->s.modelindex == BA_A_REFLECTOR && ( !strcmp( ent->classname, "lcannon" ) || !strcmp( ent->classname, "pulse" ) || !strcmp( ent->classname, "lasgun" ) || !strcmp( ent->classname, "rocket" ) ) ) { G_BounceMissile( ent, trace ); @@ -966,6 +966,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; + 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 +1543,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_svcmds.c b/src/game/g_svcmds.c index 775b4ed..a54a9ad 100644 --- a/src/game/g_svcmds.c +++ b/src/game/g_svcmds.c @@ -610,7 +610,7 @@ static void Svcmd_Armageddon_f( void ) { ent->health = -999; ent->enemy = &g_entities[ ENTITYNUM_WORLD ]; - ent->die( ent, ent->enemy, ent->enemy, 999, MOD_UNKNOWN ); + ent->die( ent, ent->enemy, ent->enemy, 999, MOD_HDOG ); } } 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..d05ebe4 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -79,7 +79,7 @@ TREMULOUS EDGE MOD SRC FILE #define ALIEN_SPAWN_REPEAT_TIME 11000 #define ALIEN_REGEN_DAMAGE_TIME 2000 //msec since damage that regen starts again #define ALIEN_REGEN_NOCREEP_MOD (1.0f/3.0f) //regen off creep -#define ALIEN_MAX_FRAGS 18 +#define ALIEN_MAX_FRAGS 9 #define ALIEN_MAX_CREDITS (ALIEN_MAX_FRAGS*ALIEN_CREDITS_PER_KILL) #define ALIEN_CREDITS_PER_KILL 400 #define ALIEN_TK_SUICIDE_PENALTY 150 @@ -345,7 +345,7 @@ TREMULOUS EDGE MOD SRC FILE #define STAMINA_BLACKOUT_LEVEL -800 #define HUMAN_SPAWN_REPEAT_TIME 11000 #define HUMAN_REGEN_DAMAGE_TIME 2000 //msec since damage before dcc repairs -#define HUMAN_MAX_CREDITS 4000 +#define HUMAN_MAX_CREDITS 2000 #define HUMAN_TK_SUICIDE_PENALTY 150 #define HUMAN_BUILDER_SCOREINC 50 // builders receive this many points every 10 seconds #define ALIEN_BUILDER_SCOREINC AVM(100) // builders receive this many points every 10 seconds @@ -511,7 +511,7 @@ TREMULOUS EDGE MOD SRC FILE #define PRIFLE_DMG HDM(9) #define PRIFLE_SPEED 1200 #define PRIFLE_SIZE 5 -#define PRIFLE_SECONDARY_SPEED 800 +#define PRIFLE_SECONDARY_SPEED 900 #define PRIFLE_SECONDARY_REPEAT 400 #define LCANNON_PRICE 600 @@ -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 8 +#define ROCKETL_CLIPS 3 +#define ROCKETL_RELOAD 0 +#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 @@ -653,20 +665,20 @@ TREMULOUS EDGE MOD SRC FILE #define ACIDTUBE_BP 6 #define ACIDTUBE_BT 8000 -#define ACIDTUBE_HEALTH ABHM(125) +#define ACIDTUBE_HEALTH ABHM(130) #define ACIDTUBE_REGEN 10 #define ACIDTUBE_SPLASHDAMAGE 50 #define ACIDTUBE_SPLASHRADIUS 100 #define ACIDTUBE_CREEPSIZE 30 #define ACIDTUBE_DAMAGE 8 #define ACIDTUBE_RANGE 300.0f -#define ACIDTUBE_REPEAT 300 +#define ACIDTUBE_REPEAT 280 #define ACIDTUBE_REPEAT_ANIM 2000 #define ACIDTUBE_VALUE ABVM(ACIDTUBE_BP) #define HIVE_BP 8 #define HIVE_BT 13000 -#define HIVE_HEALTH ABHM(125) +#define HIVE_HEALTH ABHM(130) #define HIVE_REGEN 10 #define HIVE_SPLASHDAMAGE 30 #define HIVE_SPLASHRADIUS 200 @@ -676,7 +688,7 @@ TREMULOUS EDGE MOD SRC FILE #define HIVE_REPEAT 3000 #define HIVE_K_SCALE 1.0f #define HIVE_DMG 80 -#define HIVE_SPEED 320.0f +#define HIVE_SPEED 340.0f #define HIVE_DIR_CHANGE_PERIOD 500 #define HIVE_VALUE ABVM(HIVE_BP) @@ -708,7 +720,7 @@ TREMULOUS EDGE MOD SRC FILE #define OVERMIND_VALUE ABVM(50) #define PANZER_SMALL_BP 1 -#define PANZER_SMALL_BT 6000 +#define PANZER_SMALL_BT 3000 #define PANZER_SMALL_HEALTH ABHM(100) #define PANZER_SMALL_REGEN 1 #define PANZER_SMALL_SPLASHDAMAGE 1 @@ -717,7 +729,7 @@ TREMULOUS EDGE MOD SRC FILE #define PANZER_SMALL_VALUE ABVM(PANZER_SMALL_BP) #define PANZER_MEDIUM_BP 2 -#define PANZER_MEDIUM_BT 15000 +#define PANZER_MEDIUM_BT 9000 #define PANZER_MEDIUM_HEALTH ABHM(250) #define PANZER_MEDIUM_REGEN 1 #define PANZER_MEDIUM_SPLASHDAMAGE 5 @@ -726,7 +738,7 @@ TREMULOUS EDGE MOD SRC FILE #define PANZER_MEDIUM_VALUE ABVM(PANZER_MEDIUM_BP) #define PANZER_LARGE_BP 5 -#define PANZER_LARGE_BT 20000 +#define PANZER_LARGE_BT 18000 #define PANZER_LARGE_HEALTH ABHM(450) #define PANZER_LARGE_REGEN 1 #define PANZER_LARGE_SPLASHDAMAGE 10 @@ -933,7 +945,7 @@ TREMULOUS EDGE MOD SRC FILE #define MGTURRET2_BT 20000 #define MGTURRET2_HEALTH HBHM(300) #define MGTURRET2_SPLASHDAMAGE 1 -#define MGTURRET2_SPLASHRADIUS 170 +#define MGTURRET2_SPLASHRADIUS 120 #define MGTURRET2_ANGULARSPEED 12 #define MGTURRET2_ACCURACY_TO_FIRE 0 #define MGTURRET2_VERTICALCAP 40 // +/- maximum pitch @@ -941,8 +953,8 @@ TREMULOUS EDGE MOD SRC FILE #define MGTURRET2_K_SCALE 1.0f #define MGTURRET2_RANGE 50.0f #define MGTURRET2_SPREAD 300 -#define MGTURRET2_DMG HDM(16) -#define MGTURRET2_SPINUP_TIME 600 // time between target sighted and fire +#define MGTURRET2_DMG HDM(18) +#define MGTURRET2_SPINUP_TIME 550 // time between target sighted and fire #define MGTURRET2_VALUE HBVM(MGTURRET2_BP) #define FLAMER2_LIFETIME 350.0f @@ -954,7 +966,7 @@ TREMULOUS EDGE MOD SRC FILE #define TESLAGEN_REPEAT 250 #define TESLAGEN_K_SCALE 4.0f #define TESLAGEN_RANGE 225 -#define TESLAGEN_DMG HDM(11) +#define TESLAGEN_DMG HDM(12) #define TESLAGEN_VALUE HBVM(TESLAGEN_BP) #define DC_BP 15 @@ -996,36 +1008,36 @@ TREMULOUS EDGE MOD SRC FILE //EDGE BUILDINGS HUMANS #define CONTAINER_SMALL_BP 1 -#define CONTAINER_SMALL_BT 5000 +#define CONTAINER_SMALL_BT 3000 #define CONTAINER_SMALL_HEALTH HBHM(60) #define CONTAINER_SMALL_SPLASHDAMAGE 1 #define CONTAINER_SMALL_SPLASHRADIUS 10 #define CONTAINER_SMALL_VALUE HBVM(CONTAINER_SMALL_BP) #define CONTAINER_MEDIUM_BP 2 -#define CONTAINER_MEDIUM_BT 14000 +#define CONTAINER_MEDIUM_BT 9000 #define CONTAINER_MEDIUM_HEALTH HBHM(250) #define CONTAINER_MEDIUM_SPLASHDAMAGE 5 #define CONTAINER_MEDIUM_SPLASHRADIUS 40 #define CONTAINER_MEDIUM_VALUE HBVM(CONTAINER_MEDIUM_BP) #define CONTAINER_LARGE_BP 5 -#define CONTAINER_LARGE_BT 20000 +#define CONTAINER_LARGE_BT 18000 #define CONTAINER_LARGE_HEALTH HBHM(450) #define CONTAINER_LARGE_SPLASHDAMAGE 10 #define CONTAINER_LARGE_SPLASHRADIUS 70 #define CONTAINER_LARGE_VALUE HBVM(CONTAINER_LARGE_BP) -#define PLATE_SMALL_BP 1 +#define PLATE_SMALL_BP 2 #define PLATE_SMALL_BT 4000 -#define PLATE_SMALL_HEALTH HBHM(25) +#define PLATE_SMALL_HEALTH HBHM(100) #define PLATE_SMALL_SPLASHDAMAGE 5 #define PLATE_SMALL_SPLASHRADIUS 10 #define PLATE_SMALL_VALUE HBVM(PLATE_SMALL_BP) -#define PLATE_LARGE_BP 3 +#define PLATE_LARGE_BP 4 #define PLATE_LARGE_BT 13000 -#define PLATE_LARGE_HEALTH HBHM(100) +#define PLATE_LARGE_HEALTH HBHM(200) #define PLATE_LARGE_SPLASHDAMAGE 5 #define PLATE_LARGE_SPLASHRADIUS 100 #define PLATE_LARGE_VALUE HBVM(PLATE_LARGE_BP) @@ -1045,21 +1057,21 @@ TREMULOUS EDGE MOD SRC FILE #define FENCE_ROD_VALUE HBVM(FENCE_ROD_BP) #define BARRIER_LINE_BP 2 -#define BARRIER_LINE_BT 12000 -#define BARRIER_LINE_HEALTH HBHM(300) +#define BARRIER_LINE_BT 10000 +#define BARRIER_LINE_HEALTH HBHM(350) #define BARRIER_LINE_SPLASHDAMAGE 10 #define BARRIER_LINE_SPLASHRADIUS 50 #define BARRIER_LINE_VALUE HBVM(BARRIER_LINE_BP) #define BARRIER_CORNER_BP 2 -#define BARRIER_CORNER_BT 12000 -#define BARRIER_CORNER_HEALTH HBHM(300) +#define BARRIER_CORNER_BT 10000 +#define BARRIER_CORNER_HEALTH HBHM(350) #define BARRIER_CORNER_SPLASHDAMAGE 10 #define BARRIER_CORNER_SPLASHRADIUS 50 #define BARRIER_CORNER_VALUE HBVM(BARRIER_CORNER_BP) #define BARRIER_POINT_BP 3 -#define BARRIER_POINT_BT 12000 +#define BARRIER_POINT_BT 10000 #define BARRIER_POINT_HEALTH HBHM(350) #define BARRIER_POINT_SPLASHDAMAGE 10 #define BARRIER_POINT_SPLASHRADIUS 50 @@ -1075,14 +1087,14 @@ TREMULOUS EDGE MOD SRC FILE #define SHIELD_VALUE HBVM(SHIELD_BP) #define LADDER_BP 5 -#define LADDER_BT 8000 +#define LADDER_BT 4000 #define LADDER_HEALTH HBHM(155) #define LADDER_SPLASHDAMAGE 15 #define LADDER_SPLASHRADIUS 250 #define LADDER_VALUE HBVM(LADDER_BP) #define TEFLON_FOIL_BP 1 -#define TEFLON_FOIL_BT 2000 +#define TEFLON_FOIL_BT 1500 #define TEFLON_FOIL_HEALTH HBHM(50) #define TEFLON_FOIL_SPLASHDAMAGE 1 #define TEFLON_FOIL_SPLASHRADIUS 1 |