- RR: fixed the bowling lane lights.

Tiles had not been made writable.
Also renamed a few bowling related things.
This commit is contained in:
Christoph Oelckers 2021-06-09 23:53:05 +02:00
parent 1cea743536
commit 4b35a30de5
5 changed files with 31 additions and 27 deletions

View file

@ -293,7 +293,7 @@ SKIPWALLCHECK:
fi.checkhitsprite(act2, actor); fi.checkhitsprite(act2, actor);
} }
} }
else if (spri2->extra >= 0 && act2 != actor && (badguy(act2) || spri2->picnum == QUEBALL || spri2->picnum == RRTILE3440 || spri2->picnum == STRIPEBALL || (spri2->cstat & 257) || spri2->picnum == DUKELYINGDEAD)) else if (spri2->extra >= 0 && act2 != actor && (badguy(act2) || spri2->picnum == QUEBALL || spri2->picnum == BOWLINGPIN || spri2->picnum == STRIPEBALL || (spri2->cstat & 257) || spri2->picnum == DUKELYINGDEAD))
{ {
if (spri->picnum == MORTER && act2 == Owner) if (spri->picnum == MORTER && act2 == Owner)
{ {
@ -350,7 +350,7 @@ SKIPWALLCHECK:
} }
if (spri2->picnum == STATUEFLASH || spri2->picnum == QUEBALL || if (spri2->picnum == STATUEFLASH || spri2->picnum == QUEBALL ||
spri2->picnum == STRIPEBALL || spri2->picnum == RRTILE3440) spri2->picnum == STRIPEBALL || spri2->picnum == BOWLINGPIN)
fi.checkhitsprite(act2, actor); fi.checkhitsprite(act2, actor);
if (spri2->picnum != RADIUSEXPLOSION && if (spri2->picnum != RADIUSEXPLOSION &&
@ -2441,7 +2441,7 @@ void rr_specialstats()
while (auto act = it.Next()) while (auto act = it.Next())
{ {
auto s = act->s; auto s = act->s;
if (s->picnum == RRTILE280) if (s->picnum == BOWLINGPINSPOT)
if (s->lotag == 100) if (s->lotag == 100)
{ {
auto pst = pinsectorresetup(s->sectnum); auto pst = pinsectorresetup(s->sectnum);
@ -2793,12 +2793,12 @@ static int henstand(DDukeActor *actor)
s->xvel--; s->xvel--;
if (s->xvel < 0) s->xvel = 0; if (s->xvel < 0) s->xvel = 0;
s->cstat = 257; s->cstat = 257;
if (s->picnum == RRTILE3440) if (s->picnum == BOWLINGPIN)
{ {
s->cstat |= 4 & s->xvel; s->cstat |= 4 & s->xvel;
s->cstat |= 8 & s->xvel; s->cstat |= 8 & s->xvel;
if (krand() & 1) if (krand() & 1)
s->picnum = RRTILE3440 + 1; s->picnum = BOWLINGPIN + 1;
} }
else if (s->picnum == HENSTAND) else if (s->picnum == HENSTAND)
{ {
@ -2809,7 +2809,7 @@ static int henstand(DDukeActor *actor)
if (!s->xvel) if (!s->xvel)
return 2;//deletesprite(actor); still needs to run a script but should not do on a deleted object return 2;//deletesprite(actor); still needs to run a script but should not do on a deleted object
} }
if (s->picnum == RRTILE3440 || (s->picnum == RRTILE3440 + 1 && !s->xvel)) if (s->picnum == BOWLINGPIN || (s->picnum == BOWLINGPIN + 1 && !s->xvel))
{ {
return 2;//deletesprite(actor); still needs to run a script but should not do on a deleted object return 2;//deletesprite(actor); still needs to run a script but should not do on a deleted object
} }
@ -2983,8 +2983,8 @@ void moveactors_r(void)
{ {
S_StopSound(356, nullptr); S_StopSound(356, nullptr);
} }
case RRTILE3440: case BOWLINGPIN:
case RRTILE3440+1: case BOWLINGPIN+1:
case HENSTAND: case HENSTAND:
case HENSTAND+1: case HENSTAND+1:
{ {

View file

@ -30,6 +30,7 @@ Prepared for public release: 03/21/2003 - Charlie Wiederhold, 3D Realms
#include "global.h" #include "global.h"
#include "names_r.h" #include "names_r.h"
#include "dukeactor.h" #include "dukeactor.h"
#include "buildtiles.h"
BEGIN_DUKE_NS BEGIN_DUKE_NS
@ -43,9 +44,9 @@ void ballreturn(DDukeActor *ball)
DukeStatIterator it2(STAT_BOWLING); DukeStatIterator it2(STAT_BOWLING);
while (auto act2 = it2.Next()) while (auto act2 = it2.Next())
{ {
if (act2->s->picnum == RRTILE282 && act->s->hitag == act2->s->hitag) if (act2->s->picnum == BOWLINGBALLSPOT && act->s->hitag == act2->s->hitag)
spawn(act2, BOWLINGBALLSPRITE); spawn(act2, BOWLINGBALLSPRITE);
if (act2->s->picnum == RRTILE280 && act->s->hitag == act2->s->hitag && act2->s->lotag == 0) if (act2->s->picnum == BOWLINGPINSPOT && act->s->hitag == act2->s->hitag && act2->s->lotag == 0)
{ {
act2->s->lotag = 100; act2->s->lotag = 100;
act2->s->extra++; act2->s->extra++;
@ -94,12 +95,12 @@ short checkpins(short sect)
DukeSectIterator it(sect); DukeSectIterator it(sect);
while (auto a2 = it.Next()) while (auto a2 = it.Next())
{ {
if (a2->s->picnum == RRTILE3440) if (a2->s->picnum == BOWLINGPIN)
{ {
pin++; pin++;
pins[a2->s->lotag] = 1; pins[a2->s->lotag] = 1;
} }
if (a2->s->picnum == RRTILE280) if (a2->s->picnum == BOWLINGPINSPOT)
{ {
tag = a2->s->hitag; tag = a2->s->hitag;
} }
@ -107,8 +108,9 @@ short checkpins(short sect)
if (tag) if (tag)
{ {
tag += 2024; tag += LANEPICS + 1;
tileCopySection(2024, 0, 0, 128, 64, tag, 0, 0); TileFiles.tileMakeWritable(tag);
tileCopySection(LANEPICS + 1, 0, 0, 128, 64, tag, 0, 0);
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
{ {
if (pins[i] == 1) if (pins[i] == 1)
@ -156,7 +158,7 @@ short checkpins(short sect)
y = 24; y = 24;
break; break;
} }
tileCopySection(2023, 0, 0, 8, 8, tag, x - 4, y - 10); tileCopySection(LANEPICS, 0, 0, 8, 8, tag, x - 4, y - 10);
} }
} }
} }
@ -171,7 +173,7 @@ void resetpins(short sect)
DukeSectIterator it(sect); DukeSectIterator it(sect);
while (auto a2 = it.Next()) while (auto a2 = it.Next())
{ {
if (a2->s->picnum == RRTILE3440) if (a2->s->picnum == BOWLINGPIN)
deletesprite(a2); deletesprite(a2);
} }
it.Reset(sect); it.Reset(sect);
@ -179,7 +181,7 @@ void resetpins(short sect)
{ {
if (a2->s->picnum == 283) if (a2->s->picnum == 283)
{ {
auto spawned = spawn(a2, RRTILE3440); auto spawned = spawn(a2, BOWLINGPIN);
spawned->s->lotag = a2->s->lotag; spawned->s->lotag = a2->s->lotag;
if (spawned->s->lotag == 3 || spawned->s->lotag == 5) if (spawned->s->lotag == 3 || spawned->s->lotag == 5)
{ {
@ -197,6 +199,7 @@ void resetpins(short sect)
if (tag) if (tag)
{ {
tag += LANEPICS + 1; tag += LANEPICS + 1;
TileFiles.tileMakeWritable(tag);
tileCopySection(LANEPICS + 1, 0, 0, 128, 64, tag, 0, 0); tileCopySection(LANEPICS + 1, 0, 0, 128, 64, tag, 0, 0);
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
{ {
@ -258,6 +261,7 @@ void resetlanepics(void)
pic = tag + 1; pic = tag + 1;
if (pic == 0) continue; if (pic == 0) continue;
pic += LANEPICS + 1; pic += LANEPICS + 1;
TileFiles.tileMakeWritable(pic);
tileCopySection(LANEPICS + 1, 0, 0, 128, 64, pic, 0, 0); tileCopySection(LANEPICS + 1, 0, 0, 128, 64, pic, 0, 0);
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
{ {

View file

@ -158,9 +158,9 @@ x(WALLLIGHT2, 248)
x(WALLLIGHTBUST2, 249) x(WALLLIGHTBUST2, 249)
x(LIGHTSWITCH2, 250) x(LIGHTSWITCH2, 250)
x(UFOBEAM, 252) x(UFOBEAM, 252)
y(RRTILE280, 280) y(BOWLINGPINSPOT, 280)
y(RRTILE281, 281) y(RRTILE281, 281)
y(RRTILE282, 282) y(BOWLINGBALLSPOT, 282)
y(RRTILE283, 283) y(RRTILE283, 283)
y(RRTILE285, 285) y(RRTILE285, 285)
y(RRTILE286, 286) y(RRTILE286, 286)
@ -919,7 +919,7 @@ x(BOWLINGBALLH, 3428)
x(BOWLINGBALL, 3430) x(BOWLINGBALL, 3430)
x(BOWLINGBALLSPRITE, 3437) x(BOWLINGBALLSPRITE, 3437)
x(POWDERH, 3438) x(POWDERH, 3438)
y(RRTILE3440, 3440) x(BOWLINGPIN, 3440)
x(DEVISTATOR, 3445) x(DEVISTATOR, 3445)
x(RPGGUN, 3452) x(RPGGUN, 3452)
y(RRTILE3462, 3462) y(RRTILE3462, 3462)

View file

@ -2080,8 +2080,8 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
case STRIPEBALL: case STRIPEBALL:
case QUEBALL: case QUEBALL:
case RRTILE3440: case BOWLINGPIN:
case RRTILE3440 + 1: case BOWLINGPIN + 1:
case HENSTAND: case HENSTAND:
case HENSTAND + 1: case HENSTAND + 1:
if (pspr->picnum == QUEBALL || pspr->picnum == STRIPEBALL) if (pspr->picnum == QUEBALL || pspr->picnum == STRIPEBALL)
@ -2092,7 +2092,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
if (S_CheckSoundPlaying(POOLBALLHIT) < 2) if (S_CheckSoundPlaying(POOLBALLHIT) < 2)
S_PlayActorSound(POOLBALLHIT, targ); S_PlayActorSound(POOLBALLHIT, targ);
} }
else if (pspr->picnum == RRTILE3440 || pspr->picnum == RRTILE3440 + 1) else if (pspr->picnum == BOWLINGPIN || pspr->picnum == BOWLINGPIN + 1)
{ {
pspr->xvel = (s->xvel >> 1) + (s->xvel >> 2); pspr->xvel = (s->xvel >> 1) + (s->xvel >> 2);
pspr->ang -= ((s->ang << 1) + krand()) & 64; pspr->ang -= ((s->ang << 1) + krand()) & 64;

View file

@ -56,9 +56,9 @@ int spawn_r(int j, int pn)
default_case: default_case:
spawninitdefault(actj, act); spawninitdefault(actj, act);
break; break;
case RRTILE280: case BOWLINGPINSPOT:
case RRTILE281: case RRTILE281:
case RRTILE282: case BOWLINGBALLSPOT:
case RRTILE283: case RRTILE283:
case RRTILE2025: case RRTILE2025:
case RRTILE2026: case RRTILE2026:
@ -70,7 +70,7 @@ int spawn_r(int j, int pn)
sp->yrepeat = 0; sp->yrepeat = 0;
sp->clipdist = 0; sp->clipdist = 0;
sp->extra = 0; sp->extra = 0;
changespritestat(i,105); changespritestat(i,STAT_BOWLING);
break; break;
case RRTILE3410: case RRTILE3410:
sp->extra = 0; sp->extra = 0;
@ -535,7 +535,7 @@ int spawn_r(int j, int pn)
sp->xvel = 0; sp->xvel = 0;
changespritestat(i,1); changespritestat(i,1);
break; break;
case RRTILE3440: case BOWLINGPIN:
sp->cstat = 257; sp->cstat = 257;
sp->clipdist = 48; sp->clipdist = 48;
sp->xrepeat = 23; sp->xrepeat = 23;