mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 00:42:08 +00:00
- cleaned up the generic destructible code and used it for several more things.
This commit is contained in:
parent
f89ccec829
commit
4397e65443
17 changed files with 306 additions and 312 deletions
|
@ -2235,6 +2235,7 @@ static void parseSpawnClasses(FScanner& sc, FScriptPosition& pos)
|
||||||
int res_id = -1;
|
int res_id = -1;
|
||||||
int numframes = -1;
|
int numframes = -1;
|
||||||
bool interpolate = false;
|
bool interpolate = false;
|
||||||
|
int clipdist = -1;
|
||||||
|
|
||||||
sc.SetCMode(true);
|
sc.SetCMode(true);
|
||||||
if (!sc.CheckString("{"))
|
if (!sc.CheckString("{"))
|
||||||
|
@ -2251,6 +2252,7 @@ static void parseSpawnClasses(FScanner& sc, FScriptPosition& pos)
|
||||||
int basetex = -1;
|
int basetex = -1;
|
||||||
int brokentex = -1;
|
int brokentex = -1;
|
||||||
int fullbright = 0;
|
int fullbright = 0;
|
||||||
|
int flags = 0;
|
||||||
FName sound = NAME_None;
|
FName sound = NAME_None;
|
||||||
FName cname;
|
FName cname;
|
||||||
sc.GetNumber(num, true);
|
sc.GetNumber(num, true);
|
||||||
|
@ -2287,6 +2289,28 @@ static void parseSpawnClasses(FScanner& sc, FScriptPosition& pos)
|
||||||
S_FindSound(sc.String).index();
|
S_FindSound(sc.String).index();
|
||||||
if (sound <= 0) Printf(TEXTCOLOR_RED "Unknown sound %s in definition for spawn ID # %d\n", num);
|
if (sound <= 0) Printf(TEXTCOLOR_RED "Unknown sound %s in definition for spawn ID # %d\n", num);
|
||||||
#endif
|
#endif
|
||||||
|
if (sc.CheckString(","))
|
||||||
|
{
|
||||||
|
bool cont = true;
|
||||||
|
if (sc.CheckNumber())
|
||||||
|
{
|
||||||
|
clipdist = sc.Number;
|
||||||
|
cont = sc.CheckString(",");
|
||||||
|
}
|
||||||
|
if (cont) do
|
||||||
|
{
|
||||||
|
sc.MustGetString();
|
||||||
|
if (sc.Compare("damaging")) flags |= 1;
|
||||||
|
else if (sc.Compare("solid") || sc.Compare("blocking")) flags |= 2;
|
||||||
|
else if (sc.Compare("unblocking")) flags |= 4;
|
||||||
|
else if (sc.Compare("spawnglass")) flags |= 8;
|
||||||
|
else if (sc.Compare("spawnscrap")) flags |= 16;
|
||||||
|
else if (sc.Compare("spawnsmoke")) flags |= 32;
|
||||||
|
else if (sc.Compare("spawnglass2")) flags |= 64; // Duke has 2 ways of spawning glass debris...
|
||||||
|
else sc.ScriptMessage("'%s': Unknown actor class flag", sc.String);
|
||||||
|
} while (sc.CheckString(","));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2294,7 +2318,7 @@ static void parseSpawnClasses(FScanner& sc, FScriptPosition& pos)
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo: check for proper base class
|
// todo: check for proper base class
|
||||||
spawnMap.Insert(num, { cname, nullptr, base, basetex, brokentex, sound, fullbright });
|
spawnMap.Insert(num, { cname, nullptr, base, basetex, brokentex, sound, int8_t(fullbright), int8_t(clipdist), int16_t(flags) });
|
||||||
}
|
}
|
||||||
sc.SetCMode(false);
|
sc.SetCMode(false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -278,7 +278,8 @@ struct SpawnRec
|
||||||
int param;
|
int param;
|
||||||
int basetex, brokentex;
|
int basetex, brokentex;
|
||||||
FName breaksound;
|
FName breaksound;
|
||||||
int fullbright;
|
int8_t fullbright, clipdist;
|
||||||
|
int16_t flags;
|
||||||
|
|
||||||
PClass* Class(int pn)
|
PClass* Class(int pn)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1049,7 +1049,7 @@ void checkhitdefault_d(DDukeActor* targ, DDukeActor* proj)
|
||||||
|
|
||||||
void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
||||||
{
|
{
|
||||||
int j, k;
|
int j;
|
||||||
|
|
||||||
if (targ->GetClass() != RUNTIME_CLASS(DDukeActor))
|
if (targ->GetClass() != RUNTIME_CLASS(DDukeActor))
|
||||||
{
|
{
|
||||||
|
@ -1060,38 +1060,6 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
||||||
|
|
||||||
switch (targ->spr.picnum)
|
switch (targ->spr.picnum)
|
||||||
{
|
{
|
||||||
case WTGLASS1:
|
|
||||||
case WTGLASS2:
|
|
||||||
if (!isWorldTour())
|
|
||||||
break;
|
|
||||||
S_PlayActorSound(GLASS_BREAKING, targ);
|
|
||||||
lotsofglass(targ, nullptr, 10);
|
|
||||||
targ->Destroy();
|
|
||||||
return;
|
|
||||||
|
|
||||||
case OCEANSPRITE1:
|
|
||||||
case OCEANSPRITE2:
|
|
||||||
case OCEANSPRITE3:
|
|
||||||
case OCEANSPRITE4:
|
|
||||||
case OCEANSPRITE5:
|
|
||||||
spawn(targ, SMALLSMOKE);
|
|
||||||
targ->Destroy();
|
|
||||||
break;
|
|
||||||
case HANGLIGHT:
|
|
||||||
case GENERICPOLE2:
|
|
||||||
for (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, STAT_MISC);
|
|
||||||
if (spawned) spawned->spriteextra = Scrap1 + (krand() & 15);
|
|
||||||
}
|
|
||||||
S_PlayActorSound(GLASS_HEAVYBREAK, targ);
|
|
||||||
targ->Destroy();
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
case FANSPRITE:
|
case FANSPRITE:
|
||||||
targ->spr.picnum = FANSPRITEBROKE;
|
targ->spr.picnum = FANSPRITEBROKE;
|
||||||
targ->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
targ->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||||
|
@ -1122,48 +1090,6 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
||||||
targ->Destroy();
|
targ->Destroy();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BOTTLE1:
|
|
||||||
case BOTTLE2:
|
|
||||||
case BOTTLE3:
|
|
||||||
case BOTTLE4:
|
|
||||||
case BOTTLE5:
|
|
||||||
case BOTTLE6:
|
|
||||||
case BOTTLE8:
|
|
||||||
case BOTTLE10:
|
|
||||||
case BOTTLE11:
|
|
||||||
case BOTTLE12:
|
|
||||||
case BOTTLE13:
|
|
||||||
case BOTTLE14:
|
|
||||||
case BOTTLE15:
|
|
||||||
case BOTTLE16:
|
|
||||||
case BOTTLE17:
|
|
||||||
case BOTTLE18:
|
|
||||||
case BOTTLE19:
|
|
||||||
case DOMELITE:
|
|
||||||
case SUSHIPLATE1:
|
|
||||||
case SUSHIPLATE2:
|
|
||||||
case SUSHIPLATE3:
|
|
||||||
case SUSHIPLATE4:
|
|
||||||
case SUSHIPLATE5:
|
|
||||||
case WAITTOBESEATED:
|
|
||||||
case VASE:
|
|
||||||
case STATUEFLASH:
|
|
||||||
case STATUE:
|
|
||||||
if (targ->spr.picnum == BOTTLE10)
|
|
||||||
fi.lotsofmoney(targ, 4 + (krand() & 3));
|
|
||||||
else if (targ->spr.picnum == STATUE || targ->spr.picnum == STATUEFLASH)
|
|
||||||
{
|
|
||||||
lotsofcolourglass(targ, nullptr, 40);
|
|
||||||
S_PlayActorSound(GLASS_HEAVYBREAK, targ);
|
|
||||||
}
|
|
||||||
else if (targ->spr.picnum == VASE)
|
|
||||||
lotsofglass(targ, nullptr, 40);
|
|
||||||
|
|
||||||
S_PlayActorSound(GLASS_BREAKING, targ);
|
|
||||||
targ->spr.Angles.Yaw = randomAngle();
|
|
||||||
lotsofglass(targ, nullptr, 8);
|
|
||||||
targ->Destroy();
|
|
||||||
break;
|
|
||||||
case FETUS:
|
case FETUS:
|
||||||
targ->spr.picnum = FETUSBROKE;
|
targ->spr.picnum = FETUSBROKE;
|
||||||
S_PlayActorSound(GLASS_BREAKING, targ);
|
S_PlayActorSound(GLASS_BREAKING, targ);
|
||||||
|
@ -1177,8 +1103,6 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
||||||
}
|
}
|
||||||
S_PlayActorSound(GLASS_HEAVYBREAK, targ);
|
S_PlayActorSound(GLASS_HEAVYBREAK, targ);
|
||||||
S_PlayActorSound(SQUISHED, targ);
|
S_PlayActorSound(SQUISHED, targ);
|
||||||
[[fallthrough]];
|
|
||||||
case BOTTLE7:
|
|
||||||
S_PlayActorSound(GLASS_BREAKING, targ);
|
S_PlayActorSound(GLASS_BREAKING, targ);
|
||||||
lotsofglass(targ, nullptr, 10);
|
lotsofglass(targ, nullptr, 10);
|
||||||
targ->Destroy();
|
targ->Destroy();
|
||||||
|
|
|
@ -1509,57 +1509,10 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
|
||||||
targ->Destroy();
|
targ->Destroy();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case YELLOWBOTTLE:
|
|
||||||
if (!isRRRA()) break;
|
|
||||||
[[fallthrough]];
|
|
||||||
case BOTTLE1:
|
|
||||||
case BOTTLE2:
|
|
||||||
case BOTTLE3:
|
|
||||||
case BOTTLE4:
|
|
||||||
case BOTTLE5:
|
|
||||||
case BOTTLE6:
|
|
||||||
case BOTTLE8:
|
|
||||||
case BOTTLE10:
|
|
||||||
case BOTTLE11:
|
|
||||||
case BOTTLE12:
|
|
||||||
case BOTTLE13:
|
|
||||||
case BOTTLE14:
|
|
||||||
case BOTTLE15:
|
|
||||||
case BOTTLE16:
|
|
||||||
case BOTTLE17:
|
|
||||||
case BOTTLE18:
|
|
||||||
case BOTTLE19:
|
|
||||||
case DOMELITE:
|
|
||||||
case SUSHIPLATE1:
|
|
||||||
case SUSHIPLATE2:
|
|
||||||
case SUSHIPLATE3:
|
|
||||||
case SUSHIPLATE4:
|
|
||||||
case SUSHIPLATE5:
|
|
||||||
case WAITTOBESEATED:
|
|
||||||
case VASE:
|
|
||||||
case STATUEFLASH:
|
|
||||||
case STATUE:
|
|
||||||
if (targ->spr.picnum == BOTTLE10)
|
|
||||||
fi.lotsofmoney(targ, 4 + (krand() & 3));
|
|
||||||
else if (targ->spr.picnum == STATUE || targ->spr.picnum == STATUEFLASH)
|
|
||||||
{
|
|
||||||
lotsofcolourglass(targ, nullptr, 40);
|
|
||||||
S_PlayActorSound(GLASS_HEAVYBREAK, targ);
|
|
||||||
}
|
|
||||||
else if (targ->spr.picnum == VASE)
|
|
||||||
lotsofglass(targ, nullptr, 40);
|
|
||||||
|
|
||||||
S_PlayActorSound(GLASS_BREAKING, targ);
|
|
||||||
targ->spr.Angles.Yaw = randomAngle();
|
|
||||||
lotsofglass(targ, nullptr, 8);
|
|
||||||
targ->Destroy();
|
|
||||||
break;
|
|
||||||
case RRTILE2654:
|
case RRTILE2654:
|
||||||
case RRTILE2656:
|
case RRTILE2656:
|
||||||
case RRTILE3172:
|
case RRTILE3172:
|
||||||
if (!isRRRA()) break;
|
if (!isRRRA()) break;
|
||||||
[[fallthrough]];
|
|
||||||
case BOTTLE7:
|
|
||||||
S_PlayActorSound(GLASS_BREAKING, targ);
|
S_PlayActorSound(GLASS_BREAKING, targ);
|
||||||
lotsofglass(targ, nullptr, 10);
|
lotsofglass(targ, nullptr, 10);
|
||||||
targ->Destroy();
|
targ->Destroy();
|
||||||
|
|
|
@ -56,6 +56,8 @@ void setFromSpawnRec(DDukeActor* act, SpawnRec* info)
|
||||||
act->IntVar(NAME_brokenstate) = info->brokentex;
|
act->IntVar(NAME_brokenstate) = info->brokentex;
|
||||||
act->IntVar(NAME_breaksound) = S_FindSound(info->breaksound.GetChars()).index();
|
act->IntVar(NAME_breaksound) = S_FindSound(info->breaksound.GetChars()).index();
|
||||||
act->IntVar(NAME_fullbright) = info->fullbright;
|
act->IntVar(NAME_fullbright) = info->fullbright;
|
||||||
|
act->spr.inittype = info->flags;
|
||||||
|
if (info->clipdist > 0) act->spr.clipdist = info->clipdist;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -180,13 +180,10 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
||||||
case NEON4:
|
case NEON4:
|
||||||
case NEON5:
|
case NEON5:
|
||||||
case NEON6:
|
case NEON6:
|
||||||
case DOMELITE:
|
|
||||||
if (act->spr.picnum != WATERSPLASH2)
|
if (act->spr.picnum != WATERSPLASH2)
|
||||||
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||||
[[fallthrough]];
|
[[fallthrough]];
|
||||||
case NUKEBUTTON:
|
case NUKEBUTTON:
|
||||||
if (act->spr.picnum == DOMELITE)
|
|
||||||
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
|
||||||
ChangeActorStat(act, STAT_MISC);
|
ChangeActorStat(act, STAT_MISC);
|
||||||
break;
|
break;
|
||||||
case NATURALLIGHTNING:
|
case NATURALLIGHTNING:
|
||||||
|
@ -262,43 +259,13 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
||||||
case FUELPOD:
|
case FUELPOD:
|
||||||
case SOLARPANNEL:
|
case SOLARPANNEL:
|
||||||
case ANTENNA:
|
case ANTENNA:
|
||||||
case BOTTLE1:
|
|
||||||
case BOTTLE2:
|
|
||||||
case BOTTLE3:
|
|
||||||
case BOTTLE4:
|
|
||||||
case BOTTLE5:
|
|
||||||
case BOTTLE6:
|
|
||||||
case BOTTLE7:
|
|
||||||
case BOTTLE8:
|
|
||||||
case BOTTLE10:
|
|
||||||
case BOTTLE11:
|
|
||||||
case BOTTLE12:
|
|
||||||
case BOTTLE13:
|
|
||||||
case BOTTLE14:
|
|
||||||
case BOTTLE15:
|
|
||||||
case BOTTLE16:
|
|
||||||
case BOTTLE17:
|
|
||||||
case BOTTLE18:
|
|
||||||
case BOTTLE19:
|
|
||||||
case OCEANSPRITE1:
|
|
||||||
case OCEANSPRITE2:
|
|
||||||
case OCEANSPRITE3:
|
|
||||||
case OCEANSPRITE5:
|
|
||||||
case MONK:
|
case MONK:
|
||||||
case INDY:
|
case INDY:
|
||||||
case LUKE:
|
case LUKE:
|
||||||
case JURYGUY:
|
case JURYGUY:
|
||||||
case FANSPRITE:
|
case FANSPRITE:
|
||||||
case HANGLIGHT:
|
|
||||||
case FETUS:
|
case FETUS:
|
||||||
case FETUSBROKE:
|
case FETUSBROKE:
|
||||||
case SUSHIPLATE1:
|
|
||||||
case SUSHIPLATE2:
|
|
||||||
case SUSHIPLATE3:
|
|
||||||
case SUSHIPLATE4:
|
|
||||||
case SUSHIPLATE5:
|
|
||||||
case WAITTOBESEATED:
|
|
||||||
case VASE:
|
|
||||||
case PIPE1:
|
case PIPE1:
|
||||||
case PIPE2:
|
case PIPE2:
|
||||||
case PIPE3:
|
case PIPE3:
|
||||||
|
@ -307,8 +274,6 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
||||||
case PIPE6:
|
case PIPE6:
|
||||||
act->clipdist = 8;
|
act->clipdist = 8;
|
||||||
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||||
[[fallthrough]];
|
|
||||||
case OCEANSPRITE4:
|
|
||||||
ChangeActorStat(act, 0);
|
ChangeActorStat(act, 0);
|
||||||
break;
|
break;
|
||||||
case FEMMAG1:
|
case FEMMAG1:
|
||||||
|
|
|
@ -149,7 +149,6 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
||||||
case NEON4:
|
case NEON4:
|
||||||
case NEON5:
|
case NEON5:
|
||||||
case NEON6:
|
case NEON6:
|
||||||
case DOMELITE:
|
|
||||||
if (act->spr.picnum != WATERSPLASH2)
|
if (act->spr.picnum != WATERSPLASH2)
|
||||||
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||||
ChangeActorStat(act, STAT_MISC);
|
ChangeActorStat(act, STAT_MISC);
|
||||||
|
@ -200,32 +199,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
||||||
case SOLARPANNEL:
|
case SOLARPANNEL:
|
||||||
case ANTENNA:
|
case ANTENNA:
|
||||||
case GRATE1:
|
case GRATE1:
|
||||||
case BOTTLE1:
|
|
||||||
case BOTTLE2:
|
|
||||||
case BOTTLE3:
|
|
||||||
case BOTTLE4:
|
|
||||||
case BOTTLE5:
|
|
||||||
case BOTTLE6:
|
|
||||||
case BOTTLE7:
|
|
||||||
case BOTTLE8:
|
|
||||||
case BOTTLE10:
|
|
||||||
case BOTTLE11:
|
|
||||||
case BOTTLE12:
|
|
||||||
case BOTTLE13:
|
|
||||||
case BOTTLE14:
|
|
||||||
case BOTTLE15:
|
|
||||||
case BOTTLE16:
|
|
||||||
case BOTTLE17:
|
|
||||||
case BOTTLE18:
|
|
||||||
case BOTTLE19:
|
|
||||||
case FANSPRITE:
|
case FANSPRITE:
|
||||||
case SUSHIPLATE1:
|
|
||||||
case SUSHIPLATE2:
|
|
||||||
case SUSHIPLATE3:
|
|
||||||
case SUSHIPLATE4:
|
|
||||||
case SUSHIPLATE5:
|
|
||||||
case WAITTOBESEATED:
|
|
||||||
case VASE:
|
|
||||||
case PIPE1:
|
case PIPE1:
|
||||||
case PIPE2:
|
case PIPE2:
|
||||||
case PIPE3:
|
case PIPE3:
|
||||||
|
|
|
@ -32,6 +32,7 @@ int PicForName(int intname)
|
||||||
{"RedneckCircleStuck", "CIRCLESTUCK"},
|
{"RedneckCircleStuck", "CIRCLESTUCK"},
|
||||||
{"DukePigCop", "PIGCOP"},
|
{"DukePigCop", "PIGCOP"},
|
||||||
{"DukeSmallSmoke", "SMALLSMOKE"},
|
{"DukeSmallSmoke", "SMALLSMOKE"},
|
||||||
|
{"DukeMoney", "MONEY"},
|
||||||
};
|
};
|
||||||
|
|
||||||
for (auto& p : classes)
|
for (auto& p : classes)
|
||||||
|
@ -464,6 +465,19 @@ DEFINE_ACTION_FUNCTION_NATIVE(DDukeActor, lotsofglass, DukeActor_Lotsofglass)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DukeActor_Lotsofcolourglass(DDukeActor* origin, int count)
|
||||||
|
{
|
||||||
|
lotsofcolourglass(origin, nullptr, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION_NATIVE(DDukeActor, lotsofcolourglass, DukeActor_Lotsofcolourglass)
|
||||||
|
{
|
||||||
|
PARAM_SELF_PROLOGUE(DDukeActor);
|
||||||
|
PARAM_INT(count);
|
||||||
|
DukeActor_Lotsofcolourglass(self, count);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
DEFINE_ACTION_FUNCTION_NATIVE(DDukeActor, makeitfall, makeitfall)
|
DEFINE_ACTION_FUNCTION_NATIVE(DDukeActor, makeitfall, makeitfall)
|
||||||
{
|
{
|
||||||
PARAM_SELF_PROLOGUE(DDukeActor);
|
PARAM_SELF_PROLOGUE(DDukeActor);
|
||||||
|
|
|
@ -2,5 +2,6 @@
|
||||||
spawnclasses
|
spawnclasses
|
||||||
{
|
{
|
||||||
5163 = DukeFireball
|
5163 = DukeFireball
|
||||||
|
5736 = DukeGenericDestructible, "WTGLASS1", "", "GLASS_BREAKING", spawnglass
|
||||||
|
5737 = DukeGenericDestructible, "WTGLASS2", "", "GLASS_BREAKING", spawnglass
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,12 @@ spawnclasses
|
||||||
580 = DukeReactor2Spark
|
580 = DukeReactor2Spark
|
||||||
1088 = DukeReactor
|
1088 = DukeReactor
|
||||||
1092 = DukeReactorSpark
|
1092 = DukeReactorSpark
|
||||||
|
4465 = DukeGenericPole2
|
||||||
|
979 = DukeHangLight
|
||||||
|
869 = DukeStatueFlash
|
||||||
|
753 = DukeStatue
|
||||||
|
1157 = DukeBottle10
|
||||||
|
765 = DukeVase
|
||||||
|
|
||||||
1272 = DukeTrash
|
1272 = DukeTrash
|
||||||
634 = DukeBolt1
|
634 = DukeBolt1
|
||||||
|
@ -101,25 +106,55 @@ spawnclasses
|
||||||
1528 = DukePlayerGun
|
1528 = DukePlayerGun
|
||||||
1536 = DukePlayerLeg
|
1536 = DukePlayerLeg
|
||||||
|
|
||||||
595 = DukeGenericSolidUnblockingDestructible, "GRATE1", "BGRATE1", "VENT_BUST"
|
595 = DukeGenericDestructible, "GRATE1", "BGRATE1", "VENT_BUST", solid, unblocking
|
||||||
1113 = DukeGenericUnblockingDestructible, "CIRCLEPANNEL", "CIRCLEPANNELBROKE", "VENT_BUST"
|
1113 = DukeGenericDestructible, "CIRCLEPANNEL", "CIRCLEPANNELBROKE", "VENT_BUST", unblocking
|
||||||
342 = DukeGenericSolidUnblockingDestructible, "PANNEL1", "BPANNEL1", "VENT_BUST"
|
342 = DukeGenericDestructible, "PANNEL1", "BPANNEL1", "VENT_BUST", solid, unblocking
|
||||||
343 = DukeGenericSolidUnblockingDestructible, "PANNEL2", "BPANNEL3", "VENT_BUST"
|
343 = DukeGenericDestructible, "PANNEL2", "BPANNEL3", "VENT_BUST", solid, unblocking
|
||||||
4099 = DukeGenericUnblockingDestructible, "PANNEL3", "BPANNEL3", "VENT_BUST"
|
4099 = DukeGenericDestructible, "PANNEL3", "BPANNEL3", "VENT_BUST", unblocking
|
||||||
556 = DukeGenericSolidUnblockingDestructible, "CHAIR1", "BROKENCHAIR"
|
556 = DukeGenericDestructible, "CHAIR1", "BROKENCHAIR", solid, unblocking
|
||||||
557 = DukeGenericSolidUnblockingDestructible, "CHAIR2", "BROKENCHAIR"
|
557 = DukeGenericDestructible, "CHAIR2", "BROKENCHAIR", solid, unblocking
|
||||||
|
|
||||||
686 = DukeGenericSolidScrapSpawningDestructible, "MOVIECAMERA", "", "GLASS_HEAVYBREAK"
|
686 = DukeGenericDestructible, "MOVIECAMERA", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
678 = DukeGenericSolidScrapSpawningDestructible, "SCALE", "", "GLASS_HEAVYBREAK"
|
678 = DukeGenericDestructible, "SCALE", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
685 = DukeGenericSolidScrapSpawningDestructible, "CAMERALIGHT", "", "GLASS_HEAVYBREAK"
|
685 = DukeGenericDestructible, "CAMERALIGHT", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
689 = DukeGenericSolidScrapSpawningDestructible, "IVUNIT", "", "GLASS_HEAVYBREAK"
|
689 = DukeGenericDestructible, "IVUNIT", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
694 = DukeGenericSolidScrapSpawningDestructible, "POT1", "", "GLASS_HEAVYBREAK"
|
694 = DukeGenericDestructible, "POT1", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
695 = DukeGenericSolidScrapSpawningDestructible, "POT2", "", "GLASS_HEAVYBREAK"
|
695 = DukeGenericDestructible, "POT2", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
697 = DukeGenericSolidScrapSpawningDestructible, "POT3", "", "GLASS_HEAVYBREAK"
|
697 = DukeGenericDestructible, "POT3", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
4444 = DukeGenericSolidScrapSpawningDestructible, "TRIPODCAMERA", "", "GLASS_HEAVYBREAK"
|
4444 = DukeGenericDestructible, "TRIPODCAMERA", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
669 = DukeGenericSolidScrapSpawningDestructible, "*VACUUM", "", "GLASS_HEAVYBREAK"
|
669 = DukeGenericDestructible, "*VACUUM", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
|
971 = DukeGenericDestructible, "OCEANSPRITE1", "", "", 8, blocking, spawnsmoke
|
||||||
|
972 = DukeGenericDestructible, "OCEANSPRITE2", "", "", 8, blocking, spawnsmoke
|
||||||
|
973 = DukeGenericDestructible, "OCEANSPRITE3", "", "", 8, blocking, spawnsmoke
|
||||||
|
974 = DukeGenericDestructible, "OCEANSPRITE4", "", "", spawnsmoke
|
||||||
|
975 = DukeGenericDestructible, "OCEANSPRITE5", "", "", 8, blocking, spawnsmoke
|
||||||
|
1025 = DukeGenericDestructible, "BOTTLE7", "", "GLASS_BREAKING", solid, spawnglass
|
||||||
|
551 = DukeGenericDestructible, "DOMELITE", "", "GLASS_HEAVYBREAK", blocking, spawnglass2
|
||||||
|
954 = DukeGenericDestructible, "BOTTLE1", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
955 = DukeGenericDestructible, "BOTTLE2", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
956 = DukeGenericDestructible, "BOTTLE3", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
957 = DukeGenericDestructible, "BOTTLE4", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1012 = DukeGenericDestructible, "BOTTLE5", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1013 = DukeGenericDestructible, "BOTTLE6", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1014 = DukeGenericDestructible, "BOTTLE8", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1158 = DukeGenericDestructible, "BOTTLE11", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1159 = DukeGenericDestructible, "BOTTLE12", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1160 = DukeGenericDestructible, "BOTTLE13", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1161 = DukeGenericDestructible, "BOTTLE14", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1162 = DukeGenericDestructible, "BOTTLE15", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1163 = DukeGenericDestructible, "BOTTLE16", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1164 = DukeGenericDestructible, "BOTTLE17", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1165 = DukeGenericDestructible, "BOTTLE18", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1166 = DukeGenericDestructible, "BOTTLE19", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
716 = DukeGenericDestructible, "WAITTOBESEATED", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
768 = DukeGenericDestructible, "SUSHIPLATE1", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
769 = DukeGenericDestructible, "SUSHIPLATE2", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
774 = DukeGenericDestructible, "SUSHIPLATE3", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
779 = DukeGenericDestructible, "SUSHIPLATE4", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
792 = DukeGenericDestructible, "SUSHIPLATE5", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tileflag TFLAG_WALLSWITCH {
|
tileflag TFLAG_WALLSWITCH {
|
||||||
HANDPRINTSWITCH
|
HANDPRINTSWITCH
|
||||||
HANDPRINTSWITCHON
|
HANDPRINTSWITCHON
|
||||||
|
|
|
@ -5,7 +5,7 @@ spawnclasses
|
||||||
5278 = "RedneckUfo3"
|
5278 = "RedneckUfo3"
|
||||||
5282 = "RedneckUfo4"
|
5282 = "RedneckUfo4"
|
||||||
5286 = "RedneckUfo5"
|
5286 = "RedneckUfo5"
|
||||||
2654 = DukeGenericGlassSpawningDestructible, "*RRTILE2654", "", "GLASS_BREAKING"
|
2654 = DukeGenericDestructible, "*RRTILE2654", "", "GLASS_BREAKING", spawnglass
|
||||||
2656 = DukeGenericGlassSpawningDestructible, "*RRTILE2656", "", "GLASS_BREAKING"
|
2656 = DukeGenericDestructible, "*RRTILE2656", "", "GLASS_BREAKING", spawnglass
|
||||||
3172 = DukeGenericGlassSpawningDestructible, "*RRTILE3172", "", "GLASS_BREAKING"
|
3172 = DukeGenericDestructible, "*RRTILE3172", "", "GLASS_BREAKING", spawnglass
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,18 +131,19 @@ spawnclasses
|
||||||
8498 = DukeGenericDestructible, "RRTILE8498", "RRTILE5077", "GLASS_HEAVYBREAK"
|
8498 = DukeGenericDestructible, "RRTILE8498", "RRTILE5077", "GLASS_HEAVYBREAK"
|
||||||
8499 = DukeGenericDestructible, "RRTILE8499", "RRTILE5078", "GLASS_HEAVYBREAK"
|
8499 = DukeGenericDestructible, "RRTILE8499", "RRTILE5078", "GLASS_HEAVYBREAK"
|
||||||
2445 = DukeGenericDestructible, "RRTILE2445", "RRTILE2450", "GLASS_HEAVYBREAK"
|
2445 = DukeGenericDestructible, "RRTILE2445", "RRTILE2450", "GLASS_HEAVYBREAK"
|
||||||
7885 = DukeGenericDamagingDestructible, "RRTILE7885", "RRTILE5045", "SIGNHIT"
|
7885 = DukeGenericDestructible, "RRTILE7885", "RRTILE5045", "SIGNHIT", damaging
|
||||||
7890 = DukeGenericDamagingDestructible, "RRTILE7890", "RRTILE5045", "SIGNHIT"
|
7890 = DukeGenericDestructible, "RRTILE7890", "RRTILE5045", "SIGNHIT", damaging
|
||||||
7886 = DukeGenericDamagingDestructible, "RRTILE7886", "RRTILE5046", "SIGNHIT"
|
7886 = DukeGenericDestructible, "RRTILE7886", "RRTILE5046", "SIGNHIT", damaging
|
||||||
7887 = DukeGenericDamagingDestructible, "RRTILE7887", "RRTILE5044", "GLASS_HEAVYBREAK"
|
7887 = DukeGenericDestructible, "RRTILE7887", "RRTILE5044", "GLASS_HEAVYBREAK", damaging
|
||||||
2123 = DukeGenericDamagingDestructible, "RRTILE2123", "RRTILE2124", "GLASS_BREAKING"
|
2123 = DukeGenericDestructible, "RRTILE2123", "RRTILE2124", "GLASS_BREAKING", damaging
|
||||||
3773 = DukeGenericDamagingDestructible, "RRTILE3773", "RRTILE8651", "GLASS_BREAKING"
|
3773 = DukeGenericDestructible, "RRTILE3773", "RRTILE8651", "GLASS_BREAKING", damaging
|
||||||
7533 = DukeGenericDamagingDestructible, "*RRTILE7533", "*RRTILE5035", "SIGNHIT"
|
7533 = DukeGenericDestructible, "*RRTILE7533", "*RRTILE5035", "SIGNHIT", damaging
|
||||||
3584 = DukeGenericDamagingDestructible, "RRTILE3584", "RRTILE8681", "SIGNHIT"
|
3584 = DukeGenericDestructible, "RRTILE3584", "RRTILE8681", "SIGNHIT", damaging
|
||||||
8394 = DukeGenericDestructible, "RRTILE8394", "RRTILE5072", "SIGNHIT"
|
8394 = DukeGenericDestructible, "RRTILE8394", "RRTILE5072", "SIGNHIT"
|
||||||
8461 = DukeGenericDestructible, "RRTILE8461", "RRTILE5074", "GLASS_HEAVYBREAK"
|
8461 = DukeGenericDestructible, "RRTILE8461", "RRTILE5074", "GLASS_HEAVYBREAK"
|
||||||
8462 = DukeGenericDestructible, "RRTILE8462", "RRTILE5074", "GLASS_HEAVYBREAK"
|
8462 = DukeGenericDestructible, "RRTILE8462", "RRTILE5074", "GLASS_HEAVYBREAK"
|
||||||
8682 = DukeGenericDestructible, "RRTILE8682", "RRTILE8683", "GLASS_HEAVYBREAK"
|
8682 = DukeGenericDestructible, "RRTILE8682", "RRTILE8683", "GLASS_HEAVYBREAK"
|
||||||
|
1824 = DukeGenericDestructible, "YELLOWBOTTLE", "", "GLASS_HEAVYBREAK", spawnglass2
|
||||||
}
|
}
|
||||||
|
|
||||||
tileflag TFLAG_WALLSWITCH {
|
tileflag TFLAG_WALLSWITCH {
|
||||||
|
|
|
@ -67,7 +67,13 @@ spawnclasses
|
||||||
1109 = DukeReactor2Spark
|
1109 = DukeReactor2Spark
|
||||||
2239 = DukeReactor
|
2239 = DukeReactor
|
||||||
2243 = DukeReactorSpark
|
2243 = DukeReactorSpark
|
||||||
|
2754 = DukeGenericPole2
|
||||||
|
3063 = DukeHangLight
|
||||||
|
2231 = DukeStatueFlash
|
||||||
|
1168 = DukeStatue
|
||||||
|
1280 = DukeBottle10
|
||||||
|
1172 = DukeVase
|
||||||
|
|
||||||
285 = RedneckChickenSpawner1
|
285 = RedneckChickenSpawner1
|
||||||
286 = RedneckChickenSpawner2
|
286 = RedneckChickenSpawner2
|
||||||
287 = RedneckFeatherSpawner
|
287 = RedneckFeatherSpawner
|
||||||
|
@ -109,34 +115,58 @@ spawnclasses
|
||||||
5607 = RedneckCootJibB
|
5607 = RedneckCootJibB
|
||||||
5616 = RedneckCootJibB
|
5616 = RedneckCootJibB
|
||||||
|
|
||||||
3114 = DukeGenericGlassSpawningDestructible, "RRTILE3114", "RRTILE3117", "GLASS_BREAKING"
|
3114 = DukeGenericDestructible, "RRTILE3114", "RRTILE3117", "GLASS_BREAKING", spawnglass
|
||||||
2876 = DukeGenericGlassSpawningDestructible, "RRTILE2876", "RRTILE2990", "GLASS_BREAKING"
|
2876 = DukeGenericDestructible, "RRTILE2876", "RRTILE2990", "GLASS_BREAKING", spawnglass
|
||||||
3152 = DukeGenericGlassSpawningDestructible, "RRTILE3152", "RRTILE3218", "GLASS_BREAKING"
|
3152 = DukeGenericDestructible, "RRTILE3152", "RRTILE3218", "GLASS_BREAKING", spawnglass
|
||||||
3153 = DukeGenericGlassSpawningDestructible, "RRTILE3153", "RRTILE3219", "GLASS_BREAKING"
|
3153 = DukeGenericDestructible, "RRTILE3153", "RRTILE3219", "GLASS_BREAKING", spawnglass
|
||||||
2030 = DukeGenericGlassSpawningDestructible, "RRTILE2030", "RRTILE2034", "GLASS_BREAKING"
|
2030 = DukeGenericDestructible, "RRTILE2030", "RRTILE2034", "GLASS_BREAKING", spawnglass
|
||||||
2915 = DukeGenericGlassSpawningDestructible, "RRTILE2915", "RRTILE2977", "GLASS_BREAKING"
|
2915 = DukeGenericDestructible, "RRTILE2915", "RRTILE2977", "GLASS_BREAKING", spawnglass
|
||||||
2893 = DukeGenericGlassSpawningDestructible, "RRTILE2893", "RRTILE2978", "GLASS_BREAKING"
|
2893 = DukeGenericDestructible, "RRTILE2893", "RRTILE2978", "GLASS_BREAKING", spawnglass
|
||||||
3115 = DukeGenericGlassSpawningDestructible, "RRTILE3115", "RRTILE3116", "GLASS_BREAKING"
|
3115 = DukeGenericDestructible, "RRTILE3115", "RRTILE3116", "GLASS_BREAKING", spawnglass
|
||||||
3171 = DukeGenericGlassSpawningDestructible, "RRTILE3171", "RRTILE3216", "GLASS_BREAKING"
|
3171 = DukeGenericDestructible, "RRTILE3171", "RRTILE3216", "GLASS_BREAKING", spawnglass
|
||||||
2156 = DukeGenericGlassSpawningDestructible, "*RRTILE2156", "*RRTILE2157", "GLASS_BREAKING"
|
2156 = DukeGenericDestructible, "*RRTILE2156", "*RRTILE2157", "GLASS_BREAKING", spawnglass
|
||||||
2158 = DukeGenericGlassSpawningDestructible, "*RRTILE2158", "*RRTILE2159", "GLASS_BREAKING"
|
2158 = DukeGenericDestructible, "*RRTILE2158", "*RRTILE2159", "GLASS_BREAKING", spawnglass
|
||||||
2160 = DukeGenericGlassSpawningDestructible, "*RRTILE2160", "*RRTILE2161", "GLASS_BREAKING"
|
2160 = DukeGenericDestructible, "*RRTILE2160", "*RRTILE2161", "GLASS_BREAKING", spawnglass
|
||||||
2175 = DukeGenericGlassSpawningDestructible, "*RRTILE2175", "*RRTILE2176", "GLASS_BREAKING"
|
2175 = DukeGenericDestructible, "*RRTILE2175", "*RRTILE2176", "GLASS_BREAKING", spawnglass
|
||||||
|
|
||||||
234 = DukeGenericSolidUnblockingDestructible, "GRATE1", "BGRATE1", "VENT_BUST"
|
234 = DukeGenericDestructible, "GRATE1", "BGRATE1", "VENT_BUST", solid, unblocking
|
||||||
2251 = DukeGenericUnblockingDestructible, "CIRCLEPANNEL", "CIRCLEPANNELBROKE", "VENT_BUST"
|
2251 = DukeGenericDestructible, "CIRCLEPANNEL", "CIRCLEPANNELBROKE", "VENT_BUST", unblocking
|
||||||
343 = DukeGenericSolidUnblockingDestructible, "PANNEL2", "BPANNEL3", "VENT_BUST"
|
343 = DukeGenericDestructible, "PANNEL2", "BPANNEL3", "VENT_BUST", solid, unblocking
|
||||||
1085 = DukeGenericSolidUnblockingDestructible, "CHAIR1", "BROKENCHAIR"
|
1085 = DukeGenericDestructible, "CHAIR1", "BROKENCHAIR", solid, unblocking
|
||||||
1086 = DukeGenericSolidUnblockingDestructible, "CHAIR2", "BROKENCHAIR"
|
1086 = DukeGenericDestructible, "CHAIR2", "BROKENCHAIR", solid, unblocking
|
||||||
1158 = DukeGenericSolidScrapSpawningDestructible, "MOVIECAMERA", "", "GLASS_HEAVYBREAK"
|
1157 = DukeGenericDestructible, "CAMERALIGHT", "", "GLASS_HEAVYBREAK", spawnscrap
|
||||||
1150 = DukeGenericSolidScrapSpawningDestructible, "SCALE", "", "GLASS_HEAVYBREAK"
|
1158 = DukeGenericDestructible, "MOVIECAMERA", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
1157 = DukeGenericScrapSpawningDestructible, "CAMERALIGHT", "", "GLASS_HEAVYBREAK"
|
1150 = DukeGenericDestructible, "SCALE", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
1163 = DukeGenericSolidScrapSpawningDestructible, "IVUNIT", "", "GLASS_HEAVYBREAK"
|
1163 = DukeGenericDestructible, "IVUNIT", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
1164 = DukeGenericSolidScrapSpawningDestructible, "POT1", "", "GLASS_HEAVYBREAK"
|
1164 = DukeGenericDestructible, "POT1", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
1165 = DukeGenericSolidScrapSpawningDestructible, "POT2", "", "GLASS_HEAVYBREAK"
|
1165 = DukeGenericDestructible, "POT2", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
1166 = DukeGenericSolidScrapSpawningDestructible, "POT3", "", "GLASS_HEAVYBREAK"
|
1166 = DukeGenericDestructible, "POT3", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
1141 = DukeGenericSolidScrapSpawningDestructible, "VACUUM", "", "GLASS_HEAVYBREAK"
|
1141 = DukeGenericDestructible, "VACUUM", "", "GLASS_HEAVYBREAK", solid, spawnscrap
|
||||||
|
1080 = DukeGenericDestructible, "DOMELITE", "", "GLASS_HEAVYBREAK", blocking, spawnglass2
|
||||||
|
1215 = DukeGenericDestructible, "BOTTLE1", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1216 = DukeGenericDestructible, "BOTTLE2", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1217 = DukeGenericDestructible, "BOTTLE3", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1218 = DukeGenericDestructible, "BOTTLE4", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1219 = DukeGenericDestructible, "BOTTLE5", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1220 = DukeGenericDestructible, "BOTTLE6", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1221 = DukeGenericDestructible, "BOTTLE7", "", "GLASS_BREAKING", solid, spawnglass
|
||||||
|
1222 = DukeGenericDestructible, "BOTTLE8", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1281 = DukeGenericDestructible, "BOTTLE11", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1282 = DukeGenericDestructible, "BOTTLE12", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1283 = DukeGenericDestructible, "BOTTLE13", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1284 = DukeGenericDestructible, "BOTTLE14", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1285 = DukeGenericDestructible, "BOTTLE15", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1286 = DukeGenericDestructible, "BOTTLE16", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1287 = DukeGenericDestructible, "BOTTLE17", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1288 = DukeGenericDestructible, "BOTTLE18", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1289 = DukeGenericDestructible, "BOTTLE19", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
|
||||||
|
2215 = DukeGenericDestructible, "WAITTOBESEATED", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1174 = DukeGenericDestructible, "SUSHIPLATE1", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1175 = DukeGenericDestructible, "SUSHIPLATE2", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1176 = DukeGenericDestructible, "SUSHIPLATE3", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1178 = DukeGenericDestructible, "SUSHIPLATE4", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
|
1180 = DukeGenericDestructible, "SUSHIPLATE5", "", "GLASS_HEAVYBREAK", 8, blocking, spawnglass2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,7 @@ version "4.10"
|
||||||
#include "zscript/games/duke/actors/soundcontroller.zs"
|
#include "zscript/games/duke/actors/soundcontroller.zs"
|
||||||
#include "zscript/games/duke/actors/respawncontroller.zs"
|
#include "zscript/games/duke/actors/respawncontroller.zs"
|
||||||
#include "zscript/games/duke/actors/respawnmarker.zs"
|
#include "zscript/games/duke/actors/respawnmarker.zs"
|
||||||
|
#include "zscript/games/duke/actors/genericdestructible.zs"
|
||||||
|
|
||||||
#include "zscript/games/duke/actors/projectiles.zs"
|
#include "zscript/games/duke/actors/projectiles.zs"
|
||||||
#include "zscript/games/duke/actors/rat.zs"
|
#include "zscript/games/duke/actors/rat.zs"
|
||||||
|
@ -83,8 +84,8 @@ version "4.10"
|
||||||
#include "zscript/games/duke/actors/ooz.zs"
|
#include "zscript/games/duke/actors/ooz.zs"
|
||||||
#include "zscript/games/duke/actors/bloodsplats.zs"
|
#include "zscript/games/duke/actors/bloodsplats.zs"
|
||||||
#include "zscript/games/duke/actors/reactor.zs"
|
#include "zscript/games/duke/actors/reactor.zs"
|
||||||
|
#include "zscript/games/duke/actors/destructibles.zs"
|
||||||
|
|
||||||
#include "zscript/games/duke/actors/genericdestructible.zs"
|
|
||||||
#include "zscript/games/duke/actors/redneckmisc.zs"
|
#include "zscript/games/duke/actors/redneckmisc.zs"
|
||||||
#include "zscript/games/duke/actors/rabbitspawner.zs"
|
#include "zscript/games/duke/actors/rabbitspawner.zs"
|
||||||
#include "zscript/games/duke/actors/chickenplant.zs"
|
#include "zscript/games/duke/actors/chickenplant.zs"
|
||||||
|
|
110
wadsrc/static/zscript/games/duke/actors/destructibles.zs
Normal file
110
wadsrc/static/zscript/games/duke/actors/destructibles.zs
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
|
||||||
|
class DukeGenericPole2 : DukeActor
|
||||||
|
{
|
||||||
|
default
|
||||||
|
{
|
||||||
|
pic "GENERICPOLE2";
|
||||||
|
}
|
||||||
|
|
||||||
|
override void OnHit(DukeActor proj)
|
||||||
|
{
|
||||||
|
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.Scrap1 + random(0, 15);
|
||||||
|
}
|
||||||
|
self.PlayActorSound("GLASS_HEAVYBREAK");
|
||||||
|
self.Destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DukeHangLight : DukeGenericPole2
|
||||||
|
{
|
||||||
|
default
|
||||||
|
{
|
||||||
|
statnum STAT_ACTOR;
|
||||||
|
clipdist 8;
|
||||||
|
pic "HANGLIGHT";
|
||||||
|
}
|
||||||
|
|
||||||
|
override void Initialize()
|
||||||
|
{
|
||||||
|
self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class DukeStatueFlash : DukeActor
|
||||||
|
{
|
||||||
|
default
|
||||||
|
{
|
||||||
|
pic "STATUEFLASH";
|
||||||
|
}
|
||||||
|
|
||||||
|
override void OnHit(DukeActor proj)
|
||||||
|
{
|
||||||
|
self.lotsofcolourglass(40);
|
||||||
|
self.PlayActorSound("GLASS_HEAVYBREAK");
|
||||||
|
self.angle = frandom(0, 360);
|
||||||
|
self.lotsofglass(8);
|
||||||
|
self.Destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DukeStatue : DukeStatueFlash
|
||||||
|
{
|
||||||
|
default
|
||||||
|
{
|
||||||
|
pic "STATUE";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class DukeBottle10 : DukeActor
|
||||||
|
{
|
||||||
|
Default
|
||||||
|
{
|
||||||
|
pic "BOTTLE10";
|
||||||
|
clipdist 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
override void Initialize()
|
||||||
|
{
|
||||||
|
self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||||
|
}
|
||||||
|
override void OnHit(DukeActor proj)
|
||||||
|
{
|
||||||
|
self.lotsofstuff("DukeMoney", random(4, 7));
|
||||||
|
self.PlayActorSound("GLASS_HEAVYBREAK");
|
||||||
|
self.angle = frandom(0, 360);
|
||||||
|
self.lotsofglass(8);
|
||||||
|
self.Destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class DukeVase : DukeActor
|
||||||
|
{
|
||||||
|
Default
|
||||||
|
{
|
||||||
|
pic "VASE";
|
||||||
|
clipdist 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
override void Initialize()
|
||||||
|
{
|
||||||
|
self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||||
|
}
|
||||||
|
override void OnHit(DukeActor proj)
|
||||||
|
{
|
||||||
|
self.lotsofglass(49);
|
||||||
|
self.PlayActorSound("GLASS_HEAVYBREAK");
|
||||||
|
self.angle = frandom(0, 360);
|
||||||
|
self.lotsofglass(8);
|
||||||
|
self.Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
|
// Generic class that can handle most simple destructible items without writing any new code at all. All actions are defined in .def files in the spawnclasses block.
|
||||||
class DukeGenericDestructible : DukeActor
|
class DukeGenericDestructible : DukeActor
|
||||||
{
|
{
|
||||||
TextureID spawnstate, brokenstate;
|
TextureID spawnstate, brokenstate;
|
||||||
|
@ -7,12 +7,24 @@ class DukeGenericDestructible : DukeActor
|
||||||
int fullbright;
|
int fullbright;
|
||||||
int broken;
|
int broken;
|
||||||
|
|
||||||
|
enum EFlags
|
||||||
|
{
|
||||||
|
f_damaging = 1,
|
||||||
|
f_solid = 2,
|
||||||
|
f_unblocking = 4,
|
||||||
|
f_spawnglass = 8,
|
||||||
|
f_spawnscrap = 16,
|
||||||
|
f_spawnsmoke = 32,
|
||||||
|
f_spawnglass2 = 64
|
||||||
|
}
|
||||||
|
|
||||||
native bool SetBroken(bool bust); // sets broken texture. Must be done natively as long as we do not have proper texture support.
|
native bool SetBroken(bool bust); // sets broken texture. Must be done natively as long as we do not have proper texture support.
|
||||||
|
|
||||||
virtual bool DestroyAction() { return false; } // for customized subclasses
|
virtual bool DestroyAction() { return false; } // for customized subclasses
|
||||||
|
|
||||||
override void Initialize()
|
override void Initialize()
|
||||||
{
|
{
|
||||||
|
if (self.inittype & f_solid) self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||||
self.SetBroken(false);
|
self.SetBroken(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,8 +33,21 @@ class DukeGenericDestructible : DukeActor
|
||||||
if (broken) return;
|
if (broken) return;
|
||||||
|
|
||||||
broken = true;
|
broken = true;
|
||||||
|
if (breaksound >= 0) self.PlayActorSound(breaksound);
|
||||||
bool res1 = self.SetBroken(true);
|
bool res1 = self.SetBroken(true);
|
||||||
bool res2 = DestroyAction();
|
bool res2 = DestroyAction();
|
||||||
|
let flags = self.inittype;
|
||||||
|
if (flags & f_unblocking) self.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||||
|
if (flags & f_damaging) self.hitradius(10, 0, 0, 1, 1);
|
||||||
|
if (flags & f_spawnglass) self.lotsofglass(10);
|
||||||
|
if (flags & f_spawnscrap) for(int i = 0; i < 16; i++) self.RandomScrap();
|
||||||
|
if (flags & f_spawnsmoke) self.spawn('DukeSmallSmoke');
|
||||||
|
if (flags & f_spawnglass2)
|
||||||
|
{
|
||||||
|
self.angle = frandom(0, 360);
|
||||||
|
self.lotsofglass(8);
|
||||||
|
}
|
||||||
|
|
||||||
if (res1 || res2)
|
if (res1 || res2)
|
||||||
self.Destroy();
|
self.Destroy();
|
||||||
}
|
}
|
||||||
|
@ -34,70 +59,3 @@ class DukeGenericDestructible : DukeActor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DukeGenericDamagingDestructible : DukeGenericDestructible
|
|
||||||
{
|
|
||||||
override bool DestroyAction()
|
|
||||||
{
|
|
||||||
self.hitradius(10, 0, 0, 1, 1);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DukeGenericGlassSpawningDestructible : DukeGenericDestructible
|
|
||||||
{
|
|
||||||
override bool DestroyAction()
|
|
||||||
{
|
|
||||||
self.lotsofglass(10);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DukeGenericScrapSpawningDestructible : DukeGenericDestructible
|
|
||||||
{
|
|
||||||
override bool DestroyAction()
|
|
||||||
{
|
|
||||||
for(int i = 0; i < 16; i++) self.RandomScrap();
|
|
||||||
self.Destroy();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DukeGenericUnblockingDestructible : DukeGenericDestructible
|
|
||||||
{
|
|
||||||
override bool DestroyAction()
|
|
||||||
{
|
|
||||||
self.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DukeGenericSolidScrapSpawningDestructible : DukeGenericDestructible
|
|
||||||
{
|
|
||||||
override void Initialize()
|
|
||||||
{
|
|
||||||
self.SetBroken(false);
|
|
||||||
self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
|
||||||
}
|
|
||||||
|
|
||||||
override bool DestroyAction()
|
|
||||||
{
|
|
||||||
for(int i = 0; i < 16; i++) self.RandomScrap();
|
|
||||||
self.Destroy();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DukeGenericSolidUnblockingDestructible : DukeGenericDestructible
|
|
||||||
{
|
|
||||||
override void Initialize()
|
|
||||||
{
|
|
||||||
self.SetBroken(false);
|
|
||||||
self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
|
||||||
}
|
|
||||||
|
|
||||||
override bool DestroyAction()
|
|
||||||
{
|
|
||||||
self.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -167,6 +167,7 @@ class DukeActor : CoreActor native
|
||||||
native DukeActor spawnsprite(int type); // for cases where the map has a picnum stored. Avoid when possible.
|
native DukeActor spawnsprite(int type); // for cases where the map has a picnum stored. Avoid when possible.
|
||||||
native DukeActor spawnweaponorammo(int type);
|
native DukeActor spawnweaponorammo(int type);
|
||||||
native void lotsofglass(int count);
|
native void lotsofglass(int count);
|
||||||
|
native void lotsofcolourglass(int count);
|
||||||
native void makeitfall();
|
native void makeitfall();
|
||||||
native void detonate(name type);
|
native void detonate(name type);
|
||||||
native void checkhitdefault(DukeActor proj);
|
native void checkhitdefault(DukeActor proj);
|
||||||
|
|
Loading…
Reference in a new issue