mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2025-01-31 13:50:55 +00:00
Adding func_explosive and a few new surfaceparms
This commit is contained in:
parent
23f679b5a8
commit
1de6a342d5
11 changed files with 319 additions and 15 deletions
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.19 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.18 2002/01/11 19:48:29 jbravo
|
||||
// Formatted the source in non DOS format.
|
||||
//
|
||||
|
@ -1075,3 +1078,98 @@ void CG_BreakGlass( vec3_t playerOrigin, int glassParm, int type ) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// JBravo: For func_explosive
|
||||
void CG_LaunchBreakableFrag( vec3_t origin, vec3_t velocity, qhandle_t hModel, float bouncyness, float size ) {
|
||||
localEntity_t *le;
|
||||
refEntity_t *re;
|
||||
|
||||
le = CG_AllocLocalEntity();
|
||||
re = &le->refEntity;
|
||||
|
||||
le->leType = LE_FRAGMENT;
|
||||
le->startTime = cg.time - (rand() & 63);
|
||||
le->endTime = le->startTime + 5000 + random() * 3000;
|
||||
|
||||
VectorCopy( origin, re->origin );
|
||||
AxisCopy( axisDefault, re->axis );
|
||||
re->hModel = hModel;
|
||||
// re->customShader = hShader;
|
||||
|
||||
le->pos.trType = TR_GRAVITY;
|
||||
VectorCopy( origin, le->pos.trBase );
|
||||
VectorCopy( velocity, le->pos.trDelta );
|
||||
le->pos.trTime = cg.time;
|
||||
|
||||
le->size = size;
|
||||
VectorScale(re->axis[0], size, re->axis[0]);
|
||||
VectorScale(re->axis[1], size, re->axis[1]);
|
||||
VectorScale(re->axis[2], size, re->axis[2]);
|
||||
re->nonNormalizedAxes = qtrue;
|
||||
|
||||
le->angles.trType = TR_LINEAR;
|
||||
le->angles.trTime = cg.time;
|
||||
le->angles.trBase[0] = rand()&63;
|
||||
le->angles.trBase[1] = rand()&63;
|
||||
le->angles.trBase[2] = rand()&63;
|
||||
le->angles.trDelta[0] = rand()&127;
|
||||
le->angles.trDelta[1] = rand()&127;
|
||||
le->angles.trDelta[2] = rand()&127;
|
||||
le->leFlags = LEF_TUMBLE;
|
||||
|
||||
le->bounceFactor = bouncyness;
|
||||
|
||||
le->leBounceSoundType = LEBS_NONE;
|
||||
le->leMarkType = LEMT_NONE;
|
||||
}
|
||||
|
||||
// JBravo: also for func_explosive
|
||||
/*
|
||||
===================
|
||||
CG_BreakBreakable
|
||||
|
||||
Generated a bunch of gibs launching out from the breakables location
|
||||
===================
|
||||
*/
|
||||
#define BREAK_VELOCITY 550
|
||||
#define BREAK_JUMP 150
|
||||
|
||||
void CG_BreakBreakable( centity_t *cent, int eParam ) {
|
||||
vec3_t origin, velocity;
|
||||
qhandle_t model;
|
||||
sfxHandle_t sound;
|
||||
int i, mass, material;
|
||||
float tension, bouncyness, size;
|
||||
int modelbias[10] = { 0, 0, 0, 0, 1, 1, 1, 2, 2 };
|
||||
|
||||
// allow gibs to be turned off for speed
|
||||
if ( !cg_gibs.integer ) {
|
||||
return;
|
||||
}
|
||||
mass = ((eParam >> 4) & 0x0F) + 1;
|
||||
tension = 0.25 * (((eParam >> 2) & 0x03) + 1);
|
||||
bouncyness = 0.25 * (((eParam) & 0x3) + 1);
|
||||
|
||||
mass = eParam;
|
||||
material = (cent->currentState.powerups >> 12) & 0x000F;
|
||||
tension = 0.0667 * (float)((cent->currentState.powerups >> 8) & 0x000F);
|
||||
bouncyness = 0.0667 * (float)((cent->currentState.powerups >> 4) & 0x000F);
|
||||
size = 0.1333 * (float)((cent->currentState.powerups) & 0x000F);
|
||||
|
||||
if (mass == 0) mass = 1;
|
||||
if (size <= 0) size = 1;
|
||||
if (material) material--;
|
||||
|
||||
VectorCopy( cent->currentState.origin, origin );
|
||||
|
||||
sound = cgs.media.breakable_snd[material];
|
||||
trap_S_StartSound( origin, cent->currentState.number, CHAN_BODY, sound );
|
||||
|
||||
for (i = 0; i < mass; i++) {
|
||||
velocity[0] = (crandom() * BREAK_VELOCITY) * tension;
|
||||
velocity[1] = (crandom() * BREAK_VELOCITY) * tension;
|
||||
velocity[2] = ( random() * BREAK_JUMP) * tension;
|
||||
model = cgs.media.breakable_frag[material][(int)(2.0 * random())];
|
||||
CG_LaunchBreakableFrag( origin, velocity, model, bouncyness, size );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.35 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.34 2002/01/14 01:19:23 niceass
|
||||
// No more default 800 gravity on items - NiceAss
|
||||
//
|
||||
|
@ -1502,7 +1505,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
cgs.media.footsteps[ FOOTSTEP_GRASS ][rand()&3] );
|
||||
}
|
||||
break;
|
||||
/*
|
||||
|
||||
case EV_FOOTSTEP_GRAVEL:
|
||||
DEBUGNAME("EV_FOOTSTEP_GRAVEL");
|
||||
if (cg_footsteps.integer) {
|
||||
|
@ -1510,7 +1513,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
cgs.media.footsteps[ FOOTSTEP_GRAVEL ][rand()&3] );
|
||||
}
|
||||
break;
|
||||
*/
|
||||
|
||||
case EV_FOOTSTEP_WOOD:
|
||||
DEBUGNAME("EV_FOOTSTEP_WOOD");
|
||||
if (cg_footsteps.integer) {
|
||||
|
@ -1525,6 +1528,36 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
cgs.media.footsteps[ FOOTSTEP_CARPET ][rand()&3] );
|
||||
}
|
||||
break;
|
||||
// JBravo: begin new sounds
|
||||
case EV_FOOTSTEP_SNOW:
|
||||
DEBUGNAME("EV_FOOTSTEP_SNOW");
|
||||
if (cg_footsteps.integer) {
|
||||
trap_S_StartSound (NULL, es->number, CHAN_BODY,
|
||||
cgs.media.footsteps[ FOOTSTEP_SNOW ][rand()&3] );
|
||||
}
|
||||
break;
|
||||
case EV_FOOTSTEP_MUD:
|
||||
DEBUGNAME("EV_FOOTSTEP_MUD");
|
||||
if (cg_footsteps.integer) {
|
||||
trap_S_StartSound (NULL, es->number, CHAN_BODY,
|
||||
cgs.media.footsteps[ FOOTSTEP_MUD ][rand()&3] );
|
||||
}
|
||||
break;
|
||||
case EV_FOOTSTEP_WOOD2:
|
||||
DEBUGNAME("EV_FOOTSTEP_WOOD2");
|
||||
if (cg_footsteps.integer) {
|
||||
trap_S_StartSound (NULL, es->number, CHAN_BODY,
|
||||
cgs.media.footsteps[ FOOTSTEP_WOOD2 ][rand()&3] );
|
||||
}
|
||||
break;
|
||||
case EV_FOOTSTEP_HARDMETAL:
|
||||
DEBUGNAME("EV_FOOTSTEP_HARDMETAL");
|
||||
if (cg_footsteps.integer) {
|
||||
trap_S_StartSound (NULL, es->number, CHAN_BODY,
|
||||
cgs.media.footsteps[ FOOTSTEP_HARDMETAL ][rand()&3] );
|
||||
}
|
||||
break;
|
||||
// JBravo: end new sounds
|
||||
case EV_FOOTSTEP_METAL2:
|
||||
DEBUGNAME("EV_FOOTSTEP_METAL2");
|
||||
if (cg_footsteps.integer) {
|
||||
|
@ -2451,6 +2484,13 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
CG_Beam( cent );
|
||||
break;
|
||||
|
||||
// JBravo: adding func_explosive
|
||||
case EV_GIB_GLASS:
|
||||
DEBUGNAME("EV_GIB_GLASS");
|
||||
//trap_S_StartSound( NULL, es->number, CHAN_BODY, cgs.media.gibSound );
|
||||
CG_BreakBreakable( cent, es->eventParm );
|
||||
break;
|
||||
|
||||
default:
|
||||
DEBUGNAME("UNKNOWN");
|
||||
CG_Error( "Unknown event: %i", event );
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.41 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.40 2002/01/14 01:19:23 niceass
|
||||
// No more default 800 gravity on items - NiceAss
|
||||
//
|
||||
|
@ -135,11 +138,17 @@ typedef enum {
|
|||
FOOTSTEP_METAL,
|
||||
FOOTSTEP_SPLASH,
|
||||
// Elder: new surface sounds
|
||||
FOOTSTEP_GRASS,
|
||||
FOOTSTEP_GRAVEL,
|
||||
FOOTSTEP_WOOD,
|
||||
FOOTSTEP_CARPET,
|
||||
FOOTSTEP_METAL2,
|
||||
//FOOTSTEP_GRAVEL,
|
||||
FOOTSTEP_GLASS,
|
||||
FOOTSTEP_GRASS,
|
||||
// JBravo: new surface sounds
|
||||
FOOTSTEP_SNOW,
|
||||
FOOTSTEP_MUD,
|
||||
FOOTSTEP_WOOD2,
|
||||
FOOTSTEP_HARDMETAL,
|
||||
|
||||
FOOTSTEP_TOTAL
|
||||
} footstep_t;
|
||||
|
@ -330,6 +339,8 @@ typedef struct localEntity_s {
|
|||
leBounceSoundType_t leBounceSoundType;
|
||||
|
||||
refEntity_t refEntity;
|
||||
// JBravo: for func_explosive
|
||||
float size;
|
||||
} localEntity_t;
|
||||
|
||||
//======================================================================
|
||||
|
@ -846,6 +857,10 @@ typedef struct {
|
|||
qhandle_t akimbo1stModel;
|
||||
qhandle_t akimboHandModel;
|
||||
|
||||
// JBravo: func_brakable stuff
|
||||
qhandle_t breakable_frag[15][3];
|
||||
sfxHandle_t breakable_snd[15];
|
||||
|
||||
qhandle_t smoke2;
|
||||
|
||||
qhandle_t machinegunBrassModel;
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.36 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.35 2002/01/11 20:20:57 jbravo
|
||||
// Adding TP to main branch
|
||||
//
|
||||
|
@ -793,7 +796,7 @@ static void CG_RegisterSounds( void ) {
|
|||
cgs.media.footsteps[FOOTSTEP_METAL][i] = trap_S_RegisterSound (name, qfalse);
|
||||
|
||||
//Elder: new footsteps
|
||||
Com_sprintf (name, sizeof(name), "sound/player/footsteps/gravel%i.wav", i+1);
|
||||
Com_sprintf (name, sizeof(name), "sound/player/footsteps/grass%i.wav", i+1);
|
||||
cgs.media.footsteps[FOOTSTEP_GRASS][i] = trap_S_RegisterSound (name, qfalse);
|
||||
|
||||
Com_sprintf (name, sizeof(name), "sound/player/footsteps/wood%i.wav", i+1);
|
||||
|
@ -805,8 +808,20 @@ static void CG_RegisterSounds( void ) {
|
|||
Com_sprintf (name, sizeof(name), "sound/player/footsteps/metal%i.wav", i+1);
|
||||
cgs.media.footsteps[FOOTSTEP_METAL2][i] = trap_S_RegisterSound (name, qfalse);
|
||||
|
||||
//Com_sprintf (name, sizeof(name), "sound/player/footsteps/gravel%i.wav", i+1);
|
||||
//cgs.media.footsteps[FOOTSTEP_GRAVEL][i] = trap_S_RegisterSound (name, qfalse);
|
||||
Com_sprintf (name, sizeof(name), "sound/player/footsteps/gravel%i.wav", i+1);
|
||||
cgs.media.footsteps[FOOTSTEP_GRAVEL][i] = trap_S_RegisterSound (name, qfalse);
|
||||
|
||||
Com_sprintf (name, sizeof(name), "sound/player/footsteps/snow%i.wav", i+1);
|
||||
cgs.media.footsteps[FOOTSTEP_SNOW][i] = trap_S_RegisterSound (name, qfalse);
|
||||
|
||||
Com_sprintf (name, sizeof(name), "sound/player/footsteps/mud%i.wav", i+1);
|
||||
cgs.media.footsteps[FOOTSTEP_MUD][i] = trap_S_RegisterSound (name, qfalse);
|
||||
|
||||
Com_sprintf (name, sizeof(name), "sound/player/footsteps/hollowwood%i.wav", i+1);
|
||||
cgs.media.footsteps[FOOTSTEP_WOOD2][i] = trap_S_RegisterSound (name, qfalse);
|
||||
|
||||
Com_sprintf (name, sizeof(name), "sound/player/footsteps/hardmetal%i.wav", i+1);
|
||||
cgs.media.footsteps[FOOTSTEP_HARDMETAL][i] = trap_S_RegisterSound (name, qfalse);
|
||||
}
|
||||
|
||||
// only register the items that the server says we need
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.28 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.27 2002/01/14 07:31:33 jbravo
|
||||
// Added a small workaround for the HoldableItem not found crash during
|
||||
// mapchanges.
|
||||
|
@ -1283,10 +1286,16 @@ char *eventnames[] = {
|
|||
|
||||
"EV_FOOTSTEP",
|
||||
"EV_FOOTSTEP_METAL",
|
||||
"EV_FOOTSTEP_GRASS", // Elder: grass stuff
|
||||
"EV_FOOTSTEP_GRAVEL",
|
||||
"EV_FOOTSTEP_WOOD",
|
||||
"EV_FOOTSTEP_CARPET",
|
||||
"EV_FOOTSTEP_METAL2",
|
||||
"EV_FOOTSTEP_GLASS",
|
||||
"EV_FOOTSTEP_GRASS",
|
||||
"EV_FOOTSTEP_SNOW", // JBravo: adding new sounds
|
||||
"EV_FOOTSTEP_MUD",
|
||||
"EV_FOOTSTEP_WOOD2",
|
||||
"EV_FOOTSTEP_HARDMETAL",
|
||||
"EV_FOOTSPLASH",
|
||||
"EV_FOOTWADE",
|
||||
"EV_SWIM",
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.55 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.54 2002/01/11 20:20:58 jbravo
|
||||
// Adding TP to main branch
|
||||
//
|
||||
|
@ -1221,9 +1224,10 @@ static int PM_FootstepForSurface( void ) {
|
|||
return EV_FOOTSTEP_GRASS;
|
||||
}
|
||||
|
||||
//if ( pml.groundTrace.surfaceFlags & SURF_GRAVEL ) {
|
||||
//return EV_FOOTSTEP_GRAVEL;
|
||||
//}
|
||||
// JBravo: re-enables Gravel.
|
||||
if ( pml.groundTrace.surfaceFlags & SURF_GRAVEL ) {
|
||||
return EV_FOOTSTEP_GRAVEL;
|
||||
}
|
||||
|
||||
if ( pml.groundTrace.surfaceFlags & SURF_WOOD ) {
|
||||
return EV_FOOTSTEP_WOOD;
|
||||
|
@ -1237,6 +1241,24 @@ static int PM_FootstepForSurface( void ) {
|
|||
return EV_FOOTSTEP_METAL2;
|
||||
}
|
||||
|
||||
// JBravo: Begin adding new sounds
|
||||
if ( pml.groundTrace.surfaceFlags & SURF_SNOW ) {
|
||||
return EV_FOOTSTEP_SNOW;
|
||||
}
|
||||
|
||||
if ( pml.groundTrace.surfaceFlags & SURF_MUD ) {
|
||||
return EV_FOOTSTEP_MUD;
|
||||
}
|
||||
|
||||
if ( pml.groundTrace.surfaceFlags & SURF_WOOD2 ) {
|
||||
return EV_FOOTSTEP_WOOD2;
|
||||
}
|
||||
|
||||
if ( pml.groundTrace.surfaceFlags & SURF_HARDMETAL ) {
|
||||
return EV_FOOTSTEP_HARDMETAL;
|
||||
}
|
||||
// JBravo: end adding new sounds
|
||||
|
||||
return EV_FOOTSTEP;
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.44 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.43 2002/01/11 20:20:58 jbravo
|
||||
// Adding TP to main branch
|
||||
//
|
||||
|
@ -818,11 +821,18 @@ typedef enum {
|
|||
EV_FOOTSTEP_WOOD,
|
||||
EV_FOOTSTEP_CARPET,
|
||||
EV_FOOTSTEP_METAL2,
|
||||
//EV_FOOTSTEP_GRAVEL,
|
||||
EV_FOOTSTEP_GRAVEL,
|
||||
EV_FOOTSTEP_SNOW, // JBravo: new surfaces
|
||||
EV_FOOTSTEP_MUD,
|
||||
EV_FOOTSTEP_WOOD2,
|
||||
EV_FOOTSTEP_HARDMETAL,
|
||||
EV_FOOTSPLASH,
|
||||
EV_FOOTWADE,
|
||||
EV_SWIM,
|
||||
|
||||
// JBravo: for func_explosive
|
||||
EV_GIB_GLASS,
|
||||
|
||||
EV_STEP_4,
|
||||
EV_STEP_8,
|
||||
EV_STEP_12,
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.36 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.35 2002/01/14 01:20:45 niceass
|
||||
// No more default 800 gravity on items
|
||||
// Thrown knife+Glass fix - NiceAss
|
||||
|
@ -126,6 +129,13 @@ struct gentity_s {
|
|||
|
||||
qboolean neverFree; // if true, FreeEntity will only unlink
|
||||
// bodyque uses this
|
||||
// JBravo: adding func_explosive
|
||||
int damage_radius;
|
||||
int mass;
|
||||
int tension;
|
||||
int bounce;
|
||||
int material;
|
||||
int size;
|
||||
|
||||
int flags; // FL_* variables
|
||||
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.20 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.19 2002/01/14 01:20:44 niceass
|
||||
// No more default 800 gravity on items
|
||||
// Thrown knife+Glass fix - NiceAss
|
||||
|
@ -2242,3 +2245,71 @@ void SP_func_pendulum(gentity_t *ent) {
|
|||
ent->s.apos.trType = TR_SINE;
|
||||
ent->s.apos.trDelta[2] = speed;
|
||||
}
|
||||
|
||||
// JBravo: adding for func_explosive
|
||||
void func_explosive_explode( gentity_t *self , vec3_t pos ) {
|
||||
int eParam;
|
||||
// GibEntity( self, 0 );
|
||||
eParam = self->mass;
|
||||
G_AddEvent(self, EV_GIB_GLASS, eParam);
|
||||
|
||||
// G_Printf("Explode_explode\n" );
|
||||
self->takedamage = qfalse;
|
||||
self->s.eType = ET_INVISIBLE;
|
||||
self->r.contents = 0;
|
||||
self->s.solid = 0;
|
||||
}
|
||||
|
||||
// JBravo: adding for func_explosive
|
||||
void func_explosive_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int meansOfDeath )
|
||||
{
|
||||
G_RadiusDamage(self->s.origin,attacker,self->damage,self->damage_radius,self,0);
|
||||
|
||||
// G_Printf("%s: explode @ %s\n", self->classname , vtos(self->s.origin) );
|
||||
G_ExplodeMissile(self);
|
||||
// radius damage
|
||||
func_explosive_explode( self , self->s.origin );
|
||||
}
|
||||
|
||||
// JBravo: adding for func_explosive
|
||||
void SP_func_explosive (gentity_t *ent)
|
||||
{
|
||||
G_SpawnInt( "material", "1", &ent->material );
|
||||
G_SpawnInt( "tension", "100", &ent->tension );
|
||||
G_SpawnInt( "bounce", "5", &ent->bounce );
|
||||
G_SpawnInt( "health", "100", &ent->health );
|
||||
G_SpawnInt( "size", "10", &ent->size );
|
||||
G_SpawnInt( "mass", "100", &ent->mass );
|
||||
|
||||
ent->takedamage = qtrue;
|
||||
ent->die = func_explosive_die;
|
||||
if (!ent->health) {
|
||||
ent->health = 2;
|
||||
}
|
||||
|
||||
if (!ent->damage) {
|
||||
ent->damage = 2;
|
||||
}
|
||||
VectorCopy( ent->s.origin, ent->pos1 );
|
||||
|
||||
trap_SetBrushModel( ent, ent->model );
|
||||
InitMover( ent );
|
||||
|
||||
// VectorSubtract( ent->r.maxs, ent->r.mins, ent->s.origin );
|
||||
VectorCopy( ent->s.pos.trBase, ent->s.origin );
|
||||
/* VectorCopy( ent->s.origin, ent->s.pos.trBase );
|
||||
VectorCopy( ent->s.pos.trBase, ent->r.currentOrigin );
|
||||
VectorCopy( ent->s.apos.trBase, ent->r.currentAngles );
|
||||
VectorCopy( ent->s.origin, ent->r.currentOrigin ); */
|
||||
ent->s.origin[0] = ent->r.mins[0] + (0.5 * (ent->r.maxs[0] - ent->r.mins[0]));
|
||||
ent->s.origin[1] = ent->r.mins[1] + (0.5 * (ent->r.maxs[1] - ent->r.mins[1]));
|
||||
ent->s.origin[2] = ent->r.mins[2] + (0.5 * (ent->r.maxs[2] - ent->r.mins[2]));
|
||||
|
||||
ent->s.powerups = ((ent->material << 12) & 0xF000) +
|
||||
((ent->tension << 8) & 0x0F00) +
|
||||
((ent->bounce << 4) & 0x00F0) +
|
||||
((ent->size) & 0x000F);
|
||||
|
||||
trap_LinkEntity( ent );
|
||||
G_Printf("at : %s %s\n", vtos(ent->r.currentAngles), vtos(ent->r.currentOrigin ) );
|
||||
}
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.9 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.8 2002/01/11 20:20:58 jbravo
|
||||
// Adding TP to main branch
|
||||
//
|
||||
|
@ -194,6 +197,8 @@ void SP_team_redobelisk( gentity_t *ent );
|
|||
void SP_team_neutralobelisk( gentity_t *ent );
|
||||
#endif
|
||||
void SP_item_botroam( gentity_t *ent ) {};
|
||||
// JBravo: adding explosive
|
||||
void SP_func_explosive (gentity_t *self);
|
||||
|
||||
spawn_t spawns[] = {
|
||||
// info entities don't do anything at all, but provide positional
|
||||
|
@ -269,6 +274,7 @@ spawn_t spawns[] = {
|
|||
{"team_blueobelisk", SP_team_blueobelisk},
|
||||
{"team_neutralobelisk", SP_team_neutralobelisk},
|
||||
#endif
|
||||
{"func_explosive", SP_func_explosive}, // JBravo: for explosive.
|
||||
{"item_botroam", SP_item_botroam},
|
||||
|
||||
{0, 0}
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.10 2002/01/24 14:20:53 jbravo
|
||||
// Adding func_explosive and a few new surfaceparms
|
||||
//
|
||||
// Revision 1.9 2002/01/11 19:48:30 jbravo
|
||||
// Formatted the source in non DOS format.
|
||||
//
|
||||
|
@ -74,9 +77,14 @@
|
|||
#define SURF_NODLIGHT 0x20000 // don't dlight even if solid (solid lava, skies)
|
||||
#define SURF_DUST 0x40000 // leave a dust trail when walking on this surface
|
||||
//Elder: new surfaces
|
||||
#define SURF_GRASS 0x80000
|
||||
#define SURF_GRAVEL 0x80000
|
||||
#define SURF_WOOD 0x100000
|
||||
#define SURF_CARPET 0x200000
|
||||
#define SURF_METAL2 0x400000
|
||||
#define SURF_GLASS 0x800000 // not really a surface; more for marks
|
||||
//#define SURF_GRAVEL 0x1000000
|
||||
#define SURF_GLASS 0x800000
|
||||
#define SURF_GRASS 0x1000000
|
||||
// JBravo: new sounds
|
||||
#define SURF_SNOW 0x2000000
|
||||
#define SURF_MUD 0x4000000
|
||||
#define SURF_WOOD2 0x8000000
|
||||
#define SURF_HARDMETAL 0x10000000
|
||||
|
|
Loading…
Reference in a new issue