mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
Fix tripbomb laser
git-svn-id: https://svn.eduke32.com/eduke32@8718 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
8def930980
commit
e88535a228
1 changed files with 22 additions and 18 deletions
|
@ -2060,29 +2060,27 @@ ACTOR_STATIC void G_MoveStandables(void)
|
||||||
pSprite->y += sintable[(T6(spriteNum))&2047]>>9;
|
pSprite->y += sintable[(T6(spriteNum))&2047]>>9;
|
||||||
pSprite->z -= (3<<8);
|
pSprite->z -= (3<<8);
|
||||||
|
|
||||||
setsprite(spriteNum,&pSprite->pos);
|
int16_t const oldSectNum = pSprite->sectnum;
|
||||||
|
int16_t curSectNum = pSprite->sectnum;
|
||||||
|
|
||||||
|
updatesectorneighbor(pSprite->x, pSprite->y, &curSectNum, 1024, 2048);
|
||||||
|
changespritesect(spriteNum, curSectNum);
|
||||||
|
|
||||||
int hitDist = A_CheckHitSprite(spriteNum, &hitSprite);
|
int hitDist = A_CheckHitSprite(spriteNum, &hitSprite);
|
||||||
|
|
||||||
actor[spriteNum].lastv.x = hitDist;
|
actor[spriteNum].lastv.x = hitDist;
|
||||||
pSprite->ang = oldAng;
|
pSprite->ang = oldAng;
|
||||||
|
|
||||||
// if(lTripBombControl & TRIPBOMB_TRIPWIRE)
|
// we're on a trip wire
|
||||||
if (actor[spriteNum].t_data[6] != 1)
|
if (actor[spriteNum].t_data[6] != 1)
|
||||||
{
|
{
|
||||||
// we're on a trip wire
|
|
||||||
int16_t cursectnum;
|
|
||||||
|
|
||||||
while (hitDist > 0)
|
while (hitDist > 0)
|
||||||
{
|
{
|
||||||
j = A_Spawn(spriteNum,LASERLINE);
|
j = A_Spawn(spriteNum, LASERLINE);
|
||||||
setsprite(j,&sprite[j].pos);
|
|
||||||
sprite[j].hitag = pSprite->hitag;
|
sprite[j].hitag = pSprite->hitag;
|
||||||
actor[j].t_data[1] = sprite[j].z;
|
actor[j].t_data[1] = sprite[j].z;
|
||||||
|
|
||||||
pSprite->x += sintable[(T6(spriteNum)+512)&2047]>>4;
|
|
||||||
pSprite->y += sintable[(T6(spriteNum))&2047]>>4;
|
|
||||||
|
|
||||||
if (hitDist < 1024)
|
if (hitDist < 1024)
|
||||||
{
|
{
|
||||||
sprite[j].xrepeat = hitDist>>5;
|
sprite[j].xrepeat = hitDist>>5;
|
||||||
|
@ -2090,20 +2088,27 @@ ACTOR_STATIC void G_MoveStandables(void)
|
||||||
}
|
}
|
||||||
hitDist -= 1024;
|
hitDist -= 1024;
|
||||||
|
|
||||||
cursectnum = pSprite->sectnum;
|
pSprite->x += sintable[(T6(spriteNum)+512)&2047]>>4;
|
||||||
updatesector(pSprite->x, pSprite->y, &cursectnum);
|
pSprite->y += sintable[(T6(spriteNum))&2047]>>4;
|
||||||
if (cursectnum < 0)
|
|
||||||
|
updatesectorneighbor(pSprite->x, pSprite->y, &curSectNum, 1024, 2048);
|
||||||
|
|
||||||
|
if (curSectNum == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
changespritesect(spriteNum, curSectNum);
|
||||||
|
|
||||||
|
// this is a hack to work around the LASERLINE sprite's art tile offset
|
||||||
|
changespritesect(j, curSectNum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
T1(spriteNum)++;
|
T1(spriteNum)++;
|
||||||
|
|
||||||
pSprite->x = T4(spriteNum);
|
pSprite->pos.vec2 = { T4(spriteNum), T5(spriteNum) };
|
||||||
pSprite->y = T5(spriteNum);
|
|
||||||
pSprite->z += (3<<8);
|
pSprite->z += (3<<8);
|
||||||
|
|
||||||
setsprite(spriteNum,&pSprite->pos);
|
changespritesect(spriteNum, oldSectNum);
|
||||||
T4(spriteNum) = T3(spriteNum) = 0;
|
T4(spriteNum) = T3(spriteNum) = 0;
|
||||||
|
|
||||||
if (hitSprite >= 0 && actor[spriteNum].t_data[6] != 1)
|
if (hitSprite >= 0 && actor[spriteNum].t_data[6] != 1)
|
||||||
|
@ -2130,8 +2135,7 @@ ACTOR_STATIC void G_MoveStandables(void)
|
||||||
|
|
||||||
int hitDist = A_CheckHitSprite(spriteNum, NULL);
|
int hitDist = A_CheckHitSprite(spriteNum, NULL);
|
||||||
|
|
||||||
pSprite->x = T4(spriteNum);
|
pSprite->pos.vec2 = { T4(spriteNum), T5(spriteNum) };
|
||||||
pSprite->y = T5(spriteNum);
|
|
||||||
pSprite->z += (3<<8);
|
pSprite->z += (3<<8);
|
||||||
setsprite(spriteNum, &pSprite->pos);
|
setsprite(spriteNum, &pSprite->pos);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue