- exported WT's Firefly

This commit is contained in:
Christoph Oelckers 2022-12-14 14:38:09 +01:00
parent 4e0dad54a5
commit ef54987a58
5 changed files with 27 additions and 45 deletions

View file

@ -379,6 +379,7 @@ int movesprite_ex_d(DDukeActor* actor, const DVector3& change, unsigned int clip
clipmove(ppos, &dasectp, change * 0.5, 64., 4., 4., cliptype, result); clipmove(ppos, &dasectp, change * 0.5, 64., 4., 4., cliptype, result);
else else
{ {
// todo: move this mess to the actor definitions once we have them all available.
double clipdist; double clipdist;
if (actor->spr.picnum == DTILE_LIZMAN) if (actor->spr.picnum == DTILE_LIZMAN)
clipdist = 18.25; clipdist = 18.25;
@ -393,7 +394,7 @@ int movesprite_ex_d(DDukeActor* actor, const DVector3& change, unsigned int clip
// conditional code from hell... // conditional code from hell...
if (dasectp == nullptr || (dasectp != nullptr && if (dasectp == nullptr || (dasectp != nullptr &&
((actor->actorstayput != nullptr && actor->actorstayput != dasectp) || ((actor->actorstayput != nullptr && actor->actorstayput != dasectp) ||
((actor->spr.picnum == DTILE_BOSS2) && actor->spr.pal == 0 && dasectp->lotag != 3) || ((actor->spr.picnum == DTILE_BOSS2) && actor->spr.pal == 0 && dasectp->lotag != ST_3) ||
((actor->spr.picnum == DTILE_BOSS1 || actor->spr.picnum == DTILE_BOSS2) && dasectp->lotag == ST_1_ABOVE_WATER) || ((actor->spr.picnum == DTILE_BOSS1 || actor->spr.picnum == DTILE_BOSS2) && dasectp->lotag == ST_1_ABOVE_WATER) ||
(dasectp->lotag == ST_1_ABOVE_WATER && (actor->spr.picnum == DTILE_LIZMAN || (actor->spr.picnum == DTILE_LIZTROOP && actor->vel.Z == 0))) (dasectp->lotag == ST_1_ABOVE_WATER && (actor->spr.picnum == DTILE_LIZMAN || (actor->spr.picnum == DTILE_LIZTROOP && actor->vel.Z == 0)))
)) ))

View file

@ -988,20 +988,6 @@ void shoot_d(DDukeActor* actor, int atwith, PClass *cls)
case DTILE_FIREBALL: case DTILE_FIREBALL:
shootfireball(actor, p, spos, sang); shootfireball(actor, p, spos, sang);
return; return;
case DTILE_FIREFLY: // DTILE_BOSS5 shot
{
auto k = spawn(actor, atwith);
if (k)
{
k->setsector(sect);
k->spr.pos = spos;
k->spr.Angles.Yaw = sang;
k->vel.X = 500 / 16.;
k->vel.Z = 0;
}
return;
}
} }
} }

View file

@ -70,34 +70,6 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
{ {
switch (act->spr.picnum) switch (act->spr.picnum)
{ {
case DTILE_FIREFLY:
act->spr.scale = DVector2(0.625, 0.625);
act->clipdist = 20;
if (actj)
act->spr.lotag = 0;
if ((act->spr.lotag > ud.player_skill) || ud.monsters_off)
{
act->spr.scale = DVector2(0, 0);
ChangeActorStat(act, STAT_MISC);
break;
}
else
{
makeitfall(act);
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
if (actj) {
act->timetosleep = 0;
check_fta_sounds_d(act);
ChangeActorStat(act, STAT_ACTOR);
}
else
ChangeActorStat(act, STAT_ZOMBIEACTOR);
}
return act;
case DTILE_WHISPYSMOKE: case DTILE_WHISPYSMOKE:
ChangeActorStat(act, STAT_MISC); ChangeActorStat(act, STAT_MISC);
act->spr.pos.X += krandf(16) - 8; act->spr.pos.X += krandf(16) - 8;

View file

@ -12,6 +12,7 @@ spawnclasses
5310 = DukeBoss5 5310 = DukeBoss5
5311 = DukeBoss5Stayput 5311 = DukeBoss5Stayput
5180 = DukeFirefly
5134 = DukeFlamethrowerSprite 5134 = DukeFlamethrowerSprite
5135 = DukeFlamethrowerAmmo 5135 = DukeFlamethrowerAmmo

View file

@ -1,6 +1,4 @@
// for now only the effect is scriptified.
class DukeFireflyFlyingEffect : DukeActor class DukeFireflyFlyingEffect : DukeActor
{ {
default default
@ -45,3 +43,27 @@ class DukeFireflyFlyingEffect : DukeActor
} }
} }
} }
class DukeFirefly : DukeActor
{
default
{
pic "FIREFLY";
}
override bool ShootThis(DukeActor shooter, DukePlayer p, Vector3 spos, double sang)
{
let k = shooter.spawn("DukeFirefly");
if (k)
{
k.sector = shooter.sector;
k.pos = spos;
k.Angle = sang;
k.vel.X = 500 / 16.;
k.vel.Z = 0;
}
return true;
}
}