released this 2 weeks ago | 149 commits to main since this release
hd_3speed. It wasn't really helping anything.
- General reminder to modders: if you need to use the weaponstatus slots, while nothing is ever really future-proof it is advisable to go with the ones towards the end (e.g., by defining your constants like
HDWEP_STATUSSLOTS-x) instead of trying to use the first one that isn't already being used by HD. Anyway, a bunch of weapons just got a use case for the next status slot.
- Crashes/VM aborts:
- Null check added to A_HDChase when Thing_SetGoal is processed.
- Babuin could latch onto zero-height targets, triggering a divide by zero error.
- Backpack briefly checked for a non-existent mag item if you dropped armour with it open.
- Patrol points actually work now!
- Blursphere was not clearing +SPECIALFIREDAMAGE when dropped, leaving the player permanently invisible to monsters.
- Healers would not randomly change direction or stay close to friendly players.
- Bloodpack was spawning in backpacks and could be interacted with in the mag manager.
- Player corpses using the crouching death sprites would pass on the crouchsprite to the raised actor, leaving them using the crouched sprite while having the hitbox, reach and speed of a normal standing character.
- Grenade explosion abstracted fragments would always do the maximum number of checks. The explosion now uses the correct number and this maximum is now only used to prevent further checks if the victim would no longer be affected by further damage.
- A_SpawnChunks() no longer as aggressively favours moving away from the floor or ceiling. Previously it would skew things so much that a player could escape a grenade almost completely unscathed by letting it go off while it was resting on top of their head.
- Undid a previous "fix" of blood splatters that left no lasting wounds, as there was clearly actual piercing damage being done at that point.
- Bullets no longer miss entirely if only the head is missed and the bullet hit at a steeper pitch than 70 degrees.
- Shellshade no longer dramatically shakes the earth while not screaming when bleeding to death.
- Loadoutcode giving now handles backpacks and related storage items and gives numbers of stored mags instead of every mag's ammo count.
- An "uwu"-ing NPC will only uwuify one "u" in their username, not every single one.
- Crashes/VM aborts:
rretconsole command and
dotparameter in Liberator, Vulcanette, ZM66 and SMG. These take the same values as
hd_crosshairand are not capped.
- Skins can now define custom gibbing sounds.
- New cvar
hd_height(default 1). Ranges from 0.8 to 1.2.
- New flag
+hdweapon/hdpickup.nobackpackspawnthat removes the class from the potential candidates for things to be found in random backpacks.
- Item maxamounts now scale with hd_encumbrance.
- Backpack capacity no longer scales with hd_encumbrance, any more than magazines do. You now need to have the fist out to use the zoom-info.
- The random-syllable critter names are now weighted to something your typical English speaker might be just a little less totally unable to parse as anything but a keymash.
- Bullet sound trail effects are now calculated instead of relying on presets.
- Playerpawns without players will take damage like normal GZDoom actors.
released this 1 month ago | 276 commits to main since this release
hd_xhscalenow renamed to
- You can no longer throw down your mouse during a crouch-slide to do a roll. Instead, hold forwards or backwards and not sideways while crouched and hit jump.
hd_noslidecan now be used to disable this. Set it to 1 to disable slides only, 2 to disable rolls only, and 3 to disable both.
HDMarineclass name is no longer used.
HDOperatoris now the class name for the generic NPC who is working to secure, escape or destabilize the situation.
Tangois similarly replaced with
HDGoon. Related actor names have
Goonaccordingly. The translation in TRNSLATE now says
- Some of the zombie generator classes plus
VulcanetteZombie) have been renamed to more gender-neutral terms. No DoomEdNums have been changed.
- Some weapons may be disproportionately more powerful now that a bug has been fixed that had been keeping monsters alive much longer than they should.
- Freedoom pistol zombie redrawn to match the latest unstable version. Get a recent build at http://freedoom.soulsphere.org/
- 4.5.0 compatibility is no more. As it should be, but just making a note that you can upgrade now if you've been delaying for the sake of this. LZDoom 3.88 remains supported.
- Crashes/VM aborts:
- Null-self checks have been added after each OnHitActor and HitGeometry calls, in case mods call for the bullet to be destroyed during these.
- Weapon collision placed the vertical detection backwards at steep angles, and aborted prematurely when they should have proceeded to the next check.
- Player corpses' reliance on the master pointer was having odd side effects, and thus they are given their own pointer for the originating player.
- Item overlays were being cleared when the wearer was revived in PoF mode.
- Monsters were attacking grenades.
- Bodydamage-inflicted death was not guaranteed when the underlying cause of damage was subject to damage resistance, with ping damage getting rounded down to zero.
- Player extreme death would always spawn a gibbed rifleman to replace a gibbed playercorpse.
- Upside-down view while rolling would be overridden by Immerse. An additional override has been added to counter this.
- Hunter replacing the Slayer in D1/Phase1 is now correctly selected for loadouts that are set to start with the Slayer selected.
- Ninja pirate and babuin were able to grapple through walls.
- Armour was not converting damage to bashing.
- was converting slime damage into too much heat, effectively incapacitating the player when they should have been protected.
- was being given twice on wear-on-pickup.
- Massive cleanup to the turning input.
- Ladder sideways movement allowed player to move out of grip range while on the ladder without actually disengaging, resulting in many accidental falls.
- You can now mantle over solid actors.
- D.E.R.P.s no longer react to sound.
- Monsters now target bot replacers.
- Cyberdemon can no longer be passed through while it is staggering dead but unexploded.
- BFG final lightning bolts were still green in Freedoom.
- Backpack would not update while selected when you dropped an item.
- The old NPC username generation being based on David's mighty warriors resulted in names that were needlessly gendered and potentially misinterpretable as an endorsement of the State of Israel. The base list has been replaced with fearsome critters and cryptids.
- Crashes/VM aborts:
23039for rifle goons.
- Negative meleethreshold means the monster will try to get outside of that range before doing a ranged attack. (It may forget sometimes.)
- Tossing items now respects pitch and velocity.
- You can now crouch in midair. This helps you get a rolling land after a long fall.
- Finally added Emmy's circular scopes.
- Flame and technospider walking sounds.
- Pistol aiming now affected by loaded rounds.
- Punching Nazis is good.
- Fire/altfire while holding zoom in the item manager now increments/decrements the drop amount by 1.
hd_debugis no longer archived.
- Massive overhaul of the monster look/chase/wander and attack decisionmaking process. Monsters should behave and move more naturally, or at least a little more analogously to the playerpawn. It's like public server PvP, but with all the misogyny, homophobia and racism replaced with inarticulate grunting!
- Moved the rolling check to the ticker instead of move thinker.
- All items now have a DrawHudStuff() function for things like the armour display and confirming that you have the radsuit on.
- Changed the archvile hellfire attack again.
- Thunder Buster rangefinder is now always on.
- Rocket launcher zoomed view also has a rangefinder. The airburst counter is now white.
released this 3 months ago | 880 commits to main since this release
- Anything relying on HDPlayerPawn.CheckStrip(). The new version uses the individual inventory actor being checked against instead of the target tier number. If you want the caller to strip down to as little as possible, refer to the caller in this parameter instead of an item.
- Yes, this is four point five point oh see. 4.6.0 has an issue that I'm not sure how it will ultimately be resolved.
So thanks to this camera issue I'm leaving us totally stuck in the retro zone. Sadface.(To clarify, it'll run just fine on 4.6.0, I just haven't fixed this bug nor taken any advantage of features not found in 4.5.0.)
- No crashes were fixed this release that hadn't introduced after the last.
- Backpack loadout code would ignore all subsequent items if an invalid item code was specified.
- SMG had no option to specify an all-modes switch. It is now set to 4.
- An unsealed, refilled mag loaded into then unloaded from a ZM66 would be counted as empty.
- NPC marines got some much-needed maintenance.
- Riflemen were firing even after their bursts were over and they should have been aborting their shots.
- Similarly, riflemen's spent mag logic was not being updated correctly resulting in additional mags being dropped.
- Voice type selection was based on the old he/she/it system and no it option allowed. A full set of sound definitions is now available for all four genders.
- Thrown weapons did not clear their tracer, damaging a victim again even after bouncing off of only wall geometry.
- Holding Jump while crouched caused an endless loop of rapid half-squatting instead of just standing up like in regular GZDoom.
- Killer barrels weren't aiming vertically and didn't have a valid pain sound in Doom1.
- Massive overhaul of the ladder system from Emmy which should take care of more hovering-player cases.
- H.E.R.P.s weren't registering dirty mags as dirty.
- Player can now slide (and roll) while berserk.
- Numerous fixes to the backpack refactor.
- The id zombie/shotgunguy/player standing/shooting sprites are now aligned with the head.
- Boss HUD now shows loose rounds as well as clips.
- Medikit readings of NPCs now cap health percentages based on body damage.
- Respawning with a weapon in hand flagged +wimpy_weapon will now cause you to immediately switch to fist.
- Finally got weapon smoke to follow player pitch.
- D.E.R.P. in any mode would continue shooting automatically if you shot at a valid target while remote piloting it. This behaviour is now disabled in ambush mode.
- New user command
netevent herp/derphack. Set up an active remote connection by deploying your own *ERP robot and bring up the control interface. (If you're doing this with HERPs the selected HERP must be shut off.) Get within range of the target robot(s) and type the relevant herp/derp command into the console. After a few tries you should be able to connect to and control the captured device.
- New user cvar
hd_monstervoicepitch(true): This enables the individualized vocal pitches for the monsters; set to false to play all monster sounds consistently.
- New user commands
give forwardroll <number>) for rolling.
- New incapacitation ability: if you're facing a wall, object or teammate high enough to climb and lean on, you can get back up even if you're ostensibly incapacitated.
- New falling damage ability: if your horizontal movement is sufficient on impact, you will mitigate your fall damage by rolling forwards.
- You can roll voluntarily as well, by using the above commands or by looking down and moving your view downwards just as you start doing a crouch-dive forwards (or looking up/moving upwards/diving backwards - either way, look, then move the mouse and hit the crouch button at the same time).
- Some very limited walljumping, mostly to let you kick off a wall you're falling off the side of in order to do a roll.
- Spiritual armour now causes damage inflictors to bleed.
- If you overload a backpack in your loadout, the excess items will begin spilling out when you open it.
- New penetration effects for the H.E.A.T. rocket.
- Lumberjack now displays a bar showing the integrity of any destructible wall geometry you're attacking.
- New sound definition for dropping a blursphere.
- Individually varied voice pitches for some monsters.
- New user command
- You can now put on a radsuit despite full pockets, just like armour. (NB: if you want to try this out, please keep in mind IDFA and "give ammo" also give you the backpack which will get in the way.)
- Skill levels no longer affect encumbrance.
- Fire duration once set is also no longer affected, but the lowest skill setting still doubles your cooldown rate.
- Modularized the armour system. Now you can create custom armours with unique ways of handling damage!
- The consequential changes needed to get shields working under this new system have resulted in a significant rebalancing (read: unbalancing). No guarantee that anything's good or bad.
- Modularized the wearable item layer system. This should have no perceptible difference outside of modding.
- Modularized the item overlay system. Again, this should have no perceptible difference outside of modding.
- Added a BeforePockets virtual to HDPickup which happens just before you are about to put an item in your backpack or inventory. If it returns true, the pocketing/backpacking part of the pickup is aborted. This replaces the hard-coded behaviour of putting on the armour and radsuit.
- Backpack interface item icons now use the inventory actor's scale property.
- Created generic method of alerting while chasing. It can be enabled with the +HDMMOBBASE.CHASEALERT flag. It is skipped when there are 1024 or more monsters on the map.
- "Jointlock" damage type can now be used to bypass shields and armour.
- Narrowed the headshot part of the humanoid hitbox slightly.
- Some aesthetic changes to the blursphere.
- The mortal remains of François Alcasan, copied in quadriplicate, are now the thing you shoot to get out of Doom2 Map32.
released this 6 months ago | 1295 commits to main since this release
- Going forward all code is GPL, in order to comply with the terms of GZDoom's own ZScript on which a lot of HD stuff is based. Everything else, including all documentation that's meant to be read by players who have no intention of modding, is as before.
- HDPickup.ActualPickup() now has a "silent" parameter that will need to be added in overrides.
- Shields are redone. Instead of a "shields" stat everything uses an "HDMagicShield" item.
- Rare null pointer in blursphere levelup where a victim could be destroyed and then selected again for additional damage.
- HDWeapon DisplayAmount() needed to use the actualamount variable rather than the literal amount which should always be 1.
- Many items were still not triggering specials on pickup. All inventory/HDUPK special triggering is now consolidated under the grabber function.
- The stuck-wander safeguard now temporarily also gives the actor +float so that a non-flyer can unstick itself even if it's not on the ground.
- GrabThinker did not properly check for HDUPKs when checking for the +ALWAYSPICKUP flag.
- Calling GrabThinker.Grab() on a key directly would destroy it.
- Bullets in the sky ignored terminal velocity.
- Various monsters would not check for body damage on raise. This check is now centralized in HDMobBase rather than requiring each monster raise state to do it explicitly.
- Monsters destroyed by telefrag now receive an appropriate amount of body damage.
- Bullet "realpos" variable was being changed during trajectory calculations without a corresponding update to the literal real position, causing collision check failures at certain angles after passing too many lines.
- Slayer alt reload didn't work if the gun had been manually unloaded and not reloaded since.
- Trilobite balls were zapping anything within XY range without regard for height.
- Injectors were showing both internal actor name and tag in their help text.
hd_resetlivescommand to reset all death counts.
- loadoutconfigure() virtual for HDPickup analogous to weapons. Currently unused by anything in vanilla HD.
- Added Accensus' backpack refactor.
- Refactor of the entire shield system to be an inventory item, like heat, rather than a property of HDMobBase.
- Elimination mode now allows lives limits above 99. This brings the actual game into harmony with the manual which has always just said "fraglimit less 100".
- Persistent lives count now resets when you change the fraglimit.
- Armour carry limit now subject to encumbrance multiplier.
released this 9 months ago | 1431 commits to main since this release
- The repository has been moved to Codeberg! https://codeberg.org/mc776/hideousdestructor
- Renamed working branch from master to main.
- HDUPKs no longer automatically determine behaviour based on the existence of a "grab" state (now deprecated). The state will still be called automatically, but whether you get the actual pickup movement is determined by the result of the OnGrab() virtual (which now has equivalents in HDWeapon and HDPickup).
- Got rid of
misc/boxtrappedin favour of
ammobox/trappedand a few other specific ammobox definitions.
- Null pointer if a burning radsuit is destroyed just as you put it on.
- Reloaders were interacting with the owner pointer during ActualPickup in a way that would be ignored in some situations.
- Backpack now has special treatment for armour to ensure the correct bulk value is being counted.
- Vulcanette was not alerting.
- If the selected inventory item ceases to be selectable, the item selector would not draw the surrounding items.
- Heat taken away explicitly on player respawn.
- Liteamp bulk always assumed you were only carrying one.
- Technorantula shot spread was being applied to origin offset as well.
- IED kits now randomly spawn in place of shell pickups, now that they are no longer available from ammoboxes.
- One check for mags in the backpack's AddAmount function had reversed the logic of whether an item was present.
- The old injector duplication bug still happened with blood packs.
- Mob AI actors were given TID 123, which could easily be assigned for other purposes on maps. I have no idea what this was for, so that line has been commented out.
- Another attempt to fix player corpse heat transfer, this time in the playerpawn's Die function explicitly.
- One definite fix is that heat is now explicitly taken away in disintegrator mode.
- Removed "Read This!" and collapsed "HD Loadouts" and "HD Controls" into submenus of "HD Options" to get around GZDoom's new scaling.
- Lookscale was no longer sufficient to overcome raw-input interpolation jitter nonsense when adjusting zoom on scopes, etc., so an additional hack to change pitch by an imperceptible amount was added.
- Revolver never unbraced from shot like pistol.
- Boss rounds in-hand during individual loading would stay in the dropped Boss as a variable instead of being discarded by the player along with the gun.
- H.E.R.P. was losing botid on pickup.
- Necromancers can hurt each other again. Also they cannot spawn more than 10 putti at their own location without getting hurt in between.
- HD now contains a copy of Doom 2's SHT2E0 which overwrites the edit included in GZDoom 4.5's widescreen assets.
hd_persistentlivescvar. Set to true to make the lives counter persist between maps.
- Skins now have a "translate" property. Set to false to allow greens to show (and spies to hide) unhindered.
- Skins can now also set blood colour! Just use the regular actor
- GetBulletDecal() function that lets custom bullets do neat things with custom bullet hole decals. If you're not a modder this should make no difference.
- DisplayAmount() function in case you want the inventory selector to show a different number for certain items where the actual amount has always been up to this point. Currently only the backpack uses it, to display the gross bulk.
- Non-killer barrels sometimes spawn shards on death again.
- Slight delay in IED detonation for better target exposure when placed behind doors.
- *.E.R.P.s now display their botid in their status messages.
- New sound definitions for the ammo box.
- Increased overall monster attack chance.
- Medikits can now sometimes display a generic tag for an NPC instead of "UNKNOWN".
- Improved ladder code.
- Some mostly under-the-hood stuff that should help some modding situations:
- Yokai are now given their own sprite namespace instead of sharing with the blursphere.
- Door busting now uses level.CreateFloor/Ceiling rather than sector.MoveFloor/Ceiling.
- The fist's actor-grabbing function is now isolated in an HDWeapon subclass from which HDFist inherits.