mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-10 23:02:03 +00:00
- shootlaser and shootgrowspark
This commit is contained in:
parent
badf536fef
commit
f276a5f443
1 changed files with 22 additions and 25 deletions
|
@ -840,12 +840,12 @@ static void shootrpg(DDukeActor *actor, int p, int sx, int sy, int sz, int sa, i
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void shootlaser(int i, int p, int sx, int sy, int sz, int sa)
|
static void shootlaser(DDukeActor* actor, int p, int sx, int sy, int sz, int sa)
|
||||||
{
|
{
|
||||||
spritetype* const s = &sprite[i];
|
spritetype* const s = &actor->s;
|
||||||
int sect = s->sectnum;
|
int sect = s->sectnum;
|
||||||
int zvel;
|
int zvel;
|
||||||
short hitsect, hitwall, j, k;
|
short hitsect, hitwall, j;
|
||||||
int hitx, hity, hitz;
|
int hitx, hity, hitz;
|
||||||
DDukeActor* hitsprt;
|
DDukeActor* hitsprt;
|
||||||
|
|
||||||
|
@ -875,7 +875,7 @@ static void shootlaser(int i, int p, int sx, int sy, int sz, int sa)
|
||||||
|
|
||||||
if (j == 1)
|
if (j == 1)
|
||||||
{
|
{
|
||||||
k = EGS(hitsect, hitx, hity, hitz, TRIPBOMB, -16, 4, 5, sa, 0, 0, i, 6);
|
auto bomb = EGS(hitsect, hitx, hity, hitz, TRIPBOMB, -16, 4, 5, sa, 0, 0, actor, 6);
|
||||||
if (isWW2GI())
|
if (isWW2GI())
|
||||||
{
|
{
|
||||||
int lTripBombControl = GetGameVar("TRIPBOMB_CONTROL", TRIPBOMB_TRIPWIRE, nullptr, -1);
|
int lTripBombControl = GetGameVar("TRIPBOMB_CONTROL", TRIPBOMB_TRIPWIRE, nullptr, -1);
|
||||||
|
@ -884,18 +884,18 @@ static void shootlaser(int i, int p, int sx, int sy, int sz, int sa)
|
||||||
int lLifetime = GetGameVar("STICKYBOMB_LIFETIME", NAM_GRENADE_LIFETIME, nullptr, p);
|
int lLifetime = GetGameVar("STICKYBOMB_LIFETIME", NAM_GRENADE_LIFETIME, nullptr, p);
|
||||||
int lLifetimeVar = GetGameVar("STICKYBOMB_LIFETIME_VAR", NAM_GRENADE_LIFETIME_VAR, nullptr, p);
|
int lLifetimeVar = GetGameVar("STICKYBOMB_LIFETIME_VAR", NAM_GRENADE_LIFETIME_VAR, nullptr, p);
|
||||||
// set timer. blows up when at zero....
|
// set timer. blows up when at zero....
|
||||||
sprite[k].extra = lLifetime
|
bomb->s.extra = lLifetime
|
||||||
+ mulscale(krand(), lLifetimeVar, 14)
|
+ mulscale(krand(), lLifetimeVar, 14)
|
||||||
- lLifetimeVar;
|
- lLifetimeVar;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite[k].hitag = k;
|
bomb->s.hitag = bomb->GetIndex(); // sigh...
|
||||||
S_PlayActorSound(LASERTRIP_ONWALL, k);
|
S_PlayActorSound(LASERTRIP_ONWALL, bomb);
|
||||||
sprite[k].xvel = -20;
|
bomb->s.xvel = -20;
|
||||||
ssp(k, CLIPMASK0);
|
ssp(bomb, CLIPMASK0);
|
||||||
sprite[k].cstat = 16;
|
bomb->s.cstat = 16;
|
||||||
hittype[k].temp_data[5] = sprite[k].ang = getangle(wall[hitwall].x - wall[wall[hitwall].point2].x, wall[hitwall].y - wall[wall[hitwall].point2].y) - 512;
|
bomb->temp_data[5] = bomb->s.ang = getangle(wall[hitwall].x - wall[wall[hitwall].point2].x, wall[hitwall].y - wall[wall[hitwall].point2].y) - 512;
|
||||||
|
|
||||||
if (p >= 0)
|
if (p >= 0)
|
||||||
ps[p].ammo_amount[TRIPBOMB_WEAPON]--;
|
ps[p].ammo_amount[TRIPBOMB_WEAPON]--;
|
||||||
|
@ -908,9 +908,8 @@ static void shootlaser(int i, int p, int sx, int sy, int sz, int sa)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void shootgrowspark(int i, int p, int sx, int sy, int sz, int sa)
|
static void shootgrowspark(DDukeActor* actor, int p, int sx, int sy, int sz, int sa)
|
||||||
{
|
{
|
||||||
auto actor = &hittype[i];
|
|
||||||
auto s = &actor->s;
|
auto s = &actor->s;
|
||||||
int sect = s->sectnum;
|
int sect = s->sectnum;
|
||||||
int zvel;
|
int zvel;
|
||||||
|
@ -955,7 +954,7 @@ static void shootgrowspark(int i, int p, int sx, int sy, int sz, int sa)
|
||||||
int x;
|
int x;
|
||||||
int j = findplayer(s, &x);
|
int j = findplayer(s, &x);
|
||||||
sz -= (4 << 8);
|
sz -= (4 << 8);
|
||||||
zvel = ((ps[j].posz - sz) << 8) / (ldist(&sprite[ps[j].i], s));
|
zvel = ((ps[j].posz - sz) << 8) / (ldist(ps[p].GetActor(), actor));
|
||||||
zvel += 128 - (krand() & 255);
|
zvel += 128 - (krand() & 255);
|
||||||
sa += 32 - (krand() & 63);
|
sa += 32 - (krand() & 63);
|
||||||
}
|
}
|
||||||
|
@ -965,28 +964,26 @@ static void shootgrowspark(int i, int p, int sx, int sy, int sz, int sa)
|
||||||
// RESHOOTGROW:
|
// RESHOOTGROW:
|
||||||
|
|
||||||
s->cstat &= ~257;
|
s->cstat &= ~257;
|
||||||
hitscan(sx, sy, sz, sect,
|
hitscan(sx, sy, sz, sect, sintable[(sa + 512) & 2047], sintable[sa & 2047],
|
||||||
sintable[(sa + 512) & 2047],
|
|
||||||
sintable[sa & 2047],
|
|
||||||
zvel << 6, &hitsect, &hitwall, &hitsprt, &hitx, &hity, &hitz, CLIPMASK1);
|
zvel << 6, &hitsect, &hitwall, &hitsprt, &hitx, &hity, &hitz, CLIPMASK1);
|
||||||
|
|
||||||
s->cstat |= 257;
|
s->cstat |= 257;
|
||||||
|
|
||||||
int j = EGS(sect, hitx, hity, hitz, GROWSPARK, -16, 28, 28, sa, 0, 0, i, 1);
|
auto spark = EGS(sect, hitx, hity, hitz, GROWSPARK, -16, 28, 28, sa, 0, 0, actor, 1);
|
||||||
|
|
||||||
sprite[j].pal = 2;
|
spark->s.pal = 2;
|
||||||
sprite[j].cstat |= 130;
|
spark->s.cstat |= 130;
|
||||||
sprite[j].xrepeat = sprite[j].yrepeat = 1;
|
spark->s.xrepeat = spark->s.yrepeat = 1;
|
||||||
|
|
||||||
if (hitwall == -1 && hitsprt == nullptr && hitsect >= 0)
|
if (hitwall == -1 && hitsprt == nullptr && hitsect >= 0)
|
||||||
{
|
{
|
||||||
if (zvel < 0 && (sector[hitsect].ceilingstat & 1) == 0)
|
if (zvel < 0 && (sector[hitsect].ceilingstat & 1) == 0)
|
||||||
fi.checkhitceiling(hitsect);
|
fi.checkhitceiling(hitsect);
|
||||||
}
|
}
|
||||||
else if (hitsprt != nullptr) fi.checkhitsprite(hitsprt->GetIndex(), j);
|
else if (hitsprt != nullptr) fi.checkhitsprite(hitsprt->GetIndex(), spark->GetIndex());
|
||||||
else if (hitwall >= 0 && wall[hitwall].picnum != ACCESSSWITCH && wall[hitwall].picnum != ACCESSSWITCH2)
|
else if (hitwall >= 0 && wall[hitwall].picnum != ACCESSSWITCH && wall[hitwall].picnum != ACCESSSWITCH2)
|
||||||
{
|
{
|
||||||
fi.checkhitwall(j, hitwall, hitx, hity, hitz, GROWSPARK);
|
fi.checkhitwall(spark->GetIndex(), hitwall, hitx, hity, hitz, GROWSPARK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1111,7 +1108,7 @@ void shoot_d(int i, int atwith)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HANDHOLDINGLASER:
|
case HANDHOLDINGLASER:
|
||||||
shootlaser(i, p, sx, sy, sz, sa);
|
shootlaser(actor, p, sx, sy, sz, sa);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case BOUNCEMINE:
|
case BOUNCEMINE:
|
||||||
|
@ -1135,7 +1132,7 @@ void shoot_d(int i, int atwith)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GROWSPARK:
|
case GROWSPARK:
|
||||||
shootgrowspark(i, p, sx, sy, sz, sa);
|
shootgrowspark(actor, p, sx, sy, sz, sa);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SHRINKER:
|
case SHRINKER:
|
||||||
|
|
Loading…
Reference in a new issue