git-svn-id: https://svn.eduke32.com/eduke32@1062 1a8010ca-5511-0410-912e-c29ae57300e0

This commit is contained in:
terminx 2008-09-11 09:24:45 +00:00
parent 37d375a0ff
commit 60526dbb26
10 changed files with 167 additions and 182 deletions

View file

@ -43,7 +43,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <windows.h>
#endif
#define BUILDDATE " 20080905"
#define BUILDDATE " 20080907"
#define VERSION " 1.2.0devel"
static int floor_over_floor;
@ -3178,10 +3178,10 @@ static void DoSpriteOrnament(int i)
short hitsect, hitwall, hitsprite;
hitscan(sprite[i].x,sprite[i].y,sprite[i].z,sprite[i].sectnum,
sintable[(sprite[i].ang+2560+1024)&2047],
sintable[(sprite[i].ang+2048+1024)&2047],
0,
&hitsect,&hitwall,&hitsprite,&hitx,&hity,&hitz,CLIPMASK1);
sintable[(sprite[i].ang+2560+1024)&2047],
sintable[(sprite[i].ang+2048+1024)&2047],
0,
&hitsect,&hitwall,&hitsprite,&hitx,&hity,&hitz,CLIPMASK1);
sprite[i].x = hitx;
sprite[i].y = hity;
@ -3270,8 +3270,7 @@ void rendertext(short startspr)
if (quitevent) quitevent = 0;
}
// vertical gap in "relative" pixels (256 z-units for yrepeat=64)
if (keystatus[KEYSC_UP])
if (keystatus[KEYSC_UP]) // vertical gap in pixels (32 x-units)
{
keystatus[KEYSC_UP]=0;
if (vgap<255) vgap++;
@ -3282,8 +3281,7 @@ void rendertext(short startspr)
if (vgap>0) vgap--;
}
// horizontal gap in half "relative" pixels (16 x-units for xrepeat=64)
if (keystatus[KEYSC_RIGHT])
if (keystatus[KEYSC_RIGHT]) // horizontal gap in half pixels
{
keystatus[KEYSC_RIGHT]=0;
if (hgap<255) hgap++;
@ -3294,7 +3292,7 @@ void rendertext(short startspr)
if (hgap>0) hgap--;
}
if (keystatus[KEYSC_INSERT]) // space gap in half "relative" pixels
if (keystatus[KEYSC_INSERT]) // space gap in half pixels
{
keystatus[KEYSC_INSERT]=0;
if (spcgap[basetidx]<255) spcgap[basetidx]++;
@ -3327,33 +3325,6 @@ void rendertext(short startspr)
if (sprite[curspr].pal>0) sprite[curspr].pal--;
}
t=0;
if (keystatus[KEYSC_gUP]) // offsets
{
keystatus[KEYSC_gUP]=0; t=1;
if (sprite[curspr].yoffset<127) sprite[curspr].yoffset++;
}
if (keystatus[KEYSC_gDOWN])
{
keystatus[KEYSC_gDOWN]=0; t=1;
if (sprite[curspr].yoffset>-128) sprite[curspr].yoffset--;
}
if (keystatus[KEYSC_gLEFT])
{
keystatus[KEYSC_gLEFT]=0; t=1;
if (sprite[curspr].xoffset<127) sprite[curspr].xoffset++;
}
if (keystatus[KEYSC_gRIGHT])
{
keystatus[KEYSC_gRIGHT]=0; t=1;
if (sprite[curspr].xoffset>-128) sprite[curspr].xoffset--;
}
if (t==1)
{
Bsprintf(tempbuf,"Offset: %d,%d",sprite[curspr].xoffset,sprite[curspr].yoffset);
message(tempbuf);
}
drawrooms(posx,posy,posz,ang,horiz,cursectnum);
#ifdef SUPERBUILD
ExtAnalyzeSprites();
@ -3458,6 +3429,7 @@ void rendertext(short startspr)
sprite[i].pal = sprite[curspr].pal;
sprite[i].xrepeat = sprite[curspr].xrepeat;
sprite[i].yrepeat = sprite[curspr].yrepeat;
sprite[i].xoffset = 0, sprite[i].yoffset = 0;
sprite[i].ang = daang;
sprite[i].xvel = 0; sprite[i].yvel = 0; sprite[i].zvel = 0;
sprite[i].owner = -1;
@ -3469,20 +3441,7 @@ void rendertext(short startspr)
sprite[i].xoffset = -(((picanm[sprite[i].picnum])>>8)&255);
sprite[i].yoffset = -(((picanm[sprite[i].picnum])>>16)&255);
// Tweaking the position of some letters that are still a bit off
if (basetile == STARTALPHANUM)
{
if (ch=='^') sprite[i].yoffset = 1;
if (ch=='q' || ch=='Q') sprite[i].yoffset = -2;
if (ch==';') sprite[i].yoffset = -3;
}
else if (basetile == MINIFONT)
{
if (ch=='\'') sprite[i].yoffset = 3;
if (ch=='q' || ch=='Q') sprite[i].yoffset = -1;
if (ch==':') sprite[i].yoffset = 1;
if (ch=='"') sprite[i].yoffset = 3;
}
// TODO: tweaking the position of some letters that are still a bit off
DoSpriteOrnament(i);
@ -3562,7 +3521,7 @@ void rendertext(short startspr)
static void Keys3d(void)
{
int i,count,rate,nexti,changedir;
int i,count,nexti,changedir;
int j, k, tempint = 0, hiz, loz;
int hihit, lohit;
char smooshyalign=0, repeatpanalign=0, buffer[80];
@ -5026,22 +4985,41 @@ static void Keys3d(void)
// DoWater(horiz);
if (totalclock != clockval[clockcnt])
if (framerateon)
{
rate=(120*AVERAGEFRAMES)/(totalclock-clockval[clockcnt]);
clockval[clockcnt] = totalclock;
if (framerateon)
static int FrameCount = 0;
static int LastCount = 0;
static int LastSec = 0;
static int LastMS = 0;
int ms = getticks();
int howlong = ms - LastMS;
if (howlong >= 0)
{
int x = (xdimgame <= 640);
int p = 32>>x;
int thisSec = ms/1000;
int x = (xdim <= 640);
int chars = Bsprintf(tempbuf, "%2u ms (%3u fps)", howlong, LastCount);
Bsprintf(tempbuf,"%4d",max(rate,0));
printext256(xdimgame-p-1+1,0+2,0,-1,tempbuf,x);
printext256(xdimgame-p-1,0+1,(rate < 40) ? COLOR_RED : COLOR_WHITE,-1,tempbuf,x);
enddrawing();
if (!x)
{
printext256(windowx2-(chars<<3)+1,windowy1+2,0,-1,tempbuf,x);
printext256(windowx2-(chars<<3),windowy1+1,COLOR_WHITE,-1,tempbuf,x);
}
else
{
printext256(windowx2-(chars<<2)+1,windowy1+2,0,-1,tempbuf,x);
printext256(windowx2-(chars<<2),windowy1+1,COLOR_WHITE,-1,tempbuf,x);
}
if (LastSec < thisSec)
{
LastCount = FrameCount / (thisSec - LastSec);
LastSec = thisSec;
FrameCount = 0;
}
FrameCount++;
}
LastMS = ms;
}
clockcnt = ((clockcnt+1)&(AVERAGEFRAMES-1));
tempbuf[0] = 0;
if (bstatus&4 && !(bstatus&(1|2)) && !unrealedlook) //PK
@ -6576,13 +6554,15 @@ static void Keys2d(void)
if (sprite[i].picnum == 5 /*&& zoom >= 256*/ && sprite[i].sectnum != MAXSECTORS)
{
radius = mulscale15(sprite[i].hitag,zoom);
radius = mulscale14(sprite[i].hitag,zoom);
col = 6;
if (i+16384 == pointhighlight)
if (totalclock & 32) col += (2<<2);
// drawlinepat = 0xf0f0f0f0;
drawlinepat = 0xf0f0f0f0;
drawcircle16(halfxdim16+xp1, midydim16+yp1, radius, col);
// drawlinepat = 0xffffffff;
drawlinepat = 0xffffffff;
// radius = mulscale15(sprite[i].hitag,zoom);
// drawcircle16(halfxdim16+xp1, midydim16+yp1, radius, col);
}
}
enddrawing();
@ -9716,15 +9696,12 @@ static void FuncMenuOpts(void)
printext16(8,ydim-STATUS2DSIZ+72,11,-1,snotbuf,0);
Bsprintf(snotbuf,"Global Z coord shift");
printext16(8,ydim-STATUS2DSIZ+80,11,-1,snotbuf,0);
Bsprintf(snotbuf,"Up-size selected sectors");
Bsprintf(snotbuf,"Resize selection");
printext16(8,ydim-STATUS2DSIZ+88,11,-1,snotbuf,0);
Bsprintf(snotbuf,"Down-size selected sects");
printext16(8,ydim-STATUS2DSIZ+96,11,-1,snotbuf,0);
Bsprintf(snotbuf,"Global shade divide");
printext16(8,ydim-STATUS2DSIZ+104,11,-1,snotbuf,0);
printext16(8,ydim-STATUS2DSIZ+96,11,-1,snotbuf,0);
Bsprintf(snotbuf,"Global visibility divide");
printext16(200,ydim-STATUS2DSIZ+48,11,-1,snotbuf,0);
printext16(8,ydim-STATUS2DSIZ+104,11,-1,snotbuf,0);
}
static void FuncMenu(void)
@ -9765,6 +9742,7 @@ static void FuncMenu(void)
}
keystatus[KEYSC_UP] = 0;
}
#if 0
if (keystatus[KEYSC_LEFT])
{
/* if (col == 2)
@ -9784,12 +9762,13 @@ static void FuncMenu(void)
col = 0;
xpos = 8;
rowmax = 7;
dispwidth = 23;
dispwidth = 24;
disptext[dispwidth] = 0;
if (row > rowmax) row = rowmax;
}
keystatus[KEYSC_LEFT] = 0;
}
if (keystatus[KEYSC_RIGHT])
{
if (col == 0)
@ -9814,6 +9793,7 @@ static void FuncMenu(void)
} */
keystatus[KEYSC_RIGHT] = 0;
}
#endif
if (keystatus[KEYSC_ENTER])
{
keystatus[KEYSC_ENTER] = 0;
@ -9932,35 +9912,36 @@ static void FuncMenu(void)
break;
case 5:
{
for (i=Bsprintf(disptext,"Up-size selected sectors"); i < dispwidth; i++) disptext[i] = ' ';
for (i=Bsprintf(disptext,"Resize selection"); i < dispwidth; i++) disptext[i] = ' ';
if (editval)
{
j=getnumber16("Size multiplier: ",1,8,0);
if (j!=1)
j=getnumber16("Percentage of original: ",100,1000,0);
if (j!=100)
{
int w, currsector, start_wall, end_wall;
double size = (j/100.f);
for (i = 0; i < highlightsectorcnt; i++)
{
currsector = highlightsector[i];
sector[currsector].ceilingz *= j;
sector[currsector].floorz *= j;
sector[currsector].ceilingz *= size;
sector[currsector].floorz *= size;
// Do all the walls in the sector
start_wall = sector[currsector].wallptr;
end_wall = start_wall + sector[currsector].wallnum;
for (w = start_wall; w < end_wall; w++)
{
wall[w].x *= j;
wall[w].y *= j;
wall[w].yrepeat = min(wall[w].yrepeat/j,255);
wall[w].x *= size;
wall[w].y *= size;
wall[w].yrepeat = min(wall[w].yrepeat/size,255);
}
w = headspritesect[highlightsector[i]];
while (w >= 0)
{
sprite[w].x *= j;
sprite[w].y *= j;
sprite[w].z *= j;
sprite[w].xrepeat = min(max(sprite[w].xrepeat*j,1),255);
sprite[w].yrepeat = min(max(sprite[w].yrepeat*j,1),255);
sprite[w].x *= size;
sprite[w].y *= size;
sprite[w].z *= size;
sprite[w].xrepeat = min(max(sprite[w].xrepeat*size,1),255);
sprite[w].yrepeat = min(max(sprite[w].yrepeat*size,1),255);
w = nextspritesect[w];
}
}
@ -9971,46 +9952,6 @@ static void FuncMenu(void)
}
break;
case 6:
{
for (i=Bsprintf(disptext,"Down-size selected sects"); i < dispwidth; i++) disptext[i] = ' ';
if (editval)
{
j=getnumber16("Size divisor: ",1,8,0);
if (j!=1)
{
int w, currsector, start_wall, end_wall;
for (i = 0; i < highlightsectorcnt; i++)
{
currsector = highlightsector[i];
sector[currsector].ceilingz /= j;
sector[currsector].floorz /= j;
// Do all the walls in the sector
start_wall = sector[currsector].wallptr;
end_wall = start_wall + sector[currsector].wallnum;
for (w = start_wall; w < end_wall; w++)
{
wall[w].x /= j;
wall[w].y /= j;
wall[w].yrepeat = min(wall[w].yrepeat*j,255);
}
w = headspritesect[highlightsector[i]];
while (w >= 0)
{
sprite[w].x /= j;
sprite[w].y /= j;
sprite[w].z /= j;
sprite[w].xrepeat = min(max(sprite[w].xrepeat/j,1),255);
sprite[w].yrepeat = min(max(sprite[w].yrepeat/j,1),255);
w = nextspritesect[w];
}
}
printmessage16("Map scaled");
}
else printmessage16("Aborted");
}
}
break;
case 7:
{
for (i=Bsprintf(disptext,"Global shade divide"); i < dispwidth; i++) disptext[i] = ' ';
if (editval)
@ -10033,12 +9974,7 @@ static void FuncMenu(void)
}
}
break;
}
break;
case 1:
switch (row)
{
case 0:
case 7:
{
for (i=Bsprintf(disptext,"Global visibility divide"); i < dispwidth; i++) disptext[i] = ' ';
if (editval)

View file

@ -477,7 +477,7 @@ typedef struct {
short somethingonplayer,on_crane,i,one_parallax_sectnum;
short over_shoulder_on,random_club_frame,fist_incs;
short one_eighty_count,cheat_phase;
short dummyplayersprite,extra_extra8,quick_kick;
short dummyplayersprite,extra_extra8,quick_kick,last_quick_kick;
short heat_amount,actorsqu,timebeforeexit,customexitsound;
short weaprecs[16],weapreccnt;

View file

@ -2560,17 +2560,62 @@ static void coolgaugetext(int snum)
static void ShowFrameRate(void)
{
static int frameval[AVERAGEFRAMES], framecnt = 0;
if (totalclock != frameval[framecnt])
// adapted from ZDoom because I like it better than what we had
// applicable ZDoom code available under GPL from csDoom
if (ud.tickrate == 1)
{
framerate=(timer*AVERAGEFRAMES)/(totalclock-frameval[framecnt]);
frameval[framecnt] = totalclock;
if (ud.tickrate)
static int FrameCount = 0;
static int LastCount = 0;
static int LastSec = 0;
static int LastMS = 0;
int ms = getticks();
int howlong = ms - LastMS;
if (howlong >= 0)
{
int thisSec = ms/1000;
int x = (xdim <= 640);
int chars = Bsprintf(tempbuf, "%2u ms (%3u fps)", howlong, LastCount);
if (!x)
{
printext256(windowx2-(chars<<3)+1,windowy1+2,0,-1,tempbuf,x);
printext256(windowx2-(chars<<3),windowy1+1,COLOR_WHITE,-1,tempbuf,x);
}
else
{
printext256(windowx2-(chars<<2)+1,windowy1+2,0,-1,tempbuf,x);
printext256(windowx2-(chars<<2),windowy1+1,COLOR_WHITE,-1,tempbuf,x);
}
if (numplayers > 1)
if ((totalclock - lastpackettime) > 1)
{
for (howlong = (totalclock - lastpackettime);howlong>0 && howlong<(xdim>>2);howlong--)
printext256(4L*howlong,0,COLOR_WHITE,-1,".",0);
}
if (LastSec < thisSec)
{
framerate = LastCount = FrameCount / (thisSec - LastSec);
LastSec = thisSec;
FrameCount = 0;
}
FrameCount++;
}
LastMS = ms;
}
else if (ud.tickrate == 2)
{
static int frameval[AVERAGEFRAMES], framecnt = 0;
if (totalclock != frameval[framecnt])
{
int x = (xdim <= 640);
int p = 32>>x;
framerate=(timer*AVERAGEFRAMES)/(totalclock-frameval[framecnt]);
frameval[framecnt] = totalclock;
Bsprintf(tempbuf,"%4d",max(framerate,0));
printext256(windowx2-p+1,windowy1+2,0,-1,tempbuf,x);
printext256(windowx2-p,windowy1+1,(framerate < 40) ? COLOR_RED : COLOR_WHITE,-1,tempbuf,x);
@ -2582,45 +2627,35 @@ static void ShowFrameRate(void)
printext256(4L*p,0,COLOR_WHITE,-1,".",0);
}
}
framecnt = ((framecnt+1)&(AVERAGEFRAMES-1));
}
framecnt = ((framecnt+1)&(AVERAGEFRAMES-1));
}
static void ShowCoordinates(int snum)
{
int y = 8;
int y = 16;
if ((gametype_flags[ud.coop] & GAMETYPE_FLAG_FRAGBAR))
{
if (ud.multimode > 4)
y = 24;
y = 32;
else if (ud.multimode > 1)
y = 16;
y = 24;
}
sprintf(tempbuf,"X= %d",g_player[snum].ps->posx);
sprintf(tempbuf,"XYZ= (%d,%d,%d)",g_player[snum].ps->posx,g_player[snum].ps->posy,g_player[snum].ps->posz);
printext256(250L,y,31,-1,tempbuf,0);
sprintf(tempbuf,"Y= %d",g_player[snum].ps->posy);
Bsprintf(tempbuf,"A/H= %d,%d",g_player[snum].ps->ang,g_player[snum].ps->horiz);
printext256(250L,y+9L,31,-1,tempbuf,0);
Bsprintf(tempbuf,"Z= %d",g_player[snum].ps->posz);
printext256(250L,y+18L,31,-1,tempbuf,0);
Bsprintf(tempbuf,"A= %d",g_player[snum].ps->ang);
printext256(250L,y+27L,31,-1,tempbuf,0);
Bsprintf(tempbuf,"H= %d",g_player[snum].ps->horiz);
printext256(250L,y+36L,31,-1,tempbuf,0);
Bsprintf(tempbuf,"ZV= %d",g_player[snum].ps->poszv);
printext256(250L,y+45L,31,-1,tempbuf,0);
printext256(250L,y+18L,31,-1,tempbuf,0);
Bsprintf(tempbuf,"OG= %d",g_player[snum].ps->on_ground);
printext256(250L,y+54L,31,-1,tempbuf,0);
Bsprintf(tempbuf,"AM= %d",g_player[snum].ps->ammo_amount[GROW_WEAPON]);
printext256(250L,y+63L,31,-1,tempbuf,0);
Bsprintf(tempbuf,"LFW= %d",g_player[snum].ps->last_full_weapon);
printext256(250L,y+72L,31,-1,tempbuf,0);
printext256(250L,y+27L,31,-1,tempbuf,0);
Bsprintf(tempbuf,"SECTL= %d",sector[g_player[snum].ps->cursectnum].lotag);
printext256(250L,y+81L,31,-1,tempbuf,0);
printext256(250L,y+36L,31,-1,tempbuf,0);
Bsprintf(tempbuf,"SEED= %d",randomseed);
printext256(250L,y+90L,31,-1,tempbuf,0);
printext256(250L,y+45L,31,-1,tempbuf,0);
Bsprintf(tempbuf,"THOLD= %d",g_player[snum].ps->transporter_hold);
printext256(250L,y+99L+7,31,-1,tempbuf,0);
printext256(250L,y+54L+7,31,-1,tempbuf,0);
}
static void operatefta(void)

View file

@ -776,6 +776,7 @@ const memberlabel_t playerlabels[]=
{ "max_player_health", PLAYER_MAX_PLAYER_HEALTH, 0, 0 },
{ "max_shield_amount", PLAYER_MAX_SHIELD_AMOUNT, 0, 0 },
{ "max_ammo_amount", PLAYER_MAX_AMMO_AMOUNT, LABEL_HASPARM2, MAX_WEAPONS },
{ "last_quick_kick", PLAYER_LAST_QUICK_KICK, 0, 0 },
{ "", -1, 0, 0 } // END OF LIST
};

View file

@ -73,14 +73,14 @@ extern const memberlabel_t userdeflabels[];
extern const memberlabel_t inputlabels[];
extern const memberlabel_t tsprlabels[];
extern void DoUserDef(int iSet, int lLabelID, int lVar2);
extern void DoThisProjectile(int iSet, int lVar1, int lLabelID, int lVar2);
extern void DoPlayer(int iSet, int lVar1, int lLabelID, int lVar2, int lParm2);
extern void DoInput(int iSet, int lVar1, int lLabelID, int lVar2);
extern void DoWall(int iSet, int lVar1, int lLabelID, int lVar2);
extern void DoSector(int iSet, int lVar1, int lLabelID, int lVar2);
extern void DoActor(int iSet, int lVar1, int lLabelID, int lVar2, int lParm2);
extern void DoTsprite(int iSet, int lVar1, int lLabelID, int lVar2);
extern void DoUserDef(int iSet, int lLabelID, int lVar2);
extern void DoThisProjectile(int iSet, int lVar1, int lLabelID, int lVar2);
extern void DoPlayer(int iSet, int lVar1, int lLabelID, int lVar2, int lParm2);
extern void DoInput(int iSet, int lVar1, int lLabelID, int lVar2);
extern void DoWall(int iSet, int lVar1, int lLabelID, int lVar2);
extern void DoSector(int iSet, int lVar1, int lLabelID, int lVar2);
extern void DoActor(int iSet, int lVar1, int lLabelID, int lVar2, int lParm2);
extern void DoTsprite(int iSet, int lVar1, int lLabelID, int lVar2);
extern void DoProjectile(int iSet, int lVar1, int lLabelID, int lVar2);
#define CON_ERROR OSD_ERROR "Line %d, %s: "
@ -270,6 +270,7 @@ enum playerlabels
PLAYER_MAX_PLAYER_HEALTH,
PLAYER_MAX_SHIELD_AMOUNT,
PLAYER_MAX_AMMO_AMOUNT,
PLAYER_LAST_QUICK_KICK,
PLAYER_END
};

View file

@ -2505,6 +2505,15 @@ void DoPlayer(int iSet, int lVar1, int lLabelID, int lVar2, int lParm2)
SetGameVarID(lVar2, g_player[iPlayer].ps->max_ammo_amount[lParm2], g_i, g_p);
return;
case PLAYER_LAST_QUICK_KICK:
if (iSet)
{
g_player[iPlayer].ps->last_quick_kick=lValue;
return;
}
SetGameVarID(lVar2, g_player[iPlayer].ps->last_quick_kick, g_i, g_p);
return;
default:
return;
}

View file

@ -43,11 +43,10 @@ extern short editstatus, searchit;
extern int searchx, searchy, osearchx, osearchy; //search input
extern short searchsector, searchwall, searchstat; //search output
#define AVERAGEFRAMES 128
#define COLOR_RED 248
#define COLOR_WHITE 31
static int ototalclock = 0, clockval[AVERAGEFRAMES], clockcnt = 0;
static int ototalclock = 0;
#define NUMOPTIONS 9

View file

@ -748,7 +748,7 @@ cvarmappings cvar[] =
#endif
{ "r_drawweapon", "r_drawweapon: enable/disable weapon drawing", (void*)&ud.drawweapon, CVAR_INT, 0, 0, 2 },
{ "osdhightile", "osdhightile: enable/disable hires art replacements for console text", (void*)&osdhightile, CVAR_BOOL, 0, 0, 1 },
{ "r_showfps", "r_showfps: show the frame rate counter", (void*)&ud.tickrate, CVAR_BOOL, 0, 0, 1 },
{ "r_showfps", "r_showfps: show the frame rate counter", (void*)&ud.tickrate, CVAR_INT, 0, 0, 2 },
{ "r_shadows", "r_shadows: enable/disable sprite and model shadows", (void*)&ud.shadows, CVAR_BOOL, 0, 0, 1 },
{ "r_precache", "r_precache: enable/disable the pre-level caching routine", (void*)&ud.config.useprecache, CVAR_BOOL, 0, 0, 1 },

View file

@ -2143,7 +2143,7 @@ static void myospalw(int x, int y, int tilenum, int shade, int orientation, int
}
}
static int fistsign, last_quick_kick[MAXPLAYERS];
static int fistsign;
void displayweapon(int snum)
{
@ -2200,7 +2200,7 @@ void displayweapon(int snum)
if (GetGameVarID(g_iReturnVarID,p->i,snum) == 0)
{
j = 14-p->quick_kick;
if (j != 14 || last_quick_kick[snum])
if (j != 14 || p->last_quick_kick)
{
if (sprite[p->i].pal == 1)
pal = 1;
@ -3151,12 +3151,12 @@ static int doincrements(player_struct *p)
if (p->quick_kick > 0 && sprite[p->i].pal != 1)
{
last_quick_kick[snum] = p->quick_kick+1;
p->last_quick_kick = p->quick_kick+1;
p->quick_kick--;
if (p->quick_kick == 8)
shoot(p->i,KNEE);
}
else if (last_quick_kick[snum] > 0) last_quick_kick[snum]--;
else if (p->last_quick_kick > 0) p->last_quick_kick--;
if (p->access_incs && sprite[p->i].pal != 1)
{

View file

@ -238,13 +238,17 @@ static INT_PTR CALLBACK ConfigPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
if (i != CB_ERR) i = ComboBox_GetItemData((HWND)lParam, i);
if (i != CB_ERR)
{
for (j=0,dir=finddirs;dir != NULL;dir=dir->next,j++)
if (j == i)
{
if (i==0) settings.gamedir = NULL;
else settings.gamedir = dir->prev->name;
break;
}
if (i==0)
settings.gamedir = NULL;
else
{
for (j=1,dir=finddirs;dir != NULL;dir=dir->next,j++)
if (j == i)
{
settings.gamedir = dir->name;
break;
}
}
}
}
return TRUE;