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:
q3rally 2011-07-15 17:02:36 +00:00
parent 4a671c5c76
commit c76cec2847
16 changed files with 386 additions and 168 deletions

View 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.
======================================================================

View file

@ -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 );

View file

@ -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 );
}
/*
===================

View file

@ -1394,6 +1394,11 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
case EV_EMIT_DEBRIS_STONE:
DEBUGNAME("EV_EMIT_DEBRIS_STONE");
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:

View file

@ -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,

View file

@ -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;

View file

@ -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
@ -625,7 +625,8 @@ typedef enum {
EV_EMIT_DEBRIS_WOOD, // emit wooden chunks
EV_EMIT_DEBRIS_FLESH, // emit gibs
EV_EMIT_DEBRIS_GLASS, // emite shards of glass
EV_EMIT_DEBRIS_STONE,
EV_EMIT_DEBRIS_STONE,
EV_EARTHQUAKE,
EV_EXPLOSION,
EV_PARTICLES_GRAVITY,

View file

@ -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,11 +1737,13 @@ 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
Reached_Train( ent );
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;
}
}

View file

@ -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},

View file

@ -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);
}

View file

@ -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 },

View file

@ -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,52 +301,31 @@ 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;
setupMenuInfo.game.generic.type = MTYPE_PTEXT;
setupMenuInfo.game.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
setupMenuInfo.game.generic.x = 320;
setupMenuInfo.game.generic.y = y;
setupMenuInfo.game.generic.id = ID_GAME;
setupMenuInfo.game.generic.type = MTYPE_PTEXT;
setupMenuInfo.game.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
setupMenuInfo.game.generic.x = 320;
setupMenuInfo.game.generic.y = y;
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
setupMenuInfo.game.string = "GAME OPTIONS";
setupMenuInfo.game.color = text_color_normal;
setupMenuInfo.game.style = UI_CENTER;
y += SETUP_MENU_VERTICAL_SPACING;
setupMenuInfo.q3rOptions.generic.type = MTYPE_PTEXT;
setupMenuInfo.q3rOptions.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
setupMenuInfo.q3rOptions.generic.x = 320;
setupMenuInfo.q3rOptions.generic.y = y;
setupMenuInfo.q3rOptions.generic.id = ID_Q3ROPTIONS;
setupMenuInfo.q3rOptions.generic.callback = UI_SetupMenu_Event;
setupMenuInfo.q3rOptions.generic.type = MTYPE_PTEXT;
setupMenuInfo.q3rOptions.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
setupMenuInfo.q3rOptions.generic.x = 320;
setupMenuInfo.q3rOptions.generic.y = y;
setupMenuInfo.q3rOptions.generic.id = ID_Q3ROPTIONS;
setupMenuInfo.q3rOptions.generic.callback = UI_SetupMenu_Event;
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
}

View file

@ -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 {

View file

@ -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

View file

@ -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

View file

@ -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 --------