Merge pull request #2 from DrBeef/TBDC

Team Beef Directors Cut
This commit is contained in:
Simon Brown 2023-04-06 10:02:01 +01:00 committed by Simon
parent 64417d1521
commit e765341b7d
20 changed files with 2298 additions and 3812 deletions

View file

@ -164,6 +164,13 @@ void VR_SetHMDOrientation(float pitch, float yaw, float roll)
if (!vr.maxHeight || vr.maxHeight < 1.0) {
vr.maxHeight = vr.hmdposition[1];
}
//GB Instantiate initial velocity
if(!vr.tempWeaponVelocity)
{
vr.tempWeaponVelocity = 400.0f;
}
vr.curHeight = vr.hmdposition[1];
}

View file

@ -29,6 +29,9 @@ typedef struct {
bool third_person;
float fov_x;
float fov_y;
float tempWeaponVelocity;
bool immersive_cinematics;
bool weapon_stabilised;
bool right_handed;
@ -40,6 +43,7 @@ typedef struct {
int cgzoommode;
int cgzoomdir;
int saberBlockDebounce; // Amount of time after player is blocked that the saber position is fixed
short saberBounceMove;
int forceid;

View file

@ -17,6 +17,7 @@ Authors : Simon Brown
#include <client/client.h>
#include <statindex.h>
#include "android/sys_local.h"
#include "VrTBDC.h"
#ifdef JK2_MODE
#include "../OpenJK/codeJK2/game/weapons.h"
@ -121,12 +122,68 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
QuatToYawPitchRoll(pWeapon->Pose.orientation, rotation, vr.weaponangles[ANGLES_DEFAULT]);
QuatToYawPitchRoll(pOff->Pose.orientation, rotation, vr.offhandangles[ANGLES_DEFAULT]);
//if we are in saber block debounce, don't update the saber angles
if (vr.saberBlockDebounce < cl.serverTime) {
rotation[PITCH] = 45;
QuatToYawPitchRoll(pWeapon->Pose.orientation, rotation, vr.weaponangles[ANGLES_SABER]);
QuatToYawPitchRoll(pOff->Pose.orientation, rotation, vr.offhandangles[ANGLES_SABER]);
rotation[PITCH] = 45;
//If we are in a saberBlockDebounce thing then add on an angle
//Lerped upon how far from the start of the saber move
if (vr.saberBlockDebounce > cl.serverTime) {
float lerp = 0.0f;
//Where are we in the lerp
// 0 = vr.saberBlockDebounce - TBDC_SABER_BOUNCETIME
// 1 = vr.saberBlockDebounce - TBDC_SABER_BOUNCETIME / 2
// 0 (again) = vr.saberBlockDebounce
if(cl.serverTime < vr.saberBlockDebounce - TBDC_SABER_BOUNCETIME / 2)
{
//Somewhere between 0 and 1
lerp = float(cl.serverTime - (vr.saberBlockDebounce - TBDC_SABER_BOUNCETIME)) / float((vr.saberBlockDebounce - TBDC_SABER_BOUNCETIME / 2) - (vr.saberBlockDebounce - TBDC_SABER_BOUNCETIME));
}
else
{
//Somewhere between 1 and 0
lerp = 1 - float(cl.serverTime - (vr.saberBlockDebounce - TBDC_SABER_BOUNCETIME / 2)) / float(vr.saberBlockDebounce - (vr.saberBlockDebounce - TBDC_SABER_BOUNCETIME / 2));
}
switch(vr.saberBounceMove) {
case VRLS_B1_BR:
rotation[PITCH] += lerp * TBDC_SABER_BOUNCEANGLE;
rotation[YAW] -= lerp * TBDC_SABER_BOUNCEANGLE;
break;
case VRLS_B1__R:
rotation[YAW] -= lerp * TBDC_SABER_BOUNCEANGLE;
break;
case VRLS_B1_TR:
rotation[PITCH] -= lerp * TBDC_SABER_BOUNCEANGLE;
rotation[YAW] -= lerp * TBDC_SABER_BOUNCEANGLE;
break;
case VRLS_B1_T_:
rotation[PITCH] -= lerp * TBDC_SABER_BOUNCEANGLE;
break;
case VRLS_B1_TL:
rotation[PITCH] -= lerp * TBDC_SABER_BOUNCEANGLE;
rotation[YAW] += lerp * TBDC_SABER_BOUNCEANGLE;
break;
case VRLS_B1__L:
rotation[YAW] += lerp * TBDC_SABER_BOUNCEANGLE;
break;
case VRLS_B1_BL:
rotation[PITCH] += lerp * TBDC_SABER_BOUNCEANGLE;
rotation[YAW] += lerp * TBDC_SABER_BOUNCEANGLE;
break;
default:
rotation[PITCH] -= lerp * TBDC_SABER_BOUNCEANGLE;
rotation[YAW] += lerp * (TBDC_SABER_BOUNCEANGLE / 2);
break;
}
}
/*else if(cl.serverTime > vr.saberBlockDebounce + 3000)
{
if(vr.saberBounceMove < 82)
{
vr.saberBounceMove = 82;
}
vr.saberBlockDebounce = cl.serverTime + TBDC_SABER_BOUNCETIME;
}*/
QuatToYawPitchRoll(pWeapon->Pose.orientation, rotation, vr.weaponangles[ANGLES_SABER]);
QuatToYawPitchRoll(pOff->Pose.orientation, rotation, vr.offhandangles[ANGLES_SABER]);
rotation[PITCH] = vr_weapon_pitchadjust->value;
QuatToYawPitchRoll(pWeapon->Pose.orientation, rotation, vr.weaponangles[ANGLES_ADJUSTED]);
@ -167,6 +224,14 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
vr.menu_right_handed = !vr.menu_right_handed;
}
}
//Close the datapad
if (((secondaryButtonsNew & secondaryButton2) !=
(secondaryButtonsOld & secondaryButton2)) &&
(secondaryButtonsNew & secondaryButton2)) {
Sys_QueEvent(0, SE_KEY, A_TAB, true, 0, NULL);
}
}
else
{
@ -349,6 +414,29 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
}
}
/*
//Parameter Changer
static bool changed = false;
if (between(-0.2f, primaryJoystickX, 0.2f) &&
between(0.8f, pPrimaryJoystick->y, 1.0f)) {
if(!changed) {
vr.tempWeaponVelocity += 25;
changed = true;
ALOGV("**TBDC** Projectile speed %f",vr.tempWeaponVelocity);
}
} else if (between(-0.2f, primaryJoystickX, 0.2f) &&
between(-1.0f, pPrimaryJoystick->y, -0.8f)) {
if(!changed) {
vr.tempWeaponVelocity -= 25;
ALOGV("**TBDC** Projectile speed %f",vr.tempWeaponVelocity);
changed = true;
}
}
else
{
changed = false;
}*/
//dominant hand stuff first
{
//Record recent weapon position for trajectory based stuff
@ -359,16 +447,16 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
VectorCopy(vr.weaponoffset, vr.weaponoffset_history[0]);
vr.weaponoffset_history_timestamp[0] = vr.weaponoffset_timestamp;
if (vr.saberBlockDebounce < cl.serverTime) {
VectorSet(vr.weaponposition, pWeapon->Pose.position.x,
pWeapon->Pose.position.y, pWeapon->Pose.position.z);
///Weapon location relative to view
VectorSet(vr.weaponoffset, pWeapon->Pose.position.x,
pWeapon->Pose.position.y, pWeapon->Pose.position.z);
VectorSubtract(vr.weaponoffset, vr.hmdposition, vr.weaponoffset);
vr.weaponoffset_timestamp = Sys_Milliseconds();
}
VectorSet(vr.weaponposition, pWeapon->Pose.position.x,
pWeapon->Pose.position.y, pWeapon->Pose.position.z);
///Weapon location relative to view
VectorSet(vr.weaponoffset, pWeapon->Pose.position.x,
pWeapon->Pose.position.y, pWeapon->Pose.position.z);
VectorSubtract(vr.weaponoffset, vr.hmdposition, vr.weaponoffset);
vr.weaponoffset_timestamp = Sys_Milliseconds();
vec3_t velocity;
VectorSet(velocity, pWeapon->Velocity.linearVelocity.x,
@ -636,7 +724,8 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
// Check quicksave
static bool indicateQuickSave = true;
if (canUseQuickSave) {
int channel = (vr_control_scheme->integer >= 10) ? 2 : 1;
//GB Fix buzzing left controller not right
int channel = (vr_control_scheme->integer >= 10) ? 1 : 2;
if (indicateQuickSave)
{
TBXR_Vibrate(40, channel, 0.5); // vibrate to let user know they can switch

View file

@ -0,0 +1,38 @@
//
// Created by baggyg on 02/04/2023.
//
#ifndef JKXR_VRTBDC_H
#define JKXR_VRTBDC_H
//VELOCITIES
#define TBDC_BRYAR_PISTOL_VEL 3300
#define TBDC_BLASTER_VELOCITY 4200
#define TBDC_BOWCASTER_VELOCITY 3000
#define TBDC_REPEATER_VELOCITY 3000
#define TBDC_REPEATER_ALT_VELOCITY 1600
#define TBDC_DEMP2_VELOCITY 2500
#define TBDC_ROCKET_VELOCITY 2400
//FIRERATES
#define TBDC_BRYAR_PISTOL_FIRERATE 250
#define TBDC_BLASTER_FIRERATE 200
//SABERS
#define TBDC_SABER_BOUNCETIME 200
#define TBDC_SABER_BOUNCEANGLE 90
typedef enum {
// Invalid, or saber not armed
VRLS_NONE = 0,
//Bounces
VRLS_B1_BR = 82,
VRLS_B1__R,
VRLS_B1_TR,
VRLS_B1_T_,
VRLS_B1_TL,
VRLS_B1__L,
VRLS_B1_BL
} vrBounce;
#endif //JKXR_VRTBDC_H

View file

@ -32,6 +32,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "../game/wp_saber.h"
#include "bg_local.h"
#include <JKXR/VrClientInfo.h>
#include <JKXR/VrTBDC.h>
#define LOOK_SWING_SCALE 0.5
@ -4780,12 +4781,14 @@ Ghoul2 Insert End
CG_DoSaber( org_, axis_[0], length, client->ps.saberLengthMax, saberColor, renderfx );
if (CG_getPlayer1stPersonSaber(cent) &&
cent->gent->client->ps.saberEventFlags & (SEF_BLOCKED|SEF_PARRIED) &&
cent->gent->client->ps.saberEventFlags & (SEF_BLOCKED|SEF_PARRIED) &&
cent->gent->client->ps.saberBounceMove != LS_NONE &&
vr->saberBlockDebounce < cg.time)
{
cvar_t *vr_saber_block_debounce_time = gi.cvar("vr_saber_block_debounce_time", "200", CVAR_ARCHIVE); // defined in VrCvars.h
vr->saberBlockDebounce = cg.time + vr_saber_block_debounce_time->integer;
//cvar_t *vr_saber_block_debounce_time = gi.cvar("vr_saber_block_debounce_time", "1000", CVAR_ARCHIVE); // defined in VrCvars.h
//vr->saberBlockDebounce = cg.time + vr_saber_block_debounce_time->integer;
vr->saberBlockDebounce = cg.time + TBDC_SABER_BOUNCETIME;
vr->saberBounceMove = cent->gent->client->ps.saberBounceMove;
cgi_HapticEvent("shotgun_fire", 0, 0, 100, 0, 0);
}

View file

@ -2035,11 +2035,40 @@ int NPC_ShotEntity( gentity_t *ent, vec3_t impactPos )
}
int location = Q_irand(0, 99);
if (location < 65 || cg.renderingThirdPerson ||
int torsoRatio = 65;
int legsRatio = 20;
int headRatio = 15;
switch ( g_spskill->integer )
{
//Easiest difficulty, low chance of hittitng anything else
case 0:
torsoRatio = 90;
legsRatio = 5;
headRatio = 5;
break;
//Medium difficulty, half-half chance of picking up the player
case 1:
torsoRatio = 60;
legsRatio = 25;
headRatio = 15;
break;
//Hardest difficulty, always turn on attacking player
case 2:
default:
torsoRatio = 50;
legsRatio = 35;
headRatio = 15;
break;
}
if (location < torsoRatio || cg.renderingThirdPerson ||
ent->client == NULL || ent->client->ps.clientNum != 0) {
// 65% chance (unless ent is not the player, then always go for chest, which is original behaviour)
CalcEntitySpot(ent, SPOT_CHEST, targ);
} else if (location < 85) {
} else if (location < legsRatio + torsoRatio) {
// 20% chance
CalcEntitySpot(ent, SPOT_LEGS, targ);
} else {

View file

@ -39,6 +39,8 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "wp_saber.h"
#include <float.h>
#include <JKXR/VrClientInfo.h>
#include <JKXR/VrTBDC.h>
extern cvar_t *g_TeamBeefDirectorsCut;
extern qboolean G_DoDismemberment( gentity_t *self, vec3_t point, int mod, int damage, int hitLoc, qboolean force = qfalse );
extern qboolean G_EntIsUnlockedDoor( int entityNum );
@ -7642,6 +7644,7 @@ void PM_WeaponLightsaber(void)
PM_AddEvent( EV_FIRE_WEAPON );
if ( !addTime )
{
addTime = weaponData[pm->ps->weapon].fireTime;
if ( g_timescale != NULL )
{
@ -8403,7 +8406,20 @@ static void PM_Weapon( void )
return;
}
PM_AddEvent( EV_FIRE_WEAPON );
addTime = weaponData[pm->ps->weapon].fireTime;
if(pm->ps->weapon == WP_BRYAR_PISTOL && g_TeamBeefDirectorsCut->value)
{
addTime = TBDC_BRYAR_PISTOL_FIRERATE;
}
else if(pm->ps->weapon == WP_BLASTER && g_TeamBeefDirectorsCut->value)
{
addTime = TBDC_BLASTER_FIRERATE;
}
else
{
addTime = weaponData[pm->ps->weapon].fireTime;
}
switch( pm->ps->weapon)
{

View file

@ -35,6 +35,9 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "wp_saber.h"
#include "Q3_Interface.h"
#include "../../code/qcommon/strippublic.h"
#include <JKXR/VrClientInfo.h>
#include <JKXR/VrTBDC.h>
extern cvar_t *g_TeamBeefDirectorsCut;
extern cvar_t *g_debugDamage;
extern qboolean stop_icarus;
@ -4992,7 +4995,7 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, vec3_
knockback = 0;
}
// figure momentum add, even if the damage won't be taken
if ( knockback && !(dflags&DAMAGE_DEATH_KNOCKBACK) ) //&& targ->client
if ( knockback && (!(dflags&DAMAGE_DEATH_KNOCKBACK) || g_TeamBeefDirectorsCut->value)) //&& targ->client
{
G_ApplyKnockback( targ, newDir, knockback );
G_CheckKnockdown( targ, attacker, newDir, dflags, mod );
@ -5349,6 +5352,10 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, vec3_
{//special case because this is shotgun-ish damage, we need to multiply the knockback
knockback *= 12;//*6 for 6 flechette shots
}
else if(g_TeamBeefDirectorsCut->value)
{
knockback *= 2;
}
G_ApplyKnockback( targ, newDir, knockback );
}

View file

@ -29,7 +29,8 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "g_functions.h"
#include "bg_local.h"
#include <JKXR/VrClientInfo.h>
#include <JKXR/VrTBDC.h>
extern cvar_t *g_TeamBeefDirectorsCut;
//---------------
// Blaster
//---------------
@ -54,6 +55,11 @@ static void WP_FireBlasterMissile( gentity_t *ent, vec3_t start, vec3_t dir, qbo
}
}
if(ent->client && ent->client->ps.clientNum == 0 && g_TeamBeefDirectorsCut->value)
{
velocity = TBDC_BLASTER_VELOCITY;
}
WP_TraceSetStart( ent, start, vec3_origin, vec3_origin );//make sure our start point isn't on the other side of a wall
gentity_t *missile = CreateMissile( start, dir, velocity, 10000, ent, altFire );
@ -121,9 +127,15 @@ void WP_FireBlaster( gentity_t *ent, qboolean alt_fire )
if ( alt_fire )
{
// add some slop to the alt-fire direction
angs[PITCH] += Q_flrand(-1.0f, 1.0f) * BLASTER_ALT_SPREAD;
angs[YAW] += Q_flrand(-1.0f, 1.0f) * BLASTER_ALT_SPREAD;
if(vr->weapon_stabilised) {
// add some slop to the alt-fire direction
angs[PITCH] += Q_flrand(-0.5f, 0.5f) * BLASTER_ALT_SPREAD;
angs[YAW] += Q_flrand(-0.5f, 0.5f) * BLASTER_ALT_SPREAD;
} else {
// add some slop to the alt-fire direction
angs[PITCH] += Q_flrand(-1.0f, 1.0f) * BLASTER_ALT_SPREAD;
angs[YAW] += Q_flrand(-1.0f, 1.0f) * BLASTER_ALT_SPREAD;
}
}
else
{
@ -138,10 +150,18 @@ void WP_FireBlaster( gentity_t *ent, qboolean alt_fire )
}
else
{
if (vr->cgzoommode != 4) { // much more accurate if using the scope
// add some slop to the main-fire direction
angs[PITCH] += Q_flrand(-1.0f, 1.0f) * BLASTER_MAIN_SPREAD;
angs[YAW] += Q_flrand(-1.0f, 1.0f) * BLASTER_MAIN_SPREAD;
if(vr->cgzoommode != 4) { // much more accurate if using the scope
//GB - If double handing reduce by two thirds
if(vr->weapon_stabilised)
{
// 1/3 as much variety if stabilised
angs[PITCH] += Q_flrand(-0.33f, 0.33f) * BLASTER_MAIN_SPREAD;
angs[YAW] += Q_flrand(-0.33f, 0.33f) * BLASTER_MAIN_SPREAD;
} else {
// add some slop to the main-fire direction
angs[PITCH] += Q_flrand(-1.0f, 1.0f) * BLASTER_MAIN_SPREAD;
angs[YAW] += Q_flrand(-1.0f, 1.0f) * BLASTER_MAIN_SPREAD;
}
}
}
}

View file

@ -29,6 +29,8 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "bg_local.h"
#include <JKXR/VrClientInfo.h>
#include <JKXR/VrTBDC.h>
extern cvar_t *g_TeamBeefDirectorsCut;
//-------------------
// Wookiee Bowcaster
@ -98,7 +100,14 @@ static void WP_BowcasterMainFire( gentity_t *ent )
for ( int i = 0; i < count; i++ )
{
// create a range of different velocities
vel = BOWCASTER_VELOCITY * ( Q_flrand(-1.0f, 1.0f) * BOWCASTER_VEL_RANGE + 1.0f );
if(ent->client && ent->client->ps.clientNum == 0 && g_TeamBeefDirectorsCut->value)
{
vel = TBDC_BOWCASTER_VELOCITY * ( Q_flrand(-1.0f, 1.0f) * BOWCASTER_VEL_RANGE + 1.0f );;
}
else
{
vel = BOWCASTER_VELOCITY * ( Q_flrand(-1.0f, 1.0f) * BOWCASTER_VEL_RANGE + 1.0f );
}
vectoangles( forward, angs );
@ -160,8 +169,12 @@ static void WP_BowcasterAltFire( gentity_t *ent )
}
WP_TraceSetStart( ent, start, vec3_origin, vec3_origin );//make sure our start point isn't on the other side of a wall
gentity_t *missile = CreateMissile( start, forward, BOWCASTER_VELOCITY, 10000, ent, qtrue );
float velocity = BOWCASTER_VELOCITY;
if(ent->client && ent->client->ps.clientNum == 0 && g_TeamBeefDirectorsCut->value)
{
velocity = TBDC_BOWCASTER_VELOCITY;
}
gentity_t *missile = CreateMissile( start, forward, velocity, 10000, ent, qtrue );
missile->classname = "bowcaster_alt_proj";
missile->s.weapon = WP_BOWCASTER;

View file

@ -28,6 +28,9 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "w_local.h"
#include "g_functions.h"
#include "bg_local.h"
#include <JKXR/VrClientInfo.h>
#include <JKXR/VrTBDC.h>
extern cvar_t *g_TeamBeefDirectorsCut;
//---------------
// Bryar Pistol
@ -69,8 +72,12 @@ void WP_FireBryarPistol( gentity_t *ent, qboolean alt_fire )
AngleVectors( angs, forward, NULL, NULL );
}
gentity_t *missile = CreateMissile( start, forward, BRYAR_PISTOL_VEL, 10000, ent, alt_fire );
float velocity = BRYAR_PISTOL_VEL;
if(ent->client && ent->client->ps.clientNum == 0 && g_TeamBeefDirectorsCut->value)
{
velocity = TBDC_BRYAR_PISTOL_VEL;
}
gentity_t *missile = CreateMissile( start, forward, velocity, 10000, ent, alt_fire );
missile->classname = "bryar_proj";
missile->s.weapon = WP_BRYAR_PISTOL;

View file

@ -28,6 +28,9 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "w_local.h"
#include "g_functions.h"
#include "bg_local.h"
#include <JKXR/VrClientInfo.h>
#include <JKXR/VrTBDC.h>
extern cvar_t *g_TeamBeefDirectorsCut;
//-------------------
// DEMP2
@ -52,7 +55,12 @@ static void WP_DEMP2_MainFire( gentity_t *ent )
WP_TraceSetStart( ent, start, vec3_origin, vec3_origin );//make sure our start point isn't on the other side of a wall
gentity_t *missile = CreateMissile( start, forward, DEMP2_VELOCITY, 10000, ent );
float velocity = DEMP2_VELOCITY;
if(ent->client && ent->client->ps.clientNum == 0 && g_TeamBeefDirectorsCut->value)
{
velocity = TBDC_DEMP2_VELOCITY;
}
gentity_t *missile = CreateMissile( start, forward, velocity, 10000, ent );
missile->classname = "demp2_proj";
missile->s.weapon = WP_DEMP2;

View file

@ -28,6 +28,8 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "w_local.h"
#include "g_functions.h"
#include "bg_local.h"
#include <JKXR/VrClientInfo.h>
extern cvar_t *g_TeamBeefDirectorsCut;
//-----------------------
// Golan Arms Flechette

View file

@ -28,6 +28,9 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "w_local.h"
#include "g_functions.h"
#include "bg_local.h"
#include <JKXR/VrClientInfo.h>
#include <JKXR/VrTBDC.h>
extern cvar_t *g_TeamBeefDirectorsCut;
//-------------------
// Heavy Repeater
@ -41,7 +44,12 @@ static void WP_RepeaterMainFire( gentity_t *ent, vec3_t dir, vec3_t start )
WP_TraceSetStart( ent, start, vec3_origin, vec3_origin );//make sure our start point isn't on the other side of a wall
gentity_t *missile = CreateMissile( start, dir, REPEATER_VELOCITY, 10000, ent );
float velocity = REPEATER_VELOCITY;
if(ent->client && ent->client->ps.clientNum == 0 && g_TeamBeefDirectorsCut->value)
{
velocity = TBDC_REPEATER_VELOCITY;
}
gentity_t *missile = CreateMissile( start, dir, velocity, 10000, ent );
missile->classname = "repeater_proj";
missile->s.weapon = WP_REPEATER;
@ -105,7 +113,12 @@ static void WP_RepeaterAltFire( gentity_t *ent )
}
else
{
missile = CreateMissile( start, forward, REPEATER_ALT_VELOCITY, 10000, ent, qtrue );
float velocity = REPEATER_ALT_VELOCITY;
if(ent->client && ent->client->ps.clientNum == 0 && g_TeamBeefDirectorsCut->value)
{
velocity = TBDC_REPEATER_ALT_VELOCITY;
}
missile = CreateMissile( start, forward, velocity, 10000, ent, qtrue );
}
missile->classname = "repeater_alt_proj";

View file

@ -28,7 +28,9 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "w_local.h"
#include "g_functions.h"
#include "bg_local.h"
#include <JKXR/VrClientInfo.h>
#include <JKXR/VrTBDC.h>
extern cvar_t *g_TeamBeefDirectorsCut;
//-----------------------
// Rocket Launcher
//-----------------------
@ -147,6 +149,11 @@ void WP_FireRocket( gentity_t *ent, qboolean alt_fire )
int damage = weaponData[WP_ROCKET_LAUNCHER].damage;
float vel = ROCKET_VELOCITY;
if(ent->client && ent->client->ps.clientNum == 0 && g_TeamBeefDirectorsCut->value)
{
vel = TBDC_ROCKET_VELOCITY;
}
if ( alt_fire )
{
vel *= 0.5f;
@ -165,6 +172,7 @@ void WP_FireRocket( gentity_t *ent, qboolean alt_fire )
WP_TraceSetStart( ent, start, vec3_origin, vec3_origin );//make sure our start point isn't on the other side of a wall
gentity_t *missile = CreateMissile( start, forward, vel, 10000, ent, alt_fire );
missile->classname = "rocket_proj";

View file

@ -156,7 +156,7 @@
name none
type ITEM_TYPE_TEXT
rect 0 240 640 40
text "MuadDib"
text "MuadDib, BaggyG"
font 2
forecolor 1 1 1 1
textscale 1.0

File diff suppressed because it is too large Load diff

View file

@ -1,610 +0,0 @@
// EXTERNAL WEAPON & AMMO DATA
//
// NOTE!!!!!!!!! Weapontype must start the block of weapon data.
// NOTE!!!!!!!!! Ammo must start the block of ammo data.
//
// Weapontype - weapon data is associated with which weapon (must be first)
// WP_NONE
// WP_PHASER
// WP_COMPRESSION_RIFLE
// WP_IMOD
// WP_SCAVENGER_RIFLE
// WP_STASIS
// WP_GRENADE_LAUNCHER,
// WP_TETRION_DISRUPTOR,
// WP_DREADNOUGHT,
// WP_QUANTUM_BURST,
// WP_BORG_WEAPON
// WP_BORG_TASER
// WP_BORG_ASSIMILATOR
// WP_BORG_DRILL
// WP_TRICORDER
//
// Weaponclass - weapon name
// Weaponmodel - weapon model used in game
// weaponicon - interface image
// Ammotype - type of power weapon needs to fire
// 0 - No power
// 1 - Star Fleet power
// 2 - Alien Crystal power
// 3 - Phaser power
// Ammolowcount - amount when "Low ammo" warning appears on screen
// Flashcolor - color generate by weapon flash (R,G,B)
// Firingsound - sound file used when firing
// altfiringsound - sound file used when alt-firing
// flashsound - sound file used by flash
// altflashsound - sound file used by an alt-fire flash
// stopsound - sound file used when a firing sound stops
// Firetime - amount of time between firings
// altfireTime - for alt fire
// Range - range of weapon
// energyPerShot - amount of energy used per shot
// altenergypershot- for alt fire
// barrelcount - number of barrels the model has (weaponname_b?.md3)
// missileModel - missile .md3
// altmissileModel - alternate missile .md3
// missileSound - played while flying
// altmissileSound - alternate missile launch sound
// missileLight - intensity of lightsource for missile - if 0.0 then none (float)
// altmissileLight - alternate missile light
// missileLightColor - color in three float style R, G, B (0.0 to 1.0) - NOTE - if you have a light, you MUST HAVE THESE
// altmissileLightColor - alternate color in three float style R, G, B (0.0 to 1.0)
// missileHitSound - played on impact
// altmissileHitSound - for alt fire
// missileFuncName - missile fly function
// altmissileFuncName - for alt fire
//
// FUNCTION NAMES
// borgfunc
// scavengerfunc
// altscavengerfunc
// stasisfunc
// grenadefunc
// altgrenadefunc
// tetrionfunc
// dreadnoughtfunc
// quantumfunc
// quantumaltfunc
// botrocketfunc
// forgeprojfunc
// forgeprojfunc2
// forgepsychfunc
// parasiteacidfunc
// stasisattackfunc
// loaderlaserfunc
// botprojfunc
//
// For AMMO Types
// ammoicon - STRING
// ammomax - INT
// WP_NULL
{
WEAPONTYPE WP_NONE
}
// WP_STUN_BATON
{
weapontype WP_STUN_BATON
weaponclass weapon_stun_baton
weaponmodel models/weapons2/stun_baton/baton.md3
weaponIcon gfx/hud/w_icon_stunbaton
firingsound sound/weapons/baton/idle.wav
barrelcount 3
ammotype 1
ammolowcount 5
energypershot 0
firetime 400
range 8192
altenergypershot 0
altfiretime 400
altrange 8192
}
// WP_SABER
{
weapontype WP_SABER
weaponclass weapon_saber
weaponmodel models/weapons2/saber/saber_w.md3
weaponIcon gfx/hud/w_icon_lightsaber
firingsound sound/weapons/saber/saberhum1.wav
ammotype 1
ammolowcount 5
energypershot 1
firetime 100
range 8192
altenergypershot 3
altfiretime 100
altrange 8192
missilemodel models/weapons2/saber/saber_w.md3
}
// WP_BRYAR_PISTOL
{
weapontype WP_BRYAR_PISTOL
weaponclass weapon_bryar_pistol
weaponmodel models/weapons2/briar_pistol/briar_pistol.md3
weaponIcon gfx/hud/w_icon_briar
missileFuncName bryar_func
altmissileFuncName bryar_alt_func
ammotype 2
ammolowcount 15
energypershot 1
firetime 300 //400
range 8192
altenergypershot 1
altfiretime 400
altrange 8192
muzzleEffect bryar/muzzle_flash
altmuzzleEffect bryar/altmuzzle_flash
altchargesound sound/weapons/bryar/altcharge.wav
selectSound sound/weapons/bryar/select.wav
}
// WP_BLASTER
{
weapontype WP_BLASTER
weaponclass weapon_blaster
weaponmodel models/weapons2/blaster_r/blaster.md3
weaponIcon gfx/hud/w_icon_blaster
ammotype 2
ammolowcount 15
energypershot 1
firetime 300 //350
range 8192
altenergypershot 2
altfiretime 150
altrange 8192
missileFuncName blaster_func
altmissileFuncName blaster_alt_func
muzzleEffect blaster/muzzle_flash
altmuzzleEffect blaster/altmuzzle_flash
selectSound sound/weapons/blaster/select.wav
}
// WP_DISRUPTOR
{
weapontype WP_DISRUPTOR
weaponclass weapon_disruptor
weaponmodel models/weapons2/disruptor/disruptor.md3
weaponIcon gfx/hud/w_icon_disruptor
ammotype 3
ammolowcount 15
energypershot 3
barrelcount 1
firetime 600
range 8192
altenergypershot 3
altfiretime 1300
altrange 8192
muzzleEffect disruptor/muzzle_flash
altmuzzleEffect disruptor/altmuzzle_flash
selectSound sound/weapons/disruptor/select.wav
altchargesound sound/weapons/disruptor/altCharge.wav
}
// WP_BOWCASTER
{
weapontype WP_BOWCASTER
weaponclass weapon_bowcaster
weaponmodel models/weapons2/bowcaster/bowcaster.md3
weaponIcon gfx/hud/w_icon_bowcaster
altchargesound sound/weapons/bowcaster/altcharge.wav
ammotype 3
ammolowcount 15
energypershot 5
firetime 750
range 8192
altenergypershot 5
altfiretime 400
altrange 8192
missileFuncName bowcaster_func
altmissileFuncName bowcaster_func
muzzleEffect bowcaster/muzzle_flash
altmuzzleEffect bowcaster/altmuzzle_flash
selectSound sound/weapons/bowcaster/select.wav
chargesound sound/weapons/bowcaster/altcharge.wav
}
// WP_REPEATER
{
weapontype WP_REPEATER
weaponclass weapon_repeater
weaponmodel models/weapons2/heavy_repeater/heavy_repeater.md3
weaponIcon gfx/hud/w_icon_repeater
ammotype 4
ammolowcount 25
energypershot 1
firetime 50
range 8192
altenergypershot 8
altfiretime 800
altrange 8192
barrelcount 1
missileFuncName repeater_func
altmissileFuncName repeater_alt_func
muzzleEffect repeater/muzzle_flash
altmuzzleEffect repeater/altmuzzle_flash
selectSound sound/weapons/repeater/select.wav
}
// WP_DEMP2
{
weapontype WP_DEMP2
weaponclass weapon_demp2
weaponmodel models/weapons2/demp2/demp2.md3
weaponIcon gfx/hud/w_icon_demp2
ammotype 3
ammolowcount 15
energypershot 8
firetime 450
range 8192
altenergypershot 10
altfiretime 1200
altrange 8192
missileFuncName demp2_func
muzzleEffect demp2/muzzle_flash
altmissileFuncName demp2_alt_func
altmuzzleEffect demp2/altmuzzle_flash
selectSound sound/weapons/demp2/select.wav
altchargesound sound/weapons/demp2/altCharge.wav
}
// WP_FLECHETTE
{
weapontype WP_FLECHETTE
weaponclass weapon_flechette
weaponmodel models/weapons2/golan_arms/golan_arms.md3
barrelcount 1
ammotype 4
ammolowcount 15
firetime 550
energypershot 8
range 8192
weaponIcon gfx/hud/w_icon_flechette
altenergypershot 8
altfiretime 400
altrange 8192
missileFuncName flechette_func
missileModel models/weapons2/golan_arms/projectileMain.md3
altmissileFuncName flechette_alt_func
muzzleEffect flechette/muzzle_flash
altmuzzleEffect flechette/altmuzzle_flash
altmissileModel models/weapons2/golan_arms/projectile.md3
selectSound sound/weapons/flechette/select.wav
}
// WP_ROCKET_LAUNCHER
{
weapontype WP_ROCKET_LAUNCHER
weaponclass weapon_rocket_launcher
weaponmodel models/weapons2/merr_sonn/merr_sonn.md3
ammotype 5
ammolowcount 1
firetime 600
energypershot 1
range 8192
weaponIcon gfx/hud/w_icon_merrsonn
barrelcount 1
altenergypershot 1
altfiretime 1000
altrange 8192
missileLight 125
missileLightColor 1.0 1.0 0.5
altmissileLight 125
altmissileLightColor 1.0 1.0 0.5
missileFuncName rocket_func
altmissileFuncName rocket_alt_func
muzzleEffect rocket/muzzle_flash2
altmuzzleEffect rocket/altmuzzle_flash
missileModel models/weapons2/merr_sonn/projectile.md3
altmissileModel models/weapons2/merr_sonn/projectile.md3
missilesound sound/weapons/rocket/missleloop.wav
altmissilesound sound/weapons/rocket/missleloop.wav
selectSound sound/weapons/rocket/select.wav
}
// WP_THERMAL
{
weapontype WP_THERMAL
weaponclass weapon_thermal
weaponmodel models/weapons2/thermal/thermal.md3
weaponIcon gfx/hud/w_icon_thermal
ammotype 7
ammolowcount 1
energypershot 1
firetime 800
range 8192
altenergypershot 1
altfiretime 400
altrange 8192
missileModel models/weapons2/thermal/thermal_proj.md3
altmissileModel models/weapons2/thermal/thermal_proj.md3
barrelcount 0
chargesound sound/weapons/thermal/charge.wav
altchargesound sound/weapons/thermal/charge.wav
selectSound sound/weapons/thermal/select.wav
muzzleEffect thermal/muzzle_flash
}
// WP_TRIP_MINE
{
weapontype WP_TRIP_MINE
weaponclass weapon_trip_mine
weaponmodel models/weapons2/laser_trap/laser_trap.md3
weaponIcon gfx/hud/w_icon_tripmine
ammotype 8
ammolowcount 1
energypershot 1
firetime 800
range 8192
altenergypershot 1
altfiretime 400
altrange 8192
missileModel models/weapons2/laser_trap/laser_trap_w.glm
altmissileModel models/weapons2/laser_trap/laser_trap_w.glm
selectSound sound/weapons/detpack/select.wav
muzzleEffect tripmine/muzzle_flash
}
// WP_DET_PACK
{
weapontype WP_DET_PACK
weaponclass weapon_det_pack
weaponmodel models/weapons2/detpack/det_pack.md3
weaponIcon gfx/hud/w_icon_detpack
ammotype 9
ammolowcount 1
energypershot 1
firetime 800
range 8192
altenergypershot 0
altfiretime 400
altrange 8192
missileModel models/weapons2/detpack/det_pack_proj.glm
selectSound sound/weapons/detpack/select.wav
muzzleEffect detpack/muzzle_flash
}
// WP_EMPLACED_GUN
{
weapontype WP_EMPLACED_GUN
weaponclass weapon_emplaced_gun
weaponmodel models/weapons2/noweap/noweap.md3
altenergypershot 1
altrange 8192
missileFuncName emplaced_func
altmissileFuncName emplaced_func
ammotype 6
ammolowcount 15
energypershot 1
firetime 150
altfiretime 150
range 8192
muzzleEffect emplaced/muzzle_flash
}
// WP_BOT_LASER
{
weapontype WP_BOT_LASER
weaponclass weapon_bryar_pistol
weaponmodel models/weapons2/noweap/noweap.md3
//flashsound sound/weapons/probe/fire.wav
//altflashsound sound/weapons/probe/alt_fire.wav
altenergypershot 0
altrange 8192
missileFuncName bryar_func
ammotype 1
ammolowcount 15
energypershot 2
firetime 1600
range 8192
}
// WP_MELEE
{
weapontype WP_MELEE
weaponclass weapon_melee
weaponmodel models/weapons2/noweap/noweap.md3
ammotype 3
ammolowcount 5
energypershot 0
firetime 1000
range 1024
}
// WP_ATST_MAIN
{
weapontype WP_ATST_MAIN
weaponclass weapon_atst_main
weaponmodel models/weapons2/noweap/noweap.md3
weaponIcon gfx/hud/w_icon_atst
//flashsound sound/weapons/atst/ATSTfire1.wav
//altflashsound sound/weapons/atst/ATSTfire2.wav
altenergypershot 1
altrange 8192
missileFuncName atstmain_func
altmissileFuncName atstmain_func
ammotype 6
ammolowcount 15
energypershot 1
firetime 200
altfiretime 150
range 8192
muzzleEffect emplaced/muzzle_flash
}
// WP_ATST_SIDE
{
weapontype WP_ATST_SIDE
weaponclass weapon_atst_side
weaponmodel models/weapons2/noweap/noweap.md3
weaponIcon gfx/hud/w_icon_atstside
//flashsound sound/weapons/atst/ATSTfire3.wav
//altflashsound sound/weapons/atst/ATSTfire4.wav
altenergypershot 1
altrange 8192
altmissileModel models/weapons2/merr_sonn/projectile.md3
missileFuncName atst_side_main_func
altmissileFuncName atst_side_alt_func
muzzleEffect emplaced/muzzle_flash
altmuzzleEffect emplaced/muzzle_flash
ammotype 6
ammolowcount 15
energypershot 1
firetime 400
altfiretime 1000
range 8192
}
// WP_TIE_FIGHTER
{
weapontype WP_TIE_FIGHTER
weaponclass weapon_tie_fighter
weaponmodel models/weapons2/noweap/noweap.md3
weaponIcon icons/w_icon_tie
//flashsound sound/weapons/tie_fighter/tie_fire.wav
//altflashsound sound/weapons/tie_fighter/tie_fire2.wav
altenergypershot 1
altrange 8192
missileFuncName emplaced_func
altmissileFuncName emplaced_func
ammotype 6
ammolowcount 15
energypershot 1
firetime 400
altfiretime 400
range 8192
muzzleEffect emplaced/muzzle_flash
}
// WP_RAPID_FIRE_CONC
{
weapontype WP_RAPID_FIRE_CONC
weaponclass weapon_radid_concussion
weaponmodel models/weapons2/noweap/noweap.md3
weaponIcon icons/w_icon_tie
//flashsound sound/weapons/rapid_conc/fire.wav
//altflashsound sound/weapons/rapid_conc/alt_fire.wav
altenergypershot 1
altrange 8192
missileFuncName emplaced_func
altmissileFuncName repeater_alt_func
ammotype 6
ammolowcount 15
energypershot 1
firetime 400
altfiretime 1000
range 8192
muzzleEffect emplaced/muzzle_flash
}
// WP_BLASTER_PISTOL
{
weapontype WP_BLASTER_PISTOL
weaponclass weapon_blaster_pistol
weaponmodel models/weapons2/imp_pistol/pistol.md3
//flashsound sound/weapons/npc_blaster/fire.wav
//altflashsound sound/weapons/npc_blaster/alt_fire.wav
missileFuncName bryar_func
altmissileFuncName bryar_alt_func
ammotype 2
ammolowcount 15
energypershot 2
firetime 400
range 8192
altenergypershot 2
altfiretime 400
altrange 8192
muzzleEffect bryar/muzzle_flash
}
// WP_TURRET
{
weapontype WP_TURRET
weaponclass weapon_turret
weaponmodel models/weapons2/noweap/noweap.md3
weaponIcon icons/w_icon_turret
altenergypershot 1
altrange 8192
missileFuncName turret_func
ammotype 6
ammolowcount 15
energypershot 1
firetime 400
altfiretime 400
range 8192
muzzleEffect turret/muzzle_flash
}
// AMMO_NONE
{
AMMOTYPE AMMO_NONE
}
// AMMO_FORCE
{
AMMO AMMO_FORCE
AMMOMAX 100
}
// AMMO_BLASTER
{
AMMO AMMO_BLASTER
AMMOMAX 300
}
// AMMO_POWERCELL
{
AMMO AMMO_POWERCELL
AMMOMAX 300
}
// AMMO_METAL_BOLTS
{
AMMO AMMO_METAL_BOLTS
AMMOMAX 400
}
// AMMO_ROCKETS
{
AMMO AMMO_ROCKETS
AMMOMAX 10
}
// AMMO_EMPLACED
{
AMMO AMMO_EMPLACED
AMMOMAX 999
}
// AMMO_THERMAL
{
AMMO AMMO_THERMAL
AMMOMAX 10
}
// AMMO_TRIPMINE
{
AMMO AMMO_TRIPMINE
AMMOMAX 5
}
// AMMO_DETPACK
{
AMMO AMMO_DETPACK
AMMOMAX 5
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 275 KiB