- consolidated move functions.

This commit is contained in:
Christoph Oelckers 2022-12-30 12:38:36 +01:00
parent 5a2410cbbb
commit 0b3f18a903
7 changed files with 236 additions and 435 deletions

View file

@ -1063,6 +1063,238 @@ int movesprite_ex(DDukeActor* actor, const DVector3& change, unsigned int clipty
return result.type;
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
void move(DDukeActor* actor, int pnum, double pdist)
{
DAngle goalang, angdif;
double daxvel;
int a = actor->spr.hitag;
if (a == -1) a = 0;
actor->counter++;
if (a & face_player)
{
if (ps[pnum].newOwner != nullptr)
goalang = (ps[pnum].GetActor()->opos.XY() - actor->spr.pos.XY()).Angle();
else goalang = (ps[pnum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle();
angdif = deltaangle(actor->spr.Angles.Yaw, goalang) * 0.25;
if (angdif > -DAngle22_5 / 16 && angdif < nullAngle) angdif = nullAngle;
actor->spr.Angles.Yaw += angdif;
}
if (a & spin)
actor->spr.Angles.Yaw += DAngle45 * BobVal(actor->counter << 3);
if (a & face_player_slow)
{
if (ps[pnum].newOwner != nullptr)
goalang = (ps[pnum].GetActor()->opos.XY() - actor->spr.pos.XY()).Angle();
else goalang = (ps[pnum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle();
angdif = DAngle22_5 * 0.25 * Sgn(deltaangle(actor->spr.Angles.Yaw, goalang).Degrees()); // this looks very wrong...
actor->spr.Angles.Yaw += angdif;
}
if (a & antifaceplayerslow)
{
if (ps[pnum].newOwner != nullptr)
goalang = ((ps[pnum].GetActor()->opos.XY() - actor->spr.pos.XY()).Angle() + DAngle180);
else goalang = ((ps[pnum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle() + DAngle180);
angdif = DAngle22_5 * 0.25 * Sgn(deltaangle(actor->spr.Angles.Yaw, goalang).Degrees()); // this looks very wrong...
actor->spr.Angles.Yaw += angdif;
}
if ((a & jumptoplayer) == jumptoplayer)
{
if (actor->counter < 16)
actor->vel.Z -= BobVal(512 + (actor->counter << 4)) * actor->FloatVar(NAME_jumptoplayer_factor);
}
else if (a & justjump1)
{
if (actor->counter < 8)
actor->vel.Z -= BobVal(512 + (actor->counter << 4)) * actor->FloatVar(NAME_justjump1_factor);
}
if (a & justjump2)
{
if (actor->counter < 8)
actor->vel.Z -= BobVal(512 + (actor->counter << 4)) * actor->FloatVar(NAME_justjump2_factor);
}
if (a & windang)
{
if (actor->counter < 8)
actor->vel.Z -= BobVal(512 + (actor->counter << 4)) * actor->FloatVar(NAME_windang_factor);
}
if (a & face_player_smart)
{
DVector2 newpos = ps[pnum].GetActor()->spr.pos.XY() + (ps[pnum].vel.XY() * (4. / 3.));
goalang = (newpos - actor->spr.pos.XY()).Angle();
angdif = deltaangle(actor->spr.Angles.Yaw, goalang) * 0.25;
if (angdif > -DAngle22_5 / 16 && angdif < nullAngle) angdif = nullAngle;
actor->spr.Angles.Yaw += angdif;
}
if (actor->curMove->name == NAME_None || a == 0)
{
if ((badguy(actor) && actor->spr.extra <= 0) || (actor->opos.X != actor->spr.pos.X) || (actor->opos.Y != actor->spr.pos.Y))
{
if (!actor->isPlayer()) actor->backupvec2();
SetActor(actor, actor->spr.pos);
}
if (badguy(actor) && actor->spr.extra <= 0)
{
if (actor->sector()->ceilingstat & CSTAT_SECTOR_SKY)
{
if (actor->sector()->shadedsector == 1)
{
actor->spr.shade += (16 - actor->spr.shade) >> 1;
}
else
{
actor->spr.shade += (actor->sector()->ceilingshade - actor->spr.shade) >> 1;
}
}
else
{
actor->spr.shade += (actor->sector()->floorshade - actor->spr.shade) >> 1;
}
}
return;
}
if (a & geth) actor->vel.X += (actor->curMove->movex - actor->vel.X) * 0.5;
if (a & getv) actor->vel.Z += (actor->curMove->movez - actor->vel.Z) * 0.5;
if (a & dodgebullet)
dodge(actor);
if (!actor->isPlayer())
alterang(a, actor, pnum);
if (abs(actor->vel.X) < 6 / 16.) actor->vel.X = 0;
a = badguy(actor);
if (actor->vel.X != 0 || actor->vel.Z != 0)
{
if (a && !(actor->flags3 & SFLAG3_NOVERTICALMOVE))
{
if ((actor->flags2 & SFLAG2_FLOATING) && actor->spr.extra > 0)
{
double fdist = actor->FloatVar(NAME_floating_floordist);
double cdist = actor->FloatVar(NAME_floating_ceilingdist);
double c, f;
calcSlope(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, &c, &f);
actor->floorz = f;
actor->ceilingz = c;
if (actor->spr.pos.Z > f - fdist)
{
actor->spr.pos.Z = f - fdist;
actor->vel.Z = 0;
}
if (actor->spr.pos.Z < c + cdist)
{
actor->spr.pos.Z = c + cdist;
actor->vel.Z = 0;
}
}
else
{
if (actor->vel.Z > 0 && actor->floorz < actor->spr.pos.Z)
actor->spr.pos.Z = actor->floorz;
if (actor->vel.Z < 0)
{
double c = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
if (actor->spr.pos.Z < c + 66)
{
actor->spr.pos.Z = c + 66;
actor->vel.Z *= 0.5;
}
}
}
}
daxvel = actor->vel.X;
angdif = actor->spr.Angles.Yaw;
if (a && !(actor->flags3 & SFLAG3_MOVE_NOPLAYERINTERACT))
{
if (pdist < 60 && actor->spr.scale.X > 0.25)
{
daxvel = -(64 - pdist);
angdif = (ps[pnum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle();
if (pdist < 32)
{
ps[pnum].vel.X = 0;
ps[pnum].vel.Y = 0;
}
else
{
ps[pnum].vel.XY() *= gs.playerfriction - 0.125;
}
}
else if (!(actor->flags2 & SFLAG2_FLOATING))
{
if (actor->curMove->movez == 0)
{
if (actor->opos.Z != actor->spr.pos.Z || (ud.multimode < 2 && ud.player_skill < 2))
{
if ((actor->counter & 1) || ps[pnum].actorsqu == actor) return;
else daxvel *= 2;
}
else
{
if ((actor->counter & 3) || ps[pnum].actorsqu == actor) return;
else daxvel *= 4;
}
}
}
}
if (actor->sector()->lotag != ST_1_ABOVE_WATER)
{
daxvel *= actor->FloatVar(NAME_landmovefactor);
}
else
{
daxvel *= actor->FloatVar(NAME_watermovefactor);
}
Collision coll;
actor->movflag = movesprite_ex(actor, DVector3(angdif.ToVector() * daxvel, actor->vel.Z), CLIPMASK0, coll);
}
if (a)
{
if (actor->sector()->ceilingstat & CSTAT_SECTOR_SKY)
{
if (actor->sector()->shadedsector == 1)
{
actor->spr.shade += (16 - actor->spr.shade) >> 1;
}
else
{
actor->spr.shade += (actor->sector()->ceilingshade - actor->spr.shade) >> 1;
}
}
else actor->spr.shade += (actor->sector()->floorshade - actor->spr.shade) >> 1;
if (actor->sector()->floortexture == mirrortex)
actor->Destroy();
}
}
//---------------------------------------------------------------------------
//
// Rotating sector

View file

@ -864,180 +864,6 @@ void moveeffectors_d(void) //STATNUM 3
}
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
void move_d(DDukeActor *actor, int playernum, int xvel)
{
DAngle goalang, angdif;
double daxvel;
int a = actor->spr.hitag;
if (a == -1) a = 0;
actor->counter++;
if (a & face_player)
{
if (ps[playernum].newOwner != nullptr)
goalang = (ps[playernum].GetActor()->opos.XY() - actor->spr.pos.XY()).Angle();
else goalang = (ps[playernum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle();
angdif = deltaangle(actor->spr.Angles.Yaw, goalang) * 0.25;
if (angdif > -DAngle22_5 / 16 && angdif < nullAngle) angdif = nullAngle;
actor->spr.Angles.Yaw += angdif;
}
if (a & spin)
actor->spr.Angles.Yaw += DAngle45 * BobVal(actor->counter << 3);
if (a & face_player_slow)
{
if (ps[playernum].newOwner != nullptr)
goalang = (ps[playernum].GetActor()->opos.XY() - actor->spr.pos.XY()).Angle();
else goalang = (ps[playernum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle();
angdif = DAngle22_5 * 0.25 * Sgn(deltaangle(actor->spr.Angles.Yaw, goalang).Degrees()); // this looks very wrong...
actor->spr.Angles.Yaw += angdif;
}
if ((a & jumptoplayer) == jumptoplayer)
{
if (actor->counter < 16)
actor->vel.Z -= BobVal(512 + (actor->counter << 4)) * 2;
}
if (a & face_player_smart)
{
DVector2 newpos = ps[playernum].GetActor()->spr.pos.XY() + (ps[playernum].vel.XY() * (4. / 3.));
goalang = (newpos - actor->spr.pos.XY()).Angle();
angdif = deltaangle(actor->spr.Angles.Yaw, goalang) * 0.25;
if (angdif > -DAngle22_5/16 && angdif < nullAngle) angdif = nullAngle;
actor->spr.Angles.Yaw += angdif;
}
if (actor->curMove->name == NAME_None || a == 0)
{
if ((badguy(actor) && actor->spr.extra <= 0) || (actor->opos.X != actor->spr.pos.X) || (actor->opos.Y != actor->spr.pos.Y))
{
if (!actor->isPlayer()) actor->backupvec2();
SetActor(actor, actor->spr.pos);
}
return;
}
if (a & geth) actor->vel.X += (actor->curMove->movex - actor->vel.X) * 0.5;
if (a & getv) actor->vel.Z += (actor->curMove->movez - actor->vel.Z) * 0.5;
if (a & dodgebullet)
dodge(actor);
if (!actor->isPlayer())
alterang(a, actor, playernum);
if (abs(actor->vel.X) < 6 / 16.) actor->vel.X = 0;
a = badguy(actor);
if (actor->vel.X != 0 || actor->vel.Z != 0)
{
if (a && !(actor->flags3 & SFLAG3_NOVERTICALMOVE))
{
if ((actor->flags2 & SFLAG2_FLOATING) && actor->spr.extra > 0)
{
double fdist = actor->FloatVar(NAME_floating_floordist);
double cdist = actor->FloatVar(NAME_floating_ceilingdist);
double c, f;
calcSlope(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, &c, &f);
actor->floorz = f;
actor->ceilingz = c;
if (actor->spr.pos.Z > f - fdist)
{
actor->spr.pos.Z = f - fdist;
actor->vel.Z = 0;
}
if (actor->spr.pos.Z < c + cdist)
{
actor->spr.pos.Z = c + cdist;
actor->vel.Z = 0;
}
}
else
{
if (actor->vel.Z > 0 && actor->floorz < actor->spr.pos.Z)
actor->spr.pos.Z = actor->floorz;
if (actor->vel.Z < 0)
{
double c = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
if (actor->spr.pos.Z < c + 66)
{
actor->spr.pos.Z = c + 66;
actor->vel.Z *= 0.5;
}
}
}
}
daxvel = actor->vel.X;
angdif = actor->spr.Angles.Yaw;
if (a && !(actor->flags3 & SFLAG3_MOVE_NOPLAYERINTERACT))
{
if (xvel < 960 && actor->spr.scale.X > 0.25 )
{
daxvel = -(1024 - xvel) * maptoworld;
angdif = (ps[playernum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle();
if (xvel < 512)
{
ps[playernum].vel.X = 0;
ps[playernum].vel.Y = 0;
}
else
{
ps[playernum].vel.XY() *= gs.playerfriction - 0.125;
}
}
else if (!(actor->flags2 & SFLAG2_FLOATING))
{
if (actor->curMove->movez == 0)
{
if (actor->opos.Z != actor->spr.pos.Z || (ud.multimode < 2 && ud.player_skill < 2))
{
if ((actor->counter & 1) || ps[playernum].actorsqu == actor) return;
else daxvel *= 2;
}
else
{
if ((actor->counter & 3) || ps[playernum].actorsqu == actor) return;
else daxvel *= 4;
}
}
}
}
Collision coll;
actor->movflag = movesprite_ex(actor, DVector3(angdif.ToVector() * daxvel, actor->vel.Z), CLIPMASK0, coll);
}
if (a)
{
if (actor->sector()->ceilingstat & CSTAT_SECTOR_SKY)
actor->spr.shade += (actor->sector()->ceilingshade - actor->spr.shade) >> 1;
else actor->spr.shade += (actor->sector()->floorshade - actor->spr.shade) >> 1;
if (actor->sector()->floortexture == mirrortex)
actor->Destroy();
}
}
//---------------------------------------------------------------------------
//
//

View file

@ -1002,233 +1002,6 @@ double adjustfall(DDukeActor *actor, double c)
//
//---------------------------------------------------------------------------
void move_r(DDukeActor *actor, int pnum, int xvel)
{
DAngle goalang, angdif;
double daxvel;
int a = actor->spr.hitag;
if (a == -1) a = 0;
actor->counter++;
if (a & face_player)
{
if (ps[pnum].newOwner != nullptr)
goalang = (ps[pnum].GetActor()->opos.XY() - actor->spr.pos.XY()).Angle();
else goalang = (ps[pnum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle();
angdif = deltaangle(actor->spr.Angles.Yaw, goalang) * 0.25;
if (angdif > -DAngle22_5 / 16 && angdif < nullAngle) angdif = nullAngle;
actor->spr.Angles.Yaw += angdif;
}
if (a & spin)
actor->spr.Angles.Yaw += DAngle45 * BobVal(actor->counter << 3);
if (a & face_player_slow)
{
if (ps[pnum].newOwner != nullptr)
goalang = (ps[pnum].GetActor()->opos.XY() - actor->spr.pos.XY()).Angle();
else goalang = (ps[pnum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle();
angdif = DAngle22_5 * 0.25 * Sgn(deltaangle(actor->spr.Angles.Yaw, goalang).Degrees()); // this looks very wrong...
actor->spr.Angles.Yaw += angdif;
}
if (a & antifaceplayerslow)
{
if (ps[pnum].newOwner != nullptr)
goalang = ((ps[pnum].GetActor()->opos.XY() - actor->spr.pos.XY()).Angle() + DAngle180);
else goalang = ((ps[pnum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle() + DAngle180);
angdif = DAngle22_5 * 0.25 * Sgn(deltaangle(actor->spr.Angles.Yaw, goalang).Degrees()); // this looks very wrong...
actor->spr.Angles.Yaw += angdif;
}
if ((a & jumptoplayer) == jumptoplayer)
{
if (actor->counter < 16)
actor->vel.Z -= BobVal(512 + (actor->counter << 4)) * actor->FloatVar(NAME_jumptoplayer_factor);
}
else if (a & justjump1)
{
if (actor->counter < 8)
actor->vel.Z -= BobVal(512 + (actor->counter << 4)) * actor->FloatVar(NAME_justjump1_factor);
}
if (a & justjump2)
{
if (actor->counter < 8)
actor->vel.Z -= BobVal(512 + (actor->counter << 4)) * actor->FloatVar(NAME_justjump2_factor);
}
if (a & windang)
{
if (actor->counter < 8)
actor->vel.Z -= BobVal(512 + (actor->counter << 4)) * actor->FloatVar(NAME_windang_factor);
actor->vel.Z -= BobVal(512 + (actor->counter << 4) * 2.667);
}
if (a & face_player_smart)
{
DVector2 newpos = ps[pnum].GetActor()->spr.pos.XY() + (ps[pnum].vel.XY() * (4. / 3.));
goalang = (newpos - actor->spr.pos.XY()).Angle();
angdif = deltaangle(actor->spr.Angles.Yaw, goalang) * 0.25;
if (angdif > -DAngle22_5 / 16 && angdif < nullAngle) angdif = nullAngle;
actor->spr.Angles.Yaw += angdif;
}
if (actor->curMove->name == NAME_None || a == 0)
{
if ((badguy(actor) && actor->spr.extra <= 0) || (actor->opos.X != actor->spr.pos.X) || (actor->opos.Y != actor->spr.pos.Y))
{
if (!actor->isPlayer()) actor->backupvec2();
SetActor(actor, actor->spr.pos);
}
if (badguy(actor) && actor->spr.extra <= 0)
{
if (actor->sector()->ceilingstat & CSTAT_SECTOR_SKY)
{
if (actor->sector()->shadedsector == 1)
{
actor->spr.shade += (16 - actor->spr.shade) >> 1;
}
else
{
actor->spr.shade += (actor->sector()->ceilingshade - actor->spr.shade) >> 1;
}
}
else
{
actor->spr.shade += (actor->sector()->floorshade - actor->spr.shade) >> 1;
}
}
return;
}
if (a & geth) actor->vel.X += (actor->curMove->movex - actor->vel.X) * 0.5;
if (a & getv) actor->vel.Z += (actor->curMove->movez - actor->vel.Z) * 0.5;
if (a & dodgebullet)
dodge(actor);
if (!actor->isPlayer())
alterang(a, actor, pnum);
if (abs(actor->vel.X) < 6 / 16.) actor->vel.X = 0;
a = badguy(actor);
if (actor->vel.X != 0 || actor->vel.Z != 0)
{
if (a)
{
if ((actor->flags2 & SFLAG2_FLOATING) && actor->spr.extra > 0)
{
double fdist = actor->FloatVar(NAME_floating_floordist);
double cdist = actor->FloatVar(NAME_floating_ceilingdist);
double c, f;
calcSlope(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, &c, &f);
actor->floorz = f;
actor->ceilingz = c;
if (actor->spr.pos.Z > f - fdist)
{
actor->spr.pos.Z = f - fdist;
actor->vel.Z = 0;
}
if (actor->spr.pos.Z < c + cdist)
{
actor->spr.pos.Z = c + cdist;
actor->vel.Z = 0;
}
}
else
{
if (actor->vel.Z > 0 && actor->floorz < actor->spr.pos.Z)
actor->spr.pos.Z = actor->floorz;
if (actor->vel.Z < 0)
{
double c = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
if (actor->spr.pos.Z < c + 66)
{
actor->spr.pos.Z = c + 66;
actor->vel.Z *= 0.5;
}
}
}
}
daxvel = actor->vel.X;
angdif = actor->spr.Angles.Yaw;
if (a)
{
if (xvel < 960 && actor->spr.scale.X > 0.25 )
{
daxvel = -(1024 - xvel) * maptoworld;
angdif = (ps[pnum].GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Angle();
if (xvel < 512)
{
ps[pnum].vel.X = 0;
ps[pnum].vel.Y = 0;
}
else
{
ps[pnum].vel.XY() *= gs.playerfriction - 0.125;
}
}
else if (!(actor->flags2 & SFLAG2_FLOATING))
{
if (actor->curMove->movez == 0)
{
if (actor->opos.Z != actor->spr.pos.Z || (ud.multimode < 2 && ud.player_skill < 2))
{
if ((actor->counter & 1) || ps[pnum].actorsqu == actor) return;
else daxvel *= 2;
}
else
{
if ((actor->counter & 3) || ps[pnum].actorsqu == actor) return;
else daxvel *= 4;
}
}
}
}
if (actor->sector()->lotag != ST_1_ABOVE_WATER)
{
daxvel *= actor->FloatVar(NAME_landmovefactor);
}
else
{
daxvel *= actor->FloatVar(NAME_watermovefactor);
}
Collision coll;
actor->movflag = movesprite_ex(actor, DVector3(angdif.ToVector() * daxvel, actor->vel.Z), CLIPMASK0, coll);
}
if (a)
{
if (actor->sector()->ceilingstat & CSTAT_SECTOR_SKY)
{
if (actor->sector()->shadedsector == 1)
{
actor->spr.shade += (16 - actor->spr.shade) >> 1;
}
else
{
actor->spr.shade += (actor->sector()->ceilingshade - actor->spr.shade) >> 1;
}
}
else actor->spr.shade += (actor->sector()->floorshade - actor->spr.shade) >> 1;
if (actor->sector()->floortexture == mirrortex)
actor->Destroy();
}
}
void fakebubbaspawn(DDukeActor *actor, player_struct* p)
{
fakebubba_spawn++;

View file

@ -50,8 +50,6 @@ int ifhitbyweapon_r(DDukeActor* sn);
int ifhitbyweapon_d(DDukeActor* sn);
void fall_d(DDukeActor* i, int g_p);
void fall_r(DDukeActor* i, int g_p);
void move_d(DDukeActor* i, int g_p, int g_x);
void move_r(DDukeActor* i, int g_p, int g_x);
void incur_damage_d(player_struct* p);
void incur_damage_r(player_struct* p);
void selectweapon_d(int snum, int j);
@ -91,7 +89,6 @@ void SetDispatcher()
addweapon_d,
ifhitbyweapon_d,
fall_d,
move_d,
incur_damage_d,
selectweapon_d,
@ -117,7 +114,6 @@ void SetDispatcher()
addweapon_r,
ifhitbyweapon_r,
fall_r,
move_r,
incur_damage_r,
selectweapon_r,

View file

@ -83,7 +83,6 @@ struct Dispatcher
void (*addweapon)(player_struct *p, int weapon, bool wswitch);
int (*ifhitbyweapon)(DDukeActor* sectnum);
void (*fall)(DDukeActor* actor, int g_p);
void (*move)(DDukeActor* i, int g_p, int g_x);
// player
void (*incur_damage)(player_struct* p);

View file

@ -42,6 +42,7 @@ void RANDOMSCRAP(DDukeActor* i);
void detonate(DDukeActor* i, PClassActor* explosion);
void hitradius(DDukeActor* i, int r, int hp1, int hp2, int hp3, int hp4);
int movesprite_ex(DDukeActor* actor, const DVector3& change, unsigned int cliptype, Collision& result);
void move(DDukeActor* actor, int pnum, double xvel);
void lotsofstuff(DDukeActor* s, int n, PClassActor* spawntype);
void watersplash2(DDukeActor* i);
bool money(DDukeActor* i, int BLOODPOOL);

View file

@ -3221,34 +3221,8 @@ void LoadActor(DDukeActor *actor, int p, int x)
if (s.killit_flag == 1)
{
// if player was set to squish, first stop that..
if (p >= 0)
{
if (ps[p].actorsqu == actor)
ps[p].actorsqu = nullptr;
}
actor->Destroy();
}
else
{
fi.move(actor, p, x);
if (actor->spr.statnum == STAT_ACTOR)
{
if (badguy(actor))
{
if (actor->spr.scale.X > 0.9375 ) return;
if (ud.respawn_monsters == 1 && actor->spr.extra <= 0) return;
}
else if (ud.respawn_items == 1 && (actor->spr.cstat & CSTAT_SPRITE_INVISIBLE)) return;
if (actor->timetosleep > 1)
actor->timetosleep--;
else if (actor->timetosleep == 1)
ChangeActorStat(actor, STAT_ZOMBIEACTOR);
}
}
}
//---------------------------------------------------------------------------
@ -3257,7 +3231,7 @@ void LoadActor(DDukeActor *actor, int p, int x)
//
//---------------------------------------------------------------------------
bool execute(DDukeActor *actor,int p,double xx)
bool execute(DDukeActor *actor,int p,double pdist)
{
auto coninf = actor->conInfo();
if (coninf == nullptr)
@ -3265,7 +3239,7 @@ bool execute(DDukeActor *actor,int p,double xx)
ParseState s;
s.g_p = p; // Player ID
s.g_x = int(xx / maptoworld); // ??
s.g_x = int(pdist / maptoworld); // ??
s.g_ac = actor;
s.insptr = &ScriptCode[4 + (gs.actorinfo[actor->spr.picnum].scriptaddress)];
auto insptr = coninf? &ScriptCode[4 + coninf->scriptaddress] : nullptr;
@ -3287,7 +3261,7 @@ bool execute(DDukeActor *actor,int p,double xx)
}
else
{
fi.move(actor, p, int(xx / maptoworld));
move(actor, p, pdist);
if (actor->spr.statnum == STAT_ACTOR)
{