mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 00:42:08 +00:00
- scriptified the remaining RR destructibles.
This commit is contained in:
parent
15bee4ca6a
commit
e5ac32e329
5 changed files with 90 additions and 46 deletions
|
@ -687,13 +687,15 @@ y(RRTILE2123, 2123)
|
|||
y(RRTILE2124, 2124)
|
||||
y(RRTILE2125, 2125)
|
||||
y(RRTILE2126, 2126)
|
||||
y(RRTILE2137, 2137)
|
||||
y(FLAMINGO, 2137)
|
||||
y(FLAMINGOB, 2138)
|
||||
y(RRTILE2132, 2132)
|
||||
y(RRTILE2136, 2136)
|
||||
y(RRTILE2139, 2139)
|
||||
y(RRTILE2150, 2150)
|
||||
y(RRTILE2151, 2151)
|
||||
y(RRTILE2152, 2152)
|
||||
y(MARBLESTATUE1, 2151)
|
||||
y(MARBLESTATUE2, 2152)
|
||||
y(MARBLESTATUE3, 2153)
|
||||
y(RRTILE2156, 2156)
|
||||
y(RRTILE2157, 2157)
|
||||
y(RRTILE2158, 2158)
|
||||
|
@ -1390,8 +1392,8 @@ y(RRTILE8651, 8651)
|
|||
y(RRTILE8660, 8660)
|
||||
x(ENDGAME, 8677)
|
||||
x(ENDGAME2, 8678)
|
||||
y(RRTILE8679, 8679)
|
||||
y(RRTILE8680, 8680)
|
||||
y(SNAKERIVERSIGN, 8679)
|
||||
y(SNAKERIVERSIGNB, 8680)
|
||||
y(RRTILE8681, 8681)
|
||||
y(RRTILE8682, 8682)
|
||||
y(RRTILE8683, 8683)
|
||||
|
|
|
@ -1395,51 +1395,10 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
|
|||
{
|
||||
case IRONWHEELSWITCH:
|
||||
break;
|
||||
case RRTILE8679:
|
||||
targ->spr.picnum = RRTILE8680;
|
||||
S_PlayActorSound(DUKE_SHUCKS, targ);
|
||||
fi.hitradius(targ, 10, 0, 0, 1, 1);
|
||||
if (targ->spr.lotag != 0)
|
||||
{
|
||||
DukeSpriteIterator it;
|
||||
while (auto act = it.Next())
|
||||
{
|
||||
if (act->spr.picnum == RRTILE8679 && act->spr.pal == 4)
|
||||
{
|
||||
if (act->spr.lotag == targ->spr.lotag)
|
||||
act->spr.picnum = RRTILE8680;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
switch (targ->spr.picnum)
|
||||
{
|
||||
case RRTILE2137:
|
||||
case RRTILE2151:
|
||||
case RRTILE2152:
|
||||
S_PlayActorSound(GLASS_BREAKING, targ);
|
||||
lotsofglass(targ, nullptr, 10);
|
||||
targ->spr.picnum++;
|
||||
for (int k = 0; k < 6; k++)
|
||||
{
|
||||
auto a = randomAngle();
|
||||
auto vel = krandf(4) + 4;
|
||||
auto zvel = -krandf(16) - targ->vel.Z * 0.25;
|
||||
|
||||
auto spawned = CreateActor(targ->sector(), targ->spr.pos.plusZ(-8), PClass::FindActor("DukeScrap"), -8, DVector2(0.75, 0.75), a, vel, zvel, targ, 5);
|
||||
if (spawned) spawned->spriteextra = Scrap6 + (krand() & 15);
|
||||
}
|
||||
break;
|
||||
case RRTILE2654:
|
||||
case RRTILE2656:
|
||||
case RRTILE3172:
|
||||
if (!isRRRA()) break;
|
||||
S_PlayActorSound(GLASS_BREAKING, targ);
|
||||
lotsofglass(targ, nullptr, 10);
|
||||
targ->Destroy();
|
||||
break;
|
||||
case TOILET:
|
||||
targ->spr.picnum = TOILETBROKE;
|
||||
if(krand() & 1) targ->spr.cstat |= CSTAT_SPRITE_XFLIP;
|
||||
|
|
|
@ -48,6 +48,7 @@ spawnclasses
|
|||
8450 = RedneckAirplane
|
||||
8099 = RedneckPiano
|
||||
8094 = RedneckPianoKeys
|
||||
8679 = RedneckSnakeRiverSign
|
||||
|
||||
7636 = DukeGenericDestructible, "OLDPHOTO0", "OLDPHOTO0BROKE", "VENT_BUST"
|
||||
7638 = DukeGenericDestructible, "OLDPHOTO1", "OLDPHOTO1BROKE", "VENT_BUST"
|
||||
|
|
|
@ -154,6 +154,9 @@ spawnclasses
|
|||
4897 = RedneckHenstand
|
||||
296 = RedneckTeleport
|
||||
297 = RedneckTeleportDest
|
||||
2137 = RedneckFlamingo
|
||||
2151 = RedneckMarbleStatue
|
||||
2152 = RedneckMarbleStatue2
|
||||
|
||||
3114 = DukeGenericDestructible, "RRTILE3114", "RRTILE3117", "GLASS_BREAKING", spawnglass
|
||||
2876 = DukeGenericDestructible, "RRTILE2876", "RRTILE2990", "GLASS_BREAKING", spawnglass
|
||||
|
@ -207,6 +210,10 @@ spawnclasses
|
|||
1176 = DukeGenericDestructible, "SUSHIPLATE3", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||
1178 = DukeGenericDestructible, "SUSHIPLATE4", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||
1180 = DukeGenericDestructible, "SUSHIPLATE5", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||
|
||||
2654 = DukeGenericDestructible, "RRTILE2654", "", "GLASS_BREAKING", spawnglass
|
||||
2656 = DukeGenericDestructible, "RRTILE2656", "", "GLASS_BREAKING", spawnglass
|
||||
3172 = DukeGenericDestructible, "RRTILE3172", "", "GLASS_BREAKING", spawnglass
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -466,3 +466,78 @@ class DukeChair3 : DukeActor
|
|||
self.Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class RedneckFlamingo : DukeActor
|
||||
{
|
||||
default
|
||||
{
|
||||
spriteset "FLAMINGO", "FLAMINGOB";
|
||||
}
|
||||
|
||||
override void OnHit(DukeActor proj)
|
||||
{
|
||||
if (self.spritesetindex < self.getSpriteSetSize() - 1)
|
||||
{
|
||||
self.setSpriteSetImage(self.spritesetindex + 1);
|
||||
self.PlayActorSound("GLASS_BREAKING");
|
||||
self.lotsofglass(10);
|
||||
for (int k = 0; k < 6; k++)
|
||||
{
|
||||
let a = frandom(0, 360);
|
||||
let vel = frandom(4, 8);
|
||||
let zvel = -frandom(0, 16) - self.vel.Z * 0.25;
|
||||
|
||||
let spawned = dlevel.SpawnActor(self.sector, self.pos.plusZ(-8), "DukeScrap", -8, (0.75, 0.75), a, vel, zvel, self, STAT_MISC);
|
||||
if (spawned) spawned.spriteextra = DukeScrap.Scrap6 + random(0, 15);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class RedneckMarbleStatue : RedneckFlamingo
|
||||
{
|
||||
default
|
||||
{
|
||||
spriteset "MARBLESTATUE1", "MARBLESTATUE2", "MARBLESTATUE3";
|
||||
}
|
||||
}
|
||||
|
||||
class RedneckMarbleStatue2 : RedneckMarbleStatue
|
||||
{
|
||||
default
|
||||
{
|
||||
spritesetindex 1;
|
||||
}
|
||||
}
|
||||
|
||||
class RedneckSnakeRiverSign : DukeActor
|
||||
{
|
||||
default
|
||||
{
|
||||
spriteset "FLAMINGO", "FLAMINGOB";
|
||||
}
|
||||
|
||||
override void OnHit(DukeActor proj)
|
||||
{
|
||||
if (self.spritesetindex == 0)
|
||||
{
|
||||
self.setSpriteSetImage(1);
|
||||
|
||||
self.PlayActorSound("WOODBREK");
|
||||
self.hitradius(10, 0, 0, 1, 1);
|
||||
if (self.lotag != 0)
|
||||
{
|
||||
DukeSpriteIterator it;
|
||||
for (let act = it.First(); act; act = it.Next())
|
||||
{
|
||||
if (act is 'RedneckSnakeRiverSign' && act.pal == 4)
|
||||
{
|
||||
if (act.lotag == self.lotag)
|
||||
act.setSpriteSetImage(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue