diff --git a/source/games/sw/src/actor.cpp b/source/games/sw/src/actor.cpp index 8718d1177..aa577057d 100644 --- a/source/games/sw/src/actor.cpp +++ b/source/games/sw/src/actor.cpp @@ -390,8 +390,8 @@ bool move_debris(DSWActor* actor, int xchange, int ychange, int zchange) { USERp u = actor->u(); - u->ret = move_sprite(actor->GetSpriteIndex(), xchange, ychange, zchange, - u->ceiling_dist, u->floor_dist, 0, ACTORMOVETICS); + SetCollision(u, move_sprite(actor->GetSpriteIndex(), xchange, ychange, zchange, + u->ceiling_dist, u->floor_dist, 0, ACTORMOVETICS)); return !u->ret; } diff --git a/source/games/sw/src/coolg.cpp b/source/games/sw/src/coolg.cpp index e6e051e52..1be2fce04 100644 --- a/source/games/sw/src/coolg.cpp +++ b/source/games/sw/src/coolg.cpp @@ -804,7 +804,7 @@ int DoCoolgDeath(DSWActor* actor) nx = MulScale(sp->xvel, bcos(sp->ang), 14); ny = MulScale(sp->xvel, bsin(sp->ang), 14); - u->ret = move_sprite(SpriteNum, nx, ny, 0L, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, ACTORMOVETICS); + SetCollision(u, move_sprite(SpriteNum, nx, ny, 0L, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, ACTORMOVETICS)); DoFindGroundPoint(actor); // on the ground diff --git a/source/games/sw/src/eel.cpp b/source/games/sw/src/eel.cpp index 831a32eb7..b40d9c90e 100644 --- a/source/games/sw/src/eel.cpp +++ b/source/games/sw/src/eel.cpp @@ -554,7 +554,7 @@ DoEelDeath(DSWActor* actor) nx = MulScale(sp->xvel, bcos(sp->ang), 14); ny = MulScale(sp->xvel, bsin(sp->ang), 14); - u->ret = move_sprite(SpriteNum, nx, ny, 0L, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, ACTORMOVETICS); + SetCollision(u, move_sprite(SpriteNum, nx, ny, 0L, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, ACTORMOVETICS)); DoFindGroundPoint(actor); // on the ground diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 7b02def82..ab6e4589f 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -2276,6 +2276,12 @@ inline int Facing(DSWActor* actor1, DSWActor* actor2) return (abs(getincangle(getangle((sp1)->x - (sp2)->x, (sp1)->y - (sp2)->y), (sp2)->ang)) < 512); } +// temporary helper. +inline void SetCollision(USER* u, int coll) +{ + u->ret = coll; +} + END_SW_NS #endif diff --git a/source/games/sw/src/hornet.cpp b/source/games/sw/src/hornet.cpp index 9be400a53..7b844615e 100644 --- a/source/games/sw/src/hornet.cpp +++ b/source/games/sw/src/hornet.cpp @@ -539,7 +539,7 @@ DoHornetDeath(DSWActor* actor) nx = MulScale(sp->xvel, bcos(sp->ang), 14); ny = MulScale(sp->xvel, bsin(sp->ang), 14); - u->ret = move_sprite(SpriteNum, nx, ny, 0L, u->ceiling_dist, u->floor_dist, 1, ACTORMOVETICS); + SetCollision(u, move_sprite(SpriteNum, nx, ny, 0L, u->ceiling_dist, u->floor_dist, 1, ACTORMOVETICS)); // on the ground if (sp->z >= u->loz) diff --git a/source/games/sw/src/jweapon.cpp b/source/games/sw/src/jweapon.cpp index ef7fa124d..198f2817d 100644 --- a/source/games/sw/src/jweapon.cpp +++ b/source/games/sw/src/jweapon.cpp @@ -402,8 +402,8 @@ DoBloodSpray(DSWActor* actor) } else { - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); } @@ -455,7 +455,7 @@ DoBloodSpray(DSWActor* actor) if (wph->lotag == TAG_WALL_BREAK) { HitBreakWall(wph, sp->x, sp->y, sp->z, sp->ang, u->ID); - u->ret = 0; + SetCollision(u, 0); break; } @@ -524,7 +524,7 @@ DoBloodSpray(DSWActor* actor) { SpawnFloorSplash(Weapon); SET(u->Flags, SPR_BOUNCE); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; u->zchange = -u->zchange; ScaleSpriteVector(Weapon, 32000); // Was 18000 @@ -612,8 +612,8 @@ DoPhosphorus(DSWActor* actor) u->zchange += u->Counter; } - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS*2); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS*2)); MissileHitDiveArea(Weapon); @@ -676,7 +676,7 @@ DoPhosphorus(DSWActor* actor) if (wph->lotag == TAG_WALL_BREAK) { HitBreakWall(wph, sp->x, sp->y, sp->z, sp->ang, u->ID); - u->ret = 0; + SetCollision(u, 0); break; } @@ -699,7 +699,7 @@ DoPhosphorus(DSWActor* actor) { // hit a wall ScaleSpriteVector(Weapon, 28000); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; } else @@ -713,7 +713,7 @@ DoPhosphorus(DSWActor* actor) SET(u->Flags, SPR_BOUNCE); ScaleSpriteVector(Weapon, 32000); // was 18000 u->zchange /= 6; - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; } else @@ -747,7 +747,7 @@ DoPhosphorus(DSWActor* actor) if (!TEST(u->Flags, SPR_BOUNCE)) { SET(u->Flags, SPR_BOUNCE); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; u->zchange = -u->zchange; ScaleSpriteVector(Weapon, 32000); // Was 18000 @@ -837,8 +837,8 @@ DoChemBomb(DSWActor* actor) u->zchange += u->Counter; } - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -901,7 +901,7 @@ DoChemBomb(DSWActor* actor) if (wph->lotag == TAG_WALL_BREAK) { HitBreakWall(wph, sp->x, sp->y, sp->z, sp->ang, u->ID); - u->ret = 0; + SetCollision(u, 0); break; } @@ -926,7 +926,7 @@ DoChemBomb(DSWActor* actor) { // hit a wall ScaleSpriteVector(Weapon, 28000); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; } else @@ -942,7 +942,7 @@ DoChemBomb(DSWActor* actor) SET(u->Flags, SPR_BOUNCE); ScaleSpriteVector(Weapon, 32000); // was 18000 u->zchange /= 6; - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; } else @@ -987,7 +987,7 @@ DoChemBomb(DSWActor* actor) if (!TEST(sp->cstat, CSTAT_SPRITE_INVISIBLE)) PlaySound(DIGI_CHEMBOUNCE, sp, v3df_dontpan); SET(u->Flags, SPR_BOUNCE); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; u->zchange = -u->zchange; ScaleSpriteVector(Weapon, 32000); // Was 18000 @@ -1098,8 +1098,8 @@ DoCaltrops(DSWActor* actor) u->zchange += u->Counter; } - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -1148,7 +1148,7 @@ DoCaltrops(DSWActor* actor) if (wph->lotag == TAG_WALL_BREAK) { HitBreakWall(wph, sp->x, sp->y, sp->z, sp->ang, u->ID); - u->ret = 0; + SetCollision(u, 0); break; } @@ -1172,7 +1172,7 @@ DoCaltrops(DSWActor* actor) { // hit a wall ScaleSpriteVector(Weapon, 1000); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; } else @@ -1186,7 +1186,7 @@ DoCaltrops(DSWActor* actor) PlaySound(DIGI_CALTROPS, sp, v3df_dontpan); SET(u->Flags, SPR_BOUNCE); ScaleSpriteVector(Weapon, 1000); // was 18000 - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; } else @@ -1222,7 +1222,7 @@ DoCaltrops(DSWActor* actor) { PlaySound(DIGI_CALTROPS, sp, v3df_dontpan); SET(u->Flags, SPR_BOUNCE); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; u->zchange = -u->zchange; ScaleSpriteVector(Weapon, 1000); // Was 18000 diff --git a/source/games/sw/src/player.cpp b/source/games/sw/src/player.cpp index fd34a80b2..507ecafee 100644 --- a/source/games/sw/src/player.cpp +++ b/source/games/sw/src/player.cpp @@ -2866,11 +2866,11 @@ DoPlayerMoveVehicle(PLAYERp pp) if (FindDistance2D(hitinfo.pos.x - hit_pos.x, hitinfo.pos.y - hit_pos.y) < 800) { if (hitinfo.wall >= 0) - u->ret = hitinfo.wall|HIT_WALL; + SetCollision(u, hitinfo.wall|HIT_WALL); else if (hitinfo.sprite >= 0) - u->ret = hitinfo.sprite|HIT_SPRITE; + SetCollision(u, hitinfo.sprite|HIT_SPRITE); else - u->ret = 0; + SetCollision(u, 0); VehicleMoveHit(short(sp - sprite)); } @@ -2903,12 +2903,12 @@ DoPlayerMoveVehicle(PLAYERp pp) if (pp->sop->clipdist) { vec3_t clippos = { pp->posx, pp->posy, z }; - u->ret = clipmove(&clippos, &pp->cursectnum, pp->xvect, pp->yvect, (int)pp->sop->clipdist, Z(4), floor_dist, CLIPMASK_PLAYER); + SetCollision(u, clipmove(&clippos, &pp->cursectnum, pp->xvect, pp->yvect, (int)pp->sop->clipdist, Z(4), floor_dist, CLIPMASK_PLAYER)); pp->pos.vec2 = clippos.vec2; } else { - u->ret = MultiClipMove(pp, z, floor_dist); + SetCollision(u, MultiClipMove(pp, z, floor_dist)); } pp->SpriteP->cstat = save_cstat; @@ -6317,7 +6317,8 @@ void DoPlayerDeathMoveHead(PLAYERp pp) dax = MOVEx(u->slide_vel, u->slide_ang); day = MOVEy(u->slide_vel, u->slide_ang); - if ((u->ret = move_sprite(pp->PlayerSprite, dax, day, 0, Z(16), Z(16), 1, synctics))) + SetCollision(u, move_sprite(pp->PlayerSprite, dax, day, 0, Z(16), Z(16), 1, synctics)); + if (u->ret) { switch (TEST(u->ret, HIT_MASK)) { diff --git a/source/games/sw/src/skull.cpp b/source/games/sw/src/skull.cpp index 7a59f4555..5e1da4abd 100644 --- a/source/games/sw/src/skull.cpp +++ b/source/games/sw/src/skull.cpp @@ -273,7 +273,7 @@ DoSkullMove(DSWActor* actor) day = MOVEy(sp->xvel, sp->ang); daz = sp->zvel; - u->ret = move_missile(SpriteNum, dax, day, daz, Z(16), Z(16), CLIPMASK_MISSILE, ACTORMOVETICS); + SetCollision(u, move_missile(SpriteNum, dax, day, daz, Z(16), Z(16), CLIPMASK_MISSILE, ACTORMOVETICS)); DoFindGroundPoint(actor); return 0; @@ -694,7 +694,7 @@ DoBettyMove(DSWActor* actor) day = MOVEy(sp->xvel, sp->ang); daz = sp->zvel; - u->ret = move_missile(SpriteNum, dax, day, daz, Z(16), Z(16), CLIPMASK_MISSILE, ACTORMOVETICS); + SetCollision(u, move_missile(SpriteNum, dax, day, daz, Z(16), Z(16), CLIPMASK_MISSILE, ACTORMOVETICS)); DoFindGroundPoint(actor); return 0; diff --git a/source/games/sw/src/sprite.cpp b/source/games/sw/src/sprite.cpp index 70c80fd82..1514f9aed 100644 --- a/source/games/sw/src/sprite.cpp +++ b/source/games/sw/src/sprite.cpp @@ -5134,8 +5134,8 @@ int move_actor(DSWActor* actor, int xchange, int ychange, int zchange) hi_sectp = u->hi_sectp; sectnum = sp->sectnum; - u->ret = move_sprite(SpriteNum, xchange, ychange, zchange, - u->ceiling_dist, u->floor_dist, cliptype, ACTORMOVETICS); + SetCollision(u, move_sprite(SpriteNum, xchange, ychange, zchange, + u->ceiling_dist, u->floor_dist, cliptype, ACTORMOVETICS)); ASSERT(sp->sectnum >= 0); @@ -5155,7 +5155,7 @@ int move_actor(DSWActor* actor, int xchange, int ychange, int zchange) u->highActor = highActor; u->lo_sectp = lo_sectp; u->hi_sectp = hi_sectp; - u->ret = -1; + SetCollision(u, -1); // caution!! changespritesect(SpriteNum, sectnum); return false; } @@ -5174,7 +5174,7 @@ int move_actor(DSWActor* actor, int xchange, int ychange, int zchange) u->highActor = highActor; u->lo_sectp = lo_sectp; u->hi_sectp = hi_sectp; - u->ret = -1; + SetCollision(u, -1); // caution!! changespritesect(SpriteNum, sectnum); return false; } diff --git a/source/games/sw/src/track.cpp b/source/games/sw/src/track.cpp index 915ec481c..089d9d6b8 100644 --- a/source/games/sw/src/track.cpp +++ b/source/games/sw/src/track.cpp @@ -3787,7 +3787,7 @@ ActorFollowTrack(short SpriteNum, short locktics) nz = sp->zvel * locktics; } - u->ret = move_sprite(SpriteNum, nx, ny, nz, u->ceiling_dist, u->floor_dist, 0, locktics); + SetCollision(u, move_sprite(SpriteNum, nx, ny, nz, u->ceiling_dist, u->floor_dist, 0, locktics)); if (u->ret) diff --git a/source/games/sw/src/weapon.cpp b/source/games/sw/src/weapon.cpp index 4946bdbda..503ce07c1 100644 --- a/source/games/sw/src/weapon.cpp +++ b/source/games/sw/src/weapon.cpp @@ -3879,7 +3879,7 @@ DoShrapMove(int16_t SpriteNum) { USERp u = User[SpriteNum].Data(); - u->ret = move_missile(SpriteNum, u->xchange, u->ychange, 0, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS*2); + SetCollision(u, move_missile(SpriteNum, u->xchange, u->ychange, 0, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS*2)); return 0; } @@ -4629,7 +4629,7 @@ WeaponMoveHit(short SpriteNum) if (wph->lotag == TAG_WALL_BREAK) { HitBreakWall(&wall[hitinfo.wall], sp->x, sp->y, sp->z, sp->ang, u->ID); - u->ret = 0; + SetCollision(u, 0); return true; } @@ -4751,13 +4751,11 @@ DoFireballFlames(DSWActor* actor) { DoJump(actor); jumping = true; - //u->ret = move_missile(SpriteNum, dax, day, daz, Z(16), Z(16), CLIPMASK_MISSILE, MISSILEMOVETICS); } else if (TEST(u->Flags, SPR_FALLING)) { DoFall(actor); jumping = true; - //u->ret = move_missile(SpriteNum, dax, day, daz, Z(16), Z(16), CLIPMASK_MISSILE, MISSILEMOVETICS); } else { @@ -7972,7 +7970,7 @@ DoStar(DSWActor* actor) } } - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); //DoDamageTest(Weapon); @@ -7998,7 +7996,7 @@ DoStar(DSWActor* actor) if (wph->lotag == TAG_WALL_BREAK) { HitBreakWall(&wall[hit_wall], sp->x, sp->y, sp->z, sp->ang, u->ID); - u->ret = 0; + SetCollision(u, 0); break; } @@ -8036,7 +8034,7 @@ DoStar(DSWActor* actor) ScaleSpriteVector(Weapon, 36000); SET(u->Flags, SPR_BOUNCE); u->motion_blur_num = 0; - u->ret = 0; + SetCollision(u, 0); break; } @@ -8094,7 +8092,7 @@ DoStar(DSWActor* actor) SET(u->Flags, SPR_BOUNCE); u->motion_blur_num = 0; - u->ret = 0; + SetCollision(u, 0); } else @@ -8102,7 +8100,7 @@ DoStar(DSWActor* actor) // hit a sloped sector < 45 degrees SET(u->Flags, SPR_BOUNCE); u->motion_blur_num = 0; - u->ret = 0; + SetCollision(u, 0); } // BREAK HERE - LOOOK !!!!!!!!!!!!!!!!!!!!!!!! @@ -8111,7 +8109,7 @@ DoStar(DSWActor* actor) SET(u->Flags, SPR_BOUNCE); u->motion_blur_num = 0; - u->ret = 0; + SetCollision(u, 0); u->zchange = -u->zchange; // 32000 to 96000 @@ -8162,7 +8160,7 @@ DoCrossBolt(DSWActor* actor) DoBlurExtend(Weapon, 0, 2); - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, Z(16), Z(16), CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, Z(16), Z(16), CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -8660,7 +8658,7 @@ DoPlasma(DSWActor* actor) day = MOVEy(sp->xvel, sp->ang); daz = sp->zvel; - u->ret = move_missile(Weapon, dax, day, daz, Z(16), Z(16), CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, dax, day, daz, Z(16), Z(16), CLIPMASK_MISSILE, MISSILEMOVETICS)); if (u->ret) { @@ -8683,7 +8681,7 @@ DoPlasma(DSWActor* actor) sp->z = oz; RESET(hsp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); - u->ret = move_missile(Weapon, dax, day, daz, Z(16), Z(16), CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, dax, day, daz, Z(16), Z(16), CLIPMASK_MISSILE, MISSILEMOVETICS)); hsp->cstat = hcstat; } } @@ -8726,7 +8724,7 @@ DoCoolgFire(DSWActor* actor) int Weapon = u->SpriteNum; SPRITEp sp = &sprite[Weapon]; - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); if (TEST(u->Flags, SPR_UNDERWATER) && (RANDOM_P2(1024 << 4) >> 4) < 256) @@ -8910,8 +8908,8 @@ DoGrenade(DSWActor* actor) u->zchange += u->Counter; } - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -8982,7 +8980,7 @@ DoGrenade(DSWActor* actor) if (wph->lotag == TAG_WALL_BREAK) { HitBreakWall(wph, sp->x, sp->y, sp->z, sp->ang, u->ID); - u->ret = 0; + SetCollision(u, 0); break; } @@ -9007,7 +9005,7 @@ DoGrenade(DSWActor* actor) { // hit a wall ScaleSpriteVector(Weapon, 22000); // 28000 - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; } else @@ -9020,7 +9018,7 @@ DoGrenade(DSWActor* actor) { SET(u->Flags, SPR_BOUNCE); ScaleSpriteVector(Weapon, 40000); // 18000 - u->ret = 0; + SetCollision(u, 0); u->zchange /= 4; u->Counter = 0; } @@ -9060,7 +9058,7 @@ DoGrenade(DSWActor* actor) if (!TEST(u->Flags, SPR_BOUNCE)) { SET(u->Flags, SPR_BOUNCE); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; u->zchange = -u->zchange; ScaleSpriteVector(Weapon, 40000); // 18000 @@ -9147,8 +9145,8 @@ DoVulcanBoulder(DSWActor* actor) u->Counter += 40; u->zchange += u->Counter; - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); int32_t const vel = ksqrt(SQ(u->xchange) + SQ(u->ychange)); @@ -9206,7 +9204,7 @@ DoVulcanBoulder(DSWActor* actor) if (wph->lotag == TAG_WALL_BREAK) { HitBreakWall(wph, sp->x, sp->y, sp->z, sp->ang, u->ID); - u->ret = 0; + SetCollision(u, 0); break; } @@ -9230,7 +9228,7 @@ DoVulcanBoulder(DSWActor* actor) { // hit a sloped sector - treated as a wall because of large slope ScaleSpriteVector(Weapon, 30000); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; } else @@ -9242,7 +9240,7 @@ DoVulcanBoulder(DSWActor* actor) u->xchange = MulScale(u->xchange, 30000, 16); u->ychange = MulScale(u->ychange, 30000, 16); u->zchange = MulScale(u->zchange, 12000, 16); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; // limit to a reasonable bounce value @@ -9252,7 +9250,7 @@ DoVulcanBoulder(DSWActor* actor) else { // hit a sloped ceiling - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; ScaleSpriteVector(Weapon, 30000); } @@ -9263,7 +9261,7 @@ DoVulcanBoulder(DSWActor* actor) // hit unsloped floor if (sp->z > DIV2(u->hiz + u->loz)) { - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; u->xchange = MulScale(u->xchange, 20000, 16); @@ -9569,8 +9567,8 @@ DoMine(DSWActor* actor) u->zchange += u->Counter; } - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -9659,7 +9657,7 @@ DoMine(DSWActor* actor) if (wall[hit_wall].lotag == TAG_WALL_BREAK) { HitBreakWall(&wall[hit_wall], sp->x, sp->y, sp->z, sp->ang, u->ID); - u->ret = 0; + SetCollision(u, 0); break; } @@ -9705,7 +9703,7 @@ DoMine(DSWActor* actor) } } - u->ret = 0; + SetCollision(u, 0); } return false; @@ -9752,7 +9750,7 @@ DoBoltThinMan(DSWActor* actor) day = MOVEy(sp->xvel, sp->ang); daz = sp->zvel; - u->ret = move_missile(Weapon, dax, day, daz, CEILING_DIST, FLOOR_DIST, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, dax, day, daz, CEILING_DIST, FLOOR_DIST, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -9788,7 +9786,7 @@ DoTracer(DSWActor* actor) for (i = 0; i < 4; i++) { - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -9817,7 +9815,7 @@ DoEMP(DSWActor* actor) for (i = 0; i < 4; i++) { - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -9911,7 +9909,7 @@ DoTankShell(DSWActor* actor) for (i = 0; i < 4; i++) { - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -9935,8 +9933,8 @@ DoTracerStart(DSWActor* actor) { USER* u = actor->u(); int Weapon = u->SpriteNum; - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -9967,7 +9965,7 @@ DoLaser(DSWActor* actor) while (true) { - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -10010,7 +10008,7 @@ DoLaserStart(DSWActor* actor) if (SW_SHAREWARE) return false; // JBF: verify - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -10042,7 +10040,7 @@ DoRail(DSWActor* actor) while (true) { - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -10126,7 +10124,7 @@ DoRailStart(DSWActor* actor) if (SW_SHAREWARE) return false; // JBF: verify - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -10168,7 +10166,7 @@ DoRocket(DSWActor* actor) VectorMissileSeek(Weapon, 30, 16, 128, 768); } - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -10242,7 +10240,7 @@ DoMicroMini(DSWActor* actor) for (i = 0; i < 3; i++) { - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -10310,8 +10308,8 @@ DoMicro(DSWActor* actor) if (SW_SHAREWARE) return false; // JBF: verify - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -10396,7 +10394,7 @@ DoUziBullet(DSWActor* actor) sx = sp->x; sy = sp->y; - u->ret = move_missile(Weapon, dax, day, daz, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, dax, day, daz, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); u->Dist += Distance(sx, sy, sp->x, sp->y); MissileHitDiveArea(Weapon); @@ -10464,7 +10462,7 @@ DoBoltSeeker(DSWActor* actor) day = MOVEy(sp->xvel, sp->ang); daz = sp->zvel; - u->ret = move_missile(Weapon, dax, day, daz, CEILING_DIST, FLOOR_DIST, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, dax, day, daz, CEILING_DIST, FLOOR_DIST, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); if (TEST(u->Flags, SPR_UNDERWATER) && (RANDOM_P2(1024 << 4) >> 4) < 256) @@ -10515,7 +10513,7 @@ DoElectro(DSWActor* actor) day = MOVEy(sp->xvel, sp->ang); daz = sp->zvel; - u->ret = move_missile(Weapon, dax, day, daz, CEILING_DIST, FLOOR_DIST, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, dax, day, daz, CEILING_DIST, FLOOR_DIST, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); if (TEST(u->Flags, SPR_UNDERWATER) && (RANDOM_P2(1024 << 4) >> 4) < 256) @@ -10561,8 +10559,8 @@ DoLavaBoulder(DSWActor* actor) USER* u = actor->u(); int Weapon = u->SpriteNum; - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); if (TEST(u->Flags, SPR_UNDERWATER) && (RANDOM_P2(1024 << 4) >> 4) < 256) @@ -10591,8 +10589,8 @@ DoSpear(DSWActor* actor) USER* u = actor->u(); int Weapon = u->SpriteNum; - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -11137,8 +11135,8 @@ SpawnNuclearSecondaryExp(int16_t Weapon, short ang) eu->xchange = MOVEx(vel, ang); eu->ychange = MOVEy(vel, ang); eu->Radius = 200; // was NUKE_RADIUS - eu->ret = move_missile(explosion, eu->xchange, eu->ychange, 0, - eu->ceiling_dist, eu->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(eu, move_missile(explosion, eu->xchange, eu->ychange, 0, + eu->ceiling_dist, eu->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); if (FindDistance3D(exp->x - sp->x, exp->y - sp->y, exp->z - sp->z) < 1024) { @@ -11485,8 +11483,8 @@ SpawnGrenadeSecondaryExp(int16_t Weapon, short ang) eu->xchange = MOVEx(vel, ang); eu->ychange = MOVEy(vel, ang); - eu->ret = move_missile(explosion, eu->xchange, eu->ychange, 0, - eu->ceiling_dist, eu->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(eu, move_missile(explosion, eu->xchange, eu->ychange, 0, + eu->ceiling_dist, eu->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); if (FindDistance3D(exp->x - sp->x, exp->y - sp->y, exp->z - sp->z) < 1024) { @@ -11875,26 +11873,7 @@ DoFireball(DSWActor* actor) } } -#if 0 - ox = sp->x; - oy = sp->y; - oz = sp->z; - os = sp->sectnum -#endif - - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); - -#if 0 - if (u->ret) - { - u->ret = 0; - xv = u->xchange/2; - yv = u->ychange/2; - zv = u->zchange/2; - - u->ret = move_missile(Weapon, xv, yv, zv, Z(16), Z(16), CLIPMASK_MISSILE, MISSILEMOVETICS); - } -#endif + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -12092,7 +12071,7 @@ DoNapalm(DSWActor* actor) oy = sp->y; oz = sp->z; - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); @@ -12116,7 +12095,7 @@ DoNapalm(DSWActor* actor) sp->z = oz; RESET(hsp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); hsp->cstat = hcstat; } } @@ -12195,13 +12174,13 @@ DoBloodWorm(DSWActor* actor) u = User[Weapon].Data(); - u->ret = move_ground_missile(Weapon, u->xchange, u->ychange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_ground_missile(Weapon, u->xchange, u->ychange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); if (u->ret) { u->xchange = -u->xchange; u->ychange = -u->ychange; - u->ret = 0; + SetCollision(u, 0); sp->ang = NORM_ANGLE(sp->ang + 1024); return true; } @@ -12297,7 +12276,7 @@ DoSerpMeteor(DSWActor* actor) if (sp->xrepeat > 80) sp->xrepeat = 80; - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); if (u->ret) { @@ -12317,7 +12296,7 @@ DoSerpMeteor(DSWActor* actor) sp->z = oz; RESET(hsp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); hsp->cstat = hcstat; } } @@ -12351,7 +12330,7 @@ DoMirvMissile(DSWActor* actor) if (sp->xrepeat > 80) sp->xrepeat = 80; - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); if (TEST(u->Flags, SPR_UNDERWATER) && (RANDOM_P2(1024 << 4) >> 4) < 256) SpawnBubble(Weapon); @@ -12386,37 +12365,13 @@ DoMirv(DSWActor* actor) // oy = sp->y; // oz = sp->z; - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); + SetCollision(u, move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); MissileHitDiveArea(Weapon); if (TEST(u->Flags, SPR_UNDERWATER) && (RANDOM_P2(1024 << 4) >> 4) < 256) SpawnBubble(Weapon); -#if 0 - if (u->ret) - { - // this sprite is supposed to go through players/enemys - // if hit a player/enemy back up and do it again with blocking reset - if (TEST(u->ret, HIT_MASK) == HIT_SPRITE) - { - SPRITEp hsp = &sprite[NORM_SPRITE(u->ret)]; - - if (TEST(hsp->cstat, CSTAT_SPRITE_BLOCK) && !TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL)) - { - short hcstat = hsp->cstat; - - sp->x = ox; - sp->y = oy; - sp->z = oz; - - RESET(hsp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); - u->ret = move_missile(Weapon, u->xchange, u->ychange, u->zchange, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); - hsp->cstat = hcstat; - } - } - } -#endif u->Counter++; u->Counter &= 1; @@ -19229,8 +19184,7 @@ HelpMissileLateral(int16_t Weapon, int dist) sp->clipdist = 32L >> 2; - //u->ret = move_missile(Weapon, xchange, ychange, 0, Z(16), Z(16), CLIPMASK_MISSILE, 1); - u->ret = move_missile(Weapon, xchange, ychange, 0, Z(16), Z(16), 0, 1); + SetCollision(u, move_missile(Weapon, xchange, ychange, 0, Z(16), Z(16), 0, 1)); // !JIM! Should this be fatal, it seems to fail check alot, but doesn't crash game or anything // when I commented it out. @@ -19881,7 +19835,7 @@ MissileHitDiveArea(short SpriteNum) SpawnSplash(short(sp - sprite)); SpriteWarpToUnderwater(sp); //SpawnUnderSplash(sp - sprite); - u->ret = 0; + SetCollision(u, 0); PlaySound(DIGI_PROJECTILEWATERHIT, sp, v3df_none); return true; } @@ -19897,7 +19851,7 @@ MissileHitDiveArea(short SpriteNum) return false; } SpawnSplash(short(sp - sprite)); - u->ret = 0; + SetCollision(u, 0); return true; } @@ -20876,8 +20830,8 @@ DoShrapVelocity(int16_t SpriteNum) u->zchange += u->Counter; } - u->ret = move_missile(SpriteNum, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS*2); + SetCollision(u, move_missile(SpriteNum, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS*2)); MissileHitDiveArea(SpriteNum); @@ -20935,7 +20889,7 @@ DoShrapVelocity(int16_t SpriteNum) { // hit a wall ScaleSpriteVector(SpriteNum, 28000); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; } else @@ -20948,7 +20902,7 @@ DoShrapVelocity(int16_t SpriteNum) { SET(u->Flags, SPR_BOUNCE); ScaleSpriteVector(SpriteNum, 18000); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; } else @@ -20982,7 +20936,7 @@ DoShrapVelocity(int16_t SpriteNum) if (!TEST(u->Flags, SPR_BOUNCE)) { SET(u->Flags, SPR_BOUNCE); - u->ret = 0; + SetCollision(u, 0); u->Counter = 0; u->zchange = -u->zchange; ScaleSpriteVector(SpriteNum, 18000); @@ -21216,8 +21170,8 @@ DoItemFly(int16_t SpriteNum) u->zchange += u->Counter; } - u->ret = move_missile(SpriteNum, u->xchange, u->ychange, u->zchange, - u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS*2); + SetCollision(u, move_missile(SpriteNum, u->xchange, u->ychange, u->zchange, + u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS*2)); MissileHitDiveArea(SpriteNum);