Repo conflict removal project (and other fixes)
- DeVloek
- Topic Author
- Arachnotron
- Posts: 401
FlemoidusArachnus:
- renamed sprite ARAC -> FLAR
InfernoDemon:
- renamed sprite DIAB -> INDM
ImpWarlord, Bat, Eyes:
- updated BFAM sprites and offsets
Ghoul:
- renamed sprite GHUL -> GHOU
Sentinel:
- renamed sprite SENT -> SNTN
- added 'Sentinel' prefix to each class name that didn't have it already
Guardian and Sentinel:
- renamed sprite CFX3 -> CFXS
- added 'HF' prefix to each class name that didn't have it already
Ethereal Soul:
- renamed class ShadowBall -> ESShadowBall
- renamed class ShadowTrail -> ESShadowTrail
Dark Gargoyle:
- renamed class Beastball2 -> HereticDarkImpBeastBall
- renamed sprite WATC -> DAGA
- renamed sprite HIB1 -> DAG1
- renamed sprite HIB2 -> DAG2
BloodLich:
- renamed sprite WRTH -> BLLI
- renamed sprite CURS -> BLLC
Unless I missed something, all errors from duplicate classnames that prevented the game from starting have been removed.
That leaves only those that throw a warning message on startup, but for now I'll only fix those if I also fix some sprite names in the same monster.
Also I have fixed almost all monster sprite names that were shared with other monsters, apart from a few Heretic and Other style monsters. That leaves mostly projectiles to fix, and ofc the DECALDEFS/GLDEFS errors as well as the missing classes in some monsters.
Here's an updated to-do list with everything already done removed.
Classes
- BloodDemon, ChaingunDemon - conflicting class is renamed
- BloodFiend, CrimsonDesciple - conflicting class is renamed
- Catharsi, DuneWarrior - conflicting class is renamed
- ChillerSoul, FrostElemental - conflicting classes are renamed
- GiantBat, ImpBat - conflicting class is renamed
- Gatekeeper, Laser-Scout - conflicting class is renamed
- CyberImp, FusionCyberImp - conflicting class is renamed
- BloodLich, MagmaSerpent - conflicting class is renamed
- Nailborg, NailborgCommando - conflicting classes are renamed
- HellPaladin, Paladin - conflicting class is renamed
- BloodGhost, PhantomFiend - conflicting class is renamed
- ChaosCube, PyroDemon - conflicting class is renamed
- GiantRat, RatKing - conflicting class is renamed, the GiantRat is also included with the RatKing
- SlimeImp, SlimeWorm - conflicting class is renamed
- SoulHarvester, SoulReaper - conflicting class is renamed
- Lasershark, Shark - conflicting classes are renamed
- NetherworldQueen, SourceGuardian - conflicting class is renamed
- Hierophant, Weakener - conflicting class is renamed
Sprites
- ARCB: ArchonOfHell / HellStormArchon - same projectile sprites with minor differences
- BISH: Demon Wizard / HornBeast - same smoke sprites with minor differences
- BLAD: Moloch + PulseNailgunZombie - their projectile sprites are different from the PulseNailgun's projectile, that one has some additional fire around it
- BONE: Draugr / Scimitar - same projectile sprites but different colors
- BOOM: Incubus / Zardaz - different explosion sprites
- BPOS: FormerRanger / FormerRangerAlternate - same monster sprites with minor differences
- CFCF: Diabolist + PyroImp + Hellsmith / HornBeast / Rictus - same fire sprites but different colors and offsets
- CFFX: Diabolist / HornBeast - same fire sprites but different colors and offsets
- DFFP: InfernoDemon + ImpWarlord / Thor - same projectile sprites but different colors
- DFSH: Defiler / DagfallSkeleton - different sprites of different types
- EXPL: SpiderBot / ZombieFlyer - different explosion sprites
- GREN: UACbot / RoboCain - same projectile sprites with minor differences
- HBA3: HellDuke / AI Marines - technically the same sprites, but for some reason the AI Marines ones are missing the first 3 frames and the frame letters are shifted back, so HBA3D0 in HellDuke became HBA3A0 in AI Marines
- HBAL: Deathknight + HellApprentice / HellDuke - different projectile sprites
- HIB1-2: Dark Gargoyle / Hierophant - different projectile sprites
- ICWS: LavaDemon + IceLich / Thor - same projectile sprites but different colors, and actually unused in LavaDemon and IceLich so can be removed from those
- NBAL: NImp / Nightshade - different projectile sprites
- NKXP: InfernoDemon / PyroDemon - same explosion sprites with minor differences
- PBAL: PyroZombie / ScorpiusTank - different projectile sprites
- PHNT: Phantasm / Phantasm(Classic) - different monster sprites (variants of the lost soul and beta skull, but why not have both)
- PROJ: Allied Marines + SniperZombie / ApprenticeOfDsparil - different projectile sprites
- SBAL: Shadow + Ethereal Soul / Infernal Spider - different projectile sprites
- SIBA: SnakeImp / SpiritImp - different projectile sprites
- SMOK: TeslaCoil / UberMachinegunner - different smoke sprites
- SPI2: Infernal Spider / Phantom / Avatar - different sprites of different types
- SSFX: Hangman + ProfaneOne + Vulgar / SCGolems - different projectile sprites
- THR2: DuneWarrior + SourceGuardian / Thor - different sprites of different types
- TSM1-4: ZombieTank + ZombieMissileTank + ZombiePlasmaTank / PyroDemon - same smoke sprites with minor differences
- VBAL: Diabolist / GrossElemental - different projectile sprites
- XPL1: BloodLich + MagmaSerpent + LavaDemon / Moloch - same explosion sprites with minor differences
the file with all the fixes so far: https://drive.google.com/file/d/11o7gIbh7b9_2eVF7INqHVSsQKXtE8n5D/view?usp=sharing
That's some weird formatting right there....
Please Log in or Create an account to join the conversation.
- Gothic
- Moderator
- Posts: 1259
Now that we're revisiting old submission, I'm noticing some of them need more than sprite and actor name changes, like the Blood Lich attacks are implemented very roughly.
Please Log in or Create an account to join the conversation.
- DeVloek
- Topic Author
- Arachnotron
- Posts: 401
Thanks for your commitment. I'll be updating these entries soon.
No worries, and thank you!
Now that we're revisiting old submission, I'm noticing some of them need more than sprite and actor name changes, like the Blood Lich attacks are implemented very roughly.
I actually have a 2nd to-do list that aims to adress these kinds of issues. Just like the Arachnophyte I recently updated, I'll be looking at several monsters more in-depth and try to fix the issues they have. These are on that list atm:
- JetpackZombie death sound is stacked and extremely loud
- PlasmaElemental death sound is stacked and extremely loud
- MeleeRevenant height is much lower than the actual sprite size so it visually glitches into ceilings (although the original Revenant has the same issue, so I'll probably leave it alone for now)
- Bad, as the name suggests, is kinda bad. Needs at least higher speed, also it stops flapping its wings when firing which looks... bad
- FlyKing is just useless, the flies only deal damage when you stand still and let them hit you. Tbh the whole concept of the monster (a small fly that spawns tiny flies that instantly die when they touch you) should be overhauled.
- Swarm could use an overhaul too. While the concept isn't too bad, it's more like a prop that deals some damage than an actual monster. Also it would benefit tremendously from using the FlyKing sprites, right now a fly is just 3 black pixels.
Please Log in or Create an account to join the conversation.
- Gothic
- Moderator
- Posts: 1259
- Drone: The sprite offsets for the monster and its projectile had to be tweaked, the decal for the projectile wasn't updated after changing the sprite name, the firing sound had a horrible chirp and its pain sounds were quite loud.
- Eyes: The spider had double Radius and Height properties defined.
- Flemoidus Arachnus: The death sound wasn't playing, it had a bunch of A_BabyMetal functions that didn't play sounds because they're not defined in vanilla chex3, the obituary wasn't showing properly and it was formatted wrong.
- Various: some sounds were in doom/wav format instead of ogg, some sprites were not png, and some files are still wads instead of pk3.
- As I said previously, the Blood Lich needs a rework.
- The Cacolich needs a distance check for its green flame attack, also I think both versions should be merged.
- The Flying Imp sprite offsets are very misaligned, and I need to know if its attack is supposed to be fire breath or fire balls, because either way the attack sprites are terrible.
Please Log in or Create an account to join the conversation.
- DeVloek
- Topic Author
- Arachnotron
- Posts: 401
I hope you downloaded the latest file from my google drive (it's now called _repofix_monsters.pk3). I updated it yesterday after I found some issues with the InfernoDemon and the Sentinel which I had to take care of, Those were partially my own fault as I forgot to rename some classes (the InfernoDemon's code is... lets say, quite extensive ), and I also found some sprite name conflicts with sprites from certain weapons.Currently reviewing and repackaging all the files posted by Devloek, found a couple of issues
edit: here's the download link again for convenience
https://drive.google.com/file/d/11o7gIbh7b9_2eVF7INqHVSsQKXtE8n5D/view?usp=sharing
Speaking of weapons, since my mod project has now reached the stage where it can randomize weapons, I took a look at every weapon from the repo and as expected I found a lot of issues, not as many as the monsters had though. Here's a list of my findings,
I listed all the guns without slotnumber since my mod relies on those for randomization (eg. a weapon in slot 3 only gets replaced by another weapon in slot 3), but the main reason is that any weapon without a slotnumber won't show up in the game at all, unless given directly by the "give <classname>" cheat. So in my opinion it should be mandatory to have it so they work out-of-the-box.22RLRifle / AUGRifle: Muzzle texture error/conflict
AmmoSatchel: classname conflict "AmmoSatchel" - classname already exists in Strife so GZDoom confuses them
Colt45: truncation error
Devastator / Devastators: classname conflict "Devastator"
BoltRifle / EMSRifle: classname conflict "RiflePuff"
DustBlower / GasBlower: classname conflict "Bubble"
HeavyCarbine: truncation error
Jackbomb: GLDEFS errors
MachineGun / LightMachinegun: classname conflict "MachineGun"
MancubusArm: class error "Blood"
Nailgun(MG) / Nailgun(SG): classname conflicts "nails" (same ammo type, don't fix), "NailBlur"
FlareGun / NapalmLauncher: classname conflict "NapalmDebris"
Plasmagun / PlasmaShotgun: classname conflict "PlasmaTrail"
IceCrystalGun / PainkillerShotgun: classname conflict "CrystalShotTrail"
RavenStaff: truncation errors
PulseNailgun: truncation error
RivetGun: truncation errors
SilencedPistol: truncation error
SawThrower: missing icon "SAWA"
PulseRifle / PulseRifle2: classname conflict "PulseRifle"
RiotShotgun / SuperRiotShotgun: classname conflicts "RicoShell","RicoShellBox" (same ammo type, don't fix), "RubberPellets" (same projectile)
SprayCannon / BFG2704: classname conflicts "2704Ball", "2704Ball2"
Arbalest / SuperCrossbow: classname conflicts "SuperCrossbow", "SuperCrossbowPowered"
M16 / VanillaM16: classname conflict "M16"
Rifle / ZombiemanRifle: classname conflict "Rifle"
Necronomicon / VileStaff: classname conflict "DarkMana" (same ammo type, don't fix)
DarkClaw / Unmaker: classname conflict "DemonicEnergy" (same ammo type, don't fix)
Flamethrower / UTNTPyroCannon: classname conflicts "Gas", "BigGas", "Dropfire"
Mag60: Keyconf error (use slotnumber instead)
conflicts with monsters
Butcher: filename conflict
FreezeRifle / FreezerZombie: classname conflict "FreezeBlastTrail"
Enforcer(Pistol) / Enforcer: classname conflict "Enforcer"
Karasawa / KarasawaGuy: classname conflicts "KsawBolt", "BoltBlur"
PlasmaBeam / Railbot : classname conflict "BeamTrail"
SkeletalRevenge / Squire: classname conflict "Smoketrail"
ShieldGun / War: classname conflicts "ShieldSpawner", "ShieldHit"
FrostFang / Wendigolem: classname conflicts "FrostFangShard", "FrostFangBall", "FrostFangBallParticle", "FrostFang", "FrostFangFog", "FrostFangFog2"
LandMineLayer / Grin: classname conflict "Mine"
Deviation / UberChaingunner: classname conflict "smoke"
RailgunPrototype / BeamRevenant: classname conflict "RailTrail"
other issues
ActionMachineGun: replaces ChainGun
Deviation: replaces RocketLauncher
SpellBinder: replaces BFG9000
Doom3SSG: replaces SuperShotgun
DoubleGrenadeLauncher: no slotnumber
CraniumShaker: no slotnumber
Bearkiller: no slotnumber
Axe: no slotnumber
BioPipeBombLauncher: no slotnumber
BloodScepter: no slotnumber
Bow: no slotnumber
BRPS: no slotnumber
ExplosiveSuperShotgun: no slotnumber
FireCrystal: no slotnumber
FlakCannon: no slotnumber
Flamer: no slotnumber
Flasher: no slotnumber
Flashlight: no slotnumber
FragGrenade: weird bouncing, roll anim could be replaced with zscript roll
Glock19: no slotnumber
HChaingun: no slotnumber
GrenadeLauncher: no slotnumber
GrenadeLauncher(KDIZD): no slotnumber, grenade hitbox is too large, range too low
IronXBow: no slotnumber
IonSpray: no slotnumber
ImpalerXbow: no slotnumber
iGun: no slotnumber
LighteningRod: no slotnumber
Lightbringer: no slotnumber
Magnetsaw: no slotnumber
M60: no slotnumber
MG45: gives too much ammo on pickup
PlasmaSplitter: no slotnumber
PyroCannon: no slotnumber
Q2Chaingun: no slotnumber
QuadShotgun: no slotnumber
ScepterOfSouls: no slotnumber, requires custom death states (should be solvable in zscript)
Repeater: no slotnumber
RaptorHG: no slotnumber
Railgun: no slotnumber
SideBySideShotgun: no slotnumber
ScatterPistol: no slotnumber
SMG: no slotnumber
SMCBlaster: no SelectionOrder (should be last since it's a fallback weapon, also add wimpy flag)
Slimethrower: no slotnumber
StingCannon: no slotnumber
SwarmPlasmagun: no slotnumber
SupressedMP5: no slotnumber
SuperShotGun(KDIZD): no slotnumber
Thunderbolt: no slotnumber
ThompsonSMG: no slotnumber
Uzi: no slotnumber
Yellowboy: no slotnumber
WandOfEmbers: no slotnumber
Sprite Conflicts
StrifePistol: overwrites vanilla Doom pistol sprites (but doesn't replace the muzzle flash so it looks bugged)
DP28 / M60: same muzzleflash sprites but different offsets "RICO"
PlasmaPistol / PlasmaSplitter: same pickup spritename "PLSPA0"
The sprite conflict list is rather short, but only because I haven't really looked yet, those are just the few I have seen by chance during testing of my randomizer. Which btw is able to handle ~300 monsters and ~200 weapons (all still in their own wad/pk3) at the same time without error messages, although it seems like I have hit a hard file limit which causes any files above the ~500 count to not be loaded properly.
@Salahmander if you happen to be updating any of the weapons I mention above, would you mind taking these issues into consideration too?
edit: I forgot to mention, the classname conflicts that come from 2 weapons using the exact same ammo type (like the RiotShotgun and SuperRiotShotgun or DarkClaw and Unmaker) should probably not be fixed, this would just cause more problems than it solves. Anyone who wants to use both weapons would have to delete one of the ammo definitions. Anything else I found are actual conflicts between 2 different actors though.
Please Log in or Create an account to join the conversation.
- Salahmander
- Cacodemon
- Posts: 114
Please Log in or Create an account to join the conversation.
- DeVloek
- Topic Author
- Arachnotron
- Posts: 401
edit:
To clarify, conflicting sprite names do not matter if they look exactly the same, the game just uses those loaded last. Renaming is only necessary if they are different.
But conflicting classnames do matter, in case of Zscript this even prevents the game from starting. So it would be nice if you renamed the Bubble classes and gave them a prefix, such as GasblowerBubble and DustblowerBubble, and do something similar for all the other conflicting classes. But only if you were working on these weapons anyway, you don't have to go out of your way to fix everything I listed there. I'll get to each of them eventually, might take a while but imo it's worth it.
Please Log in or Create an account to join the conversation.
- DeVloek
- Topic Author
- Arachnotron
- Posts: 401
- Celt:
- fixed bloodcolor error - Agaures:
- fixed GLDEFS error - Arachnobaron:
- fixed GLDEFS error - Cheshire:
- fixed GLDEFS error - Despicable:
- fixed GLDEFS error - Incubus:
- fixed DECALDEFS error
- renamed sprite BOOM -> BOO2 - SuperFlyingImp:
- fixed GLDEFS error - Chiller:
- fixed missing class error - Cultist:
- fixed missing class error - Moloch:
- fixed missing class error
- renamed sprite XPL1 -> XPL3 - ChaingunDemon:
- renamed class BloodDemonArm -> ChaingunDemonArm - Nailborg:
- fixed classname typo
- renamed class NailBlur -> BorgNailBlur
- replaced wav sounds with ogg sounds from NailborgCommando - NailborgCommando:
- fixed classname typo
- renamed class NailBlur -> BorgCommandoNailBlur
- renamed classes Borg* -> BorgCommando* - IceLich:
- renamed class IceBreath -> IceLichBreath
btw the "unused" sprite ICWS is actually from Hexen and used by the IceGuy, which the IceLich inherits from. Probably included to make the monster work in Heretic too, so I left it in. Same with the LavaDemon. - Thor:
- renamed sprite ICWS -> ICW2 (this looks different then the original ICWS sprite from Hexen)
- renamed sprite THR2 -> THO2 - Dog_Pack:
- renamed class Jackal -> AnubisHound (which was the name already used for the obituary and editor key) - DuneWarrior:
- renamed class CatharsiBall -> DuneWarriorBall - ImpBat:
- renamed class BatAttackToken -> ImpBatAttackToken - Gatekeeper:
- renamed class LaserTrail -> GatekeeperLaserTrail - BloodLich:
- renamed class FireBreath -> BloodLichFireBreath (totally forgot this in the first update) - HellPaladin:
- renamed classes Paladin* -> HellPaladin* (including sound definitions) - PhantomFiend:
- renamed class GhostBlood -> PhantomFiendBlood
- added unused GhostAxeBlood class to BloodType and renamed it to PhantomFiendAxeBlood - PyroDemon:
- renamed class FireShot -> PyroDemonFireShot
- renamed class FireTail -> PyroDemonFireTail
- removed unused sprites DECL and TSM1-4 - SlimeWorm:
- renamed classes Slime* -> SlimeWorm* (including sound definitions) - SoulReaper:
- renamed SoulBallTrail -> SoulReaperBallTrail - LaserShark:
- added Lasershark_ prefix to all classes - SourceGuardian:
- renamed class FlameBreath -> SourceGuardianFlameBreath
- renamed class CatharsiBall -> SourceGuardianBall - Hierophant:
- renamed classes Power* -> HieroPower* - HellsFury:
- renamed class SoulHarvesterBall -> HellsFurySoulBall
- renamed class SoulBallTrail -> HellsFurySoulBallTrail
- FrostElemental/ChillerSoul:
no rename needed as the FrostElemental includes the Chillersoul. If the user loads the FrostElemental, then the standalone ChillerSoul is not necessary, and vice versa. Loading both would be redundant. - RatKing/GiantRat
same as above - Phantom:
I didn't fix the missing class error yet. Tbh this monster needs an overhaul as it has some more issues:
- it spawns these red ghosts which are able to infight with the Phantom and kill it pretty quickly.
- one time during my tests the Phantom (or one of the other actors that it spawns) spawned an Arch-vile that ran around mid-air for a few seconds, then disappeared. Not sure why that happened since the code isn't exactly easily readable, might have something to do with the ghosts using A_VileChase, maybe they were resurrecting each other and its bugged or something like that.
- the Phantom's sprites don't look very good, kinda weird how it looks like it's walking even though it's floating.
Please Log in or Create an account to join the conversation.
- Gothic
- Moderator
- Posts: 1259
- Abaddon: added an alternate death animation and sound.
- Harpy: the code was not edited to include the sprite name changes.
- Hell Apprentice & Hell Smith: finally they play their walking noises in Heretic & Hexen
- Hell Duke: projectile sprites clashed with the Apprentice fireballs, so they were renamed.
- Phase Imp: weird sprite offsets fixed, also new decals for the projectiles.
- Plague Imp: all instances of "Plauge" replaced with "Plague". Also new firing sound for the projectile.
- Plasma Demon: its sounds replaced the vanilla Doom Demon and fireball sounds, now it uses the same sounds as the Nightmare Demon. Also projectiles are always bright and their sprite offsets were adjusted.
- Poison Soul: I replaced the poison cloud with a more soft noise, I think it fits better. The old noise is still included in the file. Also gave it obituaries.
- Time Imp: idle sound file was corrupted.
REPO FIX Batch 1
Note: some files may lack info & credits lumps, or show erroneous information. I will fix that at the end.
I'm holding on the Cacolich, Blood Lich & Flying Imp for the moment, and in regards of these monsters:
- Bruiser Afrit: I get the actor name changes, but do you think we could keep the name of the sounds and projectile sprites from the Afrit and Bruiser Demon?
- Familiars: for some reason, they can only spawn 1 Splotch class when they die, when others are spawned they just disappear. I don't remember this being a problem when I approved them.
- The Inferno Demon code is indeed a fucking mess. I made a more clean version years ago for one of my projects, as well as a Zscript version for HPack. I haven't updated it yet because I had to take in consideration Zandronum compatibility.
Please Log in or Create an account to join the conversation.
- DeVloek
- Topic Author
- Arachnotron
- Posts: 401
@Gothic nice work. I noticed your file contains some pk3s that are still the same as mine, I guess that's just to have them out of the way, ie ready for replacement?
However, Hellduke.pk3 is still the same too, seems like your update with the renamed projectile sprites didn't make it into the zip.
Bruiser Afrit: I get the actor name changes, but do you think we could keep the name of the sounds and projectile sprites from the Afrit and Bruiser Demon?
As for the sprites, sure, if you wanna go through the hassle of renaming even more sprites... tbh I'd just keep them as they are, as long as they don't clash with anything.
As for the sounds, I'd replace them with the ones from the Afrit and BruiserDemon, since those are already in ogg format and a lot smaller than the flac ones. Also there's 16 seconds of silence after the death sound, probably an oversight.
Familiars: for some reason, they can only spawn 1 Splotch class when they die, when others are spawned they just disappear. I don't remember this being a problem when I approved them.
Could be that your sv_corpsequeuesize is set to a low number? The splotches use A_QueueCorpse to delete themselves one after the other when a certain amount has been spawned. On my end it's the default of 64, so I summoned and killed a few dozen Familiars and Gfamiliars to test this and as far as I'Ve seen it works as expected.
The Inferno Demon code is indeed a fucking mess. I made a more clean version years ago for one of my projects, as well as a Zscript version for HPack. I haven't updated it yet because I had to take in consideration Zandronum compatibility.
I bet the zscript version went from almost 5000 lines down to less than 1000... All those crazy long states that just exist to spawn a gazillion actors could easily be replaced with simple For loops. But I guess back in the day that monster was quite state of the art, can't imagine the amount of work that went into it...
Please Log in or Create an account to join the conversation.