GENERAL FIXES:
-Fog has been reenabled and problematic instances of it with improperly set fog densities in the main campaign have been fixed.
-WIP fix for the "standing on decoration instadeath" bug implemented: the issue is that the Landed(HitNormal) function in
Engine.Decoration causes any pawn that stands on top of a decoration and move it around to be warped OOB along with the decoration.
This is WIP and there are some janky physics bugs introduced when this function is not called (mostly stuff like you throw something
at someone or get thrown/dropped something and rather bouncing, it sticks there for a moment)
-You can no longer repeat the hand swipe animation by endlessly mashing the use key.
-Enemies now universally give ego when killed. In the case of the octabrain and pod protector, these enemies actually had egokillvalues
defined, they just lacked coding to add ego to the player when killed. They were intended to give the player, respectively, 8 and 3
ego points.
As for the other enemies, turrets and dogs give 5, adult snatchers, alien pigs and bellowsaurs give 8, and eggpods give 3.
(The newly added Tesla Raptors also give 8).
-Going to another level via teleporter will no longer give you more primary ammo for your guns.

WEAPONS:

Freezer
-Can now freeze and shatter enemies.
-Autoreload bug has been fixed.
-Can no longer reload while main firing: This fixes the infinite freezer stream bug.
-Freezer reload is now interruptable.
-Altfire's improper ammo setting issue has been fixed.
-The altfire's icenuke now deals cold damage as intended.
-The altfire animation bug (it calling a nonexistent animation) has been fixed, and now it calls the intended reload animation
after altfiring.
-Altfire now uses the previously unused Ice Cannister model for the nuke.
-Altfire now has a shrunk variant.
-Freezer ammo pickups now use the Ice Cannister model, and display as "Ice Cannister" on the HUD instead of "Freezer Ammo Thing".
-Píckups in general will now display the (WIP) Freezer icon.
-Can now shatter frozen enemies by bumping into them, triggering a DN3D style execution which gives an extra ego boost, ala LOTB.
-Overlapping HUD info bug fixed.
-New sound effects implemented for the gun.
-Main fire now does 5 dmg instead of 3.
-Freeze stream is a bit faster and covers more distance, bringing it more up to par with the Flamethrower.
-Added proper Third Person animations.

Chainsaw
Restored disabled 3DR script, this means:
-Chainsaw now has working sounds.
-Chainsaw now does a LOT more damage and fires constantly.
-The ChewItUp function now works. This function replaces the normal attack animation with a grinding one when you hit anything.
-Can now turn on/off the chainsaw engine with alt fire, as originally intended.

Outside of that, the following has been added.
-Blood hit effects and effects for hitting the environment have been added.
-Fixed deactivating the chainsaw when the engine was turned off (previously it didn't allow you to change weapons)
-Fixed the chainsaw's chewitup not turning to false when it wasn't hitting anything (kind of a hack though and could be improved)
-Fixed activation state for MP as a client.
-Made the engine turn off when you swap weapons - it's unclear if the idea was that you'd have to keep track of whether the saw was
on or off before you swap weapons lest you waste all your fuel, or if they simply forgot to put code to turn off the engine when you
swap weapons. The saw does play the CSawStop sound when you change weapons regardless of whether the engine is on or off by default,
and it always plays the activate seq where Duke turns on the chainsaw when you select the weapon.
-Replaced the sounds (except for CSawStop and Idle) with their original HD uncompressed sources.
-Added sound effects for the engine trouble start animation.
-Added proper Third Person animations.

Shrinker
-Fixed altfire looping animation issue.
-Fixed altfire not working at all in MP as a client.
-Can no longer reload while altfiring: this fixes the infinite shrinker stream bug.
-Added proper damage scaling for shrunk vs non shrunk, vice versa and shrunk vs shrunk.
-Added checks to prevent nonshrunk pawns from looting/picking up shrunk stuff and viceversa.
-New sound effects implemented for the gun.
-Added a shrunk variant of the main fire that does not shrink people. (slightly based off Choww's Shrinker projectile shrunk variant)
-Altfire will no longer shrink people if you are shrunk.
-Most enemies can now be shrunk (it's been turned off only for a select few cases where it didn't make sense, like Baby Snatchers
and Head Creepers)
-Shrink rate was increased from 0.3 to 0.6, to make shrinking not take so goddamn long.
-Fixed shrunk pawns not having their MaxStepHeight altered, which made them able to go over stuff they shouldn't while shrunk.
-Added unused T_ShrinkReload animation for Third Person reload.
-Fixed Duke being locked in place after a stomp: this requires elaborating on as it is way more fucked than you'd think.

The reason why Duke gets locked in place is that the ServerSmashTheGuy function has no check in place if the victim pawn were to
die before the rest of the function gets carried out, so it does nothing. A check has been added in so this is no longer the case,
it'll unlock Duke's input if the victim pawn somehow were to die before this function was fully carried out.
However, the reason this issue was so frequent in the vanilla build was due to the fact that the game has a check in BaseChange (Pawn)
where if a pawn gets on top of a shrunk pawn (this is regardless of whether the pawn that gets on top is shrunk or not),
this pawn will instantly die - the problem here is twofold. First, you need to bump a pawn in order to trigger the stomping,
two and more importantly is that the collision height gets vastly reduced when shrunk, meaning you'll always get on top of a pawn
and trigger this instadeath check, which tended to lead to the aforementioned issue. This also lead to the visual jank of the pawn
dying long before Duke actually stomped them.

The following fixes deal with the above issues.
-Collision height is now reduced to 25.1 - this is a jank fix but it effectively prevents Duke from getting on top of any enemy
(Duke's maxstepheight is 25)
-Checks were modified to BaseChange in Pawn so the instadeath situation only happens if it's a non shrunk pawn getting on top of a
shrunken pawn. Shrunk pawns can no longer kill each other if they get on top of each other, instead they'll bounce off just like
what happens if a non shrunk pawn jumps on top of a non shrunk pawn.

Lasermine:
-Detonate function call disabled on Touch() - this fixes a fuckton of exploits regarding blowing up shielded mines by either using
explosives on them, or just shooting at them and having the debris set them off (most notably seen in Stratosfear Shaft).
This also restores the actual intended behavior of the EMPs on the mines: they do not blow up when touched by an EMP. Instead,
cloaked mines will temporarily turn visible before recloaking, while shielded mines will have their shields temporarily be disabled,
allowing them to be destroyed. (Shielded mines were intended to only be destructible if a pawn set them off or an EMP disabled their
shields - however the former doesn't seem to have always been the case, refer to the BUGS txt file)

Flamethrower:
-MP Clients can no longer altfire/switch modes while firing: this fixes an infinite flamethrower stream bug that could only be done
as a client on MP. (This exploit also wasn't possible in SP, for the record)

Multibomb:
-Pipebomb fire now has the bomb actually roll on the ground and be able to be picked up. It will also now bounce off walls and
pawns too.

Shotgun:
-Check has been added to scale damage if an enemy uses it.

M16:
-Fixed Altfire exploit by disabling interrupt fire.
-Fixed Third Person reload anims.

Pistol:
-Fixed Third Person reload anims.

ITEMS:
Jetpack:
-Fixed fuel regeneration when turned off. It now regens like it did in Aug. 2001.
-Removed the Destroy() command if you ran out of fuel - the Jetpack regens, it doesn't make any sense for the game to remove the
Jetpack if you accidentally ran out of fuel while using it.

Riot Shield:
-Fixed being able to bring up the shield while firing: this fixes a boatload of animation cancel related exploits like quick firing
RPGs, and infinite Freezer/Shrinker/Flamethrower stream bugs. Only guns that have interruptable fire can bring up the shield now
while firing.
-Fixed being able to bring up the shield while reloading: this fixes instantly reloading any weapon. Only guns that have
interruptable reloads can bring up the shield now while reloading.

Atomic Health: (new item type)
-Works the same way it does in DN3D.

SOS:
ElectroMagnetic Pulse
-Lifespan of dnEMPShockBeamA has been shortened from 1.10 to 1.05: this fully fixes all crashes related to the EMPulse entity.

ENEMIES:

Octabrain:
-Dying underwater and falling into water in its dying state fixed. The octabrain will now die properly.
-ShrinkBlast ability implemented: Octabrains were meant to be able to shrink the player and had a whole set of animations related to this.
-BrainBlast now does 35 dmg instead of just using the default dnRocket damage value (100).

Terminator: (or EDFHeavyWeps for the nerds)
-Fixed crash when killing them without destroying their miniguns (this was due to the game trying to spin nonexistent miniguns, as
they are immediately destroyed when the Terminator dies)
-Since they spawned the EMPulse entity when they groundpounded, the aforementioned fix for it also fixes potential crashes tied to their
ground pound ability.
-Fixed muzzle flash for the right hand minigun: the mount rotation it used was accidentally set to the left gun mount.
-Fixed EMPing them not working right while they were firing their miniguns. (They didn't go to sleep properly, they kept firing
their guns)
-Fixed not being able to EMP them again after they were hit by an EMP and recovered.
-Fixed destroying their guns while they were EMPed. (They originally instantly woke up but also not really, as they were still
technically "sleeping")
-Fixed them staying in their sleeping/EMP state forever after they got EMPed for a second time.
-Fixed EMPed death animation not triggering unless it was their second EMP.
-Fixed crawling state, they can no longer walk, nor can they do the ground pound attack.
-Reimplemented disabled coding from a disabled tick function, this fixes a good chunk of the shocking state and adds a random spark
effect for emp'd terminators, and crippled terminators.
-Fixed turning of the shocking state.

Grunt:
-Expanded the class to allow the usage of Freezer, Flamethrower, and RPG. All 3 states are based off AttackM16 as a placeholder.

EDF Freezer:
-Now expands off Grunt, and has a functional Freezer.

EDF Pyro: (new enemy type)
-Expands off Grunt, and has a functional Flamethrower.

EDF RPG: (new enemy type)
-Expands off Grunt, and has a functional RPG. This uses the EDFRocket projectile, as the RPG is coded to use that if EDF soldiers
are wielding it (per the RPG's own code and comments, although the actual code is just a playerpawn check, but still)
-EDFRocket has been modified so it deals 40 dmg instead of 100 to make it more balanced.

Alien Pig:
-Now has 300 health instead of 800.

LizardTrooper: (POC!)
-Completely overhauled (based off Adult Snatcher AI and heavily modified) to resemble their DN3D counterparts.
-Added HD sounds from the DN3D HD sound pack (credits to the team behind that pack, you did God's work)
-Added a TrooperLaser dnRocket that only they use, atm it uses the BrainBlast projectile graphics as a placeholder.

Pigcop:
-Now expands off Grunt and properly uses a shotgun.
-Added HD DN3D sounds from the DN3D HD Sounds pack.
-Uses tentacle attacks as a placeholder melee attack.

Tesla Raptor: (POC!, new enemy type)
-Based off Adult Snatcher AI but heavily modified.
-Uses unused dnElectricalBlast_A for its projectile attack.
-Uses Terminator beam attack for its beam attack complete with backported fixes.
-Has a quick melee attack that uses the attackshort animation.
-No sounds implemented, and since the raptor has no death or pain animation by default, none are played.

Adult Snatcher:
-Disabled OnEvalBones from SnatcherAdultCarcass, seems to have been a debug thing that was killing framerate like a motherfucker.

Bellowsaur:
-Can now be immolated.
-If it can't find the best path towards an enemy/there's no pathfinding nodes, the Bellowsaur will no longer idle by, it will
chase Duke down and attack him. (P.S. goes without saying that you shouldn't rely on this for general Bellowsaur behavior, use
pathfinding nodes wherever possible, this is more of an edge case fix than anything else)