- all of player_w.cpp

This commit is contained in:
Christoph Oelckers 2020-10-25 06:20:03 +01:00
parent be591e9cf9
commit b891646c37
1 changed files with 37 additions and 38 deletions

View File

@ -49,52 +49,52 @@ int operateTripbomb(int snum);
//
//---------------------------------------------------------------------------
void DoFire(struct player_struct *p, short snum)
void DoFire(struct player_struct* p, short snum)
{
int i;
if(aplWeaponWorksLike[p->curr_weapon][snum]!=KNEE_WEAPON)
if (aplWeaponWorksLike[p->curr_weapon][snum] != KNEE_WEAPON)
{
p->ammo_amount[p->curr_weapon]--;
}
if(aplWeaponFireSound[p->curr_weapon][snum])
if (aplWeaponFireSound[p->curr_weapon][snum])
{
S_PlayActorSound(aplWeaponFireSound[p->curr_weapon][snum],p->i);
S_PlayActorSound(aplWeaponFireSound[p->curr_weapon][snum], p->i);
}
SetGameVarID(g_iWeaponVarID, p->curr_weapon, p->GetActor(), snum);
SetGameVarID(g_iWorksLikeVarID,aplWeaponWorksLike[p->curr_weapon][snum], p->GetActor(), snum);
SetGameVarID(g_iWorksLikeVarID, aplWeaponWorksLike[p->curr_weapon][snum], p->GetActor(), snum);
fi.shoot(p->GetActor(), 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++)
{
fi.shoot(p->GetActor(), aplWeaponShoots[p->curr_weapon][snum]);
if( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_AMMOPERSHOT)
if (aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_AMMOPERSHOT)
{
p->ammo_amount[p->curr_weapon]--;
}
}
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 = ud.levelclock+32;
lastvisinc = ud.levelclock + 32;
p->visibility = 0;
}
if( //!(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_CHECKATRELOAD) &&
aplWeaponReload[p->curr_weapon][snum] > aplWeaponTotalTime[p->curr_weapon][snum]
&& p->ammo_amount[p->curr_weapon] > 0
&& (aplWeaponClip[p->curr_weapon][snum])
&& ((p->ammo_amount[p->curr_weapon]%(aplWeaponClip[p->curr_weapon][snum]))==0)
)
if ( //!(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_CHECKATRELOAD) &&
aplWeaponReload[p->curr_weapon][snum] > aplWeaponTotalTime[p->curr_weapon][snum]
&& p->ammo_amount[p->curr_weapon] > 0
&& (aplWeaponClip[p->curr_weapon][snum])
&& ((p->ammo_amount[p->curr_weapon] % (aplWeaponClip[p->curr_weapon][snum])) == 0)
)
{
// do clip check...
p->kickback_pic=aplWeaponTotalTime[p->curr_weapon][snum];
p->kickback_pic = aplWeaponTotalTime[p->curr_weapon][snum];
// is same as p->kickback_pic....
}
if(aplWeaponWorksLike[p->curr_weapon][snum]!=KNEE_WEAPON)
if (aplWeaponWorksLike[p->curr_weapon][snum] != KNEE_WEAPON)
{
checkavailweapon(p);
}
@ -108,27 +108,26 @@ void DoFire(struct player_struct *p, short snum)
void DoSpawn(struct player_struct *p, short snum)
{
int j;
if(!aplWeaponSpawn[p->curr_weapon][snum])
return;
j = fi.spawn(p->i, aplWeaponSpawn[p->curr_weapon][snum]);
auto j = spawn(p->GetActor(), aplWeaponSpawn[p->curr_weapon][snum]);
if((aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_SPAWNTYPE2 ) )
{
// like shotgun shells
sprite[j].ang += 1024;
j->s.ang += 1024;
ssp(j,CLIPMASK0);
sprite[j].ang += 1024;
j->s.ang += 1024;
// p->kickback_pic++;
}
else if((aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_SPAWNTYPE3 ) )
{
// like chaingun shells
sprite[j].ang += 1024;
sprite[j].ang &= 2047;
sprite[j].xvel += 32;
sprite[j].z += (3<<8);
j->s.ang += 1024;
j->s.ang &= 2047;
j->s.xvel += 32;
j->s.z += (3<<8);
ssp(j,CLIPMASK0);
}
@ -311,7 +310,7 @@ void operateweapon_ww(int snum, ESyncBits actions, int psect)
{
auto p = &ps[snum];
int pi = p->i;
int i, j, k;
int i, k;
int psectlotag = sector[psect].lotag;
// already firing...
@ -342,33 +341,33 @@ void operateweapon_ww(int snum, ESyncBits actions, int psect)
i = -512 - mulscale16(p->horizon.sum().asq16(), 20);
}
j = EGS(p->cursectnum,
auto j = EGS(p->cursectnum,
p->posx + (sintable[(p->angle.ang.asbuild() + 512) & 2047] >> 6),
p->posy + (sintable[p->angle.ang.asbuild() & 2047] >> 6),
p->posz, HEAVYHBOMB, -16, 9, 9,
p->angle.ang.asbuild(), (k + (p->hbomb_hold_delay << 5)), i, pi, 1);
p->angle.ang.asbuild(), (k + (p->hbomb_hold_delay << 5)), i, p->GetActor(), 1);
{
int lGrenadeLifetime = GetGameVar("GRENADE_LIFETIME", NAM_GRENADE_LIFETIME, nullptr, snum);
int lGrenadeLifetimeVar = GetGameVar("GRENADE_LIFETIME_VAR", NAM_GRENADE_LIFETIME_VAR, nullptr, snum);
// set timer. blows up when at zero....
sprite[j].extra = lGrenadeLifetime
j->s.extra = lGrenadeLifetime
+ mulscale(krand(), lGrenadeLifetimeVar, 14)
- lGrenadeLifetimeVar;
}
if (k == 15)
{
sprite[j].yvel = 3;
sprite[j].z += (8 << 8);
j->s.yvel = 3;
j->s.z += (8 << 8);
}
k = hits(p->GetActor());
if (k < 512)
{
sprite[j].ang += 1024;
sprite[j].zvel /= 3;
sprite[j].xvel /= 3;
j->s.ang += 1024;
j->s.zvel /= 3;
j->s.xvel /= 3;
}
p->hbomb_on = 1;