From c9856b0dcebc64c50e7c029287fcf6bda6f2ba01 Mon Sep 17 00:00:00 2001 From: perle Date: Mon, 29 Jul 2024 08:38:25 +0200 Subject: [PATCH 1/4] prepare new Gametype 4-Teams-CTF still needs tweaking --- engine/code/cgame/cg_draw.c | 24 +++++-- engine/code/cgame/cg_local.h | 2 + engine/code/cgame/cg_main.c | 10 +++ engine/code/cgame/cg_players.c | 3 - engine/code/cgame/cg_playerstate.c | 2 + engine/code/cgame/cg_predict.c | 6 ++ engine/code/cgame/cg_scoreboard.c | 14 ++++ engine/code/game/ai_dmq3.c | 8 +++ engine/code/game/ai_dmq3.h | 4 ++ engine/code/game/bg_misc.c | 51 +++++++++++++- engine/code/game/bg_public.h | 4 +- engine/code/game/g_active.c | 6 ++ engine/code/game/g_combat.c | 10 +++ engine/code/game/g_misc.c | 8 +++ engine/code/game/g_rankings.c | 2 +- engine/code/game/g_target.c | 4 ++ engine/code/game/g_team.c | 52 +++++++++++--- engine/code/game/inv.h | 106 +++++++++++++++-------------- engine/code/qcommon/q_shared.h | 2 +- q3rallycode.ppr | Bin 32368 -> 34061 bytes 20 files changed, 246 insertions(+), 72 deletions(-) diff --git a/engine/code/cgame/cg_draw.c b/engine/code/cgame/cg_draw.c index b6271b44..f56eaed3 100644 --- a/engine/code/cgame/cg_draw.c +++ b/engine/code/cgame/cg_draw.c @@ -391,6 +391,10 @@ void CG_DrawFlagModel( float x, float y, float w, float h, int team, qboolean fo handle = cgs.media.redFlagModel; } else if( team == TEAM_BLUE ) { handle = cgs.media.blueFlagModel; + } else if( team == TEAM_GREEN) { + handle = cgs.media.greenFlagModel; + } else if( team == TEAM_YELLOW ) { + handle = cgs.media.yellowFlagModel; } else if( team == TEAM_FREE ) { handle = cgs.media.neutralFlagModel; } else { @@ -404,6 +408,10 @@ void CG_DrawFlagModel( float x, float y, float w, float h, int team, qboolean fo item = BG_FindItemForPowerup( PW_REDFLAG ); } else if( team == TEAM_BLUE ) { item = BG_FindItemForPowerup( PW_BLUEFLAG ); + } else if( team == TEAM_GREEN ) { + item = BG_FindItemForPowerup( PW_GREENFLAG ); + } else if( team == TEAM_YELLOW ) { + item = BG_FindItemForPowerup( PW_YELLOWFLAG ); } else if( team == TEAM_FREE ) { item = BG_FindItemForPowerup( PW_NEUTRALFLAG ); } else { @@ -640,6 +648,10 @@ static void CG_DrawStatusBar( void ) { CG_DrawStatusBarFlag( 185 + CHAR_WIDTH*3 + TEXT_ICON_SPACE + ICON_SIZE, TEAM_RED ); } else if( cg.predictedPlayerState.powerups[PW_BLUEFLAG] ) { CG_DrawStatusBarFlag( 185 + CHAR_WIDTH*3 + TEXT_ICON_SPACE + ICON_SIZE, TEAM_BLUE ); + } else if( cg.predictedPlayerState.powerups[PW_GREENFLAG] ) { + CG_DrawStatusBarFlag( 185 + CHAR_WIDTH*3 + TEXT_ICON_SPACE + ICON_SIZE, TEAM_GREEN ); + } else if( cg.predictedPlayerState.powerups[PW_YELLOWFLAG] ) { + CG_DrawStatusBarFlag( 185 + CHAR_WIDTH*3 + TEXT_ICON_SPACE + ICON_SIZE, TEAM_YELLOW ); } else if( cg.predictedPlayerState.powerups[PW_NEUTRALFLAG] ) { CG_DrawStatusBarFlag( 185 + CHAR_WIDTH*3 + TEXT_ICON_SPACE + ICON_SIZE, TEAM_FREE ); } @@ -847,6 +859,10 @@ static void CG_DrawRallyStatusBar( void ) { CG_DrawStatusBarFlag( 495, TEAM_RED); else if (cg.predictedPlayerState.powerups[PW_BLUEFLAG]) CG_DrawStatusBarFlag( 495, TEAM_BLUE); + else if (cg.predictedPlayerState.powerups[PW_GREENFLAG]) + CG_DrawStatusBarFlag( 495, TEAM_GREEN); + else if (cg.predictedPlayerState.powerups[PW_YELLOWFLAG]) + CG_DrawStatusBarFlag( 495, TEAM_YELLOW); else if (cg_entities[cg.snap->ps.clientNum].finishRaceTime && cg_entities[cg.snap->ps.clientNum].currentPosition == 1){ @@ -1179,17 +1195,17 @@ static void CG_DrawRallyPowerups( void ) { active++; } - // draw the icons and timers + // draw the icons and timers TRYOUT: bug #71 for ( i = 0 ; i < active ; i++ ) { item = BG_FindItemForPowerup( sorted[i] ); color = 1; - CG_FillRect( 402, 476 - 30, 90, 24, bg_color ); + CG_FillRect( 495, 476 - 30, 90, 24, bg_color ); trap_R_SetColor( colors[color] ); - CG_DrawField( 424 + CHAR_WIDTH, 476 - 28, 2, sortedTime[ i ] / 1000 ); + CG_DrawField( 517 + CHAR_WIDTH, 476 - 28, 2, sortedTime[ i ] / 1000 ); t = ps->powerups[ sorted[i] ]; if ( t - cg.time >= POWERUP_BLINKS * POWERUP_BLINK_TIME ) { @@ -1216,7 +1232,7 @@ static void CG_DrawRallyPowerups( void ) { size = 19; } - CG_DrawPic( 408, 476 - 27, size, size, trap_R_RegisterShader( item->icon ) ); + CG_DrawPic( 503, 476 - 27, size, size, trap_R_RegisterShader( item->icon ) ); } trap_R_SetColor( NULL ); } diff --git a/engine/code/cgame/cg_local.h b/engine/code/cgame/cg_local.h index 8ae07e5b..104039a4 100644 --- a/engine/code/cgame/cg_local.h +++ b/engine/code/cgame/cg_local.h @@ -827,6 +827,8 @@ typedef struct { qhandle_t redFlagFlapSkin; qhandle_t blueFlagFlapSkin; + qhandle_t greenFlagFlapSkin; + qhandle_t yellowFlagFlapSkin; qhandle_t neutralFlagFlapSkin; qhandle_t redFlagBaseModel; diff --git a/engine/code/cgame/cg_main.c b/engine/code/cgame/cg_main.c index bfa0a1de..7dec7aa2 100644 --- a/engine/code/cgame/cg_main.c +++ b/engine/code/cgame/cg_main.c @@ -1130,6 +1130,8 @@ static void CG_RegisterGraphics( void ) { cgs.media.redFlagFlapSkin = trap_R_RegisterSkin( "models/flag2/red.skin" ); cgs.media.blueFlagFlapSkin = trap_R_RegisterSkin( "models/flag2/blue.skin" ); + cgs.media.greenFlagFlapSkin = trap_R_RegisterSkin( "models/flag2/green.skin" ); + cgs.media.yellowFlagFlapSkin = trap_R_RegisterSkin( "models/flag2/yellow.skin" ); cgs.media.neutralFlagFlapSkin = trap_R_RegisterSkin( "models/flag2/white.skin" ); cgs.media.redFlagBaseModel = trap_R_RegisterModel( "models/mapobjects/flagbase/red_base.md3" ); @@ -1910,6 +1912,10 @@ static const char *CG_FeederItemText(float feederID, int index, int column, qhan team = TEAM_RED; } else if (feederID == FEEDER_BLUETEAM_LIST) { team = TEAM_BLUE; + } else if (feederID == FEEDER_GREENTEAM_LIST) { + team = TEAM_GREEN; + } else if (feederID == FEEDER_YELLOWTEAM_LIST) { + team = TEAM_YELLOW; } info = CG_InfoFromScoreIndex(index, team, &scoreIndex); @@ -1926,6 +1932,10 @@ static const char *CG_FeederItemText(float feederID, int index, int column, qhan *handle = cg_items[ ITEM_INDEX(item) ].icon; } else if ( info->powerups & ( 1 << PW_BLUEFLAG ) ) { item = BG_FindItemForPowerup( PW_BLUEFLAG ); + } else if ( info->powerups & ( 1 << PW_GREENFLAG ) ) { + item = BG_FindItemForPowerup( PW_GREENFLAG ); + } else if ( info->powerups & ( 1 << PW_YELLOWFLAG ) ) { + item = BG_FindItemForPowerup( PW_YELLOWFLAG ); *handle = cg_items[ ITEM_INDEX(item) ].icon; } else { if ( info->botSkill > 0 && info->botSkill <= 5 ) { diff --git a/engine/code/cgame/cg_players.c b/engine/code/cgame/cg_players.c index 5d47571a..3a42df7a 100644 --- a/engine/code/cgame/cg_players.c +++ b/engine/code/cgame/cg_players.c @@ -2416,7 +2416,6 @@ static void CG_PlayerPowerups( centity_t *cent, refEntity_t *torso ) { trap_R_AddLightToScene( cent->lerpOrigin, 200 + (rand()&31), 0.2f, 0.2f, 1.0 ); } -/* finish in 0.5 // greenflag if ( powerups & ( 1 << PW_GREENFLAG ) ) { @@ -2440,8 +2439,6 @@ static void CG_PlayerPowerups( centity_t *cent, refEntity_t *torso ) { trap_R_AddLightToScene( cent->lerpOrigin, 200 + (rand()&31), 1.0, 1.0, 0.2f ); } -// end finish in 0.5 -*/ // neutralflag if ( powerups & ( 1 << PW_NEUTRALFLAG ) ) { diff --git a/engine/code/cgame/cg_playerstate.c b/engine/code/cgame/cg_playerstate.c index 58a65182..5bb3d337 100644 --- a/engine/code/cgame/cg_playerstate.c +++ b/engine/code/cgame/cg_playerstate.c @@ -437,6 +437,8 @@ void CG_CheckLocalSounds( playerState_t *ps, playerState_t *ops ) { if ( cgs.gametype > GT_TEAM ) { if ((ps->powerups[PW_REDFLAG] != ops->powerups[PW_REDFLAG] && ps->powerups[PW_REDFLAG]) || (ps->powerups[PW_BLUEFLAG] != ops->powerups[PW_BLUEFLAG] && ps->powerups[PW_BLUEFLAG]) || + (ps->powerups[PW_GREENFLAG] != ops->powerups[PW_GREENFLAG] && ps->powerups[PW_GREENFLAG]) || + (ps->powerups[PW_YELLOWFLAG] != ops->powerups[PW_YELLOWFLAG] && ps->powerups[PW_YELLOWFLAG]) || (ps->powerups[PW_NEUTRALFLAG] != ops->powerups[PW_NEUTRALFLAG] && ps->powerups[PW_NEUTRALFLAG]) ) { trap_S_StartLocalSound( cgs.media.youHaveFlagSound, CHAN_ANNOUNCER ); diff --git a/engine/code/cgame/cg_predict.c b/engine/code/cgame/cg_predict.c index 6949a2bd..881e617a 100644 --- a/engine/code/cgame/cg_predict.c +++ b/engine/code/cgame/cg_predict.c @@ -494,6 +494,12 @@ static void CG_TouchItem( centity_t *cent ) { if (cg.predictedPlayerState.persistant[PERS_TEAM] == TEAM_BLUE && item->giType == IT_TEAM && item->giTag == PW_BLUEFLAG) return; + if (cg.predictedPlayerState.persistant[PERS_TEAM] == TEAM_GREEN && + item->giType == IT_TEAM && item->giTag == PW_GREENFLAG) + return; + if (cg.predictedPlayerState.persistant[PERS_TEAM] == TEAM_YELLOW && + item->giType == IT_TEAM && item->giTag == PW_YELLOWFLAG) + return; } // grab it diff --git a/engine/code/cgame/cg_scoreboard.c b/engine/code/cgame/cg_scoreboard.c index 25175c9d..b8055392 100644 --- a/engine/code/cgame/cg_scoreboard.c +++ b/engine/code/cgame/cg_scoreboard.c @@ -143,6 +143,20 @@ static void CG_DrawClientScore( int y, score_t *score, float *color, float fade, else { CG_DrawFlagModel( iconx, y, 16, 16, TEAM_BLUE, qfalse ); } + } else if ( ci->powerups & ( 1 << PW_GREENFLAG ) ) { + if( largeFormat ) { + CG_DrawFlagModel( iconx, y - ( 32 - BIGCHAR_HEIGHT ) / 2, 32, 32, TEAM_GREEN, qfalse ); + } + else { + CG_DrawFlagModel( iconx, y, 16, 16, TEAM_GREEN, qfalse ); + } + } else if ( ci->powerups & ( 1 << PW_YELLOWFLAG ) ) { + if( largeFormat ) { + CG_DrawFlagModel( iconx, y - ( 32 - BIGCHAR_HEIGHT ) / 2, 32, 32, TEAM_YELLOW, qfalse ); + } + else { + CG_DrawFlagModel( iconx, y, 16, 16, TEAM_YELLOW, qfalse ); + } } // STONELANCE - draw flag beside winner else if (cg_entities[score->client].finishRaceTime && diff --git a/engine/code/game/ai_dmq3.c b/engine/code/game/ai_dmq3.c index 8237f362..0662355d 100644 --- a/engine/code/game/ai_dmq3.c +++ b/engine/code/game/ai_dmq3.c @@ -135,6 +135,8 @@ int BotCTFCarryingFlag(bot_state_t *bs) { if (bs->inventory[INVENTORY_REDFLAG] > 0) return CTF_FLAG_RED; else if (bs->inventory[INVENTORY_BLUEFLAG] > 0) return CTF_FLAG_BLUE; + else if (bs->inventory[INVENTORY_GREENFLAG] > 0) return CTF_FLAG_GREEN; + else if (bs->inventory[INVENTORY_YELLOWFLAG] > 0) return CTF_FLAG_YELLOW; return CTF_FLAG_NONE; } @@ -229,6 +231,10 @@ qboolean EntityCarriesFlag(aas_entityinfo_t *entinfo) { return qtrue; if ( entinfo->powerups & ( 1 << PW_BLUEFLAG ) ) return qtrue; + if ( entinfo->powerups & ( 1 << PW_GREENFLAG ) ) + return qtrue; + if ( entinfo->powerups & ( 1 << PW_YELLOWFLAG ) ) + return qtrue; #ifdef MISSIONPACK if ( entinfo->powerups & ( 1 << PW_NEUTRALFLAG ) ) return qtrue; @@ -1799,6 +1805,8 @@ void BotUpdateInventory(bot_state_t *bs) { #endif bs->inventory[INVENTORY_REDFLAG] = bs->cur_ps.powerups[PW_REDFLAG] != 0; bs->inventory[INVENTORY_BLUEFLAG] = bs->cur_ps.powerups[PW_BLUEFLAG] != 0; + bs->inventory[INVENTORY_GREENFLAG] = bs->cur_ps.powerups[PW_GREENFLAG] != 0; + bs->inventory[INVENTORY_YELLOWFLAG] = bs->cur_ps.powerups[PW_YELLOWFLAG] != 0; #ifdef MISSIONPACK bs->inventory[INVENTORY_NEUTRALFLAG] = bs->cur_ps.powerups[PW_NEUTRALFLAG] != 0; if (BotTeam(bs) == TEAM_RED) { diff --git a/engine/code/game/ai_dmq3.h b/engine/code/game/ai_dmq3.h index 42d1f763..e57662ea 100644 --- a/engine/code/game/ai_dmq3.h +++ b/engine/code/game/ai_dmq3.h @@ -183,9 +183,13 @@ void BotMapScripts(bot_state_t *bs); #define CTF_FLAG_NONE 0 #define CTF_FLAG_RED 1 #define CTF_FLAG_BLUE 2 +#define CTF_FLAG_GREEN 3 +#define CTF_FLAG_YELLOW 4 //CTF skins #define CTF_SKIN_REDTEAM "red" #define CTF_SKIN_BLUETEAM "blue" +#define CTF_SKIN_GREENTEAM "green" +#define CTF_SKIN_YELLOWTEAM "yellow" extern int gametype; //game type extern int maxclients; //maximum number of clients diff --git a/engine/code/game/bg_misc.c b/engine/code/game/bg_misc.c index f1a2027c..aabb6ddc 100644 --- a/engine/code/game/bg_misc.c +++ b/engine/code/game/bg_misc.c @@ -881,7 +881,40 @@ Only in CTF games /* precache */ "", /* sounds */ "" }, + +/*QUAKED team_CTF_greenflag (0 1 0) (-16 -16 -16) (16 16 16) +Only in CTF games +*/ + { + "team_CTF_greenflag", + NULL, + { "models/flags/b_flag.md3", + NULL, NULL, NULL }, +/* icon */ "icons/iconf_green1", +/* pickup */ "Green Flag", + 0, + IT_TEAM, + PW_GREENFLAG, +/* precache */ "", +/* sounds */ "" + }, +/*QUAKED team_CTF_yellowflag (1 1 0) (-16 -16 -16) (16 16 16) +Only in CTF games +*/ + { + "team_CTF_yellowflag", + NULL, + { "models/flags/b_flag.md3", + NULL, NULL, NULL }, +/* icon */ "icons/iconf_yell1", +/* pickup */ "Yellow Flag", + 0, + IT_TEAM, + PW_YELLOWFLAG, +/* precache */ "", +/* sounds */ "" + }, // Q3Rally Code Start /*QUAKED team_DOMINATION_sigil_red @@ -1505,12 +1538,28 @@ qboolean BG_CanItemBeGrabbed( int gametype, const entityState_t *ent, const play (item->giTag == PW_REDFLAG && ent->modelindex2) || (item->giTag == PW_REDFLAG && ps->powerups[PW_BLUEFLAG]) ) return qtrue; - } else if (ps->persistant[PERS_TEAM] == TEAM_BLUE) { + } + + else if (ps->persistant[PERS_TEAM] == TEAM_BLUE) { if (item->giTag == PW_REDFLAG || (item->giTag == PW_BLUEFLAG && ent->modelindex2) || (item->giTag == PW_BLUEFLAG && ps->powerups[PW_REDFLAG]) ) return qtrue; } + + else if (ps->persistant[PERS_TEAM] == TEAM_BLUE) { + if (item->giTag == PW_REDFLAG || + (item->giTag == PW_BLUEFLAG && ent->modelindex2) || + (item->giTag == PW_BLUEFLAG && ps->powerups[PW_REDFLAG]) ) + return qtrue; + } + + else if (ps->persistant[PERS_TEAM] == TEAM_BLUE) { + if (item->giTag == PW_REDFLAG || + (item->giTag == PW_BLUEFLAG && ent->modelindex2) || + (item->giTag == PW_BLUEFLAG && ps->powerups[PW_REDFLAG]) ) + return qtrue; + } } #ifdef MISSIONPACK diff --git a/engine/code/game/bg_public.h b/engine/code/game/bg_public.h index eae5b444..b627bfcb 100644 --- a/engine/code/game/bg_public.h +++ b/engine/code/game/bg_public.h @@ -405,8 +405,8 @@ typedef enum { PW_REDFLAG, PW_BLUEFLAG, -// PW_GREENFLAG, -// PW_YELLOWFLAG, + PW_GREENFLAG, + PW_YELLOWFLAG, PW_NEUTRALFLAG, #ifdef MISSIONPACK diff --git a/engine/code/game/g_active.c b/engine/code/game/g_active.c index c622fa97..2ca5e1da 100644 --- a/engine/code/game/g_active.c +++ b/engine/code/game/g_active.c @@ -803,6 +803,12 @@ void ClientEvents( gentity_t *ent, int oldEventSequence ) { } else if ( ent->client->ps.powerups[ PW_BLUEFLAG ] ) { item = BG_FindItemForPowerup( PW_BLUEFLAG ); j = PW_BLUEFLAG; + } else if ( ent->client->ps.powerups[ PW_GREENFLAG ] ) { + item = BG_FindItemForPowerup( PW_GREENFLAG ); + j = PW_GREENFLAG; + } else if ( ent->client->ps.powerups[ PW_YELLOWFLAG ] ) { + item = BG_FindItemForPowerup( PW_YELLOWFLAG ); + j = PW_YELLOWFLAG; } else if ( ent->client->ps.powerups[ PW_NEUTRALFLAG ] ) { item = BG_FindItemForPowerup( PW_NEUTRALFLAG ); j = PW_NEUTRALFLAG; diff --git a/engine/code/game/g_combat.c b/engine/code/game/g_combat.c index c65c9249..33699f66 100644 --- a/engine/code/game/g_combat.c +++ b/engine/code/game/g_combat.c @@ -415,6 +415,8 @@ void CheckAlmostCapture( gentity_t *self, gentity_t *attacker ) { // if this player was carrying a flag if ( self->client->ps.powerups[PW_REDFLAG] || self->client->ps.powerups[PW_BLUEFLAG] || + self->client->ps.powerups[PW_GREENFLAG] || + self->client->ps.powerups[PW_YELLOWFLAG] || self->client->ps.powerups[PW_NEUTRALFLAG] ) { // get the goal flag this player should have been going for if ( g_gametype.integer == GT_CTF ) { @@ -631,6 +633,14 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int Team_ReturnFlag( TEAM_BLUE ); self->client->ps.powerups[PW_BLUEFLAG] = 0; } + else if ( self->client->ps.powerups[PW_GREENFLAG] ) { // only happens in standard CTF + Team_ReturnFlag( TEAM_GREEN ); + self->client->ps.powerups[PW_GREENFLAG] = 0; + } + else if ( self->client->ps.powerups[PW_YELLOWFLAG] ) { // only happens in standard CTF + Team_ReturnFlag( TEAM_YELLOW ); + self->client->ps.powerups[PW_YELLOWFLAG] = 0; + } } TossClientItems( self ); diff --git a/engine/code/game/g_misc.c b/engine/code/game/g_misc.c index 8347c23e..aaf7da2a 100644 --- a/engine/code/game/g_misc.c +++ b/engine/code/game/g_misc.c @@ -479,6 +479,14 @@ static void PortalTouch( gentity_t *self, gentity_t *other, trace_t *trace) { Drop_Item( other, BG_FindItemForPowerup( PW_BLUEFLAG ), 0 ); other->client->ps.powerups[PW_BLUEFLAG] = 0; } + else if ( other->client->ps.powerups[PW_GREENFLAG] ) { // only happens in standard CTF + Drop_Item( other, BG_FindItemForPowerup( PW_GREENFLAG ), 0 ); + other->client->ps.powerups[PW_GREENFLAG] = 0; + } + else if ( other->client->ps.powerups[PW_YELLOWFLAG] ) { // only happens in standard CTF + Drop_Item( other, BG_FindItemForPowerup( PW_YELLOWFLAG ), 0 ); + other->client->ps.powerups[PW_YELLOWFLAG] = 0; + } // find the destination destination = NULL; diff --git a/engine/code/game/g_rankings.c b/engine/code/game/g_rankings.c index 4d8f6947..397b990e 100644 --- a/engine/code/game/g_rankings.c +++ b/engine/code/game/g_rankings.c @@ -898,7 +898,7 @@ void G_RankPickupPowerup( int self, int powerup ) } // ctf flags are treated as powerups - if( (powerup == PW_REDFLAG) || (powerup == PW_BLUEFLAG) ) + if( (powerup == PW_REDFLAG) || (powerup == PW_BLUEFLAG) || (powerup == PW_GREENFLAG) || (powerup == PW_YELLOWFLAG) ) { trap_RankReportInt( self, -1, QGR_KEY_FLAG_PICKUP, 1, 1 ); return; diff --git a/engine/code/game/g_target.c b/engine/code/game/g_target.c index f76235f0..7b9bcfc6 100644 --- a/engine/code/game/g_target.c +++ b/engine/code/game/g_target.c @@ -74,6 +74,10 @@ void Use_target_remove_powerups( gentity_t *ent, gentity_t *other, gentity_t *ac Team_ReturnFlag( TEAM_RED ); } else if( activator->client->ps.powerups[PW_BLUEFLAG] ) { Team_ReturnFlag( TEAM_BLUE ); + } else if( activator->client->ps.powerups[PW_GREENFLAG] ) { + Team_ReturnFlag( TEAM_GREEN ); + } else if( activator->client->ps.powerups[PW_YELLOWFLAG] ) { + Team_ReturnFlag( TEAM_YELLOW ); } else if( activator->client->ps.powerups[PW_NEUTRALFLAG] ) { Team_ReturnFlag( TEAM_FREE ); } diff --git a/engine/code/game/g_team.c b/engine/code/game/g_team.c index 7e1684c4..45f49eae 100644 --- a/engine/code/game/g_team.c +++ b/engine/code/game/g_team.c @@ -457,6 +457,12 @@ void Team_CheckDroppedItem( gentity_t *dropped ) { else if( dropped->item->giTag == PW_BLUEFLAG ) { Team_SetFlagStatus( TEAM_BLUE, FLAG_DROPPED ); } + else if( dropped->item->giTag == PW_GREENFLAG ) { + Team_SetFlagStatus( TEAM_GREEN, FLAG_DROPPED ); + } + else if( dropped->item->giTag == PW_YELLOWFLAG ) { + Team_SetFlagStatus( TEAM_YELLOW, FLAG_DROPPED ); + } else if( dropped->item->giTag == PW_NEUTRALFLAG ) { Team_SetFlagStatus( TEAM_FREE, FLAG_DROPPED ); } @@ -707,10 +713,17 @@ void Team_CheckHurtCarrier(gentity_t *targ, gentity_t *attacker) if (!targ->client || !attacker->client) return; - if (targ->client->sess.sessionTeam == TEAM_RED) + if (targ->client->sess.sessionTeam == TEAM_RED || targ->client->sess.sessionTeam == TEAM_GREEN || targ->client->sess.sessionTeam == TEAM_YELLOW) flag_pw = PW_BLUEFLAG; - else - flag_pw = PW_REDFLAG; + else if + (targ->client->sess.sessionTeam == TEAM_BLUE || targ->client->sess.sessionTeam == TEAM_GREEN || targ->client->sess.sessionTeam == TEAM_YELLOW) + flag_pw = PW_REDFLAG; + else if + (targ->client->sess.sessionTeam == TEAM_GREEN || targ->client->sess.sessionTeam == TEAM_RED || targ->client->sess.sessionTeam == TEAM_BLUE) + flag_pw = PW_YELLOWFLAG; + else if + (targ->client->sess.sessionTeam == TEAM_BLUE || targ->client->sess.sessionTeam == TEAM_RED || targ->client->sess.sessionTeam == TEAM_YELLOW) + flag_pw = PW_GREENFLAG; #ifdef MISSIONPACK if (g_gametype.integer == GT_1FCTF) { @@ -865,7 +878,13 @@ void Team_FreeEntity( gentity_t *ent ) { } else if( ent->item->giTag == PW_BLUEFLAG ) { Team_ReturnFlag( TEAM_BLUE ); + } + else if( ent->item->giTag == PW_GREENFLAG ) { + Team_ReturnFlag( TEAM_GREEN ); } + else if( ent->item->giTag == PW_YELLOWFLAG ) { + Team_ReturnFlag( TEAM_YELLOW ); + } else if( ent->item->giTag == PW_NEUTRALFLAG ) { Team_ReturnFlag( TEAM_FREE ); } @@ -889,6 +908,12 @@ void Team_DroppedFlagThink(gentity_t *ent) { else if( ent->item->giTag == PW_BLUEFLAG ) { team = TEAM_BLUE; } + else if( ent->item->giTag == PW_GREENFLAG ) { + team = TEAM_GREEN; + } + else if( ent->item->giTag == PW_YELLOWFLAG ) { + team = TEAM_YELLOW; + } else if( ent->item->giTag == PW_NEUTRALFLAG ) { team = TEAM_FREE; } @@ -915,12 +940,19 @@ int Team_TouchOurFlag( gentity_t *ent, gentity_t *other, int team ) { } else { #endif - if (cl->sess.sessionTeam == TEAM_RED) { + if (cl->sess.sessionTeam == TEAM_RED || cl->sess.sessionTeam == TEAM_GREEN || cl->sess.sessionTeam == TEAM_YELLOW) { enemy_flag = PW_BLUEFLAG; - } else { - enemy_flag = PW_REDFLAG; + } + else if (cl->sess.sessionTeam == TEAM_RED || cl->sess.sessionTeam == TEAM_BLUE || cl->sess.sessionTeam == TEAM_GREEN) { + enemy_flag = PW_YELLOWFLAG; } - + else if (cl->sess.sessionTeam == TEAM_BLUE || cl->sess.sessionTeam == TEAM_GREEN || cl->sess.sessionTeam == TEAM_YELLOW) { + enemy_flag = PW_REDFLAG; + } + else if (cl->sess.sessionTeam == TEAM_RED || cl->sess.sessionTeam == TEAM_BLUE || cl->sess.sessionTeam == TEAM_YELLOW) { + enemy_flag = PW_GREENFLAG; + } + if ( ent->flags & FL_DROPPED_ITEM ) { // hey, it's not home. return it by teleporting it back PrintMsg( NULL, "%s" S_COLOR_WHITE " returned the %s flag!\n", @@ -1043,8 +1075,12 @@ int Team_TouchEnemyFlag( gentity_t *ent, gentity_t *other, int team ) { if (team == TEAM_RED) cl->ps.powerups[PW_REDFLAG] = INT_MAX; // flags never expire - else + else if (team == TEAM_BLUE) cl->ps.powerups[PW_BLUEFLAG] = INT_MAX; // flags never expire + else if (team == TEAM_GREEN) + cl->ps.powerups[PW_GREENFLAG] = INT_MAX; // flags never expire + else if (team == TEAM_YELLOW) + cl->ps.powerups[PW_YELLOWFLAG] = INT_MAX; // flags never expire Team_SetFlagStatus( team, FLAG_TAKEN ); #ifdef MISSIONPACK diff --git a/engine/code/game/inv.h b/engine/code/game/inv.h index 3366d68a..fd8bb5ca 100644 --- a/engine/code/game/inv.h +++ b/engine/code/game/inv.h @@ -25,64 +25,66 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA //armor #define INVENTORY_ARMOR 1 //weapons -#define INVENTORY_GAUNTLET 4 +#define INVENTORY_GAUNTLET 4 #define INVENTORY_SHOTGUN 5 -#define INVENTORY_MACHINEGUN 6 -#define INVENTORY_GRENADELAUNCHER 7 -#define INVENTORY_ROCKETLAUNCHER 8 -#define INVENTORY_LIGHTNING 9 -#define INVENTORY_RAILGUN 10 -#define INVENTORY_PLASMAGUN 11 -#define INVENTORY_BFG10K 12 -#define INVENTORY_GRAPPLINGHOOK 13 -#define INVENTORY_NAILGUN 14 -#define INVENTORY_PROXLAUNCHER 15 -#define INVENTORY_CHAINGUN 16 -#define INVENTORY_FLAMETHROWER 17 // rally +#define INVENTORY_MACHINEGUN 6 +#define INVENTORY_GRENADELAUNCHER 7 +#define INVENTORY_ROCKETLAUNCHER 8 +#define INVENTORY_LIGHTNING 9 +#define INVENTORY_RAILGUN 10 +#define INVENTORY_PLASMAGUN 11 +#define INVENTORY_BFG10K 12 +#define INVENTORY_GRAPPLINGHOOK 13 +#define INVENTORY_NAILGUN 14 +#define INVENTORY_PROXLAUNCHER 15 +#define INVENTORY_CHAINGUN 16 +#define INVENTORY_FLAMETHROWER 17 // rally //ammo -#define INVENTORY_SHELLS 18 -#define INVENTORY_BULLETS 19 -#define INVENTORY_GRENADES 20 -#define INVENTORY_CELLS 21 -#define INVENTORY_LIGHTNINGAMMO 22 -#define INVENTORY_ROCKETS 23 -#define INVENTORY_SLUGS 24 -#define INVENTORY_BFGAMMO 25 -#define INVENTORY_FLAMETHROWERAMMO 26 // rally -#define INVENTORY_NAILS 27 -#define INVENTORY_MINES 28 -#define INVENTORY_BELT 29 +#define INVENTORY_SHELLS 18 +#define INVENTORY_BULLETS 19 +#define INVENTORY_GRENADES 20 +#define INVENTORY_CELLS 21 +#define INVENTORY_LIGHTNINGAMMO 22 +#define INVENTORY_ROCKETS 23 +#define INVENTORY_SLUGS 24 +#define INVENTORY_BFGAMMO 25 +#define INVENTORY_FLAMETHROWERAMMO 26 // rally +#define INVENTORY_NAILS 27 +#define INVENTORY_MINES 28 +#define INVENTORY_BELT 29 //powerups -#define INVENTORY_HEALTH 30 -#define INVENTORY_TELEPORTER 31 -#define INVENTORY_MEDKIT 32 -#define INVENTORY_TURBO 33 // rally -#define INVENTORY_KAMIKAZE 34 -#define INVENTORY_PORTAL 35 -#define INVENTORY_INVULNERABILITY 36 -#define INVENTORY_QUAD 37 -#define INVENTORY_ENVIRONMENTSUIT 38 -#define INVENTORY_HASTE 39 -#define INVENTORY_INVISIBILITY 40 -#define INVENTORY_REGEN 41 +#define INVENTORY_HEALTH 30 +#define INVENTORY_TELEPORTER 31 +#define INVENTORY_MEDKIT 32 +#define INVENTORY_TURBO 33 // rally +#define INVENTORY_KAMIKAZE 34 +#define INVENTORY_PORTAL 35 +#define INVENTORY_INVULNERABILITY 36 +#define INVENTORY_QUAD 37 +#define INVENTORY_ENVIRONMENTSUIT 38 +#define INVENTORY_HASTE 39 +#define INVENTORY_INVISIBILITY 40 +#define INVENTORY_REGEN 41 //#define INVENTORY_FLIGHT -#define INVENTORY_SHIELD 42 // rally +#define INVENTORY_SHIELD 42 // rally //missionpack -#define INVENTORY_SCOUT 43 -#define INVENTORY_GUARD 44 -#define INVENTORY_DOUBLER 45 -#define INVENTORY_AMMOREGEN 46 -#define INVENTORY_REDFLAG 47 -#define INVENTORY_BLUEFLAG 48 -#define INVENTORY_NEUTRALFLAG 49 -#define INVENTORY_REDCUBE 50 -#define INVENTORY_BLUECUBE 51 +#define INVENTORY_SCOUT 43 +#define INVENTORY_GUARD 44 +#define INVENTORY_DOUBLER 45 +#define INVENTORY_AMMOREGEN 46 +#define INVENTORY_REDFLAG 47 +#define INVENTORY_BLUEFLAG 48 +#define INVENTORY_GREENFLAG 49 +#define INVENTORY_YELLOWFLAG 50 +#define INVENTORY_NEUTRALFLAG 51 +#define INVENTORY_REDCUBE 52 +#define INVENTORY_BLUECUBE 53 //rally rearfire weapons -#define INVENTORY_RWP_SMOKE 52 -#define INVENTORY_RWP_OIL 53 -#define INVENTORY_RWP_MINE 54 -#define INVENTORY_RWP_FLAME 55 -#define INVENTORY_RWP_BIO 56 +#define INVENTORY_RWP_SMOKE 54 +#define INVENTORY_RWP_OIL 55 +#define INVENTORY_RWP_MINE 56 +#define INVENTORY_RWP_FLAME 57 +#define INVENTORY_RWP_BIO 58 //enemy stuff #define ENEMY_HORIZONTAL_DIST 200 #define ENEMY_HEIGHT 201 diff --git a/engine/code/qcommon/q_shared.h b/engine/code/qcommon/q_shared.h index df1e2c82..cbf65dc7 100644 --- a/engine/code/qcommon/q_shared.h +++ b/engine/code/qcommon/q_shared.h @@ -70,7 +70,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define BASETA "missionpack" #ifndef PRODUCT_VERSION -#define PRODUCT_VERSION "v0.5 r605" +#define PRODUCT_VERSION "v0.5 r606" #endif diff --git a/q3rallycode.ppr b/q3rallycode.ppr index 17201623d2affabe68de7f9d56a6eec897a8b2dc..7f0c3fa4bd23759ba9cf900fafd546b96c62e066 100644 GIT binary patch delta 1278 zcmaKrL2DC16vr{eST-y+YNVh^N=q@=q3oO4*_}P?$)g4l^pupc-Hb`lZ0aW1la-zX zQK;+(@Dm7vS1*1c@dJ49&1`lYDfTwA@AuyP-+TZ4_4~@l_qDIjH|l%oIGM@f$E`cx z-fet;S$t}?oKc>f?5C~+apAT*H5wOB9=5MeT!+Of-jJ_lwp4(x@5RsNdX4L&o5_U*kk?JtYKI`5rzOZZ?zw*22d|FC=j55 zE`u;GufAoIz&t||0EUn2s`t%mZQ6^dp(6rb6s_frILAqFfg=8IGdq!*J*Y&cCU_yy81P`r z+B0WnN`QOj0bU2nQRvQfyYo=s{7OSmp9nyElw7~_4;QGltc(+pz_04~P zoTX6hD!=zCzgw&j*i%^*ARtjWOO&}={R$Qw{IxC+p;w9Iz48~aIPd~vJ)fdQ1PW4X rziXRZw^}|O5K)@$eEaq@tB@MnN*s>n(zQ*jG*JIVnMZML0%iXJqOx%9 delta 163 zcmeC}V*2ohaYLE_n{IM?Vs7f>gCf$K+XeRIaQmf}8tRo)l<;yHPHwDKoP4oPl%qT~ zu^>NBFM0CwdS4}&f>>Uzko*Fl%)C@vLtZZD#G=#^TSFZnGkS8Mx9sHO4ZH$K;^w9x biAH&04VYob`i;ztU`7}L%`h@I Date: Mon, 29 Jul 2024 22:19:08 +0200 Subject: [PATCH 2/4] some more changes for 4TCTF --- engine/code/cgame/cg_draw.c | 139 ++++++++++++++++++------------ engine/code/cgame/cg_local.h | 2 +- engine/code/cgame/cg_main.c | 2 +- engine/code/cgame/cg_servercmds.c | 2 + engine/code/qcommon/q_shared.h | 2 +- q3rallycode.ppr | Bin 34061 -> 34265 bytes 6 files changed, 89 insertions(+), 58 deletions(-) diff --git a/engine/code/cgame/cg_draw.c b/engine/code/cgame/cg_draw.c index f56eaed3..92da4255 100644 --- a/engine/code/cgame/cg_draw.c +++ b/engine/code/cgame/cg_draw.c @@ -1359,7 +1359,7 @@ static float CG_DrawFPS( float y ) { s = va( "%ifps", fps ); w = CG_DrawStrlen( s ) * BIGCHAR_WIDTH; - CG_DrawBigString( 635 - w, y + 2, s, 1.0F); + CG_DrawBigString( 622 - w, 355 + 2, s, 1.0F); } return y + BIGCHAR_HEIGHT + 4; @@ -1641,9 +1641,9 @@ float CG_DrawScores( float x, float y ) { if ( cgs.gametype >= GT_TEAM ) { CG_FillRect( x - 80, y, 96, 18, bgColor ); - - if (cgs.gametype >= GT_TEAM){ - // draw yellow + + // draw yellow + color[0] = 1.0f; color[1] = 1.0f; color[2] = 0.0f; @@ -1657,7 +1657,23 @@ float CG_DrawScores( float x, float y ) { } CG_DrawTinyDigitalString( x + 4, y+4, s, 1.0F); + if ( cgs.gametype == GT_CTF ) { + // Display yellow flag status + item = BG_FindItemForPowerup( PW_YELLOWFLAG ); + + if (item) { + + y1 = y + TINYCHAR_HEIGHT + 8; + if( cgs.yellowflag >= 0 && cgs.yellowflag <= 2 ) { + + CG_DrawPic( x+1, y1+1, w-2, 16, cgs.media.yellowFlagShader[cgs.yellowflag] ); + + } + } + } + // draw green + color[0] = 0.0f; color[1] = 1.0f; color[2] = 0.0f; @@ -1670,71 +1686,84 @@ float CG_DrawScores( float x, float y ) { CG_DrawPic( x+1, y+1, w-2, 16, cgs.media.selectShader ); } CG_DrawTinyDigitalString( x + 4, y+4, s, 1.0F); - } - color[0] = 0.0f; - color[1] = 0.0f; - color[2] = 1.0f; - color[3] = 0.33f; - s = va( "%2i", s2 ); - w = CG_DrawStrlen( s ) * TINYCHAR_WIDTH + 8; - x -= w; - - CG_FillRect( x+1, y+1, w-2, 16, color ); - if ( cg.snap->ps.persistant[PERS_TEAM] == TEAM_BLUE ) { - CG_DrawPic( x+1, y+1, w-2, 16, cgs.media.selectShader ); - - } - - CG_DrawTinyDigitalString( x + 4, y+4, s, 1.0F); - - if ( cgs.gametype == GT_CTF ) { - // Display flag status - item = BG_FindItemForPowerup( PW_BLUEFLAG ); + if ( cgs.gametype == GT_CTF ) { + // Display green flag status + item = BG_FindItemForPowerup( PW_GREENFLAG ); if (item) { - y1 = y + TINYCHAR_HEIGHT + 8; - if( cgs.blueflag >= 0 && cgs.blueflag <= 2 ) { + y1 = y + TINYCHAR_HEIGHT + 8; + if( cgs.greenflag >= 0 && cgs.greenflag <= 2 ) { + + CG_DrawPic( x+1, y1+1, w-2, 16, cgs.media.greenFlagShader[cgs.greenflag] ); + + } + } + } + + // draw blue + + color[0] = 0.0f; + color[1] = 0.0f; + color[2] = 1.0f; + color[3] = 0.33f; + s = va( "%2i", s2 ); + w = CG_DrawStrlen( s ) * TINYCHAR_WIDTH + 8; + x -= w; + CG_FillRect( x+1, y+1, w-2, 16, color ); + if ( cg.snap->ps.persistant[PERS_TEAM] == TEAM_BLUE ) { + CG_DrawPic( x+1, y+1, w-2, 16, cgs.media.selectShader ); + } + CG_DrawTinyDigitalString( x + 4, y+4, s, 1.0F); + + if ( cgs.gametype == GT_CTF ) { + // Display blue flag status + item = BG_FindItemForPowerup( PW_BLUEFLAG ); + + if (item) { + + y1 = y + TINYCHAR_HEIGHT + 8; + if( cgs.blueflag >= 0 && cgs.blueflag <= 2 ) { CG_DrawPic( x+1, y1+1, w-2, 16, cgs.media.blueFlagShader[cgs.blueflag] ); - } - } - } + } + } + } + + // draw red - color[0] = 1.0f; - color[1] = 0.0f; - color[2] = 0.0f; - color[3] = 0.33f; - s = va( "%2i", s1 ); - w = CG_DrawStrlen( s ) * TINYCHAR_WIDTH + 8; - x -= w; + color[0] = 1.0f; + color[1] = 0.0f; + color[2] = 0.0f; + color[3] = 0.33f; + s = va( "%2i", s1 ); + w = CG_DrawStrlen( s ) * TINYCHAR_WIDTH + 8; + x -= w; + CG_FillRect( x+1, y+1, w-2, 16, color ); + if ( cg.snap->ps.persistant[PERS_TEAM] == TEAM_RED ) { + CG_DrawPic( x+1, y+1, w-2, 16, cgs.media.selectShader ); + } + CG_DrawTinyDigitalString( x + 4, y+4, s, 1.0F); - CG_FillRect( x+1, y+1, w-2, 16, color ); - if ( cg.snap->ps.persistant[PERS_TEAM] == TEAM_RED ) { - - CG_DrawPic( x+1, y+1, w-2, 16, cgs.media.selectShader ); - - } - - CG_DrawTinyDigitalString( x + 4, y+4, s, 1.0F); - - if ( cgs.gametype == GT_CTF ) { - // Display flag status - item = BG_FindItemForPowerup( PW_REDFLAG ); + if ( cgs.gametype == GT_CTF ) { + // Display red flag status + item = BG_FindItemForPowerup( PW_REDFLAG ); if (item) { - y1 = y + TINYCHAR_HEIGHT + 8; + y1 = y + TINYCHAR_HEIGHT + 8; + if( cgs.redflag >= 0 && cgs.redflag <= 2 ) { - if( cgs.redflag >= 0 && cgs.redflag <= 2 ) { - - - } - } - } + CG_DrawPic( x+1, y1+1, w-2, 16, cgs.media.redFlagShader[cgs.redflag] ); + + } + } + } + + #ifdef MISSIONPACK if ( cgs.gametype == GT_1FCTF ) { // Display flag status diff --git a/engine/code/cgame/cg_local.h b/engine/code/cgame/cg_local.h index 104039a4..6f711c4c 100644 --- a/engine/code/cgame/cg_local.h +++ b/engine/code/cgame/cg_local.h @@ -1244,7 +1244,7 @@ typedef struct { // Q3Rally Code Start int scores3, scores4; // from configstrings // Q3Rally Code END - int redflag, blueflag; // flag status from configstrings + int redflag, blueflag, greenflag, yellowflag; // flag status from configstrings int flagStatus; int sigil[MAX_SIGILS]; qboolean newHud; diff --git a/engine/code/cgame/cg_main.c b/engine/code/cgame/cg_main.c index 7dec7aa2..ff6ccdef 100644 --- a/engine/code/cgame/cg_main.c +++ b/engine/code/cgame/cg_main.c @@ -2203,7 +2203,7 @@ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum ) { cg.weaponSelect = WP_MACHINEGUN; - cgs.redflag = cgs.blueflag = -1; // For compatibily, default to unset for + cgs.redflag = cgs.blueflag = cgs.greenflag = cgs.yellowflag = -1; // For compatibily, default to unset for cgs.flagStatus = -1; // Q3Rally Code Start for ( i = 0; i < MAX_SIGILS; i++ ) { diff --git a/engine/code/cgame/cg_servercmds.c b/engine/code/cgame/cg_servercmds.c index f58bcbff..a504fa63 100644 --- a/engine/code/cgame/cg_servercmds.c +++ b/engine/code/cgame/cg_servercmds.c @@ -284,6 +284,8 @@ void CG_SetConfigValues( void ) { s = CG_ConfigString( CS_FLAGSTATUS ); cgs.redflag = s[0] - '0'; cgs.blueflag = s[1] - '0'; + cgs.greenflag = s[2] - '0'; + cgs.yellowflag = s[3] - '0'; } else if ( cgs.gametype == GT_DOMINATION ) { diff --git a/engine/code/qcommon/q_shared.h b/engine/code/qcommon/q_shared.h index cbf65dc7..3c6aeff3 100644 --- a/engine/code/qcommon/q_shared.h +++ b/engine/code/qcommon/q_shared.h @@ -70,7 +70,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define BASETA "missionpack" #ifndef PRODUCT_VERSION -#define PRODUCT_VERSION "v0.5 r606" +#define PRODUCT_VERSION "v0.5 r607" #endif diff --git a/q3rallycode.ppr b/q3rallycode.ppr index 7f0c3fa4bd23759ba9cf900fafd546b96c62e066..f237ab0eaca318ff69e9e1093abe81ca0adb2f3d 100644 GIT binary patch delta 219 zcmeC}V!GMQwBcnvvyq|gIoVQ*63g|H zCmS|s2^pK1@NzjP7NwTh8XM~v8k-qSKHnrhxuv0-(Q>jtqZPk_0ZiUf$I#Gl^1}wn z%|(r}%)*97hL$iXQv)4CBNOw<^IP&J8#jmnE#{Gr<>d;=FYw9COSLsJH-xD)G}1A$ lFz4lp202QjC^ap$C^auRwOB71Nxg+JOu2=zj->@J7XS@bLm2=7 delta 111 zcmccF&D7h)wBcp_WU~gd$$hmVlNU9KO`hB!BxG)2!pr5HSd>~~Yiy!pXl`UW`9YJ& zWI0*x$=4d18O@1)i!0Io_U AyZ`_I From e063f6a4fd5a9da3c6ef6abd101a91c961a2534e Mon Sep 17 00:00:00 2001 From: perle Date: Mon, 29 Jul 2024 23:37:56 +0200 Subject: [PATCH 3/4] updated entities.def for 4TCTF --- engine/code/qcommon/q_shared.h | 2 +- q3rallycode.ppr | Bin 34265 -> 32232 bytes .../q3rally.game/baseq3r/entities.def | 68 +++++++++++++++--- 3 files changed, 58 insertions(+), 12 deletions(-) diff --git a/engine/code/qcommon/q_shared.h b/engine/code/qcommon/q_shared.h index 3c6aeff3..899a2ba4 100644 --- a/engine/code/qcommon/q_shared.h +++ b/engine/code/qcommon/q_shared.h @@ -70,7 +70,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define BASETA "missionpack" #ifndef PRODUCT_VERSION -#define PRODUCT_VERSION "v0.5 r607" +#define PRODUCT_VERSION "v0.5 r608" #endif diff --git a/q3rallycode.ppr b/q3rallycode.ppr index f237ab0eaca318ff69e9e1093abe81ca0adb2f3d..41e469d51eb45a94342a0b17d11d4eaee108ef20 100644 GIT binary patch delta 43 vcmccF&Gh0o;|BlQ$$hmVlg%2;!1U(^EkQFwUM}avqSO*wV^bY-V_q%*oB|K3 delta 1391 zcmaKs&rcIU6vty55f&Cx6ykvv#26YgA^YaXcJ|PV9MupL96EU2< zX!dN3e*lU9hkt>Ie}E_c0WZFpWri_CZabaNd-HwoeP4h7x%Km7?fc$o`K7TC42tw* zCkq4UmSMA1quui5v*zuiFks#Cb7OT;y;u261Kga;i^hCSn9nd*CpJ2+F2AnanbT~? z9`Dv<#U2-GFv?7##Qd^1%_fC9oTSCTJRfycJ{;w$pG^j;KTOA}pNDqJ`fm8ow7Ehsw`3R>S=5C?8HuBq~QDoTbH38F_%> zb<9kqV?&q)X?{a&C9I%uZw7?*-ejo~E{| z(|#DdnjAmJ>bt-=4};ybP_r&$1XxVNpogPbZ+R3;z(NV(QLGUhTlwR3X+ ziMcTja*r$bd#VMva*^axm#g=pZTG@srNo-5VFJV?sd}l?+LiI(_{zILq!}fW+tn(0 z97J))X5|zuB2kbY=lVmRqTnhQ5gL?ZP!E@I?X^egzFq3W?%X)JBQFf}YE*F)Cnrr; ntHoXNyH7i=t3U~rMglH%yHIabq4G@O|A?3O%6XEJ1m*k%7xs^c diff --git a/tools/radiant-config/radiant15-netradiant/q3rally.game/baseq3r/entities.def b/tools/radiant-config/radiant15-netradiant/q3rally.game/baseq3r/entities.def index 94825a64..118ae567 100644 --- a/tools/radiant-config/radiant15-netradiant/q3rally.game/baseq3r/entities.def +++ b/tools/radiant-config/radiant15-netradiant/q3rally.game/baseq3r/entities.def @@ -1,4 +1,4 @@ -// Quake3 Arena entity definition file for Q3Radiant +// Q3Rally entity definition file for NetRadiant // Based on draft by Suicide 20 7.30.99 and inolen 9-3-99 // Upgraded by Eutectic: eutectic@ritualistic.com // Q3Rally model defs added (info_player_start scale modified) by: To-mos 3-13-2021 @@ -2038,15 +2038,14 @@ TEAM_* ENTITIES //============================================================================= -/*QUAKED team_CTF_blueflag (0 .2 1) (-16 -16 -16) (16 16 16) +/*QUAKED team_CTF_blueflag (0 0 1) (-16 -16 -16) (16 16 16) Blue team flag for CTF games. -------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- model="models/flags/b_flag.md3"*/ //============================================================================= -//*QUAKED team_CTF_blueplayer (0 .2 1) (-16 -16 -24) (16 16 32) -/*QUAKED team_CTF_blueplayer (0 .2 1) (-50 -24 -24) (50 24 24) +/*QUAKED team_CTF_blueplayer (0 0 1) (-50 -24 -24) (50 24 24) Initial Blue team spawning position for CTF games. This is where players spawn when they join the Blue team. -------- KEYS -------- target : this can point at a target_give entity for respawn freebies. @@ -2056,8 +2055,7 @@ count : number of times this spawnpoint can be used to spawn a player. Omit or s //============================================================================= -//*QUAKED team_CTF_bluespawn (0 .2 1) (-16 -16 -24) (16 16 32) -/*QUAKED team_CTF_bluespawn (0 .2 1) (-50 -24 -24) (50 24 24) +/*QUAKED team_CTF_bluespawn (0 0 1) (-50 -24 -24) (50 24 24) Blue team respawning position for CTF games. This is where Blue team players respawn after they get fragged. -------- KEYS -------- target : this can point at a target_give entity for respawn freebies. @@ -2066,15 +2064,14 @@ count : number of times this spawnpoint can be used to spawn a player. Omit or s //============================================================================= -/*QUAKED team_CTF_redflag (1 .2 0) (-16 -16 -16) (16 16 16) +/*QUAKED team_CTF_redflag (1 0 0) (-16 -16 -16) (16 16 16) Red team flag for CTF games. -------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- model="models/flags/r_flag.md3"*/ //============================================================================= -//*QUAKED team_CTF_redplayer (1 .2 0) (-16 -16 -24) (16 16 32) -/*QUAKED team_CTF_redplayer (1 .2 0) (-50 -24 -24) (50 24 24) +/*QUAKED team_CTF_redplayer (1 0 0) (-50 -24 -24) (50 24 24) Initial Red team spawning position for CTF games. This is where players spawn when they join the Red team. -------- KEYS -------- target : this can point at a target_give entity for respawn freebies. @@ -2083,8 +2080,7 @@ count : number of times this spawnpoint can be used to spawn a player. Omit or s //============================================================================= -//*QUAKED team_CTF_redspawn (1 .2 0) (-16 -16 -24) (16 16 32) -/*QUAKED team_CTF_redspawn (1 .2 0) (-50 -24 -24) (50 24 24) +/*QUAKED team_CTF_redspawn (1 0 0) (-50 -24 -24) (50 24 24) Red team respawning position for CTF games. This is where Red team players respawn after they get fragged. -------- KEYS -------- target : this can point at a target_give entity for respawn freebies. @@ -2093,6 +2089,56 @@ count : number of times this spawnpoint can be used to spawn a player. Omit or s //============================================================================= +/*QUAKED team_CTF_greenflag (0 1 0) (-16 -16 -16) (16 16 16) +Green team flag for CTF games. +-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- +model="models/flags/g_flag.md3"*/ + +//============================================================================= + +/*QUAKED team_CTF_greenplayer (0 1 0) (-50 -24 -24) (50 24 24) +Initial Green team spawning position for CTF games. This is where players spawn when they join the Green team. +-------- KEYS -------- +target : this can point at a target_give entity for respawn freebies. +target2 : this can point at a target_give entity for respawn freebies. +count : number of times this spawnpoint can be used to spawn a player. Omit or set to 0 to set no limit.*/ + +//============================================================================= + +/*QUAKED team_CTF_greenspawn (0 1 0) (-50 -24 -24) (50 24 24) +Green team respawning position for CTF games. This is where Green team players respawn after they get fragged. +-------- KEYS -------- +target : this can point at a target_give entity for respawn freebies. +target2 : this can point at a target_give entity for respawn freebies. +count : number of times this spawnpoint can be used to spawn a player. Omit or set to 0 to set no limit.*/ + +//============================================================================= + +/*QUAKED team_CTF_yellowflag (1 1 0) (-16 -16 -16) (16 16 16) +Yellow team flag for CTF games. +-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- +model="models/flags/y_flag.md3"*/ + +//============================================================================= + +/*QUAKED team_CTF_yellowplayer (1 1 0) (-50 -24 -24) (50 24 24) +Initial Yellow team spawning position for CTF games. This is where players spawn when they join the Yellow team. +-------- KEYS -------- +target : this can point at a target_give entity for respawn freebies. +target2 : this can point at a target_give entity for respawn freebies. +count : number of times this spawnpoint can be used to spawn a player. Omit or set to 0 to set no limit.*/ + +//============================================================================= + +/*QUAKED team_CTF_yellowspawn (1 1 0) (-50 -24 -24) (50 24 24) +Yellow team respawning position for CTF games. This is where Yellow team players respawn after they get fragged. +-------- KEYS -------- +target : this can point at a target_give entity for respawn freebies. +target2 : this can point at a target_give entity for respawn freebies. +count : number of times this spawnpoint can be used to spawn a player. Omit or set to 0 to set no limit.*/ + +//============================================================================= + TRIGGER_* ENTITIES //============================================================================= From 4347bd4648d9315f81c43fe093cb4a6b6ef8a030 Mon Sep 17 00:00:00 2001 From: perle Date: Wed, 31 Jul 2024 23:13:00 +0200 Subject: [PATCH 4/4] Revert "updated entities.def for 4TCTF" This reverts commit e063f6a4fd5a9da3c6ef6abd101a91c961a2534e. --- engine/code/qcommon/q_shared.h | 2 +- q3rallycode.ppr | Bin 32232 -> 34265 bytes .../q3rally.game/baseq3r/entities.def | 68 +++--------------- 3 files changed, 12 insertions(+), 58 deletions(-) diff --git a/engine/code/qcommon/q_shared.h b/engine/code/qcommon/q_shared.h index 899a2ba4..3c6aeff3 100644 --- a/engine/code/qcommon/q_shared.h +++ b/engine/code/qcommon/q_shared.h @@ -70,7 +70,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define BASETA "missionpack" #ifndef PRODUCT_VERSION -#define PRODUCT_VERSION "v0.5 r608" +#define PRODUCT_VERSION "v0.5 r607" #endif diff --git a/q3rallycode.ppr b/q3rallycode.ppr index 41e469d51eb45a94342a0b17d11d4eaee108ef20..f237ab0eaca318ff69e9e1093abe81ca0adb2f3d 100644 GIT binary patch delta 1391 zcmaKs&rcIU6vty55f&Cx6ykvv#26YgA^YaXcJ|PV9MupL96EU2< zX!dN3e*lU9hkt>Ie}E_c0WZFpWri_CZabaNd-HwoeP4h7x%Km7?fc$o`K7TC42tw* zCkq4UmSMA1quui5v*zuiFks#Cb7OT;y;u261Kga;i^hCSn9nd*CpJ2+F2AnanbT~? z9`Dv<#U2-GFv?7##Qd^1%_fC9oTSCTJRfycJ{;w$pG^j;KTOA}pNDqJ`fm8ow7Ehsw`3R>S=5C?8HuBq~QDoTbH38F_%> zb<9kqV?&q)X?{a&C9I%uZw7?*-ejo~E{| z(|#DdnjAmJ>bt-=4};ybP_r&$1XxVNpogPbZ+R3;z(NV(QLGUhTlwR3X+ ziMcTja*r$bd#VMva*^axm#g=pZTG@srNo-5VFJV?sd}l?+LiI(_{zILq!}fW+tn(0 z97J))X5|zuB2kbY=lVmRqTnhQ5gL?ZP!E@I?X^egzFq3W?%X)JBQFf}YE*F)Cnrr; ntHoXNyH7i=t3U~rMglH%yHIabq4G@O|A?3O%6XEJ1m*k%7xs^c delta 43 vcmccF&Gh0o;|BlQ$$hmVlg%2;!1U(^EkQFwUM}avqSO*wV^bY-V_q%*oB|K3 diff --git a/tools/radiant-config/radiant15-netradiant/q3rally.game/baseq3r/entities.def b/tools/radiant-config/radiant15-netradiant/q3rally.game/baseq3r/entities.def index 118ae567..94825a64 100644 --- a/tools/radiant-config/radiant15-netradiant/q3rally.game/baseq3r/entities.def +++ b/tools/radiant-config/radiant15-netradiant/q3rally.game/baseq3r/entities.def @@ -1,4 +1,4 @@ -// Q3Rally entity definition file for NetRadiant +// Quake3 Arena entity definition file for Q3Radiant // Based on draft by Suicide 20 7.30.99 and inolen 9-3-99 // Upgraded by Eutectic: eutectic@ritualistic.com // Q3Rally model defs added (info_player_start scale modified) by: To-mos 3-13-2021 @@ -2038,14 +2038,15 @@ TEAM_* ENTITIES //============================================================================= -/*QUAKED team_CTF_blueflag (0 0 1) (-16 -16 -16) (16 16 16) +/*QUAKED team_CTF_blueflag (0 .2 1) (-16 -16 -16) (16 16 16) Blue team flag for CTF games. -------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- model="models/flags/b_flag.md3"*/ //============================================================================= -/*QUAKED team_CTF_blueplayer (0 0 1) (-50 -24 -24) (50 24 24) +//*QUAKED team_CTF_blueplayer (0 .2 1) (-16 -16 -24) (16 16 32) +/*QUAKED team_CTF_blueplayer (0 .2 1) (-50 -24 -24) (50 24 24) Initial Blue team spawning position for CTF games. This is where players spawn when they join the Blue team. -------- KEYS -------- target : this can point at a target_give entity for respawn freebies. @@ -2055,7 +2056,8 @@ count : number of times this spawnpoint can be used to spawn a player. Omit or s //============================================================================= -/*QUAKED team_CTF_bluespawn (0 0 1) (-50 -24 -24) (50 24 24) +//*QUAKED team_CTF_bluespawn (0 .2 1) (-16 -16 -24) (16 16 32) +/*QUAKED team_CTF_bluespawn (0 .2 1) (-50 -24 -24) (50 24 24) Blue team respawning position for CTF games. This is where Blue team players respawn after they get fragged. -------- KEYS -------- target : this can point at a target_give entity for respawn freebies. @@ -2064,14 +2066,15 @@ count : number of times this spawnpoint can be used to spawn a player. Omit or s //============================================================================= -/*QUAKED team_CTF_redflag (1 0 0) (-16 -16 -16) (16 16 16) +/*QUAKED team_CTF_redflag (1 .2 0) (-16 -16 -16) (16 16 16) Red team flag for CTF games. -------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- model="models/flags/r_flag.md3"*/ //============================================================================= -/*QUAKED team_CTF_redplayer (1 0 0) (-50 -24 -24) (50 24 24) +//*QUAKED team_CTF_redplayer (1 .2 0) (-16 -16 -24) (16 16 32) +/*QUAKED team_CTF_redplayer (1 .2 0) (-50 -24 -24) (50 24 24) Initial Red team spawning position for CTF games. This is where players spawn when they join the Red team. -------- KEYS -------- target : this can point at a target_give entity for respawn freebies. @@ -2080,7 +2083,8 @@ count : number of times this spawnpoint can be used to spawn a player. Omit or s //============================================================================= -/*QUAKED team_CTF_redspawn (1 0 0) (-50 -24 -24) (50 24 24) +//*QUAKED team_CTF_redspawn (1 .2 0) (-16 -16 -24) (16 16 32) +/*QUAKED team_CTF_redspawn (1 .2 0) (-50 -24 -24) (50 24 24) Red team respawning position for CTF games. This is where Red team players respawn after they get fragged. -------- KEYS -------- target : this can point at a target_give entity for respawn freebies. @@ -2089,56 +2093,6 @@ count : number of times this spawnpoint can be used to spawn a player. Omit or s //============================================================================= -/*QUAKED team_CTF_greenflag (0 1 0) (-16 -16 -16) (16 16 16) -Green team flag for CTF games. --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/flags/g_flag.md3"*/ - -//============================================================================= - -/*QUAKED team_CTF_greenplayer (0 1 0) (-50 -24 -24) (50 24 24) -Initial Green team spawning position for CTF games. This is where players spawn when they join the Green team. --------- KEYS -------- -target : this can point at a target_give entity for respawn freebies. -target2 : this can point at a target_give entity for respawn freebies. -count : number of times this spawnpoint can be used to spawn a player. Omit or set to 0 to set no limit.*/ - -//============================================================================= - -/*QUAKED team_CTF_greenspawn (0 1 0) (-50 -24 -24) (50 24 24) -Green team respawning position for CTF games. This is where Green team players respawn after they get fragged. --------- KEYS -------- -target : this can point at a target_give entity for respawn freebies. -target2 : this can point at a target_give entity for respawn freebies. -count : number of times this spawnpoint can be used to spawn a player. Omit or set to 0 to set no limit.*/ - -//============================================================================= - -/*QUAKED team_CTF_yellowflag (1 1 0) (-16 -16 -16) (16 16 16) -Yellow team flag for CTF games. --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/flags/y_flag.md3"*/ - -//============================================================================= - -/*QUAKED team_CTF_yellowplayer (1 1 0) (-50 -24 -24) (50 24 24) -Initial Yellow team spawning position for CTF games. This is where players spawn when they join the Yellow team. --------- KEYS -------- -target : this can point at a target_give entity for respawn freebies. -target2 : this can point at a target_give entity for respawn freebies. -count : number of times this spawnpoint can be used to spawn a player. Omit or set to 0 to set no limit.*/ - -//============================================================================= - -/*QUAKED team_CTF_yellowspawn (1 1 0) (-50 -24 -24) (50 24 24) -Yellow team respawning position for CTF games. This is where Yellow team players respawn after they get fragged. --------- KEYS -------- -target : this can point at a target_give entity for respawn freebies. -target2 : this can point at a target_give entity for respawn freebies. -count : number of times this spawnpoint can be used to spawn a player. Omit or set to 0 to set no limit.*/ - -//============================================================================= - TRIGGER_* ENTITIES //=============================================================================