mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 08:52:00 +00:00
Team DukeMatch support
git-svn-id: https://svn.eduke32.com/eduke32@268 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
929ab76c77
commit
a7bad3d852
11 changed files with 195 additions and 49 deletions
|
@ -890,6 +890,13 @@ short ifhitbyweapon(short sn)
|
||||||
ud.ffire == 0 )
|
ud.ffire == 0 )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if( j >= 0 &&
|
||||||
|
sprite[j].picnum == APLAYER &&
|
||||||
|
(gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM) &&
|
||||||
|
ps[p].team == ps[sprite[j].yvel].team &&
|
||||||
|
ud.ffire == 0 )
|
||||||
|
return -1;
|
||||||
|
|
||||||
npc->extra -= hittype[sn].extra;
|
npc->extra -= hittype[sn].extra;
|
||||||
|
|
||||||
if(j >= 0)
|
if(j >= 0)
|
||||||
|
|
|
@ -255,6 +255,7 @@ void CONFIG_SetDefaults( void )
|
||||||
ud.shadows = 1;
|
ud.shadows = 1;
|
||||||
ud.statusbarmode = 0;
|
ud.statusbarmode = 0;
|
||||||
ud.statusbarscale = 100;
|
ud.statusbarscale = 100;
|
||||||
|
ud.team = 0;
|
||||||
ud.weaponswitch = 3; // new+empty
|
ud.weaponswitch = 3; // new+empty
|
||||||
UseJoystick = 0;
|
UseJoystick = 0;
|
||||||
UseMouse = 1;
|
UseMouse = 1;
|
||||||
|
@ -660,6 +661,8 @@ int32 CONFIG_ReadSetup( void )
|
||||||
SCRIPT_GetNumber( scripthandle, "Misc", "ShowFPS",&ud.tickrate);
|
SCRIPT_GetNumber( scripthandle, "Misc", "ShowFPS",&ud.tickrate);
|
||||||
SCRIPT_GetNumber( scripthandle, "Misc", "Color",&ud.color);
|
SCRIPT_GetNumber( scripthandle, "Misc", "Color",&ud.color);
|
||||||
ps[0].palookup = ud.pcolor[0] = ud.color;
|
ps[0].palookup = ud.pcolor[0] = ud.color;
|
||||||
|
SCRIPT_GetNumber( scripthandle, "Misc", "Team",&ud.team);
|
||||||
|
ps[0].team = ud.pteam[0] = ud.team;
|
||||||
SCRIPT_GetNumber( scripthandle, "Misc", "MPMessageDisplayTime",&ud.msgdisptime);
|
SCRIPT_GetNumber( scripthandle, "Misc", "MPMessageDisplayTime",&ud.msgdisptime);
|
||||||
SCRIPT_GetNumber( scripthandle, "Misc", "StatusBarMode",&ud.statusbarmode);
|
SCRIPT_GetNumber( scripthandle, "Misc", "StatusBarMode",&ud.statusbarmode);
|
||||||
SCRIPT_GetNumber( scripthandle, "Misc", "AutoVote",&ud.autovote);
|
SCRIPT_GetNumber( scripthandle, "Misc", "AutoVote",&ud.autovote);
|
||||||
|
@ -762,6 +765,7 @@ void CONFIG_WriteSetup( void )
|
||||||
SCRIPT_PutNumber( scripthandle, "Misc", "ShowViewWeapon",ud.drawweapon,false,false);
|
SCRIPT_PutNumber( scripthandle, "Misc", "ShowViewWeapon",ud.drawweapon,false,false);
|
||||||
SCRIPT_PutNumber( scripthandle, "Misc", "StatusBarMode",ud.statusbarmode,false,false);
|
SCRIPT_PutNumber( scripthandle, "Misc", "StatusBarMode",ud.statusbarmode,false,false);
|
||||||
SCRIPT_PutNumber( scripthandle, "Misc", "StatusBarScale",ud.statusbarscale,false,false);
|
SCRIPT_PutNumber( scripthandle, "Misc", "StatusBarScale",ud.statusbarscale,false,false);
|
||||||
|
SCRIPT_PutNumber( scripthandle, "Misc", "Team",ud.team,false,false);
|
||||||
SCRIPT_PutNumber( scripthandle, "Misc", "UsePrecache",useprecache,false,false);
|
SCRIPT_PutNumber( scripthandle, "Misc", "UsePrecache",useprecache,false,false);
|
||||||
|
|
||||||
SCRIPT_PutNumber( scripthandle, "Screen Setup", "Detail",ud.detail,false,false);
|
SCRIPT_PutNumber( scripthandle, "Screen Setup", "Detail",ud.detail,false,false);
|
||||||
|
|
|
@ -54,7 +54,7 @@ extern int conversion, shareware, gametype;
|
||||||
#define BYTEVERSION_13 27
|
#define BYTEVERSION_13 27
|
||||||
#define BYTEVERSION_14 116
|
#define BYTEVERSION_14 116
|
||||||
#define BYTEVERSION_15 117
|
#define BYTEVERSION_15 117
|
||||||
#define BYTEVERSION_JF 165 // increase by 3, because atomic GRP adds 1, and Shareware adds 2
|
#define BYTEVERSION_JF 168 // increase by 3, because atomic GRP adds 1, and Shareware adds 2
|
||||||
|
|
||||||
#define BYTEVERSION (BYTEVERSION_JF+(PLUTOPAK?1:(VOLUMEONE<<1))) // JBF 20040116: different data files give different versions
|
#define BYTEVERSION (BYTEVERSION_JF+(PLUTOPAK?1:(VOLUMEONE<<1))) // JBF 20040116: different data files give different versions
|
||||||
|
|
||||||
|
@ -342,6 +342,7 @@ struct user_defs {
|
||||||
int32 runkey_mode,statusbarscale,mouseaiming,weaponswitch,drawweapon; // JBF 20031125
|
int32 runkey_mode,statusbarscale,mouseaiming,weaponswitch,drawweapon; // JBF 20031125
|
||||||
int32 democams,color,pcolor[MAXPLAYERS],msgdisptime,statusbarmode;
|
int32 democams,color,pcolor[MAXPLAYERS],msgdisptime,statusbarmode;
|
||||||
int32 m_noexits,noexits,autovote,automsg,idplayers;
|
int32 m_noexits,noexits,autovote,automsg,idplayers;
|
||||||
|
int32 team, pteam[MAXPLAYERS];
|
||||||
|
|
||||||
int32 entered_name,screen_tilting,shadows,fta_on,executions,auto_run;
|
int32 entered_name,screen_tilting,shadows,fta_on,executions,auto_run;
|
||||||
int32 coords,tickrate,levelstats,m_coop,coop,screen_size,lockout,crosshair;
|
int32 coords,tickrate,levelstats,m_coop,coop,screen_size,lockout,crosshair;
|
||||||
|
@ -415,7 +416,7 @@ struct player_struct {
|
||||||
char return_to_center, reloading;
|
char return_to_center, reloading;
|
||||||
|
|
||||||
long max_secret_rooms,secret_rooms,max_actors_killed,actors_killed;
|
long max_secret_rooms,secret_rooms,max_actors_killed,actors_killed;
|
||||||
long runspeed, movement_lock;
|
long runspeed, movement_lock, team;
|
||||||
short sbs, sound_pitch;
|
short sbs, sound_pitch;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -541,7 +542,9 @@ enum gametypeflags {
|
||||||
GAMETYPE_FLAG_PLAYERSFRIENDLY = 4096,
|
GAMETYPE_FLAG_PLAYERSFRIENDLY = 4096,
|
||||||
GAMETYPE_FLAG_FIXEDRESPAWN = 8192,
|
GAMETYPE_FLAG_FIXEDRESPAWN = 8192,
|
||||||
GAMETYPE_FLAG_ACCESSATSTART = 16384,
|
GAMETYPE_FLAG_ACCESSATSTART = 16384,
|
||||||
GAMETYPE_FLAG_PRESERVEINVENTORYDEATH = 32768
|
GAMETYPE_FLAG_PRESERVEINVENTORYDEATH = 32768,
|
||||||
|
GAMETYPE_FLAG_TDM = 65536,
|
||||||
|
GAMETYPE_FLAG_TDMSPAWN = 131072
|
||||||
};
|
};
|
||||||
|
|
||||||
extern char level_file_names[MAXVOLUMES*11][BMAX_PATH];
|
extern char level_file_names[MAXVOLUMES*11][BMAX_PATH];
|
||||||
|
|
|
@ -765,6 +765,23 @@ if( !(ps[myconnectindex].gm&MODE_GAME) ) { OSD_DispatchQueued(); }
|
||||||
ps[other].auto_aim = packbuf[i++];
|
ps[other].auto_aim = packbuf[i++];
|
||||||
ps[other].weaponswitch = packbuf[i++];
|
ps[other].weaponswitch = packbuf[i++];
|
||||||
ps[other].palookup = ud.pcolor[other] = packbuf[i++];
|
ps[other].palookup = ud.pcolor[other] = packbuf[i++];
|
||||||
|
j = ps[other].team;
|
||||||
|
ps[other].team = ud.pteam[other] = packbuf[i++];
|
||||||
|
|
||||||
|
if(ps[other].team != j && sprite[ps[other].i].picnum == APLAYER)
|
||||||
|
hittype[ps[other].i].extra = 1000;
|
||||||
|
|
||||||
|
if(gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM)
|
||||||
|
{
|
||||||
|
j = 0;
|
||||||
|
switch(ps[other].team)
|
||||||
|
{
|
||||||
|
case 0: j = 3; break;
|
||||||
|
case 1: j = 10; break;
|
||||||
|
}
|
||||||
|
ps[other].palookup = ud.pcolor[other] = j;
|
||||||
|
}
|
||||||
|
|
||||||
if(sprite[ps[other].i].picnum == APLAYER)
|
if(sprite[ps[other].i].picnum == APLAYER)
|
||||||
sprite[ps[other].i].pal = ud.pcolor[other];
|
sprite[ps[other].i].pal = ud.pcolor[other];
|
||||||
break;
|
break;
|
||||||
|
@ -8152,8 +8169,16 @@ void checkcommandline(int argc,char **argv)
|
||||||
ud.m_respawn_monsters = ud.respawn_monsters = 1;
|
ud.m_respawn_monsters = ud.respawn_monsters = 1;
|
||||||
ud.m_respawn_items = ud.respawn_items = 1;
|
ud.m_respawn_items = ud.respawn_items = 1;
|
||||||
ud.m_respawn_inventory = ud.respawn_inventory = 1;
|
ud.m_respawn_inventory = ud.respawn_inventory = 1;
|
||||||
|
{
|
||||||
|
char k = 1;
|
||||||
for(j=numplayers;j<ud.multimode;j++)
|
for(j=numplayers;j<ud.multimode;j++)
|
||||||
|
{
|
||||||
Bsprintf(ud.user_name[j],"PLAYER %d",j+1);
|
Bsprintf(ud.user_name[j],"PLAYER %d",j+1);
|
||||||
|
ps[j].team = ud.pteam[j] = k;
|
||||||
|
initprintf("p %d t %d\n",j,ps[j].team);
|
||||||
|
k = 1-k;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
case 'R':
|
case 'R':
|
||||||
|
@ -8727,6 +8752,23 @@ void syncnames(void)
|
||||||
buf[l++] = ps[myconnectindex].weaponswitch = ud.weaponswitch;
|
buf[l++] = ps[myconnectindex].weaponswitch = ud.weaponswitch;
|
||||||
buf[l++] = ps[myconnectindex].palookup = ud.pcolor[myconnectindex] = ud.color;
|
buf[l++] = ps[myconnectindex].palookup = ud.pcolor[myconnectindex] = ud.color;
|
||||||
|
|
||||||
|
i = ps[myconnectindex].team;
|
||||||
|
buf[l++] = ps[myconnectindex].team = ud.pteam[myconnectindex] = ud.team;
|
||||||
|
|
||||||
|
if(ps[myconnectindex].team != i && sprite[ps[myconnectindex].i].picnum == APLAYER)
|
||||||
|
hittype[ps[myconnectindex].i].extra = 1000;
|
||||||
|
|
||||||
|
if(gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM)
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
switch(ps[myconnectindex].team)
|
||||||
|
{
|
||||||
|
case 0: i = 3; break;
|
||||||
|
case 1: i = 10; break;
|
||||||
|
}
|
||||||
|
ps[myconnectindex].palookup = ud.pcolor[myconnectindex] = i;
|
||||||
|
}
|
||||||
|
|
||||||
for(i=connecthead;i>=0;i=connectpoint2[i])
|
for(i=connecthead;i>=0;i=connectpoint2[i])
|
||||||
{
|
{
|
||||||
if (i != myconnectindex) sendpacket(i,&buf[0],l);
|
if (i != myconnectindex) sendpacket(i,&buf[0],l);
|
||||||
|
@ -8790,17 +8832,22 @@ void updatenames(void)
|
||||||
{
|
{
|
||||||
syncnames();
|
syncnames();
|
||||||
if(sprite[ps[myconnectindex].i].picnum == APLAYER)
|
if(sprite[ps[myconnectindex].i].picnum == APLAYER)
|
||||||
sprite[ps[myconnectindex].i].pal = ud.color;
|
sprite[ps[myconnectindex].i].pal = ud.pcolor[myconnectindex];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
int j;
|
||||||
|
|
||||||
ps[myconnectindex].aim_mode = ud.mouseaiming;
|
ps[myconnectindex].aim_mode = ud.mouseaiming;
|
||||||
ps[myconnectindex].auto_aim = AutoAim;
|
ps[myconnectindex].auto_aim = AutoAim;
|
||||||
ps[myconnectindex].weaponswitch = ud.weaponswitch;
|
ps[myconnectindex].weaponswitch = ud.weaponswitch;
|
||||||
ps[myconnectindex].palookup = ud.pcolor[myconnectindex] = ud.color;
|
ps[myconnectindex].palookup = ud.pcolor[myconnectindex] = ud.color;
|
||||||
|
|
||||||
|
j = ps[myconnectindex].team;
|
||||||
|
ps[myconnectindex].team = ud.pteam[myconnectindex] = ud.team;
|
||||||
|
|
||||||
if(sprite[ps[myconnectindex].i].picnum == APLAYER)
|
if(sprite[ps[myconnectindex].i].picnum == APLAYER)
|
||||||
sprite[ps[myconnectindex].i].pal = ud.color;
|
sprite[ps[myconnectindex].i].pal = ud.pcolor[myconnectindex];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9190,7 +9237,19 @@ MAIN_LOOP_RESTART:
|
||||||
ps[myconnectindex].aim_mode = ud.mouseaiming;
|
ps[myconnectindex].aim_mode = ud.mouseaiming;
|
||||||
ps[myconnectindex].auto_aim = AutoAim;
|
ps[myconnectindex].auto_aim = AutoAim;
|
||||||
ps[myconnectindex].weaponswitch = ud.weaponswitch;
|
ps[myconnectindex].weaponswitch = ud.weaponswitch;
|
||||||
ps[myconnectindex].palookup = ud.pcolor[myconnectindex] = ud.color;
|
ps[myconnectindex].team = ud.pteam[myconnectindex] = ud.team;
|
||||||
|
|
||||||
|
if(gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM)
|
||||||
|
{
|
||||||
|
int k = 0;
|
||||||
|
|
||||||
|
switch(ps[myconnectindex].team)
|
||||||
|
{
|
||||||
|
case 0: k = 3; break;
|
||||||
|
case 1: k = 10; break;
|
||||||
|
}
|
||||||
|
ps[myconnectindex].palookup = ud.pcolor[myconnectindex] = k;
|
||||||
|
} else ps[myconnectindex].palookup = ud.pcolor[myconnectindex] = ud.color;
|
||||||
|
|
||||||
ud.warp_on = 0;
|
ud.warp_on = 0;
|
||||||
KB_KeyDown[sc_Pause] = 0; // JBF: I hate the pause key
|
KB_KeyDown[sc_Pause] = 0; // JBF: I hate the pause key
|
||||||
|
@ -9383,12 +9442,15 @@ char opendemoread(char which_demo) // 0 = mine
|
||||||
if (kread(recfilep,(int32 *)&ps[i].weaponswitch,sizeof(int32)) != sizeof(int32)) goto corrupt;
|
if (kread(recfilep,(int32 *)&ps[i].weaponswitch,sizeof(int32)) != sizeof(int32)) goto corrupt;
|
||||||
if (kread(recfilep,(int32 *)&ud.pcolor[i],sizeof(int32)) != sizeof(int32)) goto corrupt;
|
if (kread(recfilep,(int32 *)&ud.pcolor[i],sizeof(int32)) != sizeof(int32)) goto corrupt;
|
||||||
ps[i].palookup = ud.pcolor[i];
|
ps[i].palookup = ud.pcolor[i];
|
||||||
|
if (kread(recfilep,(int32 *)&ud.pteam[i],sizeof(int32)) != sizeof(int32)) goto corrupt;
|
||||||
|
ps[i].team = ud.pteam[i];
|
||||||
if (kread(recfilep,(int32 *)&ud.m_noexits,sizeof(int32)) != sizeof(int32)) goto corrupt;
|
if (kread(recfilep,(int32 *)&ud.m_noexits,sizeof(int32)) != sizeof(int32)) goto corrupt;
|
||||||
} else {
|
} else {
|
||||||
if (kread(recfilep,(int32 *)&ps[i].aim_mode,sizeof(char)) != sizeof(char)) goto corrupt;
|
if (kread(recfilep,(int32 *)&ps[i].aim_mode,sizeof(char)) != sizeof(char)) goto corrupt;
|
||||||
OSD_Printf("aim_mode: %d\n",ps[i].aim_mode);
|
OSD_Printf("aim_mode: %d\n",ps[i].aim_mode);
|
||||||
ps[i].auto_aim = 1;
|
ps[i].auto_aim = 1;
|
||||||
ps[i].weaponswitch = 3;
|
ps[i].weaponswitch = 3;
|
||||||
|
ps[i].team = 0;
|
||||||
ud.m_noexits = 0;
|
ud.m_noexits = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9439,6 +9501,7 @@ void opendemowrite(void)
|
||||||
fwrite((int32 *)&ps[i].auto_aim,sizeof(int32),1,frecfilep); // JBF 20031126
|
fwrite((int32 *)&ps[i].auto_aim,sizeof(int32),1,frecfilep); // JBF 20031126
|
||||||
fwrite(&ps[i].weaponswitch,sizeof(int32),1,frecfilep);
|
fwrite(&ps[i].weaponswitch,sizeof(int32),1,frecfilep);
|
||||||
fwrite(&ud.pcolor[i],sizeof(int32),1,frecfilep);
|
fwrite(&ud.pcolor[i],sizeof(int32),1,frecfilep);
|
||||||
|
fwrite(&ud.pteam[i],sizeof(int32),1,frecfilep);
|
||||||
fwrite((int32 *)&ud.m_noexits,sizeof(int32),1,frecfilep);
|
fwrite((int32 *)&ud.m_noexits,sizeof(int32),1,frecfilep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -688,6 +688,7 @@ LABELS playerlabels[]= {
|
||||||
{ "movement_lock", PLAYER_MOVEMENT_LOCK, 0, 0 },
|
{ "movement_lock", PLAYER_MOVEMENT_LOCK, 0, 0 },
|
||||||
{ "sound_pitch", PLAYER_SOUND_PITCH, 0, 0 },
|
{ "sound_pitch", PLAYER_SOUND_PITCH, 0, 0 },
|
||||||
{ "weaponswitch", PLAYER_WEAPONSWITCH, 0, 0 },
|
{ "weaponswitch", PLAYER_WEAPONSWITCH, 0, 0 },
|
||||||
|
{ "team", PLAYER_TEAM, 0, 0 },
|
||||||
{ "", -1, 0, 0 } // END OF LIST
|
{ "", -1, 0, 0 } // END OF LIST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -811,6 +812,7 @@ LABELS userdefslabels[]= {
|
||||||
{ "autovote", USERDEFS_AUTOVOTE, 0, 0 },
|
{ "autovote", USERDEFS_AUTOVOTE, 0, 0 },
|
||||||
{ "automsg", USERDEFS_AUTOMSG, 0, 0 },
|
{ "automsg", USERDEFS_AUTOMSG, 0, 0 },
|
||||||
{ "idplayers", USERDEFS_IDPLAYERS, 0, 0 },
|
{ "idplayers", USERDEFS_IDPLAYERS, 0, 0 },
|
||||||
|
{ "team", USERDEFS_TEAM, 0, 0 },
|
||||||
{ "", -1, 0, 0 } // END OF LIST
|
{ "", -1, 0, 0 } // END OF LIST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -203,7 +203,8 @@ enum playerlabels {
|
||||||
PLAYER_AUTO_AIM,
|
PLAYER_AUTO_AIM,
|
||||||
PLAYER_MOVEMENT_LOCK,
|
PLAYER_MOVEMENT_LOCK,
|
||||||
PLAYER_SOUND_PITCH,
|
PLAYER_SOUND_PITCH,
|
||||||
PLAYER_WEAPONSWITCH
|
PLAYER_WEAPONSWITCH,
|
||||||
|
PLAYER_TEAM
|
||||||
};
|
};
|
||||||
|
|
||||||
enum userdefslabels {
|
enum userdefslabels {
|
||||||
|
@ -289,7 +290,8 @@ enum userdefslabels {
|
||||||
USERDEFS_NOEXITS,
|
USERDEFS_NOEXITS,
|
||||||
USERDEFS_AUTOVOTE,
|
USERDEFS_AUTOVOTE,
|
||||||
USERDEFS_AUTOMSG,
|
USERDEFS_AUTOMSG,
|
||||||
USERDEFS_IDPLAYERS
|
USERDEFS_IDPLAYERS,
|
||||||
|
USERDEFS_TEAM
|
||||||
};
|
};
|
||||||
|
|
||||||
enum sectorlabels {
|
enum sectorlabels {
|
||||||
|
|
|
@ -649,6 +649,13 @@ void DoUserDef(char bSet, long lLabelID, long lVar2, short sActor, short sPlayer
|
||||||
SetGameVarID((int)lVar2, ud.idplayers, sActor, sPlayer);
|
SetGameVarID((int)lVar2, ud.idplayers, sActor, sPlayer);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case USERDEFS_TEAM:
|
||||||
|
if(bSet)
|
||||||
|
ud.team = lValue;
|
||||||
|
else
|
||||||
|
SetGameVarID((int)lVar2, ud.team, sActor, sPlayer);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1889,6 +1896,13 @@ void DoPlayer(char bSet, long lVar1, long lLabelID, long lVar2, short sActor, sh
|
||||||
SetGameVarID((int)lVar2, ps[iPlayer].weaponswitch, sActor, sPlayer);
|
SetGameVarID((int)lVar2, ps[iPlayer].weaponswitch, sActor, sPlayer);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PLAYER_TEAM:
|
||||||
|
if(bSet)
|
||||||
|
ps[iPlayer].team=lValue;
|
||||||
|
else
|
||||||
|
SetGameVarID((int)lVar2, ps[iPlayer].team, sActor, sPlayer);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,9 +58,9 @@ long partime[MAXVOLUMES*11],designertime[MAXVOLUMES*11];
|
||||||
char volume_names[MAXVOLUMES][33] = { "L.A. MELTDOWN", "LUNAR APOCALYPSE", "SHRAPNEL CITY" };
|
char volume_names[MAXVOLUMES][33] = { "L.A. MELTDOWN", "LUNAR APOCALYPSE", "SHRAPNEL CITY" };
|
||||||
char skill_names[5][33] = { "PIECE OF CAKE", "LET'S ROCK", "COME GET SOME", "DAMN I'M GOOD" };
|
char skill_names[5][33] = { "PIECE OF CAKE", "LET'S ROCK", "COME GET SOME", "DAMN I'M GOOD" };
|
||||||
|
|
||||||
char gametype_names[MAXGAMETYPES][33] = { "DUKEMATCH (SPAWN)","COOPERATIVE PLAY","DUKEMATCH (NO SPAWN)"};
|
char gametype_names[MAXGAMETYPES][33] = { "DUKEMATCH (SPAWN)","COOPERATIVE PLAY","DUKEMATCH (NO SPAWN)","TEAM DUKEMATCH"};
|
||||||
int gametype_flags[MAXGAMETYPES] = {4+8+16+1024+2048+16384,1+2+32+64+128+256+512+4096+8192+32768,2+4+8+16+16384};
|
int gametype_flags[MAXGAMETYPES] = {4+8+16+1024+2048+16384,1+2+32+64+128+256+512+4096+8192+32768,2+4+8+16+16384,4+8+16+1024+2048+16384+65536+131072};
|
||||||
char num_gametypes = 3;
|
char num_gametypes = 4;
|
||||||
|
|
||||||
long soundsiz[NUM_SOUNDS];
|
long soundsiz[NUM_SOUNDS];
|
||||||
|
|
||||||
|
|
|
@ -657,10 +657,17 @@ void menus(void)
|
||||||
case 20003:
|
case 20003:
|
||||||
rotatesprite(160<<16,19<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1);
|
rotatesprite(160<<16,19<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1);
|
||||||
menutext(160,24,0,0,"PLAYER SETUP");
|
menutext(160,24,0,0,"PLAYER SETUP");
|
||||||
rotatesprite((280)<<16,(37+(tilesizy[APLAYER]>>1))<<16,49152L,0,1441-((((4-(totalclock>>4)))&3)*5),0,ud.color,10,0,0,xdim-1,ydim-1);
|
if(probey == 2)
|
||||||
|
{
|
||||||
|
switch(ud.team) {
|
||||||
|
case 0: x = 3; break;
|
||||||
|
case 1: x = 10; break;
|
||||||
|
}
|
||||||
|
} else x = ud.color;
|
||||||
|
rotatesprite((280)<<16,(37+(tilesizy[APLAYER]>>1))<<16,49152L,0,1441-((((4-(totalclock>>4)))&3)*5),0,x,10,0,0,xdim-1,ydim-1);
|
||||||
|
|
||||||
if (current_menu == 20002) {
|
if (current_menu == 20002) {
|
||||||
x = probe(40,50,16,6);
|
x = probe(40,50,16,7);
|
||||||
switch(x) {
|
switch(x) {
|
||||||
case -1:
|
case -1:
|
||||||
cmenu(202);
|
cmenu(202);
|
||||||
|
@ -686,19 +693,24 @@ void menus(void)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
AutoAim = (AutoAim == 2) ? 0 : AutoAim+1;
|
ud.team = 1-ud.team;
|
||||||
updatenames();
|
updatenames();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
|
AutoAim = (AutoAim == 2) ? 0 : AutoAim+1;
|
||||||
|
updatenames();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
ud.weaponswitch = (ud.weaponswitch == 3) ? 0 : ud.weaponswitch+1;
|
ud.weaponswitch = (ud.weaponswitch == 3) ? 0 : ud.weaponswitch+1;
|
||||||
updatenames();
|
updatenames();
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 5:
|
||||||
ud.mouseaiming = !ud.mouseaiming;
|
ud.mouseaiming = !ud.mouseaiming;
|
||||||
updatenames();
|
updatenames();
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 6:
|
||||||
cmenu(20004);
|
cmenu(20004);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -731,35 +743,40 @@ void menus(void)
|
||||||
menutext(40,50+16,MENUHIGHLIGHT(1),0,"COLOR");
|
menutext(40,50+16,MENUHIGHLIGHT(1),0,"COLOR");
|
||||||
|
|
||||||
{
|
{
|
||||||
int ud_color = -1, aaim = -1, ud_weaponswitch = -1, ud_maim = -1;
|
int ud_color = -1, aaim = -1, ud_weaponswitch = -1, ud_maim = -1, ud_team = -1;
|
||||||
|
|
||||||
ud_color = ud.color;
|
ud_color = ud.color;
|
||||||
aaim = AutoAim;
|
aaim = AutoAim;
|
||||||
ud_weaponswitch = ud.weaponswitch;
|
ud_weaponswitch = ud.weaponswitch;
|
||||||
ud_maim = ud.mouseaiming;
|
ud_maim = ud.mouseaiming;
|
||||||
|
ud_team = ud.team;
|
||||||
modval(0,23,(int *)&ud.color,1,probey==1);
|
modval(0,23,(int *)&ud.color,1,probey==1);
|
||||||
modval(0,2,(int *)&AutoAim,1,probey==2);
|
modval(0,1,(int *)&ud.team,1,probey==2);
|
||||||
modval(0,3,(int *)&ud.weaponswitch,1,probey==3);
|
modval(0,2,(int *)&AutoAim,1,probey==3);
|
||||||
modval(0,1,(int *)&ud.mouseaiming,1,probey==4);
|
modval(0,3,(int *)&ud.weaponswitch,1,probey==4);
|
||||||
|
modval(0,1,(int *)&ud.mouseaiming,1,probey==5);
|
||||||
check_player_color((int *)&ud.color,ud_color);
|
check_player_color((int *)&ud.color,ud_color);
|
||||||
if(ud_color != ud.color || aaim != AutoAim || ud_weaponswitch != ud.weaponswitch || ud_maim != ud.mouseaiming)
|
if(ud_color != ud.color || aaim != AutoAim || ud_weaponswitch != ud.weaponswitch || ud_maim != ud.mouseaiming || ud_team != ud.team)
|
||||||
updatenames();
|
updatenames();
|
||||||
}
|
}
|
||||||
menutext(40,50+16+16,MENUHIGHLIGHT(2),0,"AUTO AIM");
|
menutext(40,50+16+16,MENUHIGHLIGHT(2),0,"TEAM");
|
||||||
menutext(40,50+16+16+16,MENUHIGHLIGHT(3),0,"WEAPON SWITCH");
|
menutext(40,50+16+16+16,MENUHIGHLIGHT(3),0,"AUTO AIM");
|
||||||
menutext(40,50+16+16+16+16,MENUHIGHLIGHT(4),0,"AIMING TYPE");
|
menutext(40,50+16+16+16+16,MENUHIGHLIGHT(4),0,"WEAPON SWITCH");
|
||||||
menutext(40,50+16+16+16+16+16,MENUHIGHLIGHT(5),0,"MACRO SETUP");
|
menutext(40,50+16+16+16+16+16,MENUHIGHLIGHT(5),0,"AIMING TYPE");
|
||||||
|
menutext(40,50+16+16+16+16+16+16,MENUHIGHLIGHT(6),0,"MACRO SETUP");
|
||||||
|
|
||||||
if (current_menu == 20002) {
|
if (current_menu == 20002) {
|
||||||
gametext(200,50-9,myname,MENUHIGHLIGHT(0),2+8+16); }
|
gametext(200,50-9,myname,MENUHIGHLIGHT(0),2+8+16); }
|
||||||
{ char *s[] = { "Auto","","","","","","","","","Blue","Dk red","Green","Gray","Dk gray","Dk green","Brown",
|
{ char *s[] = { "Auto","","","","","","","","","Blue","Dk red","Green","Gray","Dk gray","Dk green","Brown",
|
||||||
"Dk blue","","","","","Red","","Yellow","","" };
|
"Dk blue","","","","","Red","","Yellow","","" };
|
||||||
gametext(200,50+16-9,s[ud.color],MENUHIGHLIGHT(1),2+8+16); }
|
gametext(200,50+16-9,s[ud.color],MENUHIGHLIGHT(1),2+8+16); }
|
||||||
|
{ char *s[] = { "Blue", "Red" };
|
||||||
|
gametext(200,50+16+16-9,s[ud.team],MENUHIGHLIGHT(2),2+8+16); }
|
||||||
{ char *s[] = { "Off", "Full", "Hitscan" };
|
{ char *s[] = { "Off", "Full", "Hitscan" };
|
||||||
gametext(200,50+16+16-9,s[AutoAim],MENUHIGHLIGHT(2),2+8+16); }
|
gametext(200,50+16+16+16-9,s[AutoAim],MENUHIGHLIGHT(3),2+8+16); }
|
||||||
{ char *s[] = { "Off", "On pickup", "When empty", "Both" };
|
{ char *s[] = { "Off", "On pickup", "When empty", "Both" };
|
||||||
gametext(200,50+16+16+16-9,s[ud.weaponswitch],MENUHIGHLIGHT(3),2+8+16); }
|
gametext(200,50+16+16+16+16-9,s[ud.weaponswitch],MENUHIGHLIGHT(4),2+8+16); }
|
||||||
gametext(200,50+16+16+16+16-9,ud.mouseaiming?"Held":"Toggle",MENUHIGHLIGHT(4),2+8+16);
|
gametext(200,50+16+16+16+16+16-9,ud.mouseaiming?"Held":"Toggle",MENUHIGHLIGHT(5),2+8+16);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -774,7 +791,7 @@ void menus(void)
|
||||||
if(x == -1)
|
if(x == -1)
|
||||||
{
|
{
|
||||||
cmenu(20002);
|
cmenu(20002);
|
||||||
probey = 5;
|
probey = 6;
|
||||||
}
|
}
|
||||||
else if(x >= 0 && x <= 9)
|
else if(x >= 0 && x <= 9)
|
||||||
{
|
{
|
||||||
|
@ -806,6 +823,7 @@ void menus(void)
|
||||||
|
|
||||||
gametext(160,144,"UP/DOWN = SELECT MACRO",0,2+8+16);
|
gametext(160,144,"UP/DOWN = SELECT MACRO",0,2+8+16);
|
||||||
gametext(160,144+9,"ENTER = MODIFY",0,2+8+16);
|
gametext(160,144+9,"ENTER = MODIFY",0,2+8+16);
|
||||||
|
gametext(160,144+9+9,"ACTIVATE IN GAME WITH SHIFT-F#",0,2+8+16);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -4110,7 +4128,7 @@ VOLUME_ALL_40x:
|
||||||
|
|
||||||
if((gametype_flags[ud.m_coop] & GAMETYPE_FLAG_MARKEROPTION))
|
if((gametype_flags[ud.m_coop] & GAMETYPE_FLAG_MARKEROPTION))
|
||||||
modval(0,1,(int *)&ud.m_marker,1,probey==4);
|
modval(0,1,(int *)&ud.m_marker,1,probey==4);
|
||||||
if((gametype_flags[ud.m_coop] & GAMETYPE_FLAG_PLAYERSFRIENDLY))
|
if((gametype_flags[ud.m_coop] & (GAMETYPE_FLAG_PLAYERSFRIENDLY|GAMETYPE_FLAG_TDM)))
|
||||||
modval(0,1,(int *)&ud.m_ffire,1,probey==5);
|
modval(0,1,(int *)&ud.m_ffire,1,probey==5);
|
||||||
else modval(0,1,(int *)&ud.m_noexits,1,probey==5);
|
else modval(0,1,(int *)&ud.m_noexits,1,probey==5);
|
||||||
|
|
||||||
|
@ -4168,7 +4186,7 @@ VOLUME_ALL_40x:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
if((gametype_flags[ud.m_coop] & GAMETYPE_FLAG_PLAYERSFRIENDLY))
|
if((gametype_flags[ud.m_coop] & (GAMETYPE_FLAG_PLAYERSFRIENDLY|GAMETYPE_FLAG_TDM)))
|
||||||
ud.m_ffire = !ud.m_ffire;
|
ud.m_ffire = !ud.m_ffire;
|
||||||
else ud.m_noexits = !ud.m_noexits;
|
else ud.m_noexits = !ud.m_noexits;
|
||||||
break;
|
break;
|
||||||
|
@ -4226,7 +4244,7 @@ VOLUME_ALL_40x:
|
||||||
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_MARKEROPTION)
|
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_MARKEROPTION)
|
||||||
gametext(c+70,57+16+16+16+16-7-9,ud.m_marker?"ON":"OFF",MENUHIGHLIGHT(4),2+8+16);
|
gametext(c+70,57+16+16+16+16-7-9,ud.m_marker?"ON":"OFF",MENUHIGHLIGHT(4),2+8+16);
|
||||||
|
|
||||||
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_PLAYERSFRIENDLY)
|
if(gametype_flags[ud.m_coop] & (GAMETYPE_FLAG_PLAYERSFRIENDLY|GAMETYPE_FLAG_TDM))
|
||||||
gametext(c+70,57+16+16+16+16+16-7-9,ud.m_ffire?"ON":"OFF",MENUHIGHLIGHT(5),2+8+16);
|
gametext(c+70,57+16+16+16+16+16-7-9,ud.m_ffire?"ON":"OFF",MENUHIGHLIGHT(5),2+8+16);
|
||||||
else gametext(c+70,57+16+16+16+16+16-7-9,ud.m_noexits?"OFF":"ON",MENUHIGHLIGHT(5),2+8+16);
|
else gametext(c+70,57+16+16+16+16+16-7-9,ud.m_noexits?"OFF":"ON",MENUHIGHLIGHT(5),2+8+16);
|
||||||
|
|
||||||
|
@ -4252,7 +4270,7 @@ VOLUME_ALL_40x:
|
||||||
else
|
else
|
||||||
menutext(c,57+16+16+16+16-9,MENUHIGHLIGHT(4),1,"MARKERS");
|
menutext(c,57+16+16+16+16-9,MENUHIGHLIGHT(4),1,"MARKERS");
|
||||||
|
|
||||||
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_PLAYERSFRIENDLY)
|
if(gametype_flags[ud.m_coop] & (GAMETYPE_FLAG_PLAYERSFRIENDLY|GAMETYPE_FLAG_TDM))
|
||||||
menutext(c,57+16+16+16+16+16-9,MENUHIGHLIGHT(5),0,"FR. FIRE");
|
menutext(c,57+16+16+16+16+16-9,MENUHIGHLIGHT(5),0,"FR. FIRE");
|
||||||
else menutext(c,57+16+16+16+16+16-9,MENUHIGHLIGHT(5),0,"MAP EXITS");
|
else menutext(c,57+16+16+16+16+16-9,MENUHIGHLIGHT(5),0,"MAP EXITS");
|
||||||
|
|
||||||
|
|
|
@ -314,7 +314,7 @@ short aim(spritetype *s,short aang,short atwith)
|
||||||
{
|
{
|
||||||
if( PN == APLAYER &&
|
if( PN == APLAYER &&
|
||||||
// ud.ffire == 0 &&
|
// ud.ffire == 0 &&
|
||||||
(gametype_flags[ud.coop]& GAMETYPE_FLAG_PLAYERSFRIENDLY ) &&
|
(gametype_flags[ud.coop]& GAMETYPE_FLAG_PLAYERSFRIENDLY || ((gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM) && ps[sprite[i].yvel].team == ps[s->yvel].team)) &&
|
||||||
s->picnum == APLAYER &&
|
s->picnum == APLAYER &&
|
||||||
s != &sprite[i])
|
s != &sprite[i])
|
||||||
continue;
|
continue;
|
||||||
|
@ -735,7 +735,7 @@ short shoot(short i,short atwith)
|
||||||
if(hitspr >= 0)
|
if(hitspr >= 0)
|
||||||
{
|
{
|
||||||
checkhitsprite(hitspr,k);
|
checkhitsprite(hitspr,k);
|
||||||
if( sprite[hitspr].picnum == APLAYER && (!(gametype_flags[ud.coop] & GAMETYPE_FLAG_PLAYERSFRIENDLY) || ud.ffire == 1) )
|
if( sprite[hitspr].picnum == APLAYER && (ud.ffire == 1 || (!(gametype_flags[ud.coop] & GAMETYPE_FLAG_PLAYERSFRIENDLY) && (gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM) && ps[sprite[hitspr].yvel].team != ps[sprite[i].yvel].team)))
|
||||||
{
|
{
|
||||||
l = spawn(k,JIBS6);
|
l = spawn(k,JIBS6);
|
||||||
sprite[k].xrepeat = sprite[k].yrepeat = 0;
|
sprite[k].xrepeat = sprite[k].yrepeat = 0;
|
||||||
|
@ -1241,7 +1241,7 @@ DOSKIPBULLETHOLE:
|
||||||
if(hitspr >= 0)
|
if(hitspr >= 0)
|
||||||
{
|
{
|
||||||
checkhitsprite(hitspr,k);
|
checkhitsprite(hitspr,k);
|
||||||
if( sprite[hitspr].picnum == APLAYER && (!(gametype_flags[ud.coop]&GAMETYPE_FLAG_PLAYERSFRIENDLY ) || ud.ffire == 1) )
|
if( sprite[hitspr].picnum == APLAYER && (ud.ffire == 1 || (!(gametype_flags[ud.coop] & GAMETYPE_FLAG_PLAYERSFRIENDLY) && (gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM) && ps[sprite[hitspr].yvel].team != ps[sprite[i].yvel].team)))
|
||||||
{
|
{
|
||||||
l = spawn(k,JIBS6);
|
l = spawn(k,JIBS6);
|
||||||
sprite[k].xrepeat = sprite[k].yrepeat = 0;
|
sprite[k].xrepeat = sprite[k].yrepeat = 0;
|
||||||
|
@ -3500,7 +3500,7 @@ void processinput(short snum)
|
||||||
{
|
{
|
||||||
char name1[32],name2[32];
|
char name1[32],name2[32];
|
||||||
|
|
||||||
if(gametype_flags[ud.coop] & GAMETYPE_FLAG_PLAYERSFRIENDLY)
|
if(gametype_flags[ud.coop] & GAMETYPE_FLAG_PLAYERSFRIENDLY || (gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM && ps[snum].team == ps[p->frag_ps].team))
|
||||||
i = 9;
|
i = 9;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -410,12 +410,30 @@ void vscrn(void)
|
||||||
void pickrandomspot(short snum)
|
void pickrandomspot(short snum)
|
||||||
{
|
{
|
||||||
struct player_struct *p;
|
struct player_struct *p;
|
||||||
short i;
|
short i=0,j,k;
|
||||||
|
unsigned long dist,pdist = -1;
|
||||||
|
|
||||||
p = &ps[snum];
|
p = &ps[snum];
|
||||||
|
|
||||||
if( ud.multimode > 1 && !(gametype_flags[ud.coop] & GAMETYPE_FLAG_FIXEDRESPAWN))
|
if( ud.multimode > 1 && !(gametype_flags[ud.coop] & GAMETYPE_FLAG_FIXEDRESPAWN))
|
||||||
i = TRAND%numplayersprites;
|
{
|
||||||
|
if(gametype_flags[ud.coop] & GAMETYPE_FLAG_TDMSPAWN)
|
||||||
|
{
|
||||||
|
for(j=0;j<ud.multimode;j++)
|
||||||
|
{
|
||||||
|
if(j != snum && ps[j].team == ps[snum].team && sprite[ps[j].i].extra > 0)
|
||||||
|
{
|
||||||
|
for(k=0;k<numplayersprites;k++)
|
||||||
|
{
|
||||||
|
dist = FindDistance2D(ps[j].posx-po[k].ox,ps[j].posy-po[k].oy);
|
||||||
|
if(dist < pdist)
|
||||||
|
i = k, pdist = dist;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else i = TRAND%numplayersprites;
|
||||||
|
}
|
||||||
else i = snum;
|
else i = snum;
|
||||||
|
|
||||||
p->bobposx = p->oposx = p->posx = po[i].ox;
|
p->bobposx = p->oposx = p->posx = po[i].ox;
|
||||||
|
@ -1205,7 +1223,7 @@ void resetpspritevars(char g)
|
||||||
|
|
||||||
s->yvel = j;
|
s->yvel = j;
|
||||||
|
|
||||||
if(!ud.pcolor[j] && ud.multimode > 1)
|
if(!ud.pcolor[j] && ud.multimode > 1 && !(gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM))
|
||||||
{
|
{
|
||||||
if(s->pal == 0)
|
if(s->pal == 0)
|
||||||
{
|
{
|
||||||
|
@ -1224,7 +1242,22 @@ void resetpspritevars(char g)
|
||||||
which_palookup = 9;
|
which_palookup = 9;
|
||||||
}
|
}
|
||||||
else ps[j].palookup = s->pal;
|
else ps[j].palookup = s->pal;
|
||||||
} else s->pal = ps[j].palookup = ud.pcolor[j];
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int k = ud.pcolor[j];
|
||||||
|
|
||||||
|
if(gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM)
|
||||||
|
{
|
||||||
|
switch(ud.pteam[j])
|
||||||
|
{
|
||||||
|
case 0: k = 3; break;
|
||||||
|
case 1: k = 10; break;
|
||||||
|
}
|
||||||
|
ps[j].team = ud.pteam[j];
|
||||||
|
}
|
||||||
|
s->pal = ps[j].palookup = k;
|
||||||
|
}
|
||||||
|
|
||||||
ps[j].i = i;
|
ps[j].i = i;
|
||||||
ps[j].frag_ps = j;
|
ps[j].frag_ps = j;
|
||||||
|
|
Loading…
Reference in a new issue