mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2024-11-26 14:11:22 +00:00
Replacement models and items
This commit is contained in:
parent
3353d82c74
commit
22020cba04
7 changed files with 315 additions and 214 deletions
|
@ -1,5 +1,7 @@
|
|||
# List fixes here for the 2.3 release
|
||||
|
||||
* Added replacement model functionality for weapons and items
|
||||
* Added replacement skin functionality for weapons and items
|
||||
* Fixed the HC's power.
|
||||
* Items from the weapon/item menus are now disabled if they're banned from the server
|
||||
* Added Itembanning
|
||||
|
|
|
@ -193,7 +193,7 @@ makedirs:
|
|||
@if [ ! -d $(BQ)/$(UIDIRNAME) ];then mkdir $(BQ)/$(UIDIRNAME);fi
|
||||
|
||||
ctags:
|
||||
ctags -f tags -R *
|
||||
# ctags -f tags -R *
|
||||
|
||||
# --object lists for each build type--
|
||||
GQVMOBJ = $(GOBJ:%.o=$(BQ)/%.asm)
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.35 2003/02/01 02:15:31 jbravo
|
||||
// Replacement models and items
|
||||
//
|
||||
// Revision 1.34 2003/01/08 04:46:25 jbravo
|
||||
// Wrote a new hackish model replacement system
|
||||
//
|
||||
|
@ -339,6 +342,7 @@ static void CG_Item(centity_t * cent)
|
|||
int msec;
|
||||
float frac, scale;
|
||||
weaponInfo_t *wi;
|
||||
itemInfo_t *itemInfo;
|
||||
|
||||
es = ¢->currentState;
|
||||
if (es->modelindex >= bg_numItems) {
|
||||
|
@ -452,6 +456,18 @@ static void CG_Item(centity_t * cent)
|
|||
VectorCopy(myvec, ent.axis[2]);
|
||||
}
|
||||
}
|
||||
// JBravo: world skins
|
||||
if (item->giType == IT_WEAPON) {
|
||||
wi = &cg_weapons[item->giTag];
|
||||
if (wi->customSkin)
|
||||
ent.customSkin = wi->customSkin;
|
||||
}
|
||||
if (item->giType == IT_HOLDABLE) {
|
||||
itemInfo = &cg_items[item - bg_itemlist];
|
||||
if (itemInfo->customSkin)
|
||||
ent.customSkin = itemInfo->customSkin;
|
||||
}
|
||||
|
||||
//Elder: ammo offset?
|
||||
if (item->giType == IT_AMMO)
|
||||
cent->lerpOrigin[2] -= 12;
|
||||
|
@ -550,8 +566,6 @@ static void CG_Missile(centity_t * cent)
|
|||
entityState_t *s1;
|
||||
const weaponInfo_t *weapon;
|
||||
|
||||
// int col;
|
||||
|
||||
s1 = ¢->currentState;
|
||||
if (s1->weapon > WP_NUM_WEAPONS) {
|
||||
s1->weapon = 0;
|
||||
|
@ -565,23 +579,6 @@ static void CG_Missile(centity_t * cent)
|
|||
if (weapon->missileTrailFunc) {
|
||||
weapon->missileTrailFunc(cent, weapon);
|
||||
}
|
||||
/*
|
||||
if ( cent->currentState.modelindex == TEAM_RED ) {
|
||||
col = 1;
|
||||
}
|
||||
else if ( cent->currentState.modelindex == TEAM_BLUE ) {
|
||||
col = 2;
|
||||
}
|
||||
else {
|
||||
col = 0;
|
||||
}
|
||||
|
||||
// add dynamic light
|
||||
if ( weapon->missileDlight ) {
|
||||
trap_R_AddLightToScene(cent->lerpOrigin, weapon->missileDlight,
|
||||
weapon->missileDlightColor[col][0], weapon->missileDlightColor[col][1], weapon->missileDlightColor[col][2] );
|
||||
}
|
||||
*/
|
||||
// add dynamic light
|
||||
if (weapon->missileDlight) {
|
||||
trap_R_AddLightToScene(cent->lerpOrigin, weapon->missileDlight,
|
||||
|
@ -600,16 +597,6 @@ static void CG_Missile(centity_t * cent)
|
|||
memset(&ent, 0, sizeof(ent));
|
||||
VectorCopy(cent->lerpOrigin, ent.origin);
|
||||
VectorCopy(cent->lerpOrigin, ent.oldorigin);
|
||||
//Blaze: No Plasma Gun
|
||||
/* if ( cent->currentState.weapon == WP_PLASMAGUN ) {
|
||||
ent.reType = RT_SPRITE;
|
||||
ent.radius = 16;
|
||||
ent.rotation = 0;
|
||||
ent.customShader = cgs.media.plasmaBallShader;
|
||||
trap_R_AddRefEntityToScene( &ent );
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
// flicker between two skins
|
||||
ent.skinNum = cg.clientFrame & 1;
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.133 2003/02/01 02:15:31 jbravo
|
||||
// Replacement models and items
|
||||
//
|
||||
// Revision 1.132 2002/12/05 23:11:29 blaze
|
||||
// Added item replacement code
|
||||
//
|
||||
|
@ -743,6 +746,7 @@ typedef struct weaponInfo_s {
|
|||
qhandle_t weaponModel; // Third-person/world model
|
||||
qhandle_t barrelModel;
|
||||
qhandle_t flashModel;
|
||||
qhandle_t customSkin; // JBravo: for custom skins
|
||||
|
||||
qhandle_t firstModel; //Elder: view model
|
||||
qhandle_t animHandModel; //Blaze: for animations
|
||||
|
@ -789,6 +793,8 @@ typedef struct {
|
|||
qboolean registered;
|
||||
qhandle_t models[MAX_ITEM_MODELS];
|
||||
qhandle_t icon;
|
||||
// JBravo: for customskins
|
||||
qhandle_t customSkin;
|
||||
} itemInfo_t;
|
||||
|
||||
typedef struct {
|
||||
|
@ -1697,6 +1703,16 @@ extern vmCvar_t cg_RQ3_handcannon;
|
|||
extern vmCvar_t cg_RQ3_m3;
|
||||
extern vmCvar_t cg_RQ3_akimbo;
|
||||
extern vmCvar_t cg_RQ3_grenade;
|
||||
// JBravo: replacement skins
|
||||
extern vmCvar_t cg_RQ3_knife_skin;
|
||||
extern vmCvar_t cg_RQ3_mk23_skin;
|
||||
extern vmCvar_t cg_RQ3_m4_skin;
|
||||
extern vmCvar_t cg_RQ3_ssg3000_skin;
|
||||
extern vmCvar_t cg_RQ3_mp5_skin;
|
||||
extern vmCvar_t cg_RQ3_handcannon_skin;
|
||||
extern vmCvar_t cg_RQ3_m3_skin;
|
||||
extern vmCvar_t cg_RQ3_akimbo_skin;
|
||||
extern vmCvar_t cg_RQ3_grenade_skin;
|
||||
//Blaze: replacement items
|
||||
extern vmCvar_t cg_RQ3_bandolier;
|
||||
extern vmCvar_t cg_RQ3_kevlar;
|
||||
|
@ -1704,6 +1720,13 @@ extern vmCvar_t cg_RQ3_silencer;
|
|||
extern vmCvar_t cg_RQ3_laser;
|
||||
extern vmCvar_t cg_RQ3_slippers;
|
||||
extern vmCvar_t cg_RQ3_helmet;
|
||||
// JBravo: replacement skins
|
||||
extern vmCvar_t cg_RQ3_bandolier_skin;
|
||||
extern vmCvar_t cg_RQ3_kevlar_skin;
|
||||
extern vmCvar_t cg_RQ3_silencer_skin;
|
||||
extern vmCvar_t cg_RQ3_laser_skin;
|
||||
extern vmCvar_t cg_RQ3_slippers_skin;
|
||||
extern vmCvar_t cg_RQ3_helmet_skin;
|
||||
|
||||
|
||||
//Blaze: Reaction weapon positions
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.118 2003/02/01 02:15:31 jbravo
|
||||
// Replacement models and items
|
||||
//
|
||||
// Revision 1.117 2003/01/08 04:46:26 jbravo
|
||||
// Wrote a new hackish model replacement system
|
||||
//
|
||||
|
@ -414,7 +417,16 @@ vmCvar_t cg_RQ3_handcannon;
|
|||
vmCvar_t cg_RQ3_m3;
|
||||
vmCvar_t cg_RQ3_akimbo;
|
||||
vmCvar_t cg_RQ3_grenade;
|
||||
|
||||
// JBravo: replacement skin cvars
|
||||
vmCvar_t cg_RQ3_knife_skin;
|
||||
vmCvar_t cg_RQ3_mk23_skin;
|
||||
vmCvar_t cg_RQ3_m4_skin;
|
||||
vmCvar_t cg_RQ3_ssg3000_skin;
|
||||
vmCvar_t cg_RQ3_mp5_skin;
|
||||
vmCvar_t cg_RQ3_handcannon_skin;
|
||||
vmCvar_t cg_RQ3_m3_skin;
|
||||
vmCvar_t cg_RQ3_akimbo_skin;
|
||||
vmCvar_t cg_RQ3_grenade_skin;
|
||||
//Blaze: replacement items
|
||||
vmCvar_t cg_RQ3_bandolier;
|
||||
vmCvar_t cg_RQ3_kevlar;
|
||||
|
@ -422,6 +434,13 @@ vmCvar_t cg_RQ3_silencer;
|
|||
vmCvar_t cg_RQ3_laser;
|
||||
vmCvar_t cg_RQ3_slippers;
|
||||
vmCvar_t cg_RQ3_helmet;
|
||||
// JBravo: replacement skin cvars
|
||||
vmCvar_t cg_RQ3_bandolier_skin;
|
||||
vmCvar_t cg_RQ3_kevlar_skin;
|
||||
vmCvar_t cg_RQ3_silencer_skin;
|
||||
vmCvar_t cg_RQ3_laser_skin;
|
||||
vmCvar_t cg_RQ3_slippers_skin;
|
||||
vmCvar_t cg_RQ3_helmet_skin;
|
||||
|
||||
|
||||
//Elder: muzzle flash toggle
|
||||
|
@ -660,6 +679,16 @@ static cvarTable_t cvarTable[] = { // bk001129
|
|||
{&cg_RQ3_m3, "cg_RQ3_m3", "m3", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_akimbo, "cg_RQ3_akimbo", "akimbo", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_grenade, "cg_RQ3_grenade", "grenade", CVAR_ARCHIVE},
|
||||
// JBravo: replacement skins
|
||||
{&cg_RQ3_knife_skin, "cg_RQ3_knife_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_mk23_skin, "cg_RQ3_mk23_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_m4_skin, "cg_RQ3_m4_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_ssg3000_skin, "cg_RQ3_ssg3000_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_mp5_skin, "cg_RQ3_mp5_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_handcannon_skin, "cg_RQ3_handcannon_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_m3_skin, "cg_RQ3_m3_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_akimbo_skin, "cg_RQ3_akimbo_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_grenade_skin, "cg_RQ3_grenade_skin", "default", CVAR_ARCHIVE},
|
||||
|
||||
//Blaze: replacement items
|
||||
{&cg_RQ3_bandolier, "cg_RQ3_bandolier", "bandolier", CVAR_ARCHIVE},
|
||||
|
@ -668,6 +697,13 @@ static cvarTable_t cvarTable[] = { // bk001129
|
|||
{&cg_RQ3_laser, "cg_RQ3_laser", "laser", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_slippers, "cg_RQ3_slippers", "slippers", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_helmet, "cg_RQ3_helmet", "helmet", CVAR_ARCHIVE},
|
||||
// JBravo: replacement skins
|
||||
{&cg_RQ3_bandolier_skin, "cg_RQ3_bandolier_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_kevlar_skin, "cg_RQ3_kevlar_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_silencer_skin, "cg_RQ3_silencer_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_laser_skin, "cg_RQ3_laser_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_slippers_skin, "cg_RQ3_slippers_skin", "default", CVAR_ARCHIVE},
|
||||
{&cg_RQ3_helmet_skin, "cg_RQ3_helmet_skin", "default", CVAR_ARCHIVE},
|
||||
|
||||
// the following variables are created in other parts of the system,
|
||||
// but we also reference them here
|
||||
|
@ -1901,13 +1937,13 @@ static void CG_RegisterGraphics(void)
|
|||
cgs.media.akimboHandModel = trap_R_RegisterModel("models/weapons2/akimbo/akimbo_hand.md3");
|
||||
|
||||
//Elder: item cache
|
||||
cgs.media.rq3_bandolierModel = trap_R_RegisterModel(va("models/items/%s.md3",cg_RQ3_bandolier.string));
|
||||
cgs.media.rq3_kevlarModel = trap_R_RegisterModel(va("models/items/%s.md3",cg_RQ3_kevlar.string));
|
||||
cgs.media.rq3_silencerModel = trap_R_RegisterModel(va("models/items/%s.md3",cg_RQ3_silencer.string));
|
||||
cgs.media.rq3_bandolierModel = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_bandolier.string));
|
||||
cgs.media.rq3_kevlarModel = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_kevlar.string));
|
||||
cgs.media.rq3_silencerModel = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_silencer.string));
|
||||
cgs.media.rq3_laserModel = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_laser.string));
|
||||
cgs.media.rq3_slippersModel = trap_R_RegisterModel(va("models/items/%s.md3",cg_RQ3_slippers.string));
|
||||
cgs.media.rq3_slippersModel = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_slippers.string));
|
||||
// JBravo: adding the helmet
|
||||
cgs.media.rq3_helmetModel = trap_R_RegisterModel(va("models/items/%s.md3",cg_RQ3_helmet.string));
|
||||
cgs.media.rq3_helmetModel = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_helmet.string));
|
||||
|
||||
cgs.media.smoke2 = trap_R_RegisterModel("models/weapons2/shells/s_shell.md3");
|
||||
|
||||
|
@ -2263,8 +2299,55 @@ void CG_ReplaceModels(void)
|
|||
strcpy(bg_itemlist[item - bg_itemlist].icon, newicon);
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_kevlar")) {
|
||||
Com_sprintf(newname, MAX_QPATH, "models/items/%s.md3", cg_RQ3_kevlar.string);
|
||||
Com_sprintf(newicon, MAX_QPATH, "icons/iconi_%s", cg_RQ3_kevlar.string);
|
||||
if (JB_FileExists(newname) && (strlen(newname) < 59)) {
|
||||
strcpy(bg_itemlist[item - bg_itemlist].world_model[0], newname);
|
||||
strcpy(bg_itemlist[item - bg_itemlist].icon, newicon);
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_silencer")) {
|
||||
Com_sprintf(newname, MAX_QPATH, "models/items/%s.md3", cg_RQ3_silencer.string);
|
||||
Com_sprintf(newicon, MAX_QPATH, "icons/iconi_%s", cg_RQ3_silencer.string);
|
||||
if (JB_FileExists(newname) && (strlen(newname) < 59)) {
|
||||
strcpy(bg_itemlist[item - bg_itemlist].world_model[0], newname);
|
||||
strcpy(bg_itemlist[item - bg_itemlist].icon, newicon);
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_laser")) {
|
||||
Com_sprintf(newname, MAX_QPATH, "models/items/%s.md3", cg_RQ3_laser.string);
|
||||
Com_sprintf(newicon, MAX_QPATH, "icons/iconi_%s", cg_RQ3_laser.string);
|
||||
if (JB_FileExists(newname) && (strlen(newname) < 59)) {
|
||||
strcpy(bg_itemlist[item - bg_itemlist].world_model[0], newname);
|
||||
strcpy(bg_itemlist[item - bg_itemlist].icon, newicon);
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_bandolier")) {
|
||||
Com_sprintf(newname, MAX_QPATH, "models/items/%s.md3", cg_RQ3_bandolier.string);
|
||||
Com_sprintf(newicon, MAX_QPATH, "icons/iconi_%s", cg_RQ3_bandolier.string);
|
||||
if (JB_FileExists(newname) && (strlen(newname) < 59)) {
|
||||
strcpy(bg_itemlist[item - bg_itemlist].world_model[0], newname);
|
||||
strcpy(bg_itemlist[item - bg_itemlist].icon, newicon);
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_slippers")) {
|
||||
Com_sprintf(newname, MAX_QPATH, "models/items/%s.md3", cg_RQ3_slippers.string);
|
||||
Com_sprintf(newicon, MAX_QPATH, "icons/iconi_%s", cg_RQ3_slippers.string);
|
||||
if (JB_FileExists(newname) && (strlen(newname) < 59)) {
|
||||
strcpy(bg_itemlist[item - bg_itemlist].world_model[0], newname);
|
||||
strcpy(bg_itemlist[item - bg_itemlist].icon, newicon);
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_helmet")) {
|
||||
Com_sprintf(newname, MAX_QPATH, "models/items/%s.md3", cg_RQ3_helmet.string);
|
||||
Com_sprintf(newicon, MAX_QPATH, "icons/iconi_%s", cg_RQ3_helmet.string);
|
||||
if (JB_FileExists(newname) && (strlen(newname) < 59)) {
|
||||
strcpy(bg_itemlist[item - bg_itemlist].world_model[0], newname);
|
||||
strcpy(bg_itemlist[item - bg_itemlist].icon, newicon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.103 2003/02/01 02:15:31 jbravo
|
||||
// Replacement models and items
|
||||
//
|
||||
// Revision 1.102 2003/01/08 04:46:26 jbravo
|
||||
// Wrote a new hackish model replacement system
|
||||
//
|
||||
|
@ -201,12 +204,8 @@ Reads information for frame-sound timing
|
|||
static qboolean CG_ParseWeaponSoundFile(const char *filename, weaponInfo_t * weapon)
|
||||
{
|
||||
char *text_p;
|
||||
int len;
|
||||
int i;
|
||||
int len, i, skip;
|
||||
char *token;
|
||||
|
||||
// float fps;
|
||||
int skip; // Elder: What's this for?
|
||||
char text[20000];
|
||||
fileHandle_t f;
|
||||
sfxWeapTiming_t *weapTiming;
|
||||
|
@ -238,26 +237,20 @@ static qboolean CG_ParseWeaponSoundFile(const char *filename, weaponInfo_t * wea
|
|||
break;
|
||||
// Add it to the array
|
||||
if (atoi(token)) {
|
||||
//Com_Printf("(%i): %s\n", i, token);
|
||||
weapTiming->sfxInfo[i].frame = atoi(token);
|
||||
} else
|
||||
break;
|
||||
//return qfalse;
|
||||
|
||||
// Grab sound file path
|
||||
token = COM_Parse(&text_p);
|
||||
if (!token)
|
||||
break;
|
||||
//return qfalse;
|
||||
|
||||
//Com_Printf("(%i): %s\n", i, token);
|
||||
weapTiming->sfxInfo[i].sound = trap_S_RegisterSound(token, qfalse);
|
||||
}
|
||||
|
||||
// Store total number
|
||||
weapTiming->numFrames = i;
|
||||
//Com_Printf("Total Frames: %i\n", weapTiming->numFrames);
|
||||
|
||||
return qtrue;
|
||||
}
|
||||
|
||||
|
@ -308,11 +301,8 @@ CG_ParseWeaponAnimFile
|
|||
*/
|
||||
static qboolean CG_ParseWeaponAnimFile(const char *filename, weaponInfo_t * weapon)
|
||||
{
|
||||
char *text_p;
|
||||
int len;
|
||||
int i;
|
||||
int skip;
|
||||
char *token;
|
||||
char *text_p, *token;
|
||||
int len, i, skip;
|
||||
float fps;
|
||||
char text[20000];
|
||||
fileHandle_t f;
|
||||
|
@ -436,15 +426,12 @@ localEntity_t *CG_ShotgunEjectBrass(centity_t * cent)
|
|||
if (cg_brassTime.integer <= 0) {
|
||||
return NULL;
|
||||
}
|
||||
//for ( i = 0; i < isHC + 1; i++ ) {
|
||||
|
||||
le = CG_AllocLocalEntity();
|
||||
re = &le->refEntity;
|
||||
|
||||
le->leType = LE_FRAGMENT;
|
||||
le->startTime = cg.time;
|
||||
le->endTime = le->startTime + cg_brassTime.integer * 3 + cg_brassTime.integer * random();
|
||||
|
||||
le->pos.trType = TR_GRAVITY;
|
||||
le->pos.trTime = cg.time;
|
||||
|
||||
|
@ -456,18 +443,15 @@ localEntity_t *CG_ShotgunEjectBrass(centity_t * cent)
|
|||
re->hModel = cgs.media.shotgunBrassModel;
|
||||
|
||||
le->bounceFactor = 0.3f;
|
||||
|
||||
le->angles.trType = TR_LINEAR;
|
||||
le->angles.trTime = cg.time;
|
||||
|
||||
le->angles.trDelta[0] = rand() % 200 - 100;
|
||||
le->angles.trDelta[1] = rand() % 200 - 100;
|
||||
le->angles.trDelta[2] = rand() % 200 - 100;
|
||||
|
||||
le->leFlags = LEF_TUMBLE;
|
||||
le->leBounceSoundType = LEBS_BRASS;
|
||||
le->leMarkType = LEMT_NONE;
|
||||
//}
|
||||
|
||||
return le;
|
||||
}
|
||||
|
||||
|
@ -481,7 +465,6 @@ void CG_RailTrail(clientInfo_t * ci, vec3_t start, vec3_t end)
|
|||
vec3_t axis[36], move, move2, next_move, vec, temp;
|
||||
float len;
|
||||
int i, j, skip;
|
||||
|
||||
localEntity_t *le;
|
||||
refEntity_t *re;
|
||||
|
||||
|
@ -500,12 +483,10 @@ void CG_RailTrail(clientInfo_t * ci, vec3_t start, vec3_t end)
|
|||
|
||||
le = CG_AllocLocalEntity();
|
||||
re = &le->refEntity;
|
||||
|
||||
le->leType = LE_FADE_RGB;
|
||||
le->startTime = cg.time;
|
||||
le->endTime = cg.time + cg_railTrailTime.value;
|
||||
le->lifeRate = 1.0 / (le->endTime - le->startTime);
|
||||
|
||||
re->shaderTime = cg.time / 1000.0f;
|
||||
re->reType = RT_RAIL_CORE;
|
||||
re->customShader = cgs.media.railCoreShader;
|
||||
|
@ -517,7 +498,6 @@ void CG_RailTrail(clientInfo_t * ci, vec3_t start, vec3_t end)
|
|||
re->shaderRGBA[1] = ci->color1[1] * 255;
|
||||
re->shaderRGBA[2] = ci->color1[2] * 255;
|
||||
re->shaderRGBA[3] = 255;
|
||||
|
||||
le->color[0] = ci->color1[0] * 0.75;
|
||||
le->color[1] = ci->color1[1] * 0.75;
|
||||
le->color[2] = ci->color1[2] * 0.75;
|
||||
|
@ -548,22 +528,18 @@ void CG_RailTrail(clientInfo_t * ci, vec3_t start, vec3_t end)
|
|||
le->startTime = cg.time;
|
||||
le->endTime = cg.time + (i >> 1) + 600;
|
||||
le->lifeRate = 1.0 / (le->endTime - le->startTime);
|
||||
|
||||
re->shaderTime = cg.time / 1000.0f;
|
||||
re->reType = RT_SPRITE;
|
||||
re->radius = 1.1f;
|
||||
re->customShader = cgs.media.railRingsShader;
|
||||
|
||||
re->shaderRGBA[0] = ci->color2[0] * 255;
|
||||
re->shaderRGBA[1] = ci->color2[1] * 255;
|
||||
re->shaderRGBA[2] = ci->color2[2] * 255;
|
||||
re->shaderRGBA[3] = 255;
|
||||
|
||||
le->color[0] = ci->color2[0] * 0.75;
|
||||
le->color[1] = ci->color2[1] * 0.75;
|
||||
le->color[2] = ci->color2[2] * 0.75;
|
||||
le->color[3] = 1.0f;
|
||||
|
||||
le->pos.trType = TR_LINEAR;
|
||||
le->pos.trTime = cg.time;
|
||||
|
||||
|
@ -739,6 +715,15 @@ void CG_RegisterWeapon(int weaponNum)
|
|||
MAKERGB(weaponInfo->flashDlightColor, 1, 1, 0);
|
||||
weaponInfo->flashSound[0] = trap_S_RegisterSound("sound/weapons/mk23/mk23fire.wav", qfalse);
|
||||
weaponInfo->worldReloadSound[0] = trap_S_RegisterSound("sound/weapons/mk23/mk23reload.wav", qfalse);
|
||||
// JBravo: skin replacements
|
||||
if (strcmp(cg_RQ3_mk23_skin.string, "default")) {
|
||||
weaponInfo->customSkin = trap_R_RegisterSkin (va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_mk23.string, cg_RQ3_mk23_skin.string));
|
||||
if (!weaponInfo->customSkin) {
|
||||
Com_Printf("Weapon skin load failure: %s\n", va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_mk23.string, cg_RQ3_mk23_skin.string));
|
||||
}
|
||||
}
|
||||
weaponInfo->ejectBrassFunc = CG_MachineGunEjectBrass;
|
||||
cgs.media.bulletExplosionShader = trap_R_RegisterShader("bulletExplosion");
|
||||
|
||||
|
@ -765,7 +750,15 @@ void CG_RegisterWeapon(int weaponNum)
|
|||
weaponInfo->flashSound[0] = trap_S_RegisterSound("sound/weapons/knife/slash.wav", qfalse);
|
||||
weaponInfo->missileModel =
|
||||
trap_R_RegisterModel(va("models/weapons2/%s/knife.md3", cg_RQ3_knife.string));
|
||||
|
||||
// JBravo: skin replacements
|
||||
if (strcmp(cg_RQ3_knife_skin.string, "default")) {
|
||||
weaponInfo->customSkin = trap_R_RegisterSkin (va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_knife.string, cg_RQ3_knife_skin.string));
|
||||
if (!weaponInfo->customSkin) {
|
||||
Com_Printf("Weapon skin load failure: %s\n", va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_knife.string, cg_RQ3_knife_skin.string));
|
||||
}
|
||||
}
|
||||
// Load the animation information
|
||||
Com_sprintf(filename, sizeof(filename), "models/weapons2/%s/animation.cfg", cg_RQ3_knife.string);
|
||||
if (!CG_ParseWeaponAnimFile(filename, weaponInfo)) {
|
||||
|
@ -781,7 +774,15 @@ void CG_RegisterWeapon(int weaponNum)
|
|||
weaponInfo->worldReloadSound[0] = trap_S_RegisterSound("sound/weapons/m4/m4reload.wav", qfalse);
|
||||
weaponInfo->ejectBrassFunc = CG_MachineGunEjectBrass;
|
||||
cgs.media.bulletExplosionShader = trap_R_RegisterShader("bulletExplosion");
|
||||
|
||||
// JBravo: skin replacements
|
||||
if (strcmp(cg_RQ3_m4_skin.string, "default")) {
|
||||
weaponInfo->customSkin = trap_R_RegisterSkin (va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_m4.string, cg_RQ3_m4_skin.string));
|
||||
if (!weaponInfo->customSkin) {
|
||||
Com_Printf("Weapon skin load failure: %s\n", va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_m4.string, cg_RQ3_m4_skin.string));
|
||||
}
|
||||
}
|
||||
Com_sprintf(filename, sizeof(filename), "models/weapons2/%s/animation.cfg", cg_RQ3_m4.string);
|
||||
if (!CG_ParseWeaponAnimFile(filename, weaponInfo)) {
|
||||
Com_Printf("Failed to load weapon animation file %s\n", filename);
|
||||
|
@ -808,6 +809,15 @@ void CG_RegisterWeapon(int weaponNum)
|
|||
weaponInfo->worldReloadSound[2] = trap_S_RegisterSound("sound/weapons/ssg3000/ssgbolt.wav", qfalse);
|
||||
weaponInfo->ejectBrassFunc = CG_MachineGunEjectBrass;
|
||||
cgs.media.bulletExplosionShader = trap_R_RegisterShader("bulletExplosion");
|
||||
// JBravo: skin replacements
|
||||
if (strcmp(cg_RQ3_ssg3000_skin.string, "default")) {
|
||||
weaponInfo->customSkin = trap_R_RegisterSkin (va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_ssg3000.string, cg_RQ3_ssg3000_skin.string));
|
||||
if (!weaponInfo->customSkin) {
|
||||
Com_Printf("Weapon skin load failure: %s\n", va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_ssg3000.string, cg_RQ3_ssg3000_skin.string));
|
||||
}
|
||||
}
|
||||
Com_sprintf(filename, sizeof(filename), "models/weapons2/%s/animation.cfg", cg_RQ3_ssg3000.string);
|
||||
if (!CG_ParseWeaponAnimFile(filename, weaponInfo)) {
|
||||
Com_Printf("Failed to load weapon animation file %s\n", filename);
|
||||
|
@ -830,7 +840,15 @@ void CG_RegisterWeapon(int weaponNum)
|
|||
weaponInfo->worldReloadSound[0] = trap_S_RegisterSound("sound/weapons/mp5/mp5reload.wav", qfalse);
|
||||
weaponInfo->ejectBrassFunc = CG_MachineGunEjectBrass;
|
||||
cgs.media.bulletExplosionShader = trap_R_RegisterShader("bulletExplosion");
|
||||
|
||||
// JBravo: skin replacements
|
||||
if (strcmp(cg_RQ3_mp5_skin.string, "default")) {
|
||||
weaponInfo->customSkin = trap_R_RegisterSkin (va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_mp5.string, cg_RQ3_mp5_skin.string));
|
||||
if (!weaponInfo->customSkin) {
|
||||
Com_Printf("Weapon skin load failure: %s\n", va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_mp5.string, cg_RQ3_mp5_skin.string));
|
||||
}
|
||||
}
|
||||
Com_sprintf(filename, sizeof(filename), "models/weapons2/%s/animation.cfg", cg_RQ3_mp5.string);
|
||||
if (!CG_ParseWeaponAnimFile(filename, weaponInfo)) {
|
||||
Com_Printf("Failed to load weapon animation file %s\n", filename);
|
||||
|
@ -855,7 +873,15 @@ void CG_RegisterWeapon(int weaponNum)
|
|||
weaponInfo->worldReloadSound[0] = trap_S_RegisterSound("sound/weapons/handcannon/hcreload.wav", qfalse);
|
||||
weaponInfo->ejectBrassFunc = CG_ShotgunEjectBrass;
|
||||
cgs.media.bulletExplosionShader = trap_R_RegisterShader("bulletExplosion");
|
||||
|
||||
// JBravo: skin replacements
|
||||
if (strcmp(cg_RQ3_handcannon_skin.string, "default")) {
|
||||
weaponInfo->customSkin = trap_R_RegisterSkin (va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_handcannon.string, cg_RQ3_handcannon_skin.string));
|
||||
if (!weaponInfo->customSkin) {
|
||||
Com_Printf("Weapon skin load failure: %s\n", va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_handcannon.string, cg_RQ3_handcannon_skin.string));
|
||||
}
|
||||
}
|
||||
Com_sprintf(filename, sizeof(filename), "models/weapons2/%s/animation.cfg", cg_RQ3_handcannon.string);
|
||||
if (!CG_ParseWeaponAnimFile(filename, weaponInfo)) {
|
||||
Com_Printf("Failed to load weapon animation file %s\n", filename);
|
||||
|
@ -879,7 +905,15 @@ void CG_RegisterWeapon(int weaponNum)
|
|||
weaponInfo->flashSound[0] = trap_S_RegisterSound("sound/weapons/m3/m3fire.wav", qfalse);
|
||||
weaponInfo->worldReloadSound[1] = trap_S_RegisterSound("sound/weapons/m3/m3in.wav", qfalse);
|
||||
weaponInfo->ejectBrassFunc = CG_ShotgunEjectBrass;
|
||||
|
||||
// JBravo: skin replacements
|
||||
if (strcmp(cg_RQ3_m3_skin.string, "default")) {
|
||||
weaponInfo->customSkin = trap_R_RegisterSkin (va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_m3.string, cg_RQ3_m3_skin.string));
|
||||
if (!weaponInfo->customSkin) {
|
||||
Com_Printf("Weapon skin load failure: %s\n", va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_m3.string, cg_RQ3_m3_skin.string));
|
||||
}
|
||||
}
|
||||
Com_sprintf(filename, sizeof(filename), "models/weapons2/%s/animation.cfg", cg_RQ3_m3.string);
|
||||
if (!CG_ParseWeaponAnimFile(filename, weaponInfo)) {
|
||||
Com_Printf("Failed to load weapon animation file %s\n", filename);
|
||||
|
@ -905,6 +939,15 @@ void CG_RegisterWeapon(int weaponNum)
|
|||
weaponInfo->worldReloadSound[0] = trap_S_RegisterSound("sound/weapons/akimbo/akimboreload.wav", qfalse);
|
||||
weaponInfo->ejectBrassFunc = CG_MachineGunEjectBrass;
|
||||
cgs.media.bulletExplosionShader = trap_R_RegisterShader("bulletExplosion");
|
||||
// JBravo: skin replacements
|
||||
if (strcmp(cg_RQ3_akimbo_skin.string, "default")) {
|
||||
weaponInfo->customSkin = trap_R_RegisterSkin (va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_akimbo.string, cg_RQ3_akimbo_skin.string));
|
||||
if (!weaponInfo->customSkin) {
|
||||
Com_Printf("Weapon skin load failure: %s\n", va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_akimbo.string, cg_RQ3_akimbo_skin.string));
|
||||
}
|
||||
}
|
||||
Com_sprintf(filename, sizeof(filename), "models/weapons2/%s/animation.cfg", cg_RQ3_akimbo.string);
|
||||
if (!CG_ParseWeaponAnimFile(filename, weaponInfo)) {
|
||||
Com_Printf("Failed to load weapon animation file %s\n", filename);
|
||||
|
@ -930,7 +973,15 @@ void CG_RegisterWeapon(int weaponNum)
|
|||
MAKERGB(weaponInfo->flashDlightColor, 1, 0.70f, 0);
|
||||
//Blaze: Make sure we load this as we may have exploding crates
|
||||
//cgs.media.grenadeExplosionShader = trap_R_RegisterShader( "grenadeExplosion" );
|
||||
|
||||
// JBravo: skin replacements
|
||||
if (strcmp(cg_RQ3_grenade_skin.string, "default")) {
|
||||
weaponInfo->customSkin = trap_R_RegisterSkin (va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_grenade.string, cg_RQ3_grenade_skin.string));
|
||||
if (!weaponInfo->customSkin) {
|
||||
Com_Printf("Weapon skin load failure: %s\n", va("models/weapons2/%s/%s.skin",
|
||||
cg_RQ3_grenade.string, cg_RQ3_grenade_skin.string));
|
||||
}
|
||||
}
|
||||
// Load the animation information
|
||||
Com_sprintf(filename, sizeof(filename), "models/weapons2/%s/animation.cfg", cg_RQ3_grenade.string);
|
||||
if (!CG_ParseWeaponAnimFile(filename, weaponInfo)) {
|
||||
|
@ -974,54 +1025,64 @@ void CG_RegisterItemVisuals(int itemNum)
|
|||
|
||||
memset(itemInfo, 0, sizeof(&itemInfo));
|
||||
itemInfo->registered = qtrue;
|
||||
if (item->giType == IT_HOLDABLE) {
|
||||
if (item->giTag == HI_KEVLAR) {
|
||||
itemInfo->models[0] = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_kevlar.string));
|
||||
}
|
||||
if (item->giTag == HI_LASER) {
|
||||
itemInfo->models[0] = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_laser.string));
|
||||
}
|
||||
if (item->giTag == HI_SILENCER) {
|
||||
itemInfo->models[0] = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_silencer.string));
|
||||
}
|
||||
if (item->giTag == HI_BANDOLIER) {
|
||||
itemInfo->models[0] = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_bandolier.string));
|
||||
}
|
||||
if (item->giTag == HI_SLIPPERS) {
|
||||
itemInfo->models[0] = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_slippers.string));
|
||||
}
|
||||
if (item->giTag == HI_HELMET) {
|
||||
itemInfo->models[0] = trap_R_RegisterModel(va("models/items/%s.md3", cg_RQ3_helmet.string));
|
||||
}
|
||||
} else {
|
||||
itemInfo->models[0] = trap_R_RegisterModel(item->world_model[0]);
|
||||
}
|
||||
if (item->giType == IT_HOLDABLE) {
|
||||
if (item->giTag == HI_KEVLAR) {
|
||||
itemInfo->icon = trap_R_RegisterShader(va("icons/iconi_%s", cg_RQ3_kevlar.string));
|
||||
}
|
||||
if (item->giTag == HI_LASER) {
|
||||
itemInfo->icon = trap_R_RegisterShader(va("icons/iconi_%s", cg_RQ3_laser.string));
|
||||
}
|
||||
if (item->giTag == HI_SILENCER) {
|
||||
itemInfo->icon = trap_R_RegisterShader(va("icons/iconi_%s", cg_RQ3_silencer.string));
|
||||
}
|
||||
if (item->giTag == HI_BANDOLIER) {
|
||||
itemInfo->icon = trap_R_RegisterShader(va("icons/iconi_%s", cg_RQ3_bandolier.string));
|
||||
}
|
||||
if (item->giTag == HI_SLIPPERS) {
|
||||
itemInfo->icon = trap_R_RegisterShader(va("icons/iconi_%s", cg_RQ3_slippers.string));
|
||||
}
|
||||
if (item->giTag == HI_HELMET) {
|
||||
itemInfo->icon = trap_R_RegisterShader(va("icons/iconi_%s", cg_RQ3_helmet.string));
|
||||
}
|
||||
} else {
|
||||
itemInfo->icon = trap_R_RegisterShader(item->icon);
|
||||
}
|
||||
itemInfo->models[0] = trap_R_RegisterModel(item->world_model[0]);
|
||||
itemInfo->icon = trap_R_RegisterShader(item->icon);
|
||||
|
||||
if (item->giType == IT_WEAPON) {
|
||||
CG_RegisterWeapon(item->giTag);
|
||||
}
|
||||
// JBravo: replacement skins for items
|
||||
if (item->giType == IT_HOLDABLE) {
|
||||
if (!strcmp(item->classname, "item_kevlar") && strcmp(cg_RQ3_kevlar_skin.string, "default")) {
|
||||
itemInfo->customSkin = trap_R_RegisterSkin (va("models/items/%s/%s.skin",
|
||||
cg_RQ3_kevlar.string, cg_RQ3_kevlar_skin.string));
|
||||
if (!itemInfo->customSkin) {
|
||||
Com_Printf("Item skin load failure: %s\n", va("models/items/%s/%s.skin",
|
||||
cg_RQ3_kevlar.string, cg_RQ3_kevlar_skin.string));
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_silencer") && strcmp(cg_RQ3_silencer_skin.string, "default")) {
|
||||
itemInfo->customSkin = trap_R_RegisterSkin (va("models/items/%s/%s.skin",
|
||||
cg_RQ3_silencer.string, cg_RQ3_silencer_skin.string));
|
||||
if (!itemInfo->customSkin) {
|
||||
Com_Printf("Item skin load failure: %s\n", va("models/items/%s/%s.skin",
|
||||
cg_RQ3_kevlar.string, cg_RQ3_kevlar_skin.string));
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_laser") && strcmp(cg_RQ3_laser_skin.string, "default")) {
|
||||
itemInfo->customSkin = trap_R_RegisterSkin (va("models/items/%s/%s.skin",
|
||||
cg_RQ3_laser.string, cg_RQ3_laser_skin.string));
|
||||
if (!itemInfo->customSkin) {
|
||||
Com_Printf("Item skin load failure: %s\n", va("models/items/%s/%s.skin",
|
||||
cg_RQ3_laser.string, cg_RQ3_laser_skin.string));
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_bandolier") && strcmp(cg_RQ3_bandolier_skin.string, "default")) {
|
||||
itemInfo->customSkin = trap_R_RegisterSkin (va("models/items/%s/%s.skin",
|
||||
cg_RQ3_bandolier.string, cg_RQ3_bandolier_skin.string));
|
||||
if (!itemInfo->customSkin) {
|
||||
Com_Printf("Item skin load failure: %s\n", va("models/items/%s/%s.skin",
|
||||
cg_RQ3_bandolier.string, cg_RQ3_bandolier_skin.string));
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_slippers") && strcmp(cg_RQ3_slippers_skin.string, "default")) {
|
||||
itemInfo->customSkin = trap_R_RegisterSkin (va("models/items/%s/%s.skin",
|
||||
cg_RQ3_slippers.string, cg_RQ3_slippers_skin.string));
|
||||
if (!itemInfo->customSkin) {
|
||||
Com_Printf("Item skin load failure: %s\n", va("models/items/%s/%s.skin",
|
||||
cg_RQ3_slippers.string, cg_RQ3_slippers_skin.string));
|
||||
}
|
||||
}
|
||||
if (!strcmp(item->classname, "item_helmet") && strcmp(cg_RQ3_helmet_skin.string, "default")) {
|
||||
itemInfo->customSkin = trap_R_RegisterSkin (va("models/items/%s/%s.skin",
|
||||
cg_RQ3_helmet.string, cg_RQ3_helmet_skin.string));
|
||||
if (!itemInfo->customSkin) {
|
||||
Com_Printf("Item skin load failure: %s\n", va("models/items/%s/%s.skin",
|
||||
cg_RQ3_helmet.string, cg_RQ3_helmet_skin.string));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// powerups have an accompanying ring or sphere
|
||||
//
|
||||
|
@ -1049,9 +1110,8 @@ CG_CalculateWeaponPosition
|
|||
*/
|
||||
static void CG_CalculateWeaponPosition(vec3_t origin, vec3_t angles)
|
||||
{
|
||||
float scale;
|
||||
float scale, fracsin;
|
||||
int delta;
|
||||
float fracsin;
|
||||
|
||||
VectorCopy(cg.refdef.vieworg, origin);
|
||||
VectorCopy(cg.refdefViewAngles, angles);
|
||||
|
@ -1075,15 +1135,6 @@ static void CG_CalculateWeaponPosition(vec3_t origin, vec3_t angles)
|
|||
} else if (delta < LAND_DEFLECT_TIME + LAND_RETURN_TIME) {
|
||||
origin[2] += cg.landChange * 0.25 * (LAND_DEFLECT_TIME + LAND_RETURN_TIME - delta) / LAND_RETURN_TIME;
|
||||
}
|
||||
#if 0
|
||||
// drop the weapon when stair climbing
|
||||
delta = cg.time - cg.stepTime;
|
||||
if (delta < STEP_TIME / 2) {
|
||||
origin[2] -= cg.stepChange * 0.25 * delta / (STEP_TIME / 2);
|
||||
} else if (delta < STEP_TIME) {
|
||||
origin[2] -= cg.stepChange * 0.25 * (STEP_TIME - delta) / (STEP_TIME / 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
// idle drift
|
||||
scale = cg.xyspeed + 40;
|
||||
|
@ -1114,12 +1165,7 @@ sound should only be done on the world model case.
|
|||
*/
|
||||
void CG_AddPlayerWeapon(refEntity_t * parent, playerState_t * ps, centity_t * cent, int team)
|
||||
{
|
||||
refEntity_t gun;
|
||||
|
||||
// Blaze: Can remove this because no more spinning barrel
|
||||
// refEntity_t barrel;
|
||||
refEntity_t flash;
|
||||
refEntity_t silencer, laser;
|
||||
refEntity_t gun, flash, silencer, laser;
|
||||
vec3_t angles;
|
||||
weapon_t weaponNum;
|
||||
weaponInfo_t *weapon;
|
||||
|
@ -1152,6 +1198,10 @@ void CG_AddPlayerWeapon(refEntity_t * parent, playerState_t * ps, centity_t * ce
|
|||
return;
|
||||
}
|
||||
|
||||
// JBravo: activate the custom skin, if any
|
||||
if (weapon->customSkin)
|
||||
gun.customSkin = weapon->customSkin;
|
||||
|
||||
if (!ps) {
|
||||
// add weapon ready sound
|
||||
cent->pe.lightningFiring = qfalse;
|
||||
|
@ -1205,8 +1255,6 @@ void CG_AddPlayerWeapon(refEntity_t * parent, playerState_t * ps, centity_t * ce
|
|||
|
||||
if (cg.curSyncSound.played == qfalse) {
|
||||
cg.curSyncSound.played = qtrue;
|
||||
|
||||
//CG_Printf("Playing a timed sound (%i %i %1.1f)\n", gun.frame, gun.oldframe, gun.backlerp);
|
||||
trap_S_StartLocalSound(cg.curSyncSound.sound, CHAN_WEAPON);
|
||||
}
|
||||
}
|
||||
|
@ -1348,7 +1396,6 @@ void CG_AddPlayerWeapon(refEntity_t * parent, playerState_t * ps, centity_t * ce
|
|||
"tag_shell2");
|
||||
else
|
||||
CG_PositionRotatedEntityOnTag(&shell->refEntity, &gun, gun.hModel, "tag_shell");
|
||||
|
||||
}
|
||||
|
||||
VectorCopy(shell->refEntity.origin, shell->pos.trBase);
|
||||
|
@ -1469,9 +1516,6 @@ void CG_AddPlayerWeapon(refEntity_t * parent, playerState_t * ps, centity_t * ce
|
|||
|
||||
if (ps || cg.renderingThirdPerson || cent->currentState.number != cg.predictedPlayerState.clientNum) {
|
||||
// add rail trail
|
||||
//Blaze: no need for this
|
||||
//CG_SpawnRailTrail( cent, flash.origin );
|
||||
|
||||
if (weapon->flashDlightColor[0] || weapon->flashDlightColor[1] || weapon->flashDlightColor[2]) {
|
||||
trap_R_AddLightToScene(flash.origin, 300 + (rand() & 31), weapon->flashDlightColor[0],
|
||||
weapon->flashDlightColor[1], weapon->flashDlightColor[2]);
|
||||
|
@ -1574,10 +1618,7 @@ CG_DrawWeaponSelect
|
|||
*/
|
||||
void CG_DrawWeaponSelect(void)
|
||||
{
|
||||
int i;
|
||||
int bits;
|
||||
int count;
|
||||
int x, y, w;
|
||||
int i, bits, count, x, y, w;
|
||||
char *name;
|
||||
float *color;
|
||||
|
||||
|
@ -1670,8 +1711,7 @@ CG_NextWeapon_f
|
|||
*/
|
||||
void CG_NextWeapon_f(void)
|
||||
{
|
||||
int i;
|
||||
int original;
|
||||
int i, original;
|
||||
|
||||
if (!cg.snap) {
|
||||
return;
|
||||
|
@ -1723,8 +1763,7 @@ CG_PrevWeapon_f
|
|||
*/
|
||||
void CG_PrevWeapon_f(void)
|
||||
{
|
||||
int i;
|
||||
int original;
|
||||
int i, original;
|
||||
|
||||
if (!cg.snap) {
|
||||
return;
|
||||
|
@ -1755,10 +1794,6 @@ void CG_PrevWeapon_f(void)
|
|||
if (cg.weaponSelect == -1) {
|
||||
cg.weaponSelect = 15;
|
||||
}
|
||||
//Blaze: Allow full Cycle
|
||||
//if ( cg.weaponSelect == WP_GAUNTLET ) {
|
||||
// continue; // never cycle to gauntlet
|
||||
//}
|
||||
if (CG_WeaponSelectable(cg.weaponSelect)) {
|
||||
break;
|
||||
}
|
||||
|
@ -1782,8 +1817,7 @@ CG_SpecialWeapon_f
|
|||
*/
|
||||
void CG_SpecialWeapon_f(void)
|
||||
{
|
||||
int i;
|
||||
int original;
|
||||
int i, original;
|
||||
|
||||
if (!cg.snap) {
|
||||
//CG_Printf("No snapshot: normally exiting\n");
|
||||
|
@ -2012,8 +2046,6 @@ The current weapon has just run out of ammo
|
|||
*/
|
||||
void CG_OutOfAmmoChange(void)
|
||||
{
|
||||
//int i;
|
||||
|
||||
if (!cg.snap)
|
||||
return;
|
||||
|
||||
|
@ -2195,31 +2227,13 @@ Caused by an EV_MISSILE_MISS event, or directly by local bullet tracing
|
|||
void CG_MissileHitWall(int weapon, int clientNum, vec3_t origin,
|
||||
vec3_t dir, impactSound_t soundType, int weapModification)
|
||||
{
|
||||
qhandle_t mod;
|
||||
qhandle_t mark;
|
||||
qhandle_t shader;
|
||||
qhandle_t mod, mark, shader;
|
||||
sfxHandle_t sfx;
|
||||
float radius;
|
||||
float light;
|
||||
vec3_t lightColor;
|
||||
localEntity_t *le;
|
||||
int r;
|
||||
qboolean alphaFade;
|
||||
qboolean isSprite;
|
||||
int duration;
|
||||
int angle;
|
||||
|
||||
//Elder: for impact smoke marks
|
||||
localEntity_t *smokePuff;
|
||||
vec3_t puffOrigin;
|
||||
vec3_t puffOffset;
|
||||
vec3_t puffDir;
|
||||
int contentType;
|
||||
|
||||
//Elder: for impact sparks
|
||||
vec3_t velocity;
|
||||
int sparkCount;
|
||||
int i;
|
||||
float radius, light;
|
||||
vec3_t lightColor, puffOrigin, puffOffset, puffDir, velocity;
|
||||
localEntity_t *le, *smokePuff;
|
||||
int r, duration, angle, contentType, sparkCount, i;
|
||||
qboolean alphaFade, isSprite;
|
||||
|
||||
mark = 0;
|
||||
radius = 32;
|
||||
|
@ -2589,11 +2603,8 @@ We are not going to show every HC impact
|
|||
static void CG_ShotgunPellet(vec3_t start, vec3_t end, int skipNum, int shellWeapon)
|
||||
{
|
||||
trace_t tr;
|
||||
int sourceContentType, destContentType;
|
||||
|
||||
int l, playerNum;
|
||||
int sourceContentType, destContentType, l, playerNum;
|
||||
vec3_t t_start;
|
||||
|
||||
//Makro
|
||||
int Material;
|
||||
|
||||
|
@ -2720,12 +2731,9 @@ hit splashes
|
|||
*/
|
||||
static void CG_ShotgunPattern(vec3_t origin, vec3_t origin2, int otherEntNum, int shotType, int seed)
|
||||
{
|
||||
int i;
|
||||
int i, count;
|
||||
float r, u;
|
||||
vec3_t end;
|
||||
vec3_t forward, right, up;
|
||||
|
||||
int count;
|
||||
vec3_t end, forward, right, up;
|
||||
int hc_multipler = 0;
|
||||
|
||||
// derive the right and up vectors from the forward vector, because
|
||||
|
@ -2822,8 +2830,7 @@ void CG_CreateTracer(int entity, vec3_t start, vec3_t end)
|
|||
{
|
||||
localEntity_t *le;
|
||||
float dist;
|
||||
vec3_t dir, end2;
|
||||
vec3_t temp, midpoint;
|
||||
vec3_t dir, end2, temp, midpoint;
|
||||
float tracerSpeed = 5000;
|
||||
|
||||
VectorSubtract(end, start, dir);
|
||||
|
@ -2861,11 +2868,9 @@ CG_Tracer
|
|||
*/
|
||||
void CG_Tracer(vec3_t source, vec3_t dest)
|
||||
{
|
||||
vec3_t forward, right;
|
||||
vec3_t forward, right, line, start, finish;
|
||||
polyVert_t verts[4];
|
||||
vec3_t line;
|
||||
float len, begin, end;
|
||||
vec3_t start, finish;
|
||||
|
||||
// tracer
|
||||
VectorSubtract(dest, source, forward);
|
||||
|
@ -3007,9 +3012,7 @@ Local laser dot if it is the client's own laser
|
|||
*/
|
||||
static void CG_LocalLaser()
|
||||
{
|
||||
vec3_t muzzle;
|
||||
vec3_t forward;
|
||||
vec3_t end;
|
||||
vec3_t muzzle, forward, end;
|
||||
refEntity_t *re;
|
||||
trace_t tr;
|
||||
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.48 2003/02/01 02:15:31 jbravo
|
||||
// Replacement models and items
|
||||
//
|
||||
// Revision 1.47 2003/01/08 04:46:26 jbravo
|
||||
// Wrote a new hackish model replacement system
|
||||
//
|
||||
|
@ -169,7 +172,7 @@ gitem_t bg_itemlist[] = {
|
|||
{"models/weapons2/m4/m4.md3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
0, 0, 0}
|
||||
,
|
||||
/* icon */ "icons/iconw_m4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
/* icon */ "icons/iconw_m4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
/* pickup */ RQ3_M4_NAME,
|
||||
24,
|
||||
IT_WEAPON,
|
||||
|
@ -186,7 +189,7 @@ gitem_t bg_itemlist[] = {
|
|||
{"models/weapons2/ssg3000/ssg3000.md3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
0, 0, 0}
|
||||
,
|
||||
/* icon */ "icons/iconw_ssg\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
/* icon */ "icons/iconw_ssg\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
/* pickup */ RQ3_SSG3000_NAME,
|
||||
6,
|
||||
IT_WEAPON,
|
||||
|
@ -203,7 +206,7 @@ gitem_t bg_itemlist[] = {
|
|||
{"models/weapons2/mp5/mp5.md3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
0, 0, 0}
|
||||
,
|
||||
/* icon */ "icons/iconw_mp5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
/* icon */ "icons/iconw_mp5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
/* pickup */ RQ3_MP5_NAME,
|
||||
30,
|
||||
IT_WEAPON,
|
||||
|
@ -237,7 +240,7 @@ gitem_t bg_itemlist[] = {
|
|||
{"models/weapons2/m3/m3.md3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
0, 0, 0}
|
||||
,
|
||||
/* icon */ "icons/iconw_m3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
/* icon */ "icons/iconw_m3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
/* pickup */ RQ3_M3_NAME,
|
||||
7,
|
||||
IT_WEAPON,
|
||||
|
@ -588,10 +591,10 @@ Only in CTF games
|
|||
{
|
||||
"item_kevlar",
|
||||
"sound/items/kevlar.wav",
|
||||
{"models/items/kevlar.md3",
|
||||
{"models/items/kevlar.md3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
0, 0, 0}
|
||||
,
|
||||
"icons/iconi_kevlar",
|
||||
"icons/iconi_kevlar\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
RQ3_KEVLAR_NAME,
|
||||
0,
|
||||
IT_HOLDABLE,
|
||||
|
@ -603,10 +606,10 @@ Only in CTF games
|
|||
{
|
||||
"item_silencer",
|
||||
"sound/items/silencer.wav",
|
||||
{"models/items/silencer.md3",
|
||||
{"models/items/silencer.md3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
0, 0, 0}
|
||||
,
|
||||
"icons/iconi_silencer",
|
||||
"icons/iconi_silencer\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
RQ3_SILENCER_NAME,
|
||||
0,
|
||||
IT_HOLDABLE,
|
||||
|
@ -618,10 +621,10 @@ Only in CTF games
|
|||
{
|
||||
"item_laser",
|
||||
"sound/items/laser.wav",
|
||||
{"models/items/laser.md3",
|
||||
{"models/items/laser.md3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
0, 0, 0}
|
||||
,
|
||||
"icons/iconi_laser",
|
||||
"icons/iconi_laser\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
RQ3_LASER_NAME,
|
||||
0,
|
||||
IT_HOLDABLE,
|
||||
|
@ -633,10 +636,10 @@ Only in CTF games
|
|||
{
|
||||
"item_bandolier",
|
||||
"sound/items/bandolier.wav",
|
||||
{"models/items/bandolier.md3",
|
||||
{"models/items/bandolier.md3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
0, 0, 0}
|
||||
,
|
||||
"icons/iconi_bandolier",
|
||||
"icons/iconi_bandolier\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
RQ3_BANDOLIER_NAME,
|
||||
0,
|
||||
IT_HOLDABLE,
|
||||
|
@ -648,10 +651,10 @@ Only in CTF games
|
|||
{
|
||||
"item_slippers",
|
||||
"sound/items/slippers.wav",
|
||||
{"models/items/slippers.md3",
|
||||
{"models/items/slippers.md3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
0, 0, 0}
|
||||
,
|
||||
"icons/iconi_slippers",
|
||||
"icons/iconi_slippers\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
RQ3_SLIPPERS_NAME,
|
||||
0,
|
||||
IT_HOLDABLE,
|
||||
|
@ -663,10 +666,10 @@ Only in CTF games
|
|||
{
|
||||
"item_helmet",
|
||||
"sound/items/slippers.wav",
|
||||
{"models/items/helmet/helmet.md3",
|
||||
{"models/items/helmet.md3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
0, 0, 0}
|
||||
,
|
||||
"icons/iconi_helmet",
|
||||
"icons/iconi_helmet\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
|
||||
RQ3_HELMET_NAME,
|
||||
0,
|
||||
IT_HOLDABLE,
|
||||
|
|
Loading…
Reference in a new issue