mirror of
https://github.com/ZDoom/Raze.git
synced 2025-04-07 00:11:22 +00:00
- RANDOM_ANGLE + move_debris
This commit is contained in:
parent
834f833298
commit
ed12e333e3
6 changed files with 15 additions and 19 deletions
|
@ -127,7 +127,7 @@ int DoActorDie(DSWActor* actor, DSWActor* weapActor, int meansofdeath)
|
|||
actor->user.RotNum = 0;
|
||||
actor->spr.xvel <<= 1;
|
||||
actor->user.ActorActionFunc = nullptr;
|
||||
actor->set_int_ang(NORM_ANGLE(actor->int_ang() + 1024));
|
||||
actor->spr.angle += DAngle180;
|
||||
break;
|
||||
|
||||
case NINJA_RUN_R0:
|
||||
|
@ -370,9 +370,9 @@ int DoActorSectorDamage(DSWActor* actor)
|
|||
}
|
||||
|
||||
|
||||
bool move_debris(DSWActor* actor, int xchange, int ychange, int zchange)
|
||||
bool move_debris(DSWActor* actor, const DVector2& change)
|
||||
{
|
||||
actor->user.coll = move_sprite(actor, xchange, ychange, zchange,
|
||||
actor->user.coll = move_sprite(actor, change.X * worldtoint, change.Y * worldtoint, 0,
|
||||
actor->user.int_ceiling_dist(), actor->user.int_floor_dist(), 0, ACTORMOVETICS);
|
||||
|
||||
return actor->user.coll.type == kHitNone;
|
||||
|
@ -384,7 +384,6 @@ bool move_debris(DSWActor* actor, int xchange, int ychange, int zchange)
|
|||
int DoActorDebris(DSWActor* actor)
|
||||
{
|
||||
sectortype* sectp = actor->sector();
|
||||
int nx, ny;
|
||||
|
||||
// This was move from DoActorDie so actor's can't be walked through until they are on the floor
|
||||
actor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN);
|
||||
|
@ -413,16 +412,12 @@ int DoActorDebris(DSWActor* actor)
|
|||
}
|
||||
else
|
||||
{
|
||||
//nx = actor->spr.xvel * ACTORMOVETICS * bcos(actor->spr.angle) >> 14;
|
||||
//ny = actor->spr.xvel * ACTORMOVETICS * bsin(actor->spr.angle) >> 14;
|
||||
nx = MulScale(ACTORMOVETICS, bcos(actor->int_ang()), 14);
|
||||
ny = MulScale(ACTORMOVETICS, bsin(actor->int_ang()), 14);
|
||||
// todo: check correctness
|
||||
DVector2 nvec(ACTORMOVETICS * maptoworld * actor->spr.angle.Cos(), ACTORMOVETICS * maptoworld * actor->spr.angle.Sin());
|
||||
|
||||
//actor->spr.clipdist = (256+128)>>2;
|
||||
|
||||
if (!move_debris(actor, nx, ny, 0L))
|
||||
if (!move_debris(actor, nvec))
|
||||
{
|
||||
actor->set_int_ang(RANDOM_P2(2048));
|
||||
actor->spr.angle = RANDOM_ANGLE();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1169,7 +1169,7 @@ DSWActor* BunnyHatch2(DSWActor* actor)
|
|||
actorNew->spr.pos = actor->spr.pos;
|
||||
actorNew->spr.xrepeat = 30; // Baby size
|
||||
actorNew->spr.yrepeat = 24;
|
||||
actorNew->set_int_ang(RANDOM_P2(2048));
|
||||
actorNew->spr.angle = RANDOM_ANGLE();
|
||||
actorNew->spr.pal = 0;
|
||||
SetupBunny(actorNew);
|
||||
actorNew->spr.shade = actor->spr.shade;
|
||||
|
|
|
@ -116,6 +116,7 @@ inline int RANDOM(void)
|
|||
}
|
||||
int RANDOM_P2(int pwr_of_2) { return (RANDOM() & (pwr_of_2 - 1)); }
|
||||
double RANDOM_P2F(int pwr_of_2) { return (RANDOM() & (pwr_of_2 - 1)) * maptoworld; }
|
||||
DAngle RANDOM_ANGLE() { return DAngle::fromBuild(RANDOM_P2(2048)); }
|
||||
|
||||
//
|
||||
// Map directions/degrees
|
||||
|
|
|
@ -1189,7 +1189,7 @@ int SpawnRadiationCloud(DSWActor* actor)
|
|||
//if (RANDOM_P2(1024) < 512)
|
||||
//actorNew->spr.cstat |= (CSTAT_SPRITE_YFLIP);
|
||||
|
||||
actorNew->set_int_ang(RANDOM_P2(2048));
|
||||
actorNew->spr.angle = RANDOM_ANGLE();
|
||||
actorNew->spr.xvel = RANDOM_P2(32);
|
||||
|
||||
actorNew->user.Counter = 0;
|
||||
|
|
|
@ -17132,7 +17132,7 @@ int SpawnVehicleSmoke(DSWActor* actor)
|
|||
if (RANDOM_P2(1024) < 512)
|
||||
actorNew->spr.cstat |= (CSTAT_SPRITE_YFLIP);
|
||||
|
||||
actorNew->set_int_ang(RANDOM_P2(2048));
|
||||
actorNew->spr.angle = RANDOM_ANGLE();
|
||||
actorNew->spr.xvel = RANDOM_P2(32);
|
||||
actorNew->user.change.X = MOVEx(actorNew->spr.xvel, actorNew->int_ang());
|
||||
actorNew->user.change.Y = MOVEy(actorNew->spr.xvel, actorNew->int_ang());
|
||||
|
@ -17158,7 +17158,7 @@ int SpawnSmokePuff(DSWActor* actor)
|
|||
if (RANDOM_P2(1024) < 512)
|
||||
actorNew->spr.cstat |= (CSTAT_SPRITE_YFLIP);
|
||||
|
||||
actorNew->set_int_ang(RANDOM_P2(2048));
|
||||
actorNew->spr.angle = RANDOM_ANGLE();
|
||||
actorNew->spr.xvel = RANDOM_P2(32);
|
||||
actorNew->user.change.X = MOVEx(actorNew->spr.xvel, actorNew->int_ang());
|
||||
actorNew->user.change.Y = MOVEy(actorNew->spr.xvel, actorNew->int_ang());
|
||||
|
@ -17455,7 +17455,7 @@ int QueueFloorBlood(DSWActor* actor)
|
|||
spawnedActor->spr.clipdist = 0;
|
||||
spawnedActor->spr.xoffset = spawnedActor->spr.yoffset = 0;
|
||||
spawnedActor->spr.pos = actor->spr.pos.plusZ(1);
|
||||
spawnedActor->set_int_ang(RANDOM_P2(2048)); // Just make it any old angle
|
||||
spawnedActor->spr.angle = RANDOM_ANGLE(); // Just make it any old angle
|
||||
spawnedActor->spr.shade -= 5; // Brighten it up just a bit
|
||||
|
||||
spawnedActor->spr.cstat |= (CSTAT_SPRITE_ALIGNMENT_FLOOR);
|
||||
|
|
|
@ -779,7 +779,7 @@ void SpawnZombie(PLAYER* pp, DSWActor* weaponActor)
|
|||
auto actorNew = SpawnActor(STAT_ENEMY, ZOMBIE_RUN_R0, s_ZombieRun[0], pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->angle.ang.Buildang(), 0);
|
||||
SetOwner(actorNew, ownerActor);
|
||||
actorNew->spr.pal = actorNew->user.spal = ownerActor->user.spal;
|
||||
actorNew->set_int_ang(RANDOM_P2(2048));
|
||||
actorNew->spr.angle = RANDOM_ANGLE();
|
||||
SetupZombie(actorNew);
|
||||
actorNew->spr.shade = -10;
|
||||
actorNew->user.Flags2 |= (SPR2_DONT_TARGET_OWNER);
|
||||
|
@ -826,7 +826,7 @@ void SpawnZombie2(DSWActor* actor)
|
|||
actorNew->user.Counter3 = 0;
|
||||
SetOwner(ownerActor, actorNew);
|
||||
actorNew->spr.pal = actorNew->user.spal = ownerActor->user.spal;
|
||||
actorNew->set_int_ang(RANDOM_P2(2048));
|
||||
actorNew->spr.angle = RANDOM_ANGLE();
|
||||
SetupZombie(actorNew);
|
||||
actorNew->spr.shade = -10;
|
||||
actorNew->user.Flags2 |= (SPR2_DONT_TARGET_OWNER);
|
||||
|
|
Loading…
Reference in a new issue