mirror of
https://github.com/Q3Rally-Team/q3rally.git
synced 2024-11-22 03:51:23 +00:00
Added md4 support. Increased polylimits for md3 models. changed many entities to entityplus style. Thanks to eraser for his great work.
This commit is contained in:
parent
4a671c5c76
commit
c76cec2847
16 changed files with 386 additions and 168 deletions
70
baseq3r/entityplus-backpack & debris models.txt
Normal file
70
baseq3r/entityplus-backpack & debris models.txt
Normal file
|
@ -0,0 +1,70 @@
|
|||
======================================================================
|
||||
|
||||
Entity Plus Mod for Quake 3 Arena
|
||||
|
||||
Backpack & Debris Models
|
||||
By Victor "DaEngineer" Karp
|
||||
|
||||
June 5, 2011
|
||||
http://www.victorkarp.wordpress.com
|
||||
|
||||
======================================================================
|
||||
|
||||
|
||||
A backpack model and various debris models for Eraser's Entity Plus mod for
|
||||
Quake 3 Arena with accompanying textures. Backpack texture based on photos
|
||||
made by Obsidian.
|
||||
|
||||
concrete_b1.md3
|
||||
concrete_b1_large.md3
|
||||
concrete_b2.md3
|
||||
concrete_b2_large.md3
|
||||
concrete_b3.md3
|
||||
concrete_b3_large.md3
|
||||
concrete_b4.md3
|
||||
concrete_b5.md3
|
||||
concrete_b6.md3
|
||||
concrete_b7.md3
|
||||
concrete_b8.md3
|
||||
concrete_d1.md3
|
||||
concrete_d1_large.md3
|
||||
concrete_d2.md3
|
||||
concrete_d2_large.md3
|
||||
concrete_d3.md3
|
||||
concrete_d3_large.md3
|
||||
concrete_d4.md3
|
||||
concrete_d5.md3
|
||||
concrete_d6.md3
|
||||
concrete_d7.md3
|
||||
concrete_d8.md3
|
||||
|
||||
glass_1.md3
|
||||
glass_1_large.md3
|
||||
glass_2.md3
|
||||
glass_2_large.md3
|
||||
glass_3.md3
|
||||
glass_3_large.md3
|
||||
glass_4.md3
|
||||
glass_4_large.md3
|
||||
glass_5.md3
|
||||
glass_5_large.md3
|
||||
|
||||
wood_b1.md3
|
||||
wood_b2.md3
|
||||
wood_b3.md3
|
||||
wood_b4.md3
|
||||
wood_b5.md3
|
||||
|
||||
|
||||
======================================================================
|
||||
This work is licensed under a Creative Commons Attribution-
|
||||
NonCommercial-ShareAlike 3.0 Unported License.
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/3.0/
|
||||
|
||||
Additionally, this work may only be distributed electronically and
|
||||
must include this .txt file.
|
||||
|
||||
Don't steal and claim as your own, is all I'm saying. Please contact
|
||||
me if creating derivative works or if you have questions.
|
||||
======================================================================
|
|
@ -3346,6 +3346,8 @@ void CG_DrawActive( stereoFrame_t stereoView ) {
|
|||
|
||||
if(stereoView != STEREO_CENTER)
|
||||
CG_DrawCrosshair3D();
|
||||
// apply earthquake effect
|
||||
CG_Earthquake();
|
||||
|
||||
// draw 3D view
|
||||
trap_R_RenderScene( &cg.refdef );
|
||||
|
|
|
@ -1042,6 +1042,56 @@ void CG_ShowDebris( vec3_t srcOrigin, int count, int evType ) {
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
===================
|
||||
CG_StartEarthquake
|
||||
|
||||
Starts an earthquake effect
|
||||
===================
|
||||
*/
|
||||
int flagEarthquake = qfalse;
|
||||
int earthquakeIntensity = 0;
|
||||
int earthquakeStoptime = 0;
|
||||
|
||||
void CG_StartEarthquake(int intensity, int duration)
|
||||
{
|
||||
flagEarthquake = qtrue;
|
||||
if ( intensity < earthquakeIntensity )
|
||||
return;
|
||||
|
||||
earthquakeIntensity = intensity;
|
||||
earthquakeStoptime = cg.time + duration;
|
||||
}
|
||||
|
||||
void CG_Earthquake()
|
||||
{
|
||||
static float terremotoX, terremotoY, terremotoZ;
|
||||
static terremotoTime = 0;
|
||||
float realInt;
|
||||
|
||||
if ( !flagEarthquake )
|
||||
return;
|
||||
|
||||
if ( earthquakeStoptime < cg.time )
|
||||
{
|
||||
flagEarthquake = qfalse;
|
||||
earthquakeIntensity = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if ( terremotoTime < cg.time )
|
||||
{
|
||||
terremotoTime = cg.time += 50;
|
||||
realInt = ((float)earthquakeIntensity + 1.0) / 2.0;
|
||||
terremotoX = random() * realInt - realInt / 2;
|
||||
terremotoY = random() * realInt - realInt / 2;
|
||||
terremotoZ = random() * realInt - realInt / 2;
|
||||
}
|
||||
cg.refdefViewAngles[0] += terremotoX;
|
||||
cg.refdefViewAngles[1] += terremotoY;
|
||||
cg.refdefViewAngles[2] += terremotoZ;
|
||||
AnglesToAxis( cg.refdefViewAngles, cg.refdef.viewaxis );
|
||||
}
|
||||
|
||||
/*
|
||||
===================
|
||||
|
|
|
@ -1396,6 +1396,11 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
CG_ShowDebris( cent->lerpOrigin, es->eventParm, EV_EMIT_DEBRIS_STONE );
|
||||
break;
|
||||
|
||||
case EV_EARTHQUAKE:
|
||||
DEBUGNAME("EV_EARTHQUAKE");
|
||||
CG_StartEarthquake((es->eventParm & 0x0F) + 1, ((1 + ((es->eventParm & 0xF0) >> 4)) * 2000) + 1000);
|
||||
break;
|
||||
|
||||
case EV_EXPLOSION:
|
||||
DEBUGNAME("EV_EXPLOSION");
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#define MAX_VERTS_ON_POLY 10
|
||||
// Q3Rally Code Start
|
||||
//#define MAX_MARK_POLYS 256
|
||||
#define MAX_MARK_POLYS 1024
|
||||
#define MAX_MARK_POLYS 2048
|
||||
// Q3Rally Code END
|
||||
|
||||
#define STAT_MINUS 10 // num frame for '-' stats digit
|
||||
|
@ -114,8 +114,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
extern vec4_t bgColor; // Q3Rally Code - UPDATE change variable name?
|
||||
// Q3Rally Code END
|
||||
|
||||
#define DEFAULT_REDTEAM_NAME "Red Drivers"
|
||||
#define DEFAULT_BLUETEAM_NAME "Blues Brothers"
|
||||
#define DEFAULT_REDTEAM_NAME "Red Devils"
|
||||
#define DEFAULT_BLUETEAM_NAME "Blue Angels"
|
||||
|
||||
typedef enum {
|
||||
FOOTSTEP_NORMAL,
|
||||
|
|
|
@ -1502,6 +1502,15 @@ void BG_EvaluateTrajectory( const trajectory_t *tr, int atTime, vec3_t result )
|
|||
VectorMA( tr->trBase, deltaTime, tr->trDelta, result );
|
||||
result[2] -= 0.5 * DEFAULT_GRAVITY * deltaTime * deltaTime; // FIXME: local gravity...
|
||||
break;
|
||||
case TR_ROTATING:
|
||||
if ( tr->trTime > 0 )
|
||||
deltaTime = tr->trTime * 0.001; // milliseconds to seconds
|
||||
else if ( tr->trTime < 0 )
|
||||
deltaTime = ( atTime + tr->trTime ) * 0.001;
|
||||
else
|
||||
deltaTime = ( atTime - tr->trTime ) * 0.001;
|
||||
VectorMA( tr->trBase, deltaTime, tr->trDelta, result );
|
||||
break;
|
||||
default:
|
||||
Com_Error( ERR_DROP, "BG_EvaluateTrajectory: unknown trType: %i", tr->trTime );
|
||||
break;
|
||||
|
@ -1524,6 +1533,7 @@ void BG_EvaluateTrajectoryDelta( const trajectory_t *tr, int atTime, vec3_t resu
|
|||
case TR_INTERPOLATE:
|
||||
VectorClear( result );
|
||||
break;
|
||||
case TR_ROTATING:
|
||||
case TR_LINEAR:
|
||||
VectorCopy( tr->trDelta, result );
|
||||
break;
|
||||
|
|
|
@ -31,7 +31,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
// second version that must match between game and cgame
|
||||
|
||||
// STONELANCE
|
||||
#define GAME_VERSION "Q3Rally v0.1 Pre-Alpha"
|
||||
#define GAME_VERSION "Q3Rally v0.1.1 Pre-Alpha"
|
||||
// END
|
||||
|
||||
#define DEFAULT_GRAVITY 800
|
||||
|
@ -626,6 +626,7 @@ typedef enum {
|
|||
EV_EMIT_DEBRIS_FLESH, // emit gibs
|
||||
EV_EMIT_DEBRIS_GLASS, // emite shards of glass
|
||||
EV_EMIT_DEBRIS_STONE,
|
||||
EV_EARTHQUAKE,
|
||||
|
||||
EV_EXPLOSION,
|
||||
EV_PARTICLES_GRAVITY,
|
||||
|
|
|
@ -1196,15 +1196,23 @@ NOMONSTER monsters will not trigger this door
|
|||
"color" constantLight color
|
||||
"light" constantLight radius
|
||||
"health" if set, the door must be shot open
|
||||
"startsound" if set, overrides the sound to play when the door starts moving
|
||||
"endsound" if set, overrides the sound to play when the door has stopped moving
|
||||
*/
|
||||
void SP_func_door (gentity_t *ent) {
|
||||
char *startsound;
|
||||
char *endsound;
|
||||
vec3_t abs_movedir;
|
||||
float distance;
|
||||
vec3_t size;
|
||||
float lip;
|
||||
|
||||
ent->sound1to2 = ent->sound2to1 = G_SoundIndex("sound/movers/doors/dr1_strt.wav");
|
||||
ent->soundPos1 = ent->soundPos2 = G_SoundIndex("sound/movers/doors/dr1_end.wav");
|
||||
startsound = endsound = NULL;
|
||||
G_SpawnString("startsound", "sound/movers/doors/dr1_strt.wav", &startsound);
|
||||
G_SpawnString("endsound", "sound/movers/doors/dr1_end.wav", &endsound);
|
||||
|
||||
ent->sound1to2 = ent->sound2to1 = G_SoundIndex(startsound);
|
||||
ent->soundPos1 = ent->soundPos2 = G_SoundIndex(endsound);
|
||||
|
||||
ent->blocked = Blocked_Door;
|
||||
|
||||
|
@ -1549,16 +1557,20 @@ When a button is touched, it moves some distance in the direction of it's angle,
|
|||
"wait" override the default 1 second wait (-1 = never return)
|
||||
"lip" override the default 4 pixel lip remaining at end of move
|
||||
"health" if set, the button must be killed instead of touched
|
||||
"sound" if set, overrides the sound played when the button is pressed
|
||||
"color" constantLight color
|
||||
"light" constantLight radius
|
||||
*/
|
||||
void SP_func_button( gentity_t *ent ) {
|
||||
char *sound;
|
||||
vec3_t abs_movedir;
|
||||
float distance;
|
||||
vec3_t size;
|
||||
float lip;
|
||||
|
||||
ent->sound1to2 = G_SoundIndex("sound/movers/switches/butn2.wav");
|
||||
sound = NULL;
|
||||
G_SpawnString("sound", "sound/movers/switches/butn2.wav", &sound);
|
||||
ent->sound1to2 = G_SoundIndex(sound);
|
||||
|
||||
if ( !ent->speed ) {
|
||||
ent->speed = 40;
|
||||
|
@ -1693,8 +1705,10 @@ void Think_SetupTrainTargets( gentity_t *ent ) {
|
|||
|
||||
ent->nextTrain = G_Find( NULL, FOFS(targetname), ent->target );
|
||||
if ( !ent->nextTrain ) {
|
||||
G_Printf( "func_train at %s with an unfound target\n",
|
||||
vtos(ent->r.absmin) );
|
||||
if ( !strcmp( ent->classname, "func_train" ) )
|
||||
G_Printf( "func_train at %s with an unfound target\n", vtos(ent->r.absmin) );
|
||||
else //path_corner
|
||||
G_Printf( "Train corner at %s without a target\n", ent->s.origin );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1723,10 +1737,12 @@ void Think_SetupTrainTargets( gentity_t *ent ) {
|
|||
}
|
||||
} while ( strcmp( next->classname, "path_corner" ) );
|
||||
|
||||
//G_Printf("%s -> %s\n", path->targetname, next->targetname);
|
||||
path->nextTrain = next;
|
||||
}
|
||||
|
||||
// start the train moving from the first corner
|
||||
if ( !strcmp( ent->classname, "func_train" ) )
|
||||
Reached_Train( ent );
|
||||
}
|
||||
|
||||
|
@ -1761,6 +1777,17 @@ The train spawns at the first target it is pointing at.
|
|||
"color" constantLight color
|
||||
"light" constantLight radius
|
||||
*/
|
||||
void Use_Train (gentity_t *ent, gentity_t *other, gentity_t *activator) {
|
||||
if (ent->s.pos.trType == TR_STATIONARY) {
|
||||
ent->s.pos.trType = TR_LINEAR_STOP;
|
||||
Think_BeginMoving( ent );
|
||||
}
|
||||
//else {
|
||||
// ent->nextthink = 0;
|
||||
// ent->s.pos.trType = TR_STATIONARY;
|
||||
//}
|
||||
}
|
||||
|
||||
void SP_func_train (gentity_t *self) {
|
||||
VectorClear (self->s.angles);
|
||||
|
||||
|
@ -1791,6 +1818,7 @@ void SP_func_train (gentity_t *self) {
|
|||
// a chance to spawn
|
||||
self->nextthink = level.time + FRAMETIME;
|
||||
self->think = Think_SetupTrainTargets;
|
||||
self->use = Use_Train;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1885,10 +1913,12 @@ ROTATING
|
|||
*/
|
||||
|
||||
|
||||
/*QUAKED func_rotating (0 .5 .8) ? START_ON - X_AXIS Y_AXIS
|
||||
/*QUAKED func_rotating (0 .5 .8) ? - - X_AXIS Y_AXIS Z_AXIS START_OFF
|
||||
You need to have an origin brush as part of this entity. The center of that brush will be
|
||||
the point around which it is rotated. It will rotate around the Z axis by default. You can
|
||||
check either the X_AXIS or Y_AXIS box to change that.
|
||||
the point around which it is rotated. You can check the X_AXIS, Y_AXIS or Z_AXIS boxes to
|
||||
determine around which axes the brush will be rotated. If no boxes are checked the brush will
|
||||
rotate around the Z axis by default. If the START_OFF spawnflag is set, the func_rotating
|
||||
will initially not rotate.
|
||||
|
||||
"model2" .md3 model to also draw
|
||||
"speed" determines how fast it moves; default value is 100.
|
||||
|
@ -1896,18 +1926,39 @@ check either the X_AXIS or Y_AXIS box to change that.
|
|||
"color" constantLight color
|
||||
"light" constantLight radius
|
||||
*/
|
||||
void Use_Rotating (gentity_t *ent, gentity_t *other, gentity_t *activator) {
|
||||
|
||||
if ( ent->s.apos.trTime > 0 )
|
||||
ent->s.apos.trTime = ent->s.apos.trTime - level.time; //makes it go
|
||||
else {
|
||||
if ( level.time == 0 )
|
||||
ent->s.apos.trTime = 1;
|
||||
else
|
||||
ent->s.apos.trTime = level.time + ent->s.apos.trTime; //makes it stop
|
||||
}
|
||||
}
|
||||
|
||||
void SP_func_rotating (gentity_t *ent) {
|
||||
qboolean axisset = qfalse;
|
||||
|
||||
if ( !ent->speed ) {
|
||||
ent->speed = 100;
|
||||
}
|
||||
|
||||
// set the axis of rotation
|
||||
ent->s.apos.trType = TR_LINEAR;
|
||||
//ent->s.apos.trType = TR_LINEAR;
|
||||
ent->s.apos.trType = TR_ROTATING;
|
||||
if ( ent->spawnflags & 4 ) {
|
||||
ent->s.apos.trDelta[2] = ent->speed;
|
||||
} else if ( ent->spawnflags & 8 ) {
|
||||
axisset = qtrue;
|
||||
}
|
||||
|
||||
if ( ent->spawnflags & 8 ) {
|
||||
ent->s.apos.trDelta[0] = ent->speed;
|
||||
} else {
|
||||
axisset = qtrue;
|
||||
}
|
||||
|
||||
if ( ent->spawnflags & 16 || !axisset ) {
|
||||
ent->s.apos.trDelta[1] = ent->speed;
|
||||
}
|
||||
|
||||
|
@ -1923,6 +1974,12 @@ void SP_func_rotating (gentity_t *ent) {
|
|||
VectorCopy( ent->s.apos.trBase, ent->r.currentAngles );
|
||||
|
||||
trap_LinkEntity( ent );
|
||||
|
||||
ent->use = Use_Rotating;
|
||||
|
||||
// if START_OFF is set, disable the func_rotating from the start
|
||||
if ( ent->spawnflags & 32 )
|
||||
Use_Rotating( ent, NULL, NULL );
|
||||
}
|
||||
|
||||
|
||||
|
@ -1935,8 +1992,8 @@ BOBBING
|
|||
*/
|
||||
|
||||
|
||||
/*QUAKED func_bobbing (0 .5 .8) ? X_AXIS Y_AXIS
|
||||
Normally bobs on the Z axis
|
||||
/*QUAKED func_bobbing (0 .5 .8) ? X_AXIS Y_AXIS Z_AXIS
|
||||
Normally bobs on only the Z axis
|
||||
"model2" .md3 model to also draw
|
||||
"height" amplitude of bob (32 default)
|
||||
"speed" seconds to complete a bob cycle (4 default)
|
||||
|
@ -1948,6 +2005,7 @@ Normally bobs on the Z axis
|
|||
void SP_func_bobbing (gentity_t *ent) {
|
||||
float height;
|
||||
float phase;
|
||||
qboolean axisset = qfalse;
|
||||
|
||||
G_SpawnFloat( "speed", "4", &ent->speed );
|
||||
G_SpawnFloat( "height", "32", &height );
|
||||
|
@ -1967,9 +2025,15 @@ void SP_func_bobbing (gentity_t *ent) {
|
|||
// set the axis of bobbing
|
||||
if ( ent->spawnflags & 1 ) {
|
||||
ent->s.pos.trDelta[0] = height;
|
||||
} else if ( ent->spawnflags & 2 ) {
|
||||
axisset = qtrue;
|
||||
}
|
||||
|
||||
if ( ent->spawnflags & 2 ) {
|
||||
ent->s.pos.trDelta[1] = height;
|
||||
} else {
|
||||
axisset = qtrue;
|
||||
}
|
||||
|
||||
if ( ( ent->spawnflags & 4 ) || !axisset ) {
|
||||
ent->s.pos.trDelta[2] = height;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -175,6 +175,7 @@ void SP_target_kill (gentity_t *ent);
|
|||
void SP_target_position (gentity_t *ent);
|
||||
void SP_target_location (gentity_t *ent);
|
||||
void SP_target_push (gentity_t *ent);
|
||||
void SP_target_earthquake (gentity_t *ent);
|
||||
|
||||
void SP_light (gentity_t *self);
|
||||
void SP_info_null (gentity_t *self);
|
||||
|
@ -273,6 +274,7 @@ spawn_t spawns[] = {
|
|||
{"target_position", SP_target_position},
|
||||
{"target_location", SP_target_location},
|
||||
{"target_push", SP_target_push},
|
||||
{"target_earthquake", SP_target_earthquake},
|
||||
|
||||
{"light", SP_light},
|
||||
{"path_corner", SP_path_corner},
|
||||
|
|
|
@ -466,3 +466,40 @@ void SP_target_location( gentity_t *self ){
|
|||
G_SetOrigin( self, self->s.origin );
|
||||
}
|
||||
|
||||
//==========================================================
|
||||
|
||||
/*QUAKED target_earthquake (.5 .5 .5) (-8 -8 -8) (8 8 8)
|
||||
starts earthquake
|
||||
"length" - length in seconds (2-32, in steps of 2)
|
||||
"intensity" - strength of earthquake (1-16)
|
||||
*/
|
||||
|
||||
void target_earthquake_use (gentity_t *self, gentity_t *other, gentity_t *activator) {
|
||||
G_AddEvent(activator, EV_EARTHQUAKE, self->s.generic1);
|
||||
}
|
||||
|
||||
void SP_target_earthquake (gentity_t *self) {
|
||||
int param;
|
||||
float length; // length in seconds (2 to 32)
|
||||
float intensity; // intensity (1 to 16)
|
||||
int length_;
|
||||
int intensity_;
|
||||
|
||||
// read parameters
|
||||
G_SpawnFloat( "length", "1000", &length );
|
||||
G_SpawnFloat( "intensity", "50", &intensity );
|
||||
if ( length < 2 ) length = 2;
|
||||
if ( length > 32 ) length = 32;
|
||||
if ( intensity < 1 ) intensity = 1;
|
||||
if ( intensity > 16 ) intensity = 16;
|
||||
|
||||
// adjust parameters
|
||||
length_ = ((int)(length) - 2) / 2;
|
||||
intensity_ = (int)intensity - 1;
|
||||
param = ( intensity_ | (length_ << 4) );
|
||||
self->s.generic1 = param;
|
||||
self->use = target_earthquake_use;
|
||||
self->s.eType = ET_EVENTS;
|
||||
trap_LinkEntity (self);
|
||||
}
|
||||
|
||||
|
|
|
@ -82,6 +82,7 @@ cr_line credits[] = { // edit this as necessary for your credits
|
|||
{ "Per 'Perle' Thormann", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, &color_headertext },
|
||||
{ "Eddy Valdez aka. 'TheBigBuu'", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, &color_headertext },
|
||||
{ "ZTurtleMan from TurtleArena", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, &color_headertext },
|
||||
{ "Eraser from EntityPlus", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, &color_headertext },
|
||||
{ "", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, &color_blue },
|
||||
{ "Mapping:", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW|UI_PULSE, &color_headertext },
|
||||
{ "", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, &color_blue },
|
||||
|
|
|
@ -260,10 +260,8 @@ static void UI_SetupMenu_Init( void ) {
|
|||
memset( &setupMenuInfo, 0, sizeof(setupMenuInfo) );
|
||||
setupMenuInfo.menu.wrapAround = qtrue;
|
||||
setupMenuInfo.menu.fullscreen = qtrue;
|
||||
// STONELANCE
|
||||
setupMenuInfo.menu.transition = UI_SetupMenu_RunTransition;
|
||||
setupMenuInfo.menu.changeMenu = UI_SetupMenu_ChangeMenu;
|
||||
// END
|
||||
|
||||
setupMenuInfo.banner.generic.type = MTYPE_BTEXT;
|
||||
setupMenuInfo.banner.generic.x = 320;
|
||||
|
@ -272,25 +270,6 @@ static void UI_SetupMenu_Init( void ) {
|
|||
setupMenuInfo.banner.color = color_white;
|
||||
setupMenuInfo.banner.style = UI_CENTER;
|
||||
|
||||
// BAGPUSS
|
||||
/*
|
||||
setupMenuInfo.framel.generic.type = MTYPE_BITMAP;
|
||||
setupMenuInfo.framel.generic.name = ART_FRAMEL;
|
||||
setupMenuInfo.framel.generic.flags = QMF_INACTIVE;
|
||||
setupMenuInfo.framel.generic.x = 0;
|
||||
setupMenuInfo.framel.generic.y = 78;
|
||||
setupMenuInfo.framel.width = 256;
|
||||
setupMenuInfo.framel.height = 329;
|
||||
|
||||
setupMenuInfo.framer.generic.type = MTYPE_BITMAP;
|
||||
setupMenuInfo.framer.generic.name = ART_FRAMER;
|
||||
setupMenuInfo.framer.generic.flags = QMF_INACTIVE;
|
||||
setupMenuInfo.framer.generic.x = 376;
|
||||
setupMenuInfo.framer.generic.y = 76;
|
||||
setupMenuInfo.framer.width = 256;
|
||||
setupMenuInfo.framer.height = 334;
|
||||
*/
|
||||
// END
|
||||
|
||||
y = 134;
|
||||
setupMenuInfo.setupplayer.generic.type = MTYPE_PTEXT;
|
||||
|
@ -300,10 +279,7 @@ static void UI_SetupMenu_Init( void ) {
|
|||
setupMenuInfo.setupplayer.generic.id = ID_CUSTOMIZEPLAYER;
|
||||
setupMenuInfo.setupplayer.generic.callback = UI_SetupMenu_Event;
|
||||
setupMenuInfo.setupplayer.string = "PLAYER";
|
||||
// BAGPUSS
|
||||
// setupMenuInfo.setupplayer.color = color_red;
|
||||
setupMenuInfo.setupplayer.color = text_color_normal;
|
||||
// END
|
||||
setupMenuInfo.setupplayer.style = UI_CENTER;
|
||||
|
||||
y += SETUP_MENU_VERTICAL_SPACING;
|
||||
|
@ -314,10 +290,7 @@ static void UI_SetupMenu_Init( void ) {
|
|||
setupMenuInfo.setupcontrols.generic.id = ID_CUSTOMIZECONTROLS;
|
||||
setupMenuInfo.setupcontrols.generic.callback = UI_SetupMenu_Event;
|
||||
setupMenuInfo.setupcontrols.string = "CONTROLS";
|
||||
// BAGPUSS
|
||||
// setupMenuInfo.setupcontrols.color = color_red;
|
||||
setupMenuInfo.setupcontrols.color = text_color_normal;
|
||||
// END
|
||||
setupMenuInfo.setupcontrols.style = UI_CENTER;
|
||||
|
||||
y += SETUP_MENU_VERTICAL_SPACING;
|
||||
|
@ -328,10 +301,7 @@ static void UI_SetupMenu_Init( void ) {
|
|||
setupMenuInfo.setupsystem.generic.id = ID_SYSTEMCONFIG;
|
||||
setupMenuInfo.setupsystem.generic.callback = UI_SetupMenu_Event;
|
||||
setupMenuInfo.setupsystem.string = "SYSTEM";
|
||||
// BAGPUSS
|
||||
// setupMenuInfo.setupsystem.color = color_red;
|
||||
setupMenuInfo.setupsystem.color = text_color_normal;
|
||||
// END
|
||||
setupMenuInfo.setupsystem.style = UI_CENTER;
|
||||
|
||||
y += SETUP_MENU_VERTICAL_SPACING;
|
||||
|
@ -342,13 +312,9 @@ static void UI_SetupMenu_Init( void ) {
|
|||
setupMenuInfo.game.generic.id = ID_GAME;
|
||||
setupMenuInfo.game.generic.callback = UI_SetupMenu_Event;
|
||||
setupMenuInfo.game.string = "GAME OPTIONS";
|
||||
// BAGPUSS
|
||||
// setupMenuInfo.game.color = color_red;
|
||||
setupMenuInfo.game.color = text_color_normal;
|
||||
// END
|
||||
setupMenuInfo.game.style = UI_CENTER;
|
||||
|
||||
// STONELANCE
|
||||
y += SETUP_MENU_VERTICAL_SPACING;
|
||||
setupMenuInfo.q3rOptions.generic.type = MTYPE_PTEXT;
|
||||
setupMenuInfo.q3rOptions.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
|
||||
|
@ -359,21 +325,7 @@ static void UI_SetupMenu_Init( void ) {
|
|||
setupMenuInfo.q3rOptions.string = "Q3R OPTIONS";
|
||||
setupMenuInfo.q3rOptions.color = text_color_normal;
|
||||
setupMenuInfo.q3rOptions.style = UI_CENTER;
|
||||
// END
|
||||
|
||||
y += SETUP_MENU_VERTICAL_SPACING;
|
||||
setupMenuInfo.cdkey.generic.type = MTYPE_PTEXT;
|
||||
setupMenuInfo.cdkey.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
|
||||
setupMenuInfo.cdkey.generic.x = 320;
|
||||
setupMenuInfo.cdkey.generic.y = y;
|
||||
setupMenuInfo.cdkey.generic.id = ID_CDKEY;
|
||||
setupMenuInfo.cdkey.generic.callback = UI_SetupMenu_Event;
|
||||
setupMenuInfo.cdkey.string = "CD Key";
|
||||
// BAGPUSS
|
||||
// setupMenuInfo.cdkey.color = color_red;
|
||||
setupMenuInfo.cdkey.color = text_color_normal;
|
||||
// END
|
||||
setupMenuInfo.cdkey.style = UI_CENTER;
|
||||
|
||||
if( !trap_Cvar_VariableValue( "cl_paused" ) ) {
|
||||
#if 0
|
||||
|
@ -407,27 +359,11 @@ static void UI_SetupMenu_Init( void ) {
|
|||
setupMenuInfo.defaults.generic.y = y;
|
||||
setupMenuInfo.defaults.generic.id = ID_DEFAULTS;
|
||||
setupMenuInfo.defaults.generic.callback = UI_SetupMenu_Event;
|
||||
setupMenuInfo.defaults.string = "DEFAULTS";
|
||||
// BAGPUSS
|
||||
// setupMenuInfo.defaults.color = color_red;
|
||||
setupMenuInfo.defaults.string = "DEFAULT";
|
||||
setupMenuInfo.defaults.color = text_color_normal;
|
||||
// END
|
||||
setupMenuInfo.defaults.style = UI_CENTER;
|
||||
}
|
||||
|
||||
// BAGPUSS
|
||||
/*
|
||||
setupMenuInfo.back.generic.type = MTYPE_BITMAP;
|
||||
setupMenuInfo.back.generic.name = ART_BACK0;
|
||||
setupMenuInfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
|
||||
setupMenuInfo.back.generic.id = ID_BACK;
|
||||
setupMenuInfo.back.generic.callback = UI_SetupMenu_Event;
|
||||
setupMenuInfo.back.generic.x = 0;
|
||||
setupMenuInfo.back.generic.y = 480-64;
|
||||
setupMenuInfo.back.width = 128;
|
||||
setupMenuInfo.back.height = 64;
|
||||
setupMenuInfo.back.focuspic = ART_BACK1;
|
||||
*/
|
||||
|
||||
setupMenuInfo.back.generic.type = MTYPE_PTEXT;
|
||||
setupMenuInfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
|
||||
|
@ -438,33 +374,21 @@ static void UI_SetupMenu_Init( void ) {
|
|||
setupMenuInfo.back.string = "< BACK";
|
||||
setupMenuInfo.back.color = text_color_normal;
|
||||
setupMenuInfo.back.style = UI_LEFT | UI_SMALLFONT;
|
||||
// END
|
||||
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.banner );
|
||||
// BAGPUSS
|
||||
/*
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.framel );
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.framer );
|
||||
*/
|
||||
// END
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupplayer );
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupcontrols );
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupsystem );
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.game );
|
||||
// STONELANCE
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.q3rOptions );
|
||||
// END
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.cdkey );
|
||||
// Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.load );
|
||||
// Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.save );
|
||||
|
||||
if( !trap_Cvar_VariableValue( "cl_paused" ) ) {
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.defaults );
|
||||
}
|
||||
Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.back );
|
||||
|
||||
// STONELANCE
|
||||
uis.transitionIn = uis.realtime;
|
||||
// END
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define PRODUCT_VERSION "0.1 build 25"
|
||||
#define PRODUCT_VERSION "q3rally"
|
||||
#endif
|
||||
|
||||
#define Q3_VERSION PRODUCT_NAME " " PRODUCT_VERSION
|
||||
|
@ -1283,7 +1283,8 @@ typedef enum {
|
|||
TR_LINEAR,
|
||||
TR_LINEAR_STOP,
|
||||
TR_SINE, // value = base + sin( time / duration ) * delta
|
||||
TR_GRAVITY
|
||||
TR_GRAVITY,
|
||||
TR_ROTATING
|
||||
} trType_t;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -82,12 +82,12 @@ typedef struct {
|
|||
|
||||
// limits
|
||||
#define MD3_MAX_LODS 3
|
||||
#define MD3_MAX_TRIANGLES 8192 // per surface
|
||||
#define MD3_MAX_VERTS 4096 // per surface
|
||||
#define MD3_MAX_SHADERS 256 // per surface
|
||||
#define MD3_MAX_FRAMES 1024 // per model
|
||||
#define MD3_MAX_SURFACES 32 // per model
|
||||
#define MD3_MAX_TAGS 16 // per frame
|
||||
#define MD3_MAX_TRIANGLES 16384 // per surface
|
||||
#define MD3_MAX_VERTS 8192 // per surface
|
||||
#define MD3_MAX_SHADERS 512 // per surface
|
||||
#define MD3_MAX_FRAMES 2048 // per model
|
||||
#define MD3_MAX_SURFACES 64 // per model
|
||||
#define MD3_MAX_TAGS 32 // per frame
|
||||
|
||||
// vertex scales
|
||||
#define MD3_XYZ_SCALE (1.0/64)
|
||||
|
@ -283,7 +283,7 @@ typedef struct {
|
|||
|
||||
// If you want to enable support for Raven's .mdr / md4 format, uncomment the next
|
||||
// line.
|
||||
//#define RAVENMD4
|
||||
#define RAVENMD4
|
||||
|
||||
#ifdef RAVENMD4
|
||||
|
||||
|
|
124
q3rallycode.ppr
124
q3rallycode.ppr
|
@ -162,7 +162,7 @@ q3rallycode
|
|||
engine\code\client\snd_openal.c
|
||||
engine\code\client\snd_public.h
|
||||
engine\code\client\snd_wavelet.c
|
||||
+game
|
||||
-game
|
||||
engine\code\game\ai_chat.c
|
||||
engine\code\game\ai_chat.h
|
||||
engine\code\game\ai_cmd.c
|
||||
|
@ -853,50 +853,86 @@ q3rallycode
|
|||
engine\TODO
|
||||
engine\voip-readme.txt
|
||||
[Open project files]
|
||||
0=engine\code\game\g_mover.c
|
||||
1=engine\code\game\g_combat.c
|
||||
2=engine\code\cgame\cg_event.c
|
||||
3=engine\code\game\bg_public.h
|
||||
4=engine\code\game\g_spawn.c
|
||||
5=engine\code\cgame\cg_localents.c
|
||||
6=engine\code\cgame\cg_effects.c
|
||||
7=engine\code\cgame\cg_local.h
|
||||
8=engine\code\cgame\cg_main.c
|
||||
9=engine\code\game\g_utils.c
|
||||
10=engine\code\q3_ui\ui_menu.c
|
||||
0=engine\code\client\cl_main.c
|
||||
1=engine\code\q3_ui\ui_atoms.c
|
||||
2=engine\code\q3_ui\ui_cdkey.c
|
||||
3=engine\code\q3_ui\ui_setup.c
|
||||
4=engine\code\botlib\be_aas_debug.c
|
||||
5=engine\code\cgame\cg_atmospheric.c
|
||||
6=engine\code\cgame\cg_local.h
|
||||
7=engine\code\cgame\cg_event.c
|
||||
8=engine\code\cgame\cg_weapons.c
|
||||
9=engine\code\cgame\cg_main.c
|
||||
10=engine\code\renderer\tr_animation.c
|
||||
11=engine\code\renderer\tr_scene.c
|
||||
12=engine\code\renderer\tr_main.c
|
||||
13=engine\code\renderer\tr_shadows.c
|
||||
14=engine\code\renderer\tr_surface.c
|
||||
15=engine\code\renderer\tr_world.c
|
||||
16=engine\code\renderer\tr_local.h
|
||||
17=engine\code\qcommon\q_shared.h
|
||||
18=engine\code\qcommon\qcommon.h
|
||||
19=engine\code\qcommon\qfiles.h
|
||||
[Selected Project Files]
|
||||
Main=
|
||||
Selected=engine\code\q3_ui\ui_menu.c
|
||||
[engine\code\game\g_mover.c]
|
||||
TopLine=1817
|
||||
Caret=21,1827
|
||||
[engine\code\game\g_combat.c]
|
||||
TopLine=959
|
||||
Caret=14,959
|
||||
[engine\code\cgame\cg_event.c]
|
||||
TopLine=1372
|
||||
Caret=3,1397
|
||||
[engine\code\game\bg_public.h]
|
||||
TopLine=615
|
||||
Caret=5,629
|
||||
[engine\code\game\g_spawn.c]
|
||||
TopLine=164
|
||||
Caret=38,177
|
||||
[engine\code\cgame\cg_localents.c]
|
||||
TopLine=115
|
||||
Caret=11,121
|
||||
[engine\code\cgame\cg_effects.c]
|
||||
TopLine=1011
|
||||
Caret=54,1027
|
||||
Selected=engine\code\qcommon\qfiles.h
|
||||
[engine\code\client\cl_main.c]
|
||||
TopLine=1546
|
||||
Caret=1,1560
|
||||
[engine\code\q3_ui\ui_atoms.c]
|
||||
TopLine=998
|
||||
Caret=1,1012
|
||||
[engine\code\q3_ui\ui_cdkey.c]
|
||||
TopLine=27
|
||||
Caret=1,27
|
||||
[engine\code\q3_ui\ui_setup.c]
|
||||
TopLine=243
|
||||
Caret=102,261
|
||||
[engine\code\botlib\be_aas_debug.c]
|
||||
TopLine=32
|
||||
Caret=1,46
|
||||
[engine\code\cgame\cg_atmospheric.c]
|
||||
TopLine=81
|
||||
Caret=1,95
|
||||
[engine\code\cgame\cg_local.h]
|
||||
TopLine=926
|
||||
Caret=24,943
|
||||
TopLine=120
|
||||
Caret=1,134
|
||||
[engine\code\cgame\cg_event.c]
|
||||
TopLine=1084
|
||||
Caret=1,1098
|
||||
[engine\code\cgame\cg_weapons.c]
|
||||
TopLine=1941
|
||||
Caret=34,1956
|
||||
[engine\code\cgame\cg_main.c]
|
||||
TopLine=1217
|
||||
Caret=84,1237
|
||||
[engine\code\game\g_utils.c]
|
||||
TopLine=729
|
||||
Caret=32,745
|
||||
[engine\code\q3_ui\ui_menu.c]
|
||||
TopLine=507
|
||||
Caret=1,612
|
||||
TopLine=897
|
||||
Caret=1,911
|
||||
[engine\code\renderer\tr_animation.c]
|
||||
TopLine=402
|
||||
Caret=1,416
|
||||
[engine\code\renderer\tr_scene.c]
|
||||
TopLine=243
|
||||
Caret=1,33
|
||||
[engine\code\renderer\tr_main.c]
|
||||
TopLine=19
|
||||
Caret=1,1
|
||||
[engine\code\renderer\tr_shadows.c]
|
||||
TopLine=21
|
||||
Caret=1,1
|
||||
[engine\code\renderer\tr_surface.c]
|
||||
TopLine=37
|
||||
Caret=55,31
|
||||
[engine\code\renderer\tr_world.c]
|
||||
TopLine=1
|
||||
Caret=1,1
|
||||
[engine\code\renderer\tr_local.h]
|
||||
TopLine=9
|
||||
Caret=41,51
|
||||
[engine\code\qcommon\q_shared.h]
|
||||
TopLine=1
|
||||
Caret=35,47
|
||||
[engine\code\qcommon\qcommon.h]
|
||||
TopLine=51
|
||||
Caret=1,1
|
||||
[engine\code\qcommon\qfiles.h]
|
||||
TopLine=73
|
||||
Caret=32,85
|
||||
|
|
|
@ -496,6 +496,8 @@ Solid entity that rotates continuously. Rotates on one or multiple axes and requ
|
|||
-------- KEYS --------
|
||||
speed : determines how fast entity rotates (default 100).
|
||||
noise : path/name of .wav file to play. Use looping sounds only (eg. sound/world/drone6.wav).
|
||||
targetname : activating trigger points to this.
|
||||
targetname2 : activating trigger points to this.
|
||||
model2 : path/name of model to include (eg: models/mapobjects/bitch/fembotbig.md3).
|
||||
origin : alternate method of setting XYZ origin of entity's rotation axis and .md3 model included with entity (default "0 0 0" - See Notes).
|
||||
light : constantLight radius of .md3 model included with entity. Has no effect on the entity's brushes (default 0).
|
||||
|
@ -517,9 +519,12 @@ _shader OR shader : Path to the metashader used to assign textures to the terrai
|
|||
X_AXIS : entity will rotate along the X axis.
|
||||
Y_AXIS : entity will rotate along the Y axis.
|
||||
Z_AXIS : entity will rotate along the Z axis.
|
||||
START_OFF : The entity will initially not rotate.
|
||||
-------- NOTES --------
|
||||
You need to have an origin brush as part of this entity. The center of that brush will be the point through which the rotation axis passes. Setting the origin key is simply an alternate method to using an origin brush. You can check the X_AXIS, Y_AXIS or Z_AXIS boxes to determine along which axes rotation should occur. If no boxes are checked the entity will rotate along the Z axis. When using the model2 key, the origin point of the model will correspond to the origin point defined by either the origin brush or the origin coordinate value.
|
||||
|
||||
The entity's rotation can be stopped and resumed by targetting the func_rotating with a trigger.
|
||||
|
||||
Target this entity with a misc_model to have the model attached to the entity (set the model's "target" key to the same value as this entity's "targetname").*/
|
||||
|
||||
//=============================================================================
|
||||
|
@ -1568,6 +1573,16 @@ Note that the Radiant level editor will not display targetting paths for the dea
|
|||
|
||||
//=============================================================================
|
||||
|
||||
/*QUAKED target_earthquake (0 .7 .7) (-8 -8 -8) (8 8 8)
|
||||
Starts an earthquake that shakes the screen
|
||||
-------- KEYS --------
|
||||
targetname : activating trigger points to this.
|
||||
targetname2 : activating trigger points to this.
|
||||
length : duration of the earthquake in seconds (2 - 32).
|
||||
intensity : intensity of the earthquake (1 - 16).*/
|
||||
|
||||
//=============================================================================
|
||||
|
||||
/*QUAKED target_debrisemitter (0 .7 .7) (-8 -8 -8) (8 8 8) LIGHT_DEBRIS DARK_DEBRIS LIGHT_LARGE_DEBRIS DARK_LARGE_DEBRIS WOOD_DEBRIS FLESH_DEBRIS GLASS_DEBRIS STONE_DEBRIS
|
||||
Emits debris with thick smoke trails when triggered.
|
||||
-------- KEYS --------
|
||||
|
|
Loading…
Reference in a new issue