Skip to content

Changelog December 15th 2023

Vuthakral edited this page Dec 15, 2023 · 1 revision
  • Internal: New function DRC:SideTrace(ent, distance), performs two traces to the left and right of an entity to check for anything within the distance
  • Internal: New function DRC:SetNWVar(ent, key, val), checks an entity for a valid "Set function" for the given key, and sets it to the value provided.
  • Internal: New function DRC:SetSpecialModels(player, table of models), adds models to the specified player's Draconic Menu. These do not need to be registered playermodels. Set table to nil to remove access.
  • Internal: Function DRC:SetRoleplayPlayermodels(player, table of playermodels) now supports giving a nil value for a table to clear models instead of using DRC:ClearRoleplayPlayermodels(player).
  • Internal: New function DRC:RegisterMaterialSounds("string name", table). Used to register impact sound profiles. Retrieve a sound based on a mat enum with:
  • Internal: New function DRC:GetMaterialSound("packname", MAT_ENUM). Returns a sound and its overlay (if one is defined) for a given material. Both this function & the one above will be detailed on the new wiki.
  • Internal: DRC:TraceDir(origin, dir, dist, ent) is now DRC:TraceDir(origin, dir, dist, ent, mask), allowing developers to set the mask of the trace. (User request)
  • Internal: DRC:CallGesture(ent, slot, ACT, autokill) is now DRC:CallGesture(ent, slot, ACT, autokill, fallback ACT). Intended for use with content that adds new animation calls to players, or requires a special one for NPCs where players can still use something. Allows defining of the intended activity call, while allowing a fallback to another if the intended one does not exist.
  • Internal: Added MAT_QUICKSAND to material registry. (where the hell did this one come from?)
  • Internal: Added MAT_HEDGEROW to material registry.
  • Internal: Added MAT_WOOD_BOX to material registry.
  • Internal: Added MAT_PLASTIC_BARREL_BUOYANT to material registry.
  • Internal: Added MAT_CANNISTER to material registry. (thank you Valve very cool)
  • Internal: Fix Draconic Thirdperson breaking if the base code is resaved after an edit on a running server.
  • Internal/Debug: Debug mode HUD now obeys cl_drawhud logic. (Uesr request)
  • Internal/Debug: New debug option "Hide shader fixes", used to hide material proxies for example purpose on assets which are employed by Draconic such as ReflectionTint and ScalingRimLight. (User request)
  • Debug: Upper-left corner debug text now scales with static values, fixing overlapping elements on lower resolutions & gapped on higher.
  • Debug: Added "Uptime" to upper-left corner debug text.
  • Internal/Footsteps: Found & fixed an issue where some static props do not have a valid surfaceprop, reading an enum of -1. These now internally default to "MAT_DEFAULT" for Draconic-related calls & report as "unreadable" for the debug trace UI.
  • Footsteps: Players with turning animations now play low-volume shuffling sounds when their turn-stepping animation plays.
  • Weapon Base: Tons of prediction fixes/additions across the board.
  • Weapon Base: Various bits of macro & micro-optimizations to core functionality.
  • Weapon Base: New function SWEP:PreCalcSpreadMain() -- Precalculates SWEP base spread from SWEP.Primary.Spread / SpreadDiv.
  • Weapon Base: New function SWEP:PreCalcSpreadAttachments() -- Precalculates SWEP spread modifier value from attachments.
  • Weapon Base: New function SWEP:PreCalcSpread() -- Shortcut that runs both above commands.
  • Weapon Base: New function SWEP:PlayAnim(ACT_ENUM, bool preventstuff, bool important), works within the base's animation system, allowing you to call any animation you need for your custom weapons. The secondary value is true/false, and is optional. If set to true it will prevent the player from taking other actions until the animation completes. The tertiary value is also optional, and defaults to false. Setting this to true will regard the animation call as "important", and not allow the weapon to play idle animations until the duration of this one has passed, but can still be interrupted by attacks or etc.
  • Weapon Base: Reworked all animation calls in the weapon base to utilize the new function mentioned above, paired with prediction fixes this removes almost all visual jank / broken animation loops from the weapon base.
  • Weapon Base: Added support for poseparameter walking animations. Simply have your idle animation be a blend of two animations, anim 1 the idle and anim 2 the walk, with both animations being the same frame length, with a blend of drc_movement 0 1
  • Weapon Base: ^ Similarly to above, there is now drc_move_x -1 1 & drc_move_y -1 1 for if the asset you are creating/porting is animated with individual movement directions.
  • Weapon Base: ACT_JUMP has finally been plugged into the animation loop for viewmodels.
  • Weapon Base: Added function validity checks for health & armour altering code in the weapon base, fixing the usability for NPCs with weapons equipped that normally drain or add health/armour to their user.
  • Weapon Base: Completely rewrote the movement speed & jump height system for weapons. It is finally no longer a Yanderedev-approved 10-page if elseif nightmare and is instead a proper system.
  • Weapon Base: New function SWEP:SetThirdpersonFreelookForced(true/false), forces thirdperson free-look camera while set to true. Set to false to disable. (Requires either the weapon to be thirdperson-only to begin with, or the player to have draconic thirdperson enabled.)
  • Weapon Base - Guns: Added new setting SWEP.Primary.MeleeActTP -- nil by default, and will automatically set to a holdtype-relative melee animation for third person if left this way. This allows weapon authors to change which ACT a player should play when melee attacking with a specific gun.
  • Weapon Base - Guns: Rewrote burst firing functionality. It is now properly predicted and should behave as one would expect even in multiplayer.
  • Weapon Base - Melee: The fabled melee base rewrite. Functionally backwards compatible with all existing content ^^1, 2^^. Melee attacks are now predicted properly and use a properly shared function rather than hardcoded attacks, allowing developers to properly call swings out of thin air instead of having to modify the weapon values before calling an attack mode. (Note: While backwards compatibility is a truthful statement, some older content may see some lua errors due to custom lua function calls now being shared rather than server-only.)
  • Weapon Base - Melee: "Swing traces" have been replaced with actual source bullets, to facilitate prediction.
  • Weapon Base - Melee: Attacks now apply force relative to the direction of the attack rather than from the direction the player is facing.
  • Weapon Base - Guns: New lua function SWEP:DoGunMelee(). Force-triggers a melee attack from a gun.
  • Weapon Base - Guns: New setting SWEP.Primary.MeleeIsLunge = true/false (default: false). Whether or not the gun's melee attack is lunge-capable.
  • Weapon Base - Guns: New setting SWEP.Primary.MeleeLungeMaxDist, see above.
  • Weapon Base - Guns: New settings SWEP.Primary.MeleeLungeVelocity, see above. Requires valid target for lunge to work.
  • Thirdperson: Fixed camera snapping when going between directional movement holdtype to a locked/strafe movement holdtype.
  • Thirdperson: Camera now has interpolaton for vertical movement, preventing snapping motions on ledges.
  • Thirdperson: Camera no longer uses X/Y positions of the attachment point after receiving more than a few complaints of motion sickness, it just uses the player's horizontal positions instead.
  • Projectile Base: New function ENT:LuaExplodeCustom(<table of entities>) -- A function to let developers run code on entities within the radius of a projectile's lua-based explosion.
  • Projectile Base: New setting ENT.InheritDamageFromCreatorPrimary = true/false -- false by default. Makes it so the projectile entity will pull damage from SWEP.Primary.Damage instead of from itself.
  • Projectile Base: New setting ENT.InheritDamageFromCreatorSecondary = true/false -- false by default. Makes it so the projectile entity will pull damage from SWEP.Secondary.Damage instead of from itself.
  • Material Proxies: Fully added & finished all shipping-intended features for the drc_Function matproxy. This is a material proxy which will let developers create all kinds of effects purely with VMT code by reading variable information from the entity. See the wiki for more information.
  • Material Proxies: Added $energy_min to the drc_EnergyColour material proxy. Defaults to a vector of 0, 0, 0. Useful for adding lights to playermodels that should not be able to be disabled.
  • Material Proxies: Fixed rendering of cubemaps with ReflectionTint on preview entities.
  • Material Proxies: Added new material proxy $drc_PlayerGrunge. New customization feature which allows developers to create a range for "wear & tear" effects.
  • Other: Added Wear & Tear slider to "Draconic Colour" toolgun.

(1) Melee hitsounds are not backwards compatible with the new system which allows material-specific definitions.

(2) While all old melee weapons still functionally work, older content may have differing behaviour from hit/miss delay functionality difference due to prediction.

Clone this wiki locally