diff --git a/polymer/build/src/build.c b/polymer/build/src/build.c index c884fbc1a..6200c16b3 100644 --- a/polymer/build/src/build.c +++ b/polymer/build/src/build.c @@ -24,7 +24,7 @@ #define updatecrc16(crc,dat) (crc = (((crc<<8)&65535)^crctable[((((unsigned short)crc)>>8)&65535)^dat])) static long crctable[256]; -static char kensig[24]; +static char kensig[32]; extern int ExtInit(void); extern int ExtPreInit(int argc,char **argv); diff --git a/polymer/build/src/mdsprite.c b/polymer/build/src/mdsprite.c index b1a9ecbb6..8f867199b 100644 --- a/polymer/build/src/mdsprite.c +++ b/polymer/build/src/mdsprite.c @@ -911,8 +911,7 @@ static void updateanimation (md2model *m, spritetype *tspr) } } - if (anim && ((long)spriteext[tspr->owner].mdanimcur) != anim->startframe || - (spriteext[tspr->owner].flags & SPREXT_NOMDANIM)) + if (anim && (((long)spriteext[tspr->owner].mdanimcur) != anim->startframe || (spriteext[tspr->owner].flags & SPREXT_NOMDANIM))) { //if (spriteext[tspr->owner].flags & SPREXT_NOMDANIM) OSD_Printf("SPREXT_NOMDANIM\n"); //OSD_Printf("smooth launched ! oldanim %i new anim %i\n", spriteext[tspr->owner].mdanimcur, anim->startframe); @@ -1428,7 +1427,7 @@ static int md3draw (md3model *m, spritetype *tspr) //PLAG : sorting stuff unsigned short tempus; void* vbotemp; - point3d* vertexhandle; + point3d* vertexhandle = NULL; unsigned short* indexhandle; if (r_vbos && (m->vbos == NULL)) diff --git a/polymer/build/src/polymost.c b/polymer/build/src/polymost.c index aa198b827..2ff8f2d02 100644 --- a/polymer/build/src/polymost.c +++ b/polymer/build/src/polymost.c @@ -163,7 +163,7 @@ long r_vbos = 0; long r_vbocount = 64; // model animation smoothing cvar -long r_animsmoothing = 0; +long r_animsmoothing = 1; static float fogresult, ofogresult, fogcol[4]; diff --git a/polymer/eduke32/source/astub.c b/polymer/eduke32/source/astub.c index be9bccd40..063d90a80 100644 --- a/polymer/eduke32/source/astub.c +++ b/polymer/eduke32/source/astub.c @@ -1770,16 +1770,16 @@ static void Keys3d(void) dax = wall[searchwall].x-wall[wall[searchwall].point2].x; day = wall[searchwall].y-wall[wall[searchwall].point2].y; dist = ksqrt(dax*dax+day*day); - Bsprintf(msgbuf,"Wall %d: length:%ld lo:%d hi:%d",searchwall,dist,wall[searchwall].lotag,wall[searchwall].hitag); + Bsprintf(msgbuf,"Wall %d: length:%ld lo:%d hi:%d ex:%d",searchwall,dist,wall[searchwall].lotag,wall[searchwall].hitag,wall[searchwall].extra); _message(msgbuf); break; } case 1: - Bsprintf(msgbuf,"Sector %d ceiling: lo:%s hi:%d",searchsector,ExtGetSectorCaption(searchsector),sector[searchsector].hitag); + Bsprintf(msgbuf,"Sector %d ceiling: lo:%s hi:%d ex:%d",searchsector,ExtGetSectorCaption(searchsector),sector[searchsector].hitag,sector[searchsector].extra); _message(msgbuf); break; case 2: - Bsprintf(msgbuf,"Sector %d floor: lo:%s hi:%d",searchsector,ExtGetSectorCaption(searchsector),sector[searchsector].hitag); + Bsprintf(msgbuf,"Sector %d floor: lo:%s hi:%d ex:%d",searchsector,ExtGetSectorCaption(searchsector),sector[searchsector].hitag,sector[searchsector].extra); _message(msgbuf); break; case 3: @@ -1787,7 +1787,7 @@ static void Keys3d(void) if (strlen(names[sprite[searchwall].picnum]) > 0) { if (sprite[searchwall].picnum==SECTOREFFECTOR) - Bsprintf(msgbuf,"Sprite %d %s: lo:%d hi:%d",searchwall,SectorEffectorText(searchwall),sprite[searchwall].lotag,sprite[searchwall].hitag); + Bsprintf(msgbuf,"Sprite %d %s: lo:%d hi:%d ex:%d",searchwall,SectorEffectorText(searchwall),sprite[searchwall].lotag,sprite[searchwall].hitag,sprite[searchwall].extra); else Bsprintf(msgbuf,"Sprite %d %s: lo:%d hi:%d ex:%d",searchwall,names[sprite[searchwall].picnum],sprite[searchwall].lotag,sprite[searchwall].hitag,sprite[searchwall].extra); } else Bsprintf(msgbuf,"Sprite %d picnum %d: lo:%d hi:%d ex:%d",searchwall,sprite[searchwall].picnum,sprite[searchwall].lotag,sprite[searchwall].hitag,sprite[searchwall].extra); @@ -3014,9 +3014,7 @@ static void Keys3d(void) clockcnt = ((clockcnt+1)&15); tempbuf[0] = 0; - if ((bstatus&4) && (bstatus&2)) - Bsprintf(tempbuf,"PAN"); - else if (bstatus&4) + if (bstatus&4) { if (bstatus&1) Bsprintf(tempbuf,"VIEW"); else Bsprintf(tempbuf,"SHADE"); @@ -3573,7 +3571,7 @@ static void Keys2d(void) if (strlen(names[sprite[i].picnum]) > 0) { if (sprite[i].picnum==SECTOREFFECTOR) - Bsprintf(tmpbuf,"Sprite %d %s: lo:%d hi:%d",i,SectorEffectorText(i),sprite[i].lotag,sprite[i].hitag); + Bsprintf(tmpbuf,"Sprite %d %s: lo:%d hi:%d ex:%d",i,SectorEffectorText(i),sprite[i].lotag,sprite[i].hitag,sprite[i].extra); else Bsprintf(tmpbuf,"Sprite %d %s: lo:%d hi:%d ex:%d",i,names[sprite[i].picnum],sprite[i].lotag,sprite[i].hitag,sprite[i].extra); } else Bsprintf(tmpbuf,"Sprite %d picnum %d: lo:%d hi:%d ex:%d",i,sprite[i].picnum,sprite[i].lotag,sprite[i].hitag,sprite[i].extra); @@ -3585,12 +3583,12 @@ static void Keys2d(void) dax = wall[linehighlight].x-wall[wall[linehighlight].point2].x; day = wall[linehighlight].y-wall[wall[linehighlight].point2].y; dist = ksqrt(dax*dax+day*day); - Bsprintf(tempbuf,"Wall %d: length:%ld lo:%d hi:%d",linehighlight,dist,wall[linehighlight].lotag,wall[linehighlight].hitag); + Bsprintf(tempbuf,"Wall %d: length:%ld lo:%d hi:%d ex:%d",linehighlight,dist,wall[linehighlight].lotag,wall[linehighlight].hitag,wall[linehighlight].extra); _printmessage16(tempbuf); } else if (cursectornum >= 0) { - Bsprintf(tempbuf,"Sector %d: lo:%d hi:%d",cursectornum,sector[cursectornum].lotag,sector[cursectornum].hitag); + Bsprintf(tempbuf,"Sector %d: lo:%d hi:%d ex:%d",cursectornum,sector[cursectornum].lotag,sector[cursectornum].hitag,sector[cursectornum].extra); _printmessage16(tempbuf); } else _printmessage16(""); diff --git a/polymer/eduke32/source/config.c b/polymer/eduke32/source/config.c index 840f9fcf6..6bd4a14a8 100644 --- a/polymer/eduke32/source/config.c +++ b/polymer/eduke32/source/config.c @@ -854,7 +854,7 @@ void CONFIG_WriteSetup(void) SCRIPT_PutNumber(scripthandle, "Screen Setup", "GLVBOs", r_vbos,false,false); SCRIPT_PutNumber(scripthandle, "Screen Setup", "GLVBOCount", r_vbocount,false,false); -// SCRIPT_PutNumber(scripthandle, "Screen Setup", "GLAnimationSmoothing",r_animsmoothing,false,false); + SCRIPT_PutNumber(scripthandle, "Screen Setup", "GLAnimationSmoothing",r_animsmoothing,false,false); #endif #ifdef RENDERTYPEWIN SCRIPT_PutNumber(scripthandle, "Screen Setup", "MaxRefreshFreq",maxrefreshfreq,false,false); diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index a7b29f0ae..4d11cb49a 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -52,7 +52,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include extern int getversionfromwebsite(char *buffer); -#define BUILDDATE 20070321 +#define BUILDDATE 20070413 #define UPDATEINTERVAL 86400 // 24h #endif @@ -82,8 +82,9 @@ static struct strllist char boardfilename[BMAX_PATH] = {0}; char waterpal[768], slimepal[768], titlepal[768], drealms[768], endingpal[768], animpal[768]; -char firstdemofile[80] = { '\0' }; -int display_bonus_screen = 1, userconfiles = 0; +static char firstdemofile[80] = { '\0' }; +int display_bonus_screen = 1; +static int userconfiles = 0; static int netparamcount = 0; static char **netparam = NULL; @@ -105,9 +106,9 @@ static int nomorelogohack; static int sendmessagecommand = -1; char defaultduke3dgrp[BMAX_PATH] = "duke3d.grp"; -char defaultconfilename[BMAX_PATH] = {"EDUKE.CON"}; char *duke3dgrp = defaultduke3dgrp; -char *confilename = defaultconfilename; +static char defaultconfilename[BMAX_PATH] = {"EDUKE.CON"}; +static char *confilename = defaultconfilename; static char *duke3ddef = "duke3d.def"; extern long lastvisinc; @@ -141,6 +142,10 @@ static void fakedomovethingscorrect(void); static int domovethings(void); static long playback(void); +static char recbuf[180]; + +extern void computergetinput(long snum, input *syn); + enum { T_EOF = -2, @@ -377,7 +382,7 @@ inline int gametextpal(int x,int y,const char *t,int s,int p) return(gametext_(0,STARTALPHANUM, x,y,t,s,p,26,0, 0, xdim-1, ydim-1)); } -inline int mpgametext(int y,const char *t,int s,int dabits) +static inline int mpgametext(int y,const char *t,int s,int dabits) { if (xdim >= 640 && ydim >= 480) return(gametext_(1,STARTALPHANUM, 5,y,t,s,0,dabits,0, 0, xdim-1, ydim-1)); @@ -432,7 +437,6 @@ static void gamenumber(long x,long y,long n,char s) } #endif -char recbuf[180]; static void allowtimetocorrecterrorswhenquitting(void) { long i, j, oldtotalclock; @@ -967,8 +971,6 @@ void getpackets(void) } } -extern void computergetinput(long snum, input *syn); - void faketimerhandler(void) { long i, j, k; @@ -1443,12 +1445,9 @@ int inventory(spritetype *s) return 0; } -int checkspriteflags(int iActor, int iType) +inline int checkspriteflags(int iActor, int iType) { - int i; - - i = (spriteflags[sprite[iActor].picnum]^actorspriteflags[iActor]); - if (i & iType) return 1; + if ((spriteflags[sprite[iActor].picnum]^actorspriteflags[iActor]) & iType) return 1; return 0; } @@ -1741,14 +1740,11 @@ static void weapon_amounts(struct player_struct *p,long x,long y,long u) static void digitalnumber(long x,long y,long n,char s,char cs) { - - short i, j, k, p, c; + int i, j = 0, k, p, c; char b[10]; - //ltoa(n,b,10); Bsnprintf(b,10,"%ld",n); i = Bstrlen(b); - j = 0; for (k=0;kjetpack_amount > 0)<<3; if (n&8) j++; @@ -1825,9 +1818,9 @@ static void displayinventory(struct player_struct *p) if (ud.screen_size == 4 && ud.drawweapon != 2) { + xoff += 65; if (ud.multimode > 1) - xoff += 56; - else xoff += 65; + xoff -= 9; } while (j <= 9) @@ -1871,9 +1864,7 @@ static void displayinventory(struct player_struct *p) void displayfragbar(void) { - short i, j; - - j = 0; + int i, j = 0; for (i=connecthead;i>=0;i=connectpoint2[i]) if (i > j) j = i; @@ -1896,16 +1887,15 @@ void displayfragbar(void) static void coolgaugetext(int snum) { struct player_struct *p = &ps[snum]; - long i, j, o, ss, u; + long i, j, o, ss = ud.screen_size, u; int permbit = 0; + if (ss < 4) return; + if (ps[snum].gm&MODE_MENU) if ((current_menu >= 400 && current_menu <= 405)) return; - ss = ud.screen_size; - if (ss < 4) return; - if (getrendermode() >= 3) pus = NUMPAGES; // JBF 20040101: always redraw in GL if (ud.multimode > 1 && (gametype_flags[ud.coop] & GAMETYPE_FLAG_FRAGBAR)) @@ -2321,10 +2311,9 @@ static long frameval[AVERAGEFRAMES], framecnt = 0; static void tics(void) { - long i,j; + long i = totalclock,j; char b[10]; - i = totalclock; if (i != frameval[framecnt]) { j=(timer*AVERAGEFRAMES)/(i-frameval[framecnt]); @@ -2371,10 +2360,10 @@ static void coords(int snum) if ((gametype_flags[ud.coop] & GAMETYPE_FLAG_FRAGBAR)) { - if (ud.multimode > 1 && ud.multimode < 5) - y = 16; - else if (ud.multimode > 4) + if (ud.multimode > 4) y = 24; + else if (ud.multimode > 1) + y = 16; } sprintf(tempbuf,"X= %ld",ps[snum].posx); printext256(250L,y,31,-1,tempbuf,0); @@ -2404,10 +2393,10 @@ static void coords(int snum) static void operatefta(void) { - long i, j, k, l; + long i, j = 200-45, k, l; + + if (ud.screen_size < 1) j = 200-8; - if (ud.screen_size > 0) j = 200-45; - else j = 200-8; quotebot = min(quotebot,j); quotebotgoal = min(quotebotgoal,j); if (ps[myconnectindex].gm&MODE_TYPE) j -= 8; @@ -3835,9 +3824,8 @@ static void SE40_Draw(int spnum,long x,long y,long z,int a,int h,long smoothrati void se40code(long x,long y,long z,long a,long h, long smoothratio) { - int i; + int i= headspritestat[15]; - i = headspritestat[15]; while (i >= 0) { int t = sprite[i].lotag; @@ -8209,7 +8197,7 @@ static void comlinehelp(void) "-map FILE\tUse user map FILE\n" "-name NAME\tUse NAME as multiplayer name\n" "-nD\t\tDump default gamevars to gamevars.txt\n" - "-net PARAMETERS\tEnable network play (see documentation for PARAMETERS)\n" + "-net PARAMETERS\tEnable network play (see documentation for parameters)\n" "-nm\t\tDisable music\n" "-ns\t\tDisable sound\n" "-qNUM\t\tUse NUM players for fake multiplayer (2-8)\n" @@ -8465,8 +8453,8 @@ static int loadgroupfiles(const char *fn) { { "include", T_INCLUDE }, { "#include", T_INCLUDE }, - { "loadgrp", T_LOADGRP }, - { "cachesize", T_CACHESIZE }, + { "loadgrp", T_LOADGRP }, + { "cachesize", T_CACHESIZE }, }; script = scriptfile_fromfile((char *)fn); @@ -9013,9 +9001,8 @@ static void checkcommandline(int argc,char **argv) static void Logo(void) { - short soundanm; + int soundanm = 0; long logoflags=GetGameVar("LOGO_FLAGS",255, -1, -1); - soundanm = 0; ready2send = 0; @@ -9998,7 +9985,7 @@ void app_main(int argc,char **argv) initprintf("Using group file '%s' as main group file.\n", duke3dgrp); getfilenames("autoload","*.grp"); - while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; } +while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; } getfilenames("autoload","*.zip"); while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; } getfilenames("autoload","*.pk3"); diff --git a/polymer/eduke32/source/gamedef.c b/polymer/eduke32/source/gamedef.c index f9f89c9e4..325541726 100644 --- a/polymer/eduke32/source/gamedef.c +++ b/polymer/eduke32/source/gamedef.c @@ -4621,6 +4621,7 @@ static void AddDefaultDefinitions(void) AddDefinition("PROJ_YREPEAT",PROJ_YREPEAT,LABEL_DEFINE); } + static void InitProjectiles(void) { int i; @@ -4824,7 +4825,7 @@ void loadefs(const char *filenam) "^2%s ^2WAS CHASED OFF OF %s^2'S PORCH", "^2%s ^2COULDN'T DANCE FAST ENOUGH FOR %s", "^2%s ^2TRIED TO OUTRUN %s^2'S ROCKET", - "^2%s ^2FINALLY FOUND %s^2'S HIDDEN WMDS", + "^2%s ^2FOUND %s^2'S HIDDEN WEAPONS OF MASS DESTRUCTION", "^2%s ^2WAS JUST TRYING TO HELP %s ^2TIE HIS SHOELACES", "^2%s^2's IGLOO WAS WRECKED BY %s", "^2%s ^2BECAME A STICKY FILM ON %s^2'S BOOTS", @@ -4832,8 +4833,8 @@ void loadefs(const char *filenam) "^2%s ^2WAS WALKED ALL OVER BY %s", "^2%s ^2WAS PICKED OFF BY %s", - "^2%s ^2WENT QUAIL HUNTING WITH VICE PRESIDENT %s", - "^2%s ^2ENDED UP WITH A FEW NEW HOLES FROM %s^2's CHAINGUN", + "^2%s ^2SUCKED %s^2'S SHOTGUN", + "^2%s ^2ENDED UP WITH A FEW NEW HOLES FROM %s^2'S CHAINGUN", "^2%s ^2WAS TURNED INTO %s^2 BRAND CHUNKY SALSA", "^2%s ^2FOUND A PRESENT FROM %s", "^2%s ^2WAS SCATHED BY %s^2'S SHRINK RAY", diff --git a/polymer/eduke32/source/gameexec.c b/polymer/eduke32/source/gameexec.c index dabe3a23b..05952caac 100644 --- a/polymer/eduke32/source/gameexec.c +++ b/polymer/eduke32/source/gameexec.c @@ -3831,79 +3831,85 @@ static int parse(void) insptr++; g_sp->xoffset = 0; g_sp->yoffset = 0; - // if(!gotz) + + j = gc; + + if (ceilingspace(g_sp->sectnum) || sector[g_sp->sectnum].lotag == 2) + j = gc/6; + else if (floorspace(g_sp->sectnum)) + j = 0; + + if (hittype[g_i].cgg <= 0 || (sector[g_sp->sectnum].floorstat&2)) { - j = gc; + getglobalz(g_i); + hittype[g_i].cgg = 3; + } + else hittype[g_i].cgg --; - if (ceilingspace(g_sp->sectnum) || sector[g_sp->sectnum].lotag == 2) - j = gc/6; - else if (floorspace(g_sp->sectnum)) - j = 0; + if (g_sp->z < (hittype[g_i].floorz-FOURSLEIGHT)) + { + g_sp->zvel += j; + g_sp->z+=g_sp->zvel; - if (hittype[g_i].cgg <= 0 || (sector[g_sp->sectnum].floorstat&2)) - { - getglobalz(g_i); - hittype[g_i].cgg = 6; - } - else hittype[g_i].cgg --; + if (g_sp->zvel > 6144) g_sp->zvel = 6144; - if (g_sp->z < (hittype[g_i].floorz-FOURSLEIGHT)) - { - g_sp->zvel += j; - g_sp->z+=g_sp->zvel; - - if (g_sp->zvel > 6144) g_sp->zvel = 6144; - } - else - { - g_sp->z = hittype[g_i].floorz - FOURSLEIGHT; - - if (badguy(g_sp) || (g_sp->picnum == APLAYER && g_sp->owner >= 0)) - { - if (g_sp->zvel > 3084 && g_sp->extra <= 1) - { - if (g_sp->pal != 1 && g_sp->picnum != DRONE) - { - if (!(g_sp->picnum == APLAYER && g_sp->extra > 0)) - { - guts(g_i,JIBS6,15,g_p); - spritesound(SQUISHED,g_i); - spawn(g_i,BLOODPOOL); - } - } - - hittype[g_i].picnum = SHOTSPARK1; - hittype[g_i].extra = 1; - g_sp->zvel = 0; - } - else if (g_sp->zvel > 2048 && sector[g_sp->sectnum].lotag != 1) - { - j = g_sp->sectnum; - pushmove(&g_sp->x,&g_sp->y,&g_sp->z,(short*)&j,128L,(4L<<8),(4L<<8),CLIPMASK0); - if (j != g_sp->sectnum && j >= 0 && j < MAXSECTORS) - changespritesect(g_i,j); - - spritesound(THUD,g_i); - } - } - if (sector[g_sp->sectnum].lotag == 1) - switch (dynamictostatic[g_sp->picnum]) - { - case OCTABRAIN__STATIC: - case COMMANDER__STATIC: - case DRONE__STATIC: - break; - default: - g_sp->z += (24<<8); - break; - } - else g_sp->zvel = 0; - } - - if (g_sp->z > (hittype[g_i].floorz-FOURSLEIGHT)) + if (g_sp->z > (hittype[g_i].floorz - FOURSLEIGHT)) g_sp->z = (hittype[g_i].floorz - FOURSLEIGHT); } + else + { + g_sp->z = hittype[g_i].floorz - FOURSLEIGHT; + if (badguy(g_sp) || (g_sp->picnum == APLAYER && g_sp->owner >= 0)) + { + if (g_sp->zvel > 3084 && g_sp->extra <= 1) + { + if (g_sp->pal != 1 && g_sp->picnum != DRONE) + { + if (!(g_sp->picnum == APLAYER && g_sp->extra > 0)) + { + guts(g_i,JIBS6,15,g_p); + spritesound(SQUISHED,g_i); + spawn(g_i,BLOODPOOL); + } + } + + hittype[g_i].picnum = SHOTSPARK1; + hittype[g_i].extra = 1; + g_sp->zvel = 0; + } + else if (g_sp->zvel > 2048 && sector[g_sp->sectnum].lotag != 1) + { + j = g_sp->sectnum; + pushmove(&g_sp->x,&g_sp->y,&g_sp->z,(short*)&j,128L,(4L<<8),(4L<<8),CLIPMASK0); + if (j != g_sp->sectnum && j >= 0 && j < MAXSECTORS) + changespritesect(g_i,j); + + spritesound(THUD,g_i); + } + } + + if (g_sp->z > (hittype[g_i].floorz - FOURSLEIGHT)) + { + getglobalz(g_i); + if (hittype[g_i].floorz != sector[g_sp->sectnum].floorz) + g_sp->z = (hittype[g_i].floorz - FOURSLEIGHT); + } + else if (sector[g_sp->sectnum].lotag == 1) + { + switch (dynamictostatic[g_sp->picnum]) + { + case OCTABRAIN__STATIC: + case COMMANDER__STATIC: + case DRONE__STATIC: + break; + default: + g_sp->z += (24<<8); + break; + } + } + else g_sp->zvel = 0; + } break; case CON_ENDA: diff --git a/polymer/eduke32/source/jaudiolib/sdlmusic.c b/polymer/eduke32/source/jaudiolib/sdlmusic.c index 919f1a0da..171af6558 100755 --- a/polymer/eduke32/source/jaudiolib/sdlmusic.c +++ b/polymer/eduke32/source/jaudiolib/sdlmusic.c @@ -387,8 +387,8 @@ void PlayMusic(char *_filename) { char *user = getenv("USERNAME"); - if (user) Bsprintf(tempbuf,"duke3d-%s.mid.%d",user,getpid()); - else Bsprintf(tempbuf,"duke3d.mid.%d",getpid()); + if (user) Bsprintf(tempbuf,"duke3d-%s.%d.mid",user,getpid()); + else Bsprintf(tempbuf,"duke3d.%d.mid",getpid()); GetUnixPathFromEnvironment(filename, BMAX_PATH, tempbuf);