Skip to content

Changelog January 22nd 2023

Vuthakral edited this page Jan 23, 2023 · 1 revision
  • Internal: A ton of small & large optimizations across the board (internal, weapon base, etc) that would result in a changelog larger than the rest of everything below this note. If you actually care to know them all just go check the comparisons on the commit. Major optimizations will still be listed below.
  • Internal: Combined a few "similarly-regioned" scripts into single files to cut down on the total number of lua scripts the base runs on.
  • Internal: Made the default crosshair actually align to where the player is aiming while in thirdperson or using experimental first person.
  • Internal: Made the DRC EMP function able to short-circuit combine mines and render them inoperable. (Though they still make for a good gravity gun projectile)
  • Internal: Fixed an oversight in the DRC:GetColours function which was returning the wrong channel in place of the "Eye" channel.
  • Internal: DRC:ThirdPersonEnabled(<player>) now returns true if the PAC editor is open.
  • Internal: DRC:GetBaseName(<entity>) can now return "lvs"
  • Internal: DRC:EMP() now works for LVS vehicles.
  • Internal: Fixed lua errors that could occur from DRC:EMP() if the entity was no longer valid (removed/destroyed) when the EMP duration ends.
  • Internal: Added an IsValid check to the DRC_UpdatePlayermodel net message on the client-end, preventing an error which can occur if a client's game is paused (frozen or tabbed out from fullscreen) when the message is called and the player it should have been applied to is dead or disconnected by the time the client unpauses.
  • Internal: DRC:GetVelocityAngle()'s 2nd and 3rd args now default to false.
  • Internal: DRC:GetVelocityAngle() now functions like it actually should.
  • Internal: Players now have the NWString "DRC_SpawnModel" -- This will be automatically updated to be the model path string of the model they spawn as / most recently set with the Draconic Menu. Updates one tick after respawning, so it shouldn't cause any false-sets by weirdly coded addons or gamemodes. Intended for use cases where the player's model needs to be restored after a change.
  • Internal: Added lua function DRC:GetBodyGroups(entity) -- returns a table of the entity's current bodygroups by index, since for some reason that isn't a base-game function.
  • Internal/Menu: Rewrote bodygroup update to utilize the new function from above changenote, fixing bodygroup changes on models with more bodygroups than normally allowed by standard compilers.
  • Internal/Menu: "Apply Changes" button now also updates base-game Garry's Mod player/weapon colours.
  • Internal/Weapon Base: Fixed lowered crosshair mode for melee weapons.
  • Internal/Weapon Base: Changed the included simplistic scope mask to a png file and updated the default ScopeMat in the weapon base.
  • Internal/VoiceSets: Added lua function DRC:SetVoiceSet(entity, <string> voiceset id, <bool> enforced) -- Used for outside addons to easily change an entity's active VoiceSet. Arg 1 is the entity or player, 2 the VS ID, and 3 is a true/false option for if the change is enforced. If arg 3 is set to true, it will prevent the player from changing their VoiceSet until they respawn. Intended for use on gamemodes or servers with custom code on player spawn as to enforce a voiceset for a player class, role, or etc. Subsequent calls of this function can still override the enforced VoiceSet.
  • Menu: Added a new subtab to the Settings tab, "Experimental Settings", which is home to WIP personal projects as well as WIP features which I'm not comfortable integrating fully into the base because they are either unfinished or need feedback.
  • Menu: Moved a couple client settings downwards into a new section subtitled "User Preferences".
  • Menu: Implemented a max distance the playermodel preview can be moved to after I was informed it could be used on exploited clients to trick a server into thinking their view was somewhere it was not.
  • Menu: Added a podium floor system to the playermodel preview window, this defaults to a transparent glass floor as to not be intrusive. See the new "Draconic Playermodel Registry" wiki page for information on how to set up your own podium models, image backgrounds, and more.
  • Menu: Removed "Local light level" from the Debug Information subtab, since it's covered by the debug mode's default HUD.
  • Menu: Made the "Extra" tab function off of subtabs now. Currently this is split between "Spray Settings" & "VoiceSet".
  • Menu: Completely remade the VoiceSets settings menu for its new tab. The new menu sports a much cleaner scrollbar approach for the VS list, a toggle for playermodel-bound voices (see voicesets changelogs furhter down), as well as a small FAQ on the right-hand side.
  • Menu: Cleaned the "Saved Avatars" menu to be a lot easier on the eyes. Made the buttons thinner & longer, removed the colour preview blobs and instead made the model name occupy the right half of the space.
  • Menu: Changed the "Copy model path" button to now be "Copy model information". The button now sets the clipboad text to a newline-formatted list for the model path, playermodel name, c_arm path, and voiceset tied to the model (if it has one).
  • Thirdperson: Thirdperson functionality now cancels if the player is in the PAC editor, preventing all movement inputs from only pushing the player forward.
  • Thirdperson/Weapon Base: Added new setting: SWEP.ThirdpersonNoFreelook = true/false -- Used to prevent freelook from becoming active while set to true.
  • Weapon Base: Fixed internal variable SWEP.VMCycle, which was the cause of a fair bit of glitchy-looking animations. The problem was that calling the function GetCycle() inside of Think was calling it three times, and for some reason the first one would always return 0 regardless of the actual cycle. This was fixed by just adding a realtime check so it only runs once at the end of the frame, preventing bad information from being returned.
  • Weapon Base: Fixed an issue which was causing weapons to consume ammo from the player's inventory when firing the final round in a magazine.
  • Weapon Base: Fixed an issue with some melee weapons not playing animations in first person while on servers.
  • Weapon Base: ^ Rewrote how melee attacks are done entirely, condensing the whole thing to two shared functions and overall making it a ton more performant than the previous implementation.
  • Weapon Base: Made dynamic angle calculations actually calculate in a CalcViewModelView hook instead of on the weapon, which should hopefully prevent any more janky scripted movement on low tick or lagging servers.
  • Weapon Base: Added a velocity-based smoother for first person movement effects (i.e. rolling) to make adjustments feel more natural.
  • Weapon Base: Added function SWEP:GetWeaponAttachment(<string> attachment name). Returns the appropriate pos/ang of an attachment for either first or third-person as-needed.
  • Weapon Base: Added setting SWEP.DoNotDrop = true/false, defaulted to false. "Pickup Only" weapons now drop by default when the player holding one dies. Set this to true to prevent this behaviour and make it despawn on death like normal.
  • Weapon Base: Melee base now supports the following custom calls: DoCustomPrimary, DoCustomSecondary, DoCustomPrimaryAttack, and DoCustomSecondaryAttack. The first two are called whenever primary/secondary are pressed, the second two are called whenever a traditional primary/secondary attack is successfully triggered.
  • Weapon Base: The function SWEP:DoMeleeSwing(mode) is now SWEP:DoMeleeSwing(mode, flipX, flipY, PreventAnim). Setting either of the first two new arguments to true will flip the Start & End X/Y values for the swing. The third new arg is used to prevent animations in both first & thirdperson from playing for this swing. Intended for use for custom scripting of multiple or chained swing animations.
  • Weapon Base: The popup message for pickup/swapping is now just solid white, rather than using the player's Energy colour, as the inconsistency was rather annoying.
  • Weapon Base: The popup message for pickup/swapping now formats properly across most resolutions.
  • Weapon Base: Fixed DoCustomPrimaryAttackEvents() & Secondary being called twice specifically while in singleplayer.
  • Weapon Base: Fixed DoCustomPrimaryAttackEvents() & Secondary not being called when fired on the last round in a weapon's magazine.
  • Weapon Base/Inspection Menu: Fixed a typo for internal code settings. The base automatically converts the typo of the old version to the new value, no need to worry about old weapons breaking.
  • Weapon Base: Players with the activity ACT_VM_IRECOIL2 defined will now utilize it for overheat animations. This is added by the addon "Extended Player Animations".
  • Inspection Menu: Fixed a scaling issue with the weapon name/info name. Vertical scaling is now exact.
  • Ammo Station Base: Ammo stations with health now set their max health as well as their health on initialization.
  • Ammo Station Base: Ammo stations which are explosive now properly set velocity on players & NPCs
  • Playermodel Extensions: Added new function DRC:RegisterPlayerModel(<table>) (See "Playermodel Registration" wiki page for usage) -- Used to register playermodels with extended functionality / addon integration / DRC Menu backgrounds & podiums. Playermodels registered using this function still appear as expected in stock/other playermodel menus.
  • Playermodel Extensions: Added new function DRC:GetPlayerModelValue(name, val, subvalue) -- Used to pull a value from DRC playermodel registry for addon integration. Returns false for undefined/invalid settings.
  • Playermodel Extensions: Added new function DRC:RegisterPlayerExtension(model name, extension name, value, subvalue) -- Used to externally mark a value for a playermodel, by the playermodel's registry name (i.e. models/player/combine_soldier.mdl's name is soldier). Intended for use by gamemodes/servers/other addons to be able to add "flags" or "attributes" to specific playermodels which can they can utilize by using DRC:GetPlayerModelValue(<playermodel name>, "Extensions", <value>). Example usage of this function: DRC:RegisterPlayerExtension("soldier", "Extensions", , "IsCombine", true) will register the extension value "IsCombine" as true to this playermodel, allowing developers to create any kind of system which reads this setting, and for playermodel authors then-on to add their own support for it. Playermodels do not need to be registered with Draconic for this to work.
  • Playermodel Extensions: Added extension subvalue [Claws] = true/false. Used as an indicator for content creators that may need alternate animations/effects/sounds/etc given the circumstance of a playermodel. (Native setup: Draconic Base's "Unarmed" SWEP is set up to utilize this if the "Extended Player Animations" addon is installed & enabled.)
  • Playermodel Extensions: Pre-marked the built-in zombies to have the extension value Claws set to true.
  • Playermodel Extensions: Added support for a reaction animation to taking blast damage, tied to activity ACT_GESTURE_FLINCH_BLAST.
  • Experimental First Person: Fixed an issue where case-sensitivity would break EFP on certain weapons.
  • Experimental First Person/Menu: Moved EFP to the new "Experimental Settings" tab.
  • Material Proxies: Added new material proxy drc_Firemode. No settings needed. Tied to the frames of the $basetexture. Frame 0 is for safety, 1 semi, 2 burst, 3 auto. Currently supports Draconic & ArcCW.
  • Material Proxies: Added new material proxy drc_Flashlight. Uses similar settings to other colour-blend bool proxies, i.e. $colourmin / max. Scales a vector from the min to max based on the player's flashlight being enabled/disabled.
  • Material Proxies: Fixed the drc_Blink proxy in the Draconic Menu window, playermodels will no longer have their eyes permanently shut.
  • Material Proxies: Rewrote all colour-pulling lua to utilize a shared function which runs a hell of a lot better than whatever the fuck I wrote over a year ago, which works 100% in every context.
  • Material Proxies: ^ Including a complete rewrite to how the ReflectionTint proxies run internally. The new solution shares code between them all & runs way better. Users on older hardware may actually notice an increase in performance.
  • Material Proxies: ^ Above note also means that this fixes display of reflection tint proxies in the Draconic Menu's playermodel preview window.
  • Material Proxies: Made the ReflectionTint proxies automatically fall back to set $envmaptint if not defined, meaning these proxies can now just be referenced in a vmt with drc_ReflectionTint{} or similar.
  • Material Proxies: All colour-pulling material proxies now support $colourmul
  • Material Proxies: drc_HealthBlend now supports multiple outputs by utilizing resultVar, resultVar2 & resultVar3.
  • Material Proxies: drc_HealthBlend now utilizes the Draconic Health polling function, enabling it to be compatible with almost all content/bases in the game.
  • Material Proxies: Added the funny. (User request)
  • Unarmed SWEP: Remade the animations of this weapon myself. As funny as the Apex punches were, I would vastly prefer only my own original content in the base.
  • Unarmed SWEP: Fixed the first person leg model showing in thirdperson for the local player.
  • Unarmed SWEP: Added support for playing kicking animations in thirdperson if the addon "Extended Player Animations" is enabled.
  • Unarmed SWEP: Added support for playing claw swipes instead of punches if the player's model is flagged to utilize this, and the addon "Extended Player Animations" is enabled.
  • Unarmed SWEP: Added a "curbstomp" attack, activate the kick attack while on the ground & looking down far enough to perform this. If the addon "Extended Player Animations" is present, it will also play a curbstomp in thirdperson.
  • Unarmed SWEP: Switched swinging & impact sounds to base hl2 sounds since a lot less people have tf2/cs:go mounted nowadays.
  • Unarmed SWEP: Added a description for the inspection menu.
  • VoiceSets: Added a terminator to the menu binds when the player has no active VoiceSet, preventing it from preventing weapon swapping temporarily.
  • VoiceSets: Added "Playermodel VoiceSets" option. This allows VoiceSets to be assigned to a given playermodel via the Draconic registry, and players with this setting enabled will automatically be using the given model's VoiceSet. (User request)
  • VoiceSets: Added Actions subcalls pickup_generic and pickup_<classname>. Allows you to add generic weapon pickup lines, or entity-specific ones. (User request)
  • VoiceSets: Added serverside convar sv_drc_voicesets_noanimations -- When set to 1 it will prevent voiceset calls 1 & 2 from playing hand gesture animations. (User request)
  • Debug: Made it so "Draw viewmodel attachments" also works on melee-based weapons now.
  • Dev Related Misc: Added a bunch of 100 byte 2x2 images for common shader use. These are all found under models/vuthakral/, and they are as follows: black-0, black-50, black-100, grey63-0, etc, grey127-0, etc, grey192-0, etc, white-0, etc. The number before the dash indicates rgb greyscale when applicable, the number after indicates the transparency value where 0 is fully transparent and 100 is fully opaque. i.e. grey192-100 is a fully opaque image that is a solid rgb of 192, 192, 192.
Clone this wiki locally