View Issue Details

IDProjectCategoryView StatusLast Update
0000325Gameplay + OpenGL[All Projects] Bugpublic2017-02-27 04:35
ReporterZZYZX 
Assigned To 
PriorityhighSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Summary0000325: Duplicate classes in old DECORATE mods cause fatal error
DescriptionExample wad: Zen Dynamics, which is a really classic wad and doesn't run in new GZDoom anymore solely because of this.
It's a good idea to have this as fatal error in ZScript, but doing it in DECORATE means breaking backwards compatibility.
TagsNo tags attached.

Relationships

Activities

ZZYZX

ZZYZX

2017-02-23 08:03

reporter  

zendynx.png (23,965 bytes) ==> SQL => SELECT d.adnum as num, d.adsrc as def from pg_attrdef d, pg_class c where d.adrelid=c.oid and c.relname='mantis_bug_file_table' order by d.adnum
zendynx.png (23,965 bytes)
ZZYZX

ZZYZX

2017-02-23 08:05

reporter   ~0000712

Last edited: 2017-02-23 08:09

View 2 revisions

In this particular case it's not even mod author's fault, as this was caused by addition of previously Skulltag-exclusive Grenade actor in 2009: https://zdoom.org/wiki/Classes:Grenade

Xaser

Xaser

2017-02-23 09:54

developer   ~0000715

Though normally I adopt the "I'm cool with fixing the mod if it can't reasonably be done in the engine" stance, I have to draw the line somewhere. Zen is a few light-years on the other side of that line. :P
Graf Zahl

Graf Zahl

2017-02-23 12:04

administrator   ~0000720

Partially fixed. There is no 100% fix here because one of the conflicting types is of class ammunition, so some weapon may be broken.
Ed the Bat

Ed the Bat

2017-02-23 13:34

reporter   ~0000724

When I get some free time, I'll double-check my Revision of this mod to see if the problem still exists there. If not, I'll clean it up on my end.
Graf Zahl

Graf Zahl

2017-02-23 16:07

administrator   ~0000726

The 'Grenade' ammo type won't work and will have to be renamed. Although I can rename the duplicate class, it doesn't help here becausethe first one is a simple actor while the second one is a special type that gets referenced by other classes.
ZZYZX

ZZYZX

2017-02-24 01:00

reporter   ~0000730

Last edited: 2017-02-24 01:01

View 2 revisions

Wasn't it getting fully replaced before ZScript if it encountered duplicates?
And when internal Grenade was replaced with other random Grenade, the internal ZDoom's C++ code wouldn't crash?

Graf Zahl

Graf Zahl

2017-02-27 04:35

administrator   ~0000797

The full replacement was also broken. In the end I had to decide between a design mistake that has been causing endless problems and would do so in the future if not removed or risking to break a handful of mods that depend on the bad implementation.

Unless a proper namespacing of class names that is compatible with all mods is implemented there is no way to completely resolve the problem for all mods - but the current way is definitely better than the old one and causes less problems overall.

Zendyn is the first mod that is really negatively affected by it.

Issue History

Date Modified Username Field Change
2017-02-23 08:03 ZZYZX New Issue
2017-02-23 08:03 ZZYZX File Added: zendynx.png
2017-02-23 08:05 ZZYZX Note Added: 0000712
2017-02-23 08:09 ZZYZX Note Edited: 0000712 View Revisions
2017-02-23 09:54 Xaser Note Added: 0000715
2017-02-23 12:04 Graf Zahl Note Added: 0000720
2017-02-23 12:04 Graf Zahl Status new => resolved
2017-02-23 12:04 Graf Zahl Resolution open => fixed
2017-02-23 13:34 Ed the Bat Note Added: 0000724
2017-02-23 16:07 Graf Zahl Note Added: 0000726
2017-02-24 01:00 ZZYZX Note Added: 0000730
2017-02-24 01:01 ZZYZX Note Edited: 0000730 View Revisions
2017-02-27 04:35 Graf Zahl Note Added: 0000797