- lots of repeats in RR's spawn code.

This commit is contained in:
Christoph Oelckers 2022-10-06 00:40:40 +02:00
parent 9d8df61324
commit 730c0ef66d
2 changed files with 32 additions and 46 deletions

View file

@ -2215,9 +2215,8 @@ static void greenslime(DDukeActor *actor)
actor->temp_data[3] = 1; actor->temp_data[3] = 1;
} }
int add = int(BobVal(actor->temp_data[1]) * 2); double add = (BobVal(actor->temp_data[1]) * 2) * REPEAT_SCALE;
actor->spr.xrepeat = 20 + add; actor->spr.SetScale(0.3125 + add, 0.234375 + add);
actor->spr.yrepeat = 15 + add;
actor->spr.pos.XY() = ps[p].pos.XY() + ps[p].angle.ang.ToVector() * 8; actor->spr.pos.XY() = ps[p].pos.XY() + ps[p].angle.ang.ToVector() * 8;
return; return;
} }

View file

@ -192,9 +192,14 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
if (actj) if (actj)
{ {
SetActor(act, actj->spr.pos); SetActor(act, actj->spr.pos);
act->spr.xrepeat = act->spr.yrepeat = 8 + (krand() & 7); double s = 0.125 + (krand() & 7) * REPEAT_SCALE;
act->spr.SetScale(s, s);
}
else
{
double s = 0.25 + (krand() & 15) * REPEAT_SCALE;
act->spr.SetScale(s, s);
} }
else act->spr.xrepeat = act->spr.yrepeat = 16 + (krand() & 15);
act->spr.shade = -16; act->spr.shade = -16;
act->spr.cstat |= CSTAT_SPRITE_YCENTER; act->spr.cstat |= CSTAT_SPRITE_YCENTER;
@ -255,18 +260,15 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
{ {
if (act->spr.picnum == RABBITJIBA) if (act->spr.picnum == RABBITJIBA)
{ {
act->spr.xrepeat = 18; act->spr.SetScale(0.28125, 0.28125);
act->spr.yrepeat = 18;
} }
else if (act->spr.picnum == RABBITJIBB) else if (act->spr.picnum == RABBITJIBB)
{ {
act->spr.xrepeat = 36; act->spr.SetScale(0.5625, 0.5625);
act->spr.yrepeat = 36;
} }
else if (act->spr.picnum == RABBITJIBC) else if (act->spr.picnum == RABBITJIBC)
{ {
act->spr.xrepeat = 54; act->spr.SetScale(0.84375, 0.84375);
act->spr.yrepeat = 54;
} }
} }
ChangeActorStat(act, STAT_MISC); ChangeActorStat(act, STAT_MISC);
@ -448,15 +450,13 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
case BOWLINGBALL: case BOWLINGBALL:
act->spr.cstat = CSTAT_SPRITE_BLOCK_HITSCAN; act->spr.cstat = CSTAT_SPRITE_BLOCK_HITSCAN;
act->clipdist = 16; act->clipdist = 16;
act->spr.xrepeat = 11; act->spr.SetScale(0.171875, 0.140625);
act->spr.yrepeat = 9;
ChangeActorStat(act, 2); ChangeActorStat(act, 2);
break; break;
case HENSTAND: case HENSTAND:
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
act->clipdist = 12; act->clipdist = 12;
act->spr.xrepeat = 21; act->spr.SetScale(0.328125, 0.234375);
act->spr.yrepeat = 15;
ChangeActorStat(act, 2); ChangeActorStat(act, 2);
break; break;
case RRTILE295: case RRTILE295:
@ -474,56 +474,49 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
case RRTILE3192: case RRTILE3192:
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
act->clipdist = 2; act->clipdist = 2;
act->spr.xrepeat = 32; act->spr.SetScale(0.5, 0.40625);
act->spr.yrepeat = 26;
act->vel.X = 2; act->vel.X = 2;
ChangeActorStat(act, 1); ChangeActorStat(act, 1);
break; break;
case RRTILE3120: case RRTILE3120:
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
act->clipdist = 2; act->clipdist = 2;
act->spr.xrepeat = 12; act->spr.SetScale(0.1875, 0.15625);
act->spr.yrepeat = 10;
act->vel.X = 2; act->vel.X = 2;
ChangeActorStat(act, 1); ChangeActorStat(act, 1);
break; break;
case RRTILE3122: case RRTILE3122:
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
act->clipdist = 0.5; act->clipdist = 0.5;
act->spr.xrepeat = 8; act->spr.SetScale(0.125, 0.09375);
act->spr.yrepeat = 6;
act->vel.X = 1; act->vel.X = 1;
ChangeActorStat(act, 1); ChangeActorStat(act, 1);
break; break;
case RRTILE3123: case RRTILE3123:
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
act->clipdist = 2; act->clipdist = 2;
act->spr.xrepeat = 13; act->spr.SetScale(0.203125, 0.203125);
act->spr.yrepeat = 13;
act->vel.X = 1; act->vel.X = 1;
ChangeActorStat(act, 1); ChangeActorStat(act, 1);
break; break;
case RRTILE3124: case RRTILE3124:
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
act->clipdist = 2; act->clipdist = 2;
act->spr.xrepeat = 17; act->spr.SetScale(0.265625, 0.1875);
act->spr.yrepeat = 12;
act->vel.X = 2; act->vel.X = 2;
ChangeActorStat(act, 1); ChangeActorStat(act, 1);
break; break;
case RRTILE3132: case RRTILE3132:
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
act->clipdist = 2; act->clipdist = 2;
act->spr.xrepeat = 13; act->spr.SetScale(0.203125, 0.15625);
act->spr.yrepeat = 10;
act->vel.X = 0; act->vel.X = 0;
ChangeActorStat(act, 1); ChangeActorStat(act, 1);
break; break;
case BOWLINGPIN: case BOWLINGPIN:
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
act->clipdist = 12; act->clipdist = 12;
act->spr.xrepeat = 23; act->spr.SetScale(0.359375, 0.359375);
act->spr.yrepeat = 23;
ChangeActorStat(act, 2); ChangeActorStat(act, 2);
break; break;
case DUKELYINGDEAD: case DUKELYINGDEAD:
@ -560,7 +553,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
case SPOTLITE: case SPOTLITE:
break; break;
case BULLETHOLE: case BULLETHOLE:
act->spr.xrepeat = act->spr.yrepeat = 3; act->spr.SetScale(0.046875, 0.046875);
act->spr.cstat = CSTAT_SPRITE_ALIGNMENT_WALL | randomFlip(); act->spr.cstat = CSTAT_SPRITE_ALIGNMENT_WALL | randomFlip();
insertspriteq(act); insertspriteq(act);
[[fallthrough]]; [[fallthrough]];
@ -569,7 +562,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
{ {
act->temp_data[0] = krand() & 2047; act->temp_data[0] = krand() & 2047;
act->spr.cstat = randomFlip(); act->spr.cstat = randomFlip();
act->spr.xrepeat = act->spr.yrepeat = 8; act->spr.SetScale(0.125, 0.125);
act->spr.angle = randomAngle(); act->spr.angle = randomAngle();
} }
ChangeActorStat(act, STAT_MISC); ChangeActorStat(act, STAT_MISC);
@ -623,13 +616,11 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
} }
else if (act->spr.picnum == SMALLSMOKE) else if (act->spr.picnum == SMALLSMOKE)
{ {
act->spr.xrepeat = 12; act->spr.SetScale(0.1875, 0.1875);
act->spr.yrepeat = 12;
} }
else if (act->spr.picnum == BURNING) else if (act->spr.picnum == BURNING)
{ {
act->spr.xrepeat = 4; act->spr.SetScale(0.0625, 0.0625);
act->spr.yrepeat = 4;
} }
if (actj) if (actj)
@ -674,7 +665,8 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
{ {
if (actj) if (actj)
act->spr.angle = actj->spr.angle; act->spr.angle = actj->spr.angle;
act->spr.xrepeat = act->spr.yrepeat = 1 + (krand() & 7); double s = REPEAT_SCALE + (krand() & 7) * REPEAT_SCALE;
act->spr.SetScale(s, s);
} }
else else
act->spr.SetScale(0.5, 0.5); act->spr.SetScale(0.5, 0.5);
@ -690,8 +682,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
if (act->spr.picnum != WATERDRIP) act->spr.angle = randomAngle(); if (act->spr.picnum != WATERDRIP) act->spr.angle = randomAngle();
act->spr.xrepeat = 24; act->spr.SetScale(0.375, 0.375);
act->spr.yrepeat = 24;
ChangeActorStat(act, 6); ChangeActorStat(act, 6);
break; break;
@ -801,8 +792,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
case VIXEN: case VIXEN:
if (act->spr.pal == 34) if (act->spr.pal == 34)
{ {
act->spr.xrepeat = 22; act->spr.SetScale(0.34375, 0.328125);
act->spr.yrepeat = 21;
} }
else else
{ {
@ -821,14 +811,12 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
case COOTPLAY: case COOTPLAY:
case COOT: case COOT:
case COOTSTAYPUT: case COOTSTAYPUT:
act->spr.xrepeat = 24; act->spr.SetScale(0.375, 0.28125);
act->spr.yrepeat = 18;
act->setClipDistFromTile(); act->setClipDistFromTile();
act->clipdist *= 4; act->clipdist *= 4;
break; break;
case DRONE: case DRONE:
act->spr.xrepeat = 14; act->spr.SetScale(0.21875, 0.109375);
act->spr.yrepeat = 7;
act->clipdist = 32; act->clipdist = 32;
break; break;
case SBSWIPE: case SBSWIPE:
@ -838,8 +826,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
case BILLYRAYSTAYPUT: case BILLYRAYSTAYPUT:
case BRAYSNIPER: case BRAYSNIPER:
case BUBBASTAND: case BUBBASTAND:
act->spr.xrepeat = 25; act->spr.SetScale(0.390625, 0.328125);
act->spr.yrepeat = 21;
act->setClipDistFromTile(); act->setClipDistFromTile();
break; break;
case COW: case COW: