by eharper256 » Wed Feb 07, 2024 2:14 am
I feel like everyone is misunderstanding here. I do not need this feature by any means, I just thought it would be a useful thing. Just as a run-down again:
1.
Decorations and
Trees and
Gore exist. My mod can be used on Doom, Doom2, Heretic, and Hexen iwads, so my count is roughly 170-180 items. They are placed by mappers.
2. The player can accidently hit them with a projectile that has +HITTRACER, and which moves this hit object away with A_Changevelocity. Example:
Code: Select all
ACTOR ForceBlastL : FastProjectile //Main forceblast
{
Damage ((9 * random(3, 4))+random(2,6))
Radius 10
Height 10
Speed 110
DamageType "Force"
+HITTRACER
+ACTIVATEIMPACT
+FORCEXYBILLBOARD
+ROLLSPRITE
+ROLLCENTER
+INTERPOLATEANGLES
+BLOODLESSIMPACT
+NOTIMEFREEZE
Projectile
MissileType "ForceBlastRing"
MissileHeight 8
Alpha 0.16
XScale 0.9
YScale 0.95
RenderStyle Add
ProjectileKickBack 50
States
{
Spawn:
TNT1 A 1
TNT1 A 2 A_Jump(256,"Spawn2","Spawn3")
Goto Spawn2
Spawn2:
FORD C 1 Bright A_SetRoll(roll-44)
Loop
Spawn3:
FORD C 1 Bright A_SetRoll(roll+44)
Loop
XDeath:
FORD D 1 Bright
{
A_RadiusThrust(275, 25, RTF_THRUSTZ, 15);
A_ChangeVelocity (-5,-2,2,CVF_RELATIVE,AAPTR_TRACER);
A_Fadeout(0.03);
A_SetRoll(roll+44);
}
FORD D 1 Bright {A_Fadeout(0.03); A_SetRoll(roll+44);}
FORD ABE 2 Bright {A_Fadeout(0.03); A_SetRoll(roll+44);}
Stop
Death:
FORD D 1 Bright
{
A_RadiusThrust(75, 25, RTF_THRUSTZ, 15);
A_Fadeout(0.03);
A_SetRoll(roll+44);
}
FORD D 1 Bright {A_Fadeout(0.03); A_SetRoll(roll+44);}
FORD ABE 2 Bright {A_Fadeout(0.03); A_SetRoll(roll+44);}
Stop
}
}
3. If 2 is applied to 1, we get things like the light on a stick from Doom flying off a pedestal and blocking a small corridor, or the trees from Hexen that appears to uproot itself. This is pretty minor, but it is relatively bizarre looking when it happens.
4. Even if I inherit all 170+ decor items and add Mass and Gravity to them (or indeed, make a base "HeavyDecoration" Class and inherit all decorations from this), they do still move slightly if hit by these projectiles. It's also a boat load of bloat code to fix a quirk in the engine. I'll do it if that's what I need to do, but...
Basically, it doesn't make too much sense to me that static map decorations can move at all; they're placed by the mapper, and are never meant to move, but various code makes this possible. Ideally, it would be nice for there to be a +NEVEREVERMOVE flag, and a base decoration class that has it, and make all the decorations, tree, and gore inherit it. Just for simplicity.
If that's not something we want to add to the code, fine, Graf can say that and move on. That's honestly what I was expecting.

But I figured I could propose it anyways as it makes sense to me.
I feel like everyone is misunderstanding here. I do not need this feature by any means, I just thought it would be a useful thing. Just as a run-down again:
1. [url=https://zdoom.org/wiki/Category:Decoration]Decorations[/url] and [url=https://zdoom.org/wiki/Category:Vegetation]Trees[/url] and [url=https://zdoom.org/wiki/Category:Gore]Gore[/url] exist. My mod can be used on Doom, Doom2, Heretic, and Hexen iwads, so my count is roughly 170-180 items. They are placed by mappers.
2. The player can accidently hit them with a projectile that has +HITTRACER, and which moves this hit object away with A_Changevelocity. Example:[code]ACTOR ForceBlastL : FastProjectile //Main forceblast
{
Damage ((9 * random(3, 4))+random(2,6))
Radius 10
Height 10
Speed 110
DamageType "Force"
+HITTRACER
+ACTIVATEIMPACT
+FORCEXYBILLBOARD
+ROLLSPRITE
+ROLLCENTER
+INTERPOLATEANGLES
+BLOODLESSIMPACT
+NOTIMEFREEZE
Projectile
MissileType "ForceBlastRing"
MissileHeight 8
Alpha 0.16
XScale 0.9
YScale 0.95
RenderStyle Add
ProjectileKickBack 50
States
{
Spawn:
TNT1 A 1
TNT1 A 2 A_Jump(256,"Spawn2","Spawn3")
Goto Spawn2
Spawn2:
FORD C 1 Bright A_SetRoll(roll-44)
Loop
Spawn3:
FORD C 1 Bright A_SetRoll(roll+44)
Loop
XDeath:
FORD D 1 Bright
{
A_RadiusThrust(275, 25, RTF_THRUSTZ, 15);
A_ChangeVelocity (-5,-2,2,CVF_RELATIVE,AAPTR_TRACER);
A_Fadeout(0.03);
A_SetRoll(roll+44);
}
FORD D 1 Bright {A_Fadeout(0.03); A_SetRoll(roll+44);}
FORD ABE 2 Bright {A_Fadeout(0.03); A_SetRoll(roll+44);}
Stop
Death:
FORD D 1 Bright
{
A_RadiusThrust(75, 25, RTF_THRUSTZ, 15);
A_Fadeout(0.03);
A_SetRoll(roll+44);
}
FORD D 1 Bright {A_Fadeout(0.03); A_SetRoll(roll+44);}
FORD ABE 2 Bright {A_Fadeout(0.03); A_SetRoll(roll+44);}
Stop
}
}[/code]
3. If 2 is applied to 1, we get things like the light on a stick from Doom flying off a pedestal and blocking a small corridor, or the trees from Hexen that appears to uproot itself. This is pretty minor, but it is relatively bizarre looking when it happens.
4. Even if I inherit all 170+ decor items and add Mass and Gravity to them (or indeed, make a base "HeavyDecoration" Class and inherit all decorations from this), they do still move slightly if hit by these projectiles. It's also a boat load of bloat code to fix a quirk in the engine. I'll do it if that's what I need to do, but...
Basically, it doesn't make too much sense to me that static map decorations can move at all; they're placed by the mapper, and are never meant to move, but various code makes this possible. Ideally, it would be nice for there to be a +NEVEREVERMOVE flag, and a base decoration class that has it, and make all the decorations, tree, and gore inherit it. Just for simplicity.
If that's not something we want to add to the code, fine, Graf can say that and move on. That's honestly what I was expecting. :) But I figured I could propose it anyways as it makes sense to me.