Releases: DrVrej/VJ-Base
Releases · DrVrej/VJ-Base
v2.16.0c
v2.16.0b
v2.16.0 - Revamp
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 theContact & 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
- New NPC settings:
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
toAerial NPC
- Renamed convar
vj_npc_sd_ongrenadesight
tovj_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
- Stored in the variable
- 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...
v2.15.3b
v2.15.3
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
- 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
andDisable Muzzle Heat Wave
(They were unused)
- New client option:
- Human NPCs with melee weapons will now use their aiming pose parameters (similar to ranged weapons)
- Removed commands
vj_wep_nomuszzlesmoke
andvj_wep_nomuzzleheatwave
- Fixed VJ melee weapons not dealing any damage
v2.15.1
- 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
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
andDMG_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
- Added Print Weapon-Related Information (
- Organized and reworded some of the settings & options
- Removed "Show HUD Display on SNPC killed" option as it can potentially cause issues
- Dev Settings:
- 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
whenCLASS_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
- Added
- 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
andself.EntitiesToSpawn.SpawnAngle
- Adding
- 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)
toself:CustomOnEntitySpawn(ent, spawnKey, spawnTbl, initSpawn)
- Cleaned up & optimized the code + Added comments for readability
- Renamed
self:CustomOnInitialize_BeforeNPCSpawn()
toself:CustomOnInitialize()
- Renamed
self:CustomOnThink_BeforeAliveChecks()
toself:CustomOnThink()
- Removed
EntityName
fromself.EntitiesToSpawn
as it's no longer needed! - Removed
self.NumberOfEntitiesToSpawn, self.AlreadyDoneVJBaseSpawnerDisabled, self.NextTimedSpawnT
- Added a chance system:
- 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 theVJ_ACT_PLAYACTIVITY
- Added parameter
controlEnt
toself:Controller_Initialize()
andself:Controller_IntMsg()
- Added parameters
returnPos
, andsides
toself:VJ_CheckAllFourSides()
- Added
self:CustomOnKeyBindPressed(key)
to the NPC Controller - `self.Gr...
- New:
v2.14.0
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 addedcustomFunc
toVJ_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()
andself: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 aseed
parameter self.LeapAttackAnimationFaceEnemy
can now accept2
which sets it to face the enemy until it jumps and is now set by default!self:CustomOnLeapAttackVelocityCode()
can now accepttrue
as a return to override the default velocity code- Renamed
self:VJ_GetAllPoseParameters()
toself:GetPoseParameters()
- Renamed
self:VJ_ReturnAngle()
toself:GetFaceAngle()
- Renamed
self:DoFormation_Diamond()
toself:DoGroupFormation(formType, ent, it, spacing)
- Renamed
self:CustomOnGrenadeAttack_BeforeThrowTime()
toself:CustomOnGrenadeAttack_BeforeStartTimer()
- Renamed
self.UsesBoneAngle
toself.DeathCorpseSetBoneAngles
- Merged
self.ExtraMeleeSoundPitch1
andself.ExtraMeleeSoundPitch2
toself.ExtraMeleeSoundPitch
- Merged
self.NextSoundTime_Alert1
andself.NextSoundTime_Alert2
toself.NextSoundTime_Alert
- Merged
self.NextSoundTime_Idle1
andself.NextSoundTime_Idle2
toself.NextSoundTime_Idle
- Merged
self.NextThrowGrenadeTime1
andself.NextThrowGrenadeTime2
toself.NextThrowGrenadeTime
- Removed
self.HasMeleeAttackDSPSound
, just setself.MeleeAttackDSPSoundType
tofalse
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
- Common functions are now inside a new folder
- Projectile Base:
- Merged
self.NextSoundTime_Idle1
andself.NextSoundTime_Idle2
to `self.NextSoundTime_Idle - Merged
self.StartupSoundPitch1
andself.StartupSoundPitch2
to `self.StartupSoundPitch - Merged
self.IdleSoundPitch1
andself.IdleSoundPitch2
to `self.IdleSoundPitch - Merged
self.OnCollideSoundPitch1
andself.OnCollideSoundPitch2
to `self.OnCollideSoundPitch - Merged
self.OnRemoveSoundPitch1
andself.OnRemoveSoundPitch2
to `self.OnRemoveSoundPitch - Renamed self.ShakeWorldOnDeathtDuration to self.ShakeWorldOnDeathDuration
- Merged
- Spawner Base:
- Merged
self.IdleSoundPitch1
andself.IdleSoundPitch2
to `self.IdleSoundPitch - Merged
self.SpawnEntitySoundPitch1
andself.SpawnEntitySoundPitch2
to `self.SpawnEntitySoundPitch - Merged
self.NextSoundTime_Idle1
andself.NextSoundTime_Idle2
to `self.NextSoundTime_Idle
- Merged
- Weapon Base:
- Added
self.NPC_SecondaryFireEnt
- Merged
self.DryFireSoundPitch1
andself.DryFireSoundPitch2
toself.DryFireSoundPitch
- Merged
self.Primary.DistantSoundPitch1
andself.Primary.DistantSoundPitch2
toself.Primary.DistantSoundPitch
- Added
v2.13.0
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
andVJ_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
andself.NextSoundTime_OnKilledEnemy2
toself.NextSoundTime_OnKilledEnemy
- Merged
self.NextSoundTime_AllyDeath1
andself.NextSoundTime_AllyDeath2
toself.NextSoundTime_AllyDeath
- Merged
self.NextSoundTime_Pain1
andself.NextSoundTime_Pain2
toself.NextSoundTime_Pain
and now acceptstrue
as a value (It's also set as default!) - Merged
self.NextSoundTime_DamageByPlayer1
andself.NextSoundTime_DamageByPlayer2
toself.NextSoundTime_DamageByPlayer
- Merged
self.NextSoundTime_Investigate1
andself.NextSoundTime_Investigate2
toself.NextSoundTime_Investigate
- Merged
self.NextSoundTime_LostEnemy1
andself.NextSoundTime_LostEnemy2
toself.NextSoundTime_LostEnemy
- Merged
self.NextSoundTime_Breath1
andself.NextSoundTime_Breath2
andself.NextSoundTime_Breath_BaseDecide
toself.NextSoundTime_Breath
- Merged
self.NextSoundTime_WeaponReload1
andself.NextSoundTime_WeaponReload2
toself.NextSoundTime_WeaponReload
- Merged
self.NextSoundTime_Suppressing1
andself.NextSoundTime_Suppressing2
toself.NextSoundTime_Suppressing
- Merged
self.NextSoundTime_OnGrenadeSight1
andself.NextSoundTime_OnGrenadeSight2
toself.NextSoundTime_OnGrenadeSight
- Merged
self.AfterHealSoundPitch1
andself.AfterHealSoundPitch2
toself.AfterHealSoundPitch
- Merged
self.BeforeHealSoundPitch1
andself.BeforeHealSoundPitch2
toself.BeforeHealSoundPitch
- Merged
self.MedicReceiveHealSoundPitch1
andself.MedicReceiveHealSoundPitch2
toself.MedicReceiveHealSoundPitch
- Merged
self.MoveOutOfPlayersWaySoundPitch1
andself.MoveOutOfPlayersWaySoundPitch2
toself.MoveOutOfPlayersWaySoundPitch
- Merged
self.ImpactSoundPitch1
andself.ImpactSoundPitch2
toself.ImpactSoundPitch
- Merged
self.DamageByPlayerPitch1
andself.DamageByPlayerPitch2
toself.DamageByPlayerPitch
- Merged
self.AllyDeathSoundPitch1
andself.AllyDeathSoundPitch2
toself.AllyDeathSoundPitch
- Merged
self.OnReceiveOrderSoundPitch1
andself.OnReceiveOrderSoundPitch2
toself.OnReceiveOrderSoundPitch
- Merged
self.LostEnemySoundPitch1
andself.LostEnemySoundPitch2
toself.LostEnemySoundPitch
- Merged
self.OnKilledEnemySoundPitch1
andself.OnKilledEnemySoundPitch2
toself.OnKilledEnemySoundPitch
- Merged
self.CallForHelpSoundPitch1
andself.CallForHelpSoundPitch2
toself.CallForHelpSoundPitch
- Merged
self.BecomeEnemyToPlayerPitch1
andself.BecomeEnemyToPlayerPitch2
toself.BecomeEnemyToPlayerPitch
- Merged
self.SuppressingPitch1
andself.SuppressingPitch2
toself.SuppressingPitch
- Merged
self.WeaponReloadSoundPitch1
andself.WeaponReloadSoundPitch2
toself.WeaponReloadSoundPitch
- Merged
self.InvestigateSoundPitch1
andself.InvestigateSoundPitch2
toself.InvestigateSoundPitch
- Merged
self.OnPlayerSightSoundPitch1
andself.OnPlayerSightSoundPitch2
toself.OnPlayerSightSoundPitch
- Merged
self.FollowPlayerPitch1
andself.FollowPlayerPitch2
toself.FollowPlayerPitch
- Merged
self.UnFollowPlayerPitch1
andself.UnFollowPlayerPitch2
toself.UnFollowPlayerPitch
- Merged
self.BeforeLeapAttackSoundPitch1
andself.BeforeLeapAttackSoundPitch2
toself.BeforeLeapAttackSoundPitch
- Merged
self.LeapAttackJumpSoundPitch1
andself.LeapAttackJumpSoundPitch2
toself.LeapAttackJumpSoundPitch
- Merged
self.LeapAttackDamageSoundPitch1
andself.LeapAttackDamageSoundPitch2
toself.LeapAttackDamageSoundPitch
- Merged
self.LeapAttackDamageMissSoundPitch1
andself.LeapAttackDamageMissSoundPitch2
toself.LeapAttackDamageMissSoundPitch
- Merged
self.BeforeRangeAttackPitch1
andself.BeforeRangeAttackPitch2
toself.BeforeRangeAttackPitch
- Merged
self.MeleeAttackSoundPitch1
andself.MeleeAttackSoundPitch2
toself.MeleeAttackSoundPitch
- Merged
self.BeforeMeleeAttackSoundPitch1
andself.BeforeMeleeAttackSoundPitch2
toself.BeforeMeleeAttackSoundPitch
- Merged
self.CombatIdleSoundPitch1
andself.CombatIdleSoundPitch2
toself.CombatIdleSoundPitch
- Merged
self.GrenadeAttackSoundPitch1
andself.GrenadeAttackSoundPitch2
toself.GrenadeAttackSoundPitch
- Merged
self.OnGrenadeSightSoundPitch1
andself.OnGrenadeSightSoundPitch2
toself.OnGrenadeSightSoundPitch
- Merged
self.IdleSoundPitch1
andself.IdleSoundPitch2
toself.IdleSoundPitch
- Merged
self.FootStepPitch1
andself.FootStepPitch2
toself.FootStepPitch
- Merged
self.BreathSoundPitch1
andself.BreathSoundPitch2
toself.BreathSoundPitch
- Merged
self.MeleeAttackMissSoundPitch1
andself.MeleeAttackMissSoundPitch2
toself.MeleeAttackMissSoundPitch
- Merged
self.AlertSoundPitch1
andself.AlertSoundPitch2
toself.AlertSoundPitch
- Merged
self.Medic_NextHealTime1
andself.Medic_NextHealTime2
toself.Medic_NextHealTime
- Merged
self.OnPlayerSightNextTime1
andself.OnPlayerSightNextTime2
toself.OnPlayerSightNextTime
- Removed: `self.DeathCorpseAlwaysCollide, self:VJ_ACT_RESETENEMY(), self:DamageByPlayerCode(), self:Conva...
- New: