Skip to content

Releases: DrVrej/VJ-Base

v2.16.0c

29 Jan 22:45
Compare
Choose a tag to compare
  • Fixed 64-bit check causing false positive

v2.16.0b

29 Jan 21:30
Compare
Choose a tag to compare
  • Added check for 64-bit and Chromium Garry's Mod branches
  • When outdated version of Garry's Mod is being used, major parts of the base will now be disabled to avoid console errors
  • Updated Russian translations

v2.16.0 - Revamp

29 Jan 03:45
Compare
Choose a tag to compare

SHOWCASE VIDEO: https://www.youtube.com/watch?v=cxKFiM6zVuI
Danger Detection AI: https://www.youtube.com/watch?v=XuaMWPTe6rA
Eating AI Demo 1: https://www.youtube.com/watch?v=vWg_yg0QoSw
Eating AI Demo 2: https://www.youtube.com/watch?v=kRGzymEIe7k
Improved Hitboxes for NPCs: https://www.youtube.com/watch?v=J3ZQEaoz5ro
Player Animation Support For NPCs: https://www.youtube.com/watch?v=SLg5ods0Fw4
Weapon base update, secondary fire for players: https://www.youtube.com/watch?v=EFRvy0RdVgU
New NPC controller weapon, hammer I/O support, new spawnicons: https://www.youtube.com/watch?v=FfSN7gG9urU

VERSION: 2.16.0

New

  • Added the ability to toggle movement jumping when controlling an NPC by pressing the key "J"
  • Added a bone follower system for NPCs, its purpose to set specific collisions rather then a box (Ex: HL2 Strider)
  • Added stink system to corpses and gibs for organic type of NPCs (Effective and optimized!)
  • Added new damage bounds for all NPCs, allowing parts outside of the NPC's collision to be damaged and provide more precise hitgroups!
  • Added Hammer support for NPCs, allowing map makers to better control VJ NPCs through Hammer!
  • Added 2 new options to the NPC Spawner tool: "Relation Class Override" and "Friendly To Player Allies"
  • Added a new default test NPC: Player NPC
  • Added player secondary attacks for AR2, SMG1, SPAS-12, and Glock 17
  • Added custom view and world models for the NPC controller weapon with animations & sounds!
  • Added new spawn icons for all default NPCs, weapons and entities!
  • AI Changes:
    • Added danger system (details below)
    • Added following system (details below)
    • Added default player animation support for human NPCs
    • Added 0.15 second processing delay on spawn for all NPCs to give the engine enough time to fully initialize the NPC (This will fix couple of spawning issues)
    • NPCs will now hear bullet impacts, so if a bullet is fired from an unknown being, they will turn and look at the impact location
    • Now use Source engine NPC state and condition systems
    • Humans will now only find a hiding spot to reload their gun if the enemy is further than 650 units
    • Human jumping is a bit better and more realistic
    • Humans will now try to move to a random location if they fail to find cover from danger (Ex: grenade)
    • Humans will now keep their aim angle until fully transitioned to idle
    • Humans now detect HL1 grenades
    • Better gesture reloading system for humans
    • Humans no longer regard other NPCs or players as a hiding zone
    • Guarding NPCs will no longer be called to an ally's position that got damaged by something unknown
    • Guarding NPCs will no longer move to the position of a friendly NPC that got killed
    • Guarding human NPCs will now set a new guarding location automatically if it avoids friendly fire
    • Guarding human NPCs will now only move to a covered position if it's within 60 units and they will now automatically set the guarding location to the new covered position
    • MAJOR: Fixed NPCs refusing to chase the enemy after the enemy becomes reachable again if it was unreachable previously
    • MAJOR: Fixed NPCs getting stuck in a loop where they move and stop constantly while another ally is fighting an enemy
    • MAJOR: Fixed Default NPCs always choosing to target VJ NPCs over other default NPCs (They now share equal relations!)
    • MAJOR: Fixed humans not being able to fire their weapon in some situations, especially when using custom animation sets!
    • Fixed NPC not properly turning to look at an enemy player that is shining flashlight on it
    • Fixed humans setting the clip of a weapon to full when they switch between weapons (Clips number will now stay!)
    • Fixed human AI often breaking if its weapon was forced to change while playing a reload animation
    • Fixed humans that are moving to a covered reload position still playing the reload animation even though their weapon was changed
    • Fixed an issue that caused the NPC to continue engaging when its enemy is detected and reset within a 0.5 second
    • Fixed damage-driven parts of the AI running when AI is disabled or VJ_STATE_FREEZE is applied (Ex: Flinching)
    • Fixed human NPCs that don't have a weapon interrupting higher priority objectives in favor of running away (Melee attacking, jumping, following a player, etc.)
    • Fixed human NPCs without a weapon attempting to aim their gun when transitioning from combat to idle
    • Fixed temporarily interrupting follow player or medic behavior in favor of going to the location of an enemy that was lost (Not killed)
  • Added danger detection for human NPCs:
    • When a danger is detected, they will attempt to flee the area if they believe it is a danger to them
    • Developers can make the NPC play a unique sound similar to grenade detection
    • Works alongside the existing grenade detection
    • Tank NPCs now set danger hint in the location they are about to fire
    • Some of the things that are detected as danger (These are only some of the possible dangers!):
      • Tank shells, VJ combine ball and VJ SMG grenade
      • Props that are one fire, and props like barrels that are about to explode
      • Combine mine that is triggered and about to explode
      • The location that the Antlion Worker's spit is going to hit
      • Combine Flechette that is about to explode
      • Antlion Guard that is charging towards the NPC
      • Player that is driving a vehicle at high speed towards the NPC
      • Manhack that has opened its blades
      • Rollermine that is about to self-destruct
      • Combine Helicopter that is about to drop bombs or is firing a turret near the NPC
      • Combine Gunship's is about to fire its belly cannon near the NPC
      • Turret impact locations fired by Combine Gunships, or Combine Dropships, or Striders
      • The location that a Combine Dropship is going to deploy soldiers
      • Strider is moving on top of the NPC
      • The location that the Combine or HECU mortar is going to hit
      • SMG1 grenades that are flying close by
      • A Combine soldier that is rappelling on top of the NPC
      • Stalker's laser impact location
      • Combine APC that is driving towards the NPC
  • Added NPC Follower tool
  • Added new following system for NPCs:
    • Replaces the old player following system
    • Can now follow anything, even non-living objects like props!
    • Now accounts for NPC's size, so larger NPCs no longer attempt to come very close to their leader
    • Human NPCs will now stop and reload before continuing to follow
    • Will now stop to attack or do other activities if the leader isn't far away
    • Will now stop activities and attacks if the leader is very far
    • Much better custom developer support
  • Menu Updates:
    • New NPC settings: Disable NPCs Calling for Help, Disable Gib/Death VFX
    • Added Incompatible Addons button in the Contact & Support tab
    • Added a tutorial button in the Installed Plugins tab
    • Difficulty selector in the options menu is now ordered
    • Spawn menu NPC selector now recognizes NPC weapon categories
    • Removed: Disable Gib Decals, Disable Gib/Death Particles and Effects

General Changes & Improvements

  • Reduced file size from 113 MB to 84 MB!
  • Major optimizations were applied to the main parts of the base, expect performance increases!
  • Can now pick up flare rounds and wooden boards by pressing E
  • Wooden Board now receives damage force and has proper health (50 hp)
  • Better weapon handling when controlling a human NPC
  • VJ Corpses and gibs now have health based on their model
  • Default gib fade time is now 90 seconds
  • Weapon base now handles player animations much better (especially idle, reload and deploy animations)
  • Decreased the chance of NPCs using the secondary fire for the AR2
  • NPC Controller weapon now has a delay between each "fire"
  • Improved human NPC melee attacks:
    • Now deal knockback by default
    • Can now deal melee damage to more types of props and destructible objects
    • Player's screen shake is now based on the damage amount
    • Now properly sets the current damage type (Same one used by default HL2 humans)
    • Is now much more customizable for developers
  • Developers can now apply the bone angle to the player's camera when controlling an NPC
  • Improved duplicator behavior and console prints on VJ NPCs
  • Developers can now disable the NPC Controller HUD
  • Updated language localizations
  • Renamed Mortar Synth to Aerial NPC
  • Renamed convar vj_npc_sd_ongrenadesight to vj_npc_sd_ondangersight
  • Removed convars: vj_npc_nogibdecals, vj_npc_nogibdeathparticles

General Fixes

  • Fixed NPC pain sounds overlapping with other sounds
  • Fixed a player that is already controlling an NPC having the ability to control another NPC at the same time using the context menu option
  • Fixed NPCs that have stop-movement state applied being able to move while controlled by a player
  • Fixed damage force not applying to NPCs with single bone corpses (Ex: Combine Turret)
  • Fixed RPG setting a visible rocket before the player/NPC has actually set it
  • Fixed rare error with VJ Corpse system when attempting to fade out a corpse
  • Fixed console error when attempting to play a player footstep sound on an NPC

Notable Developer Changes

  • Added comments describing functions, tags and variables to major parts of the base
  • Added Entity Tag System:
    • Stored in the variable self.VJTags
    • Tags can be added using self:VJTags_Add(...)
    • List tag enums and other information can be found in autorun/vj_globals.lua
  • Added global functions: VJ_CreateBoneFollower(ent, mdl), VJ_AddCorpse(corpse), VJ_AddStinkyEnt(corpse, checkMat)
  • Added self.VJC_Player_DrawHUD to the NPC Controller
  • Added enums for attack type system: VJ_ATTACK_NONE, VJ_ATTACK_CUSTOM, VJ_ATTACK_MELEE, VJ_ATTACK_RANGE, `VJ...
Read more

v2.15.3b

16 Jan 22:25
Compare
Choose a tag to compare
  • Fixed a rare error that can occur with human NPCs when the tables self.AnimTbl_WeaponAim or self.AnimTbl_ScaredBehaviorStand are applied in the idle system.

v2.15.3

14 Jan 05:46
Compare
Choose a tag to compare

New

  • Added Combine Ball entity
  • AI Updates:
    • Added a alert to idle transition time (4 - 6 secs), effects of this are very apparent for human NPCs, they will keep their weapons aimed for a little bit!
    • Humans NPCs will now use their weapon aiming animation when they play an idle animation while alerted
    • monster_generic is now ignored by all NPCs

General Changes & Improvements

  • AR2 now has a secondary fire, allowing NPCs to fire a Combine Ball!
  • Completely redid the Confliction menu (Menu that popped up when another addon was overriding VJ Base)
  • Optimizations were applied to the weapon and projectile bases
  • Updated the plugins and contact/support menus with new button fonts, colors and minor fixes

General Fixes

  • Applied a potential fix for a new hook.Add bug that occurs 1 in like 999,999 times after the new GMod update
  • Fixed an error that occurs when a weapon is about to fired and it's removed
  • Fixed console errors when a non-human VJ NPC uses a VJ weapon

Notable Developer Changes

  • Added self:NPC_SecondaryFire_BeforeTimer(eneEnt, fireTime) to the weapon base
  • Added self.AlertedToIdleTime to the creature & human bases
  • Removed self.ParentsEnemy from projectile base

v2.15.2

26 Jul 22:11
Compare
Choose a tag to compare
  • Added language detection, if VJ Base is NOT set to a unique language, it will be overridden by whatever GMod's language is set to
  • Added complete Chinese (Simplified) translation! - Thanks to @Chenyijun220
  • Menu Changes:
    • New client option: Automatically Set Language
    • Removed weapon options Disable Muzzle Smoke and Disable Muzzle Heat Wave (They were unused)
  • Human NPCs with melee weapons will now use their aiming pose parameters (similar to ranged weapons)
  • Removed commands vj_wep_nomuszzlesmoke and vj_wep_nomuzzleheatwave
  • Fixed VJ melee weapons not dealing any damage

v2.15.1

18 Jul 01:15
Compare
Choose a tag to compare
  • Human NPCs will now remember if their secondary attack was interrupted and will have larger chance to fire it again!
  • New global function: VJ_RemoveAnimExtensions(ent, anim)
  • Improved VJ_IsCurrentAnimation
  • Fixed when controlling a human NPC, they don't fire their weapon
  • Fixed human NPCs cutting off their cover animation if the weapon is in burst mode
  • Fixed human NPCs not always properly playing their secondary weapon fire animation
  • Fixed human NPCs firing the secondary round even when their attack was interrupted
  • Fixed spawner creating errors if the NPC is set to spawn with default weapon(s) and it doesn't have any

v2.15.0

12 Jul 16:39
Compare
Choose a tag to compare

New

  • Added move frame velocity, object velocity, and sequence velocity to the NPC's corpse based on the NPC's current status, including death animations (Damage force is still added onto this velocity!)
  • Added localized bone velocity to NPC's corpses if it is a bullet damage!
  • Added more Source Hammer input support for the NPCs such changing health or starting an scripted scene
  • Added Source hammer output support to the NPCs (OnDamage, OnDeath, NPCKilled)
  • Added level transition support to the SNPC Bases (Including Half-Life 1 & 2 campaign!)
  • Added multi-damage type support for gib and flinch systems for NPCs!
    • DMG_ALWAYSGIB is now detected, causing the NPC to forcibly gib if possible (Disabled for bullets)
    • Base will now check for DMG_NEVERGIB, if detected, default types will be overridden and the NPC will NOT gib!
    • Removed DMG_AIRBOAT and DMG_DIRECT from the default gib list as it made no sense to have these gib NPCs
  • New AI Updates:
    • Added new AI: Player allied NPCs will now eventually become enemy if they witness the player killing x amount of allies (Default 3)
    • Added animation linking system, allowing a developer to smoothly link unlimited number of animations together
    • Added new behavior system for Tank NPCs --> If enemy is close then run over, if enemy is close but high up then move away to allow the gunner to fire, if enemy is very far then move towards it
    • Added weapon aiming animations for human NPCs (Def: ACT_IDLE_ANGRY), this helps lessen the issue of playing firing animations without firing
    • Added shell preparation system for Tank NPCs, allowing them to fire instantly if the shell is fully loaded, EX: If enemy hides and shell is reloaded & ready to fire, it will fire it as soon as it can
    • Aerial & Aquatic NPCs can now be follow players, be medics, respond to call-for-help, be used by the NPC Mover Tool, Move to an investigation sound, etc!
    • Aerial & Aquatic NPCs now accelerate and decelerate as they move to their destinations
    • Completely redid the AI for Aerial & Aquatic NPCs!
    • When a player collides with an NPC while ignore players is on, it no longer turns to look at the player's direction
    • Creature NPCs no longer attack props that had their collision disabled through the context menu
    • Sequences and idle animations now have walk frames!
    • Tanks are now drive much faster by default
    • Increased the default tank firing distance from 5,000 to 6,500
    • A human NPC that's being controlled with its weapon holstered, it will not play the firing animation
    • Human NPCs who were scared because they didn't have a weapon no longer go to the last enemy position after resetting their enemy
    • Animations are now seeded, which are accessed through self.CurAnimationSeed
    • All NPCs now ignore "monster_furniture" (Appears in HL1) and "npc_furniture" (Appears in HL2)
    • If a human NPC is set to a stationary, it will not attempt to look for a hidden spot
    • Fixed animation walk frames not applying if the previous animation was the same!
    • Fixed animations with delays still playing when cut-off before their play time executes (Fixed by using the new seeded system)
    • Fixed movement animations continue playing after aerial or aquatic NPC has stopped moving
    • Fixed aquatic NPCs that are outside of water trying to chance enemies that are in water
    • Fixed tank NPCs sometimes firing the shell in the opposite direction
    • Fixed if ignored entities were spawned before the NPC, the NPC would detect it!
    • Fixed humans creating the grenade entity at the wrong position, resulting in hitting itself, was very visible when throwing back an enemy grenade
    • Fixed humans that don't have a scared behavior nor a weapon freeze when they seen an enemy, they now at least play idle stand animation
    • Fixed humans not playing their scared idle stand animation
    • Fixed if NPC is following a player that left the game, it would create errors
    • Fixed medic/healing NPCs will often break their current animation or attack just to heal an ally
    • Fixed after allied NPCs become enemy to the player, they print "x no longer likes you" every time the player damages them after loosing sight
    • Fixed Aerial/Aquatic NPCs not properly playing their idle and attack animations
    • Potential fix for a rare AI-related error
  • New Idle Stand System:
    • When the idle stand table is changed and the current idle animation isn't in it, the base will now instantly change the idle animation!
    • Fixed when a custom animation plays while it's unable to reach the enemy, the animation would repeat 2-3 times before idle animation actually plays!
  • Added a box at the bottom left corner of the spawn menu:
    • Has a checkbox to disable AI, turn on ignore players, turn on collidable/keep corpses and spawn NPCs as guards
    • Weapon override option that includes ONLY VJ NPC weapons including the options "none" and "default weapon"
  • New Menu Changes:
    • Dev Settings:
      • Added Print Weapon-Related Information (vj_npc_dev_printwepinfo)
      • Removed print weapon, print accuracy, print ammo
    • Organized and reworded some of the settings & options
    • Removed "Show HUD Display on SNPC killed" option as it can potentially cause issues
  • Added Super Physcannon Support for NPCs:
    • Death animations no longer player
    • Weapons no longer spawn for humans
    • Fixed duplicate corpse spawning, now only the engine-created corpse will spawn

General Changes & Improvements

  • Weapons, items, and extra corpse pieces spawned by NPCs now have identical velocity as the NPC's corpse
  • When using the NPC mover tool, at least 1 NPC will now play "OnReceiveOrder" sound (If available)
  • Default HL1 & HL2 NPCs can now know when they killed a VJ NPC and will react to it
  • New activated/deactivated sounds for the bullseye entity
  • When a human NPC is killed by a combine ball, their weapon now acts properly by applying no gravity and proper velocity
  • Performance optimizations were applied in parts of the base, especially tank and weapon bases
  • NPCs now respect the damage type DMG_REMOVENORAGDOLL
  • Base will now check to make sure April 2021 or newer GMod update is installed as it uses many new features from it
  • Updated Russian translations
  • More parts of the base are now translatable
  • Removed convars: vj_npc_showhudonkilled, vj_npc_printammo, vj_npc_printweapon, vj_npc_printaccuracy

General Fixes

  • Fixed NPC Relationship tool not turning off self.PlayerFriendly when CLASS_PLAYER_ALLY is not set!
  • Fixed NPC bullseye taking damage after the new GMod update
  • Fixed NPC Spawner creating errors when spawning a non-NPC entity with a weapon table
  • Fixed bone-cracking sound not playing when a tank runs over an enemy
  • Fixed when players using VJ weapons that utilize the projectile base, they were unable to damage themselves if ignore players is on!
  • Fixed when using NPC controller on non-VJ NPCs, it spams a console error
  • Fixed a console notice on map spawn (Game trying to find a non-existent file)
  • Fixed a console error appearing when dev mode is enabled for the creature base

Notable Developer Changes

  • New global functions: VJ_ApplySpeedEffect(ent, speed, setTime)
  • Added list VJBASE_SPAWNABLE_NPC_WEAPON which holds VJ-only NPC weapons
  • Added client side convar, vj_npc_spawn_guard
  • Added tags: self.VJ_IsDetectableDanger, self.VJ_IsPickupableDanger
  • util.VJ_SphereDamage has been completely revamped with ton of fixes & optimizations!
  • Projectile Base:
    • Added self:CustomOnPreInitialize(), self:CustomOnDoDamage_Direct(data, phys, hitEnt)
    • Fixed self.HasStartupSounds not working
    • Removed: self.GetOwnerIndex, self.ShouldSetOwner
  • Spawner Base:
    • Added a chance system:
      • Adding : at the end of the entity name applies the chance system
      • System starts at 1, so :1 means that it always spawns, recommended to just not add :1 for entities that spawn very commonly, just leave the class name only
      • If no entity is left empty or set to :1, during randomization, the base will spawn the last NPC it checks!
      • Added self.HasSpawnEntitySound and self.EntitiesToSpawn.SpawnAngle
    • If a model is set through self.Model, it will now draw the model
    • Fixed when a table of weapons is used for a non-removing spawner, the NPC would constantly respawn with the same weapon
    • Fixed single spawners attempting to undo multiple times
    • self.EntitiesToSpawn.SpawnPosition is now optional
    • Changed self:CustomOnEntitySpawn(EntityName, SpawnPosition, Entities, TheEntity) to self:CustomOnEntitySpawn(ent, spawnKey, spawnTbl, initSpawn)
    • Cleaned up & optimized the code + Added comments for readability
    • Renamed self:CustomOnInitialize_BeforeNPCSpawn() to self:CustomOnInitialize()
    • Renamed self:CustomOnThink_BeforeAliveChecks() to self:CustomOnThink()
    • Removed EntityName from self.EntitiesToSpawn as it's no longer needed!
    • Removed self.NumberOfEntitiesToSpawn, self.AlreadyDoneVJBaseSpawnerDisabled, self.NextTimedSpawnT
  • SNPC Bases:
    • New: self.CurAnimationSeed, self.SavedDmgInfo, self:IsDefaultGibDamageType(dmgType), self:IsBusyWithBehavior(), self:IsBusy(), self:GetLastPosition(), self:GetLastDamageHitGroup(), self:GetLastDamageTime(), self:GetTotalDamageCount()
    • New AA: self.AA_GroundLimit, self.AA_MoveAccelerate, self.AA_MoveDecelerate, self.AA_CurrentMoveTime, self.AA_CurrentMoveType, self.AA_CurrentMovePos
    • New (Humans): self.AnimTbl_WeaponAim
    • Added parameter extraOptions.OnFinish() to the VJ_ACT_PLAYACTIVITY
    • Added parameter controlEnt to self:Controller_Initialize() and self:Controller_IntMsg()
    • Added parameters returnPos, and sides to self:VJ_CheckAllFourSides()
    • Added self:CustomOnKeyBindPressed(key) to the NPC Controller
    • `self.Gr...
Read more

v2.14.0

25 Jan 18:40
Compare
Choose a tag to compare

New

  • New AI Updates:
    • Can now hear other NPCs! They now react to sounds created by other NPCs! (Works the same way as it did with players)
    • Attacks are now seeded!
    • Attacks with multiple repetitions now support different animation speeds! (Playback rate)
    • Humans no longer back away if the enemy is defenseless - Ex: Civilian, passive animal (Tied to behavior VJ_BEHAVIOR_PASSIVE)
    • They no longer target Combine Turrets that are self-destructing
    • When humans are firing a secondary weapon attack, they now fire at the last hidden position
    • FIXED humans occasionally standing in place for 15-18 seconds after an interruption from their covered position!
    • Fixed when NPCs move back to open a door, they continue playing footstep sounds even though they are not moving
    • Fixed NPCs with leap attacks not properly aiming for the center of the enemy
    • Fixed humans not performing a diamond formation when moving to a hurt allies position
    • Fixed timer-based attacks not always properly stopping the attack when cut off by another animation
    • Fixed sometimes when an attack is cut off, the NPC is unable to preform that type of attack again
  • New Menu Changes:
    • Developer Menu Additions: print number of NPCs in the map, reload sounds, reload materials, reload textures, reload models, reload spawn menu
    • Redid the information menu, it now gives much better and important info and it's now properly organized
    • All clean up buttons are now controlled by a single command (vj_cleanup) and work much better in dedicated servers
    • Removed convars: vj_cleanup_all, vj_cleanup_snpcscorpse, vj_cleanup_snpcs, vj_cleanup_s_npcs, vj_cleanup_vjgibs, vj_cleanup_spawners, vj_cleanup_groundweapons, vj_cleanup_props, vj_cleanup_decals, vj_cleanup_playerammo, vj_cleanup_playerweapon

General Changes & Improvements

  • Updated muzzle flash particles for all weapons
  • Updated trail and explosion particles for RPG rocket, tank shell and grenade
  • Many optimizations were applied throughout the base and many old code has been cleaned up!
  • Number of Lua files has decreased by almost a dozen!
  • Updated and shortened the welcome message
  • VJ Test NPC is now admin only

General Fixes

  • Fixed weapons by default having secondary ammo, causing HUDs to think there is a secondary attack
  • Fixed tank NPCs missing a "running over" sound
  • Fixed a rare error appearing in multiplayer when a VJ NPC dies

Notable Developer Changes

  • New NPC State: VJ_STATE_ONLY_ANIMATION_NOATTACK
  • New NPC Weapon State: VJ_WEP_STATE_HOLSTERED
  • Removed the parameters stoplatestsound, sounddsp and added customFunc to VJ_CreateSound
  • Deglobalized NPC Functions (Now only exist for VJ NPCs): self:VJ_DecideSoundPitch(), self:DecideAttackTimer(), self:VJ_PlaySequence(), self:FaceCertainPosition(), self:FaceCertainEntity(), self:VJ_SetSchedule(), self:VJ_CheckAllFourSides(), self:VJ_ForwardIsHidingZone()
  • SNPC Bases:
    • Common functions are now inside a new folder lua/vj_base
    • New: self:GetSightDirection(), self.CurAttackSeed
    • New (Humans): self:CustomOnGrenadeAttack_ThrowVelocity(grEnt, grTargetPos), self:CustomOnGrenadeAttack_SpawnPosition(), self:CustomOn_PoseParameterLookingCode(pitch, yaw, roll)
    • New (Creatures): self.LeapAttackAngleRadius, self.AlreadyDoneLeapAttackJump
    • New client function: self:MatFootStepQCEvent(data)
    • Revamped self:CreateGibEntity() and self:CreateExtraDeathCorpse()
    • All AA move type functions have been renamed!
    • self:DoAddExtraAttackTimers(name, time, func) has been completely remade
    • All the *_BeforeStartTimer and *_AfterStartTimer attack functions now have a seed parameter
    • self.LeapAttackAnimationFaceEnemy can now accept 2 which sets it to face the enemy until it jumps and is now set by default!
    • self:CustomOnLeapAttackVelocityCode() can now accept true as a return to override the default velocity code
    • Renamed self:VJ_GetAllPoseParameters() to self:GetPoseParameters()
    • Renamed self:VJ_ReturnAngle() to self:GetFaceAngle()
    • Renamed self:DoFormation_Diamond() to self:DoGroupFormation(formType, ent, it, spacing)
    • Renamed self:CustomOnGrenadeAttack_BeforeThrowTime() to self:CustomOnGrenadeAttack_BeforeStartTimer()
    • Renamed self.UsesBoneAngle to self.DeathCorpseSetBoneAngles
    • Merged self.ExtraMeleeSoundPitch1 and self.ExtraMeleeSoundPitch2 to self.ExtraMeleeSoundPitch
    • Merged self.NextSoundTime_Alert1 and self.NextSoundTime_Alert2 to self.NextSoundTime_Alert
    • Merged self.NextSoundTime_Idle1 and self.NextSoundTime_Idle2 to self.NextSoundTime_Idle
    • Merged self.NextThrowGrenadeTime1 and self.NextThrowGrenadeTime2 to self.NextThrowGrenadeTime
    • Removed self.HasMeleeAttackDSPSound, just set self.MeleeAttackDSPSoundType to false to disable it
    • Removed: self:AlertSoundCode(), self:DeathSoundCode(), self:BeforeRangeAttackSoundCode(), self:VJ_HasActiveWeapon(), self.LeapAttackUseCustomVelocity, self.DoneLastHiddenZone_CanWander, self.GrenadeAttackVelUp1, self.GrenadeAttackVelUp2, self.GrenadeAttackVelForward1, self.GrenadeAttackVelForward2, self.GrenadeAttackVelRight1, self.GrenadeAttackVelRight2
  • Projectile Base:
    • Merged self.NextSoundTime_Idle1 and self.NextSoundTime_Idle2 to `self.NextSoundTime_Idle
    • Merged self.StartupSoundPitch1 and self.StartupSoundPitch2 to `self.StartupSoundPitch
    • Merged self.IdleSoundPitch1 and self.IdleSoundPitch2 to `self.IdleSoundPitch
    • Merged self.OnCollideSoundPitch1 and self.OnCollideSoundPitch2 to `self.OnCollideSoundPitch
    • Merged self.OnRemoveSoundPitch1 and self.OnRemoveSoundPitch2 to `self.OnRemoveSoundPitch
    • Renamed self.ShakeWorldOnDeathtDuration to self.ShakeWorldOnDeathDuration
  • Spawner Base:
    • Merged self.IdleSoundPitch1 and self.IdleSoundPitch2 to `self.IdleSoundPitch
    • Merged self.SpawnEntitySoundPitch1 and self.SpawnEntitySoundPitch2 to `self.SpawnEntitySoundPitch
    • Merged self.NextSoundTime_Idle1 and self.NextSoundTime_Idle2 to `self.NextSoundTime_Idle
  • Weapon Base:
    • Added self.NPC_SecondaryFireEnt
    • Merged self.DryFireSoundPitch1 and self.DryFireSoundPitch2 to self.DryFireSoundPitch
    • Merged self.Primary.DistantSoundPitch1 and self.Primary.DistantSoundPitch2 to self.Primary.DistantSoundPitch

v2.13.0

25 Jan 18:38
Compare
Choose a tag to compare

New

  • Revamped NPC Controller:
    • Added first person mode! The player can now switch between first & third person by pressing H
    • Added the ability to zoom in and out by using the scroll wheel
    • Added 3 new options: Camera Zoom Speed, Camera speed (lerping), and Controller Dies With The NPC
    • Added much better initialize message
    • Added proper support for jumping animations!
    • When in third person, the camera will automatically adjust itself to not get stuck in walls!
    • Can now use GMod cameras without the view messing up
    • Updated HUD:
      • Added camera zoom number & icon
      • Added camera third/first icon
      • Will now display attacks that it can do in green
      • If it has an attack but there is a cool down, the icon will now display orange and will turn green once it can preform it again
      • The HUD will now instantly turn off when the user toggles it in the menu
      • Fixed when the NPC is flinching, the HUD wouldn't update!
    • NPCs can now move much closer to walls as it's now calculated using their hitbox instead of a fixed number
    • Changed the way the player respawns:
      • If the NPC is alive, then it will spawn the player above it
      • If the NPC has been removed, then it will spawn the player at the NPC's last location
      • Fixed any possibilities of the player spawning at the map's origin or random far location
      • Many optimizations were done to the old parts of the code
    • Now supports servers with different tick rates
    • Fixed human SNPCs keep firing even after the player has released the firing button
    • Fixed when movement key(s) are released but the SHIFT key is still pressed, the NPC would continue to move!
    • Fixed human SNPCs switching to anti-armor or melee inventory weapons
  • AI Updates:
    • When set to guard, it will now face the guarding position when it moves and comes back to the guard position
    • Now ignore HL1 GMan
    • Fixed players having the ability to make dead or dying NPCs follow/unfollow them
    • Fixed SNPCs that are supposed to always wander freezing for 2 seconds when first spawned
    • Fixed humans not turning to aim at the location of their ally's death when idle
    • Fixed humans not properly facing the enemy when melee attacking
    • Fixed certain animations overtaking death animation for SNPCs
  • Updated Aerial-Aquatic Base:
    • Added better support for the controller
    • Added chase-attack, implements dynamic chase & stop when melee attacking, ex: Enemy moves away while attacking, it will chase the enemy while still playing the attack
    • System is much better to use for developers
    • The NPC no longer slows down when approaching the enemy
    • Fixed when aquatic NPCs were outside of water, they would magically start flying in a random direction
    • Fixed attack animation breaking when moving away
    • Fixed not properly getting into melee range
    • Fixed having chasing issue (Crashing into the ground) when the enemy is a humanoid or smaller
  • Updated SNPC Corpse Collisions:
    • Added an option in the menu that allows the user to pick 6 different collisions options!
    • No longer affected by the GMod "Keep Corpses" option
    • Controlled through the command: vj_npc_corpsecollision
    • Much better system for developers

General Changes & Improvements

  • When an NPC that follows a player is killed, it will now print a message in the player's chat box letting them know that the NPC has been killed
  • Crossbow now has proper delay between shots and NPCs will now attempt to stand still when firing (Similar to RPG)
  • Players now use the same muzzle flash particles as NPCs do!
  • SNPC pain sounds by default are now based on the sound duration, allowing for continuous pain sounds without long break or sounds cutting off!
  • When selecting the language option, it will now reload the spawnmenu, this will avoid the need to restart the map
  • Removed effects: VJ_Weapon_PistolMuzzle1 and VJ_Weapon_RifleMuzzle1

General Fixes

  • Fixed weapons reloading for players not taking in account for reserve ammo
  • Fixed weapon reloading, firing, and dry firing sounds for players playing twice in multiplayer
  • Fixed flare gun creating a muzzle flash, it now only creates smoke

Notable Developer Changes

  • IMPORTANT: npc_vj_animal_base has been removed! This base ha been discontinued since 2017, no one should have been using it!
  • All of the controller's variables have been changed!
  • Added new NPC State: VJ_STATE_ONLY_ANIMATION_CONSTANT
  • Added to the Spawner Base: self.OverrideDisableOnSpawn
  • SNPC Bases:
    • New: self.VJC_Data (Includes bunch of variables), self.DeathCorpseCollisionType, self.CombatFaceEnemy
    • Improved self:CustomOnResetEnemy()
    • Merged self.NextSoundTime_OnKilledEnemy1 and self.NextSoundTime_OnKilledEnemy2 to self.NextSoundTime_OnKilledEnemy
    • Merged self.NextSoundTime_AllyDeath1 and self.NextSoundTime_AllyDeath2 to self.NextSoundTime_AllyDeath
    • Merged self.NextSoundTime_Pain1 and self.NextSoundTime_Pain2 to self.NextSoundTime_Pain and now accepts true as a value (It's also set as default!)
    • Merged self.NextSoundTime_DamageByPlayer1 and self.NextSoundTime_DamageByPlayer2 to self.NextSoundTime_DamageByPlayer
    • Merged self.NextSoundTime_Investigate1 and self.NextSoundTime_Investigate2 to self.NextSoundTime_Investigate
    • Merged self.NextSoundTime_LostEnemy1 and self.NextSoundTime_LostEnemy2 to self.NextSoundTime_LostEnemy
    • Merged self.NextSoundTime_Breath1 and self.NextSoundTime_Breath2 and self.NextSoundTime_Breath_BaseDecide to self.NextSoundTime_Breath
    • Merged self.NextSoundTime_WeaponReload1 and self.NextSoundTime_WeaponReload2 to self.NextSoundTime_WeaponReload
    • Merged self.NextSoundTime_Suppressing1 and self.NextSoundTime_Suppressing2 to self.NextSoundTime_Suppressing
    • Merged self.NextSoundTime_OnGrenadeSight1 and self.NextSoundTime_OnGrenadeSight2 to self.NextSoundTime_OnGrenadeSight
    • Merged self.AfterHealSoundPitch1 and self.AfterHealSoundPitch2 to self.AfterHealSoundPitch
    • Merged self.BeforeHealSoundPitch1 and self.BeforeHealSoundPitch2 to self.BeforeHealSoundPitch
    • Merged self.MedicReceiveHealSoundPitch1 and self.MedicReceiveHealSoundPitch2 to self.MedicReceiveHealSoundPitch
    • Merged self.MoveOutOfPlayersWaySoundPitch1 and self.MoveOutOfPlayersWaySoundPitch2 to self.MoveOutOfPlayersWaySoundPitch
    • Merged self.ImpactSoundPitch1 and self.ImpactSoundPitch2 to self.ImpactSoundPitch
    • Merged self.DamageByPlayerPitch1 and self.DamageByPlayerPitch2 to self.DamageByPlayerPitch
    • Merged self.AllyDeathSoundPitch1 and self.AllyDeathSoundPitch2 to self.AllyDeathSoundPitch
    • Merged self.OnReceiveOrderSoundPitch1 and self.OnReceiveOrderSoundPitch2 to self.OnReceiveOrderSoundPitch
    • Merged self.LostEnemySoundPitch1 and self.LostEnemySoundPitch2 to self.LostEnemySoundPitch
    • Merged self.OnKilledEnemySoundPitch1 and self.OnKilledEnemySoundPitch2 to self.OnKilledEnemySoundPitch
    • Merged self.CallForHelpSoundPitch1 and self.CallForHelpSoundPitch2 to self.CallForHelpSoundPitch
    • Merged self.BecomeEnemyToPlayerPitch1 and self.BecomeEnemyToPlayerPitch2 to self.BecomeEnemyToPlayerPitch
    • Merged self.SuppressingPitch1 and self.SuppressingPitch2 to self.SuppressingPitch
    • Merged self.WeaponReloadSoundPitch1 and self.WeaponReloadSoundPitch2 to self.WeaponReloadSoundPitch
    • Merged self.InvestigateSoundPitch1 and self.InvestigateSoundPitch2 to self.InvestigateSoundPitch
    • Merged self.OnPlayerSightSoundPitch1 and self.OnPlayerSightSoundPitch2 to self.OnPlayerSightSoundPitch
    • Merged self.FollowPlayerPitch1 and self.FollowPlayerPitch2 to self.FollowPlayerPitch
    • Merged self.UnFollowPlayerPitch1 and self.UnFollowPlayerPitch2 to self.UnFollowPlayerPitch
    • Merged self.BeforeLeapAttackSoundPitch1 and self.BeforeLeapAttackSoundPitch2 to self.BeforeLeapAttackSoundPitch
    • Merged self.LeapAttackJumpSoundPitch1 and self.LeapAttackJumpSoundPitch2 to self.LeapAttackJumpSoundPitch
    • Merged self.LeapAttackDamageSoundPitch1 and self.LeapAttackDamageSoundPitch2 to self.LeapAttackDamageSoundPitch
    • Merged self.LeapAttackDamageMissSoundPitch1 and self.LeapAttackDamageMissSoundPitch2 to self.LeapAttackDamageMissSoundPitch
    • Merged self.BeforeRangeAttackPitch1 and self.BeforeRangeAttackPitch2 to self.BeforeRangeAttackPitch
    • Merged self.MeleeAttackSoundPitch1 and self.MeleeAttackSoundPitch2 to self.MeleeAttackSoundPitch
    • Merged self.BeforeMeleeAttackSoundPitch1 and self.BeforeMeleeAttackSoundPitch2 to self.BeforeMeleeAttackSoundPitch
    • Merged self.CombatIdleSoundPitch1 and self.CombatIdleSoundPitch2 to self.CombatIdleSoundPitch
    • Merged self.GrenadeAttackSoundPitch1 and self.GrenadeAttackSoundPitch2 to self.GrenadeAttackSoundPitch
    • Merged self.OnGrenadeSightSoundPitch1 and self.OnGrenadeSightSoundPitch2 to self.OnGrenadeSightSoundPitch
    • Merged self.IdleSoundPitch1 and self.IdleSoundPitch2 to self.IdleSoundPitch
    • Merged self.FootStepPitch1 and self.FootStepPitch2 to self.FootStepPitch
    • Merged self.BreathSoundPitch1 and self.BreathSoundPitch2 to self.BreathSoundPitch
    • Merged self.MeleeAttackMissSoundPitch1 and self.MeleeAttackMissSoundPitch2 to self.MeleeAttackMissSoundPitch
    • Merged self.AlertSoundPitch1 and self.AlertSoundPitch2 to self.AlertSoundPitch
    • Merged self.Medic_NextHealTime1 and self.Medic_NextHealTime2 to self.Medic_NextHealTime
    • Merged self.OnPlayerSightNextTime1 and self.OnPlayerSightNextTime2 to self.OnPlayerSightNextTime
    • Removed: `self.DeathCorpseAlwaysCollide, self:VJ_ACT_RESETENEMY(), self:DamageByPlayerCode(), self:Conva...
Read more