Fixed a long-standing animation bug with quick kick that was pissing me off and removed a bunch of debugging crap/comments that haven't been used in 5 years and were only obfuscating the code

git-svn-id: https://svn.eduke32.com/eduke32@45 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2006-04-17 23:36:02 +00:00
parent ea46fa145e
commit 9e711bc90c

View file

@ -1938,34 +1938,19 @@ void DoFire(short snum)
{ {
if (p->weapon_pos != 0) return; if (p->weapon_pos != 0) return;
// if ((aplWeaponWorksLike[p->curr_weapon][snum]!=KNEE_WEAPON) && (p->ammo_amount[p->curr_weapon] == 0))
// return;
//AddLog("DoFire()");
if(aplWeaponWorksLike[p->curr_weapon][snum]!=KNEE_WEAPON) if(aplWeaponWorksLike[p->curr_weapon][snum]!=KNEE_WEAPON)
{
//Bsprintf(g_szBuf,"%d: using Ammo. was: %d",p->curr_weapon,p->ammo_amount[p->curr_weapon]);
// AddLog(g_szBuf);
p->ammo_amount[p->curr_weapon]--; p->ammo_amount[p->curr_weapon]--;
}
if(aplWeaponFireSound[p->curr_weapon][snum]) if(aplWeaponFireSound[p->curr_weapon][snum])
{ {
//Bsprintf(g_szBuf,"DoFire():firesound(%ld)",aplWeaponFireSound[p->curr_weapon][snum]);
//AddLog(g_szBuf);
spritesound(aplWeaponFireSound[p->curr_weapon][snum],p->i); spritesound(aplWeaponFireSound[p->curr_weapon][snum],p->i);
} }
SetGameVarID(g_iWeaponVarID,p->curr_weapon,p->i,snum); SetGameVarID(g_iWeaponVarID,p->curr_weapon,p->i,snum);
SetGameVarID(g_iWorksLikeVarID,aplWeaponWorksLike[p->curr_weapon][snum], p->i, snum); SetGameVarID(g_iWorksLikeVarID,aplWeaponWorksLike[p->curr_weapon][snum], p->i, snum);
//Bsprintf(g_szBuf,"DoFire():shoot(%ld)",aplWeaponShoots[p->curr_weapon][snum]);
//AddLog(g_szBuf);
shoot(p->i,aplWeaponShoots[p->curr_weapon][snum]); shoot(p->i,aplWeaponShoots[p->curr_weapon][snum]);
for(i=1;i<aplWeaponShotsPerBurst[p->curr_weapon][snum];i++) for(i=1;i<aplWeaponShotsPerBurst[p->curr_weapon][snum];i++)
{ {
//Bsprintf(g_szBuf,"DoFire():shoot(%ld)",aplWeaponShoots[p->curr_weapon][snum]);
//AddLog(g_szBuf);
if(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_AMMOPERSHOT) if(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_AMMOPERSHOT)
{ {
if(p->ammo_amount[p->curr_weapon] > 0) if(p->ammo_amount[p->curr_weapon] > 0)
@ -1975,14 +1960,11 @@ void DoFire(short snum)
} }
} }
else else
{
shoot(p->i,aplWeaponShoots[p->curr_weapon][snum]); shoot(p->i,aplWeaponShoots[p->curr_weapon][snum]);
}
} }
if(! (aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_NOVISIBLE )) if(! (aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_NOVISIBLE ))
{ {
// make them visible if not set...
lastvisinc = totalclock+32; lastvisinc = totalclock+32;
p->visibility = 0; p->visibility = 0;
} }
@ -1991,17 +1973,10 @@ void DoFire(short snum)
aplWeaponReload[p->curr_weapon][snum] > aplWeaponTotalTime[p->curr_weapon][snum] aplWeaponReload[p->curr_weapon][snum] > aplWeaponTotalTime[p->curr_weapon][snum]
&& p->ammo_amount[p->curr_weapon] > 0 && p->ammo_amount[p->curr_weapon] > 0
&& (aplWeaponClip[p->curr_weapon][snum]) && (aplWeaponClip[p->curr_weapon][snum])
&& ((p->ammo_amount[p->curr_weapon]%(aplWeaponClip[p->curr_weapon][snum]))==0) && ((p->ammo_amount[p->curr_weapon]%(aplWeaponClip[p->curr_weapon][snum]))==0))
)
{ {
//AddLog("DoFire():ClipCheck");
// do clip check...
p->kickback_pic=aplWeaponTotalTime[p->curr_weapon][snum]; p->kickback_pic=aplWeaponTotalTime[p->curr_weapon][snum];
// is same as (*kb)....
} }
//Bsprintf(g_szBuf,"%d: Do fire: exit ammo: %d",p->curr_weapon,p->ammo_amount[p->curr_weapon]);
//AddLog(g_szBuf);
} }
} }
@ -2017,12 +1992,6 @@ void DoSpawn(short snum)
j = spawn(p->i, aplWeaponSpawn[p->curr_weapon][snum]); j = spawn(p->i, aplWeaponSpawn[p->curr_weapon][snum]);
/* if((aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_SPAWNTYPE2 ) )
{
// like shotgun shells
// p->kickback_pic++;
}
else */
if((aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_SPAWNTYPE3 ) ) if((aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_SPAWNTYPE3 ) )
{ {
// like chaingun shells // like chaingun shells
@ -2140,6 +2109,8 @@ void myospalw(long x, long y, short tilenum, signed char shade, char orientation
short fistsign; short fistsign;
char last_quick_kick[MAXPLAYERS];
void displayweapon(short snum) void displayweapon(short snum)
{ {
long gun_pos, looking_arc, cw; long gun_pos, looking_arc, cw;
@ -2176,13 +2147,9 @@ void displayweapon(short snum)
gun_pos -= (p->hard_landing<<3); gun_pos -= (p->hard_landing<<3);
if(p->last_weapon >= 0) if(p->last_weapon >= 0)
{
cw = aplWeaponWorksLike[p->last_weapon][snum]; cw = aplWeaponWorksLike[p->last_weapon][snum];
}
else else
{
cw = aplWeaponWorksLike[p->curr_weapon][snum]; cw = aplWeaponWorksLike[p->curr_weapon][snum];
}
g_gun_pos=gun_pos; g_gun_pos=gun_pos;
g_looking_arc=looking_arc; g_looking_arc=looking_arc;
@ -2198,7 +2165,7 @@ void displayweapon(short snum)
if(GetGameVarID(g_iReturnVarID,p->i,snum) == 0) if(GetGameVarID(g_iReturnVarID,p->i,snum) == 0)
{ {
j = 14-p->quick_kick; j = 14-p->quick_kick;
if(j != 14) if(j != 14 || last_quick_kick[snum])
{ {
if(sprite[p->i].pal == 1) if(sprite[p->i].pal == 1)
pal = 1; pal = 1;
@ -2210,7 +2177,7 @@ void displayweapon(short snum)
} }
if( j < 5 || j > 9 ) if( j < 7 || j > 12 )
myospal(weapon_xoffset+80-(p->look_ang>>1), myospal(weapon_xoffset+80-(p->look_ang>>1),
looking_arc+250-gun_pos,KNEE,gs,o|4,pal); looking_arc+250-gun_pos,KNEE,gs,o|4,pal);
else myospal(weapon_xoffset+160-16-(p->look_ang>>1), else myospal(weapon_xoffset+160-16-(p->look_ang>>1),
@ -2471,14 +2438,14 @@ void displayweapon(short snum)
if( (*kb) < *aplWeaponTotalTime[PISTOL_WEAPON]+1) if( (*kb) < *aplWeaponTotalTime[PISTOL_WEAPON]+1)
{ {
short kb_frames[] = {0,1,2,0,0,0,0},l; short kb_frames[] = {0,1,2},l;
l = 195-12+weapon_xoffset; l = 195-12+weapon_xoffset;
if((*kb) == *aplWeaponFireDelay[PISTOL_WEAPON]) if((*kb) == *aplWeaponFireDelay[PISTOL_WEAPON])
l -= 3; l -= 3;
myospalw((l-(p->look_ang>>1)),(looking_arc+244-gun_pos),FIRSTGUN+kb_frames[*kb],gs,2,pal); myospalw((l-(p->look_ang>>1)),(looking_arc+244-gun_pos),FIRSTGUN+kb_frames[*kb>2?0:*kb],gs,2,pal);
} }
else else
{ {
@ -3095,10 +3062,11 @@ char doincrements(struct player_struct *p)
if(p->quick_kick > 0 && sprite[p->i].pal != 1) if(p->quick_kick > 0 && sprite[p->i].pal != 1)
{ {
last_quick_kick[snum] = p->quick_kick+1;
p->quick_kick--; p->quick_kick--;
if( p->quick_kick == 8 ) if( p->quick_kick == 8 )
shoot(p->i,KNEE); shoot(p->i,KNEE);
} } else if(last_quick_kick[snum] > 0) last_quick_kick[snum]--;
if(p->access_incs && sprite[p->i].pal != 1) if(p->access_incs && sprite[p->i].pal != 1)
{ {
@ -4884,15 +4852,10 @@ SHOOTINCODE:
} }
} }
else if(*kb >= aplWeaponReload[p->curr_weapon][snum]) else if(*kb >= aplWeaponReload[p->curr_weapon][snum])
{
checkavailweapon(p); checkavailweapon(p);
}
} }
else if(aplWeaponWorksLike[p->curr_weapon][snum]!=KNEE_WEAPON && *kb >= aplWeaponFireDelay[p->curr_weapon][snum]) else if(aplWeaponWorksLike[p->curr_weapon][snum]!=KNEE_WEAPON && *kb >= aplWeaponFireDelay[p->curr_weapon][snum])
{
checkavailweapon(p); checkavailweapon(p);
}
if( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_STANDSTILL if( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_STANDSTILL
&& *kb < (aplWeaponFireDelay[p->curr_weapon][snum]+1) ) && *kb < (aplWeaponFireDelay[p->curr_weapon][snum]+1) )
@ -4902,40 +4865,23 @@ SHOOTINCODE:
} }
if(*kb == aplWeaponSound2Time[p->curr_weapon][snum]) if(*kb == aplWeaponSound2Time[p->curr_weapon][snum])
{ {
//AddLog("Sound2Time");
if(aplWeaponSound2Sound[p->curr_weapon][snum]) if(aplWeaponSound2Sound[p->curr_weapon][snum])
{ {
spritesound(aplWeaponSound2Sound[p->curr_weapon][snum],pi); spritesound(aplWeaponSound2Sound[p->curr_weapon][snum],pi);
} }
} }
if(*kb == aplWeaponSpawnTime[p->curr_weapon][snum]) if(*kb == aplWeaponSpawnTime[p->curr_weapon][snum])
{
//AddLog("SpawnTime");
DoSpawn(snum); DoSpawn(snum);
}
if ( *kb > aplWeaponFireDelay[p->curr_weapon][snum] if ( *kb > aplWeaponFireDelay[p->curr_weapon][snum]
&& (*kb) < aplWeaponTotalTime[p->curr_weapon][snum] && (*kb) < aplWeaponTotalTime[p->curr_weapon][snum]
&& (aplWeaponWorksLike[p->curr_weapon][snum] & KNEE_WEAPON ? 1 : p->ammo_amount[p->curr_weapon] > 0)) && (aplWeaponWorksLike[p->curr_weapon][snum] & KNEE_WEAPON ? 1 : p->ammo_amount[p->curr_weapon] > 0))
{ {
//Bsprintf(g_szBuf,"%s %ld, kb=%d %ld",__FILE__,__LINE__,*kb,aplWeaponWorksLike[p->curr_weapon][snum]);
//AddLog(g_szBuf);
// we are waiting for initial fire to complete
if ( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_AUTOMATIC) if ( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_AUTOMATIC)
{ // an 'automatic' {
//Bsprintf(g_szBuf,"%s %ld, kb=%d %ld",__FILE__,__LINE__,*kb,aplWeaponWorksLike[p->curr_weapon][snum]);
//AddLog(g_szBuf);
if( ( sb_snum&(1<<2) ) == 0 ) if( ( sb_snum&(1<<2) ) == 0 )
{ {
// 'fire' not still down... stop...
//Bsprintf(g_szBuf,"%s %ld, kb=%d %ld",__FILE__,__LINE__,*kb,aplWeaponWorksLike[p->curr_weapon][snum]);
//AddLog(g_szBuf);
// *kb = 0;
// check for clip change...
*kb = aplWeaponTotalTime[p->curr_weapon][snum]; *kb = aplWeaponTotalTime[p->curr_weapon][snum];
// break;
} }
if ( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_FIREEVERYTHIRD) if ( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_FIREEVERYTHIRD)
@ -4948,59 +4894,35 @@ SHOOTINCODE:
} }
if( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_FIREEVERYOTHER) if( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_FIREEVERYOTHER)
{ {
// fire every other...
DoFire(snum); DoFire(snum);
DoSpawn(snum); DoSpawn(snum);
} }
}
} // 'automatic
} }
else if(*kb == aplWeaponFireDelay[p->curr_weapon][snum] else if(*kb == aplWeaponFireDelay[p->curr_weapon][snum]
&& (aplWeaponWorksLike[p->curr_weapon][snum]==KNEE_WEAPON ? 1 : p->ammo_amount[p->curr_weapon] > 0)) && (aplWeaponWorksLike[p->curr_weapon][snum]==KNEE_WEAPON ? 1 : p->ammo_amount[p->curr_weapon] > 0))
{ {
//Bsprintf(g_szBuf,"FireDelayTime:%s %ld, kb=%d %ld",__FILE__,__LINE__,*kb,aplWeaponWorksLike[p->curr_weapon][snum]);
//AddLog(g_szBuf);
//AddLog("FireDelay Time");
DoFire(snum); DoFire(snum);
} }
else if ((*kb) >= aplWeaponTotalTime[p->curr_weapon][snum]) else if ((*kb) >= aplWeaponTotalTime[p->curr_weapon][snum])
{ {
//Bsprintf(g_szBuf,"end of TotalTime(%ld) %s %ld, kb=%d %ld",
// aplWeaponTotalTime[p->curr_weapon][snum],
// __FILE__,__LINE__,*kb,
// aplWeaponWorksLike[p->curr_weapon][snum]);
//AddLog(g_szBuf);
// we are >= total time...
if( //!(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_CHECKATRELOAD) && if( //!(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_CHECKATRELOAD) &&
(aplWeaponReload[p->curr_weapon][snum] > aplWeaponTotalTime[p->curr_weapon][snum] (aplWeaponReload[p->curr_weapon][snum] > aplWeaponTotalTime[p->curr_weapon][snum]
&& p->ammo_amount[p->curr_weapon] > 0 && p->ammo_amount[p->curr_weapon] > 0
&& (aplWeaponClip[p->curr_weapon][snum]) && (aplWeaponClip[p->curr_weapon][snum])
&& (((p->ammo_amount[p->curr_weapon]%(aplWeaponClip[p->curr_weapon][snum]))==0))) || p->reloading == 1 ) && (((p->ammo_amount[p->curr_weapon]%(aplWeaponClip[p->curr_weapon][snum]))==0))) || p->reloading == 1 )
{ {
// reload in progress...
int i; int i;
//Bsprintf(g_szBuf,"C %s %ld, kb=%d",__FILE__,__LINE__,*kb);
//AddLog(g_szBuf);
//Bsprintf(g_szBuf,"ammo=%d clip=%ld mod=%ld",p->ammo_amount[p->curr_weapon],
// aplWeaponClip[p->curr_weapon][snum],
// (p->ammo_amount[p->curr_weapon]%(aplWeaponClip[p->curr_weapon][snum]))
// );
//AddLog(g_szBuf);
i=aplWeaponReload[p->curr_weapon][snum] - aplWeaponTotalTime[p->curr_weapon][snum]; i=aplWeaponReload[p->curr_weapon][snum] - aplWeaponTotalTime[p->curr_weapon][snum];
// time for 'reload'
p->reloading = 1; p->reloading = 1;
if( (*kb) == (aplWeaponTotalTime[p->curr_weapon][snum] + 1)) if( (*kb) == (aplWeaponTotalTime[p->curr_weapon][snum] + 1))
{ // eject shortly after 'total time' {
if(aplWeaponReloadSound1[p->curr_weapon][snum]) if(aplWeaponReloadSound1[p->curr_weapon][snum])
spritesound(aplWeaponReloadSound1[p->curr_weapon][snum],pi); spritesound(aplWeaponReloadSound1[p->curr_weapon][snum],pi);
} }
else if( ((*kb) == (aplWeaponReload[p->curr_weapon][snum] - (i/3)) && else if( ((*kb) == (aplWeaponReload[p->curr_weapon][snum] - (i/3)) && !(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_RELOAD_TIMING)) ||
!(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_RELOAD_TIMING)) || ((*kb) == (aplWeaponReload[p->curr_weapon][snum] - i+4) && (aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_RELOAD_TIMING)) )
((*kb) == (aplWeaponReload[p->curr_weapon][snum] - i+4) &&
(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_RELOAD_TIMING)) )
{ {
// insert occurs 2/3 of way through reload delay
if(aplWeaponReloadSound2[p->curr_weapon][snum]) if(aplWeaponReloadSound2[p->curr_weapon][snum])
spritesound(aplWeaponReloadSound2[p->curr_weapon][snum],pi); spritesound(aplWeaponReloadSound2[p->curr_weapon][snum],pi);
} }
@ -5010,51 +4932,25 @@ SHOOTINCODE:
*kb=0; *kb=0;
p->reloading = 0; p->reloading = 0;
} }
} }
else else
{ {
//Bsprintf(g_szBuf,"NC %s %ld, kb=%d",__FILE__,__LINE__,*kb); if (aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_AUTOMATIC &&
//AddLog(g_szBuf); (aplWeaponWorksLike[p->curr_weapon][snum]==KNEE_WEAPON?1:p->ammo_amount[p->curr_weapon] > 0))
// no clip reload going on... {
if ( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_AUTOMATIC
&& (aplWeaponWorksLike[p->curr_weapon][snum]==KNEE_WEAPON ? 1 : p->ammo_amount[p->curr_weapon] > 0))
{ // an 'automatic'
if( sb_snum&(1<<2) ) if( sb_snum&(1<<2) )
{ {
// we are an AUTOMATIC. Fire again...
if(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_RANDOMRESTART) if(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_RANDOMRESTART)
{
*kb = 1+(TRAND&3); *kb = 1+(TRAND&3);
} else *kb=1;
else
{
*kb=1;
}
}
else
{
//Bsprintf(g_szBuf,"NC %s %ld, kb=%d",__FILE__,__LINE__,*kb);
//AddLog(g_szBuf);
// time to recycle automatic fire
*kb = 0;
} }
else *kb = 0;
} }
else else *kb=0;
{ // not 'automatic' and >totaltime
//Bsprintf(g_szBuf,"NA %s %ld, kb=%d",__FILE__,__LINE__,*kb);
//AddLog(g_szBuf);
*kb=0;
}
} }
} }
} }
//Bsprintf(g_szBuf,"%s %ld, kb=%d %ld",__FILE__,__LINE__,*kb,aplWeaponWorksLike[p->curr_weapon][snum]);
//AddLog(g_szBuf);
} }
} }
//UPDATE THIS FILE OVER THE OLD GETSPRITESCORE/COMPUTERGETINPUT FUNCTIONS //UPDATE THIS FILE OVER THE OLD GETSPRITESCORE/COMPUTERGETINPUT FUNCTIONS