Skip to content

Commit

Permalink
- got rid of tilenum checks in movetransports_r.
Browse files Browse the repository at this point in the history
  • Loading branch information
coelckers committed Mar 27, 2023
1 parent 7f898e5 commit f1fee27
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 73 deletions.
2 changes: 1 addition & 1 deletion source/games/duke/src/actors_d.cpp
Expand Up @@ -463,7 +463,7 @@ void movetransports_d(void)
}
if (act2->GetClass() != DukeWaterBubbleClass)
{
if (act2->spr.statnum == STAT_MISC && !(sectlotag == ST_1_ABOVE_WATER || sectlotag == ST_2_UNDERWATER))
if (act2->spr.statnum == STAT_MISC && !(sectlotag == ST_1_ABOVE_WATER || sectlotag == ST_2_UNDERWATER || ((ud.mapflags & MFLAG_ALLSECTORTYPES) && (sectlotag == ST_160_FLOOR_TELEPORT || sectlotag == ST_161_CEILING_TELEPORT))))
continue;
}
if (sectlotag > 0)
Expand Down
138 changes: 66 additions & 72 deletions source/games/duke/src/actors_r.cpp
Expand Up @@ -471,114 +471,108 @@ void movetransports_r(void)
if (warpspriteto)
{
if ((act2->flags1 & SFLAG_NOTELEPORT)) continue;
switch (act2->spr.picnum)
if (act2->GetClass() == DukePlayerOnWaterClass)
{
case RTILE_PLAYERONWATER:
if (sectlotag == ST_2_UNDERWATER)
{
act2->spr.cstat &= ~CSTAT_SPRITE_INVISIBLE;
break;
continue;
}
[[fallthrough]];
default:
}
if (act2->GetClass() != DukeWaterBubbleClass)
{
if (act2->spr.statnum == STAT_MISC && !(sectlotag == ST_1_ABOVE_WATER || sectlotag == ST_2_UNDERWATER || ((ud.mapflags & MFLAG_ALLSECTORTYPES) && (sectlotag == ST_160_FLOOR_TELEPORT || sectlotag == ST_161_CEILING_TELEPORT))))
break;
[[fallthrough]];

case RTILE_WATERBUBBLE:
if (rnd(192) && act2->spr.picnum == RTILE_WATERBUBBLE)
break;

if (sectlotag > 0)
continue;
}
if (sectlotag > 0)
{
auto spawned = spawn(act2, DukeWaterSplashClass);
if (spawned && sectlotag == 1 && act2->spr.statnum == 4)
{
auto spawned = spawn(act2, DukeWaterSplashClass);
if (spawned && sectlotag == 1 && act2->spr.statnum == 4)
{
spawned->vel.X = act2->vel.X * 0.5;
spawned->spr.Angles.Yaw = act2->spr.Angles.Yaw;
ssp(spawned, CLIPMASK0);
}
spawned->vel.X = act2->vel.X * 0.5;
spawned->spr.Angles.Yaw = act2->spr.Angles.Yaw;
ssp(spawned, CLIPMASK0);
}
}

switch (sectlotag)
switch (sectlotag)
{
case ST_0_NO_EFFECT:
if (onfloorz)
{
case ST_0_NO_EFFECT:
if (onfloorz)
if (checkcursectnums(act->sector()) == -1 && checkcursectnums(Owner->sector()) == -1)
{
if (checkcursectnums(act->sector()) == -1 && checkcursectnums(Owner->sector()) == -1)
{
act2->spr.pos += (Owner->spr.pos - act->spr.pos.XY()).plusZ(-Owner->sector()->floorz);
act2->spr.Angles.Yaw = Owner->spr.Angles.Yaw;

act2->backupang();
act2->spr.pos += (Owner->spr.pos - act->spr.pos.XY()).plusZ(-Owner->sector()->floorz);
act2->spr.Angles.Yaw = Owner->spr.Angles.Yaw;

auto beam = spawn(act, DukeTransporterBeamClass);
if (beam) S_PlayActorSound(TELEPORTER, beam);
act2->backupang();

beam = spawn(Owner, DukeTransporterBeamClass);
if (beam) S_PlayActorSound(TELEPORTER, beam);
auto beam = spawn(act, DukeTransporterBeamClass);
if (beam) S_PlayActorSound(TELEPORTER, beam);

if (Owner->GetOwner() != Owner)
{
act->counter = 13;
Owner->counter = 13;
}
beam = spawn(Owner, DukeTransporterBeamClass);
if (beam) S_PlayActorSound(TELEPORTER, beam);

ChangeActorSect(act2, Owner->sector());
if (Owner->GetOwner() != Owner)
{
act->counter = 13;
Owner->counter = 13;
}
}
else
{
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
act2->spr.pos.Z = Owner->spr.pos.Z + 16;
act2->backupz();

ChangeActorSect(act2, Owner->sector());
}
break;
case ST_1_ABOVE_WATER:
}
else
{
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
act2->spr.pos.Z = Owner->sector()->ceilingz + ll;
act2->spr.pos.Z = Owner->spr.pos.Z + 16;
act2->backupz();

ChangeActorSect(act2, Owner->sector());
}
break;
case ST_1_ABOVE_WATER:
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
act2->spr.pos.Z = Owner->sector()->ceilingz + ll;
act2->backupz();

break;
case ST_2_UNDERWATER:
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
act2->spr.pos.Z = Owner->sector()->ceilingz - ll;
act2->backupz();
ChangeActorSect(act2, Owner->sector());

ChangeActorSect(act2, Owner->sector());
break;
case ST_2_UNDERWATER:
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
act2->spr.pos.Z = Owner->sector()->ceilingz - ll;
act2->backupz();

break;
ChangeActorSect(act2, Owner->sector());

case ST_160_FLOOR_TELEPORT:
if (!(ud.mapflags & MFLAG_ALLSECTORTYPES)) break;
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
act2->spr.pos.Z = Owner->sector()->ceilingz + ll2;
act2->backupz();
break;

ChangeActorSect(act2, Owner->sector());
case ST_160_FLOOR_TELEPORT:
if (!(ud.mapflags & MFLAG_ALLSECTORTYPES)) break;
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
act2->spr.pos.Z = Owner->sector()->ceilingz + ll2;
act2->backupz();

movesprite_ex(act2, DVector3(act2->spr.Angles.Yaw.ToVector() * act2->vel.X, 0), CLIPMASK1, coll);
ChangeActorSect(act2, Owner->sector());

break;
case ST_161_CEILING_TELEPORT:
if (!(ud.mapflags & MFLAG_ALLSECTORTYPES)) break;
act2->spr.pos += Owner->spr.pos.XY() - act->spr.pos.XY();
act2->spr.pos.Z = Owner->sector()->floorz - ll;
act2->backupz();
movesprite_ex(act2, DVector3(act2->spr.Angles.Yaw.ToVector() * act2->vel.X, 0), CLIPMASK1, coll);

ChangeActorSect(act2, Owner->sector());
break;
case ST_161_CEILING_TELEPORT:
if (!(ud.mapflags & MFLAG_ALLSECTORTYPES)) break;
act2->spr.pos += Owner->spr.pos.XY() - act->spr.pos.XY();
act2->spr.pos.Z = Owner->sector()->floorz - ll;
act2->backupz();

movesprite_ex(act2, DVector3(act2->spr.Angles.Yaw.ToVector() * act2->vel.X, 0), CLIPMASK1, coll);
ChangeActorSect(act2, Owner->sector());

break;
}
movesprite_ex(act2, DVector3(act2->spr.Angles.Yaw.ToVector() * act2->vel.X, 0), CLIPMASK1, coll);

break;
}

break;
}
}
break;
Expand Down

0 comments on commit f1fee27

Please sign in to comment.