v2.3.1
Changed 'OnItemOverride to return an Action status & added another call at the end of OnGiveNamedItem.
Fixed Handle leak from TF2Items (Bottiger).
Removed less explosive damage jumping from the Loose Cannon.
Patched Demos that lost shield but changed loadouts during round retaining their heads.
Patched HHH Jr. regenerating and losing his rage after killing players.
Added cvar that controls rate of rage generation when only Scouts are left on RED Team.
Replaced points loop with a simple division expression.
Added cvar that controls the rage removal multiplication of the Sydney Sleeper.
Added telefrag assistance for engies that built the teleporter but someone else got the telefrag.
Added color to command reply chat.
Improved the set boss and boss special selector to reply with a message.
Added gas passer & thermal thruster; gas passer explodes on ignite and thermal thruster allows consecutive air-jumps.
Axtinguisher & reskins do 15% more damage against burning bosses.
Updated natives tester with latest forwards.
v2.3.2
Patched bosses getting one-shotted from certain trigger_hurt's.
Spy cloaking damage is now limited to melee hits as it should be.
Refactoring spy cloak damage so that hitting dead ringered spies always calls 'OnBossDealDamage_OnHitDeadRinger' and hitting regular cloak always calls 'OnBossDealDamage_OnHitCloakedSpy'.
Added cvars to control the damage spies take from cloak and dead ringer.
v2.3.3
Added Old VSH compatibility layer (requires removing the actual Old VSH plugin though).
Made 'IsVSHMap()' as a gamemode native for the old VSH compatibility layer.
Moved super jump and weighdown code into their own base boss methods.
Implemented forward calls into super jump, generic stun, and weighdown for the old VSH compatibility layer.
Last player timer now properly draws total boss health.
v2.3.4
Added native to get Max Bosses value.
Exposed the SuperJump and Weighdown methods as natives.
Modified the plague doctor add-on boss to use the new superjump and weighdown natives.
Corrected deprecated message for 'SetProp*'.
Added the Hot Hand and gave it speed boost on slap.
Added Rock Paper Scissors taunt event and forward hook.
Replaced damage modifiers for cloak damage with tf2's cvars.
Merged standalone 'bEnabled' cvar into the VSH2 ConVar array.
In Plague Doctor boss add-on, cached certain VSH2 convars for rage oriented code as global variables.
Replaced some respawn conditional code with a ternary conditional.
Added cvar that enables or disables late spawning, default value disables.
Added cvar to control the percentage threshold to allow bosses to suicide.
Buffed Axtinguisher and reskins by 5%.
Modified forward in old VSH Compatibility Layer plugin to call if a player is indeed the next boss.
v2.3.5
Moved fall damage code to their respective manager functions.
Removed forcing player to spec when blocking late spawn.
Changed scoring Event to create and fire per individual player.
Added RPS taunt hook to natives tester.
v2.3.6
Enhanced voicelines
Added forward for when a boss is hit by a projectile in the air aka airshot.
Added cvar to control the distance from the air to the ground to count as an airshot.
Removed 'NULL_VEC' define from vsh.sp.
Created Voice clip method to help in control of playing boss voiceclips.
Created voice clip flags in vsh2.inc to help make it easier to play certain types of boss voiceclips.
Moved more boss specific code into their respective scripts.
Made voice clip method as a native.
Replaced voice clip code in Plague Doctor add-on boss to use the voice clip native.
Removed more unused code in Plague Doctor add-on module.
Patched Late Spawn block affecting spectators.
Patched Boss health not lowering on fall damage.
Patched HHH playing kill sound when he suicides.
Removed 'FULLPATH' define from vsh.sp.
fixed tribalman's shiv doing self-bleed
HHHJr's teleport cloud now also displays where he teleports from
v2.3.7
Added 'Action' variants for 'void' returning hooks.
Patched an issue with late spawn blocking where it doesn't set your class on the next round.
Added 'master' boss param for Minion based hooks.
Added set boss and music toggle to the main Boss help panel.
Added Removing Razorback when goomba stomped.
Blocked dead bosses from revealing their HP (which is 0 since they're dead...).
Made certain TF2Attribs functions as optional natives.
Added new player & admin command to make weapons transparent.
v2.3.8
Updated travis script for new SourceMod versions 1.9 and 1.10.
Readded gravity power to weighdown.
Added cvar to enable or disable medic's uber shield.
Removed 25% accuracy penalty from Baby Face's Blaster.
v2.3.9
Set vsh2_shield_regen_damage cvar to allow being set to 0 to disable shield regeneration.
Removed Spy's speed boost on stab.
Patched Vagineer's uber not extending from airblasts.
Increased Spy's cloaking/stealth delay by 1 second.
Added cvar to control HHH Jr's climbing velocity.
Removed knockback resistance from Christian Brutal Sniper & Vagineer.
Patched Next Boss panel not showing up for Next-Boss Players.
v2.3.10
Added cvar to control sniper climbing velocity.
Added cvar to control how many players must be alive to show total boss hp.
Added reduced fall damage when a spy is cloaked.
v2.3.11
Removed functional-style typecasting for Handles and ints.
Revamped Heavy Shotgun healing.
Added forward for giving bosses rage.
v2.3.12
Added new forward: OnBossCalcHealth.
Replaced certain SetPawnTimer calls with a RequestFrame.
Removed resetting the player's preset boss type after using it to set the gamemode special type.
v2.3.13
Added FF2 Compatibility Layer Plugin (currently Alpha stage).
Replaced Heavy Shotgun overheal formula to use the TF2 cvar for maximum overheal.
Moved HHH initial charge delay to his respective boss script file.
Added cvar to control HHH Jr's teleport charge.
Small patch for the Damage Tracker addon to properly save cookie data.
v2.3.14
Commented out timer code that opens up the control in the 2nd round while VSH2 round is going on.
Added OnBossTakeDamage_OnTriggerHurt forward for FF2 Compatibility Layer plugin.
v2.3.15
Removed useless plugin handle storing when registering boss modules.
Renamed the boss module arraylist.
Removed pointless functions for retrieving plugin handles from.
Changed public plugin name information.
Moved zeroing boss queue to end of round event instead of setting it when tallying scores and queue points.
Removed 'iSubBossType' property.
Added cvar to control the max limit for randomized multibosses.
Added 10 second uber cap for Vagineer.
v2.3.16
Added new native: 'GetRandomBossType' which has an optional boss filter.
Moved Boss ID enum to vsh2.inc and renamed the enum Boss IDs to have 'VSH2Boss_' prefix.
Replaced boss menu id's with a maintainable integer id to string mechanism.
Moved Boss Queue resetting to the very start of the round when boss status is confirmed.
Short Circuit changes: metal on successful zap, permanent minicrits, and 4x damage buff.
Southern Hospitality changes: increased melee range.
v2.4.0
Patched glitch where Plague Doctor boosts ALL minions, including ones that aren't his.
Nerfed minion respawn time by 50%.
Replaced 'OnAllPluginsLoaded' with 'OnLibraryAdded' checks in the official addons.
Moved superjump, weighdown, and glow code into separate think functions except for HHH Jr.
Added new cvars concerning Vagineer's uber time.
Changed a bit of the music management code so that the built-in bosses that have no theme song will not let the music forward spam.
Allowed being able to change the music themes for the default bosses.
Added a 'MaxVSH2*' enum value to represent the maximum size of specific internal arrays.
Added a few convenience properties and methods to the VSH2Player methodmap.
Changed 'iOwnerBoss' property to be consistent with 'iUberTarget'.
Replaced 'iPlaying' property implementation with 'GetLivingPlayers'.
Nullified all preround damage to 0 in order to prevent killing the boss in the frames between the round starting and the boss getting their health and ending the round.
Put 'flLastHit' to good use in OnTakeDamage.
Replaced PrivateForward methodmap with SM's internal PrivateForward.
Moved content and asset preparation stocks to vsh2.inc.
Patched heavy health being lowered instead of boosting when multi-damaging 2+ bosses at once with shotgun.
Moved 'iClimbs' property to 'BaseFighter' to use in 'ClimbWall' method.
Removed ifdef for gamemode optional dependency checks.
Providing updated steamtools.inc (Thx to JoinedSenses!).
v2.4.1
Using new assets helper funcs for Plague Doctor.
Removed global sound string and replaced it with local path strings.
Removed global message string.
Moved 'MAXMESSAGE' define to handler.sp.
Added 'GetMaxHealth' sdk hook for setting boss max hp.
v2.5.0 - Enum Struct Update
Moved 'MAXMESSAGE' define to vsh2.inc.
Replaced hardcoded 512 with 'MAXMESSAGE' define.
Reduced 'MAXMESSAGE' to 128.
Wrapped (almost) all global variables into a single enum struct instance.
Created tf2items_stocks.inc to wrap the TF2Items methodmap so boss devs can utilize it.
v2.5.1 - v2.5.2
Added 'MAX_PANEL_MSG' define to vsh2.inc.
Added new natives: 'GetFighters' which is the red player version of 'GetBosses' as well as 'GetMinions'.
Made 'VSH2GameMode_GetFighters', 'VSH2GameMode_GetBosses', and 'VSH2GameMode_GetMinions' have a true default value for checking for living players.
Patched built-in health regen giving health regen based on current health rather than max health.
Added 'OnBossEquippedPost' forward.
v2.5.3
Added 'TF2Item' methodmap handle version for 'OnItemOverride'.
Increased 'MAXMESSAGE' define from 128 to 512.
Deprecated old Health system and added fixes to maintain compatibility.
Added 'iHealth' property to the VSH2Player methodmap, using 'GetPropInt("iHealth")' still works for backward compatibility but is no longer necessary as using 'GetClientHealth' works as well.
Used 'any' type for natives that didn't return an int.
v2.5.4 - v2.5.5
Patched exception where killing boss gives negative health for sqrt value.
Added new player filter: '@nextboss'.
Patched Scout cleavers becoming kunais.
Fixed mistake where 'OnTouchPlayer' gave incorrect params.
Patched lives system respawning players even after the round has ended.
Improved 'hale_force' command so that using '-1' will use a random boss id.
Patch boss music string getting corrupted.
DemoShields and Razorback are now removed by boss melee attacks OR by a fatal hit.
Fixed glitch with plague doctor's health going negative instead of killing the boss.
v2.5.6
Patched sandvich healing bosses
v2.5.7
Patched some bosses erroneously getting over 100% jump charge.
'iDifficulty' property now resets to 0 instead of -1.
Added 'StunPlayers' and 'StunBuildings' to have separate stun natives.
Moving 'iDifficulty' reset to when boss player's turn is over instead at beginning of round.
Moved 'Format' code for boss message intro to prior the OnMessageIntro hook call.
Corrected Engineer help panel info.
Replaced client check for boss message intro so all clients can see the message.
Patched Airshot hook being fired when the boss is in water.
Toggling background music to off will now immediately stop music.
Further patched Heavy's healing the boss using lunchbox items.
Added new convenience method for the VSH2Player methodmap: 'GetPlayersInRange'.
Pushing new VSH2 Boss module template.
v2.6.8
Added new natives: 'VSH2_GetBossIDs' & 'VSH2_StopMusic'.
Cleaned up 'ManageDownloads' in handler.sp.
Added new method natives: 'StunPlayers' & 'StunBuildings'.
Added new forward hook: 'OnPlayerTakeFallDamage'.
Added self-contained Config System for VSH2 (Config system alone is MIT licensed).
v2.6.9
Removed debug printing in 'OnGiveNamedItem'.
Changed VSH2 to Saxton Hale compatibility layer plugin to 'saxtonhale.sp'.
v2.6.10
Patched small handle leak with config when destroying the configmap.
Added patch for when a boss disconnects, multibosses might appear.
Added minimum speed for the boss movement speed think stock.
Added download section to the VSH2 config.
v2.6.11
Fixed use-after-free issue with ConfigMap.
v2.6.12
Cleaned up class-based help string configmap code.
Grouped loose cookies and hud handles into arrays.
Moved transparent weapons feature into a separate addon.
Automated Boss Module System unloading so that custom bosses will not glitch out the core plugin.
v2.6.13
Fixed cvar glitch with limiting spawn health & ammo (Scags).
Patched prop type in stocks.inc::TeleportToSpawn() stock (Scags).
Added HealPlayer stock (Scags).
'methodized' HealPlayer stock for addons & modules to use.
v2.6.14
Allow wallclimbs to hit prop_* entites (Scags).
Removed extraneous Downloads call (Scags).
Added `OnSoundHook` forward.
Added `IsVoiceLine` stock function for use with `OnSoundHook` forward.
v2.6.15 - v2.6.16
Added `OnRoundStart` forward.
Replaced health-modifications by using mentioned `OnRoundStart` forward.
Added convar to gunshot bride addon to control sound reset time.
quick patch for oversight in OnBossCalcHealth call.
v2.8.20
Implementing `StartMusic` and `StopMusic` natives.
Updating `PlayMusic` with VSH2's Music ConVar.
Updating 'iQueue' outside access.
Fix triggering for cloak damage.
Fix 'iPresetType' cookie handling.
fixing handle oversight with 'OnHaleJump'.
Patching 0 client index on connection.
Patched Demoshield missing prop check.
Removed unused vector functions.
Fix missing ResetVariables for 'bSuperCharge'.
Added VSH2_GetBossID native.
Passing VSH2Player to OnBossMenu.
Changed `ConfigMap::Get` to return numbers of chars written instead of boolean (recommended by BatFoxKid).
Fixing SP compiler v1.11 warning for VSHGameMode methodmap not returning a value.
Removed 'bSetOnSpawn', 'bGlow' properties as it was unnecessary (closes issue #133).
Changed 'bIsBoss' property to be read-only (closes issue #140).
Added two Forward hooks for the main VSH2 help menu (closes issue #142).
Replaced Cvar enum with enum struct (closes issue #13
.
Added cvar to enable or disable snipers being able to climb with their melee (default enabled) (closes issue #134).
Implemented forward bi-system where addons get first priority over boss modules (semi-resolves issue #132, closes issue #131, ).
Added forward for Last player timer, fires every second (closes issue #130).
Added local and global enumerators for the ConfigMap.
Converted ConfigMap into an include file and vsh2.inc includes, making it available for other plugins to widely use.
Formatted syntax in some of the FF2 compatibility engine code to follow the code formatting rules.
Implemented a couple of FF2 compatibility engine natives.
v2.8.21
Updating forward code so any return value higher than Plugin_Changed will be immediately returned.
v2.8.25
Created separate methodmap for the VSH2 Boss Health Bar, located in vsh2.inc for easier manipulation.
Moved 'SkipBossPanelNotify' to commands.sp.
Changed VSHGameMode to inherit from StringMap.
Removed the StringMap gamemode fields from VSH2 Globals struct.
Replaced 'iPlaying' property from VSHGameMode with 'GetLivingPlayers'.
Marked certain gamemode methods static since they don't use any properties or other methods.
Created VSH2GameMode methodmap in vsh2.inc.
renamed 'm_strBackgroundSong' to 'm_strCurrSong' to make it shorter.
Improved customizability for the string messaging code for Health checking, Boss introductions, and Round Ending.
v2.9.27
Changed method `SetWepInvis` to use the alpha value as a percentage from 0 to 100 instead of 0 to 255.
Refactored `ShowPlayerScores` (Scags).
Attempted patch at making sure client disconnecting doesn't throw an error.
Added extension to OnMusic forward to control song volume.
Updated 'VSH2GameMode_GetHudHandle' to take an int to a specific HUD.
Fixed formatting of FF2 compatibility engine to fit codebase conventions.
Patched empty string not removing attributes from weapons.
Patched oversight on VSH1 compatibility engine where Hale Rage forward was trying to be executed instead of Hale Jump as the intended hook.
v2.10.28
Refactored HUD and Crit code in 'ManageFighterThink'.
Optimized 'OnPreThinkPost' by having the cloak reducing check code if the player is cloaked.
Switched code placement of tf2attributes removal and the 'PrepPlayers' forward call.
Added PreRound Boss Setting (Shinyscales).
Added OnPlayerClimb forward for when a player climbs a wall (Shinyscales).
Renamed 'OnHookedEvent' to 'OnExplosiveJump' and renamed a few other identifier names to something more self-documenting.
Extended 'OnControlPointCapped' by adding a filled VSH2Player array with capper amount.
Added VSH2's documentation as text & image files.
Added new native 'VSH2_GetConfigMap'.
Demomen no longer lose melee crits when they lose shield charge for specific vsh2_demoman_shield_crits cvar values.
Added new property for the VSH2 Gamemode: 'iPrevSpecial'.
Expanded ConfigMap with Setting methods, ExportToFile, & Cloning (01Pollux).
Update FF2 loading cycle (01Pollux).
v2.10.29
Added Cvar for controlling ammo pack conversions.
Finally changed Bunny's weapon to a bottle as it should be.
Not that anyone would care but updated VSH2 SourceGo files.
Added error logging if attribute indices exceed the attribute limit for TF2Items stocks.
Fixed a glitch with ConfigMap where it wasn't properly parsing the <enum> values when used as section names.
Replaced total-weapon-replacement code with ConfigMap weapon replacement based code.
v2.10.30
Removed 100% limit on rage.
Added convenience methods for ConfigMap to use an int as a key for directly accessing an <enum> defined key.
Fixed PrepareItemHandle glitch with attribute indices double incrementing.
v2.11.0 - v2.12.0
Added 3 new events: 'OnBannerDeployed', 'OnBannerEffect', 'OnUberLoopEnd'.
Added new convenience method: `GetTFClass`.
Slightly reformatted Heavy Shotgun Healing code to be more readable.
Added error logging when trying to access a VSH2Player property that doesn't exist.
Added new native for temporarily setting attributes directly on players and bosses.
Added new stock 'MakePawnTimer' which works more flexibly than 'SetPawnTimer'.
Added new cvars: 'vsh2_thirddegree_uber_gain', 'vsh2_uber_deploy_charge', 'vsh2_start_uber_charge', 'vsh2_sniper_climb_damage'.
Removed 'repeat' macro function.
Added client-sided music playing (closes issue #95).
Further expanded the int key based methods for ConfigMap.
Added VSH2 Default Bosses Addon & Configs. (UNFINISHED).
Added plugin map for faster plugin lookups."
Added cvar on time delays for the late spawn blocker.
Added 'flRoundStartTime' property for the Gamemode manager.
Removed 'IntHash'.
Fixed Jarate not removing rage.
Some formatting changes.
Added internal API doc.
Changed 'GetTFClass()' from method into property.
Replaced ArrayList param in manager functions with local-dynamic boss arrays.
Replaced ArrayList where local-dynamic arrays can be used.
Added new cvars: 'vsh2_sword_max_overheal', 'vsh2_sword_health_add', 'vsh2_late_spawn_delay', 'vsh2_trigger_hurt_threshold', 'vsh2_max_trigger_hurt_damage', 'vsh2_max_boss_glow_time', 'vsh2_phlog_taunt_dmg_mult', 'vsh2_spy_headshot_dmg_mult', 'vsh2_diamondback_mannmelter_dmg', 'vsh2_katana_max_overheal_add', 'vsh2_katana_health_add', 'vsh2_powerjack_max_overheal_add', 'vsh2_powerjack_health_add', 'vsh2_battalions_backup_dmg_mult', 'vsh2_kunai_health_add', 'vsh2_kunai_health_guard', 'vsh2_kunai_health_cap', 'vsh2_telefrag_logic', 'vsh2_telefrag_dmg', 'vsh2_mantreads_stomp_logic', 'vsh2_mantreads_stomp_dmg'.
Exposed more options for 'IncreaseHeadCount' player method.
Exposed more options for 'Heal' player method.
Changed plugin registrar to check for conflicts via plugin map.
Updated 'StopMusic' to work for player-sided music.
Decoupled player crit logic and HUD logic from red player think.
Fixed last player total boss health message covering boss intro messages.
Added new native 'VSH2_GetBossNameByIndex'.
Added new forward hooks 'OnRedPlayerThinkPost', 'OnRedPlayerHUD', 'OnRedPlayerCrits', and 'OnShowStats'.
Cvar 'vsh2_permanent_overheal' is no longer functional.
Added the ability to preserve/override weapons based on either indexes or classnames and both types lets you filter by class or do all class as a default, etc.
Added property 'hHealTarget' as wrapper over `GetHealPatient`.
Added ConfigMap-based helpers for custom bosses and addons.
Updated minion-based gamemode methods to filter with an owner boss.
Updated Plague Doctor example boss code.
v2.12.1
Changed code to have compatibility with SM 1.11