[
  {
    "path": ".gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n*.sln    merge=union\n*.csproj merge=union\n*.vbproj merge=union\n*.fsproj merge=union\n*.dbproj merge=union\n\n# Standard to msysgit\n*.doc\t diff=astextplain\n*.DOC\t diff=astextplain\n*.docx diff=astextplain\n*.DOCX diff=astextplain\n*.dot  diff=astextplain\n*.DOT  diff=astextplain\n*.pdf  diff=astextplain\n*.PDF\t diff=astextplain\n*.rtf\t diff=astextplain\n*.RTF\t diff=astextplain\n"
  },
  {
    "path": ".gitignore",
    "content": "#################\n## Eclipse\n#################\n\n*.pydevproject\n.project\n.metadata\nbin/\ntmp/\n*.tmp\n*.bak\n*.swp\n*~.nib\nlocal.properties\n.classpath\n.settings/\n.loadpath\n\n# External tool builders\n.externalToolBuilders/\n\n# Locally stored \"Eclipse launch configurations\"\n*.launch\n\n# CDT-specific\n.cproject\n\n# PDT-specific\n.buildpath\n\n\n#################\n## Visual Studio\n#################\n\n## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User-specific files\n*.suo\n*.user\n*.sln.docstates\n\n# Build results\n\n[Dd]ebug/\n[Rr]elease/\nx64/\nbuild/\n[Bb]in/\n[Oo]bj/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n*_i.c\n*_p.c\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*.log\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.log\n*.scc\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opensdf\n*.sdf\n*.cachefile\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# NCrunch\n*.ncrunch*\n.*crunch*.local.xml\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.Publish.xml\n*.pubxml\n\n# NuGet Packages Directory\n## TODO: If you have NuGet Package Restore enabled, uncomment the next line\n#packages/\n\n# Windows Azure Build Output\ncsx\n*.build.csdef\n\n# Windows Store app package directory\nAppPackages/\n\n# Others\nsql/\n*.Cache\nClientBin/\n[Ss]tyle[Cc]op.*\n~$*\n*~\n*.dbmdl\n*.[Pp]ublish.xml\n*.pfx\n*.publishsettings\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file to a newer\n# Visual Studio version. Backup files are not needed, because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\n\n# SQL Server files\nApp_Data/*.mdf\nApp_Data/*.ldf\n\n#############\n## Windows detritus\n#############\n\n# Windows image file caches\nThumbs.db\nehthumbs.db\n\n# Folder config file\nDesktop.ini\n\n# Recycle Bin used on file shares\n$RECYCLE.BIN/\n\n# Mac crap\n.DS_Store\n\n\n#############\n## Python\n#############\n\n*.py[co]\n\n# Packages\n*.egg\n*.egg-info\ndist/\nbuild/\neggs/\nparts/\nvar/\nsdist/\ndevelop-eggs/\n.installed.cfg\n\n# Installer logs\npip-log.txt\n\n# Unit test / coverage reports\n.coverage\n.tox\n\n#Translations\n*.mo\n\n#Mr Developer\n.mr.developer.cfg\n\n#############\n#  DOTA 2\n#############\n\n*.vpk\n*.vpcf_c\n*.vsnd_c\n*.vsndevts_c\n*.vmat_c\n*.vtex_c\n*.bin\n*.vxml_c\n*.vcss_c\n*.vjs_c"
  },
  {
    "path": "AnimationsChangeLog.md",
    "content": "# animations.lua ChangeLog\n\n### Version 1.00\n- Updated version number to reflect Barebones 1.0 release\n\n### Version 0.84\n- Added FreezeAnimation function to allow for animations to be paused at any time\n- Added UnfreezeAnimation function to allow animations to be unpaused at any time\n\n### Version 0.83\n- Fixed an issue where perfectly sequential animations would not play\n- Added several missing translate activity modifiers\n- Added AddAnimationTranslate and RemoveAnimationTranslate commands to allow for easily adding/removing permanent translates like \"injured\"/\"haste\", etc\n\n### Version 0.80\n- Added animations.lua library"
  },
  {
    "path": "AttachmentsChangeLog.md",
    "content": "# attachments.lua ChangeLog\n\n### Version 1.00\n- Ensured that created attachment props have unique entity names.\n- Fixed a bug related to the \"Particles\" section of the attachment database breaking on AttachProp\n- Made it so that you don't have to enter the addon name when doing \"attachment_configure\"\n- Fixed GetCurrentAttachment not working in normal non-gui use\n\n### Version 0.85\n- Added the ability to attach multiple particles to a given prop.\n\n### Version 0.84\n- Added handling of Particle attachments to props via the attachments.txt database.\n- Added Particle example to example attachments.txt database.\n- Fixed the Attachments Configuration system being able to override extra keys placed in individual attachment definitions.  Extra key/values will not stick through saves/loads.\n- Added optional \"Animation\" key to attachment properties in the attachments.txt database which will spawn the prop in question and force it into the given animation string.\n\n### Version 0.83\n- Fixed debug spheres appearing when using AttachProp from in game.\n- Fixed attachments.txt database scale not being used when scale is omitted from AttachProp call.\n\n### Version 0.82\n- Added the ability to press Enter in any TextEntry to submit changes in the Attachment Configuration GUI\n- Added the ability to scale the value of the + and - buttons for coarse and fine refinement\n- Added the ability to toggle on/off the Debug Spheres showing the attachment point and prop point\n- Removed the dependency on an external lua_modifier by internalizing the modifier definition to attachments.lua\n- Removed the stun particle effect when Freezing a unit\n\n\n### Version 0.81\n- Added the ability to set a prop to attach to \"attach_origin\" point, even if this attach string does not directly exist\n- Removed extra \"model\" and \"attach\" properties from being saved to the attachment database\n- Fixed up the model scale settings so that changing the scale of a model after attaching a prop will maintain prop proportions\n- Added Attachments:GetAttachmentDatabase() function\n- Adjusted the default scripts/attachments.txt database to contain correct values for a couple demonstration prop attaches\n\n### Version 0.80\n- Added attachments.lua library"
  },
  {
    "path": "ChangeLog.md",
    "content": "# Barebones ChangeLog\n\n### Version 1.01c\n- Added example \"REMOVE\" lines to npc_abilities_override.txt for the new 6.87 items.\n\n### Version 1.01b\n- [physics.lua] Fixed visual issue in physics.lua box drawing + CreateBox bug\n\n### Version 1.01a\n- [worldpanels.lua] Added \"data\" object which can be added in the world panel configuration table to send arbitrary primitive data to the created worldpanel in javascript, accessible as $.GetContextPanel().Data\n- [worldpanels.lua] Fixed an issue with completely client-unknown entities immideately deleting their world panels on create.\n\n### Version 1.01\n- New Library: WorldPanels  --  Containers allows for creating panorama layout panels that track the world position of an entity (or fixed world coordinate).\n\n### Version 1.00\n- New Library: Containers  --  Containers allows for additional inventory/item containing objects and shops\n- New Library: (by Noya): Selection API.\n- New Library: PathGraph  --  Constructs a full-edge graph of all \"path_corner\" objects.\n- New Library: Modmaker  --  Offers a searchable version of the lua server vscript API through the \"modmaker_api\" console command (in tools mode)\n- Fixed HideWearables utility function.\n- Fixed OnItemPickedUp to work if a non-hero unit picks up an item.\n- Fixed a minor potential deficiency in the randomseed selection\n- Removed the need to call internal Barebones functions from the implementation events.lua\n- Re-enabled \"barebones_spew\" cvar to allow for adjusting the visibility of barebones debugging messages\n- Added new dota items to the commented out removal lines in npc_abilities_override.txt\n- Added several new settings to settings.lua.\n- Added an \"animation_example\" folder containing a demonstration of lua-scripted animation adjustments for models.\n- [attachments.lua] Ensured that created attachment props have unique entity names.\n- [attachments.lua] Fixed a bug related to the \"Particles\" section of the attachment database breaking on AttachProp\n- [attachments.lua] Made it so that you don't have to enter the addon name when doing \"attachment_configure\"\n- [attachments.lua] Fixed GetCurrentAttachment not working in normal non-gui use\n- [projectiles.lua] Added a bDestroyImmediate property to the projectile definition which determines whether the DestroyParticle call should perform an immediate destruction.\n- [projectiles.lua] Fixed a bug with changing velocity of certain projectiles.\n- [projectiles.lua] Fixed a bug with OnFinish on ground collision.\n- [projectiles.lua] Fixed an issue where projectile:Destroy() did not halt the particle simulation.\n- [projectiles.lua] Added projectile:GetCreationTime(), projectile:GetDistanceTraveled(), projectile:GetPosition(), projectile:GetVelocity()\n- [projectiles.lua] Projectiles now reports its thinker as \"projectiles_lua_thinker\" if the Entity System warns of the projectiles simulation running too long in console.\n- [physics.lua] Updated to a new order of operations within the simulation.  If your existing code breaks, use physics_old.lua to maintain the old operation order.\n- [physics.lua] Fixed an issue where unit:StopPhysicsSimulation() did not halt the physics simulation.\n- [physics.lua] Calling Physics:Unit again now reinitializes the simulation in tools mode, but is ignored in live game mode.\n- [physics.lua] Added a flat friction in addition to the percentage friction already existing.\n- [physics.lua] Added static velocity setting/getting to manipulate individual force components separate from the combined force.\n- [physics.lua] Added the ability to have a physics unit cut trees as it moves.\n- [physics.lua] Added the ability for a unit to navigate according to the slope of the terrain itself for non-GNV navigation.\n- [physics.lua] Physics now reports its thinker as \"physics_lua_thinker\" if the Entity System warns of the physics simulation running too long in console.\n- [timers.lua] Added a shorthand for Timers:CreateTimer(...) as Timers(...)\n- [timers.lua] Timers now continue to run after the game ends for post-game timing execution.\n- [timers.lua] Timers library is now accessible as GameRules.Timers for instances where the Timers global is out of scope (triggers, etc)\n- [timers.lua] Timers now allows a timer to successfully call Timers:RemoveTimer on itself from within the execution callback of the timer\n- [timers.lua] Timers now reports its thinker as \"timers_lua_thinker\" if the Entity System warns of timers running too long in console.\n\n### Version 0.95c\n- Removed the RegisterConvar call from internal/gamemode.lua since Valve broke it and has yet to fix it.\n\n### Version 0.95b\n- [attachments.lua] Added the ability to attach multiple particles to a given prop.\n\n### Version 0.95\n- [notifications.lua] Changed the names of the panorama files from barebones_hud_base.* to barebones_notifications.*\n- [projectiles.lua] Fixed 0-velocity projectiles producing a divide by 0 error\n\n### Version 0.94d\n- Added HideWearables and ShowWearables global utility functions.\n- [attachments.lua] Added handling of Particle attachments to props via the attachments.txt database.\n- [attachments.lua] Added Particle example to example attachments.txt database.\n- [attachments.lua] Fixed the Attachments Configuration system being able to override extra keys placed in individual attachment definitions.  Extra key/values will not stick through saves/loads.\n- [attachments.lua] Added optional \"Animation\" key to attachment properties in the attachments.txt database which will spawn the prop in question and force it into the given animation string.\n\n### Version 0.94c\n- [attachments.lua] Fixed debug spheres appearing when using AttachProp from in game.\n- [attachments.lua] Fixed attachments.txt database scale not being used when scale is omitted from AttachProp call.\n\n### Version 0.94b\n- [attachments.lua] Added the ability to press Enter in any TextEntry to submit changes in the Attachment Configuration GUI\n- [attachments.lua] Added the ability to scale the value of the + and - buttons for coarse and fine refinement\n- [attachments.lua] Added the ability to toggle on/off the Debug Spheres showing the attachment point and prop point\n- [attachments.lua] Removed the dependency on an external lua_modifier by internalizing the modifier definition to attachments.lua\n- [attachments.lua] Removed the stun particle effect when Freezing a unit\n\n### Version 0.94a\n- [attachments.lua] Added the ability to set a prop to attach to \"attach_origin\" point, even if this attach string does not directly exist\n- [attachments.lua] Removed extra \"model\" and \"attach\" properties from being saved to the attachment database\n- [attachments.lua] Fixed up the model scale settings so that changing the scale of a model after attaching a prop will maintain prop proportions\n- [attachments.lua] Added Attachments:GetAttachmentDatabase() function\n- [attachments.lua] Adjusted the default scripts/attachments.txt database to contain correct values for a couple demonstration prop attaches\n\n### Version 0.94\n- Fixed the issue introduced due to Valve removing PlayerResource:HaveAllPlayersJoined()\n- Added attachments.lua library and associated panorama GUI for creating attachment profiles\n- Added missing hero references to herolist.txt\n- Added handling for 'player_chat' event and userID->Player Entity tracking to the events.lua and internal/events.lua files\n- [timers.lua] Added the ability to call a function with a table context\n- [timers.lua] Added the use of the lua 'xpcall' function to give full stack traces if a timer errors out during execution.\n- [animations.lua] Added FreezeAnimation function to allow for animations to be paused at any time\n- [animations.lua] Added UnfreezeAnimation function to allow animations to be unpaused at any time\n\n### Version 0.93c\n- Added ability/item inflictor entity retrieval to OnEntityHurt and OnEntityKilled in events.lua\n\n### Version 0.93b\n- [animations.lua] Fixed an issue where perfectly sequential animations would not play\n- [animations.lua] Added several missing translate activity modifiers\n- [animations.lua] Added AddAnimationTranslate and RemoveAnimationTranslate commands to allow for easily adding/removing permanent translates like \"injured\"/\"haste\", etc\n\n### Version 0.93\n- Added animations.lua library\n- Added USE_UNSEEN_FOG_OF_WAR to settings.lua to allow for turning on unseen fog of war behavior\n- Updated notifications subsystem to support deleting notifications on-demand\n- Added additional guards to better handle 'script_reload' for timers.lua\n- Added additional guards to better handle 'script_reload' for projectiles.lua\n- Added additional guards to better handle 'script_reload' for physics.lua\n\n### Version 0.92c\n- Updated notifications subsystem to support DOTAItemImage panel type.\n\n### Version 0.92b\n- Updated notifications subsystem to apply hittest=\"false\" to all generated panels\n\n### Version 0.92\n- Updated notifications.lua to support DOTAAbilityImage and Image panel types.\n- Updated notifications.lua to use a table-based function call **NOTE: Older multi-parameter calls to notifications.lua WILL FAIL.**\n- Updated examples/notificationsExample.lua to reflect the new calls and table argument system.\n- Fixed a simulation-failure issue with tree-handling in projectiles.lua when bCutTrees is false.\n- Added changelog links for each library to Readme.md\n\n### Version 0.91b\n- Added new property to projectiles.lua projectile tables, \"fVisionTickTime\" which controls how quickly the projectile vision updates while the projectile is in motion.\n\n### Version 0.91\n- Began version tracking of all libraries.\n- Fixed an issue where default projectiles.lua projectiles would not take on the correct velocity-oriented orientation automatically.\n- Fixed an issue with the parameters for certain notifications.lua functions not accepting the \"continue\" parameter\n\n### Version 0.90\n- Started tracking version updates\n- Updated projectiles.lua to allow for better orientation handling\n- Updated projectiles.lua with new properties for projectile vision-related\n- Updated ProjectilesReadme.md with new property information\n- Updated examples/projectile.lua with new properties\n- Fixed projectiles.lua tree detection to work with Reborn."
  },
  {
    "path": "CollidersReadme.md",
    "content": "# **BMD's Lua Unit Colliders Library**\n--------------------------------\nSee [PhysicsReadme.md](https://github.com/bmddota/barebones/blob/source2/PhysicsReadme.md) for documentation and examples on using Physics/Motion controls.\n\n#### **How to install:**\n- Drop physics.lua in with your vscripts\n- Add require( 'physics' ) somewhere in your lua instantiation path\n\n#### **How to use:**\n- The colliders system can operate on regular units and Physics-units (though can only operate on Physics-units in some noted cases)\n- Colliders are constructed out of collider tables, of which several profiles are provided with this library (and more can be created)\n- Colliders are one of 3 primary types, COLLIDER_SPHERE, COLLIDER_BOX, or COLLIDER_AABOX\n  - COLLIDER_SPHERE collides with units in a sphere around the cnter and can be attached to a unit (the collider center will follow its position).\n  - COLLIDER_BOX is a rectangular box collider which does not need to be aligned with the X/Y axes.\n  - COLLIDER_AABOX is a rectangular box collider which must be aligned with the X/Y axes.  These are generally far cheaper than COLLIDER_BOX.\n- Colliders can be expensive.  Pay close attention to the .filter and .test properties of each collider in order to improve performance.\n- The easiest way to jump in with colliders is to check out the Collider Profiles and Examples sections\n\n\n**Colliders Library Functions**\n=============================\n#### **Physics:AddCollider([name,] collider)**\n  This function is used for creating a collider without a profile without being tied to any particular unit.  The \"name\" parameter is optional, but must be unique if given.  Collider follows the standard collider format as given in the Collider Format section.  Returns the registered collider for additional modification/reference.\n\n#### **Physics:ColliderFromProfile(profileName[, collider])**\n  This function is used to create a new collider from the given collider profile name.  The profile name must match a registered profile.  Returns a copy of the collider profile modified with the properties passed in for the 'collider' table if given.\n\n#### **Physics:CreateColliderProfile(profileName, profile)**\n  This function is used to create and register a new collider profile for the given profile name.  This registered collider profile can then be used to create new colliders using the profile collider table as a base.\n\n#### **Physics:RemoveCollider(name)**\n  This function removes a collider by name from the Physics API so that it is no longer processed.\n\n\n**PhysicsUnit Functions**\n=============================\nA unit which has been converted to a Physics Unit can have a collider attached to it and managed using the following functions:\n\n#### **AddCollider([name,] collider)**\n  This function can be called to add a collider (in the correct Collider Format) to the unit.  An optional name can be given, or a unique name will be used.  The resulting collider will be returned for further adjustment/management.\n\n#### **AddColliderFromProfile([name,] profile, [collider])**\n  This function can be called to add a collider from a registered collider profile to this unit.  The profile must be provided, as can an optional name or collider properties table.  The resulting collider will be returned for further adjustment/management.\n\n#### **GetColliders()**\n  Returns a table of all colliders attached to this unit in {name=colliderTable} format.\n\n#### **GetMass()**\n  Returns the mass of this unit for use in \"momentum\" collider calculations.  The default mass is set to 100.\n\n#### **RemoveCollider(name)**\n  This function can be called to remove a collider by name from this unit.  The collider will also be removed from the Physics API.\n\n#### **SetMass(mass)**\n  Sets the mass of this unit for use in \"momentum\" collider calculations.\n\n\n\n**Collider Table Format**\n=============================\nColliders are effectively a formatted lua table which is registered with the Physics API for processing and action.  All collider tables have the following properties and functions, though individual colliders can have additional properties/functions in order to support their actions:\n\n### **COLLIDER_SPHERE Type**\n| Property  | Description |\n| :------------ | :-----|\n| draw      | Whether to DebugDraw the collider for visual confirmation.  Additionally, a table can be provided with color and alpha properties. | \n| filter      | An optional table of entities which will be checked by the collider system.  If left nil all entities within possible range will be checked.| \n| name       | The unique string used as a registration reference for this collider\n| radius      | The radius within which to detect and test entities for collision | \n| skipFrames      | The number of frames to skip between tests.  Each frame is 33 milliseconds delay.  Defaults to 0 (30 checks per second) | \n| skipOffset | Advanced property used to space out colliders with skipFrames.  Automatically set by Physics API. | \n| type | COLLIDER_SPHERE, COLLIDER_BOX, or COLLIDER_AABOX | \n\n\n| Functions  | Parameters | Description |\n| :------------ | :---------| :-----|\n| action      | colliderTable, colliderUnit, collidedUnit | Called when a unit has been found within the collider and has passed the filter and test.  Called after the preaction has run.  Actual unit motion processing is done here for built-in profiles. |\n| filter      | colliderTable | An optional function which should return a table of entities to check.  If left nil all entities within possible range will be checked. |\n| preaction      | colliderTable, colliderUnit, collidedUnit | Called when a unit has been found within the collider and has passed the filter and test.  Called before the action.  Use this function to add a pre-motion action to built-in profiles. |\n| postaction      | colliderTable, colliderUnit, collidedUnit | Called when a unit has been found within the collider and has passed the filter and test.  Called after the action.  Use this function to add a post-motion action to built-in profiles. |\n| test      | colliderTable, colliderUnit, collidedUnit | Called when a unit is found within the collider range to test for matching the collider criteria.  This function should return true if the collider should interact with the colliding unit, and false if not. |\n\n\n### **COLLIDER_BOX/COLLIDER_AABOX Type**\n\n| Property  | Description |\n| :------------ | :-----|\n| box      | The definition of the box used in BOX and AABOX type colliders.  For AABOX this is a table of two vectors defining the x,y,z mins and maxs.  For BOX this is a table of three vectors defining a diagonal triangle across the box.  See Physics:CreateBox().|\n| draw      | Whether to DebugDraw the collider for visual confirmation.  Additionally, a table can be provided with color and alpha properties. | \n| filter      | An optional table of entities which will be checked by the collider system.  If left nil all entities within possible range will be checked.| \n| name       | The unique string used as a registration reference for this collider |\n| recollideTime | The amount of gametime to prevent a recollision with this collider by any given unit.  Generally 0. |\n| skipFrames      | The number of frames to skip between tests.  Each frame is 33 milliseconds delay.  Defaults to 0 (30 checks per second) | \n| skipOffset | Advanced property used to space out colliders with skipFrames.  Automatically set by Physics API. | \n| type | COLLIDER_SPHERE, COLLIDER_BOX, or COLLIDER_AABOX | \n\n\n| Functions  | Parameters | Description |\n| :------------ | :---------| :-----|\n| action      | colliderTable, boxDefinition, collidedUnit | Called when a unit has been found within the collider and has passed the filter and test.  Called after the preaction has run.  Actual unit motion processing is done here for built-in profiles. |\n| filter      | colliderTable | An optional function which should return a table of entities to check.  If left nil all entities within possible range will be checked. |\n| preaction      | colliderTable, boxDefinition, collidedUnit | Called when a unit has been found within the collider and has passed the filter and test.  Called before the action.  Use this function to add a pre-motion action to built-in profiles. |\n| postaction      | colliderTable, boxDefinition, collidedUnit | Called when a unit has been found within the collider and has passed the filter and test.  Called after the action.  Use this function to add a post-motion action to built-in profiles. |\n| test      | colliderTable, boxDefinition, collidedUnit | Called when a unit is found within the collider range to test for matching the collider criteria.  This function should return true if the collider should interact with the colliding unit, and false if not. |\n  \n\n**Built-in Collider Profiles**\n=============================\n## **COLLIDER_SPHERE**\n\n### **blocker**\nA blocker collider blocks out either the colliding unit or the collider-attached unit whenever a successful collision is found.  Can affect non-Physics units.\n\n| Property  | Description |\n| :------------ | :-----|\n| buffer      | Additional distance beyond the collider radius to block units out that collide with this collider.  Defaults to 0.|\n| findClearSpace      | Whether to use FindClearSpaceForUnit to block the colliding unit out.  Defaults to false. | \n| moveSelf      | If set to true, this collider will move the attached unit instead of the colliding unit. Defaults to false.| \n\n\n### **delete**\nA delete collider deletes the colliding unit or the collider-attached unit whenever a successful collision is found.  Can affect non-Physics units.\n\n| Property  | Description |\n| :------------ | :-----|\n| deleteSelf      | If set to true, this collider will delete the attached unit instead of the colliding unit.  Defaults to true.|\n| removeCollider      | When this collider successfully collides with a unit, immediately remove it so as to prevent further collisions.  Defaults to true. | \n\n\n### **gravity**\nA gravity collider applies a force to any colliding unit attracting it towards the collider-attached unit with a given force and function.\n\n| Property  | Description |\n| :------------ | :-----|\n| force      | The amount of force/velocity in hammer units per second to apply to a colliding unit within the full-effect radius of this collider. Default is 1000.|\n| fullRadius      | The radius to use as the full effect radius at which point full force is applied.  Defaults to 0.  Must be less than the radius. | \n| linear      | Whether this collider should use a linear gravity force falloff between the fullRadius and radius.  If set to false, uses standard quadratic falloff. Default is false.|\n| minRadius      | The radius to use for when a colliding unit is too close to the attached unit and should receive 0 gravitational force. An \"eye-of-the-storm\" radius. Default is 0.|\n\n\n### **repel**\nA repel collider applies a force to any colliding unit repelling it away from the collider-attached unit with a given force and function.\n\n| Property  | Description |\n| :------------ | :-----|\n| force      | The amount of force/velocity in hammer units per second to apply to a colliding unit within the full-effect radius of this collider. Default is 1000.|\n| fullRadius      | The radius to use as the full effect radius at which point full force is applied.  Defaults to 0.  Must be less than the radius. | \n| linear      | Whether this collider should use a linear repulsion force falloff between the fullRadius and radius.  If set to false, uses standard quadratic falloff. Default is false. |\n| minRadius      | The radius to use for when a colliding unit is too close to the attached unit and should receive 0 repulsion force. An \"eye-of-the-storm\" radius. Default is 0.|\n\n\n### **reflect**\nA reflect collider applies a reflection force using the incident vector of collision with the collider sphere to redirect the velocity of the colliding unit.  Additionally can act as a blocker.\n\n| Property  | Description |\n| :------------ | :-----|\n| block | Whether this collider should also act as a blocker for units.  Defaults to true.|\n| blockRadius      | If blocking, the radius from the collider-attached unit from which to begin blocking units.  Defaults to 100.|\n| buffer      | If blocking, the additional distance beyond the collider radius to block units out that collide with this collider.  Defaults to 0.|\n| findClearSpace      | If blocking, whether to use FindClearSpaceForUnit to block the colliding unit out.  Defaults to false. | \n| moveSelf      | If blocking and set to true, this collider will move the attached unit instead of the colliding unit. Defaults to false.| \n| multiplier | The scalar multiplier to apply to the incident vector velocity to create the reflecting force.  Defaults to 1.0|\n\n\n### **momentum**\nA momentum collider applies a force to the colliding unit and collider-attached unit in accordance with their mass as set on their Physics Unit settings.  The elasticity coefficient of the collision can be set.  Additionally can act as a blocker.\n\n| Property  | Description |\n| :------------ | :-----|\n| block | Whether this collider should also act as a blocker for units.  Defaults to true.|\n| blockRadius      | If blocking, the radius from the collider-attached unit from which to begin blocking units.  Defaults to 100.|\n| buffer      | If blocking, the additional distance beyond the collider radius to block units out that collide with this collider.  Defaults to 0.|\n| elasticity | The elasticity of the collision mediated by this collider. A setting of 1 means a fully elastic collision, while a setting of 0 means a fully inelastic collision.  If two momentum colliders collide, a setting of 0 will result in an elastic collision after both colliders process the collision. Defaults to 1.|\n| findClearSpace      | If blocking, whether to use FindClearSpaceForUnit to block the colliding unit out.  Defaults to false. | \n| moveSelf      | If blocking and set to true, this collider will move the attached unit instead of the colliding unit. Defaults to false.| \n\n### **momentumFull**\nA momentumFull collider applies a force to the colliding unit and collider-attached unit in accordance with their mass as set on their Physics Unit settings.  MomentumFull differs from a standard momentum collider by ensuring that full force is always transferred regardless of the angle.  The elasticity coefficient of the collision can be set.  Additionally can act as a blocker.\n\n| Property  | Description |\n| :------------ | :-----|\n| block | Whether this collider should also act as a blocker for units.  Defaults to true.|\n| blockRadius      | If blocking, the radius from the collider-attached unit from which to begin blocking units.  Defaults to 100.|\n| buffer      | If blocking, the additional distance beyond the collider radius to block units out that collide with this collider.  Defaults to 0.|\n| elasticity | The elasticity of the collision mediated by this collider. A setting of 1 means a fully elastic collision, while a setting of 0 means a fully inelastic collision.  If two momentum colliders collide, a setting of 0 will result in an elastic collision after both colliders process the collision. Defaults to 1.|\n| findClearSpace      | If blocking, whether to use FindClearSpaceForUnit to block the colliding unit out.  Defaults to false. | \n| moveSelf      | If blocking and set to true, this collider will move the attached unit instead of the colliding unit. Defaults to false.| \n\n\n-----------------------------------\n## **COLLIDER_AABOX / COLLIDER_BOX**\n\n### **aaboxblocker** / **boxblocker**\nA boxblocker collider blocks out the colliding unit whenever a successful collision is found.  Can affect non-Physics units if 'slide' property is set to false.\n\n| Property  | Description |\n| :------------ | :-----|\n| buffer      | The additional distance beyond the collider box definition to block units out that collide with this collider.  Defaults to 0.|\n| findClearSpace      | Whether to use FindClearSpaceForUnit to block the colliding unit out.  Defaults to false. | \n| slide      | Whether the colliding Physics Unit should slide along the edge of the box with which it collides. Defaults to true.| \n\n\n### **aaboxreflect** / **boxreflect**\nA boxreflect collider blocks out the colliding unit whenever a successful collision is found.  \n\n| Property  | Description |\n| :------------ | :-----|\n| block | Whether this collider should also act as a blocker for units.  Defaults to true.|\n| buffer      | The additional distance beyond the collider box definition to block units out that collide with this collider.  Defaults to 0.|\n| findClearSpace      | Whether to use FindClearSpaceForUnit to block the colliding unit out.  Defaults to false. | \n| multiplier | The scalar multiplier to apply to the incident vector velocity to create the reflecting force.  Defaults to 1.0|\n\n\n\n\n\n**Examples:** \n=============================\nSee [examples/colliders.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/examples/colliders.lua) for collider examples as demonstrated in [my youtube video](https://www.youtube.com/watch?v=AxBxQIcEMI8)."
  },
  {
    "path": "ContainersChangeLog.md",
    "content": "# containers.lua ChangeLog\n\n### Version 0.80\n- Added containers.lua library"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "ModmakerChangeLog.md",
    "content": "# modmaker.lua ChangeLog\n\n### Version 0.80\n- Added modmaker.lua library"
  },
  {
    "path": "NOTICE",
    "content": "Copyright 2014 BMD\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License."
  },
  {
    "path": "NotificationsChangeLog.md",
    "content": "# notifications.lua ChangeLog\n\n### Version 1.00\n- Updated version to reflect the Barebones 1.0 release\n\n### Version 0.89\n- Changed the names of the panorama files from barebones_hud_base.* to barebones_notifications.*\n\n### Version 0.88\n- Updated notifications subsystem to support deleting notifications on-demand\n\n### Version 0.87\n- Updated notifications subsystem to support DOTAItemImage panel type.\n\n### Version 0.86\n- Updated notifications subsystem to apply hittest=\"false\" to all generated panels\n\n### Version 0.85\n- Updated notifications.lua to support DOTAAbilityImage and Image panel types.\n- Updated notifications.lua to use a table-based function call **NOTE: Older multi-parameter calls to notifications.lua WILL FAIL.**\n- Updated examples/notificationsExample.lua to reflect the new calls and table argument system.\n\n### Version 0.80\n- Added global NOTIFICATIONS_VERSION\n- Started tracking version updates for notifications.lua"
  },
  {
    "path": "PathGraphChangeLog.md",
    "content": "# pathgraph.lua ChangeLog\n\n### Version 0.80\n- Added pathgraph.lua library"
  },
  {
    "path": "PhysicsChangeLog.md",
    "content": "# physics.lua ChangeLog\n\n### Version 1.01\n- Fixed visual issue in physics.lua box drawing + CreateBox bug\n\n### Version 1.00\n- Updated to a new order of operations within the simulation.  If your existing code breaks, use physics_old.lua to maintain the old operation order.\n- Fixed an issue where unit:StopPhysicsSimulation() did not halt the physics simulation.\n- Calling Physics:Unit again now reinitializes the simulation in tools mode, but is ignored in live game mode.\n- Added a flat friction in addition to the percentage friction already existing.\n- Added static velocity setting/getting to manipulate individual force components separate from the combined force.\n- Added the ability to have a physics unit cut trees as it moves.\n- Added the ability for a unit to navigate according to the slope of the terrain itself for non-GNV navigation.\n- Physics now reports its thinker as \"physics_lua_thinker\" if the Entity System warns of the physics simulation running too long in console.\n\n### Version 0.91\n- Added additional guards to better handle 'script_reload' \n\n### Version 0.90\n- Added global PHYSICS_VERSION\n- Started tracking version updates for physics.lua"
  },
  {
    "path": "PhysicsReadme.md",
    "content": "# **BMD's Lua Unit Physics Library**\n--------------------------------\nSee [CollidersReadme.md](https://github.com/bmddota/barebones/blob/source2/CollidersReadme.md) for documentation and examples on using Colliders.\n\n#### **How to install:**\n- Drop physics.lua in with your vscripts\n- Add require( 'physics' ) somewhere in your lua instantiation path\n\n#### **How to use:**\n- To turn any dota unit into a Physics unit, run\n  Physics:Unit(unitEntity)\n- This adds a bunch of new functions to the unit which allow for it to simulate physics\n- All velocity/acceleration vectors are in hammer units per second or hammer units per second squared\n\n**Physics Library Functions**\n=============================\n#### **Physics:Unit (unit)**\n  Makes a unit into a \"physics\" unit which can be manipulated using the PhysicsUnit functions\n\n#### **Physics:GenerateAngleGrid()**\n  This function is used to generate and apply an angle grid (calculated GNV normal map) for the current map so as to yield better bounces for PHYSICS_NAV_BOUNCE and PHYSICS_NAV_SLIDE collisions.\n\n#### **Physics:AngleGrid (anggrid, angoffsets)**\n  This function is an advanced means of setting a normal map for GridNav collisions so as to yield better bounces for PHYSICS_NAV_BOUNCE and PHYSICS_NAV_SLIDE collisions.\n\n#### **IsPhysicsUnit (unit)**\n  This global function returns true if the unit in question has been converted to a \"physics\" unit.\n\n\n\n**PhysicsUnit Functions:**\n=============================\n#### **AdaptiveNavGridLookahead (boolean)**\n  Whether this unit should use an adaptive navgrid lookahead system to more reliably detect GNV collisions at high speed\n\n#### **AddPhysicsAcceleration (accelerationVector)**\n  Adds a new acceleration vector to the current internal acceleration vector.\n\n#### **AddPhysicsVelocity (velocityVector)**\n  Adds a new velocity vector to the current internal velocity vector.  This is effectively a force push on the unit.\n\n#### **AddStaticVelocity (name, velocityVector)**\n  Adds a new velocity vector to the current internal static velocity vector of the given name.\n\n#### **ClearStaticVelocity ()**\n  Clears all current static velocity vectors, effectively setting them to (0,0,0)\n\n#### **CutTrees (boolean)**\n  Sets whether this unit should automatically cut trees when it collides with them or not.  Default is false.\n\n#### **FollowNavMesh (boolean)**\n  Whether this unit should respect the NavMesh when moving and exhibit NavCollisionType behavior when interacting with a NavGrid block\n\n#### **GetAutoUnstuck ()**\n  Whether this unit will be returned to its last known good position in the event that it is determined to be stuck in unpathable terrain.  Default is true.\n\n#### **GetBounceMultiplier ()**\n  Returns the float representing the multiplier to apply to a unit's velocity's magnitude in the event that they bounce via PHYSICS_NAV_BOUNCE.  Default is 1.0 (aka no velocity magnitude change)\n\n#### **GetBoundOverride ()**\n  Returns the current boundary radius override for this unit, which will be used when blocking the unit out from navigation grid collisions so that it doesn't get stuck.  Default is the larget value of \"unit:GetPaddedCollisionRadius() + 1\" or \"math.max(unit:GetBoundingMaxs().x, unit:GetBoundingMaxs().y)\"\n\n#### **GetLastGoodPosition ()**\n  Returns the vector position which was the last known position that the unit was in that was unblocked/pathable.\n\n#### **GetNavCollisionType ()**\n  Returns the current GridNav Collision Type (PHYSICS_NAV_NOTHING, PHYSICS_NAV_HALT, PHYSICS_NAV_SLIDE, PHYSICS_NAV_BOUNCE, or PHYSICS_NAV_GROUND)\n\n#### **GetNavGridLookahead ()**\n  Returns the current number of Navigation Grid lookahead points.  See SetNavGridLookahead for more details. Default is 1\n\n#### **GetNavGroundAngle ()**\n  Returns the current terrain angle that will cause PHYSICS_NAV_GROUND based navigation to slide.\n\n#### **GetPhysicsAcceleration ()**\n  Returns the current acceleration vector.  Default is (0,0,0)\n\n#### **GetPhysicsBoundingRadius ()**\n  Returns the current bounding radius used for navgrid collision.  Default is the PaddedCollisionRadius of a unit.\n\n#### **GetPhysicsFlatFriction ()**\n  Returns the current flat friction amount.  Default is 0\n\n#### **GetPhysicsFriction ()**\n  Returns the current friction multiplier and flat friction amount.  Default is .05, 0\n\n#### **GetPhysicsVelocity ()**\n  Returns the current velocity vector.  Default is (0,0,0)\n\n#### **GetPhysicsVelocityMax ()**\n  Returns the maximum velocity.  Default is 0, representing an unlimited velocity\n\n#### **GetRebounceFrames ()**\n  Returns the number of rebounce frames to wait between PHYSICS_NAV_BOUNCE collisions.  Default is 2.\n\n#### **GetStaticVelocity (name)**\n  Returns the current static velocity force for the given name.\n\n#### **GetStuckTimeout ()**\n  Returns the number of frames necessary to determine if a unit is stuck in unpathable terrain and to activate AutoUnstuck\n\n#### **GetSlideMultiplier ()**\n  Returns the slide multipler value. Default is 0.1\n\n#### **GetTotalVelocity ()**\n  Returns the unit's total velocity (i.e. Physics velocity + slide velocity + standard right-click movement).  This is nonfunctional while a unit is hibernating, and will return Vector(0,0,0) on the first frame that a Physics unit is created, but a correct value thereafter.\n\n#### **GetVelocityClamp ()**\n  Returns the current velocity clamp in hammer units per second.  Default is 20 hammer units per second\n\n#### **Hibernate (boolean)**\n  Whether this unit should Hibernate when there is no sliding/acceleration/velocity.  When hibernating the unit performs no physics calculation until new force/acceleration/sliding is applied.  Additionally, OnPhysicsFrame will not be called if this unit is hibernating.Default is that a unit will hibernate.\n\n#### **IsAdaptiveNavGridLookahead ()**\n  Returns whether this unit will use an adaptive navgrid lookahead system to more reliably detect GNV collisions at high speed\n\n#### **IsCutTrees ()**\n  Returns whether this unit is currently set to automatically cut trees it collides with.  Default is false\n\n#### **IsFollowNavMesh ()**\n  Returns whether this unit will respect the navigation mesh when moving the unit around.\n\n#### **IsHibernate ()**\n  Returns whether this unit should hibernate when there are no physics calculations to be performed\n\n#### **IsInSimulation ()**\n  Returns whether this unit is currently in an active physics simulation or not.\n\n#### **IsLockToGround ()**\n  Returns whether this unit will lock the unit to the ground while performing position calculations. \n\n#### **IsPreventDI ()**\n  Returns whether this unit will be prevented from influencing the direction of the physics calculations.\n\n#### **IsSlide ()**\n  Returns whether this unit is currently sliding\n\n#### **OnBounce (function(unit, normal))**\n  Set the callback function to be executed when a PHYSICS_NAV_BOUNCE is occuring, but after the velocity rebound calculation has been performed and applied.  The function passed in has two parameters given to it, the unit in question and the normal vector of the surface that the unit is bouncing off of.\n\n#### **OnPreBounce (function(unit, normal))**\n  Set the callback function to be executed when a PHYSICS_NAV_BOUNCE is occuring, but before the velocity rebound calculation has been performed and applied.  The function passed in has two parameters given to it, the unit in question and the normal vector of the surface that the unit is bouncing off of.\n\n#### **OnHibernate (function(unit))**\n  Set the callback function (with one parameter, the unit in question) to be executed in the event that this unit begins hibernating.\n\n#### **OnSlide (function(unit, normal))**\n  Set the callback function to be executed when a PHYSICS_NAV_SLIDE is occuring, but after the velocity direction nullification has been performed and applied.  The function passed in has two parameters given to it, the unit in question and the normal vector of the surface that the unit is sliding off of.\n\n#### **OnPreSlide (function(unit, normal))**\n  Set the callback function to be executed when a PHYSICS_NAV_SLIDE is occuring, but before the velocity direction nullification has been performed and applied.  The function passed in has two parameters given to it, the unit in question and the normal vector of the surface that the unit is sliding off of.\n\n#### **OnPhysicsFrame (function(unit))**\n  Set the callback function (with one parameter, the unit in question) to be executed every frame for this unit so long as it is not hibernating. You can use this function to do additional calculations/collision detection/velocity modification.\n\n#### **PreventDI (boolean)**\n  Whether to prevent this unit from influencing the direction of the simulation.  The default is false\n\n#### **SetAutoUnstuck (boolean)**\n  Whether to return this unit to its last known good position in the event that the library determines them to be \"stuck\" for enough frames in an unpathable area.  Default is true.\n\n#### **SetBounceMultiplier (bounceMultipler)**\n  Sets the magnitude to adjust the velocity of a unit in the event of a PHYSICS_NAV_BOUNCE bounce.  .5 would halve the total velocity of the unit, while 2.0 would double it on bounce. Default is 1.0. \n\n#### **SetBoundOverride (bound)**\n  Sets the current boundary radius override for this unit, which will be used when blocking the unit out from navigation grid collisions so that it doesn't get stuck.\n\n#### **SetGroundBehavior (groundBehavior)**\n\n - PHYSICS_GROUND_NOTHING: The unit will be able to pass through terrain and will not change its z-coordinate in any way concerning terrain\n - PHYSICS_GROUND_ABOVE: The unit will follow the ground so long as the ground is \"above\" the unit.  If the unit is above the ground, it will not lock to the ground.\n - PHYSICS_GROUND_LOCK: The unit will remain attached to the ground regardless of z-coordinate position/velocity/acceleration\n\n#### **SetNavCollisionType (navCollisionType)**\n  Sets the behavior that the physics system will use when this unit collides with the GridNav mesh.  Possibilities are PHYSICS_NAV_NOTHING, PHYSICS_NAV_HALT, PHYSICS_NAV_SLIDE, or PHYSICS_NAV_BOUNCE.  Default is PHYSICS_NAV_SLIDE\n  \n - PHYSICS_NAV_NOTHING: The unit will continue normal velocity/position calculations, potentially bumping up against the nav mesh multiple times\n - PHYSICS_NAV_HALT: The unit will halt its velocity immediately in all directions\n - PHYSICS_NAV_SLIDE: The unit will halt its velocity in only the x or y direction depending on the collision direction with the GridNav\n - PHYSICS_NAV_BOUNCE: The unit will bounce off of the GridNav mesh face it contacts with, continuing on in a different direction with the same velocity magnitude\n - PHYSICS_NAV_GROUND: The unit will travel along the ground based on the slope of the terrain, ignoring the GNV entirely.  If the slope of the terrain exceeds the slope limit set with SetNavGroundAngle, then the unit will slide down the terrain.\n\n#### **SetNavGridLookahead (lookaheadPoints)**\n  Sets the number of navigation grid lookahead points to use when determining a navigation grid collision for PHYSICS_NAV_HALT/NOTHING/SLIDE/BOUCE.  The physics system will lookahead to the 1..lookaheadPoints-1 / lookaheadPoints the distance to the next position in order to determine if the unit will pass into an unwalkable location during the next frame. Increasing this number allows for higher speed collisions with the navigation grid and helps to prevent units from slipping through the grid by using speed.  Default is 1.  Note: This adds a lot of calculations even at 3 or 4, so be careful with this value for performance reasons.\n\n#### **SetNavGroundAngle (angle)**\n  Sets the current terrain angle that will cause PHYSICS_NAV_GROUND based navigation to slide.\n\n#### **SetPhysicsAcceleration (accelerationVector)**\n  Sets the internal acceleration vector to the given vector, eliminating any existing acceleration\n\n#### **SetPhysicsBoundingRadius (boundingRadius)**\n  Sets the internal bounding radius used for navgrid collision.\n\n#### **SetPhysicsFlatFriction (flatFriction)**\n  Sets the flat friction amount.  The default is 0.\n\n#### **SetPhysicsFriction (frictionMultiplier[, flatFriction])**\n  Sets the friction multiplier and/or flat friction amount.  The default is .05 and 0.  Not providing flatFriction will keep the current value.\n\n#### **SetPhysicsVelocity (velocityVector)**\n  Sets the internal velocity vector to the given vector, eliminating any existing velocity\n\n#### **SetPhysicsVelocityMax (maxVelocity)**\n  Sets the maximum velocity that the unit will clamp to during the simulation.  Default is 0, which in unlimited\n\n#### **SetRebounceFrames (rebounceFrames)**\n  Sets the number of frames to wait between PHYSICS_NAV_BOUNCE gridnav collisions before allowing for another collision to take place.  Default is 5 (aka 1/6 of a second)\n\n#### **SetSlideMultiplier (slideMultiplier)**\n  Sets the slide multiplier.  The default is 0.1\n\n#### **SetStaticVelocity (name, velocityVector)**\n  Sets the internal static velocity vector to the given vector for this named static velocity vector, eliminating any existing static velocity for this named vector\n\n#### **SetStuckTimeout (stuckFrames)**\n  Sets the number of frames to wait before determining that the player is \"stuck\" in an unpathable area before returning them via AutoUnstuck to their last known good position.  The default is 3 frames (aka .1 seconds).\n\n#### **SetVelocityClamp (clamp)**\n  Sets the velocity magnitude clamp for stopping physics calculations/hibernating.  The default is 20 hammer units per second\n\n#### **SkipSlide (frames)**\n  Sets the number of frames for which to skip the slide calculation for this unit.  This is useful when you need to reposition a unit (respawn/blink/etc) but don'target want the Physics library slide calculation to add in a massive sliding velocity due to that teleport.  In the same frame as the respawn/blink you should issue a  unit:SkipSlide(2).  Slide calculations will resume when all SkipSlide frames are counted out.\n\n#### **Slide (boolean)**\n  Whether this unit should be sliding or not.  Sliding units accelerate based on their direction of travel in addition to their normal movespeed motion.\n\n#### **StartPhysicsSimulation ()**\n  Restart the physics simulation if it has been stopped by StopPhysicsSimulation\n\n#### **StopPhysicsSimulation ()**\n  Stop the physics simulation from executing any more for this unit\n  \n  \n\n**Examples:** \n=============================\nGive a unit sliding motion\n-----------------------------\n    Physics:Unit(hero)\n    hero:Slide(true)\n\nPush a unit to the left\n-----------------------------\n    Physics:Unit(hero)\n    hero:AddPhysicsVelocity(Vector(-1000, 0, 0))\n\nStart an accelerating \"tractor beam\" pulling one unit towards another without their influence\n-----------------------------\n    Physics:Unit(target)\n    target:SetPhysicsVelocityMax(500)\n    target:PreventDI()\n    \n    local direction = source:GetAbsOrigin() - target:GetAbsOrigin()\n    direction = direction:Normalized()\n    target:SetPhysicsAcceleration(direction * 50)\n    \n    target:OnPhysicsFrame(function(unit)\n      -- Retarget acceleration vector\n      local distance = source:GetAbsOrigin() - target:GetAbsOrigin()\n      local direction = distance:Normalized()\n      target:SetPhysicsAcceleration(direction * 50)\n      \n      -- Stop if reached the unit\n      if distance:Length() < 100 then\n        target:SetPhysicsAcceleration(Vector(0,0,0))\n        target:SetPhysicsVelocity(Vector(0,0,0))\n        target:OnPhysicsFrame(nil)\n      end\n    end)"
  },
  {
    "path": "PlayerTablesChangeLog.md",
    "content": "# playertables.lua ChangeLog\n\n### Version 0.90\n- Added playertables.lua library"
  },
  {
    "path": "ProjectilesChangeLog.md",
    "content": "# projectiles.lua ChangeLog\n\n### Version 1.00\n- Added a bDestroyImmediate property to the projectile definition which determines whether the DestroyParticle call should perform an immediate destruction.\n- Fixed a bug with changing velocity of certain projectiles.\n- Fixed a bug with OnFinish on ground collision.\n- Fixed an issue where projectile:Destroy() did not halt the particle simulation.\n- Added projectile:GetCreationTime(), projectile:GetDistanceTraveled(), projectile:GetPosition(), projectile:GetVelocity()\n- Projectiles now reports its thinker as \"projectiles_lua_thinker\" if the Entity System warns of the projectiles simulation running too long in console.\n\n### Version 0.84\n- Fixed 0-velocity projectiles producing a divide by 0 error\n\n### Version 0.83\n- Added additional guards to better handle 'script_reload' \n\n### Version 0.82\n- Fixed a simulation-failure issue with tree-handling in when bCutTrees is false.\n\n### Version 0.81\n- Added new property to projectile tables, \"fVisionTickTime\" which controls how quickly the projectile vision updates while the projectile is in motion.\n\n### Version 0.80\n- Added global PROJECTILES_VERSION\n- Started tracking version updates for projectiles.lua"
  },
  {
    "path": "ProjectilesReadme.md",
    "content": "# **BMD's Lua Advanced Projectiles Library**\n--------------------------------\n\n#### **How to install:**\n- Drop projectiles.lua in with your vscripts\n- Add require( 'projectiles' ) somewhere in your lua instantiation path\n\n#### **How to use:**\n- The projectiles library can be used to generate projectiles which are a combination of mathematical simulation and particle control.\n- Projectiles.lua projectiles do not use a unit or entity as part of the projectile simulation, and as such are lighter weight than unit-based projectiles.\n- Due to not using a unit, the projectile simulation can potentially get out of synch with the particle representation if there a large number of high-velocity changes.  Because of this, a projectile which needs highly complex motion is better off implemented as a Physics:Unit().\n- Projectiles.lua projectiles have more advanced capabilities than default LinearProjectiles, including the ability to dynamically change direction/speed, operate in 3 dimentions, bounce off of walls/ground, be tracked easily by instance, affect trees, etc.\n\n\n**Projectiles Library Functions**\n=============================\n#### **Projectiles:CreateProjectile(projectile)**\n  This function is used to create ane release the projectile defined by the projectile table passed to the function.  The function returns an updated reference to the projectile table on which the Proejctile Table Functions can be called.  See the Projectiles Table Format section for more detail on what properties can be used with the projectile table.\n\n\n#### **Projectiles:CalcSlope(pos, unit, dir)**\n  This function can be used to get the estimated slope of the ground in the given Vector direction 'dir' at the world point Vector 'pos'.  The 'unit' parameter is used to specify what unit should be used with GetGroundPosition() in order to handle the ground collision sizing.  This function can return odd values when used around sheer vertical edges.\n\n#### **Projectiles:CalcNormal(pos, unit, scale)**\n  This function can be used to get the estimated normal Vector of the ground at the world point Vector 'pos'.  The 'unit' parameter is used to specify what unit should be used with GetGroundPosition() in order to handle the ground collision sizing.  This function can return odd values when used around sheer vertical edges.\n\n\n**Projectile Table Functions**\n=============================\nA projectile table which has been fed to CreateProjectile will have the following functions:\n\n#### **projectile:GetVelocity()**\n  This function can be called to get the current velocity vector of this projectile.\n\n#### **projectile:Destroy()**\n  This function can be called to immediately destroy this projectile, triggering its OnFinish callback function if present.\n\n#### **projectile:SetVelocity(newVel[, newPos])**\n  This function can be called to adjust the current velocity of the projectile, as well as the current simulated position of the unit (if specified).  The projectile simulation and particle will only update if the projectile is within its nMaxChanges velocity change limit.\n\n#### **projectile:GetCreationTime()**\n  This function reutnrs the creation time in GameTime of this projectile.\n\n#### **projectile:GetDistanceTraveled()**\n  This function returns the total distance traveled by this projectile in hammer units per second.  Only counts distance moved due to velocity and not by setting a new position with SetVelocity.\n\n#### **projectile:GetPosition()**\n  This function returns the current world position of the projectile.\n\n\n\n\n**Projectiles Table Format**\n=============================\nProjectiles are effectively a formatted lua table which is registered with the Projectiles API for processing and action.  All projectiles tables can have the following properties and functions:\n\n| Property  | Default | Description |\n| :------------ | :--------| :-----|\n| bProvidesVision | false | If set to true, this projectile will provide vision around it as it travels. |\n| bCutTrees | false | If set to true, this projectile will cut any trees that it comes in contact with. |\n| bFlyingVision | true | If set to true and, this projectile will provide flying vision as it travels (if bProvidesVision is enabled) |\n| bGroundLock | false | If set to true, the simulation will lock its height to the ground position + fGroundOffset.  This setting is useful for simulating Dota-like LinearProjectiles that effectively operate in 2D. |\n| bIgnoreSource | true | If set to true, this projectile will not affect source. |\n| bMultipleHits | false | If set to true, this projectile can hit units multiple times after a timeout specified by fRehitDelay. |\n| bRecreateOnChange | true | If set to true, the particle representing the projectile will be Destroyed and recreated whenever a velocity/position change is forced.  If false, only the control points for the existing particle will be changed. |\n| bTreeFullCollision | false | If set to true, this projectile will use the full collision radius of trees in determining tree collision, effectively hitting trees further out from the natural radius. |\n| bZCheck | true | If set to true, this particle will check the height/z-coordinate in order to determine if there is a collision in 3D.  If set to false, it will not care about z-coordinate and will use dota-like 2D collision.  |\n| ControlPoints | {} | A table of additional control points to set when creating/recreating the particle for this projectile.  Use this to set additional particle properties. Ex: {[5]=Vector(2,0,0)} |\n| ControlPointForwards | {} | A table of control points for which to set Forward orientations when creating/recreating the particle for this projectile.  Ex: {[5]=unit:GetForwardVector()} |\n| ControlPointOrientations | {} | A table of control points for which to set Orientations triplets when creating/recreating the particle for this projectile. Ex: {[5]={unit:GetForwardVector(), unit:GetForwardVector(), unit:GetForwardVector()}} |\n| ControlPointEntityAttaches | {} | A table of Entity/ControlPoint attachments to set when creating/recreating the particle for this projectile. Ex: {[0]={unit = hero, pattach = PATTACH_ABSORIGIN_FOLLOW, attachPoint = \"attach_attack1\", -- nil origin = Vector(0,0,0)}} |\n| draw | false | If set to true, will draw a DebugDrawSphere showing the simulation in space as it travels/changes for debugging.  Can be also specified by a table like {color=Vector(200,0,0), alpha=5} for differntiation. |\n| EffectName | &lt;none&gt; | The particle path+file to use for the projectile particle, or \"\" for no particle. |\n| fChangeDelay | .1 | A minimum delay in GameTime to wait between velocity/position changes. |\n| fDistance | 1000 | The maximum travel distance of this projectile at which point it will expire and call OnFinish if present. |\n| fEndRadius | 100 | The projectile collision radius to scale to at the end of this projectiles distance/expiration time. |\n| fExpireTime | 10.0 | The time in seconds of GameTime for this projectile to live.  Will call OnFinish when the expiration time is reached if present. |\n| fGroundOffset | 40 | The z-offset/height to use in Ground-based calculations or ground-locking |\n| fRadiusStep | &lt;computed&gt; | If specified, the radius step is the amount of increase/decrease to happen to the radius every second  |\n| fRehitDelay | 1 | The multiple hit delay in seconds to use for each unit hit by this projectile (i.e. 1.0 means don't rehit the same unit unless struck again after 1.0 seconds from the previous strike) |\n| fStartRadius | 100 | The projectile collision radius to start the projectile at |\n| fVisionTickTime | .1 | The time in seconds between projectile vision updates while in flight.  Rounds up to the nearest frame-boundary (.0333,.06666,.1, etc) |\n| fVisionLingerDuration | .1 | The time in seconds that the vision should linger as the projectile moves.  Defaults to the same value as fVisionTickTime. |\n| GroundBehavior | PROJECTILES_DESTROY | The behavior that the particle should exhibit when colliding with the ground.  PROJECTILES_NOTHING means to do nothing to the projectile.  PROJECTILES_DESTROY means to destroy this projectile.  PROJECTILES_BOUNCE means to bounce off the ground.  PROJECTILES_FOLLOW means to follow the slope of the ground when colliding. |\n| iPositionCP | 0 | The control point to use for the position of the particle. |\n| iVelocityCP | 1 | The control point to use for the velocity of the particle. |\n| iVisionRadius | 200 | The vision radius for this projectile if enabled. |\n| iVisionTeamNumber | &lt;Source unit's team&gt; | The team for which to display this projectile's vision if enabled.|\n| nChangeMax | 1 | The maximum number of velocity/position changes this particle can undergo before it stops allowing changing position/velocity. |\n| Source | &lt;none&gt; | The source unit of this projectile |\n| TreeBehavior | PROJECTILES_DESTROY | The behavior that the particle should exhibit when colliding with a tree.  PROJECTILES_NOTHING means to do nothing to the projectile.  PROJECTILES_DESTROY means to destroy this projectile.|\n| UnitBehavior | PROJECTILES_DESTROY | The behavior that the particle should exhibit when colliding with a unit which passes the UnitTest function.  PROJECTILES_NOTHING means to do nothing to the projectile.  PROJECTILES_DESTROY means to destroy this projectile.|\n| vSpawnOrigin | Vector(0,0,0) | The initial spawn world position of this projectile. Can be specified in a table form to fire from the attachment point of a unit. Ex: {unit=unitHandle, attach=\"attach_attack1\"[, offset=Vector(0,0,80)]}|\n| vVelocity | Vector(0,0,0) | The initial velocity of this projectile |\n| WallBehavior | PROJECTILES_DESTROY | The behavior that the particle should exhibit when colliding with a wall created by terrain.  PROJECTILES_NOTHING means to do nothing to the projectile.  PROJECTILES_DESTROY means to destroy this projectile.  PROJECTILES_BOUNCE means to bounce off the wall. |\n\n\n| Functions  | Parameters | Description |\n| :------------ | :---------| :-----|\n| OnFinish      | projectileTable, position | This function is called when the projectile is destroyed or expires for any reason other than Destroy() being called manually. |\n| OnGroundHit      | projectileTable, groundPosition | This function is called whenever the projectile hits the ground. |\n| OnTreeHit      | projectileTable, treeEntity | This function is called whenever the projectile hits a tree. |\n| OnUnitHit      | projectileTable, unit | This function is called whenever the projectile hits a unit that passes the UnitTest function. |\n| OnWallHit      | projectileTable, wallPosition | This function is called whenever the projectile hits a wall. |\n| UnitTest      | projectileTable, unit | This function is called whenever the projectile comes in contact with a unit to test whether this unit should be hit by this projectile.  This function should return true if the unit should be hit, or false if the unit shouldn't be hit. |\n\n\n**Examples:** \n=============================\nSee [examples/projectile.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/examples/projectile.lua) for a projectile example."
  },
  {
    "path": "README.md",
    "content": "# Barebones Starter Mod Kit\n\n### Version 1.01c\n### [Change Log](https://github.com/bmddota/barebones/blob/source2/ChangeLog.md)\n\n## Introduction\nBarebones is meant to be a jumping off point for creating a mod with all (or nearly all) of the boilerplate taken care of for you.\nBarebones sets up the necessary files to create a basic mod (from a scripting persective), allowing you to simply find the places to put your Lua logic in order for you mod to operate.\nBarebones currently provides limited examples for performing different tasks, and limited examples for unit/ability/item creation.\nBarebones divides scripts up into several sections: Core Files, Libraries, Examples and Internals.\n\n## Installation\nBarebones can be installed by downloading this git repository and ensuring that you merge the \"content\" and \"game\" folder from this repo with your own \"content\" and \"game\" folders.  These should be located in your \"<SteamLibraryDirectory>\\SteamApps\\common\\dota 2 beta\\\" folder.  **Be sure you don't use the \"dota_ugc\" folder!**\n\n## Core Files\nCore Files are the primary files which you should modify in order to get your basic game mode up and running.  There are 4 major files:\n\n#### settings.lua\nThis file contains many special settings/properties created for barebones that allows you to define the high-level behavior of your game mode.\nYou can define things like respawn times, number of teams on the map, rune spawn times, etc.  Each property is commented to help you understand it.\n\n#### gamemode.lua\nThis is the primary barebones gamemode script and should be used to assist in initializing your game mode.\nThis file contains helpful pseudo-event functions prepared for you for frequently needed initialization actions.\n\n#### events.lua\nThis file contains a hooked version of almost every event that is currently known to fire in the DotA 2 Lua vscript code.\nYou can drop your event handler functions in there to have your game mode react to events.\n\n#### addon_game_mode.lua\nThis is the entry-point to your game mode and should be used primarily to precache models/particles/sounds/etc.\n\n## Libraries\nI've included some helpful libraries with barebones that may prove useful in your game mode.\n\n#### timers.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/TimersChangeLog.md)\nThis library allow for easily delayed/timed actions without the messiness of thinkers and dealing with pauses.\n\n#### physics.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/PhysicsChangeLog.md)\nThis library can be used for advancted physics/motion/collision of units.  \nSee [PhysicsReadme.md](https://github.com/bmddota/barebones/blob/source2/PhysicsReadme.md) and [CollidersReadme.md](https://github.com/bmddota/barebones/blob/source2/CollidersReadme.md) for more information.\n\n#### projectiles.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/ProjectilesChangeLog.md)\nThis library can be used for advanced 3D projectile systems.  \nSee [ProjectilesReadme.md](https://github.com/bmddota/barebones/blob/source2/ProjectilesReadme.md) for more information.\n\n#### notifications.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/NotificationsChangeLog.md)\nThis library can be used to send panorama notifications to individuals/teams/everyone in your game.  \nSee [libraries/notifications.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/notifications.lua) for usage details and examples.\n\n#### animations.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/AnimationsChangeLog.md)\nThis library can be used to start animations with customized animation rates, activities, and translations.  \nSee [libraries/animations.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/animations.lua) for usage details and examples.\n\n#### attachments.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/AttachmentsChangeLog.md)\nThis library can be used to set up and put in place 'Frankenstein' attachments for attaching props to units.  \nSee [libraries/attachments.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/attachments.lua) for usage details and examples.\n\n#### playertables.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/PlayerTablesChangeLog.md)\nThis library sets up tables that are shared between server (lua) and client (javascript) between specific (but changeable) clients.  Similar to nettables.\nSee [libraries/playertables.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/playertables.lua) for usage details and examples.  \n\n#### containers.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/ContainersChangeLog.md)\nThis library allows for additional inventory/item containing objects and shops to be used in your game mode.\nSee [libraries/containers.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/containers.lua) for usage details.  \nSee [examples/playground.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/examples/playground.lua) for detailed examples.\n\n#### worldpanels.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/WorldPanelsChangeLog.md)\nThis library allows for creating panorama layout panels that track the world position of an entity (or fixed world coordinate).\nSee [libraries/worldpanels.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/worldpanels.lua) for usage details and examples.  \n\n#### selection.lua  [By Noya](https://github.com/MNoya)\nThis library allows for querying and managing the selection status of players from the server-side lua script.  It also allows for automatic redirection and selection event handling.\nSee [libraries/selection.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/selection.lua) for usage details and examples.  \n\n#### pathgraph.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/PathGraphChangeLog.md)\nThis library constructs a full-edge graph of all \"path_corner\" objects, allowing for the use of the path links via lua script.\nSee [libraries/pathgraph.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/pathgraph.lua) for usage details and examples.  \n\n#### modmaker.lua  [Change Log](https://github.com/bmddota/barebones/blob/source2/ModmakerChangeLog.md)\nThis library offers a searchable version of the lua server vscript API through the \"modmaker_api\" console command (in tools mode)\nSee [libraries/modmaker.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/modmaker.lua) for usage details and examples.  \n\n\n\n## Internals\nBarebones uses a few internal lua files in order to put together and handle the properties and pseudo-events systems.  You will likely not have to adjust these files at all.\nThese files are found in the internal directory.\n\n## Debugging\nBarebones now only prints out (spams) debugging information when told to by setting the BAREBONES_DEBUG_SPEW value in gamemode.lua to true.\nPreviously there was a 'barebones_spew' cvar that could be used to change the debug printing state at any time from the console, but Valve broke RegisterConvar for some reason, so this has been disabled.\n\n\n## Additional Information\n- Barebones also comes with a sample loading screen implementation in panorama which you can view and edit via the content panorama directory.\n- You can change the name of the multiteams used at the Game Setup screen by editing the game/barebones/panorama/localization/addon_english.txt file.\n- You can adjust the number of players allowed on each of your maps by editing addoninfo.txt.\n\nIf you have any questions or concerns, leave an issue or mail me (bmddota@gmail.com)."
  },
  {
    "path": "TimersChangeLog.md",
    "content": "# timers.lua ChangeLog\n\n### Version 1.05\n- Added a shorthand for Timers:CreateTimer(...) as Timers(...)\n- Timers now continue to run after the game ends for post-game timing execution.\n- Timers library is now accessible as GameRules.Timers for instances where the Timers global is out of scope (triggers, etc)\n- Timers now allows a timer to successfully call Timers:RemoveTimer on itself from within the execution callback of the timer\n- Timers now reports its thinker as \"timers_lua_thinker\" if the Entity System warns of timers running too long in console.\n\n### Version 1.03\n- Added the ability to call a function with a table context\n- Added the use of the lua 'xpcall' function to give full stack traces if a timer errors out during execution.\n\n### Version 1.01\n- Added additional guards to better handle 'script_reload' \n\n### Version 1.00\n- Added global TIMERS_VERSION\n- Started tracking version updates for timers.lua"
  },
  {
    "path": "WorldPanelsChangeLog.md",
    "content": "# worldpanels.lua ChangeLog\n\n### Version 0.81\n- Added \"data\" object which can be added in the world panel configuration table to send arbitrary primitive data to the created worldpanel in javascript, accessible as $.GetContextPanel().Data\n- Fixed an issue with completely client-unknown entities immideately deleting their world panels on create.\n\n### Version 0.80\n- Added worldpanels.lua library"
  },
  {
    "path": "content/dota_addons/barebones/materials/overviews/playground.txt",
    "content": "\"settings\"\n{\n\t\"clampu\" \"1\"\n\t\"clampv\" \"1\"\n\t\"nocompress\" \"1\"\n\t\"nomip\" \"1\"\n\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/materials/overviews/playground.vmat",
    "content": "\"Layer0\"\n{\n\t\"Shader\"\t\"ui.vfx\"\n\t\"F_STENCIL_MASKING\"\t\"1\"\n\t\"F_TRANSLUCENT\"\t\"0\"\n\t\"Texture\"\t\"materials/overviews/playground.tga\"\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/materials/overviews/template_map.txt",
    "content": "\"settings\"\n{\n\t\"clampu\" \"1\"\n\t\"clampv\" \"1\"\n\t\"nocompress\" \"1\"\n\t\"nomip\" \"1\"\n\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/materials/overviews/template_map.vmat",
    "content": "\"Layer0\"\n{\n\t\"Shader\"\t\"ui.vfx\"\n\t\"F_STENCIL_MASKING\"\t\"1\"\n\t\"F_TRANSLUCENT\"\t\"0\"\n\t\"Texture\"\t\"materials/overviews/template_map.tga\"\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/materials/particle/basic_glow.vtex",
    "content": "<!-- dmx encoding keyvalues2_noids 1 format vtex 1 -->\n\"CDmeVtex\"\n{\n\t\"m_inputTextureArray\" \"element_array\" \n\t[\n\t\t\"CDmeInputTexture\"\n\t\t{\n\t\t\t\"m_name\" \"string\" \"0\"\n\t\t\t\"m_fileName\" \"string\" \"materials/particle/basic_glow.tga\"\n\t\t\t\"m_colorSpace\" \"string\" \"srgb\"\n\t\t\t\"m_typeString\" \"string\" \"2D\"\n\t\t}\n\t]\n\t\"m_outputTypeString\" \"string\" \"2D\"\n\t\"m_outputFormat\" \"string\" \"DXT5\"\n\t\"m_textureOutputChannelArray\" \"element_array\"\n\t[\n\t\t\"CDmeTextureOutputChannel\"\n\t\t{\n\t\t\t\"m_inputTextureArray\" \"string_array\"\n\t\t\t\t[\n\t\t\t\t\t\"0\"\n\t\t\t\t]\n\t\t\t\"m_srcChannels\" \"string\" \"rgba\"\n\t\t\t\"m_dstChannels\" \"string\" \"rgba\"\n\t\t\t\"m_mipAlgorithm\" \"CDmeImageProcessor\"\n\t\t\t{\n\t\t\t\t\"m_algorithm\" \"string\" \"\"\n\t\t\t\t\"m_stringArg\" \"string\" \"\"\n\t\t\t\t\"m_vFloat4Arg\" \"vector4\" \"0 0 0 0\"\n\t\t\t}\n\t\t\t\"m_outputColorSpace\" \"string\" \"srgb\"\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/materials/particle/basic_rope.vtex",
    "content": "<!-- dmx encoding keyvalues2_noids 1 format vtex 1 -->\n\"CDmeVtex\"\n{\n\t\"m_inputTextureArray\" \"element_array\" \n\t[\n\t\t\"CDmeInputTexture\"\n\t\t{\n\t\t\t\"m_name\" \"string\" \"0\"\n\t\t\t\"m_fileName\" \"string\" \"materials/particle/basic_rope.psd\"\n\t\t\t\"m_colorSpace\" \"string\" \"srgb\"\n\t\t\t\"m_typeString\" \"string\" \"2D\"\n\t\t}\n\t]\n\t\"m_outputTypeString\" \"string\" \"2D\"\n\t\"m_outputFormat\" \"string\" \"DXT5\"\n\t\"m_textureOutputChannelArray\" \"element_array\"\n\t[\n\t\t\"CDmeTextureOutputChannel\"\n\t\t{\n\t\t\t\"m_inputTextureArray\" \"string_array\"\n\t\t\t\t[\n\t\t\t\t\t\"0\"\n\t\t\t\t]\n\t\t\t\"m_srcChannels\" \"string\" \"rgba\"\n\t\t\t\"m_dstChannels\" \"string\" \"rgba\"\n\t\t\t\"m_mipAlgorithm\" \"CDmeImageProcessor\"\n\t\t\t{\n\t\t\t\t\"m_algorithm\" \"string\" \"\"\n\t\t\t\t\"m_stringArg\" \"string\" \"\"\n\t\t\t\t\"m_vFloat4Arg\" \"vector4\" \"0 0 0 0\"\n\t\t\t}\n\t\t\t\"m_outputColorSpace\" \"string\" \"srgb\"\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/materials/particle/basic_rope_energy.vtex",
    "content": "<!-- dmx encoding keyvalues2_noids 1 format vtex 1 -->\n\"CDmeVtex\"\n{\n\t\"m_inputTextureArray\" \"element_array\" \n\t[\n\t\t\"CDmeInputTexture\"\n\t\t{\n\t\t\t\"m_name\" \"string\" \"0\"\n\t\t\t\"m_fileName\" \"string\" \"materials/particle/basic_rope_energy.tga\"\n\t\t\t\"m_colorSpace\" \"string\" \"srgb\"\n\t\t\t\"m_typeString\" \"string\" \"2D\"\n\t\t}\n\t]\n\t\"m_outputTypeString\" \"string\" \"2D\"\n\t\"m_outputFormat\" \"string\" \"DXT5\"\n\t\"m_textureOutputChannelArray\" \"element_array\"\n\t[\n\t\t\"CDmeTextureOutputChannel\"\n\t\t{\n\t\t\t\"m_inputTextureArray\" \"string_array\"\n\t\t\t\t[\n\t\t\t\t\t\"0\"\n\t\t\t\t]\n\t\t\t\"m_srcChannels\" \"string\" \"rgba\"\n\t\t\t\"m_dstChannels\" \"string\" \"rgba\"\n\t\t\t\"m_mipAlgorithm\" \"CDmeImageProcessor\"\n\t\t\t{\n\t\t\t\t\"m_algorithm\" \"string\" \"\"\n\t\t\t\t\"m_stringArg\" \"string\" \"\"\n\t\t\t\t\"m_vFloat4Arg\" \"vector4\" \"0 0 0 0\"\n\t\t\t}\n\t\t\t\"m_outputColorSpace\" \"string\" \"srgb\"\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/materials/particle/basic_smoke.vtex",
    "content": "<!-- dmx encoding keyvalues2_noids 1 format vtex 1 -->\n\"CDmeVtex\"\n{\n\t\"m_inputTextureArray\" \"element_array\" \n\t[\n\t\t\"CDmeInputTexture\"\n\t\t{\n\t\t\t\"m_name\" \"string\" \"0\"\n\t\t\t\"m_fileName\" \"string\" \"materials/particle/basic_smoke.tga\"\n\t\t\t\"m_colorSpace\" \"string\" \"srgb\"\n\t\t\t\"m_typeString\" \"string\" \"2D\"\n\t\t}\n\t]\n\t\"m_outputTypeString\" \"string\" \"2D\"\n\t\"m_outputFormat\" \"string\" \"DXT5\"\n\t\"m_textureOutputChannelArray\" \"element_array\"\n\t[\n\t\t\"CDmeTextureOutputChannel\"\n\t\t{\n\t\t\t\"m_inputTextureArray\" \"string_array\"\n\t\t\t\t[\n\t\t\t\t\t\"0\"\n\t\t\t\t]\n\t\t\t\"m_srcChannels\" \"string\" \"rgba\"\n\t\t\t\"m_dstChannels\" \"string\" \"rgba\"\n\t\t\t\"m_mipAlgorithm\" \"CDmeImageProcessor\"\n\t\t\t{\n\t\t\t\t\"m_algorithm\" \"string\" \"\"\n\t\t\t\t\"m_stringArg\" \"string\" \"\"\n\t\t\t\t\"m_vFloat4Arg\" \"vector4\" \"0 0 0 0\"\n\t\t\t}\n\t\t\t\"m_outputColorSpace\" \"string\" \"srgb\"\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/materials/particle/basic_trail.vtex",
    "content": "<!-- dmx encoding keyvalues2_noids 1 format vtex 1 -->\n\"CDmeVtex\"\n{\n\t\"m_inputTextureArray\" \"element_array\" \n\t[\n\t\t\"CDmeInputTexture\"\n\t\t{\n\t\t\t\"m_name\" \"string\" \"0\"\n\t\t\t\"m_fileName\" \"string\" \"materials/particle/basic_trail.tga\"\n\t\t\t\"m_colorSpace\" \"string\" \"srgb\"\n\t\t\t\"m_typeString\" \"string\" \"2D\"\n\t\t}\n\t]\n\t\"m_outputTypeString\" \"string\" \"2D\"\n\t\"m_outputFormat\" \"string\" \"DXT5\"\n\t\"m_textureOutputChannelArray\" \"element_array\"\n\t[\n\t\t\"CDmeTextureOutputChannel\"\n\t\t{\n\t\t\t\"m_inputTextureArray\" \"string_array\"\n\t\t\t\t[\n\t\t\t\t\t\"0\"\n\t\t\t\t]\n\t\t\t\"m_srcChannels\" \"string\" \"rgba\"\n\t\t\t\"m_dstChannels\" \"string\" \"rgba\"\n\t\t\t\"m_mipAlgorithm\" \"CDmeImageProcessor\"\n\t\t\t{\n\t\t\t\t\"m_algorithm\" \"string\" \"\"\n\t\t\t\t\"m_stringArg\" \"string\" \"\"\n\t\t\t\t\"m_vFloat4Arg\" \"vector4\" \"0 0 0 0\"\n\t\t\t}\n\t\t\t\"m_outputColorSpace\" \"string\" \"srgb\"\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/barebones_attachments.xml",
    "content": "<root> \n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"s2r://panorama/styles/hero_splash.vcss_c\" />\n    <include src=\"s2r://panorama/styles/popups/settings_slider.vcss_c\" />\n    <include src=\"file://{resources}/styles/barebones_attachments.css\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/barebones_attachments.js\" /> \n  </scripts>\n  <Panel hittest=\"false\" class=\"AttachmentsBase\">\n    <Panel id=\"CosmeticsPanel\" style=\"visibility:collapse;\">\n      <Panel id=\"CosmeticsHeader\" draggable=\"true\">\n        <Button class=\"CloseButton\" id=\"CloseButton\" onactivate=\"CloseCosmetics()\"/>\n        <Label text=\"Hide Cosmetics\"/>\n      </Panel>\n      <Panel id=\"CosmeticsBody\">\n\n      </Panel>\n    </Panel>\n    <Panel hittest=\"true\" id=\"AttachmentsPanel\" style=\"visibility:collapse;\">\n      <Panel hittest=\"true\" id=\"AttachmentsHeader\" draggable=\"true\" >\n        <Label text=\"Attachments Configuration\"/> \n      </Panel>\n      <Panel hittest=\"false\" id=\"AttachmentsBody\">\n        <Panel class=\"ButtonRow\">\n          <ToggleButton class=\"CheckBox\" checked=\"checked\" style=\"align: center center; margin-left:10px;\" id=\"AttachCheckbox\" text=\"Attach?\"  onactivate=\"AttachCheckbox();\" />\n          <Button id=\"Freeze\" class=\"SplashButton SButton\" onactivate=\"Freeze()\">\n            <Label text=\"Freeze\"/> \n          </Button>\n          <Button id=\"HideCosmetics\" class=\"SplashButton SButton\" style=\"width:150px;\" onactivate=\"HideCosmetics()\">\n            <Label text=\"Hide Cosmetics\"/>\n          </Button>\n        </Panel>\n        <Panel class=\"ButtonRow\">\n          <ToggleButton class=\"CheckBox\" checked=\"checked\" style=\"align: center center; margin-right:20px;\" id=\"SphereCheckbox\" text=\"Show Spheres?\"  onactivate=\"SphereCheckbox();\" />\n          <Label style=\"align: center center; margin-right:5px;\" text=\"+- Scale:\"/>\n          <Panel style=\"width:150px; align:center center;\">\n            <DropDown id=\"PlusMinusScale\" style=\"align:center center;\" oninputsubmit=\"PlusMinusScale()\">\n              \n            </DropDown>\n          </Panel>\n        </Panel>\n\n        <Panel class=\"ButtonRow\" style='visibility:collapse;'>\n          <ToggleButton class=\"CheckBox\" checked=\"checked\" style=\"align: center center; margin-left:5px;\" id=\"MouseAngleCheckbox\" text=\"Mouse angles?\"  onactivate=\"MouseControlAngles();\" />\n          <ToggleButton class=\"CheckBox\" checked=\"checked\" style=\"align: center center; margin-right:5px;\" id=\"MouseOffsetCheckbox\" text=\"Mouse offsets?\"  onactivate=\"MouseControlOffsets();\" />\n          <Label style=\"align: center center; font-size: 14px; margin-right:5px;\" text=\"Updates per second:\"/>\n          <DropDown id=\"MouseUpdateScale\" style=\"align:center center; width: 80px; margin-right:5px;\" oninputsubmit=\"MouseUpdateScale()\"> </DropDown>\n          <Panel class=\"InfoIcon\" tabindex=\"auto\" onmouseover=\"ShowMouseHelpTooltip()\"\n                                 onmouseout=\"HideMouseHelpTooltip()\"/>\n        </Panel>\n\n        <Label class=\"LineLabel\" text=\"Attach Point\"/>\n        <TextEntry id=\"Attach\" class=\"LineEntry\" tabindex=\"auto\"  ontabbackward=\"SetInputFocus(Roll)\" placeholder=\"attach_something\" onblur=\"UpdateAttachment();\" oninputsubmit=\"UpdateAttachment()\"/>\n        <Label class=\"LineLabel\" text=\"Model\"/>\n        <TextEntry id=\"Model\" class=\"LineEntry\" tabindex=\"auto\" ontabforward=\"SetInputFocus(Scale)\" placeholder=\"path/to/model.vmdl\" onblur=\"UpdateAttachment();\" oninputsubmit=\"UpdateAttachment()\"/>\n        <Panel class=\"ThreeEntry\" style=\"margin-top:-10px;\">\n          <Panel class=\"LabelEntry\">\n            <Label text=\"Scale\"/> \n            <Panel style=\"flow-children:right;\">\n              <TextEntry id=\"Scale\" class=\"NumEntry\" ontabbackward=\"SetInputFocus(Model)\" ontabforward=\"SetInputFocus(XPos)\" maxchars=\"16\" placeholder=\"1.0\" onblur=\"UpdateAttachment();\" oninputsubmit=\"UpdateAttachment()\"/>\n              <Panel class=\"PlusMinus\">\n                <Button class=\"SplashButton Plus\" onactivate=\"ValueChange('#Scale', 0.1);\">\n                  <Label text=\"+\"/>\n                </Button>\n                <Button class=\"SplashButton Minus\" onactivate=\"ValueChange('#Scale', -0.1);\">\n                  <Label text=\"-\"/>\n                </Button>\n              </Panel>\n            </Panel>\n          </Panel>\n          <Button id=\"Top\" class=\"SplashButton CameraButton\" style=\"width:50px;\" onactivate=\"TopCamera()\">\n            <Label text=\"Top\"/>\n          </Button>\n          <Button id=\"SideX\" class=\"SplashButton CameraButton\" style=\"width:50px;\" onactivate=\"SideXCamera()\">\n            <Label text=\"SideX\"/>\n          </Button>\n          <Button id=\"SideY\" class=\"SplashButton CameraButton\" style=\"width:50px;\" onactivate=\"SideYCamera()\">\n            <Label text=\"SideY\"/>\n          </Button>\n          <Button id=\"Normal\" class=\"SplashButton CameraButton\" style=\"width:80px;\" onactivate=\"NormalCamera()\">\n            <Label text=\"Normal \"/>\n          </Button>\n        </Panel>\n        <Panel class=\"ThreeEntry\">\n          <Panel class=\"LabelEntry\">\n            <Label text=\"X\"/> \n            <Panel style=\"flow-children:right;\">\n              <TextEntry id=\"XPos\" class=\"NumEntry\" ontabbackward=\"SetInputFocus(Scale)\" ontabforward=\"SetInputFocus(YPos)\" maxchars=\"16\" placeholder=\"0.0\" onblur=\"UpdateAttachment();\" oninputsubmit=\"UpdateAttachment()\"/>\n              <Panel class=\"PlusMinus\">\n                <Button class=\"SplashButton Plus\" onactivate=\"ValueChange('#XPos', 1);\">\n                  <Label text=\"+\"/>\n                </Button>\n                <Button class=\"SplashButton Minus\" onactivate=\"ValueChange('#XPos', -1);\">\n                  <Label text=\"-\"/>\n                </Button>\n              </Panel>\n            </Panel>\n          </Panel>\n          <Panel class=\"LabelEntry\">\n            <Label text=\"Y\"/> \n            <Panel style=\"flow-children:right;\">\n              <TextEntry id=\"YPos\" class=\"NumEntry\" ontabbackward=\"SetInputFocus(XPos)\" ontabforward=\"SetInputFocus(ZPos)\" maxchars=\"16\" placeholder=\"0.0\" onblur=\"UpdateAttachment();\" oninputsubmit=\"UpdateAttachment()\"/>\n              <Panel class=\"PlusMinus\">\n                <Button class=\"SplashButton Plus\" onactivate=\"ValueChange('#YPos', 1);\">\n                  <Label text=\"+\"/>\n                </Button>\n                <Button class=\"SplashButton Minus\" onactivate=\"ValueChange('#YPos', -1);\">\n                  <Label text=\"-\"/>\n                </Button>\n              </Panel>\n            </Panel>\n          </Panel>\n          <Panel class=\"LabelEntry\">\n            <Label text=\"Z\"/> \n            <Panel style=\"flow-children:right;\">\n              <TextEntry id=\"ZPos\" class=\"NumEntry\" ontabbackward=\"SetInputFocus(YPos)\" ontabforward=\"SetInputFocus(Pitch)\" maxchars=\"16\" placeholder=\"0.0\" onblur=\"UpdateAttachment();\" oninputsubmit=\"UpdateAttachment()\"/>\n              <Panel class=\"PlusMinus\">\n                <Button class=\"SplashButton Plus\" onactivate=\"ValueChange('#ZPos', 1);\">\n                  <Label text=\"+\"/>\n                </Button>\n                <Button class=\"SplashButton Minus\" onactivate=\"ValueChange('#ZPos', -1);\">\n                  <Label text=\"-\"/>\n                </Button>\n              </Panel>\n            </Panel>\n          </Panel>\n        </Panel>\n        <Panel class=\"ThreeEntry\">\n          <Panel class=\"LabelEntry\">\n            <Label text=\"Pitch\"/> \n            <Panel style=\"flow-children:right;\">\n              <TextEntry id=\"Pitch\" class=\"NumEntry\" ontabbackward=\"SetInputFocus(ZPos)\" ontabforward=\"SetInputFocus(Yaw)\" maxchars=\"16\" placeholder=\"0.0\" onblur=\"UpdateAttachment();\" oninputsubmit=\"UpdateAttachment()\"/>\n              <Panel class=\"PlusMinus\">\n                <Button class=\"SplashButton Plus\" onactivate=\"ValueChange('#Pitch', 1);\">\n                  <Label text=\"+\"/>\n                </Button>\n                <Button class=\"SplashButton Minus\" onactivate=\"ValueChange('#Pitch', -1);\">\n                  <Label text=\"-\"/>\n                </Button>\n              </Panel>\n            </Panel>\n          </Panel>\n          <Panel class=\"LabelEntry\">\n            <Label text=\"Yaw\"/> \n            <Panel style=\"flow-children:right;\">\n              <TextEntry id=\"Yaw\" class=\"NumEntry\" ontabbackward=\"SetInputFocus(Pitch)\" ontabforward=\"SetInputFocus(Roll)\" maxchars=\"16\" placeholder=\"0.0\" onblur=\"UpdateAttachment();\" oninputsubmit=\"UpdateAttachment()\"/>\n              <Panel class=\"PlusMinus\">\n                <Button class=\"SplashButton Plus\" onactivate=\"ValueChange('#Yaw', 1);\">\n                  <Label text=\"+\"/>\n                </Button>\n                <Button class=\"SplashButton Minus\" onactivate=\"ValueChange('#Yaw', -1);\">\n                  <Label text=\"-\"/>\n                </Button>\n              </Panel>\n            </Panel>\n          </Panel>\n          <Panel class=\"LabelEntry\">\n            <Label text=\"Roll\"/> \n            <Panel style=\"flow-children:right;\">\n              <TextEntry id=\"Roll\" class=\"NumEntry\" ontabbackward=\"SetInputFocus(Yaw)\" ontabforward=\"SetInputFocus(Attach)\" maxchars=\"16\" placeholder=\"0.0\" onblur=\"UpdateAttachment();\" oninputsubmit=\"UpdateAttachment()\"/>\n              <Panel class=\"PlusMinus\">\n                <Button class=\"SplashButton Plus\" onactivate=\"ValueChange('#Roll', 1);\">\n                  <Label text=\"+\"/>\n                </Button>\n                <Button class=\"SplashButton Minus\" onactivate=\"ValueChange('#Roll', -1);\">\n                  <Label text=\"-\"/>\n                </Button>\n              </Panel>\n            </Panel>\n          </Panel>\n        </Panel>\n        <Panel class=\"ButtonRow\">\n          <Button id=\"Load\" class=\"SplashButton SButton\" onactivate=\"Load()\">\n            <Label text=\"Load\"/>\n          </Button>\n          <Button id=\"Hide\" class=\"SplashButton SButton\" onactivate=\"Hide()\">\n            <Label text=\"Hide\"/>\n          </Button>\n          <Button id=\"Save\" class=\"SplashButton SButton\" onactivate=\"Save()\">\n            <Label text=\"Save\"/>\n          </Button>\n        </Panel>\n      </Panel>\n      <Panel hittest=\"true\" id=\"AttachmentsFooter\">\n        <Label text=\"\"/>\n      </Panel>\n    </Panel>\n\n    <Panel hittest=\"true\" class=\"PopupPanel\" style=\"visibility:collapse;\">\n      <Label id=\"PopupLabel\" class=\"PopupTitle\" text=\"text here\"/>\n      <Button id=\"Button0\" class=\"PlayButton\"> \n        <Label text=\"BUTTON2\"/>\n        <!-- class=\"PopupButton\" -->\n      </Button>\n    </Panel>\n  </Panel>\n</root>\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/barebones_notifications.xml",
    "content": "<root> \n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"file://{resources}/styles/barebones_notifications.css\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/barebones_notifications.js\" /> \n  </scripts>\n  <Panel hittest=\"false\" class=\"BarebonesBaseHud\">\n    <Panel hittest=\"false\" class=\"BarebonesTopNotifications\">\n      <Panel hittest=\"false\" id=\"TopNotifications\">\n      </Panel>\n    </Panel>\n    <Panel hittest=\"false\" class=\"BarebonesBottomNotifications\">\n      <Panel hittest=\"false\" id=\"BottomNotifications\">\n      </Panel>\n    </Panel>\n  </Panel>\n</root>\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/barebones_worldpanels.xml",
    "content": "<root> \n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/barebones_worldpanels.js\" /> \n  </scripts>\n  <Panel hittest=\"false\" style=\"width:100%; height:100%; z-index:1000;\">\n\n  </Panel>\n</root>\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/containers/alt_container_example.xml",
    "content": "<root>\n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"file://{resources}/styles/containers/container.css\" />\n    <include src=\"file://{resources}/styles/containers/container_skins.css\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/containers/container.js\" /> \n  </scripts>\n  <Panel draggable=\"true\" class=\"Outer\">\n    <Panel id=\"Header\">\n      <Label hittest=\"false\" id=\"HeaderLabel\" text=\"Container Header\"/>\n      <Button class=\"CloseButton\" draggable=\"true\" id=\"CloseButton\" onactivate=\"CloseClicked()\"/>\n    </Panel>\n    <Panel style=\"flow-children:right;\">\n      <Panel style=\"height:95%; flow-children:down; background-color:#000000ee;\">\n        <Label text=\"Helm\" style=\"font-weight:bold; height:fill-parent-flow(1.0); horizontal-align:right; padding:15px 0px 0px 15px;\" />\n        <Label text=\"Chest\" style=\"font-weight:bold; height:fill-parent-flow(1.0); horizontal-align:right; padding:15px 0px 0px 15px;\"/>\n        <Label text=\"Feet\" style=\"font-weight:bold; height:fill-parent-flow(1.0); horizontal-align:right; padding:15px 0px 0px 15px;\"/>\n      </Panel>\n      <Panel id=\"Inner\" draggable=\"true\">\n\n      </Panel>\n    </Panel>\n    <Panel id=\"Footer\">\n      \n    </Panel>\n  </Panel>\n</root>\n "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/containers/container.xml",
    "content": "<root>\n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"file://{resources}/styles/containers/container.css\" />\n    <include src=\"file://{resources}/styles/containers/container_skins.css\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/containers/container.js\" /> \n  </scripts>\n  <Panel draggable=\"true\" class=\"Outer\">\n    <Panel id=\"Header\">\n      <Label hittest=\"false\" id=\"HeaderLabel\" text=\"Container Header\"/>\n      <Button class=\"CloseButton\" draggable=\"true\" id=\"CloseButton\" onactivate=\"CloseClicked()\"/>\n    </Panel>\n    <Panel id=\"Inner\" draggable=\"true\">\n\n    </Panel>\n    <Panel id=\"Footer\">\n      \n    </Panel>\n  </Panel>\n</root>\n "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/containers/container_base.xml",
    "content": "<root>\n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"file://{resources}/styles/containers/container.css\" />\n    <include src=\"file://{resources}/styles/containers/container_skins.css\" />\n\n    <include src=\"s2r://panorama/styles/hero_splash.vcss_c\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/containers/container_base.js\" /> \n    <include src=\"file://{resources}/scripts/containers/container_events.js\" /> \n    <include src=\"file://{resources}/scripts/containers/dota_inventory.js\" /> \n  </scripts>\n  <Panel hittest=\"false\" class=\"ContainersBase\">\n\n    <Panel hittest=\"false\" style=\"width:100%; height:100%;\" id=\"PanoramaInventory\">\n      <Panel id=\"stash_row\" />\n      <Panel id=\"inventory_items\">\n        <Panel id=\"inventory_row_1\" />\n        <Panel id=\"inventory_row_2\" />\n      </Panel>\n    </Panel>\n\n  </Panel>\n</root>\n "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/containers/dota_inventory.xml",
    "content": "<root>\n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"file://{resources}/styles/containers/container.css\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/containers/dota_inventory.js\" />\n  </scripts>\n  <Panel class=\"InventoryOverlayRoot\" hittest=\"false\">\n    <Panel id=\"stash_row\" />\n    <Panel id=\"inventory_items\">\n      <Panel id=\"inventory_row_1\" />\n      <Panel id=\"inventory_row_2\" />\n    </Panel>\n  </Panel>\n</root> "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/containers/dota_inventory_context_menu.xml",
    "content": "<root>\n\t<styles>\n\t\t<include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n\t\t<include src=\"file://{resources}/styles/containers/container.css\" />\n\t\t<include src=\"file://{resources}/styles/containers/container_skins.css\" />\n\t</styles>\n\t<scripts>\n\t\t<include src=\"file://{resources}/scripts/containers/dota_inventory_context_menu.js\" />\n\t</scripts>\n\t<Panel class=\"ItemMenu\">\n\t\t<Button class=\"ItemMenuButton\" id=\"ShowInShop\" onmouseactivate=\"OnShowInShop()\">\n\t\t\t<Label text=\"Show In Shop\" />\n\t\t</Button>\n\t\t<Button class=\"ItemMenuButton\" id=\"Sell\" onactivate=\"OnSell()\">\n\t\t\t<Label text=\"Sell\" />\n\t\t</Button>\n\t\t<Button class=\"ItemMenuButton\" id=\"Disassemble\" onactivate=\"OnDisassemble()\">\n\t\t\t<Label text=\"Disassemble\" />\n\t\t</Button>\n\t\t<Button class=\"ItemMenuButton\" id=\"DropFromStash\" onactivate=\"OnDropFromStash()\">\n\t\t\t<Label text=\"Drop From Stash\" />\n\t\t</Button>\n\t\t<Button class=\"ItemMenuButton\" id=\"Alert\" onactivate=\"OnAlert()\">\n\t\t\t<Label text=\"Alert\" />\n\t\t</Button>\n\t\t<Button class=\"ItemMenuButton\" id=\"MoveToStash\" onactivate=\"OnMoveToStash()\">\n\t\t\t<Label text=\"Move To Stash\" />\n\t\t</Button>\n\t</Panel>\n</root>\n "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/containers/dota_inventory_item.xml",
    "content": "<root>\n\t<styles>\n\t\t<include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n\t\t<include src=\"file://{resources}/styles/containers/container.css\" />\n\t\t<include src=\"file://{resources}/styles/containers/container_skins.css\" />\n\t</styles>\n\t<scripts>\n\t\t<include src=\"file://{resources}/scripts/containers/dota_inventory_item.js\" />\n\t</scripts>\n\t<Panel class=\"ItemPanel\" draggable=\"true\">\n\t\t<Button id=\"ItemButton\"\n\t\t\t\tonmouseover=\"ItemShowTooltip()\"\n\t\t\t\tonmouseout=\"ItemHideTooltip()\"\n\t\t\t\tonactivate=\"ActivateItem()\"\n\t\t\t\tondblclick=\"DoubleClickItem()\"\n\t\t\t\toncontextmenu=\"RightClickItem()\"\n\t\t\t\t>\n\t\t\t<DOTAItemImage hittest=\"false\" id=\"ItemImage\" />\n\t\t\t<Panel hittest=\"false\" id=\"Cooldown\">\n\t\t\t\t<Panel hittest=\"false\" id=\"CooldownOverlay\" />\n\t\t\t\t<Label hittest=\"false\" id=\"CooldownTimer\" />\n\t\t\t</Panel>\n\t\t\t<Label hittest=\"false\" class=\"\" id=\"Stock\"/>\n\t\t\t<Label hittest=\"false\" class=\"Charges\" id=\"ChargeCount\" />\n\t\t\t<Label hittest=\"false\" class=\"Charges\" id=\"AltChargeCount\" />\n\t\t\t<Label hittest=\"false\" class=\"\" id=\"ManaCost\"/>\n\t\t\t<Label hittest=\"false\" class=\"\" id=\"Price\"/>\n\t\t\t<Panel hittest=\"false\" id=\"DropTargetHighlight\" />\n\t\t</Button>\n\t\t<Panel hittest=\"false\" id=\"Hotkey\">\n\t\t\t<Panel hittest=\"false\" id=\"HotkeyBlock\" />\n\t\t\t<Label hittest=\"false\" id=\"HotkeyText\" />\n\t\t</Panel>\n\t</Panel>\n</root>\n "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/containers/inventory_context_menu.xml",
    "content": "<root>\n\t<styles>\n\t\t<include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n\t\t<include src=\"file://{resources}/styles/containers/container.css\" />\n\t\t<include src=\"file://{resources}/styles/containers/container_skins.css\" />\n\t</styles>\n\t<scripts>\n\t\t<include src=\"file://{resources}/scripts/containers/inventory_context_menu.js\" />\n\t</scripts>\n\t<Panel class=\"ItemMenu\">\n\t\t<Button class=\"ItemMenuButton\" id=\"ShowInShop\" onmouseactivate=\"OnShowInShop()\">\n\t\t\t<Label text=\"Show In Shop\" />\n\t\t</Button>\n\t\t<Button class=\"ItemMenuButton\" id=\"Sell\" onactivate=\"OnSell()\">\n\t\t\t<Label text=\"Sell\" />\n\t\t</Button>\n\t\t<Button class=\"ItemMenuButton\" id=\"Disassemble\" onactivate=\"OnDisassemble()\">\n\t\t\t<Label text=\"Disassemble\" />\n\t\t</Button>\n\t\t<Button class=\"ItemMenuButton\" id=\"DropFromStash\" onactivate=\"OnDropFromStash()\">\n\t\t\t<Label text=\"Drop From Stash\" />\n\t\t</Button>\n\t\t<Button class=\"ItemMenuButton\" id=\"Alert\" onactivate=\"OnAlert()\">\n\t\t\t<Label text=\"Alert\" />\n\t\t</Button>\n\t\t<Button class=\"ItemMenuButton\" id=\"MoveToStash\" onactivate=\"OnMoveToStash()\">\n\t\t\t<Label text=\"Move To Stash\" />\n\t\t</Button>\n\t</Panel>\n</root>\n "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/containers/inventory_item.xml",
    "content": "<root>\n\t<styles>\n\t\t<include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n\t\t<include src=\"file://{resources}/styles/containers/container.css\" />\n\t\t<include src=\"file://{resources}/styles/containers/container_skins.css\" />\n\t</styles>\n\t<scripts>\n\t\t<include src=\"file://{resources}/scripts/containers/inventory_item.js\" />\n\t</scripts>\n\t<Panel class=\"ItemPanel\" draggable=\"true\">\n\t\t<Button id=\"ItemButton\"\n\t\t\t\tonmouseover=\"OnMouseOver()\"\n\t\t\t\tonmouseout=\"OnMouseOut()\"\n\t\t\t\tonactivate=\"ActivateItem()\"\n\t\t\t\tondblclick=\"DoubleClickItem()\"\n\t\t\t\toncontextmenu=\"RightClickItem()\"\n\t\t\t\t>\n\t\t\t<DOTAItemImage hittest=\"false\" id=\"ItemImage\" />\n\t\t\t<Panel hittest=\"false\" id=\"Cooldown\">\n\t\t\t\t<Panel hittest=\"false\" id=\"CooldownOverlay\" />\n\t\t\t\t<Label hittest=\"false\" id=\"CooldownTimer\" />\n\t\t\t</Panel>\n\t\t\t<Label hittest=\"false\" class=\"\" id=\"Stock\"/>\n\t\t\t<Label hittest=\"false\" class=\"Charges\" id=\"ChargeCount\" />\n\t\t\t<Label hittest=\"false\" class=\"Charges\" id=\"AltChargeCount\" />\n\t\t\t<Label hittest=\"false\" class=\"\" id=\"ManaCost\"/>\n\t\t\t<Label hittest=\"false\" class=\"\" id=\"Price\"/>\n\t\t\t<Panel hittest=\"false\" id=\"DropTargetHighlight\" />\n\t\t</Button>\n\t\t<Panel hittest=\"false\" id=\"Hotkey\">\n\t\t\t<Label hittest=\"false\" id=\"HotkeyText\" />\n\t\t</Panel>\n\t</Panel>\n</root>\n "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/custom_loading_screen.xml",
    "content": "<root> \n  <styles>\n    <include src=\"file://{resources}/styles/custom_loading_screen.css\" />\n  </styles>\n  <Panel class=\"AddonLoadingRoot\">\n    <Panel id=\"CustomBg\" >\n      <Image id=\"gamemode\" class=\"SeqImg\" src=\"file://{images}/custom_game/loading_screen/gamemode.png\" />\n    </Panel>\n    <Panel id=\"TitlePanel\"> \n      <!--Label id=\"AddonTitle\" text=\"#addon_game_name\" style=\"\" /-->\n    </Panel>\n  </Panel>\n</root>\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/custom_ui_manifest.xml",
    "content": "<root> \n  <scripts>\n    <include src=\"file://{resources}/scripts/playertables/playertables_base.js\" />\n  </scripts>\n  <script>\n    // Uncomment any of the following lines in order to disable that portion of the default UI\n\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_TIMEOFDAY, false );      //Time of day (clock).\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_HEROES, false );     //Heroes and team score at the top of the HUD.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_FLYOUT_SCOREBOARD, false );      //Lefthand flyout scoreboard.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_ACTION_PANEL, false );     //Hero actions UI.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_ACTION_MINIMAP, false );     //Minimap.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_PANEL, false );      //Entire Inventory UI\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_SHOP, false );     //Shop portion of the Inventory. \n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_ITEMS, false );      //Player items.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_QUICKBUY, false );     //Quickbuy.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_COURIER, false );      //Courier controls.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_PROTECT, false );      //Glyph.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_GOLD, false );     //Gold display.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_SHOP_SUGGESTEDITEMS, false );      //Suggested items shop panel.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_HERO_SELECTION_TEAMS, false );     //Hero selection Radiant and Dire player lists.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_HERO_SELECTION_GAME_NAME, false );     //Hero selection game mode name display.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_HERO_SELECTION_CLOCK, false );     //Hero selection clock.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_MENU_BUTTONS, false );     //Top-left menu buttons in the HUD.\n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_ENDGAME, false );      //Endgame scoreboard.    \n    //GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_BAR_BACKGROUND, false );     //Top-left menu buttons in the HUD.\n\n    // These lines set up the panorama colors used by each team (for game select/setup, etc)\n    GameUI.CustomUIConfig().team_colors = {}\n    GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_GOODGUYS] = \"#3dd296;\";\n    GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_BADGUYS ] = \"#F3C909;\";\n    GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_1] = \"#c54da8;\";\n    GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_2] = \"#FF6C00;\";\n    GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_3] = \"#3455FF;\";\n    GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_4] = \"#65d413;\";\n    GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_5] = \"#815336;\";\n    GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_6] = \"#1bc0d8;\";\n    GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_7] = \"#c7e40d;\";\n    GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_8] = \"#8c2af4;\";\n\n  </script> \n\n  <Panel>\n    <!-- CustomUIElements go here.-->\n\n    <CustomUIElement type=\"Hud\" layoutfile=\"file://{resources}/layout/custom_game/barebones_notifications.xml\" /> \n    <CustomUIElement type=\"Hud\" layoutfile=\"file://{resources}/layout/custom_game/barebones_attachments.xml\" /> \n    <CustomUIElement type=\"Hud\" layoutfile=\"file://{resources}/layout/custom_game/barebones_worldpanels.xml\" />\n    <CustomUIElement type=\"Hud\" layoutfile=\"file://{resources}/layout/custom_game/containers/container_base.xml\" />\n    <CustomUIElement type=\"Hud\" layoutfile=\"file://{resources}/layout/custom_game/modmaker/modmaker.xml\" />\n    <CustomUIElement type=\"Hud\" layoutfile=\"file://{resources}/layout/custom_game/selection.xml\" />\n\n    <!-- From Overthrow.\n\n        <CustomUIElement type=\"HudTopBar\"           layoutfile=\"file://{resources}/layout/custom_game/multiteam_top_scoreboard.xml\" />\n        <CustomUIElement type=\"Hud\"                 layoutfile=\"file://{resources}/layout/custom_game/overthrow_item_notification.xml\" />\n        <CustomUIElement type=\"GameSetup\"           layoutfile=\"file://{resources}/layout/custom_game/team_select.xml\" />\n        <CustomUIElement type=\"FlyoutScoreboard\"    layoutfile=\"file://{resources}/layout/custom_game/multiteam_flyout_scoreboard.xml\" />\n        <CustomUIElement type=\"HeroSelection\"       layoutfile=\"file://{resources}/layout/custom_game/multiteam_hero_select_overlay.xml\" />\n        <CustomUIElement type=\"EndScreen\"           layoutfile=\"file://{resources}/layout/custom_game/multiteam_end_screen.xml\" />\n        <CustomUIElement type=\"GameInfo\"            layoutfile=\"file://{resources}/layout/custom_game/overthrow_game_info.xml\" />\n    -->\n  </Panel>\n</root>\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/modmaker/modmaker.xml",
    "content": "<root>\n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"file://{resources}/styles/modmaker/modmaker.css\" />\n\n    <include src=\"s2r://panorama/styles/hero_splash.vcss_c\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/modmaker/modmaker.js\" /> \n  </scripts>\n  <Panel hittest=\"false\" class=\"ModmakerBase\">\n\n    <Panel hittest=\"true\" id=\"APIWindow\">\n      <Panel hittest=\"true\" id=\"TitleSearch\">\n        <Label text=\"Lua API\" id=\"Title\"/>\n        <TextEntry placeholder=\"Search API...\" id=\"Search\" oninputsubmit=\"SearchAPI()\"/>\n        <Button class=\"SplashButton\" id=\"SearchButton\" onactivate=\"SearchAPI()\">\n          <Label text=\"Search\"/>\n        </Button>\n        <Button class=\"CloseButton\" id=\"CloseButton\" style=\"align: right top;\" onactivate=\"CloseClicked()\"/>\n      </Panel>\n      <Panel hittest=\"true\" id=\"API\"/>\n    </Panel> \n\n  </Panel>\n</root>\n "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/modmaker/modmaker_api_category.xml",
    "content": "<root>\n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"file://{resources}/styles/modmaker/modmaker.css\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/modmaker/modmaker_api_category.js\" /> \n  </scripts>\n  <Panel hittest=\"false\" class=\"CategoryRoot\">\n    <Panel hittest=\"true\" class=\"CategoryBase\" onactivate=\"Clicked()\">\n      <Panel hittest=\"false\" class=\"Category\">\n        <Label text=\"+\" id=\"PlusMinus\"/>\n        <Label text=\"Category\" id=\"CategoryName\"/>\n      </Panel>\n    </Panel>\n    <Panel hittest=\"false\" id=\"Properties\"/>\n  </Panel>\n</root>\n "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/modmaker/modmaker_api_property.xml",
    "content": "<root>\n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"file://{resources}/styles/modmaker/modmaker.css\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/modmaker/modmaker_api_property.js\" /> \n  </scripts>\n  <Panel hittest=\"false\" class=\"Property\">\n    <Panel hittest=\"false\" class=\"PropNameLink\">\n      <Label text=\"\" id=\"PropertyName\"/>\n      <Button id=\"Github\" class=\"Github\" onactivate=\"OpenGitHub()\">\n        <Label text=\"Search Github\"/>  \n      </Button>\n    </Panel>\n    <Label text=\"\" id=\"PropertyFunction\" onactivate=\"FuncClicked()\"/>\n    <Label text=\"\" id=\"PropertyDescription\"/>\n  </Panel>\n</root>\n "
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/selection.xml",
    "content": "<root> \n    <scripts>\n        <include src=\"file://{resources}/scripts/selection/selection.js\" />\n        <include src=\"file://{resources}/scripts/selection/selection_filter.js\" />\n    </scripts>\n    <Panel></Panel>\n</root>"
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/worldpanels/arrow.xml",
    "content": "<root> \n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"file://{resources}/styles/worldpanels/arrow.css\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/worldpanels/arrow.js\" /> \n  </scripts>\n  <Panel hittest=\"false\" class=\"ArrowPanel\">\n    <Image id=\"arrow\" src=\"s2r://materials/particle/arrow_down.vtex\" />\n  </Panel>\n</root>\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/layout/custom_game/worldpanels/healthbar.xml",
    "content": "<root> \n  <styles>\n    <include src=\"s2r://panorama/styles/dotastyles.vcss_c\" />\n    <include src=\"file://{resources}/styles/worldpanels/healthbar.css\" />\n  </styles>\n  <scripts>\n    <include src=\"file://{resources}/scripts/worldpanels/healthbar.js\" /> \n  </scripts>\n  <Panel hittest=\"false\" class=\"HealthBar\">\n    <Panel class=\"Bubble\">\n      <Panel id=\"HP1\" class=\"HP\"/>\n    </Panel>\n    <Panel class=\"Bubble\">\n      <Panel id=\"HP2\" class=\"HP\"/>\n    </Panel>\n    <Panel class=\"Bubble\">\n      <Panel id=\"HP3\" class=\"HP\"/>\n    </Panel>\n    <Panel class=\"Bubble\">\n      <Panel id=\"HP4\" class=\"HP\"/>\n    </Panel>\n    <Panel class=\"Bubble\">\n      <Panel id=\"HP5\" class=\"HP\"/>\n    </Panel>\n  </Panel>\n</root>\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/barebones_attachments.js",
    "content": "var lastUnit = null;\nvar activated = false;\nvar showing = false;\nvar pmscale = 1;\n\nfunction OnDragStart( panelId, dragCallbacks )\n{\n  var panel = $('#' + panelId);\n  var toDragId = panel.toDragId;\n\n  //$.Msg('OnDragStart -- ', toDragId, ' -- ', panelId, ' -- ', dragCallbacks);\n  // hook up the display panel, and specify the panel offset from the cursor\n  /*$.Msg('#' + panelId);\n  var p = $('#' + panelId);\n  $.Msg(p);\n  $.Msg($.GetContextPanel());\n\n  if (panel === null && $('#' + panelId))\n    panel = $('#' + panelId); */\n\n  panel = $('#' + toDragId);\n\n  dragCallbacks.displayPanel = panel;//panel;\n\n  var cursor = GameUI.GetCursorPosition();\n\n  dragCallbacks.offsetX = cursor[0] - panel.actualxoffset;//250;\n  dragCallbacks.offsetY = cursor[1] - panel.actualyoffset;//20;\n  dragCallbacks.removePositionBeforeDrop = false;\n  return false;\n} \n\nfunction OnDragEnd( panelId, draggedPanel )\n{\n  //$.Msg('OnDragEnd -- ', panelId, ' -- ', draggedPanel);\n  draggedPanel.SetParent($.GetContextPanel());\n  return false;\n}\n\nfunction ValueChange(panel, amount)\n{\n  //$.Msg(panel)\n  var panel = $(panel);\n  var defText = panel.GetChild(0);\n  if (defText !== null && defText !== undefined){\n    defText = defText.text;\n    defText = parseFloat(defText);\n  }\n  else{\n    defText = 0.0;\n  }\n\n  var text = panel.text;\n  if (text === \"\")\n    text = defText;\n  else\n    text = parseFloat(text);\n\n  if (text === NaN)\n    text = defText;\n\n  text += amount * pmscale;\n  if (panel.id == \"Scale\")\n    panel.text = text.toFixed(2);\n  else\n    panel.text = text.toFixed(1);\n\n  UpdateAttachment();\n}\n\nfunction GetAttachmentTable()\n{\n  var table = {};\n  table['model'] = $('#Model').text;\n  table['attach'] =$('#Attach').text;\n  table['scale'] = parseFloat($('#Scale').text) || 1.0;\n  table['pitch'] = parseFloat($('#Pitch').text) || 0.0;\n  table['yaw'] =   parseFloat($('#Yaw').text) || 0.0;\n  table['roll'] =  parseFloat($('#Roll').text) || 0.0;\n  table['XPos'] =  parseFloat($('#XPos').text) || 0.0;\n  table['YPos'] =  parseFloat($('#YPos').text) || 0.0;\n  table['ZPos'] =  parseFloat($('#ZPos').text) || 0.0;\n\n  return table;\n}\n\nfunction UpdateAttachment(a)\n{\n  //$.Msg(\"UpdateAttachment \");\n  var table = GetAttachmentTable();\n\n  GameEvents.SendCustomGameEventToServer( \"Attachment_UpdateAttach\", {index: lastUnit, properties:table} );\n  \n}\n\nfunction Freeze()\n{\n  //$.Msg(\"Freeze\");\n\n  var panel = $('#Freeze');\n  var label = panel.GetChild(0);\n  var text = label.text;\n  if (text === \"Freeze\")\n  {\n    label.text = \"Unfreeze\";\n    label.style.color = \"#ffaaaa\";\n    GameEvents.SendCustomGameEventToServer( \"Attachment_Freeze\", {index: lastUnit, freeze:true} );\n  }\n  else\n  {\n    label.text = \"Freeze\";\n    label.style.color = \"#aaaaff\";\n    GameEvents.SendCustomGameEventToServer( \"Attachment_Freeze\", {index: lastUnit, freeze:false} )\n  }\n}\n\nfunction Save()\n{\n  var table = GetAttachmentTable();\n  GameEvents.SendCustomGameEventToServer( \"Attachment_SaveAttach\", {index: lastUnit, properties:table} )\n}\n\nfunction Load()\n{\n  var table = GetAttachmentTable();\n  GameEvents.SendCustomGameEventToServer( \"Attachment_LoadAttach\", {index: lastUnit, properties:table} )\n}\n\nfunction Hide()\n{\n  var table = GetAttachmentTable();\n  GameEvents.SendCustomGameEventToServer( \"Attachment_HideAttach\", {index: lastUnit, properties:table} )\n}\n\nfunction AttachCheckbox()\n{\n  var panel = $('#AttachCheckbox');\n  var table = GetAttachmentTable();\n  GameEvents.SendCustomGameEventToServer( \"Attachment_DoAttach\", {index: lastUnit, properties:table, doAttach: panel.checked} )\n}\n\nfunction SphereCheckbox()\n{\n  var panel = $('#SphereCheckbox');\n  var table = GetAttachmentTable();\n  GameEvents.SendCustomGameEventToServer( \"Attachment_DoSphere\", {index: lastUnit, properties:table, doSphere: panel.checked} )\n}\n\nfunction HideCosmetics()\n{\n  var panel = $('#CosmeticsPanel');\n  if (panel.visible)\n    panel.visible = false;\n  else\n    panel.visible = true;\n}\n\nfunction CloseCosmetics()\n{\n  var panel = $('#CosmeticsPanel');\n  panel.visible = false;\n}\n\nfunction TopCamera()\n{\n  GameUI.SetCameraPitchMax( 90 );\n  GameUI.SetCameraPitchMin( 90 );\n  GameUI.SetCameraYaw( 0 );\n}\n\nfunction SideXCamera()\n{\n  GameUI.SetCameraPitchMax( 1 );\n  GameUI.SetCameraPitchMin( 1 );\n  GameUI.SetCameraYaw( 0 );\n}\n\nfunction SideYCamera()\n{\n  GameUI.SetCameraPitchMax( 1 );\n  GameUI.SetCameraPitchMin( 1 );\n  GameUI.SetCameraYaw( 90 );\n}\n\nfunction NormalCamera()\n{\n  GameUI.SetCameraPitchMax( 60 );\n  GameUI.SetCameraPitchMin( 38 );\n  GameUI.SetCameraYaw( 0 );\n}\n\nfunction SelectUnitUpdated()\n{\n  //$.Msg('SelectUnitUpdated ', lastUnit, ' -- ', Players.GetLocalPlayerPortraitUnit());\n\n  var newUnit = Players.GetLocalPlayerPortraitUnit();\n \n  if (newUnit !== lastUnit)\n  {\n    $.Msg(\"new\");\n    GameEvents.SendCustomGameEventToServer( \"Attachment_UpdateUnit\", {index: newUnit} );\n  } \n\n  lastUnit = newUnit;\n}\n\nfunction PlusMinusScale()\n{\n  $.Msg(\"PlusMinusScale\");\n  var dropdown = $(\"#PlusMinusScale\");\n  pmscale = parseFloat(dropdown.GetSelected().text);\n}\n\nfunction CosmeticListUpdated(msg)\n{\n  //$.Msg(\"CosmeticListUpdated \", msg);\n\n  // Remove old children\n  var panel = $('#CosmeticsBody');\n  for (i=0;i<panel.GetChildCount(); i++){\n    var lastPanel = panel.GetChild(i);\n    lastPanel.DeleteAsync(0);\n  }\n\n  for (var key in msg){\n    var row = $.CreatePanel('Panel', panel, '');\n    row.AddClass('CosmeticRow');\n\n    var label = $.CreatePanel('Label', row, '');\n    label.AddClass('CosmeticLabel');\n    label.text = msg[key];\n\n    var button = $.CreatePanel('Button', row, '');\n    button.AddClass('CosmeticButton');\n    button.AddClass('SplashButton');\n    button.SetPanelEvent('onactivate', (function(model){\n      return function(){\n        GameEvents.SendCustomGameEventToServer( \"Attachment_HideCosmetic\", {index: lastUnit, model: model} );\n      };\n    })(msg[key]));\n\n    var buttonLabel = $.CreatePanel('Label', button, '');\n    buttonLabel.text = \"Toggle\";\n  }\n  \n}\n\nfunction UpdateFields(msg)\n{\n  //$.Msg(\"UpdateFields \", msg);\n\n  $('#Model').text = msg['model'] || \"\";\n  $('#Attach').text = msg['attach'] || \"\";\n  $('#Scale').text = msg['scale'].toFixed(2);\n  $('#Pitch').text = msg['pitch'].toFixed(1);//table['pitch'] = parseFloat($('#Pitch').text) || 0.0;\n  $('#Yaw').text = msg['yaw'].toFixed(1);//table['yaw'] =   parseFloat($('#Yaw').text) || 0.0;\n  $('#Roll').text = msg['roll'].toFixed(1);//table['roll'] =  parseFloat($('#Roll').text) || 0.0;\n  $('#XPos').text = msg['XPos'].toFixed(1);//table['XPos'] =  parseFloat($('#XPos').text) || 0.0;\n  $('#YPos').text = msg['YPos'].toFixed(1);//table['YPos'] =  parseFloat($('#YPos').text) || 0.0;\n  $('#ZPos').text = msg['ZPos'].toFixed(1);//table['ZPos'] =  parseFloat($('#ZPos').text) || 0.0;\n\n  UpdateAttachment();\n}\n\nfunction ActivateAttachmentConfiguration(msg)\n{\n  if (showing){\n    $(\"#AttachmentsPanel\").visible = false;\n    $(\"#CosmeticsPanel\").visible = false;\n    showing = false;\n  }\n  else{\n    if (!activated){\n      GameEvents.Subscribe( \"dota_player_update_selected_unit\", SelectUnitUpdated );\n\n      GameEvents.Subscribe( \"attachment_cosmetic_list\", CosmeticListUpdated );\n      GameEvents.Subscribe( \"attachment_update_fields\", UpdateFields ); \n      //GameUI.SetMouseCallback(HandleMouseEvent);\n\n      activated = true; \n    }\n\n    lastUnit = Players.GetLocalPlayerPortraitUnit();\n    $(\"#PlusMinusScale\").SetSelected($(\"#DD2\"));\n    if (lastUnit){\n      GameEvents.SendCustomGameEventToServer( \"Attachment_UpdateUnit\", {index: lastUnit} );\n    }\n    $(\"#AttachmentsPanel\").visible = true;\n    showing = true;\n  } \n}\n\n\nvar IsMouseControlledAngles = false;\nvar IsMouseControlledOffsets = false;\nvar lastMousePos;\nvar mouseUpdateInterval = 2.0;\nfunction MouseControlAngles()\n{\n  if(IsMouseControlledAngles == false) {\n    IsMouseControlledAngles = true;\n    MouseControlAnglesLoop();\n  }\n  else {\n    IsMouseControlledAngles = false;\n  }\n}\n\nfunction MouseControlOffsets()\n{\n  if(IsMouseControlledOffsets == false) {\n    IsMouseControlledOffsets = true;\n    MouseControlOffsetsLoop();\n  }\n  else {\n    IsMouseControlledOffsets = false;\n  }\n}\n\nfunction MouseControlAnglesLoop()\n{\n  var mousePos = GameUI.GetCursorPosition();\n  var difX = lastMousePos[0] - mousePos[0];\n  var difY = lastMousePos[1] - mousePos[1];\n  \n  if(GameUI.IsMouseDown(0) == false) {\n    var yaw = MouseCalc($('#Yaw'), difX, pmscale/8);\n    var pitch = MouseCalc($('#Pitch'), difY, pmscale/8);\n    var roll = MouseCalc($(\"#Roll\"), g_MouseYaw, pmscale*10);\n\n    $(\"#Yaw\").text = yaw;\n    $(\"#Pitch\").text = pitch;\n    $(\"#Roll\").text = roll;\n    UpdateAttachment();\n  }\n\n  g_MouseYaw = 0;\n  lastMousePos = mousePos;\n  if(IsMouseControlledAngles == true) {\n    $.Schedule(1.0/mouseUpdateInterval, MouseControlAnglesLoop);\n  }\n}\n\nfunction MouseCalc(panel, dif, scale)\n{\n  var num = parseFloat(panel.text);\n  if(isNaN(num)) {\n    panel.text = num.toString();\n    num = 0;\n  }\n  var angle = num + (scale * dif);\n  angle = Math.round(angle * 100) / 100;\n  return angle.toString();\n}\n\nfunction MouseControlOffsetsLoop()\n{\n  var mousePos = GameUI.GetCursorPosition();\n  var difX = mousePos[0] - lastMousePos[0];\n  var difY = lastMousePos[1] - mousePos[1];\n  \n  if(GameUI.IsMouseDown(0) == false) {\n    var x = MouseCalc($('#XPos'), difX, pmscale/8);\n    var y = MouseCalc($('#YPos'), difY, pmscale/8);\n    var z = MouseCalc($(\"#ZPos\"), g_MouseYaw, pmscale*10);\n    \n    $('#XPos').text = x.toString();\n    $('#YPos').text = y.toString();\n    $('#ZPos').text = z.toString();\n    \n    if(IsMouseControlledAngles == false)\n    {\n      UpdateAttachment();\n    }\n  }\n  \n  if(IsMouseControlledAngles == false) {\n    lastMousePos = mousePos;\n    g_MouseYaw = 0;\n  }\n  if(IsMouseControlledOffsets == true)\n  {\n    $.Schedule(1.0/mouseUpdateInterval, MouseControlOffsetsLoop);\n  }\n}\n\nfunction MouseUpdateScale()\n{\n  var dropdown = $(\"#MouseUpdateScale\");\n  mouseUpdateInterval = parseFloat(dropdown.GetSelected().text);\n}\n\nfunction ShowMouseHelpTooltip()\n{\n  $.DispatchEvent(\"DOTAShowTextTooltip\", \"Holding the left mouse button down disables updating. Scale affects the rate at which items are oriented or moved. Vertical mouse movement affects the Y offset and pitch. Horizontal mouse movement affects the  X offset and yaw. Mouse wheel movement affects the Z offset and roll.\");\n}\n\nfunction HideMouseHelpTooltip()\n{\n  $.DispatchEvent(\"DOTAHideTextTooltip\");\n}\n\nvar g_MouseYaw = 0;\n\nfunction HandleMouseEvent(eventName, arg)\n{\n  if ( eventName === \"wheeled\" ) {\n    g_MouseYaw += arg * pmscale;\n    if(IsMouseControlledAngles == true || IsMouseControlledOffsets == true) {\n      return true;\n    }\n  }\n  return false;\n}\n\n(function()\n{ \n  lastMousePos = GameUI.GetCursorPosition();\n\n  var panel = $(\"#AttachmentsPanel\");\n  $(\"#AttachmentsHeader\").toDragId = \"AttachmentsPanel\";\n  $(\"#CosmeticsHeader\").toDragId = \"CosmeticsPanel\";\n  $(\"#AttachCheckbox\").checked = true; \n  $(\"#SphereCheckbox\").checked = true; \n\n  GameEvents.Subscribe( \"activate_attachment_configuration\", ActivateAttachmentConfiguration );\n \n  //$.Msg(panel.firstLoadDone);\n  if (panel.firstLoadDone)\n    return;\n\n  panel.firstLoadDone = true;\n\n  var options = [.1,.5,1,5,10,25]; \n  var dropdown = $(\"#PlusMinusScale\");\n  for (var i=0; i<options.length; i++){ \n    var label = $.CreatePanel('Label', dropdown, 'DD' + i);\n    label.text = options[i];\n    dropdown.AddOption(label); \n  } \n\n  dropdown.SetSelected(\"DD2\");\n\n  options = [2, 5, 10, 15, 20, 25, 30]; \n  dropdown = $(\"#MouseUpdateScale\");\n  for (var i=0; i<options.length; i++){ \n    var label = $.CreatePanel('Label', dropdown, 'mDD' + i);\n    label.text = Math.ceil(options[i] * 100) / 100;\n    dropdown.AddOption(label); \n  } \n\n  dropdown.SetSelected(\"mDD3\");\n\n  $.RegisterEventHandler( 'DragStart', $('#AttachmentsHeader'), OnDragStart );\n  $.RegisterEventHandler( 'DragEnd', $('#AttachmentsHeader'), OnDragEnd );\n\n  $.RegisterEventHandler( 'DragStart', $('#CosmeticsHeader'), OnDragStart );\n  $.RegisterEventHandler( 'DragEnd', $('#CosmeticsHeader'), OnDragEnd );\n  \n})();"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/barebones_notifications.js",
    "content": "function TopNotification( msg ) {\n  AddNotification(msg, $('#TopNotifications'));\n}\n\nfunction BottomNotification(msg) {\n  AddNotification(msg, $('#BottomNotifications'));\n}\n\nfunction TopRemoveNotification(msg){\n  RemoveNotification(msg, $('#TopNotifications'));\n}\n\nfunction BottomRemoveNotification(msg){\n  RemoveNotification(msg, $('#BottomNotifications'));\n}\n\n\nfunction RemoveNotification(msg, panel){\n  var count = msg.count;\n  if (count > 0 && panel.GetChildCount() > 0){\n    var start = panel.GetChildCount() - count;\n    if (start < 0)\n      start = 0;\n\n    for (i=start;i<panel.GetChildCount(); i++){\n      var lastPanel = panel.GetChild(i);\n      //lastPanel.SetAttributeInt(\"deleted\", 1);\n      lastPanel.deleted = true;\n      lastPanel.DeleteAsync(0);\n    }\n  }\n}\n\nfunction AddNotification(msg, panel) {\n  var newNotification = true;\n  var lastNotification = panel.GetChild(panel.GetChildCount() - 1)\n  //$.Msg(msg)\n\n  msg.continue = msg.continue || false;\n  //msg.continue = true;\n\n  if (lastNotification != null && msg.continue) \n    newNotification = false;\n\n  if (newNotification){\n    lastNotification = $.CreatePanel('Panel', panel, '');\n    lastNotification.AddClass('NotificationLine')\n    lastNotification.hittest = false;\n  }\n\n  var notification = null;\n  \n  if (msg.hero != null)\n    notification = $.CreatePanel('DOTAHeroImage', lastNotification, '');\n  else if (msg.image != null)\n    notification = $.CreatePanel('Image', lastNotification, '');\n  else if (msg.ability != null)\n    notification = $.CreatePanel('DOTAAbilityImage', lastNotification, '');\n  else if (msg.item != null)\n    notification = $.CreatePanel('DOTAItemImage', lastNotification, '');\n  else\n    notification = $.CreatePanel('Label', lastNotification, '');\n\n  if (typeof(msg.duration) != \"number\"){\n    //$.Msg(\"[Notifications] Notification Duration is not a number!\");\n    msg.duration = 3\n  }\n  \n  if (newNotification){\n    $.Schedule(msg.duration, function(){\n      //$.Msg('callback')\n      if (lastNotification.deleted)\n        return;\n      \n      lastNotification.DeleteAsync(0);\n    });\n  }\n\n  if (msg.hero != null){\n    notification.heroimagestyle = msg.imagestyle || \"icon\";\n    notification.heroname = msg.hero\n    notification.hittest = false;\n  } else if (msg.image != null){\n    notification.SetImage(msg.image);\n    notification.hittest = false;\n  } else if (msg.ability != null){\n    notification.abilityname = msg.ability\n    notification.hittest = false;\n  } else if (msg.item != null){\n    notification.itemname = msg.item\n    notification.hittest = false;\n  } else{\n    notification.html = true;\n    var text = msg.text || \"No Text provided\";\n    notification.text = $.Localize(text)\n    notification.hittest = false;\n    notification.AddClass('TitleText');\n  }\n  \n  if (msg.class)\n    notification.AddClass(msg.class);\n  else\n    notification.AddClass('NotificationMessage');\n\n  if (msg.style){\n    for (var key in msg.style){\n      var value = msg.style[key]\n      notification.style[key] = value;\n    }\n  }\n}\n\n\n(function () {\n  GameEvents.Subscribe( \"top_notification\", TopNotification );\n  GameEvents.Subscribe( \"bottom_notification\", BottomNotification );\n  GameEvents.Subscribe( \"top_remove_notification\", TopRemoveNotification );\n  GameEvents.Subscribe( \"bottom_remove_notification\", BottomRemoveNotification );\n})();"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/barebones_worldpanels.js",
    "content": "var PlayerTables = GameUI.CustomUIConfig().PlayerTables;\nvar subscription = null; \n\nconst HA_CENTER = 0;\nconst HA_LEFT   = 1; \nconst HA_RIGHT  = 2; \nconst VA_BOTTOM = 0; \nconst VA_CENTER = 1; \nconst VA_TOP    = 2; \n\n\n$.Msg(\"barebones_worldpanels.js\");\nvar panels = {};\nvar entities = [];\n//{panel, position, entity, offsetX, offsetY, hAlign, vAlign, entityHeight, edge}\n\n// panel deletion call?\n// Delete call to server for cleanup\n\nfunction WorldPanelChange(id, changes, dels)\n{\n  //$.Msg(\"change \", id, ' -- ', changes, ' -- ', dels);\n  for (var k in changes){\n    var wp = panels[k];\n    if (!wp){\n      wp = {};\n      panels[k] = wp;\n    }\n\n    if (changes[k].layout !== wp.layout){\n      if (wp.panel)\n        wp.panel.DeleteAsync(0);\n\n      wp.panel = $.CreatePanel( \"Panel\", $.GetContextPanel(), \"\" );\n      wp.panel.BLoadLayout(changes[k].layout, false, false);\n      wp.panel.WorldPanel = wp;\n      wp.panel.OnEdge = false;\n      wp.panel.OffScreen = false;\n      wp.panel.Data = wp.data;\n      wp.panel.DeleteWorldPanel = function(pan){ \n        return function(){\n          pan.DeleteAsync(0);\n          delete panels[k];\n        }\n      }(wp.panel);\n\n    }\n\n    for (j in changes[k]){\n      if (j == \"position\"){\n        wp[j] = changes[k][j].split(' ');\n        wp[j] = [parseFloat(wp[j][0]), parseFloat(wp[j][1]), parseFloat(wp[j][2])]\n      }\n      else if (j == \"data\"){\n        wp.panel.Data = changes[k][j];\n        wp[j] = changes[k][j];\n      }\n      else\n        wp[j] = changes[k][j];\n    }\n    \n    //wp.dirty = true;\n    wp.offsetX = wp.offsetX || 0;\n    wp.offsetY = wp.offsetY || 0;\n    wp.entityHeight = wp.entityHeight || 0;\n    wp.hAlign = wp.hAlign || HA_CENTER;\n    wp.vAlign = wp.vAlign || VA_BOTTOM;\n    wp.edge = wp.edge || -1;\n    wp.seen = wp.entity ? Entities.IsValidEntity(wp.entity) : null;\n\n  }\n\n  for (var k in dels){\n    panels[k].panel.DeleteAsync(0);\n    delete panels[k];\n  }\n}\n\nfunction PositionPanels()\n{\n  //$.Msg(Object.keys(panels).length);\n  for (var k in panels){\n    var wp = panels[k];\n    var pos = wp.position;\n    if (!pos){\n      if (!Entities.IsValidEntity(wp.entity)){\n        if (wp.seen){\n          panels[k].panel.DeleteAsync(0);\n          delete panels[k];\n          continue;\n        }\n        else{\n          continue;\n        }\n      }\n\n\n      wp.seen = true;\n\n      pos = Entities.GetAbsOrigin(wp.entity);\n      if (entities.indexOf(wp.entity) === -1){\n        wp.panel.visible = false;\n        continue;\n      }\n      wp.panel.visible = true;\n\n      pos[2] += wp.entityHeight || 0;\n    }\n \n    var wx = Game.WorldToScreenX(pos[0], pos[1], pos[2]);\n    var wy = Game.WorldToScreenY(pos[0], pos[1], pos[2]);\n    var sw = GameUI.CustomUIConfig().screenwidth;\n    var sh = GameUI.CustomUIConfig().screenheight;\n    var scale = 1080 / sh;\n\n    var x = scale * wx + wp.offsetX;\n    wx = wx + wp.offsetX\n    var y = scale * wy + wp.offsetY;\n    wy = wy + wp.offsetY\n\n    var pw = wp.panel.actuallayoutwidth;\n    var ph = wp.panel.actuallayoutheight;\n\n    switch(wp.hAlign){\n      case HA_LEFT:\n        break;\n      case HA_RIGHT:\n        x-= pw;\n        break;\n      case HA_CENTER:\n      default:\n        x-= pw/2;\n        break;\n    };\n    switch(wp.vAlign){\n      case VA_TOP:\n        break;\n      case VA_CENTER:\n        y-= ph/2;\n        break;\n      case VA_BOTTOM:\n      default:\n        y-= ph;\n        break;\n    };\n\n    if (wp.edge !== -1){\n      var padx = sw * wp.edge / 100;\n      var pady = sh * wp.edge / 100;\n\n      var oldx = x;\n      var oldy = y;\n\n      x = Math.max(padx,Math.min((sw-pw-padx)*scale, x));\n      y = Math.max(pady,Math.min((sh-ph-pady)*scale, y));\n\n      //$.Msg(oldx, ' -- ', oldy, '          ', wx, ' -- ', wy, '          ', x, ' -- ', y)\n\n      if (x !== oldx || y !== oldy){\n        wp.panel.OnEdge = true;\n\n        var center =  Game.ScreenXYToWorld(sw/2, sh/2)\n        var center2 = GameUI.GetScreenWorldPosition(sw/2, sh/2 + 1)\n        if (center && center2){\n          var diff = [center2[0]-center[0], center2[1]-center[1]]\n          var diff2 = [pos[0]-center[0], pos[1]-center[1]]\n\n          var ang = Math.atan2(diff2[1], diff2[0]) - Math.atan2(diff[1], diff[0]) - Math.PI/2\n          x = Math.cos(ang)\n          y = -1*Math.sin(ang)\n          var xscale = ((sw-2*padx)/2 / x)\n          var yscale = ((sh-2*pady)/2 / y)\n          var minscale = Math.min(Math.abs(xscale), Math.abs(yscale));\n          x = x * minscale + sw/2\n          y = y * minscale + sh/2\n\n          x = x - pw * (x/(sw-pw));\n          y = y - ph * (y/(sh-ph));\n\n          x *= scale;\n          y *= scale;\n\n          x = x.toFixed(1)\n          y = y.toFixed(1)\n\n        }\n        else{\n          x = NaN;\n          y = NaN;\n        }\n        \n      }\n      else\n        wp.panel.OnEdge = false;\n\n    }\n    else{\n      if (x < pw || x > sw || y < ph || y > sh)\n        wp.panel.OffScreen = true;\n      else\n        wp.panel.OffScreen = false;\n    }\n\n    if (!isFinite(x) || isNaN(x) || !isFinite(y) || isNaN(y))\n    {\n      x = -1000;\n      y = -1000;\n      wp.panel.visible = false;\n    }\n    else\n    {\n      wp.panel.visible = true;  \n    }\n\n    \n    wp.panel.style.position = x + \"px \" + y + \"px 0px;\";\n\n    //$.Msg(k, ' -- ', pw, ' -- ', ph);\n    //var x = scale * Math.min(sw - panel.desiredlayoutwidth,Math.max(0, wx - panel.desiredlayoutwidth/2));\n    //var y = scale * Math.min(sh - panel.desiredlayoutheight,Math.max(0, wy - panel.desiredlayoutheight - 50));\n  }\n\n  $.Schedule(1/200, PositionPanels);\n}\n\nfunction ScreenHeightWidth()\n{\n  var panel = $.GetContextPanel();\n\n  GameUI.CustomUIConfig().screenwidth = panel.actuallayoutwidth;\n  GameUI.CustomUIConfig().screenheight = panel.actuallayoutheight;  \n\n  $.Schedule(1/2, ScreenHeightWidth);\n}\n\nfunction UpdateEntities()\n{\n  if (Object.keys(panels).length > 0)\n    entities = Entities.GetAllEntities();\n\n  $.Schedule(1/10, UpdateEntities);\n}\n\n(function()\n{ \n  var pt = \"worldpanels_\" +  Game.GetLocalPlayerID()\n  ScreenHeightWidth(); \n  PositionPanels();\n  UpdateEntities();\n\n  entities = Entities.GetAllEntities();\n\n  if ($.GetContextPanel().subscription !== undefined){\n    PlayerTables.UnsubscribeNetTableListener($.GetContextPanel().subscription);\n  }\n\n  subscription = PlayerTables.SubscribeNetTableListener(pt, WorldPanelChange);\n\n  var tab = PlayerTables.GetAllTableValues(pt);\n  for (var k in tab){\n    var change = {};\n    change[k] = tab[k];\n    WorldPanelChange(pt, change, {}); \n  } \n\n  $.GetContextPanel().subscription = subscription;\n})();"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/containers/container.js",
    "content": "\"use strict\";\n\nvar Containers = GameUI.CustomUIConfig().Containers;\nvar PlayerTables = GameUI.CustomUIConfig().PlayerTables;\n\nvar contID = -1;\nvar idString = \"\";\nvar subscription = -1;\nvar isShop = false;\nvar positionString = null;\n\nvar oldSkins = {};\n\nfunction GetID()\n{\n  return contID;\n}\n\nfunction GetIDString()\n{\n  return idString;\n}\n\nfunction ContainerChange(tableName, changes, del)\n{\n  var panel = $.GetContextPanel();\n  //$.Msg('ContainerChange -- ', tableName, ' -- ', changes, ' -- ', del);\n  if (!changes)\n    return;\n\n  if (\"headerText\" in del)\n    SetHeaderText(\"\");\n\n  if (\"buttons\" in del)\n    SetButtons({});\n\n  if (\"OnCloseClicked\" in del)\n    $(\"#CloseButton\").visible = true;\n\n  if (\"position\" in del)\n    positionString = null;\n\n\n\n  if (\"skins\" in changes)\n    SetSkins(changes[\"skins\"]);\n\n  if (\"headerText\" in changes)\n    SetHeaderText(changes[\"headerText\"]);\n\n  if (\"layout\" in changes)\n    SetLayout(changes[\"layout\"]);\n\n  if (\"buttons\" in changes)\n    SetButtons(changes[\"buttons\"]);\n\n  if (\"draggable\" in changes)\n    panel.SetDraggable(changes[\"draggable\"] !== 0);\n\n  if (\"position\" in changes)\n    SetPosition(changes[\"position\"]);\n\n  if (\"shop\" in changes)\n    isShop = changes[\"shop\"] == 1;\n\n  if (\"OnCloseClicked\" in changes)\n    $(\"#CloseButton\").visible = changes[\"OnCloseClicked\"] !== 0;\n}\n\nfunction SetSkins(skins)\n{\n  var panel = $.GetContextPanel();\n\n  for (var key in skins){\n    //$.Msg(\"skin: \", key);\n    panel.SetHasClass(key, true);\n    delete oldSkins[key];\n  }\n\n  for (var key in oldSkins){\n    //$.Msg(\"oldskin: \", key);\n    panel.SetHasClass(key, false);\n  }\n\n  oldSkins = skins;\n}\n\nfunction SetHeaderText(text)\n{\n  var label = $(\"#HeaderLabel\");\n  label.text = $.Localize(text);\n}\n\nfunction SetLayout(layout)\n{\n  var inner = $(\"#Inner\");\n  inner.RemoveAndDeleteChildren();\n\n  var slot = 1;\n   \n  for (var key in layout){\n    var row = $.CreatePanel( \"Panel\", inner, \"row\" + key);\n    row.AddClass('ItemRow');\n \n    //var queryUnit = Players.GetLocalPlayerPortraitUnit();\n    //var item = Entities.GetItemInSlot( queryUnit, i );\n \n    for (var j=0; j<layout[key]; j++){\n      var child = $.CreatePanel( \"Panel\", row, \"slot\" + slot); \n      child.BLoadLayout(\"file://{resources}/layout/custom_game/containers/inventory_item.xml\", false, false);\n      child.SetItem( -1, contID, slot, $.GetContextPanel() );\n\n      slot++;\n    }\n  }\n}\n\nfunction ButtonPress(number, name)\n{\n  //$.Msg('ButtonPress', ' -- ', number);\n\n  var jsAction = PlayerTables.GetTableValue(idString, \"OnButtonPressedJS\");\n  var action = PlayerTables.GetTableValue(idString, \"OnButtonPressed\");\n\n  var pid = Game.GetLocalPlayerID();\n  var unit = Players.GetLocalPlayerPortraitUnit()\n  unit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid);\n\n  var handler = Containers.eventHandlers[jsAction]\n  if (handler){\n    var ret = false;\n    try{\n      ret = handler({unit:unit, containerID:contID, containerPanel:$.GetContextPanel(), buttonID:number, buttonName:name});\n    }catch(err){\n      $.Msg(\"[container.js] OnButtonPressed callback error for '\", jsAction, \"': \", err.stack);\n    }\n\n    if (!ret)\n      return;\n  }\n  \n  if (action !== 0){\n    GameEvents.SendCustomGameEventToServer( \"Containers_OnButtonPressed\", {unit:unit, contID:contID, button:parseInt(number)} );\n    return;\n  }\n}\n\nfunction SetButtons(buttons)\n{\n  var footer = $(\"#Footer\");\n  footer.RemoveAndDeleteChildren();\n\n  for (var number in buttons){\n    var button = $.CreatePanel( \"Button\", footer, \"Button\" + number);\n    button.SetDraggable(true);\n    button.AddClass(\"ButtonBevel\");\n    button.SetPanelEvent(\"onactivate\", (function(num, buttonName){\n      return function(){ ButtonPress(num, buttonName); };\n    })(number, buttons[number]));\n\n    var label =  $.CreatePanel( \"Label\", button, \"\");\n    label.text = $.Localize(buttons[number]);\n\n    $.RegisterEventHandler( 'DragStart', button, NullDragStart );\n    $.RegisterEventHandler( 'DragEnd', button, NullDragEnd );\n  }\n}\n\nfunction SetPosition(pos)\n{\n  var panel = $.GetContextPanel();\n  var percMatch = /([^%]+)%\\s+([^%]+)%/g.exec(pos);\n\n  if (pos == \"mouse\"){\n    positionString = \"mouse\";\n    var cursor = GameUI.GetCursorPosition();\n    //$.Msg(panel.contentwidth, \" -- \", panel.contentheight);\n    //$.Msg(panel.actuallayoutwidth, \" -- \", panel.actuallayoutheight);\n    //$.Msg(panel.desiredlayoutwidth, \" -- \", panel.desiredlayoutheight);\n\n    var x = cursor[0] - panel.desiredlayoutwidth/2;\n    var y = cursor[1] - 25;\n\n    panel.style.position = x + \"px \" + y + \"px 0px;\";\n  }\n  else if (pos == \"entity\"){\n    positionString = \"entity\";\n    var ent = PlayerTables.GetTableValue(idString, \"entity\");\n    if (ent != undefined){\n      var origin = Entities.GetAbsOrigin(ent)\n      var wx = Game.WorldToScreenX(origin[0], origin[1], origin[2]);\n      var wy = Game.WorldToScreenY(origin[0], origin[1], origin[2]);\n      var sw = GameUI.CustomUIConfig().screenwidth;\n      var sh = GameUI.CustomUIConfig().screenheight\n      var scale = 1080 / sh;\n\n      var x = scale * Math.min(sw - panel.desiredlayoutwidth,Math.max(0, wx - panel.desiredlayoutwidth/2));\n      var y = scale * Math.min(sh - panel.desiredlayoutheight,Math.max(0, wy - panel.desiredlayoutheight - 50));\n\n      panel.style.position = x + \"px \" + y + \"px 0px;\";\n    }\n    else\n    {\n      panel.style.position = \"0px 0px 0px;\";\n    }\n  }\n  else if (percMatch){\n    var sw = GameUI.CustomUIConfig().screenwidth;\n    var sh = GameUI.CustomUIConfig().screenheight\n    var scale = 1080 / sh;\n\n    var x = Number(percMatch[1]);\n    var y = Number(percMatch[2]);;\n    if (isNaN(x) || isNaN(y)){\n      panel.style.position = \"0px 0px 0px;\";\n    }\n    else{\n      x = x*sw/100*scale\n      y = y*sh/100*scale\n      panel.style.position = x + \"px \" + y + \"px 0px;\";\n    }\n  }\n  else {\n    panel.style.position = pos;\n    positionString = null;\n  }\n}\n\nfunction NewContainer(id)\n{\n  var panel = $.GetContextPanel();\n  contID = id;\n  idString = \"cont_\" + id;\n\n  subscription = PlayerTables.SubscribeNetTableListener(idString, ContainerChange);\n\n  var pt = PlayerTables.GetAllTableValues(idString);\n  //$.Msg(pt);\n  \n  //$.Msg(\"container panel created \", panel.id);\n\n  SetSkins(pt.skins);\n  SetHeaderText(pt.headerText);\n  SetLayout(pt.layout);\n  SetButtons(pt.buttons);\n  panel.SetDraggable(pt.draggable !== 0);\n  isShop = pt.shop === 1;\n\n  if (pt.OnCloseClicked === 0 && $(\"#CloseButton\"))\n    $(\"#CloseButton\").visible = false;\n\n\n  var count = 0;\n  var f = null;\n\n  if (pt.position === \"mouse\" || pt.position === \"entity\"){\n    panel.style.position = \"-1000px -1000px 0px;\"\n    f = function(){\n      count++;\n      if (panel.desiredlayoutheight === 0){\n        $.Schedule(1/30, f);      \n        return;\n      }\n\n      SetPosition(pt.position);\n    };\n\n    $.Schedule(1/30, f);\n  }\n  else{\n    SetPosition(pt.position);\n  }\n}\n\nfunction OpenContainer()\n{\n  var panel = $.GetContextPanel();\n\n  if (!panel.visible && positionString){\n    SetPosition(positionString);\n  }\n\n  panel.visible = true;\n}\n\nfunction CloseContainer()\n{\n  var panel = $.GetContextPanel();\n  panel.visible = false;\n}\n\nfunction DeleteContainer()\n{\n  var panel = $.GetContextPanel();\n\n  PlayerTables.UnsubscribeNetTableListener(subscription);\n  if (panel){\n    panel.deleted = true;\n    CloseContainer();\n  }\n}\n\nfunction IsShop()\n{\n  return isShop;\n}\n\nfunction CloseClicked()\n{\n  //$.Msg(\"CloseClicked\");\n\n  var jsAction = PlayerTables.GetTableValue(idString, \"OnCloseClickedJS\");\n  var action = PlayerTables.GetTableValue(idString, \"OnCloseClicked\");\n\n  var pid = Game.GetLocalPlayerID();\n  var unit = Players.GetLocalPlayerPortraitUnit()\n  unit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid);\n\n  var handler = Containers.eventHandlers[jsAction]\n  if (handler){\n    var ret = false;\n    try{\n      ret = handler({unit:unit, containerID:contID, containerPanel:$.GetContextPanel()});\n    }catch(err){\n      $.Msg(\"[container.js] OnButtonPressed callback error for '\", jsAction, \"': \", err.stack);\n    }\n\n    if (!ret)\n      return;\n  }\n\n  \n  if (action !== 0){\n    GameEvents.SendCustomGameEventToServer( \"Containers_OnCloseClicked\", {unit:unit, contID:contID} );\n    return;\n  }\n}\n\n\n\n\nfunction OnDragStart( panelId, dragCallbacks )\n{\n  //$.Msg('OnDragStart -- ', panelId)\n  var panel = $('#' + panelId);\n\n  dragCallbacks.displayPanel = panel;//panel;\n\n  var cursor = GameUI.GetCursorPosition();\n\n  dragCallbacks.offsetX = cursor[0] - panel.actualxoffset;//250;\n  dragCallbacks.offsetY = cursor[1] - panel.actualyoffset;//20;\n  dragCallbacks.removePositionBeforeDrop = false;\n  return false;\n} \n\nfunction OnDragEnd( panelId, draggedPanel )\n{\n  //$.Msg('OnDragEnd -- ', panelId, ' -- ', draggedPanel);\n  draggedPanel.SetParent(draggedPanel.dragParent);\n  return false; \n} \n\nfunction NullDragStart( panelId, dragCallbacks)\n{\n  return true;\n}\n\nfunction NullDragEnd( panelId, draggedPanel)\n{\n  return true;\n}\n\n\n\n(function(){\n  //$.DispatchEvent(\"DOTAShowTitleTextTooltipStyled\", $.GetContextPanel(), \"Title asdf\", \"asdfasdf asdf asdf asdf asdf few fwef wef we\", \"StlyeClass\") \n\n  //TestFunction();\n  //TestFunctionTwo();\n\n  var panel = $.GetContextPanel();\n  var inner = $(\"#Inner\");\n  var close = $(\"#CloseButton\");\n\n  panel.NewContainer = NewContainer;\n  panel.OpenContainer = OpenContainer;\n  panel.CloseContainer = CloseContainer;\n  panel.DeleteContainer = DeleteContainer;\n  panel.GetID = GetID;\n  panel.GetIDString = GetIDString;\n  panel.IsShop = IsShop;\n\n  if (panel.initialized){\n    //containers = panel.containers;\n    return;\n  }\n\n  panel.initialized = true;\n\n  panel.dragParent = panel.GetParent();\n\n  $.RegisterEventHandler( 'DragStart', panel, OnDragStart );\n  $.RegisterEventHandler( 'DragEnd', panel, OnDragEnd );\n\n  $.RegisterEventHandler( 'DragStart', inner, NullDragStart );\n  $.RegisterEventHandler( 'DragEnd', inner, NullDragEnd );\n\n  $.RegisterEventHandler( 'DragStart', close, NullDragStart );\n  $.RegisterEventHandler( 'DragEnd', close, NullDragEnd );\n\n})()\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/containers/container_base.js",
    "content": "\"use strict\";\n\nvar PlayerTables = GameUI.CustomUIConfig().PlayerTables;\nvar containers = {};\nvar eventHandlers = {};\nvar lastUnit = null;\n\n/*var fun = function(tableName, changes, delete)\n{\n  $.Msg(\"fun callback -- \", tableName, \" -- \" , changes); \n};*/\n\n$.Msg(\"[containers_base.js] Loaded\");\n\nfunction DisableFocus(panel)\n{\n  panel.SetDisableFocusOnMouseDown(true);\n  //panel.SetAcceptsFocus(false);\n  \n  for (var i=0; i<panel.GetChildCount(); i++){\n    DisableFocus(panel.GetChild(i));\n  }\n}\n\nfunction OpenContainer(msg)\n{\n  //$.Msg(\"OpenContainer -- \", msg);\n  var panel = $.GetContextPanel();\n  var id = msg.id; \n  var containerPanel = containers[id];\n\n\n\n  if (!containerPanel){\n    var idString = \"cont_\" + id;\n    var layoutFile = PlayerTables.GetTableValue(idString, \"layoutFile\") || \"file://{resources}/layout/custom_game/containers/container.xml\";\n\n    containerPanel = $.CreatePanel( \"Panel\", panel, \"\" );\n    containerPanel.BLoadLayout(layoutFile, false, false);\n    containers[id] = containerPanel;\n\n    containerPanel.NewContainer(id);\n\n\n    DisableFocus(panel);\n  }\n  else{\n    containerPanel.OpenContainer();\n  }\n}\n\nfunction CloseContainer(msg)\n{\n  //$.Msg(\"CloseContainer -- \", msg);\n  var id = msg.id;\n  var containerPanel = containers[id];\n\n  if (containerPanel){\n    containerPanel.CloseContainer();\n  }\n  else{\n    $.Msg(\"[container_base.js] Close container for id '\" + id + \"' unable to find existing container.\");\n  }\n}\n\nfunction DeleteContainer(msg)\n{\n //$.Msg(\"DeleteContainer -- \", msg); \n var id = msg.id;\n var containerPanel = containers[id];\n if (containerPanel){\n  containerPanel.DeleteContainer();\n  containerPanel.DeleteAsync(1);\n  delete containers[id];\n }\n else{\n  //$.Msg(\"[container_base.js] Delete container for id '\" + id + \"' unable to find existing container.\")\n } \n}\n \n\nfunction ExecuteProxy(msg)\n{\n  //$.Msg(\"ExecuteProxy\");\n  var localHeroIndex = Players.GetPlayerHeroEntityIndex( Players.GetLocalPlayer());\n  var abil = Entities.GetAbilityByName( localHeroIndex , \"containers_lua_targeting\" );\n  if (abil === -1)\n     abil = Entities.GetAbilityByName( localHeroIndex , \"containers_lua_targeting_tree\" );\n  \n  if (abil !== -1){\n    Abilities.ExecuteAbility( abil, localHeroIndex, false );\n\n    var fun = function(){\n      var behaviors = GameUI.GetClickBehaviors();\n      if (behaviors != CLICK_BEHAVIORS.DOTA_CLICK_BEHAVIOR_CAST){\n        GameEvents.SendCustomGameEventToServer( \"Containers_HideProxy\", {abilID:abil} );\n        return;\n      }\n      $.Schedule(1/60, fun);\n    };\n\n    $.Schedule(1/60, fun);    \n  }\n  else{\n    $.Msg(\"'containers_lua_targeting' ability not found.\");\n  }\n}\n\nvar EntityShops = {};\nvar lastSel = null; \n\nfunction CheckShop()\n{\n  var sel = Players.GetLocalPlayerPortraitUnit();\n  if (sel !== lastSel){\n    GameEvents.SendCustomGameEventToServer( \"Containers_Select\", {entity:sel} );\n    lastSel = sel;\n    //$.Msg(\"CheckShop \", sel, ' -- ', lastSel);\n  }\n\n  if (sel >= 1 && (Entities.IsCreepHero(sel) || Entities.IsRealHero(sel))) {\n    var shop = 0;\n    shop += Entities.IsInRangeOfShop( sel, 0, true) ? 1 : 0;\n    shop += Entities.IsInRangeOfShop( sel, 1, true) ? 2 : 0;\n    shop += Entities.IsInRangeOfShop( sel, 2, true) ? 4 : 0;\n\n    var oldShop = EntityShops[sel];\n    if (oldShop !== shop){\n      GameEvents.SendCustomGameEventToServer( \"Containers_EntityShopRange\", {unit:sel, shop:shop} );\n    }\n\n    EntityShops[sel] = shop;\n  }\n}\n\nfunction CheckShopSchedule()\n{\n  CheckShop();\n  $.Schedule(1/10, CheckShopSchedule);\n}\n\nfunction CheckCouriers()\n{\n  var cours = Entities.GetAllEntitiesByClassname(\"npc_dota_courier\");\n  var info = Game.GetLocalPlayerInfo();\n\n  for (var i=0; i<cours.length; i++){\n    var cour = cours[i];\n    if (info.player_team_id == Entities.GetTeamNumber(cour)){\n\n      var shop = 0;\n      shop += Entities.IsInRangeOfShop( cour, 0, true) ? 1 : 0;\n      shop += Entities.IsInRangeOfShop( cour, 1, true) ? 2 : 0; \n      shop += Entities.IsInRangeOfShop( cour, 2, true) ? 4 : 0;\n\n      var oldShop = EntityShops[cour];\n      if (oldShop !== shop){\n        GameEvents.SendCustomGameEventToServer( \"Containers_EntityShopRange\", {unit:cour, shop:shop} );\n      }\n\n      EntityShops[cour] = shop;\n    }\n  }\n\n  $.Schedule(1/10, CheckCouriers);\n}\n\nfunction CreateErrorMessage(msg)\n{\n  var reason = msg.reason || 80;\n  if (msg.message){\n    GameEvents.SendEventClientSide(\"dota_hud_error_message\", {\"splitscreenplayer\":0,\"reason\":reason ,\"message\":msg.message} );\n  }\n  else{\n    GameEvents.SendEventClientSide(\"dota_hud_error_message\", {\"splitscreenplayer\":0,\"reason\":reason} );\n  }\n}\n\nfunction EmitClientSound(msg)\n{\n  if (msg.sound){\n    Game.EmitSound(msg.sound);\n  }\n}\n\nfunction UsePanoramaInventory(msg)\n{\n  var use = msg.use;\n  var panInv = $(\"#PanoramaInventory\");\n  if (use === 0){\n    panInv.visible = false;\n    GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_ITEMS, true );\n  }\n  else{\n    panInv.visible = true;\n    GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_ITEMS, false );\n  }\n}\n\nfunction ScreenHeightWidth()\n{\n  var panel = $.GetContextPanel();\n\n  GameUI.CustomUIConfig().screenwidth = panel.actuallayoutwidth;\n  GameUI.CustomUIConfig().screenheight = panel.actuallayoutheight;\n\n  $.Schedule(1/4, ScreenHeightWidth);\n}\n\nfunction RegisterEventHandler(name, func)\n{\n  eventHandlers[name] = func;\n}\n\n(function(){\n  var panel = $.GetContextPanel();\n\n  ScreenHeightWidth();\n\n  //containerPanel = $.CreatePanel( \"Panel\", panel, \"\" );\n  //containerPanel.BLoadLayout(\"file://{resources}/layout/custom_game/containers/container.xml\", false, false);\n\n  GameEvents.Subscribe( \"cont_open_container\", OpenContainer); \n  GameEvents.Subscribe( \"cont_close_container\", CloseContainer);\n  GameEvents.Subscribe( \"cont_delete_container\", DeleteContainer);\n\n  GameEvents.Subscribe( \"cont_execute_proxy\", ExecuteProxy);\n  GameEvents.Subscribe( \"cont_create_error_message\", CreateErrorMessage);\n  GameEvents.Subscribe( \"cont_emit_client_sound\", EmitClientSound);\n  GameEvents.Subscribe( \"cont_use_panorama_inventory\", UsePanoramaInventory);\n\n  GameEvents.Subscribe( \"dota_player_update_selected_unit\", CheckShop );\n  GameEvents.Subscribe( \"dota_player_update_query_unit\", CheckShop );\n\n  var use = CustomNetTables.GetTableValue( \"containers_lua\", \"use_panorama_inventory\" );\n  if (use)\n    UsePanoramaInventory({use:use.value});\n  else\n    UsePanoramaInventory({use:false});\n\n  CheckShopSchedule();\n  CheckCouriers();\n\n  //$.Msg(\"container_base: \", panel); \n\n  if (panel.initialized){\n    containers = panel.containers || {};\n    for (var key in containers){\n      containers[key].DeleteContainer();\n      //containers[keys[key]].DeleteAsync(1);\n      delete containers[key]; \n    }\n    return;  \n  }\n\n  GameUI.CustomUIConfig().Containers = {}\n  GameUI.CustomUIConfig().Containers.containers = containers;\n  GameUI.CustomUIConfig().Containers.eventHandlers = eventHandlers;\n  GameUI.CustomUIConfig().Containers.RegisterEventHandler = RegisterEventHandler;\n\n  panel.containers = containers;\n  panel.initialized = true; \n})()\n\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/containers/container_events.js",
    "content": "var Containers = GameUI.CustomUIConfig().Containers;\n\n// Events can be registered in any javascript file you have through GameUI.CustomUIConfig().Containers\n// Events should return true to allow for any additional built-in effects to occur\n// This includes sending an event to the server and triggering server/lua actions\n\nContainers.RegisterEventHandler(\"ExampleLeftClick\", function(evt){\n  $.Msg(\"ExampleLeftClick CALLBACK ACTION in JS\");\n  $.Msg(Object.keys(evt));                      //[   PanoramaScript         ]: [\"unit\",\"containerID\",\"itemID\",\"slot\",\"containerPanel\",\"itemPanel\"]\n  return true;\n});\n\nContainers.RegisterEventHandler(\"ExampleRightClick\", function(evt){\n  $.Msg(\"RIGHT CLICK CALLBACK ACTION in JS\");\n  $.Msg(Object.keys(evt));                      //[   PanoramaScript         ]: [\"unit\",\"containerID\",\"itemID\",\"slot\",\"containerPanel\",\"itemPanel\"]\n  return true;\n});\n\nContainers.RegisterEventHandler(\"ExampleDoubleClick\", function(evt){\n  $.Msg(\"ExampleDoubleClick CALLBACK ACTION in JS\");\n  $.Msg(Object.keys(evt));                      //[   PanoramaScript         ]: [\"unit\",\"containerID\",\"itemID\",\"slot\",\"containerPanel\",\"itemPanel\",\"leftClick\"]\n  return true;\n});\n\nContainers.RegisterEventHandler(\"ExampleMouseOver\", function(evt){\n  $.Msg(\"ExampleMouseOver CALLBACK ACTION in JS\");\n  $.Msg(Object.keys(evt));                      //[   PanoramaScript         ]: [\"unit\",\"containerID\",\"itemID\",\"slot\",\"containerPanel\",\"itemPanel\"]\n  return false;\n});\n\nContainers.RegisterEventHandler(\"ExampleMouseOut\", function(evt){\n  $.Msg(\"ExampleMouseOut CALLBACK ACTION in JS\");\n  $.Msg(Object.keys(evt));                      //[   PanoramaScript         ]: [\"unit\",\"containerID\",\"itemID\",\"slot\",\"containerPanel\",\"itemPanel\"]\n  return true;\n});\n\nContainers.RegisterEventHandler(\"ExampleCloseClicked\", function(evt){\n  $.Msg(\"ExampleCloseClicked CALLBACK ACTION in JS\");\n  $.Msg(Object.keys(evt));                      //[   PanoramaScript         ]: [\"unit\",\"containerID\",\"containerPanel\"]\n  return true;\n});\n\nContainers.RegisterEventHandler(\"ExampleButtonPressed\", function(evt){\n  $.Msg(\"ExampleButtonPressed CALLBACK ACTION in JS\");\n  $.Msg(Object.keys(evt));                      //[   PanoramaScript         ]: [\"unit\",\"containerID\",\"containerPanel\",\"itemPanel\",\"buttonID\",\"buttonName\"]\n  return true;\n});\n\n\n\n\n\n\nContainers.RegisterEventHandler(\"DefaultContextMenu\", function(evt){\n  //$.Msg(Object.keys(evt));                      //[   PanoramaScript         ]: [\"unit\",\"containerID\",\"itemID\",\"slot\",\"containerPanel\",\"itemPanel\"]\n\n  var m_Item = evt.itemID;\n  $.DispatchEvent( \"DOTAHideAbilityTooltip\", evt.itemPanel );\n\n  var bControllable = Entities.IsControllableByPlayer( evt.unit, Game.GetLocalPlayerID() );\n  var bSellable = Items.IsSellable( m_Item ) && Items.CanBeSoldByLocalPlayer( m_Item );\n  var bDisassemble = Items.IsDisassemblable( m_Item ) && bControllable;\n  var bAlertable = Items.IsAlertableItem( m_Item ); \n  var bShowInShop = Items.IsPurchasable( m_Item );\n\n  if (!bSellable && !bDisassemble && !bShowInShop && !bAlertable && !bMoveToStash )\n  {\n    return true;\n  }\n\n  var contextMenu = $.CreatePanel( \"ContextMenuScript\", evt.itemPanel, \"\" );\n  contextMenu.AddClass( \"ContextMenu_NoArrow\" );\n  contextMenu.AddClass( \"ContextMenu_NoBorder\" );\n  contextMenu.GetContentsPanel().Item = m_Item;\n  contextMenu.GetContentsPanel().SetHasClass( \"bSellable\", bSellable );\n  contextMenu.GetContentsPanel().SetHasClass( \"bDisassemble\", bDisassemble );\n  contextMenu.GetContentsPanel().SetHasClass( \"bShowInShop\", bShowInShop );\n  contextMenu.GetContentsPanel().SetHasClass( \"bAlertable\", bAlertable );\n  contextMenu.GetContentsPanel().SetHasClass( \"bMoveToStash\", false ); // TODO\n  contextMenu.GetContentsPanel().BLoadLayout( \"file://{resources}/layout/custom_game/containers/inventory_context_menu.xml\", false, false );\n\n  return true;\n});\n\n\n\nContainers.RegisterEventHandler(\"SpecialContextMenu\", function(evt){\n  $.DispatchEvent( \"DOTAHideAbilityTooltip\", evt.itemPanel );\n\n  var noMenu = [\"item_blade_mail\", \"item_chainmail\", \"item_helm_of_iron_will\", \"item_veil_of_discord\",\n                \"item_boots\", \"item_phase_boots\"]\n\n\n  var m_Item = evt.itemID;\n  \n\n  var bControllable = Entities.IsControllableByPlayer( evt.unit, Game.GetLocalPlayerID() );\n  var bSellable = Items.IsSellable( m_Item ) && Items.CanBeSoldByLocalPlayer( m_Item );\n  var bDisassemble = Items.IsDisassemblable( m_Item ) && bControllable;\n  var bAlertable = Items.IsAlertableItem( m_Item ); \n  var bShowInShop = Items.IsPurchasable( m_Item );\n  var name = Abilities.GetAbilityName(m_Item);\n\n  if (noMenu.indexOf(name) >= 0 || (!bSellable && !bDisassemble && !bShowInShop && !bAlertable && !bMoveToStash ))\n  {\n    return true;\n  }\n\n  var contextMenu = $.CreatePanel( \"ContextMenuScript\", evt.itemPanel, \"\" );\n  contextMenu.AddClass( \"ContextMenu_NoArrow\" );\n  contextMenu.AddClass( \"ContextMenu_NoBorder\" );\n  contextMenu.GetContentsPanel().Item = m_Item;\n  contextMenu.GetContentsPanel().Slot = evt.slot;\n  contextMenu.GetContentsPanel().Container = evt.containerID;\n  contextMenu.GetContentsPanel().SetHasClass( \"bSellable\", bSellable );\n  contextMenu.GetContentsPanel().SetHasClass( \"bDisassemble\", bDisassemble );\n  contextMenu.GetContentsPanel().SetHasClass( \"bShowInShop\", bShowInShop );\n  contextMenu.GetContentsPanel().SetHasClass( \"bAlertable\", bAlertable );\n  contextMenu.GetContentsPanel().SetHasClass( \"bMoveToStash\", false ); // TODO\n  contextMenu.GetContentsPanel().BLoadLayout( \"file://{resources}/layout/custom_game/containers/inventory_context_menu.xml\", false, false );\n\n  return true;\n});"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/containers/dota_inventory.js",
    "content": "\"use strict\";\n\nvar m_InventoryPanels = []\n\n// Currently hardcoded: first 6 are inventory, next 6 are stash items\nvar DOTA_ITEM_STASH_MIN = 6;\nvar DOTA_ITEM_STASH_MAX = 12;\n\n\n\nfunction SetPosition()\n{\n  var panel = $.GetContextPanel()\n  var sw = panel.actuallayoutwidth;\n  var sh = panel.actuallayoutheight;\n  var flipped = Game.IsHUDFlipped();\n  var prop = flipped ? \"margin-left\" : \"margin-right\";\n\n  var stashPanel = $( \"#stash_row\" );\n  var invPanel = $( \"#inventory_items\" );\n\n  stashPanel.SetHasClass(\"Flipped\", flipped);\n  invPanel.SetHasClass(\"Flipped\", flipped);\n  /*if (flipped){\n    stashPanel.style.marginRight = \"0px\";\n    invPanel.style.marginRight = \"0px\";\n  }\n  else{\n    stashPanel.style.marginLef t = \"0px\";\n    invPanel.style.marginLeft = \"0px\";\n  }\n\n  invPanel[prop] = \"235px\";*/\n\n  $.Schedule(2, SetPosition);\n} \n\nfunction UpdateInventory()   \n{\n  var queryUnit = Players.GetLocalPlayerPortraitUnit();\n  for ( var i = 0; i < DOTA_ITEM_STASH_MAX; ++i )\n  {\n    var inventoryPanel = m_InventoryPanels[i]\n    var item = Entities.GetItemInSlot( queryUnit, i );\n    inventoryPanel.SetItem( queryUnit, item );\n  }\n}\n\nfunction CreateInventoryPanels()\n{\n  var stashPanel = $( \"#stash_row\" );\n  var firstRowPanel = $( \"#inventory_row_1\" );\n  var secondRowPanel = $( \"#inventory_row_2\" );\n  if ( !stashPanel || !firstRowPanel || !secondRowPanel ) \n    return;\n\n  stashPanel.RemoveAndDeleteChildren();\n  firstRowPanel.RemoveAndDeleteChildren();\n  secondRowPanel.RemoveAndDeleteChildren();\n  m_InventoryPanels = [];\n\n  for ( var i = 0; i < DOTA_ITEM_STASH_MAX; ++i )\n  { \n    var parentPanel = firstRowPanel;\n    if ( i >= DOTA_ITEM_STASH_MIN )\n    { \n      parentPanel = stashPanel;\n    }\n    else if ( i > 2 )  \n    {\n      parentPanel = secondRowPanel; \n    }\n\n    var inventoryPanel = $.CreatePanel( \"Panel\", parentPanel, \"\" );\n    inventoryPanel.BLoadLayout( \"file://{resources}/layout/custom_game/containers/dota_inventory_item.xml\", false, false );\n    inventoryPanel.SetItemSlot( i );\n\n    m_InventoryPanels.push( inventoryPanel );  \n  }\n}\n\n\n(function()\n{\n  CreateInventoryPanels();\n  UpdateInventory();\n  SetPosition();\n\n  GameEvents.Subscribe( \"dota_inventory_changed\", UpdateInventory );\n  GameEvents.Subscribe( \"dota_inventory_item_changed\", UpdateInventory );\n  GameEvents.Subscribe( \"m_event_dota_inventory_changed_query_unit\", UpdateInventory );\n  GameEvents.Subscribe( \"m_event_keybind_changed\", UpdateInventory );\n  GameEvents.Subscribe( \"dota_player_update_selected_unit\", UpdateInventory );\n  GameEvents.Subscribe( \"dota_player_update_query_unit\", UpdateInventory );\n})();\n\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/containers/dota_inventory_context_menu.js",
    "content": "\"use strict\";\n\nfunction DismissMenu()\n{\n\t$.DispatchEvent( \"DismissAllContextMenus\" )\n}\n\nfunction OnSell()\n{\n\tItems.LocalPlayerSellItem( $.GetContextPanel().Item );\n\tDismissMenu();\n}\n\nfunction OnDisassemble()\n{\n\tItems.LocalPlayerDisassembleItem( $.GetContextPanel().Item );\n\tDismissMenu();\n}\n\nfunction OnShowInShop()\n{\n\tvar itemName = Abilities.GetAbilityName( $.GetContextPanel().Item );\n\t\n\tvar itemClickedEvent = {\n\t\t\"link\": ( \"dota.item.\" + itemName ),\n\t\t\"shop\": 0,\n\t\t\"recipe\": 0\n\t};\n\tGameEvents.SendEventClientSide( \"dota_link_clicked\", itemClickedEvent );\n\tDismissMenu();\n}\n\nfunction OnDropFromStash()\n{\n\tItems.LocalPlayerDropItemFromStash( $.GetContextPanel().Item );\n\tDismissMenu();\n}\n\nfunction OnMoveToStash()\n{\n\tItems.LocalPlayerMoveItemToStash( $.GetContextPanel().Item );\n\tDismissMenu();\n}\n\nfunction OnAlert()\n{\n\tItems.LocalPlayerItemAlertAllies( $.GetContextPanel().Item );\n\tDismissMenu();\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/containers/dota_inventory_item.js",
    "content": "\"use strict\";\n\nvar m_Item = -1;\nvar m_ItemSlot = -1;\nvar m_QueryUnit = -1;\n\nfunction UpdateItem()\n{\n\tvar panel = $.GetContextPanel();\n\tvar itemName = Abilities.GetAbilityName( m_Item );\n\tvar hotkey = Abilities.GetKeybind( m_Item, m_QueryUnit );\n\tvar isPassive = Abilities.IsPassive( m_Item );\n\tvar chargeCount = 0;\n\tvar hasCharges = false;\n\tvar altChargeCount = 0; \n\tvar hasAltCharges = false;\n\n\tif (IsInStash()){\n\t\tpanel = panel.GetParent();\n\t}else{\n\t\tpanel = panel.GetParent().GetParent();\n\t}\n\n\tif (m_ItemSlot === 6 && panel.id === \"stash_row\"){\n\t\tvar show = false;\n\t\tfor (var i=6; i<12; i++){\n\t\t\tif (Entities.GetItemInSlot( m_QueryUnit, i ) !== -1){\n\t\t\t\tshow = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tpanel.visible = show;\n\t} \n\n\tif (!panel.visible){\n\t\t$.Schedule( 0.1, UpdateItem );\n\t\treturn;\n\t}\n\t\n\tif ( Items.ShowSecondaryCharges( m_Item ) )\n\t{\n\t\t// Ward stacks display charges differently depending on their toggle state\n\t\thasCharges = true;\n\t\thasAltCharges = true;\n\t\tif ( Abilities.GetToggleState( m_Item ) )\n\t\t{\n\t\t\tchargeCount = Items.GetCurrentCharges( m_Item );\n\t\t\taltChargeCount = Items.GetSecondaryCharges( m_Item );\n\t\t}\n\t\telse\n\t\t{\n\t\t\taltChargeCount = Items.GetCurrentCharges( m_Item );\n\t\t\tchargeCount = Items.GetSecondaryCharges( m_Item );\n\t\t}\n\t}\n\telse if ( Items.ShouldDisplayCharges( m_Item ) )\n\t{\n\t\thasCharges = true;\n\t\tchargeCount = Items.GetCurrentCharges( m_Item );\n\t}\n\n\t$.GetContextPanel().SetHasClass( \"no_item\", (m_Item == -1) );\n\t$.GetContextPanel().SetHasClass( \"show_charges\", hasCharges );\n\t$.GetContextPanel().SetHasClass( \"show_alt_charges\", hasAltCharges );\n\t$.GetContextPanel().SetHasClass( \"is_passive\", isPassive );\n\t$.GetContextPanel().SetHasClass( \"low_mana\", ((m_QueryUnit !== -1) && Abilities.GetManaCost( m_Item ) > Entities.GetMana(m_QueryUnit)));\n\n\t//$.GetContextPanel().SetHasClass( \"is_active\", (Abilities.GetLocalPlayerActiveAbility() == m_Item));\n\t\n\t$( \"#HotkeyText\" ).text = hotkey;\n\t$( \"#ItemImage\" ).itemname = itemName;\n\t$( \"#ItemImage\" ).contextEntityIndex = m_Item;\n\t$( \"#ChargeCount\" ).text = chargeCount;\n\t$( \"#AltChargeCount\" ).text = altChargeCount;\n\t\n\tif ( m_Item == -1 || Abilities.IsCooldownReady( m_Item ) )\n\t{\n\t\t$.GetContextPanel().SetHasClass( \"cooldown_ready\", true );\n\t\t$.GetContextPanel().SetHasClass( \"in_cooldown\", false );\n\t}\n\telse\n\t{\n\t\t$.GetContextPanel().SetHasClass( \"cooldown_ready\", false );\n\t\t$.GetContextPanel().SetHasClass( \"in_cooldown\", true );\n\t\tvar cooldownLength = Abilities.GetCooldownLength( m_Item );\n\t\tvar cooldownRemaining = Abilities.GetCooldownTimeRemaining( m_Item );\n\t\tvar cooldownPercent = Math.ceil( 100 * cooldownRemaining / cooldownLength );\n\t\t$( \"#CooldownTimer\" ).text = Math.ceil( cooldownRemaining );\n\t\t$( \"#CooldownOverlay\" ).style.width = cooldownPercent+\"%\";\n\t}\n\t\n\t$.Schedule( 0.1, UpdateItem );\n}\n\nfunction ItemShowTooltip()\n{\n\tif ( m_Item == -1 )\n\t\treturn;\n\n\tvar itemName = Abilities.GetAbilityName( m_Item );\n\t$.DispatchEvent( \"DOTAShowAbilityTooltipForEntityIndex\", $.GetContextPanel(), itemName, m_QueryUnit );\n}\n\nfunction ItemHideTooltip()\n{\n\t$.DispatchEvent( \"DOTAHideAbilityTooltip\", $.GetContextPanel() );\n}\n\nvar lastClick = 1; // 1 right, 0 left\n\nfunction ActivateItem()\n{\n\tlastClick = 0;\n\tif ( m_Item == -1 )\n\t\treturn;\n\n\t// Items are abilities - just execute the ability\n\tAbilities.ExecuteAbility( m_Item, m_QueryUnit, false );\n}\n\nfunction DoubleClickItem()\n{\n\tif (lastClick === 0)\n\t\tActivateItem();\n}\n\nvar DOTA_ITEM_STASH_MIN = 6;\n\nfunction IsInStash()\n{\n\treturn ( m_ItemSlot >= DOTA_ITEM_STASH_MIN );\n}\n\nfunction RightClickItem()\n{\n\tlastClick = 1;\n\tItemHideTooltip();\n\n\tvar bSlotInStash = IsInStash();\n\tvar bControllable = Entities.IsControllableByPlayer( m_QueryUnit, Game.GetLocalPlayerID() );\n\tvar bSellable = Items.IsSellable( m_Item ) && Items.CanBeSoldByLocalPlayer( m_Item );\n\tvar bDisassemble = Items.IsDisassemblable( m_Item ) && bControllable && !bSlotInStash;\n\tvar bAlertable = Items.IsAlertableItem( m_Item );\n\tvar bShowInShop = Items.IsPurchasable( m_Item );\n\tvar bDropFromStash = bSlotInStash && bControllable;\n\tvar bMoveToStash = Entities.IsInRangeOfShop(m_QueryUnit, 0, true);\n\n\tif ( !bSellable && !bDisassemble && !bShowInShop && !bDropFromStash && !bAlertable && !bMoveToStash )\n\t{\n\t\t// don't show a menu if there's nothing to do\n\t\treturn;\n\t}\n\n\tvar contextMenu = $.CreatePanel( \"ContextMenuScript\", $.GetContextPanel(), \"\" );\n\tcontextMenu.AddClass( \"ContextMenu_NoArrow\" );\n\tcontextMenu.AddClass( \"ContextMenu_NoBorder\" );\n\tcontextMenu.GetContentsPanel().Item = m_Item;\n\tcontextMenu.GetContentsPanel().SetHasClass( \"bSellable\", bSellable );\n\tcontextMenu.GetContentsPanel().SetHasClass( \"bDisassemble\", bDisassemble );\n\tcontextMenu.GetContentsPanel().SetHasClass( \"bShowInShop\", bShowInShop );\n\tcontextMenu.GetContentsPanel().SetHasClass( \"bDropFromStash\", bDropFromStash );\n\tcontextMenu.GetContentsPanel().SetHasClass( \"bAlertable\", bAlertable );\n\tcontextMenu.GetContentsPanel().SetHasClass( \"bMoveToStash\", bMoveToStash ); // TODO\n\tcontextMenu.GetContentsPanel().BLoadLayout( \"file://{resources}/layout/custom_game/containers/dota_inventory_context_menu.xml\", false, false );\n}\n\nfunction OnDragEnter( a, draggedPanel )\n{\n\tvar draggedItem = draggedPanel.m_DragItem;\n\n\t// only care about dragged items other than us\n\tif ( draggedItem === null || draggedItem == m_Item )\n\t\treturn true;\n\n\t// highlight this panel as a drop target\n\t$.GetContextPanel().AddClass( \"potential_drop_target\" );\n\treturn true;\n}\n\nfunction OnDragDrop( panelId, draggedPanel )\n{\n\tvar draggedItem = draggedPanel.m_DragItem;\n\t\n\t// only care about dragged items other than us\n\tif ( draggedItem === null )\n\t\treturn true;\n\n\tvar dropTarget = $.GetContextPanel();\n\t$.GetContextPanel().RemoveClass( \"potential_drop_target\" );\n\n\t// executing a slot swap - don't drop on the world\n\tdraggedPanel.m_DragCompleted = true;\n\t\n\t// item dropped on itself? don't acutally do the swap (but consider the drag completed)\n\tif ( draggedItem == m_Item )\n\t\treturn true;\n\n\tvar fromCont = draggedPanel.m_contID;\n\n\tif (fromCont == -1){\n\t\t// create the order\n\t\tvar moveItemOrder =\n\t\t{\n\t\t\tOrderType: dotaunitorder_t.DOTA_UNIT_ORDER_MOVE_ITEM,\n\t\t\tTargetIndex: m_ItemSlot,\n\t\t\tAbilityIndex: draggedItem\n\t\t};\n\t\tGame.PrepareUnitOrders( moveItemOrder );\n\t}\n\telse{\n\t\tGameEvents.SendCustomGameEventToServer( \"Containers_OnDragFrom\", {unit:Players.GetLocalPlayerPortraitUnit(), contID:fromCont, itemID:draggedItem, \n\t\t\tfromSlot:draggedPanel.m_OriginalPanel.GetSlot(), toContID:-1, toSlot:m_ItemSlot} );\n\t}\n\n\treturn true;\n}\n\nfunction OnDragLeave( panelId, draggedPanel )\n{\n\tvar draggedItem = draggedPanel.m_DragItem;\n\tif ( draggedItem === null || draggedItem == m_Item )\n\t\treturn false;\n\n\t// un-highlight this panel\n\t$.GetContextPanel().RemoveClass( \"potential_drop_target\" );\n\treturn true;\n}\n\nfunction OnDragStart( panelId, dragCallbacks )\n{\n\tif ( m_Item == -1 )\n\t{\n\t\treturn true;\n\t}\n\n\tvar itemName = Abilities.GetAbilityName( m_Item );\n\n\tItemHideTooltip(); // tooltip gets in the way\n\n\t// create a temp panel that will be dragged around\n\tvar displayPanel = $.CreatePanel( \"DOTAItemImage\", $.GetContextPanel(), \"dragImage\" );\n\tdisplayPanel.itemname = itemName;\n\tdisplayPanel.contextEntityIndex = m_Item;\n\tdisplayPanel.m_DragItem = m_Item;\n\tdisplayPanel.m_contID = -1;\n\tdisplayPanel.m_DragCompleted = false; // whether the drag was successful\n\tdisplayPanel.m_OriginalPanel = $.GetContextPanel();\n\tdisplayPanel.m_QueryUnit = m_QueryUnit;\n\n\t// hook up the display panel, and specify the panel offset from the cursor\n\tdragCallbacks.displayPanel = displayPanel;\n\tdragCallbacks.offsetX = 0;\n\tdragCallbacks.offsetY = 0;\n\t\n\t// grey out the source panel while dragging\n\t$.GetContextPanel().AddClass( \"dragging_from\" );\n\treturn true;\n}\n\nfunction OnDragEnd( panelId, draggedPanel )\n{\n\n\tif (!IsInStash() && !draggedPanel.m_DragCompleted){\n\t\tvar position = GameUI.GetScreenWorldPosition( GameUI.GetCursorPosition() );\n\t\tvar mouseEntities = GameUI.FindScreenEntities( GameUI.GetCursorPosition() );\n\t\tvar entity = null;\n\n\t\tif (mouseEntities.length !== 0){\n\t\t\tfor ( var e of mouseEntities )\n\t\t\t{\n\t\t\t\tif ( e.accurateCollision ){\n\t\t\t\t\tentity = e.entityIndex;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tGameEvents.SendCustomGameEventToServer( \"Containers_OnDragWorld\", {unit:Players.GetLocalPlayerPortraitUnit(), contID:-1, itemID:m_Item, slot:m_ItemSlot, position:position, entity:entity} );\n\t}\n\n\t// if the drag didn't already complete, then try dropping in the world\n\t\t//Game.DropItemAtCursor( m_QueryUnit, m_Item );\n\n\t// kill the display panel\n\tdraggedPanel.DeleteAsync( 0 );\n\n\t// restore our look\n\t$.GetContextPanel().RemoveClass( \"dragging_from\" );\n\treturn true;\n}\n\nfunction SetItemSlot( itemSlot )\n{\n\tm_ItemSlot = itemSlot;\n}\n\nfunction SetItem( queryUnit, iItem )\n{\n\tm_Item = iItem;\n\tm_QueryUnit = queryUnit;\n}\n\nfunction GetSlot()\n{\n\treturn m_ItemSlot;\n}\n\n(function()\n{\n\t$.GetContextPanel().SetItem = SetItem;\n\t$.GetContextPanel().SetItemSlot = SetItemSlot;\n\t$.GetContextPanel().GetSlot = GetSlot;\n\n\t// Drag and drop handlers ( also requires 'draggable=\"true\"' in your XML, or calling panel.SetDraggable(true) )\n\t$.RegisterEventHandler( 'DragEnter', $.GetContextPanel(), OnDragEnter );\n\t$.RegisterEventHandler( 'DragDrop', $.GetContextPanel(), OnDragDrop );\n\t$.RegisterEventHandler( 'DragLeave', $.GetContextPanel(), OnDragLeave );\n\t$.RegisterEventHandler( 'DragStart', $.GetContextPanel(), OnDragStart );\n\t$.RegisterEventHandler( 'DragEnd', $.GetContextPanel(), OnDragEnd );\n\n\tUpdateItem(); // initial update of dynamic state\n})();\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/containers/inventory_context_menu.js",
    "content": "\"use strict\";\n\nfunction DismissMenu()\n{\n\t$.DispatchEvent( \"DismissAllContextMenus\" )\n}\n\nfunction OnSell()\n{\n\tItems.LocalPlayerSellItem( $.GetContextPanel().Item );\n\n\tGameEvents.SendCustomGameEventToServer( \"Containers_OnSell\", {unit:Players.GetLocalPlayerPortraitUnit(), \n\t\tcontID:$.GetContextPanel().Container, \n\t\titemID:$.GetContextPanel().Item, \n\t\tslot:$.GetContextPanel().Slot\n\t});\n\n\tDismissMenu();\n}\n\nfunction OnDisassemble()\n{\n\tItems.LocalPlayerDisassembleItem( $.GetContextPanel().Item );\n\tDismissMenu();\n}\n\nfunction OnShowInShop()\n{\n\tvar itemName = Abilities.GetAbilityName( $.GetContextPanel().Item );\n\t\n\tvar itemClickedEvent = {\n\t\t\"link\": ( \"dota.item.\" + itemName ),\n\t\t\"shop\": 0,\n\t\t\"recipe\": 0\n\t};\n\tGameEvents.SendEventClientSide( \"dota_link_clicked\", itemClickedEvent );\n\tDismissMenu();\n}\n\nfunction OnDropFromStash()\n{\n\tItems.LocalPlayerDropItemFromStash( $.GetContextPanel().Item );\n\tDismissMenu();\n}\n\nfunction OnMoveToStash()\n{\n\tItems.LocalPlayerMoveItemToStash( $.GetContextPanel().Item );\n\tDismissMenu();\n}\n\nfunction OnAlert()\n{\n\tItems.LocalPlayerItemAlertAllies( $.GetContextPanel().Item );\n\tDismissMenu();\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/containers/inventory_item.js",
    "content": "\"use strict\";\n\nvar Containers = GameUI.CustomUIConfig().Containers;\nvar PlayerTables = GameUI.CustomUIConfig().PlayerTables;\n\nvar m_Item = -1;\nvar m_ItemSlot = -1;\nvar m_contID = -1;\nvar m_contString = \"\";\nvar m_slot = -1;\nvar m_QueryUnit = -1;\nvar m_Container = null;\nvar started = false;\n\nfunction UpdateItem()\n{\n\tm_Item = -1;\n\tif (m_contString !== \"\"){\n\t\tm_Item = PlayerTables.GetTableValue(m_contString, \"slot\" + m_slot) || -1;\n\t\tm_QueryUnit = PlayerTables.GetTableValue(m_contString, \"entity\") || -1;\n\t\tvar sel = Players.GetPlayerHeroEntityIndex( Players.GetLocalPlayer() );\n\t\tif (!Entities.IsInventoryEnabled(m_QueryUnit) || !Entities.IsControllableByAnyPlayer(m_QueryUnit) || \n\t\t\t(Entities.GetTeamNumber(m_QueryUnit) != Entities.GetTeamNumber(sel))){\n\t\t\tm_QueryUnit = -1;\n\t\t}\n\t}\n\n\tif (m_Container === null || m_Container.deleted){\n\t\treturn;\n\t}\n\n\tif (m_Container && !m_Container.visible){\n\t\t$.Schedule( 0.1, UpdateItem );\n\t\treturn;\n\t}\n\n\tvar itemName = Abilities.GetAbilityName( m_Item );\n\tif (itemName == \"\"){\n\t\tm_Item = -1;\n\t}\n\tvar hotkey = Abilities.GetKeybind( m_Item, m_QueryUnit );\n\tvar isPassive = Abilities.IsPassive( m_Item );\n\tvar chargeCount = 0;\n\tvar hasCharges = false;\n\tvar altChargeCount = 0;\n\tvar hasAltCharges = false;\n\t\n\tif ( Items.ShowSecondaryCharges( m_Item ) )\n\t{\n\t\t// Ward stacks display charges differently depending on their toggle state\n\t\thasCharges = true;\n\t\thasAltCharges = true;\n\t\tif ( Abilities.GetToggleState( m_Item ) )\n\t\t{\n\t\t\tchargeCount = Items.GetCurrentCharges( m_Item );\n\t\t\taltChargeCount = Items.GetSecondaryCharges( m_Item );\n\t\t}\n\t\telse\n\t\t{\n\t\t\taltChargeCount = Items.GetCurrentCharges( m_Item );\n\t\t\tchargeCount = Items.GetSecondaryCharges( m_Item );\n\t\t}\n\t}\n\telse if ( Items.ShouldDisplayCharges( m_Item ) )\n\t{\n\t\thasCharges = true;\n\t\tchargeCount = Items.GetCurrentCharges( m_Item );\n\t}\n\n\tvar isShop = m_Container && m_Container.IsShop();\n\tvar stock = -1;\n\tvar price = -1;\n\tif (isShop && m_Item !== -1){\n\t\tstock = PlayerTables.GetTableValue(m_contString, \"stock\" + m_Item);\n\t\tif (stock === null) \n\t\t\tstock = -1;\n\t\tprice = PlayerTables.GetTableValue(m_contString, \"price\" + m_Item) || Items.GetCost(m_Item);\n\t}\n\n\tvar gold = Players.GetGold(Players.GetLocalPlayer());\n\n\t$.GetContextPanel().SetHasClass( \"show_stock\", stock >= 0 );\n\t$.GetContextPanel().SetHasClass( \"out_of_stock\", stock === 0 );\n\t$.GetContextPanel().SetHasClass( \"show_price\", price >= 0 );\n\t$.GetContextPanel().SetHasClass( \"high_price\", gold < price );\n\n\t$.GetContextPanel().SetHasClass( \"no_item\", (m_Item == -1) );\n\t$.GetContextPanel().SetHasClass( \"show_charges\", hasCharges );\n\t$.GetContextPanel().SetHasClass( \"show_alt_charges\", hasAltCharges );\n\t$.GetContextPanel().SetHasClass( \"is_passive\", isPassive );\n\t//$.GetContextPanel().SetHasClass( \"no_mana_cost\", (Abilities.GetManaCost( m_Item ) <= 0));\n\t//$.Msg(m_QueryUnit, \" -- \", m_Item, \" -- \", Abilities.GetManaCost( m_Item ), \" -- \", Entities.GetMana(m_QueryUnit));\n\t$.GetContextPanel().SetHasClass( \"low_mana\", ((m_QueryUnit !== -1) && Abilities.GetManaCost( m_Item ) > Entities.GetMana(m_QueryUnit)));\n\n\t\n\n\tif (m_Container)\n\t\t$.GetContextPanel().SetHasClass( \"is_active\", (Abilities.GetLocalPlayerActiveAbility() == m_Item));\n\t\n\t$( \"#HotkeyText\" ).text = hotkey;\n\t$( \"#ItemImage\" ).itemname = itemName;\n\t$( \"#ItemImage\" ).contextEntityIndex = m_Item;\n\t$( \"#ChargeCount\" ).text = chargeCount;\n\t$( \"#AltChargeCount\" ).text = altChargeCount;\n\n\t$( \"#Price\" ).text = price;\n\t$( \"#Stock\" ).text = \"x\" + stock;\n\n\n\tvar manaCost = Abilities.GetManaCost( m_Item );\n\tif (m_Container)\n\t\t$( \"#ManaCost\" ).text = Abilities.GetManaCost( m_Item );\n\t\n\tif ( m_QueryUnit == -1 || m_Item == -1 || Items.GetPurchaser( m_Item ) == -1 || Abilities.IsCooldownReady( m_Item ) )\n\t{\n\t\t$.GetContextPanel().SetHasClass( \"cooldown_ready\", true );\n\t\t$.GetContextPanel().SetHasClass( \"in_cooldown\", false );\n\t}\n\telse\n\t{\n\t\t$.GetContextPanel().SetHasClass( \"cooldown_ready\", false );\n\t\t$.GetContextPanel().SetHasClass( \"in_cooldown\", true ); \n\t\tvar cooldownLength = Abilities.GetCooldownLength( m_Item );\n\t\tvar cooldownRemaining = Abilities.GetCooldownTimeRemaining( m_Item );\n\t\tvar cooldownPercent = Math.ceil( 100 * cooldownRemaining / cooldownLength );\n\t\t$( \"#CooldownTimer\" ).text = Math.ceil( cooldownRemaining );\n\t\t$( \"#CooldownOverlay\" ).style.width = cooldownPercent+\"%\";\n\t}\n\t\n\t$.Schedule( 0.1, UpdateItem );\n}\n\nfunction ItemShowTooltip()\n{\n\tif ( m_Item == -1 )\n\t\treturn;\n\n\tvar itemName = Abilities.GetAbilityName( m_Item );\n\t$.DispatchEvent( \"DOTAShowAbilityTooltipForEntityIndex\", $.GetContextPanel(), itemName, m_QueryUnit );\n}\n\nfunction ItemHideTooltip()\n{\n\t$.DispatchEvent( \"DOTAHideAbilityTooltip\", $.GetContextPanel() );\n}\n\nfunction OnMouseOut()\n{\n\tvar jsAction = PlayerTables.GetTableValue(m_contString, \"OnMouseOutJS\");\n\n\tvar pid = Game.GetLocalPlayerID();\n\tvar unit = Players.GetLocalPlayerPortraitUnit()\n\tunit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid);\n\n\tvar handler = Containers.eventHandlers[jsAction]\n\tif (handler){\n\t\tvar ret = false;\n\t\ttry{\n\t\t\tret = handler({unit:unit, containerID:m_contID, itemID:m_Item, slot:m_slot, containerPanel:m_Container, itemPanel:$.GetContextPanel()});\n\t\t}catch(err){\n\t\t\t$.Msg(\"[inventory_item.js] OnMouseOut callback error for '\", jsAction, \"': \", err.stack);\n\t\t}\n\n\t\tif (!ret)\n\t\t\treturn;\n\t}\n\n\tItemHideTooltip();\n}\n\nfunction OnMouseOver()\n{\n\tvar jsAction = PlayerTables.GetTableValue(m_contString, \"OnMouseOverJS\");\n\n\tvar pid = Game.GetLocalPlayerID();\n\tvar unit = Players.GetLocalPlayerPortraitUnit()\n\tunit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid);\n\n\tvar handler = Containers.eventHandlers[jsAction]\n\tif (handler){\n\t\tvar ret = false;\n\t\ttry{\n\t\t\tret = handler({unit:unit, containerID:m_contID, itemID:m_Item, slot:m_slot, containerPanel:m_Container, itemPanel:$.GetContextPanel()});\n\t\t}catch(err){\n\t\t\t$.Msg(\"[inventory_item.js] OnMouseOver callback error for '\", jsAction, \": \", err.stack);\n\t\t}\n\n\t\tif (!ret)\n\t\t\treturn;\n\t}\n\n\tItemShowTooltip();\n}\n\nvar lastClick = 1; // 1 right, 0 left\n\nfunction ActivateItem(bypass)\n{\n\tlastClick = 0;\n\n\tvar pid = Game.GetLocalPlayerID();\n\tvar unit = Players.GetLocalPlayerPortraitUnit()\n\tunit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid);\n\n\n\tif (!bypass){\n\t\tvar jsAction = PlayerTables.GetTableValue(m_contString, \"OnLeftClickJS\");\n\n\t\tvar handler = Containers.eventHandlers[jsAction]\n\t\tif (handler){\n\t\t\tvar ret = false;\n\t\t\ttry{\n\t\t\t\tret = handler({unit:unit, containerID:m_contID, itemID:m_Item, slot:m_slot, containerPanel:m_Container, itemPanel:$.GetContextPanel()});\n\t\t\t}catch(err){\n\t\t\t\t$.Msg(\"[inventory_item.js] OnLeftClick callback error for '\", jsAction, \"': \", err.stack);\n\t\t\t}\n\n\t\t\tif (!ret)\n\t\t\t\treturn;\n\t\t}\n\t}\n\t\n\tif ( m_Item == -1 )\n\t\treturn;\n\n\n\n\tvar action = PlayerTables.GetTableValue(m_contString, \"OnLeftClick\");\n\tif (action !== 0){\n\t\tGameEvents.SendCustomGameEventToServer( \"Containers_OnLeftClick\", {unit:unit, contID:m_contID, itemID:m_Item, slot:m_slot} );\n\t\treturn;\n\t}\n\n\t//Abilities.ExecuteAbility( m_Item, m_QueryUnit, false );\n}\n\nfunction DoubleClickItem()\n{\n\tvar jsAction = PlayerTables.GetTableValue(m_contString, \"OnDoubleClickJS\");\n\n\tvar pid = Game.GetLocalPlayerID();\n\tvar unit = Players.GetLocalPlayerPortraitUnit()\n\tunit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid);\n\n\tvar handler = Containers.eventHandlers[jsAction]\n\tif (handler){\n\t\tvar ret = false;\n\t\ttry{\n\t\t\tret = handler({unit:unit, containerID:m_contID, itemID:m_Item, slot:m_slot, containerPanel:m_Container, itemPanel:$.GetContextPanel(), leftClick:lastClick === 0});\n\t\t}catch(err){\n\t\t\t$.Msg(\"[inventory_item.js] OnDoubleClick callback error for '\", jsAction, \"': \", err.stack);\n\t\t}\n\n\t\tif (!ret)\n\t\t\treturn;\n\t}\n\n\tif (lastClick === 0)\n\t\tActivateItem(true);\n}\n\nvar DOTA_ITEM_STASH_MIN = 6;\n\nfunction IsInStash()\n{\n\treturn ( m_ItemSlot >= DOTA_ITEM_STASH_MIN );\n}\n\nfunction RightClickItem()\n{\n\tlastClick = 1;\n\tvar jsAction = PlayerTables.GetTableValue(m_contString, \"OnRightClickJS\");\n\tvar action = PlayerTables.GetTableValue(m_contString, \"OnRightClick\");\n\n\tvar pid = Game.GetLocalPlayerID();\n\tvar unit = Players.GetLocalPlayerPortraitUnit()\n\tunit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid);\n\n\tvar handler = Containers.eventHandlers[jsAction]\n\tif (handler){\n\t\tvar ret = false;\n\t\ttry{\n\t\t\tret = handler({unit:unit, containerID:m_contID, itemID:m_Item, slot:m_slot, containerPanel:m_Container, itemPanel:$.GetContextPanel()});\n\t\t}catch(err){\n\t\t\t$.Msg(\"[inventory_item.js] RightClick callback error for '\", jsAction, \"': \", err.stack);\n\t\t}\n\n\t\tif (!ret)\n\t\t\treturn;\n\t}\n\t\n\tif (action === 1){\n\t\tGameEvents.SendCustomGameEventToServer( \"Containers_OnRightClick\", {unit:unit, contID:m_contID, itemID:m_Item, slot:m_slot} );\n\t\treturn;\n\t}\n} \n\nfunction OnDragEnter( a, draggedPanel )\n{\n\tvar draggedItem = draggedPanel.m_DragItem; \n\n\t// only care about dragged items other than us\n\tif ( draggedItem === null || draggedItem == m_Item )\n\t\treturn true;\n\n\t// highlight this panel as a drop target\n\t$.GetContextPanel().AddClass( \"potential_drop_target\" );\n\treturn true;\n}\n\nfunction OnDragDrop( panelId, draggedPanel )\n{\n\tvar draggedItem = draggedPanel.m_DragItem;\n\t\n\t// only care about dragged items other than us\n\tif ( draggedItem === null )\n\t\treturn true;\n\n\tvar dropTarget = $.GetContextPanel();\n\t$.GetContextPanel().RemoveClass( \"potential_drop_target\" );\n\n\t// executing a slot swap - don't drop on the world\n\tdraggedPanel.m_DragCompleted = true;\n\t\n\t// item dropped on itself? don't acutally do the swap (but consider the drag completed)\n\tif ( draggedItem == m_Item )\n\t\treturn true;\n\n\tvar pid = Game.GetLocalPlayerID();\n\tvar unit = Players.GetLocalPlayerPortraitUnit()\n\tunit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid);\n\n\n\tvar action = PlayerTables.GetTableValue(m_contString, \"OnDragTo\");\n\tif (action !== 0){\n\t\tGameEvents.SendCustomGameEventToServer( \"Containers_OnDragFrom\", {unit:unit, contID:draggedPanel.m_contID, itemID:draggedItem, \n\t\t\tfromSlot:draggedPanel.m_OriginalPanel.GetSlot(), toContID:m_contID, toSlot:m_slot} );\n\t}\n\n\n\t/*if (m_Container || container)\n\t{\n\t\tif (m_Container && container)\n\t\t{\n\t\t\tdraggedPanel.m_OriginalPanel.SetItem(m_QueryUnit, m_Item, container);\n\t\t\tSetItem(draggedPanel.m_QueryUnit, draggedItem, m_Container);\n\t\t}\n\t}\n\telse\n\t{\n\t\t// create the order\n\t\tvar moveItemOrder =\n\t\t{\n\t\t\tOrderType: dotaunitorder_t.DOTA_UNIT_ORDER_MOVE_ITEM,\n\t\t\tTargetIndex: m_ItemSlot,\n\t\t\tAbilityIndex: draggedItem\n\t\t};\n\t\tGame.PrepareUnitOrders( moveItemOrder );\n\t}*/\n\treturn true;\n}\n\nfunction OnDragLeave( panelId, draggedPanel )\n{\n\tvar draggedItem = draggedPanel.m_DragItem;\n\tif ( draggedItem === null || draggedItem == m_Item )\n\t\treturn false;\n\n\t// un-highlight this panel\n\t$.GetContextPanel().RemoveClass( \"potential_drop_target\" );\n\treturn true;\n}\n\nfunction OnDragStart( panelId, dragCallbacks )\n{\n\tif ( m_Item == -1 )\n\t{\n\t\treturn true;\n\t}\n\n\tvar action = PlayerTables.GetTableValue(m_contString, \"OnDragDrop\");\n\tvar action2 = PlayerTables.GetTableValue(m_contString, \"OnDragWorld\");\n\tif (action === 0 && action2 === 0){\n\t\treturn true;\n\t}\n\n\tvar itemName = Abilities.GetAbilityName( m_Item );\n\n\tItemHideTooltip(); // tooltip gets in the way\n\n\t// create a temp panel that will be dragged around\n\tvar displayPanel = $.CreatePanel( \"DOTAItemImage\", $.GetContextPanel(), \"dragImage\" );\n\tdisplayPanel.itemname = itemName;\n\tdisplayPanel.contextEntityIndex = m_Item;\n\tdisplayPanel.m_DragItem = m_Item;\n\tdisplayPanel.m_contID = m_contID;\n\tdisplayPanel.m_DragCompleted = false; // whether the drag was successful\n\tdisplayPanel.m_OriginalPanel = $.GetContextPanel();\n\tdisplayPanel.m_QueryUnit = m_QueryUnit;\n\n\t// hook up the display panel, and specify the panel offset from the cursor\n\tdragCallbacks.displayPanel = displayPanel;\n\tdragCallbacks.offsetX = 0;\n\tdragCallbacks.offsetY = 0;\n\t\n\t// grey out the source panel while dragging\n\t$.GetContextPanel().AddClass( \"dragging_from\" );\n\treturn true;\n}\n\nfunction OnDragEnd( panelId, draggedPanel )\n{\n\n\tvar action = PlayerTables.GetTableValue(m_contString, \"OnDragWorld\");\n\n\tif (!draggedPanel.m_DragCompleted && action === 1){\n\t\tvar position = GameUI.GetScreenWorldPosition( GameUI.GetCursorPosition() );\n\t\tvar mouseEntities = GameUI.FindScreenEntities( GameUI.GetCursorPosition() );\n\t\tvar entity = null;\n\n\t\tvar pid = Game.GetLocalPlayerID();\n\t\tvar unit = Players.GetLocalPlayerPortraitUnit()\n\t\tunit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid);\n\n\t\tif (mouseEntities.length !== 0){\n\t\t\tfor ( var e of mouseEntities )\n\t\t\t{\n\t\t\t\tif ( e.accurateCollision ){\n\t\t\t\t\tentity = e.entityIndex;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tGameEvents.SendCustomGameEventToServer( \"Containers_OnDragWorld\", {unit:unit, contID:m_contID, itemID:m_Item, slot:m_slot, position:position, entity:entity} );\n\t}\n\n\t// if the drag didn't already complete, then try dropping in the world\n\t\t//Game.DropItemAtCursor( m_QueryUnit, m_Item );\n\n\t// kill the display panel\n\tdraggedPanel.DeleteAsync( 0 );\n\n\t// restore our look\n\t$.GetContextPanel().RemoveClass( \"dragging_from\" );\n\treturn true;\n}\n\nfunction SetItemSlot( itemSlot )\n{\n\tm_ItemSlot = itemSlot;\n}\n\nfunction SetItem( queryUnit, contID, slot, container )\n{\n\tm_contID = contID;\n\tm_contString = \"cont_\" + contID;\n\tm_slot = slot;\n\t//m_Item = iItem;\n\t//m_QueryUnit = queryUnit;\n\tm_Container = container;\n\n\tif (!started){\n\t\tUpdateItem(); // initial update of dynamic state\n\t}\n\tstarted = true;\n}\n\n\nfunction GetSlot()\n{\n\treturn m_slot;\n}\n\n(function()\n{\n\t$.GetContextPanel().SetItem = SetItem;\n\t$.GetContextPanel().SetItemSlot = SetItemSlot;\n\t$.GetContextPanel().GetSlot = GetSlot;\n\n\t// Drag and drop handlers ( also requires 'draggable=\"true\"' in your XML, or calling panel.SetDraggable(true) )\n\t$.RegisterEventHandler( 'DragEnter', $.GetContextPanel(), OnDragEnter );\n\t$.RegisterEventHandler( 'DragDrop', $.GetContextPanel(), OnDragDrop );\n\t$.RegisterEventHandler( 'DragLeave', $.GetContextPanel(), OnDragLeave );\n\t$.RegisterEventHandler( 'DragStart', $.GetContextPanel(), OnDragStart );\n\t$.RegisterEventHandler( 'DragEnd', $.GetContextPanel(), OnDragEnd );\n})();\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/modmaker/modmaker.js",
    "content": "var files = {}\nvar lua = null;\nvar luaCategories = null;\nvar properties = {}\nvar categoryPanels = {}\n\nfunction DumpObjectIndented(obj, indent)\n{\n  var result = \"\";\n  if (indent == null) indent = \"\";\n\n  for (var property in obj)\n  {\n    var value = obj[property];\n    if (typeof value == 'string')\n      value = \"'\" + value + \"'\";\n    else if (typeof value == 'object')\n    {\n      if (value instanceof Array)\n      {\n        // Just let JS convert the Array to a string!\n        value = \"[ \" + value + \" ]\";\n      }\n      else\n      {\n        // Recursive dump\n        // (replace \"  \" by \"\\t\" or something else if you prefer)\n        var od = DumpObjectIndented(value, indent + \"  \");\n        // If you like { on the same line as the key\n        //value = \"{\\n\" + od + \"\\n\" + indent + \"}\";\n        // If you prefer { and } to be aligned\n        value = \"\\n\" + indent + \"{\\n\" + od + \"\\n\" + indent + \"}\";\n      }\n    }\n    result += indent + \"'\" + property + \"' : \" + value + \",\\n\";\n  }\n  return result.replace(/,\\n$/, \"\");\n}\n\n//var a = DumpObjectIndented(this).split('\\n')\n//for (var i=0; i<a.length; i++)\n  //$.Msg(a[i]);\n\nfunction LuaAPI(msg)\n{\n  if (!msg.api){\n    $(\"#APIWindow\").visible = !$(\"#APIWindow\").visible;\n    return;\n  }\n  lua = msg.api;\n  luaCategories = Object.keys(lua).sort();\n  for (var i in luaCategories){\n    var s = luaCategories[i];\n    if (s == \"__GLOBAL__\"){\n      break;\n    }\n  }\n\n  luaCategories.splice(i, 1);\n  luaCategories.unshift(s);\n\n  var panel = $(\"#API\");\n  panel.RemoveAndDeleteChildren();\n\n  for (var i in luaCategories){\n    var s = luaCategories[i];\n    var cat = lua[s];\n    var categoryPanel = $.CreatePanel( \"Panel\", panel, s);\n    categoryPanel.BLoadLayout(\"file://{resources}/layout/custom_game/modmaker/modmaker_api_category.xml\", false, false);\n    categoryPanels[s] = categoryPanel;\n\n    properties[s] = Object.keys(cat).sort();\n\n    if (s == \"__GLOBAL__\")\n      categoryPanel.New(\"GLOBAL\", cat, properties[s]);\n    else\n      categoryPanel.New(s, cat, properties[s]);\n    //label.SetAcceptsFocus(true);\n  }\n\n  $(\"#APIWindow\").visible = true;\n}\n\nfunction SearchAPI()\n{\n  $.Msg(\"SearchAPI \", $(\"#Search\").text);\n  var text = $(\"#Search\").text;\n  //text = \"(\" + text.replace(/^\\s+/g, \"\").replace(/\\s+$/g, \"\").replace(/\\s+/g, \")|(\") + \")\";\n  var search = new RegExp(text, 'gi');\n\n  for (var category in categoryPanels)\n  {\n    categoryPanels[category].Filter(search, $(\"#Search\").text == \"\");\n  }\n}\n\nfunction SendFile(msg)\n{\n  /*$.Msg(\"Test: name=\", msg.name, \" -- m=\", msg.max, ' -- c=', msg.count);\n  var s = \"\"\n  var total = 0;\n  for (var i in msg.t){\n    $.Msg(i, ' ', msg.t[i].length);\n    total += msg.t[i].length;\n    s += msg.t[i];\n  }  \n\n  files[msg.name] = files[msg.name] || \"\";\n  files[msg.name] += s;\n\n  $.Msg(total);\n\n  if (msg.max == msg.count){\n    var panel = $(\"#FileWindow\");\n    panel.RemoveAndDeleteChildren();\n\n    var a = files[msg.name].split(\"\\n\");\n    for (i in a){\n      //break;\n      //$.Msg(a[i]);\n      //label.BLoadLayoutFromString('<root><Panel><Label class=\"FileLine\" text=\"' + a[i] + '\" selectionpos=\"auto\"/></Panel></root>', false, false)\n      var label = $.CreatePanel( \"Label\", panel, \"test\");\n      label.AddClass(\"FileLine\");\n      label.text = a[i];\n      label.SetAcceptsFocus(true);\n      $.Msg(Object.keys(label).toString().replace(/,/g, \"\\n\"));\n      $.Msg(label.inputnamespace);\n      break;\n    }\n\n    //var label = $.CreatePanel( \"Label\", panel, \"\");\n    //label.AddClass(\"FileLine\");\n    //label.style.width = \"100%\";\n    //label.style.height = \"fit-children\";\n    //$.Msg(Object.keys(label));\n    //label.text = files[msg.name];\n  }*/\n\n  var panel = $(\"#FileWindow\");\n  panel.RemoveAndDeleteChildren();\n\n  var keys = Object.keys(msg.t).sort();\n  for (var i in keys){\n    var s = keys[i];\n    //$.Msg(i);\n    var t = msg.t[s];\n    var label = $.CreatePanel( \"Label\", panel, \"test\");\n    label.AddClass(\"FileLine\");\n    label.text = s;\n    label.SetAcceptsFocus(true);\n\n    //$.Msg(t);\n\n    var keys2 = Object.keys(t).sort();\n    for (j in keys2){\n      var s2 = keys2[j];\n      label = $.CreatePanel( \"Label\", panel, \"test\");\n      label.AddClass(\"FileLine\");\n      label.text = '        ' + s2 + ':';\n      label.SetAcceptsFocus(true);\n\n      label = $.CreatePanel( \"Label\", panel, \"test\");\n      label.AddClass(\"FileLine\");\n      label.text = '                ' + t[s2].f;\n      label.SetAcceptsFocus(true);\n\n      label = $.CreatePanel( \"Label\", panel, \"test\");\n      label.AddClass(\"FileLine\");\n      label.text = '                ' + t[s2].d + '\\n';\n      label.SetAcceptsFocus(true);\n    }\n\n    label = $.CreatePanel( \"Label\", panel, \"test\");\n    label.AddClass(\"FileLine\");\n    label.text = '\\n';\n    label.SetAcceptsFocus(true);\n  }\n}\n\n\nfunction CloseClicked()\n{\n  $(\"#APIWindow\").visible = false;\n}\n\n(function(){\n  GameEvents.Subscribe( \"modmaker_lua_api\", LuaAPI);\n  GameEvents.Subscribe( \"modmaker_send_file\", SendFile);\n\n  var api = $(\"#APIWindow\");\n  var close = $(\"#CloseButton\");\n})();"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/modmaker/modmaker_api_category.js",
    "content": "var loaded = false;\nvar name = null;\nvar cat = null;\nvar properties = null;\n\nvar propertyPanels = {}\n\nvar showing = false;\n\nfunction Show()\n{\n  showing = true;\n  $(\"#PlusMinus\").text = \"-\";\n  $(\"#Properties\").visible = true;\n  if (!loaded){\n    // load properties\n    var panel = $(\"#Properties\");\n\n\n    for (var i in properties){\n      var s = properties[i];\n      var prop = cat[s];\n      var propertyPanel = $.CreatePanel( \"Panel\", panel, s);\n      propertyPanel.BLoadLayout(\"file://{resources}/layout/custom_game/modmaker/modmaker_api_property.xml\", false, false);\n      propertyPanels[s] = propertyPanel;\n      propertyPanel.New(s, prop);\n    }\n    loaded = true;\n  }\n}\n\nfunction Hide()\n{\n  showing = false;\n  $(\"#PlusMinus\").text = \"+\";\n  $(\"#Properties\").visible = false;\n}\n\nfunction Clicked()\n{\n  if (showing)\n    Hide();\n  else\n    Show();\n}\n\nfunction Filter(search, clear)\n{\n  $.GetContextPanel().visible = true;\n  if (clear){\n    Hide();\n    for (var prop in propertyPanels){\n      var panel = propertyPanels[prop];\n      panel.Show();\n    }\n    return;\n  }\n\n  if (search.test(name)){\n    Show();\n  }\n  else{\n    var show = {};\n    for (var prop in properties){\n      var p = properties[prop]\n      if (search.test(p) || search.test(cat[p].d) || search.test(cat[p].f)){\n        show[p] = true;\n      }\n    }\n\n    if (Object.keys(show).length !== 0){\n      Show();\n\n      for (var prop in properties){\n        var p = properties[prop]\n        if (show[p])\n          propertyPanels[p].Show();\n        else\n          propertyPanels[p].Hide();\n      }\n    }\n    else{\n      $.GetContextPanel().visible = false;\n    } \n  }\n\n}\n\nfunction New(n, t, p)\n{\n  $(\"#PlusMinus\").text = \"+\";\n  $(\"#CategoryName\").text = n;\n  \n  name = n;\n  cat = t;\n  properties = p;\n}\n\n\n(function(){\n  $.GetContextPanel().Show = Show;\n  $.GetContextPanel().Hide = Hide;\n  $.GetContextPanel().New = New;\n  $.GetContextPanel().Filter = Filter;\n\n  $(\"#Properties\").visible = false;\n})();"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/modmaker/modmaker_api_property.js",
    "content": "var name = null;\nvar prop = null;\n\nfunction Show()\n{\n  $.GetContextPanel().visible = true;\n}\n\nfunction Hide()\n{\n  $.GetContextPanel().visible = false;\n}\n\nfunction OpenGitHub()\n{\n  $.Msg(\"OpenGitHub\");\n\n  GameEvents.SendCustomGameEventToServer( \"ModMaker_OpenGithub\", {search:name, language:\"lua\"});\n}\n\nfunction FuncClicked()\n{\n  var panel = $.GetContextPanel();\n  $(\"#PropertyFunction\").visible = false;\n  var textEntry = $.CreatePanel( \"TextEntry\", panel, \"\");\n  panel.MoveChildBefore(textEntry, $(\"#PropertyDescription\"));\n\n  textEntry.text = $(\"#PropertyFunction\").text\n  textEntry.style.marginLeft = \"40px;\";\n  textEntry.style.width = \"700px\";\n  textEntry.SetPanelEvent('onblur', function(){\n    $(\"#PropertyFunction\").visible = true;\n    textEntry.DeleteAsync(0);\n  });\n\n  textEntry.SetPanelEvent('oncancel', function(){\n    $(\"#PropertyFunction\").visible = true;\n    textEntry.DeleteAsync(0);\n  });\n  textEntry.SelectAll();\n  textEntry.SetFocus(true);\n}\n\n\nfunction New(n, p)\n{\n  $(\"#PropertyName\").text = n;\n  //$(\"#PropertyName\").SetAcceptsFocus(true);\n  $(\"#PropertyFunction\").text = p.f;\n  //$(\"#PropertyFunction\").SetAcceptsFocus(true);\n  $(\"#PropertyDescription\").text = p.d;\n  $(\"#PropertyDescription\").SetAcceptsFocus(true);\n\n  $(\"#PropertyDescription\").visible = p.d !== \"\";\n  name = n;\n  prop = p;\n}\n\n\n(function(){\n  $.GetContextPanel().Show = Show;\n  $.GetContextPanel().Hide = Hide;\n  $.GetContextPanel().New = New;\n})();"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/playertables/playertables_base.js",
    "content": "var reload = true;\n\nvar count = 0;\nvar PT = {\n  listeners: {},\n  tableListeners: {},\n  nextListener: 0,\n  tables: {},\n  subs: []\n};\n\n\n$.Msg(\"[playertables_base.js] Loaded\");\n\nvar PlayerTables = {};\n\nPlayerTables.GetAllTableValues = function(tableName)\n{\n  var table = PT.tables[tableName];\n  if (table)\n    return JSON.parse(JSON.stringify(table));\n\n  return null;\n};\n\n\nPlayerTables.GetTableValue = function(tableName, keyName)\n{\n  var table = PT.tables[tableName];\n  if (!table)\n    return null;\n\n  var val = table[keyName];\n\n  if (typeof val === 'object')\n    return JSON.parse(JSON.stringify(val));\n\n  return val;\n};\n\nPlayerTables.SubscribeNetTableListener = function(tableName, callback) \n{\n  var listeners = PT.tableListeners[tableName];\n  if (!listeners){\n    listeners = {};\n    PT.tableListeners[tableName] = listeners;\n  }\n\n  var ID = PT.nextListener;\n  PT.nextListener++;\n\n  listeners[ID] = callback;\n  PT.listeners[ID] = tableName;\n\n  return ID;\n};\n\nPlayerTables.UnsubscribeNetTableListener = function(callbackID)\n{\n  var tableName = PT.listeners[callbackID];\n  if (tableName){\n    if (PT.tableListeners[tableName]){\n      var listener = PT.tableListeners[tableName][callbackID];\n      if (listener){\n        delete PT.tableListeners[tableName][callbackID];\n      }\n    }\n \n    delete PT.listeners[callbackID];\n  }\n  \n  return;\n}; \n\nfunction isEquivalent(a, b) {\n    var aProps = Object.getOwnPropertyNames(a);\n    var bProps = Object.getOwnPropertyNames(b);\n\n    if (aProps.length != bProps.length) {\n        return false;\n    }\n\n    for (var i = 0; i < aProps.length; i++) {\n        var propName = aProps[i];\n\n        if (a[propName] !== b[propName]) {\n            return false;\n        }\n    }\n\n    return true;\n}\n\nfunction ProcessTable(newTable, oldTable, changes, dels)\n{\n  for (var k in newTable)\n  {\n    var n = newTable[k];\n    var old = oldTable[k];\n\n    if (typeof(n) == typeof(old) && typeof(n) == \"object\"){\n      if (!isEquivalent(n, old)){\n        changes[k] = n;\n      }\n\n      delete oldTable[k];\n    }\n    else if (n !== old){\n      changes[k] = n;\n      delete oldTable[k];\n    }\n    else if (n === old){\n      delete oldTable[k];\n    }\n  }\n\n  for (var k in oldTable)\n  {\n    dels[k] = true;\n  }\n}\n\nfunction SendPID()\n{\n  var pid = Players.GetLocalPlayer();\n  var spec = Players.IsSpectator(pid);\n  //$.Msg(pid, ' -- ', spec);\n  if (pid == -1 && !spec){\n    $.Schedule(1/30, SendPID);\n    return;\n  }\n\n  GameEvents.SendCustomGameEventToServer( \"PlayerTables_Connected\", {pid:pid} );\n}\n\n\n\nfunction TableFullUpdate(msg)\n{\n  //$.Msg('TableFullUpdate -- ', msg);\n  //msg.table = UnprocessTable(msg.table);\n  var newTable = msg.table;\n  var oldTable = PT.tables[msg.name];\n\n  if (!newTable)\n    delete PT.tables[msg.name];\n  else\n    PT.tables[msg.name] = newTable;\n\n  var listeners = PT.tableListeners[msg.name] || {};\n  var len = Object.keys(listeners).length;\n  var changes = null;\n  var dels = null;\n\n  if (len > -1 && newTable){\n    if (!oldTable){\n      changes = newTable;\n      dels = {};\n    }\n    else {\n      changes = {};\n      dels = {};\n      ProcessTable(newTable, oldTable, changes, dels);\n    }\n  }\n\n  for (var k in listeners){\n    try{ listeners[k](msg.name, changes, dels);} catch(err){$.Msg(\"PlayerTables.TableFullUpdate callback error for '\", msg.name, \" -- \", newTable, \"': \", err.stack);};\n  }\n};\n\nfunction UpdateTable(msg)\n{\n  //$.Msg('UpdateTable -- ', msg);\n  //msg.changes = UnprocessTable(msg.changes);\n\n  var table = PT.tables[msg.name];\n  if (!table)\n  {\n    $.Msg(\"PlayerTables.UpdateTable invoked on nonexistent playertable.\");\n    return;\n  }\n\n  var t = {};\n\n  for (var k in msg.changes){\n    var value = msg.changes[k];\n\n    table[k] = value;\n    if (typeof value === 'object')\n      t[k] = JSON.parse(JSON.stringify(value));\n    else\n      t[k] = value;\n  }\n\n  var listeners = PT.tableListeners[msg.name] || {};\n  for (var k in listeners){\n    if (listeners[k]){\n      try{ listeners[k](msg.name, t, {});} catch(err){$.Msg(\"PlayerTables.UpdateTable callback error for '\", msg.name, \" -- \", t, \"': \", err.stack);}      \n    }\n  }\n}\n\nfunction DeleteTableKeys(msg)\n{\n  //$.Msg('DeleteTableKeys -- ', msg);\n  var table = PT.tables[msg.name];\n  if (!table)\n  {\n    $.Msg(\"PlayerTables.DeleteTableKey invoked on nonexistent playertable.\");\n    return;\n  }\n\n  var t = {};\n\n  for (var k in msg.keys){\n    var value = msg.keys[k];\n\n    delete table[k];\n  }\n\n  var listeners = PT.tableListeners[msg.name] || {};\n  for (var k in listeners){\n    if (listeners[k]){\n      try{ listeners[k](msg.name, {}, msg.keys);} catch(err){$.Msg(\"PlayerTables.DeleteTableKeys callback error for '\", msg.name, \" -- \", msg.keys, \"': \", err.stack);}\n    }\n  }\n}\n \n(function(){\n  GameUI.CustomUIConfig().PlayerTables = PlayerTables;\n\n  SendPID();\n\n  GameEvents.Subscribe( \"pt_fu\", TableFullUpdate);\n  GameEvents.Subscribe( \"pt_uk\", UpdateTable);\n  GameEvents.Subscribe( \"pt_kd\", DeleteTableKeys);\n})()"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/selection/selection.js",
    "content": "\"use strict\";\n\nvar skip = false\n\n// Recieves a list of entities to replace the current selection\nfunction Selection_New(msg)\n{\n    var entities = msg.entities\n    //$.Msg(\"Selection_New \", entities)\n    for (var i in entities) {\n        if (i==1)\n            GameUI.SelectUnit(entities[i], false) //New\n        else\n            GameUI.SelectUnit(entities[i], true) //Add\n    };\n    OnUpdateSelectedUnit()\n}\n\n// Recieves a list of entities to add to the current selection\nfunction Selection_Add(msg)\n{\n    var entities = msg.entities\n    //$.Msg(\"Selection_Add \", entities)\n    for (var i in entities) {\n        GameUI.SelectUnit(entities[i], true)\n    };\n    OnUpdateSelectedUnit()\n}\n\n// Removes a list of entities from the current selection\nfunction Selection_Remove(msg)\n{\n    var remove_entities = msg.entities\n    //$.Msg(\"Selection_Remove \", remove_entities)\n    var selected_entities = GetSelectedEntities();\n    for (var i in remove_entities) {\n        var index = selected_entities.indexOf(remove_entities[i])\n        if (index > -1)\n            selected_entities.splice(index, 1)\n    };\n\n    if (selected_entities.length == 0)\n    {\n        Selection_Reset()\n        return\n    }\n\n    for (var i in selected_entities) {\n        if (i==0)\n            GameUI.SelectUnit(selected_entities[i], false) //New\n        else\n            GameUI.SelectUnit(selected_entities[i], true) //Add\n    };\n    OnUpdateSelectedUnit()\n}\n\n// Fall back to the default selection\nfunction Selection_Reset(msg)\n{\n    var playerID = Players.GetLocalPlayer()\n    var heroIndex = Players.GetPlayerHeroEntityIndex(playerID)\n    GameUI.SelectUnit(heroIndex, false)\n    OnUpdateSelectedUnit()\n}\n\n// Filter & Sending\nfunction OnUpdateSelectedUnit()\n{\n    //$.Msg( \"OnUpdateSelectedUnit \", Players.GetLocalPlayerPortraitUnit() );\n    if (skip == true){\n        skip = false;\n        return\n    }\n\n    // Skips units from the selected group\n    SelectionFilter(GetSelectedEntities())\n\n    $.Schedule(0.03, SendSelectedEntities);\n}\n\n// Updates the list of selected entities on server for this player\nfunction SendSelectedEntities() {\n    GameEvents.SendCustomGameEventToServer(\"selection_update\", {entities: GetSelectedEntities()})\n}\n\n// Local player shortcut\nfunction GetSelectedEntities() {\n    return Players.GetSelectedEntities(Players.GetLocalPlayer());\n}\n\n// Returns an index of an override defined on lua with npcHandle:SetSelectionOverride(reselect_unit)\nfunction GetSelectionOverride(entityIndex) {\n    var table = CustomNetTables.GetTableValue(\"selection\", entityIndex)\n    return table ? table.entity : -1\n}\n\nfunction OnUpdateQueryUnit()\n{\n    //$.Msg( \"OnUpdateQueryUnit \", Players.GetQueryUnit(Players.GetLocalPlayer()));\n}\n\n(function () {\n    // Custom event listeners\n    GameEvents.Subscribe( \"selection_new\", Selection_New);\n    GameEvents.Subscribe( \"selection_add\", Selection_Add);\n    GameEvents.Subscribe( \"selection_remove\", Selection_Remove);\n    GameEvents.Subscribe( \"selection_reset\", Selection_Reset);\n\n    // Built-In Dota client events\n    GameEvents.Subscribe( \"dota_player_update_selected_unit\", OnUpdateSelectedUnit );\n    GameEvents.Subscribe( \"dota_player_update_query_unit\", OnUpdateQueryUnit );\n})();"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/selection/selection_filter.js",
    "content": "// Defines scripts to set selection redirects\n\nvar DESELECT_BUILDINGS = false; // Get only the units when units&buildings are on the same list\nvar SELECT_ONLY_BUILDINGS = true; // Get only the buildings when units&buildings are on the same list\nvar DISPLAY_RANGE_PARTICLE = true; // Uses the main selected entity to update a particle showing attack range\nvar rangedParticle\n\nfunction SelectionFilter( entityList ) {\n    \n    if (DESELECT_BUILDINGS) {\n        if (entityList.length > 1 && IsMixedBuildingSelectionGroup(entityList) ){\n            $.Schedule(1/60, DeselectBuildings) \n        }\n    }\n\n    else if (SELECT_ONLY_BUILDINGS) {\n        if (entityList.length > 1 && IsMixedBuildingSelectionGroup(entityList) ){\n            $.Schedule(1/60, SelectOnlyBuildings)   \n        }\n    }\n\n    if (DISPLAY_RANGE_PARTICLE) {\n        var mainSelected = Players.GetLocalPlayerPortraitUnit();\n\n        // Remove old particle\n        if (rangedParticle)\n            Particles.DestroyParticleEffect(rangedParticle, true)\n\n        // Create range display on the selected ranged attacker\n        if (IsCustomBuilding(mainSelected) && Entities.HasAttackCapability(mainSelected))\n        {\n            var range = Entities.GetAttackRange(mainSelected)\n            rangedParticle = Particles.CreateParticle(\"particles/ui_mouseactions/range_display.vpcf\", ParticleAttachment_t.PATTACH_CUSTOMORIGIN, mainSelected)\n            var position = Entities.GetAbsOrigin(mainSelected)\n            position[2] = 380 //Offset\n            Particles.SetParticleControl(rangedParticle, 0, position)\n            Particles.SetParticleControl(rangedParticle, 1, [range, 0, 0])\n        }\n    }\n\n    for (var i = 0; i < entityList.length; i++) {\n        var overrideEntityIndex = GetSelectionOverride(entityList[i])\n        if (overrideEntityIndex != -1) {\n            GameUI.SelectUnit(overrideEntityIndex, false);\n        }\n    };\n}\n\nfunction DeselectBuildings() {\n    var iPlayerID = Players.GetLocalPlayer();\n    var selectedEntities = Players.GetSelectedEntities( iPlayerID );\n    \n    skip = true;\n    var first = FirstNonBuildingEntityFromSelection(selectedEntities)\n    GameUI.SelectUnit(first, false); // Overrides the selection group\n\n    for (var unit of selectedEntities) {\n        skip = true; // Makes it skip an update\n        if (!IsCustomBuilding(unit) && unit != first){\n            GameUI.SelectUnit(unit, true);\n        }\n    }\n}\n\nfunction FirstNonBuildingEntityFromSelection( entityList ){\n    for (var i = 0; i < entityList.length; i++) {\n        if (!IsCustomBuilding(entityList[i])){\n            return entityList[i]\n        }\n    }\n    return 0\n}\n\nfunction GetFirstUnitFromSelectionSkipUnit ( entityList, entIndex ) {\n    for (var i = 0; i < entityList.length; i++) {\n        if ((entityList[i]) != entIndex){\n            return entityList[i]\n        }\n    }\n    return 0\n}\n\n// Returns whether the selection group contains both buildings and non-building units\nfunction IsMixedBuildingSelectionGroup ( entityList ) {\n    var buildings = 0\n    var nonBuildings = 0\n    for (var i = 0; i < entityList.length; i++) {\n        if (IsCustomBuilding(entityList[i])){\n            buildings++\n        }\n        else {\n            nonBuildings++\n        }\n    }\n    return (buildings>0 && nonBuildings>0)\n}\n\nfunction SelectOnlyBuildings() {\n    var iPlayerID = Players.GetLocalPlayer();\n    var selectedEntities = Players.GetSelectedEntities( iPlayerID );\n    \n    skip = true;\n    var first = FirstBuildingEntityFromSelection(selectedEntities)\n    GameUI.SelectUnit(first, false); // Overrides the selection group\n\n    for (var unit of selectedEntities) {\n        skip = true; // Makes it skip an update\n        if (IsCustomBuilding(unit) && unit != first){\n            GameUI.SelectUnit(unit, true);\n        }\n    }\n}\n\nfunction FirstBuildingEntityFromSelection( entityList ){\n    for (var i = 0; i < entityList.length; i++) {\n        if (IsCustomBuilding(entityList[i])){\n            return entityList[i]\n        }\n    }\n    return 0\n}\n\nfunction IsCustomBuilding( entityIndex ){\n    var ability_building = Entities.GetAbilityByName( entityIndex, \"ability_building\")\n    var ability_tower = Entities.GetAbilityByName( entityIndex, \"ability_tower\")\n    return (ability_building != -1 || ability_tower != -1)\n}\n\nfunction IsMechanical( entityIndex ) {\n    var ability_siege = Entities.GetAbilityByName( entityIndex, \"ability_siege\")\n    return (ability_siege != -1)\n}\n\nfunction IsCityCenter( entityIndex ){\n    return (Entities.GetUnitLabel( entityIndex ) == \"city_center\")\n}\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/worldpanels/arrow.js",
    "content": "$.Msg(\"arrow\");\n\nfunction ArrowCheck()\n{\n  var wp = $.GetContextPanel().WorldPanel\n  var onEdge = $.GetContextPanel().OnEdge;\n\n  if (wp){\n    if (onEdge){\n      var sw = GameUI.CustomUIConfig().screenwidth;\n      var sh = GameUI.CustomUIConfig().screenheight;\n\n      var ang = -1 * Math.atan2($.GetContextPanel().actualxoffset - sw/2, $.GetContextPanel().actualyoffset - sh/2) * 180 / Math.PI;\n\n      //$.Msg($.GetContextPanel().actualxoffset, $.GetContextPanel().actualyoffset);\n      $(\"#arrow\").style.transform = \"rotateZ(\" + ang.toFixed(1) + \"deg);\"; // \n    }\n    else{\n      $(\"#arrow\").style.transform = \"rotateZ(0deg);\"; // \n    }\n  }\n\n  $.Schedule(1/30, ArrowCheck);\n}\n\n(function()\n{ \n  ArrowCheck();\n\n})();"
  },
  {
    "path": "content/dota_addons/barebones/panorama/scripts/worldpanels/healthbar.js",
    "content": "$.Msg(\"healthbar\");\n\nvar teamColors = GameUI.CustomUIConfig().team_colors;\n\nif (!teamColors) {\n  GameUI.CustomUIConfig().team_colors = {}\n  GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_GOODGUYS] = \"#3dd296;\";\n  GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_BADGUYS ] = \"#F3C909;\";\n  GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_1] = \"#c54da8;\";\n  GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_2] = \"#FF6C00;\";\n  GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_3] = \"#3455FF;\";\n  GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_4] = \"#65d413;\";\n  GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_5] = \"#815336;\";\n  GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_6] = \"#1bc0d8;\";\n  GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_7] = \"#c7e40d;\";\n  GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_8] = \"#8c2af4;\";\n\n  teamColors = GameUI.CustomUIConfig().team_colors;\n}\n\nteamColors[DOTATeam_t.DOTA_TEAM_NEUTRALS] = teamColors[DOTATeam_t.DOTA_TEAM_NEUTRALS] || \"#aaaaaa;\";\nteamColors[DOTATeam_t.DOTA_TEAM_NOTEAM]   = teamColors[DOTATeam_t.DOTA_TEAM_NOTEAM]   || \"#aaaaaa;\";\n\nfunction HealthCheck()\n{\n  var wp = $.GetContextPanel().WorldPanel\n  var offScreen = $.GetContextPanel().OffScreen;\n  if (!offScreen && wp){\n    var ent = wp.entity;\n    if (ent){\n      if (!Entities.IsAlive(ent)){\n        $.GetContextPanel().style.opacity = \"0\";\n        $.Schedule(1/30, HealthCheck);\n        return;\n      }\n\n      //var pTeam = Players.GetTeam(Game.GetLocalPlayerID());\n      var team = Entities.GetTeamNumber(ent);\n\n      // Color by friendly/enemy\n      /*if (team == pTeam)\n        $.GetContextPanel().SetHasClass(\"Friendly\", true);\n      else\n        $.GetContextPanel().SetHasClass(\"Friendly\", false);*/\n\n      $.GetContextPanel().style.opacity = \"1\";\n      var hp = Entities.GetHealth(ent);\n      var hpMax = Entities.GetMaxHealth(ent);\n      var hpPer = (hp * 100 / hpMax).toFixed(0);\n\n      \n      for (var i=1; i<=5; i++){\n        var pan = $(\"#HP\" + i);\n        var perc = Math.min(Math.max(0, hpPer), 20) * 5;\n\n        pan.style.width = perc + \"%;\";\n        pan.style.backgroundColor = teamColors[team];\n\n        hpPer -= 20;\n      }\n    }\n  }\n\n  $.Schedule(1/30, HealthCheck);\n}\n\n(function()\n{ \n  HealthCheck();\n\n})();"
  },
  {
    "path": "content/dota_addons/barebones/panorama/styles/barebones_attachments.css",
    "content": ".ButtonRow\n{\n  flow-children:right;\n  align:center bottom;\n  margin-top:10px;\n}\n\n.LineEntry\n{\n  align:center center;\n  vertical-align: center;\n  width:95%;\n  height:30px;\n  margin-bottom: 10px;\n  font-size: 14;\n  font-weight: normal;\n}\n\n.LineLabel\n{\n  align:center top;\n  font-weight: bold;\n  width:95%;\n}\n\n.ThreeEntry\n{\n  flow-children:right;\n  align:center top;\n  margin-bottom: 0px;\n}\n\n.LabelEntry\n{\n  width: 100px;\n  flow-children:down;\n  margin:5px 20px 5px 20px;  \n}\n\n.LabelEntry Label\n{\n  align: center top;\n  font-weight: bold;\n}\n\n.LabelEntry TextEntry Label\n{\n  align: left center;\n}\n\n.NumEntry\n{\n  width:80px;\n}\n\n.PlusMinus\n{\n  flow-children:down;\n}\n\n.PlusMinus Button\n{\n  width:18px;\n  height:18px;\n  margin-bottom: 0px;\n  padding: 0px;\n  border: 1px solid #555555;\n}\n\n.PlusMinus Button Label\n{\n  margin-top: -3px;\n  margin-left: 3px;\n}\n\n.SButton\n{\n  width: 100px;\n  align: center top;\n  margin-bottom: 0px;\n  padding: 2px;\n  margin:5px 20px 5px 20px;\n  border: 1px solid #555555;\n}\n\n.CosmeticRow\n{\n  flow-children:right;\n  width:98%;\n  height:20px;\n  margin-bottom: 1px;\n  border: 1px solid #555555;\n  align: center top;\n}\n\n.CosmeticLabel\n{\n  font-size: 12;\n  font-weight: normal;\n  align: left center;\n  overflow: squish squish;\n  color:white;\n}\n \n.CosmeticButton\n{\n  width: 50px;\n  align: right center;\n  margin-bottom: 0px;\n  border: 1px solid #555555;\n  height: 20px;\n  padding: 1px;\n}\n\n.CosmeticButton Label\n{\n  margin-top: 0px;\n  font-size: 12;\n  font-weight: bold;\n  align: center center;\n  color: #ff3333;\n}\n\n.CameraButton\n{\n  width: 50px;\n  align: center bottom;\n  padding: 2px;\n  margin:5px 10px 15px 10px;\n  border: 1px solid #555555;\n}\n\n.CameraButton Label\n{\n  margin-top: 0px;\n  font-size: 14;\n  font-weight: bold;\n  align: center center;\n  color: #aaffaa;\n}\n\n#CosmeticsPanel\n{\n  position: 1200px 50px 0px;\n  flow-children: down;\n  width: 700px;\n  border: 2px solid #555555;\n}\n\n#CosmeticsHeader\n{\n  background-color: #000000;\n  width: 100%;\n  height: 40px;\n  align: center top;\n}\n\n#CosmeticsHeader Label\n{\n  align: center center;\n  font-weight: bold;\n  font-size: 25;\n}\n\n#CloseButton\n{\n  align: right top;\n}\n\n#CosmeticsBody\n{\n  background-color: #333333;\n  width: 100%;\n  min-height: 100px;\n  padding:5px;\n  \n  flow-children: down;\n}\n\n#AttachmentsPanel\n{\n  position: 20px 50px 0px;\n  flow-children: down;\n  width: 500px;\n  border: 2px solid #555555;\n}\n\n#AttachmentsHeader\n{\n  background-color: #000000;\n  width: 100%;\n  height: 40px;\n  flow-children:none;\n}\n\n#AttachmentsHeader Label\n{\n  align: center center;\n  font-weight: bold;\n  font-size: 25;\n}\n\n#AttachmentsBody\n{\n  background-color: #333333;\n  width: 100%;\n  \n  flow-children: down;\n}\n\n#AttachmentsFooter\n{\n  background-color: #000000;\n  width: 100%;\n  height: 20px;\n}\n\n#HideCosmetics Label\n{\n  align: center top;\n  font-weight: bold;\n  color: #ffaaff;\n}\n\n#Freeze Label\n{\n  align: center top;\n  font-weight: bold;\n  color: #aaaaff;\n}\n\n#Load Label\n{\n  align: center top;\n  font-weight: bold;\n  color: #ffaaaa;\n}\n\n#Hide Label\n{\n  align: center top;\n  font-weight: bold;\n  color: #111111;\n}\n\n#Save Label\n{\n  align: center top;\n  font-weight: bold;\n  color: #aaffaa;\n}\n\n#PlusMinusScaleDropDownMenu\n{\n  width:150px;\n}"
  },
  {
    "path": "content/dota_addons/barebones/panorama/styles/barebones_notifications.css",
    "content": ".BarebonesBaseHud\n{\n    width: 100%;\n    height: 100%;\n}\n\n.BarebonesTopNotifications\n{\n    width: 100%;\n    height: 100%;\n    flow-children: down;\n}\n\n.BarebonesBottomNotifications\n{\n    width: 100%;\n    height: 100%;\n    flow-children: down;\n}\n\n.NotificationLine\n{\n    margin-top: 15px;\n    flow-children: right;\n    horizontal-align: center;\n    vertical-align: middle;\n    animation-name: scalein;\n    animation-duration: .5s;\n    animation-timing-function: linear;\n}\n\n#TopNotifications\n{\n    flow-children: down;\n    horizontal-align: center;\n    width:100%;\n    opacity: 1;\n    margin-top: 64px;\n    visibility: visible;\n    border: 0px solid blue;\n}\n\n#BottomNotifications\n{\n    flow-children: down;\n    horizontal-align: center;\n    vertical-align: bottom;\n    width: 100%;\n    opacity: 1;\n    margin-bottom: 375px;\n    visibility: visible;\n    border: 0px solid blue;\n}\n\n.NotificationMessage\n{\n    color: white;\n    vertical-align: center;\n    horizontal-align: center;\n    text-shadow: 4px 4px 4px #121212;\n    font-size: 36px;\n    font-weight: bold;\n    text-align: center;\n}\n\n.HeroImage\n{\n    vertical-align: center;\n    horizontal-align: center;\n}\n\n@keyframes 'scalein' {\n  from {\n    opacity:0;\n    transform: scaleX(2) scaleY(2);\n  }\n\n  to {\n    opacity:1;\n    transform: scaleX(1) scaleY(1);\n  }\n}"
  },
  {
    "path": "content/dota_addons/barebones/panorama/styles/containers/container.css",
    "content": ".ContainersBase\n{\n  width:100%;\n  height:100%;\n}\n\n.Outer\n{\n  flow-children: down;\n  border: 1px solid #555555;\n  background-color: #000000;\n}\n\n#Inner\n{\n  margin:0px 10px 10px 10px;\n  flow-children: down;\n  border: 1px solid #555555;\n  align: center center;\n  background-color: #333333;\n}\n\n#Header\n{\n  background-color: #000000;\n  width: 100%;\n  height: 40px;\n  align: center top;\n\n}\n\n#CloseButton\n{\n  align: right top;\n}\n\n#HeaderLabel\n{\n  align: center center;\n  font-weight: bold;\n  font-size: 25;\n}\n\n#Footer\n{\n  margin-bottom: 8px;\n  align: center center;\n  flow-children: right;\n  //visibility: collapse;\n}\n\n.ButtonBevel\n{\n  margin-right: 2px;\n  margin-left: 2px;\n  min-height: 0px;\n  min-width: 0px;\n  vertical-align: middle;\n  horizontal-align: center;\n  padding-top: 2px;\n  padding-bottom: 2px;\n  padding-right: 6px;\n  padding-left: 6px;\n}\n\n.ButtonBevel Label\n{\n  font-size: 16px;\n  margin-top: 2px;\n}\n\n\n\n\n.InventoryOverlayRoot\n{\n  horizontal-align: right;\n  vertical-align: bottom;\n  margin-bottom: 28px;\n  margin-right: 10px; \n  \n  flow-children: down;\n}\n\n.AspectRatio5x4 #inventory_items.Flipped\n{\n  margin-right: 0px;\n  margin-left: 80px;\n}\n\n.AspectRatio5x4 #inventory_items\n{\n  margin-bottom: 26px;\n  margin-right: 80px;\n}\n\n.AspectRatio4x3 #inventory_items.Flipped\n{\n  margin-right: 0px;\n  margin-left: 100px;\n}\n\n.AspectRatio4x3 #inventory_items\n{\n  margin-bottom: 30px;\n  margin-right: 100px;\n}\n\n.AspectRatio16x9 #inventory_items.Flipped\n{\n  margin-right: 0px;\n  margin-left: 230px;\n}\n\n.AspectRatio16x9 #inventory_items\n{\n  margin-bottom: 27px;\n  margin-right: 230px;\n}\n\n.AspectRatio16x10 #inventory_items.Flipped\n{\n  margin-right: 0px;\n  margin-left: 230px;\n}\n\n.AspectRatio16x10 #inventory_items\n{\n  margin-bottom: 30px;\n  margin-right: 230px;\n}\n\n\n#inventory_items.Flipped\n{\n  horizontal-align: left;\n}\n\n#inventory_items\n{\n  flow-children: down;\n  border: 2px solid black;\n  horizontal-align: right;\n  vertical-align: bottom; \n  margin-bottom: 235px;\n}\n\n\n.AspectRatio5x4 #stash_row\n{\n  margin-bottom: 235px;\n  transform: scale3d(.75, .75, 1);\n}\n\n.AspectRatio4x3 #stash_row\n{\n  margin-bottom: 255px;\n}\n\n.AspectRatio16x9 #stash_row\n{\n  margin-bottom: 235px;\n}\n\n.AspectRatio16x10 #stash_row\n{\n  margin-bottom: 225px;\n}\n\n#stash_row.Flipped\n{\n  horizontal-align: left;\n  transform-origin: 0% 50%;\n} \n\n#stash_row\n{\n  transform-origin: 100% 50%;\n  transform: scale3d(.8, .8, 1);\n  flow-children: right;\n  background-color: #222222;\n  border: 2px solid black; \n  horizontal-align: right;\n  vertical-align: bottom;\n}\n\n#inventory_row_1\n{\n  flow-children: right;\n  background-color: #222222;\n}\n\n#inventory_row_2\n{\n  flow-children: right;\n  background-color: #222222;\n}\n\n.ItemRow\n{\n  margin-top: 4px;\n  margin-bottom: 4px;\n  margin-left: 4px;\n  margin-right: 4px;\n  flow-children: right; \n  background-color: #222222;\n  align: center center;\n}\n \n.ItemPanel\n{\n  width: 66px;\n  height: 48px;\n  box-shadow: #000000ff 1px 1px 2px 2px;\n\n  margin-top: 4px;\n  margin-bottom: 4px;\n  margin-left: 4px;\n  margin-right: 4px;\n  align: center center;\n}\n\n#ItemButton\n{\n  align: center center;\n  width: 100%;\n  height: 100%;\n}\n\n#ItemImage\n{\n  align: center center; \n  width: 100%;\n  height: 100%;\n}\n\n\n.Charges\n{\n  font-size: 18px;\n  text-shadow: 0px 0px 6px 6 #000000;\n}\n\n#ChargeCount\n{\n  visibility: collapse;\n  vertical-align: bottom;\n  horizontal-align: right;\n  margin-right: 4px;\n  margin-bottom: -6px;\n}\n\n#AltChargeCount\n{\n  font-size: 14px;\n  visibility: collapse;\n  vertical-align: bottom;\n  horizontal-align: left;\n  margin-left: 4px;\n  margin-bottom: -2px;\n}\n\n.show_charges #ChargeCount\n{\n  visibility: visible;\n}\n\n.show_alt_charges #AltChargeCount\n{\n  visibility: visible;\n}\n\n.no_hotkey #Hotkey\n{\n  visibility: collapse;\n}\n\n.ItemMenu\n{\n  flow-children: down;\n}\n\n.dragging_from\n{\n  saturation: 0.5;\n  wash-color: #808080;\n}\n\n.is_active\n{\n  saturation: 1.5;\n}\n\n#DropTargetHighlight\n{\n  width: 100%;\n  height: 100%;\n  background-color: gradient( radial, 50% -20%, 0% 0%, 80% 80%, from( #FFFFFF ), to( #FFFFFF00 ) );\n  opacity: 0;\n}\n\n.potential_drop_target #DropTargetHighlight\n{\n  opacity: 0.3;\n}\n\n#Contents\n{\n  padding: 0px;\n  margin: 0px;\n}\n\n.ItemMenuButton\n{\n  visibility: collapse;\n  width: 200px;\n  height: 40px;\n  border: 1px solid black;\n  padding: 4px;\n  padding-left: 8px;\n  background-color: #291818;\n}\n\n.ItemMenuButton:hover\n{\n  background-color: #443837;\n}\n\n.ItemMenuButton Label\n{\n  font-size: 16px;\n  vertical-align: center;\n  color: #acaaaa;\n}\n\n.ItemMenuButton:hover Label\n{\n  color: #eae9e9;\n}\n\n.bSellable #Sell\n{\n  visibility: visible;\n}\n.bDisassemble #Disassemble\n{\n  visibility: visible;\n}\n.bShowInShop #ShowInShop\n{\n  visibility: visible;\n}\n.bDropFromStash #DropFromStash\n{\n  visibility: visible;\n}\n.bAlertable #Alert\n{\n  visibility: visible;\n}\n.bMoveToStash #MoveToStash\n{\n  visibility: visible;\n}\n\n\n\n\n\n\n\n\n\n\n#CooldownOverlay\n{\n  height: 100%;\n  background-color: #000000DD;\n}\n\n#CooldownTimer\n{\n  color: white;\n    font-size: 24px;\n  text-shadow: 0px 0px 6px 6 #000000;\n    horizontal-align: center;\n    vertical-align: center;\n}\n\n#Cooldown\n{\n  width: 100%;\n  height: 100%;\n  visibility: collapse;\n}\n\n.in_cooldown #Cooldown\n{\n  visibility: visible;\n}\n\n#Price\n{\n  color: #FFD700;\n    font-size: 14px;\n    font-weight: bold;\n  text-shadow: 0px 0px 6px 3 #846722;\n  margin-right: -2px;\n  margin-bottom: -4px;\n\n  vertical-align: top;\n  horizontal-align: left;\n  visibility: collapse;\n}\n\n.show_price #Price\n{\n  visibility: visible;\n}\n\n.high_price #ItemImage\n{\n  wash-color: #404040;\n}\n\n.high_price #Price\n{\n  color: #cc0000;\n  text-shadow: 0px 0px 6px 3 #660000;\n}\n\n#Stock\n{\n  color: #a020a0;\n    font-size: 14px;\n    font-weight: bold;\n  text-shadow: 0px 0px 6px 3 #400040;\n  margin-right: -2px;\n  margin-bottom: -4px;\n\n  vertical-align: top;\n  horizontal-align: right;\n  visibility: collapse;\n}\n\n.show_stock #Stock\n{\n  visibility: visible;\n}\n\n.out_of_stock #Stock\n{\n  color: #999999;\n  text-shadow: 0px 0px 6px 3 #444444;\n}\n\n.out_of_stock #ItemImage\n{\n  wash-color: #404040;\n}\n\n#ManaCost\n{\n  color: #c0e8fb;\n    font-size: 14px;\n    font-weight: bold;\n  text-shadow: 0px 0px 6px 8 #245191;\n  margin-right: -2px;\n  margin-bottom: -4px;\n\n  vertical-align: bottom;\n  horizontal-align: right;\n  visibility: collapse;\n}\n\n.no_mana_cost #ManaCost\n{\n  visibility: collapse;\n}\n\n.low_mana #ItemImage\n{\n  wash-color: #8080ff;\n}\n\n#ActiveAbility\n{\n  width: 100%;\n  height: 100%;\n  background-color: gradient( radial, 50% -20%, 0% 0%, 80% 80%, from( #FFFFFF ), to( #FFFFFF00 ) );\n  border: 4px solid #FFFFFF40;\n  opacity: 0;\n}\n\n.is_active #ActiveAbility\n{\n  opacity: 1;\n}\n\n#Hotkey\n{\n  margin-left: -4px;\n\n  vertical-align: top;\n  horizontal-align: left;\n  min-width: 18px;\n}\n\n#HotkeyBlock\n{\n\n  vertical-align: top;\n  horizontal-align: left;\n  min-width: 18px;\n  min-height: 17px;\n  width: 18px;\n  clip: rect(0%, 200%, 200%, 0%);\n\n  background-color: gradient( linear, 0% 0%, 0% 100%, from( #393939 ), to( #414849 ) );\n  border: 1px solid #ffffff05;\n  box-shadow: fill black 1px 1px 2px 2px;\n}\n\n#HotkeyText\n{\n  color: #bba995;\n  text-shadow: 1px 1px 2px 2 #000000;\n    font-size: 13px;\n    font-weight: bold;\n  vertical-align: center;\n  text-align: center;\n  min-width: 18px;\n  text-overflow: clip;\n}\n\n.Outer #Hotkey,\n.no_level #Hotkey,\n.no_item #Hotkey,\n.is_passive #Hotkey,\n#stash_row #Hotkey,\n.no_hotkey #Hotkey\n{\n  visibility: collapse;\n}\n\n\n"
  },
  {
    "path": "content/dota_addons/barebones/panorama/styles/containers/container_skins.css",
    "content": ".Hourglass.Outer\n{\n  background-color: #ADD8E622;\n}\n\n.Hourglass #Header\n{\n  background-color: #55222288;\n}\n\n.Hourglass #Footer\n{\n  \n}\n\n.Hourglass #HeaderLabel\n{ \n  color: #ffffff;\n}\n\n.Hourglass #Inner\n{\n  background-color: #ADD8E6;\n}\n\n.Hourglass .ItemRow\n{\n  margin-top: 2px;\n  margin-bottom: 2px;\n  background-color: #aa8833;\n} \n\n.Hourglass .ItemPanel\n{\n  width:66px;\n  height:48px;\n}\n\n.Hourglass #row1\n{\n  clip: rect(-100%, 200%, 200%, -100%);\n  background-color: #ccaa44;\n}\n\n.Hourglass #row2\n{\n  background-color: #aa8833;\n}\n\n.Hourglass #row3\n{\n  background-color: #776622;\n}\n\n.Hourglass #slot1\n{\n  border: 8px solid red;\n  box-shadow: fill black 1px 1px 2px 2px;\n  pre-transform-scale2d: 1.0;\n  animation-name: goleft;\n  //animation-delay: 0s;\n  animation-duration: 2s;\n  animation-timing-function: ease-in-out;\n  animation-iteration-count: infinite; \n}\n\n.Hourglass #slot2\n{\n  border: 5px solid green;\n  box-shadow: fill black 1px 1px 2px 2px;\n  animation-name: goright;\n  //animation-delay: 0s;\n  animation-duration: 2s;\n  animation-timing-function: ease-in-out;\n  animation-iteration-count: infinite; \n}\n\n\n@keyframes 'goleft'\n{\n  0%   {transform: translateX( 0px ) translateY( 0px );}\n  50%  {transform: translateX( -25px ) translateY( 0px );}\n  100% {transform: translateX( 0px ) translateY( 0px );}\n}\n\n@keyframes 'goright'\n{\n  0%   {transform: translateX( 0px ) translateY( 0px );}\n  50%  {transform: translateX( 25px ) translateY( 0px );}\n  100% {transform: translateX( 0px ) translateY( 0px );}\n}\n\n\n\n.SmallItems .ItemPanel\n{\n  width:33px;\n  height:24px;\n  margin:1px;\n}\n\n.SmallItems .ItemRow\n{\n  margin-top: 1px;\n  margin-bottom: 1px;\n}"
  },
  {
    "path": "content/dota_addons/barebones/panorama/styles/custom_loading_screen.css",
    "content": "@define TotalLength: 40s;\n@define TimingFunc: linear;\n@define IterationCount: 1;\n@define AnimationDelay: 0s;\n\n.AddonLoadingRoot\n{\n    width: 100%;\n    height: 100%;\n    background-color: black;\n    overflow: clip;\n}\n\n#TitlePanel\n{\n  horizontal-align: left;\n  vertical-align: bottom;\n  margin-bottom: 150px;\n  margin-left: 100px;\n  flow-children: right;\n}\n\n#AddonTitle\n{\n  margin-bottom: -15px;\n  vertical-align: center;\n  text-transform: uppercase;\n  font-size: 80px;\n  color: #cccccc;\n  text-shadow: 2px 2px 2px #000000;\n}\n\n.SeqImg\n{\n  background-repeat: no-repeat;\n  background-position: 50% 50%;\n  background-size: 100% 100%;\n}\n\n#CustomBg\n{\n\n  margin-top: 350px;\n    overflow: clip;\n  pre-transform-scale2d: 1.0;\n  animation-name: gamemode_anim;\n  animation-delay: AnimationDelay;\n  animation-duration: TotalLength;\n  animation-timing-function: TimingFunc;\n  animation-iteration-count: IterationCount;\n}\n\n#gamemode\n{\n  margin-left: 160px;\n  /*margin-bottom: 0px;*/\n  \n}\n\n@keyframes 'gamemode_anim'\n{\n  0%\n  {\n    transform: translateX( 0px ) translateY( 0px );\n    pre-transform-scale2d: .8;\n  }\n\n  100%\n  {\n    transform: translateX( 0px ) translateY( -200px );\n  }\n}"
  },
  {
    "path": "content/dota_addons/barebones/panorama/styles/modmaker/modmaker.css",
    "content": ".ModmakerBase\n{\n  width:100%;\n  height:100%;\n}\n\n#APIWindow\n{\n  align: center center;\n  min-width:800px;\n  min-height:800px;\n  flow-children: down;\n  visibility: collapse;\n}\n\n#TitleSearch\n{\n  height:50px;\n  background-color: #222222;\n  width:100%;\n  flow-children:right;\n}\n\n#Title\n{\n  vertical-align: center;\n  font-size: 40px;\n  font-weight: bold;\n  color: white;\n  margin-left: 20px;\n}\n\n#Search\n{\n  align: center center;\n  margin-left: 50px;\n  margin-right:10px;\n  margin-bottom: 2px;\n  width: 450px;\n}\n\n#Search Label\n{\n  padding-top: 3px;\n}\n\n#SearchButton\n{\n  margin-top:-1px;\n  margin-bottom: 0px;\n  margin-right: 15px;\n  padding-left: 15px;\n  padding-right: 15px;\n  padding-top: 0px;\n  padding-bottom: 0px;\n  vertical-align: center;\n  width: fit-children;\n  horizontal-align: right;\n}\n\n#SearchButton Label\n{\n  font-size: 26px;\n  font-weight: bold;\n  margin: 0px;\n  padding: 0px;\n  color: lightblue;\n  align: center center;\n}\n\n\n#API\n{\n  height:750px;\n  border: 1px solid black;\n  overflow: scroll scroll;\n  background-color: #000000FE;\n  min-width: 800px;\n  flow-children: down;\n}\n\n.FileLine\n{\n  font-size: 16px;\n  font-weight: thin;\n  height: 16px;\n}\n\n.CategoryRoot\n{\n  flow-children: down;\n}\n\n.CategoryBase\n{\n  background-color: #11006666;\n  margin-left: 5px;\n  margin-right: 5px;\n  border: 1px solid black;\n  border-radius: 15px;\n  transition: background-color 0.1s ease-in-out 0.0s;\n}\n\n.CategoryBase:hover\n{\n  background-color: #110066FF;\n  flow-children: down;\n}\n\n.CategoryBase:hover #CategoryName\n{\n  color: white; \n}\n\n.Category\n{\n  margin-left: 10px; \n  flow-children: right;\n  //background-color: gradient( linear, 0% 0%, 100% 100%, from( #110066AA ), to( #11006600 ) );\n  \n  border-radius: 3px;\n  min-width: 800px;\n  padding-left: 10px;\n  padding-top:1px;\n  padding-bottom:-20px;\n}\n\n\n\n#PlusMinus\n{\n  margin-right: 15px;\n  margin-top: -3px;\n  font-size: 32px;\n  font-weight: bold;\n  vertical-align: center;\n  color: gold;\n}\n\n#CategoryName\n{\n  font-size: 18px;\n  vertical-align: center;\n}\n\n#Properties\n{\n  flow-children: down;\n}\n\n\n.Property\n{\n  flow-children: down;\n  margin-left: 20px;\n  width: 800px;\n}\n\n.PropNameLink\n{\n  flow-children:right;\n  width:100%;\n  background-color: #111111;\n  margin-right:20px;\n}\n\n#PropertyName\n{\n  font-size: 18px;\n  color: #CCCCCC;\n  font-weight: bold;\n  margin-left: 20px;\n  horizontal-align: left;\n  vertical-align: center;\n  min-width:500px;\n}\n\n#Github\n{\n  margin-bottom: 0px;\n  padding-left: 35px;\n  padding-right: 35px;\n  padding-top: 0px;\n  padding-bottom: 0px;\n  width: fit-children;\n  margin-left: 50px;\n  vertical-align: center;\n  background-color: gradient( linear, 0% 0%, 0% 100%, from( #434b4b55 ), to( #636f6f55 ) );\n  transition-property: background-color, opacity;\n  transition-duration: 0.2s;\n}\n\n#Github:hover\n{\n  background-color: gradient( linear, 0% 0%, 0% 100%, from( #434b4b ), to( #636f6f ) );\n}\n\n#Github Label\n{\n  font-size: 14px;\n  font-weight: bold;\n  margin: 0px;\n  padding: 0px;\n  color: lightblue;\n  align: center center;\n}\n\n#PropertyFunction\n{\n  font-size: 14px;\n  color: red;\n  margin-left: 40px;\n  transition: color 0.1s ease-in-out 0.0s;\n}\n\n#PropertyFunction:hover\n{\n  color: pink;\n}\n\n#PropertyDescription\n{\n  font-size: 14px;\n  margin-left: 40px;\n}"
  },
  {
    "path": "content/dota_addons/barebones/panorama/styles/worldpanels/arrow.css",
    "content": ".ArrowPanel\n{\n  wash-color: gold;\n  animation-name: oscillate;\n  //animation-delay: 0s;\n  animation-duration: 1s;\n  animation-timing-function: ease-in-out;\n  animation-iteration-count: infinite; \n  pre-transform-scale2d: .5;\n}\n\n\n\n@keyframes 'oscillate'\n{\n  0%   {transform: translateX( 0px ) translateY( 0px );}\n  50%  {transform: translateX( 0px ) translateY( 25px );}\n  100% {transform: translateX( 0px ) translateY( 0px );}\n}"
  },
  {
    "path": "content/dota_addons/barebones/panorama/styles/worldpanels/healthbar.css",
    "content": ".HealthBar\n{\n  background-color: #000000;\n  padding:2px;\n  border-radius: 5px;\n  flow-children:right;\n  border: 1px solid #555555;\n}\n\n.Bubble\n{\n  border-radius: 3px;\n  border: 1px solid #aaaaaa;\n  width: 20px;\n  height: 10px;\n  margin-right: 1px;\n  margin-left: 1px;\n  vertical-align: center;\n}\n\n.HP\n{\n  background-color: red;\n  width: 100%;\n  height: 100%;\n  align: left center;\n}\n\n.Friendly .HP\n{\n  background-color: #00ff00;\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_ambient/basic_ambient.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 190, 190, 190, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 90.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 1.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 128\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_SpinUpdate_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRotationSpeed_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_RandomForce_0,\n\t\t&C_OP_TurbulenceForce_0\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.150000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.750000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_fDrag = 0.020000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 1.000000\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flEndScale = 1.000000\n\tbool m_bEaseInAndOut = false\n\tfloat m_flBias = 0.500000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_nSequenceOverride = -1\n\tint m_nOrientationType = 0\n\tint m_nOrientationControlPoint = -1\n\tfloat m_flMinSize = 0.000000\n\tfloat m_flMaxSize = 5000.000000\n\tfloat m_flStartFadeSize = 100000000.000000\n\tfloat m_flEndFadeSize = 200000000.000000\n\tfloat m_flStartFadeDot = 1.000000\n\tfloat m_flEndFadeDot = 2.000000\n\tfloat m_flDepthBias = 0.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tfloat m_flCenterXOffset = 0.000000\n\tfloat m_flCenterYOffset = 0.000000\n\tfloat m_flZoomAmount0 = 1.000000\n\tfloat m_flZoomAmount1 = 1.000000\n\tbool m_bDistanceAlpha = false\n\tbool m_bSoftEdges = false\n\tfloat m_flEdgeSoftnessStart = 0.600000\n\tfloat m_flEdgeSoftnessEnd = 0.500000\n\tbool m_bOutline = false\n\tuint(4) m_OutlineColor = ( 255, 255, 255, 255 )\n\tint m_nOutlineAlpha = 255\n\tfloat m_flOutlineStart0 = 0.500000\n\tfloat m_flOutlineStart1 = 0.600000\n\tfloat m_flOutlineEnd0 = 0.700000\n\tfloat m_flOutlineEnd1 = 0.800000\n\tfloat m_flAnimationRate = 1.000000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = false\n\tfloat m_flSelfIllumAmount = 0.000000\n\tfloat m_flDiffuseAmount = 1.000000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = false\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials/particle/basic_smoke.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 16.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 0\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 0.000000\n\tfloat m_fSpeedMax = 20.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 3.000000\n\tfloat m_fLifetimeMax = 7.000000\n\tfloat m_fLifetimeRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tfloat m_flPercent = 0.500000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMin = 0.000000\n\tfloat m_flDegreesMax = 360.000000\n\tfloat m_flDegrees = 0.000000\n\tint m_nFieldOutput = 4\n\tfloat m_flRotationRandExponent = 1.000000\n\tbool m_bRandomlyFlipDirection = true\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nFieldOutput = 7\n\tint m_nAlphaMin = 120\n\tint m_nAlphaMax = 160\n\tfloat m_flAlphaRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0\n{\n\tfloat m_flDegreesMin = 0.000000\n\tfloat m_flDegreesMax = 10.000000\n\tfloat m_flDegrees = 0.000000\n\tint m_nFieldOutput = 4\n\tfloat m_flRotationRandExponent = 1.000000\n\tbool m_bRandomlyFlipDirection = true\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 70.000000\n\tfloat m_flRadiusMax = 110.000000\n\tfloat m_flRadiusRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 0.000000\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEmitRate = 16.000000\n\tfloat m_flEmissionScale = 0.000000\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tbool m_bScalePerParticle = false\n\tbool m_bInitFromKilledParentParticles = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RandomForce C_OP_RandomForce_0\n{\n\tfloat(3) m_MinForce = ( -10.000000, 10.000000, 20.000000 )\n\tfloat(3) m_MaxForce = ( -10.000000, 10.000000, 40.000000 )\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_TurbulenceForce C_OP_TurbulenceForce_0\n{\n\tfloat m_flNoiseCoordScale0 = 0.950000\n\tfloat m_flNoiseCoordScale1 = 0.700000\n\tfloat m_flNoiseCoordScale2 = 0.500000\n\tfloat m_flNoiseCoordScale3 = 0.200000\n\tfloat(3) m_vecNoiseAmount0 = ( 15.000000, 15.000000, 5.000000 )\n\tfloat(3) m_vecNoiseAmount1 = ( -30.000000, -25.000000, -3.000000 )\n\tfloat(3) m_vecNoiseAmount2 = ( 40.000000, -50.000000, 2.500000 )\n\tfloat(3) m_vecNoiseAmount3 = ( -30.000000, 30.000000, -4.000000 )\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_ambient/basic_ambient_readme.txt",
    "content": "basic_ambient is a barebones starting point for effects that emit continuously over time and never stop playing on their own.  The example featured here is a small column of ambient environmental smoke or steam.\n\nThis is a very simple effect with just one component and no children.\n\nIt does have a number of influences on its motion, though:\n  *A small initial velocity via its Position Within Sphere Random\n  *Drag in its Movement Basic\n  *A random force Force Generator which applies the broad motion necessary to get the column\n  *A turbulent force Force Generator which adds hand-tunable noise to the particles' motion\n\nAt times it may be necessary to stack up motion influences like this in order to achieve naturalistic results, but don't automatically make that assumption - sometimes simply adding positive or negative gravity (by modifying the third or \"Z\" field of the Movement Basic Operator) introduces enough movement to look good."
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_explosion/basic_explosion.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 5.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 1.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 4\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/basic_explosion/basic_explosion_burst.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/basic_explosion/basic_explosion_bits.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/basic_explosion/basic_explosion_flash.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t}\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_explosion/basic_explosion_bits.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 10.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 0.100000\n\tint m_nConstantSequenceNumber = 7\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 64\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomTrailLength_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -600.000000 )\n\tfloat m_fDrag = 0.120000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 1.000000\n\tfloat m_flStartScale = 1.000000\n\tfloat m_flEndScale = 0.100000\n\tbool m_bEaseInAndOut = false\n\tfloat m_flBias = 0.750000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_nOrientationType = 0\n\tint m_nOrientationControlPoint = -1\n\tfloat m_flMinSize = 0.000000\n\tfloat m_flMaxSize = 5000.000000\n\tfloat m_flStartFadeSize = 100000000.000000\n\tfloat m_flEndFadeSize = 200000000.000000\n\tfloat m_flMaxLength = 2000.000000\n\tfloat m_flMinLength = 0.000000\n\tbool m_bIgnoreDT = false\n\tfloat m_flConstrainRadiusToLengthRatio = 1.000000\n\tfloat m_flLengthScale = 1.500000\n\tfloat m_flRadiusTaper = 1.000000\n\tfloat m_flLengthFadeInTime = 0.000000\n\tfloat(4) m_vEndTrailTintFactor = ( 1.000000, 1.000000, 1.000000, 1.000000 )\n\tint m_nHorizCropField = 19\n\tint m_nVertCropField = 19\n\tfloat m_flRadiusScale = 1.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tfloat m_flAnimationRate = 0.100000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = false\n\tfloat m_flSelfIllumAmount = 0.500000\n\tfloat m_flDiffuseAmount = 0.500000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = true\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials/particle/sparks/sparks.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 0.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 0\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 600.000000\n\tfloat m_fSpeedMax = 900.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 50.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tuint(4) m_ColorMin = ( 242, 140, 0, 255 )\n\tuint(4) m_ColorMax = ( 195, 33, 33, 255 )\n\tuint(4) m_TintMin = ( 0, 0, 0, 0 )\n\tuint(4) m_TintMax = ( 255, 255, 255, 255 )\n\tfloat m_flTintPerc = 0.000000\n\tfloat m_flUpdateThreshold = 32.000000\n\tint m_nTintCP = 0\n\tint m_nFieldOutput = 6\n\tsymbol m_nTintBlendMode = 0\n\tfloat m_flLightAmplification = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.800000\n\tfloat m_fLifetimeMax = 1.600000\n\tfloat m_fLifetimeRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMinLength = 0.040000\n\tfloat m_flMaxLength = 0.060000\n\tfloat m_flLengthRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 32\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_explosion/basic_explosion_burst.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 10.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 0.200000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 4\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinBox_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomLifeTime_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_fDrag = 0.000000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 1.000000\n\tfloat m_flStartScale = 0.200000\n\tfloat m_flEndScale = 1.000000\n\tbool m_bEaseInAndOut = false\n\tfloat m_flBias = 0.600000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.800000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_nSequenceOverride = -1\n\tint m_nOrientationType = 0\n\tint m_nOrientationControlPoint = -1\n\tfloat m_flMinSize = 0.000000\n\tfloat m_flMaxSize = 5000.000000\n\tfloat m_flStartFadeSize = 100000000.000000\n\tfloat m_flEndFadeSize = 200000000.000000\n\tfloat m_flStartFadeDot = 1.000000\n\tfloat m_flEndFadeDot = 2.000000\n\tfloat m_flDepthBias = 0.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tfloat m_flCenterXOffset = 0.000000\n\tfloat m_flCenterYOffset = 0.000000\n\tfloat m_flZoomAmount0 = 1.000000\n\tfloat m_flZoomAmount1 = 1.000000\n\tbool m_bDistanceAlpha = false\n\tbool m_bSoftEdges = false\n\tfloat m_flEdgeSoftnessStart = 0.600000\n\tfloat m_flEdgeSoftnessEnd = 0.500000\n\tbool m_bOutline = false\n\tuint(4) m_OutlineColor = ( 255, 255, 255, 255 )\n\tint m_nOutlineAlpha = 255\n\tfloat m_flOutlineStart0 = 0.500000\n\tfloat m_flOutlineStart1 = 0.600000\n\tfloat m_flOutlineEnd0 = 0.700000\n\tfloat m_flOutlineEnd1 = 0.800000\n\tfloat m_flAnimationRate = 0.100000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = false\n\tfloat m_flSelfIllumAmount = 0.750000\n\tfloat m_flDiffuseAmount = 0.500000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = true\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials/particle/particle_ring_wave_8.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tbool m_bUseAlphaTestWindow = false\n\tbool m_bUseTexture = false\n\tfloat m_flRadiusScale = 2.000000\n\tfloat m_flAlphaScale = 4.000000\n\tfloat m_flLightDistance = 0.000000\n\tfloat m_flStartFalloff = 0.500000\n\tfloat m_flDistanceFalloff = 0.000000\n\tfloat m_flSpotFoV = 60.000000\n\tuint(4) m_ColorScale = ( 255, 215, 45, 255 )\n\tint m_nAlphaTestPointField = 13\n\tint m_nAlphaTestRangeField = 23\n\tint m_nAlphaTestSharpnessField = 18\n\tstring m_hTexture = \"materials/particle/particle_ring_wave_8.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinBox C_INIT_CreateWithinBox_0\n{\n\tfloat(3) m_vecMin = ( -8.000000, -8.000000, 0.000000 )\n\tfloat(3) m_vecMax = ( 8.000000, 8.000000, 8.000000 )\n\tint m_nControlPointNumber = 0\n\tbool m_bLocalSpace = false\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tuint(4) m_ColorMin = ( 248, 205, 23, 255 )\n\tuint(4) m_ColorMax = ( 249, 117, 35, 255 )\n\tuint(4) m_TintMin = ( 0, 0, 0, 0 )\n\tuint(4) m_TintMax = ( 255, 255, 255, 255 )\n\tfloat m_flTintPerc = 0.000000\n\tfloat m_flUpdateThreshold = 32.000000\n\tint m_nTintCP = 0\n\tint m_nFieldOutput = 6\n\tsymbol m_nTintBlendMode = 0\n\tfloat m_flLightAmplification = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMin = 0.000000\n\tfloat m_flDegreesMax = 360.000000\n\tfloat m_flDegrees = 0.000000\n\tint m_nFieldOutput = 4\n\tfloat m_flRotationRandExponent = 1.000000\n\tbool m_bRandomlyFlipDirection = true\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tfloat m_flPercent = 0.500000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 40.000000\n\tfloat m_flRadiusMax = 120.000000\n\tfloat m_flRadiusRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nFieldOutput = 7\n\tint m_nAlphaMin = 40\n\tint m_nAlphaMax = 80\n\tfloat m_flAlphaRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.180000\n\tfloat m_fLifetimeMax = 0.240000\n\tfloat m_fLifetimeRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_explosion/basic_explosion_flash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 160.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 0.120000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 4\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_fDrag = 0.000000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 1.000000\n\tfloat m_flStartScale = 0.500000\n\tfloat m_flEndScale = 1.000000\n\tbool m_bEaseInAndOut = false\n\tfloat m_flBias = 0.500000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.900000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_nSequenceOverride = -1\n\tint m_nOrientationType = 0\n\tint m_nOrientationControlPoint = -1\n\tfloat m_flMinSize = 0.000000\n\tfloat m_flMaxSize = 5000.000000\n\tfloat m_flStartFadeSize = 100000000.000000\n\tfloat m_flEndFadeSize = 200000000.000000\n\tfloat m_flStartFadeDot = 1.000000\n\tfloat m_flEndFadeDot = 2.000000\n\tfloat m_flDepthBias = 0.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tfloat m_flCenterXOffset = 0.000000\n\tfloat m_flCenterYOffset = 0.000000\n\tfloat m_flZoomAmount0 = 1.000000\n\tfloat m_flZoomAmount1 = 1.000000\n\tbool m_bDistanceAlpha = false\n\tbool m_bSoftEdges = false\n\tfloat m_flEdgeSoftnessStart = 0.600000\n\tfloat m_flEdgeSoftnessEnd = 0.500000\n\tbool m_bOutline = false\n\tuint(4) m_OutlineColor = ( 255, 255, 255, 255 )\n\tint m_nOutlineAlpha = 255\n\tfloat m_flOutlineStart0 = 0.500000\n\tfloat m_flOutlineStart1 = 0.600000\n\tfloat m_flOutlineEnd0 = 0.700000\n\tfloat m_flOutlineEnd1 = 0.800000\n\tfloat m_flAnimationRate = 0.100000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = false\n\tfloat m_flSelfIllumAmount = 0.000000\n\tfloat m_flDiffuseAmount = 1.000000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = false\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials/particle/basic_glow.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tuint(4) m_ColorMin = ( 255, 236, 147, 255 )\n\tuint(4) m_ColorMax = ( 255, 178, 85, 255 )\n\tuint(4) m_TintMin = ( 0, 0, 0, 0 )\n\tuint(4) m_TintMax = ( 255, 255, 255, 255 )\n\tfloat m_flTintPerc = 0.000000\n\tfloat m_flUpdateThreshold = 32.000000\n\tint m_nTintCP = 0\n\tint m_nFieldOutput = 6\n\tsymbol m_nTintBlendMode = 0\n\tfloat m_flLightAmplification = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 0.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 0\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 0.000000\n\tfloat m_fSpeedMax = 0.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_explosion/basic_explosion_readme.txt",
    "content": "basic_explosion should serve as a good starting point for effects that emit instantaneously and disappear after a short time (including explosions.)\n\nThe effect hierarchy looks like this:\n\nbasic_explosion (actually just a container for the child effects)\n  -basic_explosion_bits (small trails that fly away from the core and then fall from gravity)\n  -basic_explosion_burst (a turbulent wave of energy)\n  -basic_explosion_flash (a simple, fast flash of light to lend some extra visual punch)\n\nUnlike basic_projectile, the components of this effect are much more freeform.  You could remove, add, or modify any component and you'd still have a functioning one-shot instant-emission effect as long as you had at least one child effect making particles.\n\nThe main basic_explosion effect is an empty container in this case because this provides complete control over the sorting of effect components; if your effect doesn't require this, you could just as easily make one of the component effects the parent (basic_explosion_bits, for example) and then make the other two into children.\n\nNote that two of these sub-effects demonstrate the use of multiple renderers within a single effect - basic_explosion_bits (two trail renderers with two different textures) and basic_explosion_burst (a sprite renderer and a deferred light renderer.)"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_projectile/basic_projectile.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 48.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 0.000000\n\tint m_nConstantSequenceNumber = 6\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 4\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_MaxVelocity_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_SetChildControlPoints_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/basic_projectile/basic_projectile_explosion.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = true\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/basic_projectile/basic_projectile_trail.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/basic_projectile/basic_projectile_launch.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t}\n\t]\n\tbool m_bShouldSort = false\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_fDrag = 0.000000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_MaxVelocity C_OP_MaxVelocity_0\n{\n\tfloat m_flMaxVelocity = 600.000000\n\tint m_nOverrideCP = 2\n\tint m_nOverrideCPField = 0\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"Through the Movement Max Velocity op, projectiles get their velocity automatically via CP2 through code. IMPORTANT: It\\'s best not to modify this op for custom effects!\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = 1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetChildControlPoints C_OP_SetChildControlPoints_0\n{\n\tint m_nChildGroupID = 0\n\tint m_nFirstControlPoint = 3\n\tint m_nNumControlPoints = 1\n\tint m_nFirstSourcePoint = 0\n\tbool m_bSetOrientation = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"Sets up control points for the child effects below. IMPORTANT: It\\'s best not to modify this op for custom effects!\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 0.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 0\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 0.000000\n\tfloat m_fSpeedMax = 0.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"Emits a single \\\"master\\\" particle for the projectile. IMPORTANT: It\\'s best not to modify this op for custom effects!\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tfloat(3) m_vecComponentScale = ( 1.000000, 1.000000, 1.000000 )\n\tfloat m_fForceAmount = 1000000.000000\n\tfloat m_fFalloffPower = 0.000000\n\tint m_nControlPointNumber = 1\n\tint m_nScaleCP = -1\n\tint m_nScaleCPField = 0\n\tbool m_bScaleLocal = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"This Force Generator pulls the projectile effect toward its target (CP1). Though the force is set extraordinarily high, the effect\\'s speed is limited by the Movement Max Velocity op. IMPORTANT: It\\'s best not to modify this op for custom effects!\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_projectile/basic_projectile_explosion.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 5.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 1.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 32\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/basic_projectile/basic_projectile_explosion_flash.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t}\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n\tfloat m_fDrag = 0.000000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 1.000000\n\tfloat m_flStartScale = 1.000000\n\tfloat m_flEndScale = 0.000000\n\tbool m_bEaseInAndOut = false\n\tfloat m_flBias = 0.400000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_nSequenceOverride = -1\n\tint m_nOrientationType = 0\n\tint m_nOrientationControlPoint = -1\n\tfloat m_flMinSize = 0.000000\n\tfloat m_flMaxSize = 5000.000000\n\tfloat m_flStartFadeSize = 100000000.000000\n\tfloat m_flEndFadeSize = 200000000.000000\n\tfloat m_flStartFadeDot = 1.000000\n\tfloat m_flEndFadeDot = 2.000000\n\tfloat m_flDepthBias = 0.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tfloat m_flCenterXOffset = 0.000000\n\tfloat m_flCenterYOffset = 0.000000\n\tfloat m_flZoomAmount0 = 1.000000\n\tfloat m_flZoomAmount1 = 1.000000\n\tbool m_bDistanceAlpha = false\n\tbool m_bSoftEdges = false\n\tfloat m_flEdgeSoftnessStart = 0.600000\n\tfloat m_flEdgeSoftnessEnd = 0.500000\n\tbool m_bOutline = false\n\tuint(4) m_OutlineColor = ( 255, 255, 255, 255 )\n\tint m_nOutlineAlpha = 255\n\tfloat m_flOutlineStart0 = 0.500000\n\tfloat m_flOutlineStart1 = 0.600000\n\tfloat m_flOutlineEnd0 = 0.700000\n\tfloat m_flOutlineEnd1 = 0.800000\n\tfloat m_flAnimationRate = 0.100000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = true\n\tfloat m_flSelfIllumAmount = 0.900000\n\tfloat m_flDiffuseAmount = 0.100000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = true\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials/particle/basic_glow.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 0.800000\n\tfloat m_fLifetimeRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 0.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 3\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 60.000000\n\tfloat m_fSpeedMax = 90.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 32.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 64.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 2.500000\n\tfloat m_flRadiusMax = 4.000000\n\tfloat m_flRadiusRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tuint(4) m_ColorMin = ( 255, 196, 0, 255 )\n\tuint(4) m_ColorMax = ( 193, 115, 10, 255 )\n\tuint(4) m_TintMin = ( 0, 0, 0, 0 )\n\tuint(4) m_TintMax = ( 255, 255, 255, 255 )\n\tfloat m_flTintPerc = 0.000000\n\tfloat m_flUpdateThreshold = 32.000000\n\tint m_nTintCP = 0\n\tint m_nFieldOutput = 6\n\tsymbol m_nTintBlendMode = 0\n\tfloat m_flLightAmplification = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 32\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_projectile/basic_projectile_explosion_flash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 70.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 1.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 4\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_fDrag = 0.000000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 1.000000\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flEndScale = 1.000000\n\tbool m_bEaseInAndOut = false\n\tfloat m_flBias = 0.500000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.800000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_nSequenceOverride = -1\n\tint m_nOrientationType = 0\n\tint m_nOrientationControlPoint = -1\n\tfloat m_flMinSize = 0.000000\n\tfloat m_flMaxSize = 5000.000000\n\tfloat m_flStartFadeSize = 100000000.000000\n\tfloat m_flEndFadeSize = 200000000.000000\n\tfloat m_flStartFadeDot = 1.000000\n\tfloat m_flEndFadeDot = 2.000000\n\tfloat m_flDepthBias = 0.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tfloat m_flCenterXOffset = 0.000000\n\tfloat m_flCenterYOffset = 0.000000\n\tfloat m_flZoomAmount0 = 1.000000\n\tfloat m_flZoomAmount1 = 1.000000\n\tbool m_bDistanceAlpha = false\n\tbool m_bSoftEdges = false\n\tfloat m_flEdgeSoftnessStart = 0.600000\n\tfloat m_flEdgeSoftnessEnd = 0.500000\n\tbool m_bOutline = false\n\tuint(4) m_OutlineColor = ( 255, 255, 255, 255 )\n\tint m_nOutlineAlpha = 255\n\tfloat m_flOutlineStart0 = 0.500000\n\tfloat m_flOutlineStart1 = 0.600000\n\tfloat m_flOutlineEnd0 = 0.700000\n\tfloat m_flOutlineEnd1 = 0.800000\n\tfloat m_flAnimationRate = 0.100000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = false\n\tfloat m_flSelfIllumAmount = 0.000000\n\tfloat m_flDiffuseAmount = 1.000000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = true\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials/particle/basic_glow.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.100000\n\tfloat m_fLifetimeMax = 0.150000\n\tfloat m_fLifetimeRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 0.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 3\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 0.000000\n\tfloat m_fSpeedMax = 0.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tuint(4) m_ColorMin = ( 255, 236, 0, 255 )\n\tuint(4) m_ColorMax = ( 253, 244, 134, 255 )\n\tuint(4) m_TintMin = ( 0, 0, 0, 0 )\n\tuint(4) m_TintMax = ( 255, 255, 255, 255 )\n\tfloat m_flTintPerc = 0.000000\n\tfloat m_flUpdateThreshold = 32.000000\n\tint m_nTintCP = 0\n\tint m_nFieldOutput = 6\n\tsymbol m_nTintBlendMode = 0\n\tfloat m_flLightAmplification = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_projectile/basic_projectile_launch.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 16\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 5.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 1.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 16\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_fDrag = 0.050000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 1.000000\n\tfloat m_flStartScale = 1.000000\n\tfloat m_flEndScale = 0.000000\n\tbool m_bEaseInAndOut = false\n\tfloat m_flBias = 0.500000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 )\n\tfloat(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMin = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tint m_nField = 0\n\tbool m_bProportional = true\n\tbool m_bProportionalOp = true\n\tbool m_bOffset = false\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flEndTime_min = 1.000000\n\tfloat m_flEndTime_max = 1.000000\n\tfloat m_flOscMult = 2.000000\n\tfloat m_flOscAdd = 0.500000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.300000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_nSequenceOverride = -1\n\tint m_nOrientationType = 0\n\tint m_nOrientationControlPoint = -1\n\tfloat m_flMinSize = 0.000000\n\tfloat m_flMaxSize = 5000.000000\n\tfloat m_flStartFadeSize = 100000000.000000\n\tfloat m_flEndFadeSize = 200000000.000000\n\tfloat m_flStartFadeDot = 1.000000\n\tfloat m_flEndFadeDot = 2.000000\n\tfloat m_flDepthBias = 0.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tfloat m_flCenterXOffset = 0.000000\n\tfloat m_flCenterYOffset = 0.000000\n\tfloat m_flZoomAmount0 = 1.000000\n\tfloat m_flZoomAmount1 = 1.000000\n\tbool m_bDistanceAlpha = false\n\tbool m_bSoftEdges = false\n\tfloat m_flEdgeSoftnessStart = 0.600000\n\tfloat m_flEdgeSoftnessEnd = 0.500000\n\tbool m_bOutline = false\n\tuint(4) m_OutlineColor = ( 255, 255, 255, 255 )\n\tint m_nOutlineAlpha = 255\n\tfloat m_flOutlineStart0 = 0.500000\n\tfloat m_flOutlineStart1 = 0.600000\n\tfloat m_flOutlineEnd0 = 0.700000\n\tfloat m_flOutlineEnd1 = 0.800000\n\tfloat m_flAnimationRate = 0.100000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = false\n\tfloat m_flSelfIllumAmount = 0.900000\n\tfloat m_flDiffuseAmount = 0.100000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = true\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials/particle/basic_glow.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 0.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 9\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 24.000000\n\tfloat m_fSpeedMax = 96.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.250000\n\tfloat m_fLifetimeMax = 0.500000\n\tfloat m_fLifetimeRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 8.000000\n\tfloat m_flRadiusMax = 14.000000\n\tfloat m_flRadiusRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tuint(4) m_ColorMin = ( 244, 232, 90, 255 )\n\tuint(4) m_ColorMax = ( 255, 196, 0, 255 )\n\tuint(4) m_TintMin = ( 0, 0, 0, 0 )\n\tuint(4) m_TintMax = ( 255, 255, 255, 255 )\n\tfloat m_flTintPerc = 0.000000\n\tfloat m_flUpdateThreshold = 32.000000\n\tint m_nTintCP = 0\n\tint m_nFieldOutput = 6\n\tsymbol m_nTintBlendMode = 0\n\tfloat m_flLightAmplification = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 8\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tfloat(3) m_vecComponentScale = ( 1.000000, 1.000000, 1.000000 )\n\tfloat m_fForceAmount = 1000.000000\n\tfloat m_fFalloffPower = 0.000000\n\tint m_nControlPointNumber = 1\n\tint m_nScaleCP = -1\n\tint m_nScaleCPField = 0\n\tbool m_bScaleLocal = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.250000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_projectile/basic_projectile_readme.txt",
    "content": "This basic_projectile effect is a good starting point for any custom effects that are treated as \"projectiles\" in the engine.  This includes many hero abilities and virtually all physical ranged attacks.\n\nThe effect hierarchy looks like this:\n\nbasic_projectile (master projectile)\n  -basic_projectile_launch (burst that plays when the projectile is first shot)\n  -basic_projectile_trail (visuals for the projectile while in flight)\n  -basic_projectile_explosion (burst that plays on the target when the projectile hits)\n    -basic_projectile_explosion_flash (a little extra flourish for the explosion)\n\nThis means that the game logic only calls one named effect (basic_projectile), and all of the other effects are called by their parent effect.  Basic_projectile doesn't actually contain any visuals on its own, but is instead used as an envelope to set up the logic for the child effects.\n\nProjectile effects have a specific setup in which they get a lot of important data from the engine via control points (CPs).  CP0 is only used as an emission point by basic_projectile itself; its child effects all emit from CP3, which is set by the top-level effect in the Operator \"Set child control points from particle positions\".\n\nCP1 is the projectile's target, and the effect gets its speed from CP2.\n\nThis is all important because it means that for projectiles, there are certain operators that SHOULD NOT BE MODIFIED when creating custom projectile effects.  Modifying or removing these runs the risk of completely breaking your effect's behavior.\n\nThe ops that shouldn't be changed are all in the base_projectile file:\n\n*Movement Max Velocity: Recieves the projectile's speed from the game engine and sets it.  (So even though it has a listed max velocity of 600, that value is being overridden by the projectile speed the effect is getting from the engine.\n*Set child control points from particle positions: Creates control points from which the child effects will emit.\n*emit_instantaneously: Emits a single master particle.\n*Pull towards control point: Responsible for the effect's movement toward its target.  The force is set extraordinarily high, but is limited by the Movement Max Velocity operator.\n\nThe remaining ops (Movement Basic, Lifespan Decay, and Position Within Sphere Random) are less subject to the special setup used for projectiles, but there shouldn't generally be any reason to modify them unless you know exactly what you're doing.\n\nIn most situations, the only things you'll want to change when using basic_projectile as a projectile effect template are the child effects.\n\nThat said, keep in mind that each child effect (except basic_projectile_explosion_flash) is doing an important job here - removing any of them (rather than simply modifying them) risks, at a minimum, making your projectile look weird and incomplete."
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_projectile/basic_projectile_trail.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 5.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 1.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 32\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_fDrag = 0.000000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 1.000000\n\tfloat m_flStartScale = 1.000000\n\tfloat m_flEndScale = 0.100000\n\tbool m_bEaseInAndOut = false\n\tfloat m_flBias = 0.500000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_exp = 1.000000\n\tfloat m_flEndTime_min = 0.100000\n\tfloat m_flEndTime_max = 0.600000\n\tfloat m_flEndTime_exp = 1.000000\n\tfloat m_flRange = 0.000000\n\tfloat m_flJumpThreshold = 512.000000\n\tfloat m_flPrevPosScale = 1.000000\n\tbool m_bLockRot = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.200000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.200000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_nSequenceOverride = -1\n\tint m_nOrientationType = 0\n\tint m_nOrientationControlPoint = -1\n\tfloat m_flMinSize = 0.000000\n\tfloat m_flMaxSize = 5000.000000\n\tfloat m_flStartFadeSize = 100000000.000000\n\tfloat m_flEndFadeSize = 200000000.000000\n\tfloat m_flStartFadeDot = 1.000000\n\tfloat m_flEndFadeDot = 2.000000\n\tfloat m_flDepthBias = 0.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tfloat m_flCenterXOffset = 0.000000\n\tfloat m_flCenterYOffset = 0.000000\n\tfloat m_flZoomAmount0 = 1.000000\n\tfloat m_flZoomAmount1 = 1.000000\n\tbool m_bDistanceAlpha = false\n\tbool m_bSoftEdges = false\n\tfloat m_flEdgeSoftnessStart = 0.600000\n\tfloat m_flEdgeSoftnessEnd = 0.500000\n\tbool m_bOutline = false\n\tuint(4) m_OutlineColor = ( 255, 255, 255, 255 )\n\tint m_nOutlineAlpha = 255\n\tfloat m_flOutlineStart0 = 0.500000\n\tfloat m_flOutlineStart1 = 0.600000\n\tfloat m_flOutlineEnd0 = 0.700000\n\tfloat m_flOutlineEnd1 = 0.800000\n\tfloat m_flAnimationRate = 0.100000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = false\n\tfloat m_flSelfIllumAmount = 0.900000\n\tfloat m_flDiffuseAmount = 0.000000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = true\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials/particle/basic_glow.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.150000\n\tfloat m_fLifetimeMax = 0.350000\n\tfloat m_fLifetimeRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 3.000000\n\tfloat m_flRadiusMax = 8.000000\n\tfloat m_flRadiusRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 0.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 3\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 0.000000\n\tfloat m_fSpeedMax = 2.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecAbsVal = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_vecAbsValInv = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_vecOffsetLoc = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_flOffset = 0.000000\n\tfloat(3) m_vecOutputMin = ( -34.000000, -34.000000, -34.000000 )\n\tfloat(3) m_vecOutputMax = ( 34.000000, 34.000000, 34.000000 )\n\tfloat m_flNoiseScale = 3.000000\n\tfloat m_flNoiseScaleLoc = 4.000000\n\tint m_nControlPointNumber = 0\n\tbool m_bLocalSpace = false\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tuint(4) m_ColorMin = ( 193, 115, 10, 255 )\n\tuint(4) m_ColorMax = ( 255, 196, 0, 255 )\n\tuint(4) m_TintMin = ( 0, 0, 0, 0 )\n\tuint(4) m_TintMax = ( 255, 255, 255, 255 )\n\tfloat m_flTintPerc = 0.000000\n\tfloat m_flUpdateThreshold = 32.000000\n\tint m_nTintCP = 0\n\tint m_nFieldOutput = 6\n\tsymbol m_nTintBlendMode = 0\n\tfloat m_flLightAmplification = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 0.000000\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEmitRate = 64.000000\n\tfloat m_flEmissionScale = 0.000000\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tbool m_bScalePerParticle = false\n\tbool m_bInitFromKilledParentParticles = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_rope/basic_rope.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -32.000000, -32.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 32.000000, 32.000000, 256.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 64.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 8.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 32\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_SetSingleControlPointPosition_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateSequentialPath_0,\n\t\t&C_INIT_RandomRadius_2,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_8,\n\t\t&C_INIT_RemapParticleCountToScalar_22\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0\n{\n\tbool m_bUseWorldLocation = false\n\tbool m_bSetOnce = false\n\tint m_nCP1 = 1\n\tfloat(3) m_vecCP1Pos = ( 0.000000, 0.000000, 512.000000 )\n\tint m_nHeadLocation = 0\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flRadiusTaper = 1.000000\n\tint m_nMinTesselation = 1\n\tint m_nMaxTesselation = 128\n\tfloat m_flTessScale = 1.000000\n\tfloat m_flTextureVWorldSize = 200.000000\n\tfloat m_flTextureVScrollRate = 800.000000\n\tfloat m_flTextureVOffset = 0.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tint m_nOrientationType = 0\n\tint m_nScaleCP1 = -1\n\tint m_nScaleCP2 = -1\n\tfloat m_flScaleVSizeByControlPointDistance = 0.000000\n\tfloat m_flScaleVScrollByControlPointDistance = 0.000000\n\tfloat m_flScaleVOffsetByControlPointDistance = 0.000000\n\tbool m_bDrawAsOpaque = false\n\tbool m_bGenerateNormals = false\n\tbool m_bReverseOrder = false\n\tfloat m_flRadiusScale = 1.000000\n\tfloat m_flAnimationRate = 0.100000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = false\n\tfloat m_flSelfIllumAmount = 0.800000\n\tfloat m_flDiffuseAmount = 0.200000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = true\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials/particle/basic_rope_energy.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0\n{\n\tfloat m_fMaxDistance = 0.000000\n\tfloat m_flNumToAssign = 16.000000\n\tbool m_bLoop = true\n\tbool m_bCPPairs = false\n\tbool m_bSaveOffset = false\n\tCPathParameters m_PathParams = CPathParameters\n\t{\n\t\tint m_nStartControlPointNumber = 0\n\t\tint m_nEndControlPointNumber = 1\n\t\tint m_nBulgeControl = 0\n\t\tfloat m_flBulge = 0.000000\n\t\tfloat m_flMidPoint = 0.500000\n\t}\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_2\n{\n\tfloat m_flRadiusMin = 55.000000\n\tfloat m_flRadiusMax = 70.000000\n\tfloat m_flRadiusRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tint m_nFieldOutput = 7\n\tint m_nInputMin = 0\n\tint m_nInputMax = 3\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tfloat m_flOutputMin = 0.000000\n\tfloat m_flOutputMax = 1.000000\n\tbool m_bScaleInitialRange = false\n\tbool m_bActiveRange = true\n\tbool m_bInvert = false\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_8\n{\n\tint m_nFieldOutput = 7\n\tint m_nInputMin = 4\n\tint m_nInputMax = 11\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 1.000000\n\tbool m_bScaleInitialRange = false\n\tbool m_bActiveRange = true\n\tbool m_bInvert = false\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_22\n{\n\tint m_nFieldOutput = 7\n\tint m_nInputMin = 12\n\tint m_nInputMax = 15\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 0.000000\n\tbool m_bScaleInitialRange = false\n\tbool m_bActiveRange = true\n\tbool m_bInvert = false\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 16\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_rope/basic_rope_readme.txt",
    "content": "basic_rope demonstrates a single non-decaying static rope effect whose texture scrolls rapidly to suggest turbulent energy.  It has no child effects.\n\nThe only operator is \"Set Single Control Point Position\", which sets CP1 512 units above CP0.  We do this because the Position initializer we're using, \"Position Along Path Sequential\", requires two control points in order to define its path.\n\nIn \"Position Along Path Sequential\", we set up the path and assign it 16 particles from start to end, which matches the spawn count in our emitter.\n\nThe Rope Renderer's \"texture V Scroll Rate\" is set pretty high - 800 - to get simple visual turbulence by scrolling a texture with painted-in noise.\n\nThere are a few non-basic initializers - a cluster of three \"Remap Particle Count to Scalar\" inits.  Because it's an instant effect, and the particles are sequential along a line, we know exactly which particle will be where along the line.  That means we can very efficiently initialize groups of particles with specific attributes.\n\nIn this case, I wanted to soften the beginning and end of the rope, so I'm remapping the particle count to the alpha.  The key to making this work is the \"only active within specified input range\" Property of the \"Remap Particle Count to Scalar\" init.  Normally the minimum and maximum values would clamp beyond their range, but with this Property switched on, we're telling the initializer to ignore input values outside the locally-specified range.\n\nThat means that with our three Remap inits, we're telling:\n\n1. Particles 0-3 to interpolate from alpha 0 to alpha 1.0.\n2. Particles 4-11 to interpolate from alpha 1.0 to alpha 1.0 (that is, to be full alpha within this range.)\n3. Particles 12-15 to interpolate from alpha 1.0 back down to 0.\n\nIf we wanted this effect to decay after 4 seconds, and alpha-fade in and out, we could retain our soft ends by switching the particle count remappers to \"Alpha Alternate\" instead of \"Alpha\".\n\n"
  },
  {
    "path": "content/dota_addons/barebones/particles/basic_trail/basic_trail.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 2.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 2.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tbool m_bDrawThroughLeafSystem = true\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 64\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -400.000000 )\n\tfloat m_fDrag = 0.030000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tuint(4) m_ColorFade = ( 255, 0, 0, 255 )\n\tfloat m_flFadeStartTime = 0.250000\n\tfloat m_flFadeEndTime = 1.000000\n\tint m_nFieldOutput = 6\n\tbool m_bEaseInOut = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.400000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_nOrientationType = 0\n\tint m_nOrientationControlPoint = -1\n\tfloat m_flMinSize = 0.000000\n\tfloat m_flMaxSize = 5000.000000\n\tfloat m_flStartFadeSize = 100000000.000000\n\tfloat m_flEndFadeSize = 200000000.000000\n\tfloat m_flMaxLength = 2000.000000\n\tfloat m_flMinLength = 0.000000\n\tbool m_bIgnoreDT = false\n\tfloat m_flConstrainRadiusToLengthRatio = 1.000000\n\tfloat m_flLengthScale = 1.000000\n\tfloat m_flRadiusTaper = 1.000000\n\tfloat m_flLengthFadeInTime = 0.000000\n\tfloat(4) m_vEndTrailTintFactor = ( 1.000000, 1.000000, 1.000000, 1.000000 )\n\tint m_nHorizCropField = 19\n\tint m_nVertCropField = 19\n\tfloat m_flRadiusScale = 1.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tfloat m_flAnimationRate = 0.100000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = false\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flDiffuseAmount = 0.000000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = true\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials/particle/basic_trail.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 8.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 0\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 260.000000\n\tfloat m_fSpeedMax = 310.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 20.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tuint(4) m_ColorMin = ( 255, 217, 0, 255 )\n\tuint(4) m_ColorMax = ( 255, 243, 65, 255 )\n\tuint(4) m_TintMin = ( 0, 0, 0, 0 )\n\tuint(4) m_TintMax = ( 255, 255, 255, 255 )\n\tfloat m_flTintPerc = 0.000000\n\tfloat m_flUpdateThreshold = 32.000000\n\tint m_nTintCP = 0\n\tint m_nFieldOutput = 6\n\tsymbol m_nTintBlendMode = 0\n\tfloat m_flLightAmplification = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 100\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/damage_flash_b_frostivus.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flStartScale = 0.500000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.150000\n\tfloat m_fLifetimeMin = 0.100000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMin = 24.000000\n\tfloat m_fSpeedMax = 48.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 32.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 64.000000 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 160.000000\n\tfloat m_flRadiusMax = 134.000000\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 100.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 3\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/damage_flash_big_frostivus.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 8\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( -50.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 50.000000, 300.000000, 1000.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 254, 255, 143, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/damage_flash_b_frostivus.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/damage_flash_c_frostivus.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/damage_flash_d_frostivus.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tfloat m_flStartFadeSize = 0.475000\n\tfloat m_flEndFadeSize = 0.550000\n\tfloat m_flMaxSize = 0.650000\n\tstring m_hTexture = \"materials\\\\particle\\\\water_splash\\\\water_splash.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 3.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 3.000000\n\tfloat m_flEndScale = 0.250000\n\tfloat m_flBias = 0.240000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime_max = 0.200000\n\tfloat m_flEndTime_min = 0.100000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 176, 178, 126, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.175000\n\tfloat m_fLifetimeMax = 0.350000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 20.000000\n\tfloat m_flRadiusMax = 22.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fRadiusMax = 12.000000\n\tfloat m_fSpeedMax = 350.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 20.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMax = ( 34.000000, 34.000000, 34.000000 )\n\tfloat(3) m_vecOutputMin = ( -34.000000, -34.000000, -34.000000 )\n\tfloat m_flNoiseScaleLoc = 4.000000\n\tfloat m_flNoiseScale = 3.000000\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 8\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 229, 206, 50, 255 )\n\tint(4) m_ColorMax = ( 205, 178, 0, 255 )\n\tint m_nFieldOutput = 22\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 100.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 8\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/damage_flash_c_frostivus.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 1\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\anam_white.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusScale = 0.750000\n\tfloat m_flAlphaScale = 4.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\anam_white.vtex\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.000000\n\tfloat m_flEndScale = 4.000000\n\tfloat m_flBias = 0.750000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 255, 241, 143, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.170000\n\tfloat m_fLifetimeMax = 0.175000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 64.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 32.000000 )\n\tfloat m_fSpeedMax = 48.000000\n\tfloat m_fSpeedMin = 24.000000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 122.000000\n\tfloat m_flRadiusMin = 104.000000\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 100.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/damage_flash_d_frostivus.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 1\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 254, 255, 143, 200 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_ring_pulled.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.850000\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flStartScale = 0.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.175000\n\tfloat m_fLifetimeMin = 0.170000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMin = 24.000000\n\tfloat m_fSpeedMax = 48.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 32.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 64.000000 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 32.000000\n\tfloat m_flRadiusMax = 75.000000\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 100.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_explosion.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 2.000000\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tint m_nConstantSequenceNumber = 3\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_OffsetVectorToVector_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 0\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flMaxLength = 128.000000\n\tbool m_bIgnoreDT = true\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.250000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.100000\n\tfloat m_fLifetimeMin = 0.100000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 24.000000\n\tfloat m_flRadiusMin = 8.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 2\n\tfloat(3) m_vecOutputMin = ( -700.000000, -700.000000, -700.000000 )\n\tfloat(3) m_vecOutputMax = ( 700.000000, 700.000000, 700.000000 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 32\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = 700.000000\n\tfloat m_fFalloffPower = 0.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_explosion_flash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 127, 223, 254, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_base_attack_explosion_flash_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_base_attack_explosion.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.500000\n\tfloat m_flEndScale = 3.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.850000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.100000\n\tfloat m_fLifetimeMax = 0.150000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 330.000000, 0.000000, 64.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 130.000000, 0.000000, 32.000000 )\n\tfloat m_fSpeedMax = 48.000000\n\tfloat m_fSpeedMin = 24.000000\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 90.000000\n\tfloat m_flRadiusMin = 80.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 3\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_explosion_flash_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tbool m_bMod2X = true\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_modulate_03.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 1.800000\n\tfloat m_flStartScale = 0.500000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.850000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.200000\n\tfloat m_fLifetimeMin = 0.180000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMin = 24.000000\n\tfloat m_fSpeedMax = 48.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 32.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 64.000000 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 20.000000\n\tfloat m_flRadiusMax = 24.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 3\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_launch.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tint m_nInitialParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_OscillateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tbool m_bMod2X = true\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_modulate_02.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndFadeInTime = 0.125000\n\tfloat m_flStartFadeOutTime = 0.750000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartScale = 2.000000\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 )\n\tfloat(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMin = 24.000000\n\tfloat m_fSpeedMax = 96.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.250000\n\tfloat m_fLifetimeMax = 0.500000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 8.000000\n\tfloat m_flRadiusMin = 4.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 0, 130, 173, 255 )\n\tint(4) m_ColorMin = ( 0, 50, 67, 255 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 32\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 1\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_fForceAmount = 1000.000000\n\tfloat m_flOpEndFadeOutTime = 0.250000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_trail.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 0, 47, 90, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InheritVelocity_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_smoke_01.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 999.999939\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.250000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartTime = 0.500000\n\tfloat m_flBias = 0.750000\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime_max = 0.100000\n\tint m_nControlPointNumber = 5\n\tfloat m_flEndTime_min = 0.100000\n\tfloat m_flStartTime_max = 0.050000\n\tfloat m_flStartTime_min = 0.050000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.400000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = -12.000000\n\tfloat m_flEndTime = 99999.000000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.350000\n\tfloat m_fLifetimeMax = 0.350000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 14.000000\n\tfloat m_flRadiusMax = 14.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 5\n}\n\nC_INIT_InheritVelocity C_INIT_InheritVelocity_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 5\n\tfloat m_flVelocityScale = 0.010000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMax = 148\n\tint m_nAlphaMin = 148\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 32.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_trail_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 99, 166, 250, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_DistanceToCP_0,\n\t\t&C_OP_SetControlPointPositions_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InheritVelocity_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RemapScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_base_attack_trail.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 2.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_smoke_01.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 999.999939\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.250000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartTime = 0.500000\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime_min = 0.050000\n\tfloat m_flStartTime_max = 0.050000\n\tfloat m_flEndTime_min = 0.100000\n\tint m_nControlPointNumber = 5\n\tfloat m_flEndTime_max = 0.100000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.900000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -12.000000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_DistanceToCP C_OP_DistanceToCP_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n\tfloat m_flInputMin = 12.000000\n\tfloat m_flInputMax = 48.000000\n\tint m_nFieldOutput = 16\n\tint m_nStartCP = 5\n}\n\nC_OP_SetControlPointPositions C_OP_SetControlPointPositions_0\n{\n\tstring m_Notes = \"\"\n\tint m_nHeadLocation = 3\n\tfloat(3) m_vecCP4Pos = ( -32.000000, 0.000000, 0.000000 )\n\tint m_nCP4 = 6\n\tfloat(3) m_vecCP3Pos = ( -24.000000, 0.000000, 0.000000 )\n\tint m_nCP3 = 6\n\tfloat(3) m_vecCP2Pos = ( -24.000000, 0.000000, 0.000000 )\n\tint m_nCP2 = 6\n\tfloat(3) m_vecCP1Pos = ( -40.000000, 0.000000, 0.000000 )\n\tint m_nCP1 = 5\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.300000\n\tfloat m_fLifetimeMin = 0.300000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 21.000000\n\tfloat m_flRadiusMin = 21.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 5\n}\n\nC_INIT_InheritVelocity C_INIT_InheritVelocity_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flVelocityScale = 0.010000\n\tint m_nControlPointNumber = 5\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 24\n\tint m_nAlphaMax = 24\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 0.100000\n\tfloat m_flInputMax = 0.100000\n\tbool m_bScaleInitialRange = true\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 32.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_explosion.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 2.000000\n\tint m_nConstantSequenceNumber = 3\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_OffsetVectorToVector_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_frost_arrow_explosion_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_frost_arrow_explosion_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_frost_arrow_explosion_d.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_frost_arrow_explosion_e.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 0\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tstring m_Notes = \"\"\n\tbool m_bIgnoreDT = true\n\tfloat m_flMaxLength = 100.000000\n\tfloat m_flLengthFadeInTime = 0.200000\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.250000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartTime = 0.500000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.200000\n\tfloat m_fLifetimeMax = 0.200000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 440.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 220.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 8.000000\n\tfloat m_flRadiusMax = 48.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMax = ( 700.000000, 700.000000, 700.000000 )\n\tfloat(3) m_vecOutputMin = ( -700.000000, -700.000000, -700.000000 )\n\tint m_nFieldOutput = 2\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 32\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_fForceAmount = 700.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_explosion_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 256\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_OscillateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate2 = 0.100000\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.100000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.250000\n\tfloat m_fLifetimeMin = 0.200000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 78.000000\n\tfloat m_flRadiusMin = 40.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_fRadiusMax = 4.000000\n\tfloat m_fSpeedMax = 1000.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 240.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 330.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 105, 165, 255, 255 )\n\tint(4) m_ColorMax = ( 209, 238, 255, 255 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 3.000000\n\tfloat(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 )\n\tfloat(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 )\n\tfloat m_flNoiseScaleLoc = 5.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 22\n\tint(4) m_ColorMax = ( 150, 236, 255, 255 )\n\tint(4) m_ColorMin = ( 50, 84, 183, 255 )\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmissionDuration = 0.100000\n\tfloat m_flEmitRate = 400.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_explosion_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 256\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYaw_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tfloat m_flMinSize = 0.000750\n\tfloat m_flMaxSize = 0.002500\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate2 = 0.100000\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.250000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -800.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.600000\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 )\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flEndTime_min = 0.500000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeRandExponent = 15.000000\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.100000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 4.000000\n\tfloat m_flRadiusMin = 0.250000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_fRadiusMax = 4.000000\n\tfloat m_fSpeedMin = 500.000000\n\tfloat m_fSpeedMax = 900.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 320.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 430.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 105, 165, 255, 255 )\n\tint(4) m_ColorMax = ( 209, 238, 255, 255 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 3.000000\n\tfloat(3) m_vecOutputMax = ( 632.000000, 632.000000, 632.000000 )\n\tfloat(3) m_vecOutputMin = ( -632.000000, -632.000000, -632.000000 )\n\tfloat m_flNoiseScaleLoc = 0.100000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 22\n\tint(4) m_ColorMax = ( 150, 236, 255, 255 )\n\tint(4) m_ColorMin = ( 50, 84, 183, 255 )\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 63\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_explosion_d.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 256\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_RampScalarSpline_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_RandomColor_4\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t&C_OP_ConstrainDistance_0\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n\tfloat m_flAnimationRate2 = 0.100000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -800.000000 )\n\tfloat m_fDrag = 0.100000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.500000\n\tfloat m_flBias = 0.350000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 )\n\tfloat(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n}\n\nC_OP_RampScalarSpline C_OP_RampScalarSpline_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.250000\n\tbool m_bEaseOut = true\n\tfloat m_flEndTime_max = 2.000000\n\tfloat m_flEndTime_min = 2.000000\n\tfloat m_RateMax = 24.000000\n\tfloat m_RateMin = -24.000000\n\tint m_nField = 4\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.100000\n\tfloat m_fLifetimeMax = 0.600000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusRandExponent = 3.000000\n\tfloat m_flRadiusMin = 0.250000\n\tfloat m_flRadiusMax = 6.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 372.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 232.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 190.000000\n\tfloat m_fRadiusMax = 3.000000\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 228, 245, 255, 255 )\n\tint(4) m_ColorMin = ( 80, 150, 255, 255 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScaleLoc = 5.000000\n\tfloat(3) m_vecOutputMin = ( 512.000000, 512.000000, 512.000000 )\n\tfloat(3) m_vecOutputMax = ( -512.000000, -512.000000, -512.000000 )\n\tfloat m_flNoiseScale = 3.000000\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 63\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 97, 122, 194, 255 )\n\tint(4) m_ColorMax = ( 150, 236, 255, 255 )\n\tint m_nFieldOutput = 22\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_4\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 122, 211, 248, 255 )\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmissionDuration = 0.100000\n\tfloat m_flEmitRate = 800.000000\n}\n\nC_OP_ConstrainDistance C_OP_ConstrainDistance_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_fMaxDistance = 32.000000\n\tfloat m_flOpEndFadeOutTime = 0.100000\n\tfloat m_flOpStartFadeOutTime = 0.100000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_explosion_e.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_MaxVelocity_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_RampScalarSpline_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomSecondSequence_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RingWave_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flZoomRate1 = 2.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tstring m_hTexture = \"materials\\\\particle\\\\vistasmokev1\\\\vistasmokev1.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 2.000000\n\tfloat m_flAnimationRate2 = 0.500000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 800.000000 )\n\tfloat m_fDrag = 0.250000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 3.000000\n\tfloat m_flBias = 0.400000\n}\n\nC_OP_MaxVelocity C_OP_MaxVelocity_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMaxVelocity = 764.000000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeEndTime = 0.700000\n\tint(4) m_ColorFade = ( 136, 186, 191, 255 )\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 )\n\tfloat(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.250000, 0.250000, 0.250000 )\n\tfloat(3) m_FrequencyMax = ( 2.000000, 2.000000, 2.000000 )\n\tfloat m_flStartTime_min = 1.000000\n\tfloat m_flStartTime_max = 1.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_OP_RampScalarSpline C_OP_RampScalarSpline_0\n{\n\tstring m_Notes = \"\"\n\tint m_nField = 4\n\tfloat m_RateMin = -3.000000\n\tfloat m_RateMax = 3.000000\n\tbool m_bEaseOut = true\n\tfloat m_flBias = 0.750000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.300000\n\tfloat m_fLifetimeMin = 0.200000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 22.000000\n\tfloat m_flRadiusMin = 10.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 0, 130, 173, 255 )\n\tint(4) m_ColorMin = ( 177, 236, 255, 255 )\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 1\n}\n\nC_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMin = 49\n\tint m_nSequenceMax = 59\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 24\n\tint m_nAlphaMax = 40\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bXYVelocityOnly = false\n\tint m_nControlPointNumber = 3\n\tfloat m_flInitialRadius = 2.000000\n\tfloat m_flInitialSpeedMin = 628.000000\n\tfloat m_flInitialSpeedMax = 892.000000\n\tbool m_bEvenDistribution = true\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 32\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = -700.000000\n\tfloat m_fFalloffPower = 0.500000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_launch.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 256\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_RampScalarLinear_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_InheritVelocity_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomColor_2\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_frost_arrow_launch_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate2 = 0.100000\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.250000\n\tfloat m_flEndScale = 0.500000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 )\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_RateMax = 32.000000\n\tfloat m_RateMin = -32.000000\n\tint m_nField = 4\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.300000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 8.000000\n\tfloat m_flRadiusMin = 0.250000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMax = 90.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 32.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 72.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 80, 150, 255, 255 )\n\tint(4) m_ColorMax = ( 228, 245, 255, 255 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 3.000000\n\tfloat(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 )\n\tfloat(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 )\n\tfloat m_flNoiseScaleLoc = 5.000000\n}\n\nC_INIT_InheritVelocity C_INIT_InheritVelocity_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flVelocityScale = 0.100000\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 63\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 22\n\tint(4) m_ColorMax = ( 150, 236, 255, 255 )\n\tint(4) m_ColorMin = ( 50, 84, 183, 255 )\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 300.000000\n\tfloat m_flEmissionDuration = 0.100000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_launch_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 256\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_OscillateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n\tfloat m_flAnimationRate2 = 0.100000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.650000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 )\n\tfloat(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.153000\n\tfloat m_fLifetimeMax = 0.200000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 64.000000\n\tfloat m_flRadiusMax = 128.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMax = 400.000000\n\tfloat m_fRadiusMax = 4.000000\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 209, 238, 255, 255 )\n\tint(4) m_ColorMin = ( 105, 165, 255, 255 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScaleLoc = 5.000000\n\tfloat(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 )\n\tfloat(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 )\n\tfloat m_flNoiseScale = 3.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 50, 84, 183, 255 )\n\tint(4) m_ColorMax = ( 150, 236, 255, 255 )\n\tint m_nFieldOutput = 22\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 12\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_model.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 0.800000\n\tint(4) m_ConstantColor = ( 217, 246, 255, 255 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_InheritFromParentParticles_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_RampScalarLinearSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_EconSlotName = \"\"\n\tstring m_Notes = \"\"\n\tstring m_ActivityName = \"\"\n\tstring m_hOverrideMaterial = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/projectiles/drow_arrow.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.200000\n}\n\nC_OP_InheritFromParentParticles C_OP_InheritFromParentParticles_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 21\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tint m_nField = 4\n\tfloat m_Rate = 14.000000\n\tfloat m_flEndTime = 10000000000.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.100000\n\tfloat m_fLifetimeMin = 0.100000\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat(3) m_OffsetMin = ( -40.000000, 0.000000, 0.000000 )\n\tfloat(3) m_OffsetMax = ( -40.000000, 0.000000, 0.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_ice_trail.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 256\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint m_nConstantSequenceNumber = 2\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_InheritVelocity_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomColor_2\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_ice_trail_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_ice_trail_c.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tfloat m_flMinSize = 0.000750\n\tfloat m_flMaxSize = 0.002500\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n\tfloat m_flAnimationRate2 = 0.100000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.500000\n\tfloat m_flBias = 0.250000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 )\n\tfloat(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.300000\n\tfloat m_fLifetimeMax = 1.000000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 0.200000\n\tfloat m_flRadiusMax = 0.200000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bProportional = true\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 1.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 1.000000 )\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 74, 189, 255, 255 )\n\tint(4) m_ColorMin = ( 12, 109, 255, 255 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScaleLoc = 5.000000\n\tfloat(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 )\n\tfloat(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 )\n\tfloat m_flNoiseScale = 3.000000\n}\n\nC_INIT_InheritVelocity C_INIT_InheritVelocity_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_flVelocityScale = 0.100000\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 63\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 50, 84, 183, 255 )\n\tint(4) m_ColorMax = ( 150, 236, 255, 255 )\n\tint m_nFieldOutput = 22\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 300.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_ice_trail_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 256\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_OscillateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate2 = 0.100000\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.650000\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.200000\n\tfloat m_fLifetimeMin = 0.153000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 48.000000\n\tfloat m_flRadiusMin = 32.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 105, 165, 255, 255 )\n\tint(4) m_ColorMax = ( 209, 238, 255, 255 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 3.000000\n\tfloat(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 )\n\tfloat(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 )\n\tfloat m_flNoiseScaleLoc = 5.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 22\n\tint(4) m_ColorMax = ( 150, 236, 255, 255 )\n\tint(4) m_ColorMin = ( 50, 84, 183, 255 )\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 300.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_ice_trail_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 256\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYaw_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n\tfloat m_flAnimationRate2 = 0.100000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -400.000000 )\n\tfloat m_fDrag = 0.050000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.600000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 )\n\tfloat(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime_min = 0.500000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.153000\n\tfloat m_fLifetimeMax = 0.600000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 5.000000\n\tfloat m_flRadiusMax = 9.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fRadiusMax = 2.500000\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 209, 238, 255, 255 )\n\tint(4) m_ColorMin = ( 105, 165, 255, 255 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScaleLoc = 3.000000\n\tfloat(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 )\n\tfloat(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 )\n\tfloat m_flNoiseScale = 3.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 50, 84, 183, 255 )\n\tint(4) m_ColorMax = ( 150, 236, 255, 255 )\n\tint m_nFieldOutput = 22\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 63\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_linear_arrow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 1.000000\n\tbool m_bShouldSort = false\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_SetControlPointsToParticle_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_MovementPlaceOnGround_0,\n\t\t&C_OP_RemapVelocityToVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_NormalAlignToCP_0,\n\t\t&C_INIT_VelocityFromCP_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_base_attack_launch.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_base_attack_trail_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tbool m_bEndCap = true\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_base_attack_explosion_flash.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_hOverrideMaterial = \"\"\n\tstring m_EconSlotName = \"\"\n\tstring m_Notes = \"\"\n\tstring m_ActivityName = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/projectiles/drow_arrow.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFirstControlPoint = 3\n\tbool m_bSetOrientation = true\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tstring m_Notes = \"\"\n\tint m_nField = 4\n\tfloat m_RateMin = 1.000000\n\tfloat m_RateMax = 2.000000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 1.000000\n}\n\nC_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0\n{\n\tstring m_Notes = \"\"\n\tint m_nLerpCP = 3\n\tfloat m_flTolerance = 96.000000\n\tfloat m_flOffset = 70.000000\n\tbool m_bIncludeWater = true\n\tfloat m_flMaxTraceLength = 1024.000000\n\tfloat m_flTraceOffset = 256.000000\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tint m_nRefCP1 = 3\n}\n\nC_OP_RemapVelocityToVector C_OP_RemapVelocityToVector_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bNormalize = true\n\tint m_nFieldOutput = 21\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.200000\n\tfloat m_fLifetimeMin = 0.200000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 213, 240, 246, 255 )\n\tint(4) m_ColorMin = ( 213, 240, 246, 255 )\n}\n\nC_INIT_NormalAlignToCP C_INIT_NormalAlignToCP_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_VelocityFromCP C_INIT_VelocityFromCP_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPoint = 1\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/drow_linear_frost_arrow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 240.000000\n\tint(4) m_ConstantColor = ( 207, 237, 255, 255 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_RemapVelocityToVector_0,\n\t\t&C_OP_MovementPlaceOnGround_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_SetControlPointsToParticle_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_BasicMovement_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_VelocityFromCP_0,\n\t\t&C_INIT_NormalAlignToCP_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_frost_arrow_model.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_ice_trail.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_frost_arrow_launch.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tbool m_bEndCap = true\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/drow_frost_arrow_explosion.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue2.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tfloat m_flAlphaScale = 4.000000\n\tstring m_Notes = \"\"\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue2.vtex\"\n}\n\nC_OP_RemapVelocityToVector C_OP_RemapVelocityToVector_0\n{\n\tint m_nFieldOutput = 21\n\tbool m_bNormalize = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0\n{\n\tint m_nRefCP1 = 3\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tfloat m_flTraceOffset = 256.000000\n\tfloat m_flMaxTraceLength = 1024.000000\n\tbool m_bIncludeWater = true\n\tfloat m_flOffset = 70.000000\n\tfloat m_flTolerance = 96.000000\n\tint m_nLerpCP = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tfloat m_RateMax = 2.000000\n\tfloat m_RateMin = 1.000000\n\tint m_nField = 4\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0\n{\n\tbool m_bSetOrientation = true\n\tint m_nFirstControlPoint = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_VelocityFromCP C_INIT_VelocityFromCP_0\n{\n\tint m_nControlPoint = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_NormalAlignToCP C_INIT_NormalAlignToCP_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 213, 240, 246, 255 )\n\tint(4) m_ColorMax = ( 213, 240, 246, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.200000\n\tfloat m_fLifetimeMax = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_death_creep.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 76, 203, 121, 200 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_LerpScalar_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_BasicMovement_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_RandomScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_smoke_03.vtex\"\n\tint m_nVertCropField = 18\n\tstring m_Notes = \"\"\n\tfloat m_flLengthFadeInTime = 1.200000\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tfloat m_flLifeTimeFadeEnd = 0.125000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartScale = 2.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_OP_LerpScalar C_OP_LerpScalar_0\n{\n\tbool m_bDisableOperator = true\n\tfloat m_flStartTime = 0.500000\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 10\n\tfloat m_flOutput = 0.000000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 130, 203, 76, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.250000\n\tfloat m_fLifetimeMax = 0.750000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tint m_nFieldOutput = 20\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 18.000000\n\tfloat m_flRadiusMax = 38.000000\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tfloat m_flHitBoxScale = 0.700000\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecDirectionBias = ( 0.000000, 0.000000, 1.000000 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMax = ( 0.000000, 0.000000, 300.000000 )\n\tfloat(3) m_vecOutputMin = ( 0.000000, 0.000000, 300.000000 )\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMinLength = 0.500000\n\tfloat m_flMaxLength = 0.700000\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tint m_nFieldOutput = 18\n\tfloat m_flMax = 2.000000\n\tfloat m_flMin = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 32\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_hero_light.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 3\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( -384.000000, -384.000000, -384.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 384.000000, 384.000000, 384.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 550.000000\n\tfloat m_flConstantLifespan = 2.000000\n\tint(4) m_ConstantColor = ( 120, 166, 254, 200 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_SetToCP_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_OscillateScalar_0,\n\t\t&C_OP_ClampScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_hero_light_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tbool m_bUseTexture = true\n\tfloat m_flStartFalloff = 0.050000\n\tstring m_Notes = \"\"\n\tfloat m_flAlphaScale = 1.200000\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_light_mask_tower_good.vtex\"\n}\n\nC_OP_SetToCP C_OP_SetToCP_0\n{\n\tbool m_bOffsetLocal = true\n\tfloat(3) m_vecOffset = ( 0.000000, 0.000000, 170.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 7\n\tfloat m_flLerpTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tfloat m_flDecayTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_0\n{\n\tfloat m_FrequencyMin = 0.250000\n\tfloat m_RateMax = 1.000000\n\tfloat m_RateMin = -1.000000\n\tint m_nField = 16\n\tstring m_Notes = \"\"\n\tbool m_bDisableOperator = true\n}\n\nC_OP_ClampScalar C_OP_ClampScalar_0\n{\n\tfloat m_flOutputMin = 0.500000\n\tint m_nFieldOutput = 16\n\tstring m_Notes = \"\"\n\tbool m_bDisableOperator = true\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_hero_light_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 3\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( -384.000000, -384.000000, -384.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 384.000000, 384.000000, 384.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 150.000000\n\tfloat m_flConstantLifespan = 2.000000\n\tint(4) m_ConstantColor = ( 120, 166, 254, 200 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_SetToCP_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_OscillateScalar_0,\n\t\t&C_OP_ClampScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tfloat m_flAlphaScale = 2.000000\n\tstring m_Notes = \"\"\n\tfloat m_flStartFalloff = 0.100000\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_light_mask_tower_good.vtex\"\n}\n\nC_OP_SetToCP C_OP_SetToCP_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOffset = ( 20.000000, 0.000000, 200.000000 )\n\tbool m_bOffsetLocal = true\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.500000\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.500000\n\tint m_nFieldOutput = 7\n\tfloat m_flOutput = 0.000000\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDecayTime = 0.500000\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_0\n{\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n\tint m_nField = 16\n\tfloat m_RateMin = -1.000000\n\tfloat m_RateMax = 1.000000\n\tfloat m_FrequencyMin = 0.250000\n}\n\nC_OP_ClampScalar C_OP_ClampScalar_0\n{\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 16\n\tfloat m_flOutputMin = 0.500000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_last_hit_effect.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 76, 203, 121, 100 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_LerpScalar_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_OffsetVectorToVector_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_last_hit_effect_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_spirit_trail.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/damage_flash_big_frostivus.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_smoke_03.vtex\"\n\tfloat m_flLengthFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n\tbool m_bIgnoreDT = true\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartScale = 2.000000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpScalar C_OP_LerpScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 10\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime = 0.500000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 130, 203, 76, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.250000\n\tfloat m_fLifetimeMin = 0.125000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 38.000000\n\tfloat m_flRadiusMin = 18.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tfloat(3) m_vecDirectionBias = ( 0.000000, 0.000000, 1.000000 )\n\tstring m_Notes = \"\"\n\tfloat m_flHitBoxScale = 0.700000\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMin = ( 0.000000, 0.000000, 300.000000 )\n\tfloat(3) m_vecOutputMax = ( 0.000000, 0.000000, 300.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMaxLength = 1.000000\n\tfloat m_flMinLength = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 2\n\tfloat(3) m_vecOutputMin = ( 0.000000, 0.000000, 230.000000 )\n\tfloat(3) m_vecOutputMax = ( 0.000000, 0.000000, 400.000000 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 32\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_last_hit_effect_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 76, 203, 121, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_LerpScalar_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeInSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_RandomRotation_2,\n\t\t&C_INIT_RandomScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_smoke_03.vtex\"\n\tint m_nVertCropField = 18\n\tfloat m_flLengthFadeInTime = 0.200000\n\tstring m_Notes = \"\"\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 1800.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n}\n\nC_OP_LerpScalar C_OP_LerpScalar_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 10\n\tfloat m_flOutput = 0.000000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tbool m_bEaseInOut = false\n\tint(4) m_ColorFade = ( 18, 32, 8, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.500000\n\tfloat m_flEndScale = 1.100000\n\tfloat m_flBias = 0.750000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.250000\n\tfloat m_fLifetimeMax = 0.750000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 18.000000\n\tfloat m_flRadiusMax = 38.000000\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tfloat m_flHitBoxScale = 0.700000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat m_flNoiseScaleLoc = 1.000000\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMax = ( 128.000000, 128.000000, 1600.000000 )\n\tfloat(3) m_vecOutputMin = ( -128.000000, -128.000000, 528.000000 )\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMinLength = 0.200000\n\tfloat m_flMaxLength = 1.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_2\n{\n\tint m_nFieldOutput = 20\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tint m_nFieldOutput = 18\n\tfloat m_flMax = 2.000000\n\tfloat m_flMin = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 64\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_earth.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RemapCPtoScalar_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_leshrac_split_projected.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_leshrac_split_earth_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_leshrac_splitearth_lights.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tbool m_bRefract = true\n\tfloat m_flRefractAmount = -0.040000\n\tstring m_hTexture = \"materials\\\\particle\\\\warp_ripple4_normal.vtex\"\n\tbool m_bFitCycleToLifetime = true\n\tfloat m_flAnimationRate = 1.500000\n\tint m_nOrientationType = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tfloat m_flOpStartFadeInTime = 3.000000\n\tfloat m_flOpEndFadeInTime = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.750000\n\tfloat m_flBias = 0.850000\n\tfloat m_flStartScale = 0.350000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.500000\n\tfloat m_fLifetimeMin = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 64.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 64.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMax = 90.000000\n\tfloat m_flDegreesMin = -90.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0\n{\n\tfloat m_flOutputMax = 5000.000000\n\tfloat m_flInputMax = 2500.000000\n\tint m_nCPInput = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_earth_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 2\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 192, 190, 190, 255 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RemapCPtoScalar_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_leshrac_split_earth_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_leshrac_split_earth_d.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tbool m_bMod2X = true\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_modulate_02.vtex\"\n\tint m_nOrientationType = 2\n\tfloat m_flAnimationRate = 1.500000\n\tbool m_bFitCycleToLifetime = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 0.000000\n\tfloat m_flBias = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.250000\n\tfloat m_fLifetimeMax = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 8.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 8.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0\n{\n\tint m_nCPInput = 1\n\tfloat m_flInputMax = 5000.000000\n\tfloat m_flOutputMax = 5000.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMin = 64\n\tint m_nAlphaMax = 64\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_earth_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 80\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( 300.000000, 300.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( -300.000000, -300.000000, 10.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_RemapSpeed_0,\n\t\t&C_OP_SpinUpdate_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_MaxVelocity_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RemapScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks.vtex\"\n\tbool m_bFitCycleToLifetime = true\n\tfloat m_flAnimationRate = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.020007\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -800.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RemapSpeed C_OP_RemapSpeed_0\n{\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flInputMax = 10.000000\n\tint m_nFieldOutput = 5\n\tbool m_bScaleInitialRange = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tfloat m_flOpEndFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.750000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_MaxVelocity C_OP_MaxVelocity_0\n{\n\tfloat m_flMaxVelocity = 450.000000\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 130, 151, 91, 255 )\n\tint(4) m_ColorMin = ( 153, 127, 79, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 10.000000\n\tfloat m_flRadiusMin = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 63\n\tint m_nSequenceMin = 50\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat m_flNoiseScale = 2.000000\n\tfloat m_flNoiseScaleLoc = 2.000000\n\tfloat(3) m_vecOutputMin = ( -36.000000, -36.000000, 150.000000 )\n\tfloat(3) m_vecOutputMax = ( 36.000000, 36.000000, 600.000000 )\n\tbool m_bLocalSpace = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flNoiseScale = 3.000000\n\tfloat m_flNoiseScaleLoc = 1.000000\n\tint m_nFieldOutput = 5\n\tfloat m_flOutputMin = -15.000000\n\tfloat m_flOutputMax = 15.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flThickness = 0.500000\n\tint m_nOverrideCP = 1\n\tfloat m_flInitialSpeedMax = 1.500000\n\tfloat m_flInitialSpeedMin = 0.250000\n\tfloat m_flInitialRadius = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flInputMax = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 220\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_earth_d.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 5\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( 40.000000, 40.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( -40.000000, -40.000000, 10.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantLifespan = 2.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Orient2DRelToCP_0,\n\t\t&C_OP_InterpolateRadius_2,\n\t\t&C_OP_SetSingleControlPointPosition_0,\n\t\t&C_OP_SetChildControlPoints_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_RemapScalarOnceTimed_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreationNoise_2,\n\t\t&C_INIT_CreatePhyllotaxis_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_RandomSecondSequence_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_RandomForce_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_leshrac_splitearth_groundflash_lines.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_hOverrideMaterial = \"\"\n\tstring m_EconSlotName = \"\"\n\tfloat m_flAnimationRate = 60.000000\n\tbool m_bOrientZ = true\n\tstring m_ActivityName = \"\"\n\tbool m_bScaleAnimationRate = true\n\tstring m_Notes = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/props_destruction/rockyspikes_dynamic.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.125000\n\tfloat m_flBias = 0.350000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0\n{\n\tint m_nFieldOutput = 12\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_2\n{\n\tfloat m_flEndTime = 0.125000\n\tfloat m_flStartScale = 0.000000\n\tfloat m_flBias = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0\n{\n\tint m_nCP1 = 2\n\tfloat(3) m_vecCP1Pos = ( 0.000000, 0.000000, -128.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetChildControlPoints C_OP_SetChildControlPoints_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 179, 255, 192, 255 )\n\tfloat m_flFadeEndTime = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RemapScalarOnceTimed C_OP_RemapScalarOnceTimed_0\n{\n\tfloat m_flRemapTime = 1.330000\n\tint m_nFieldInput = 13\n\tfloat m_flInputMin = 1.000000\n\tfloat m_flInputMax = 5.000000\n\tint m_nFieldOutput = 13\n\tfloat m_flOutputMin = 6.000000\n\tfloat m_flOutputMax = 10.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 15.000000\n\tfloat m_flOutputMin = -15.000000\n\tint m_nFieldOutput = 5\n\tfloat m_flNoiseScaleLoc = 1.000000\n\tfloat m_flNoiseScale = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 1.500000\n\tfloat m_flRadiusMax = 2.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMax = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.700000\n\tfloat m_fLifetimeMin = 1.700000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_2\n{\n\tfloat m_flNoiseScale = 1.000000\n\tfloat m_flNoiseScaleLoc = 0.100000\n\tint m_nFieldOutput = 20\n\tfloat m_flOutputMax = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreatePhyllotaxis C_INIT_CreatePhyllotaxis_0\n{\n\tint m_nScaleCP = 1\n\tfloat m_fsizeOverall = 1.000000\n\tfloat m_fRadPerPointTo = 0.500000\n\tfloat m_fMinRad = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 256.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 256.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tbool m_bSetNormal = true\n\tfloat m_flMaxTraceLength = 512.000000\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tfloat m_flOffset = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tbool m_bDisableOperator = true\n\tint m_nInputMax = 100\n\tint m_nFieldOutput = 12\n\tfloat m_flOutputMax = 13750.700195\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMinLength = 0.850000\n\tfloat m_flMaxLength = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0\n{\n\tint m_nSequenceMax = 5\n\tint m_nSequenceMin = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 5\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 35\n\tstring m_Notes = \"\"\n}\n\nC_OP_RandomForce C_OP_RandomForce_0\n{\n\tfloat(3) m_MaxForce = ( 0.000000, 0.000000, -100.000000 )\n\tfloat(3) m_MinForce = ( 0.000000, 0.000000, -50.000000 )\n\tfloat m_flOpEndFadeOutTime = 3.000000\n\tfloat m_flOpStartFadeOutTime = 2.000000\n\tfloat m_flOpEndFadeInTime = 1.000000\n\tfloat m_flOpStartFadeInTime = 1.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_flash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 8\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint m_nConstantSequenceNumber = 1\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_InterpolateRadius_2,\n\t\t&C_OP_LerpScalar_0,\n\t\t&C_OP_OscillateScalar_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinBox_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\lens_flare\\\\lens_flare.vtex\"\n\tfloat m_flAnimationRate = 4.000000\n\tint m_nOrientationType = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flStartScale = 0.100000\n\tfloat m_flStartTime = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_2\n{\n\tfloat m_flBias = 0.850000\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flEndTime = 0.850000\n\tfloat m_flStartTime = 0.100000\n\tfloat m_flStartScale = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpScalar C_OP_LerpScalar_0\n{\n\tfloat m_flOutput = 1.570796\n\tint m_nFieldOutput = 12\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_0\n{\n\tint m_nField = 4\n\tfloat m_RateMin = -11.000000\n\tfloat m_RateMax = 11.000000\n\tfloat m_FrequencyMin = 0.125000\n\tfloat m_FrequencyMax = 0.500000\n\tfloat m_flOscAdd = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 )\n\tfloat m_flOpStartFadeInTime = 0.100000\n\tfloat m_flOpEndFadeInTime = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeEndTime = 0.000000\n\tfloat m_flFadeStartTime = 1.000000\n\tint(4) m_ColorFade = ( 252, 255, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tbool m_bRunForParentApplyKillList = false\n\tint m_nSequenceMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tfloat m_flOutputMax = 5.000000\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMin = 5.000000\n\tint m_nFieldInput = 9\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 90.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 246, 77, 252, 255 )\n\tint(4) m_ColorMin = ( 148, 153, 255, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.200000\n\tfloat m_fLifetimeMin = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinBox C_INIT_CreateWithinBox_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 105.000000\n\tfloat m_flRadiusMin = 45.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 15\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_projected.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 1.500000\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tint m_nConstantSequenceNumber1 = 1\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderProjected_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_RampScalarSpline_0,\n\t\t&C_OP_RampScalarSpline_2,\n\t\t&C_OP_Decay_2,\n\t\t&C_OP_FadeOut_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RemapCPtoScalar_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_DistanceToCPInit_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_leshrac_split_projected_scortch.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_lightbeam.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_leshrac_split_pulse.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderProjected C_OP_RenderProjected_0\n{\n\tstring m_Notes = \"\"\n\tstring m_hProjectedMaterial = \"materials\\\\particle\\\\projected_cracks.vmat\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tbool m_bDisableOperator = true\n\tfloat m_fDrag = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSpline C_OP_RampScalarSpline_0\n{\n\tfloat m_flStartTime_max = 0.700000\n\tfloat m_flStartTime_min = 0.600000\n\tint m_nField = 13\n\tfloat m_RateMin = 2.000000\n\tfloat m_RateMax = 3.000000\n\tfloat m_flEndTime_min = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSpline C_OP_RampScalarSpline_2\n{\n\tbool m_bEaseOut = true\n\tfloat m_RateMax = -1.800000\n\tfloat m_RateMin = -1.000000\n\tint m_nField = 13\n\tfloat m_flEndTime_min = 0.095000\n\tfloat m_flEndTime_max = 0.220000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_2\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOut C_OP_FadeOut_0\n{\n\tbool m_bEaseInAndOut = false\n\tbool m_bProportional = false\n\tfloat m_flFadeOutTimeMax = 1.000000\n\tfloat m_flFadeOutTimeMin = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMax = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tint m_nFieldOutput = 13\n\tfloat m_flMax = 1.310000\n\tfloat m_flMin = 1.310000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 4.500000\n\tfloat m_fLifetimeMin = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0\n{\n\tfloat m_flOutputMax = 900.000000\n\tfloat m_flOutputMin = 100.000000\n\tfloat m_flInputMax = 900.000000\n\tfloat m_flInputMin = 100.000000\n\tint m_nCPInput = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_DistanceToCPInit C_INIT_DistanceToCPInit_0\n{\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flInputMax = 450.000000\n\tfloat m_flInputMin = 1.000000\n\tbool m_bScaleInitialRange = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_projected_scortch.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 2\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 1.500000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderProjected_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_RampScalarSpline_0,\n\t\t&C_OP_RampScalarSpline_2,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RemapCPtoScalar_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_DistanceToCPInit_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderProjected C_OP_RenderProjected_0\n{\n\tbool m_bProjectWater = false\n\tstring m_Notes = \"\"\n\tstring m_hProjectedMaterial = \"materials\\\\particle\\\\frost_projected_mod.vmat\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSpline C_OP_RampScalarSpline_0\n{\n\tfloat m_flEndTime_min = 0.900000\n\tfloat m_RateMax = 12.000000\n\tfloat m_RateMin = 8.000000\n\tint m_nField = 13\n\tfloat m_flStartTime_min = 0.600000\n\tfloat m_flStartTime_max = 0.700000\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSpline C_OP_RampScalarSpline_2\n{\n\tfloat m_flEndTime_max = 0.220000\n\tfloat m_flEndTime_min = 0.095000\n\tint m_nField = 13\n\tfloat m_RateMin = -0.350000\n\tfloat m_RateMax = -0.100000\n\tbool m_bEaseOut = true\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flStartFadeOutTime = 0.800000\n\tfloat m_flEndFadeInTime = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeEndTime = 0.250000\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tbool m_bRandomlyFlipDirection = false\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tfloat m_flMin = 1.300000\n\tfloat m_flMax = 1.310000\n\tint m_nFieldOutput = 13\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 4.500000\n\tfloat m_fLifetimeMax = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0\n{\n\tint m_nCPInput = 1\n\tfloat m_flInputMin = 100.000000\n\tfloat m_flInputMax = 900.000000\n\tfloat m_flOutputMin = 100.000000\n\tfloat m_flOutputMax = 900.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_DistanceToCPInit C_INIT_DistanceToCPInit_0\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flInputMin = 1.000000\n\tfloat m_flInputMax = 450.000000\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_pulse.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint m_nConstantSequenceNumber = 1\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_InterpolateRadius_2,\n\t\t&C_OP_LerpScalar_0,\n\t\t&C_OP_OscillateScalar_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinBox_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_leshrac_split_flash.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\lens_flare\\\\lens_flare.vtex\"\n\tfloat m_flAnimationRate = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.850000\n\tfloat m_flStartScale = 0.100000\n\tfloat m_flEndScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_2\n{\n\tfloat m_flStartScale = 0.200000\n\tfloat m_flStartTime = 0.100000\n\tfloat m_flEndTime = 0.850000\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flBias = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpScalar C_OP_LerpScalar_0\n{\n\tint m_nFieldOutput = 12\n\tfloat m_flOutput = 1.570796\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_0\n{\n\tfloat m_flOscAdd = 0.100000\n\tfloat m_FrequencyMax = 0.500000\n\tfloat m_FrequencyMin = 0.125000\n\tfloat m_RateMax = 11.000000\n\tfloat m_RateMin = -11.000000\n\tint m_nField = 4\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_flOpEndFadeInTime = 0.150000\n\tfloat m_flOpStartFadeInTime = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 252, 255, 0, 255 )\n\tfloat m_flFadeStartTime = 1.000000\n\tfloat m_flFadeEndTime = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 1\n\tbool m_bRunForParentApplyKillList = false\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tint m_nFieldInput = 9\n\tfloat m_flOutputMin = 0.500000\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMax = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 90.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 148, 153, 255, 255 )\n\tint(4) m_ColorMax = ( 246, 77, 252, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.100000\n\tfloat m_fLifetimeMax = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinBox C_INIT_CreateWithinBox_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 45.000000\n\tfloat m_flRadiusMax = 105.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 50\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_splitearth_groundflash_lines.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 20\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( 20.000000, 20.000000, 0.000000 )\n\tfloat(3) m_BoundingBoxMax = ( -20.000000, -20.000000, 0.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_InterpolateRadius_2,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_SpinUpdate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateFromParentParticles_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_PositionOffset_2\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_leshrac_splitearth_sparkles.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tint m_nOrientationType = 3\n\tbool m_bDisableZBuffering = false\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\particle_flare_001.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tfloat m_flRadiusScale = 2.500000\n\tint(4) m_ColorScale = ( 241, 13, 13, 255 )\n\tstring m_Notes = \"\"\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\particle_flare_001.vtex\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 0.100000\n\tfloat m_flEndTime = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_2\n{\n\tfloat m_flEndTime = 0.800000\n\tfloat m_flBias = 0.200000\n\tfloat m_flEndScale = 0.300000\n\tfloat m_flStartTime = 0.600000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 100.000000\n\tfloat m_flRadiusMin = 60.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 83, 15, 47, 255 )\n\tint(4) m_ColorMin = ( 166, 20, 20, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.500000\n\tfloat m_fLifetimeMin = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0\n{\n\tbool m_bRandomDistribution = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 50.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tbool m_bSetNormal = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tfloat m_flOutputMax = 7.000000\n\tfloat m_flOutputMin = 3.000000\n\tint m_nFieldOutput = 9\n\tfloat m_flInputMin = 0.500000\n\tint m_nFieldInput = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 140\n\tint m_nAlphaMin = 30\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_2\n{\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 70\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_splitearth_lights.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 146, 146, 240, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RemapCPtoScalar_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tstring m_Notes = \"\"\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.600000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 2.000000\n\tfloat m_fLifetimeMax = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0\n{\n\tint m_nCPInput = 1\n\tfloat m_flInputMax = 900.000000\n\tfloat m_flOutputMax = 1200.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 60.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 60.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_splitearth_sparkles.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 20\n\tint m_nInitialParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 214, 45, 45, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_OscillateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_AgeNoise_0,\n\t\t&C_INIT_CreateFromParentParticles_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_InitialVelocityNoise_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue2.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 600.000000 )\n\tfloat m_fDrag = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -30.000000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat m_flOscMult = 1.000000\n\tfloat m_flStartTime_max = 0.500000\n\tfloat m_flStartTime_min = 0.250000\n\tfloat(3) m_FrequencyMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_RateMax = ( 8.000000, 8.000000, 8.000000 )\n\tfloat(3) m_RateMin = ( -8.000000, -8.000000, -8.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusRandExponent = 0.800000\n\tfloat m_flRadiusMin = 7.000000\n\tfloat m_flRadiusMax = 25.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_AgeNoise C_INIT_AgeNoise_0\n{\n\tfloat m_flAgeMax = 0.200000\n\tfloat m_flAgeMin = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMin = ( -50.000000, -50.000000, -50.000000 )\n\tfloat(3) m_OffsetMax = ( 50.000000, 50.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 1.000000, 1.000000, 900.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 0.250000\n\tfloat m_flEmitRate = 203.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_lightbeam.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 7\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 250, 92, 92, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_SetSingleControlPointPosition_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RemapCPtoScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_CreateSequentialPath_0,\n\t\t&C_INIT_RemapParticleCountToScalar_2,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RemapParticleCountToScalar_4\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_AVERAGE\n\tbool m_bMod2X = true\n\tstring m_hTexture = \"materials\\\\particle\\\\groundcracks_light.vtex\"\n\tfloat m_flAnimationRate = 0.000000\n\tint m_nOrientationType = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flEndFadeInTime = 0.050000\n\tfloat m_flStartAlpha = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0\n{\n\tfloat(3) m_vecCP1Pos = ( 0.000000, 0.000000, 40.000000 )\n\tint m_nCP1 = 2\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0\n{\n\tint m_nCPInput = 1\n\tfloat m_flInputMin = 100.000000\n\tfloat m_flInputMax = 900.000000\n\tfloat m_flOutputMin = 100.000000\n\tfloat m_flOutputMax = 900.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tfloat m_flOutputMax = 0.000000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nFieldOutput = 7\n\tint m_nInputMax = 25\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0\n{\n\tfloat m_flNumToAssign = 25.000000\n\tstring m_Notes = \"\"\n\tCPathParameters m_PathParams = CPathParameters\n\t{\n\t\tint m_nEndControlPointNumber = 2\n\t}\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMin = 1.000000\n\tint m_nInputMax = 25\n\tfloat m_flOutputMax = 1.100000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tbool m_bRandomlyFlipDirection = false\n\tfloat m_flDegreesMax = 90.000000\n\tfloat m_flDegreesMin = 90.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_4\n{\n\tfloat m_flOutputMax = 0.500000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nFieldOutput = 1\n\tint m_nInputMax = 25\n\tbool m_bScaleInitialRange = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 15\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 50, 239, 134, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 110.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 1.000000\n\tint m_nConstantSequenceNumber = 4\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 16\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_SetChildControlPoints_0,\n\t\t&C_OP_MovementPlaceOnGround_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_VelocityFromCP_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_skull.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_i.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_f.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_e.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = true\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_h.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_b.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_g.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_sphere_glow.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_d.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_detail.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_spirits_2.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_sphere_glow_b.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t}\n\t]\n\tbool m_bShouldSort = false\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_fDrag = 0.000000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = 1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetChildControlPoints C_OP_SetChildControlPoints_0\n{\n\tint m_nChildGroupID = 0\n\tint m_nFirstControlPoint = 3\n\tint m_nNumControlPoints = 1\n\tint m_nFirstSourcePoint = 0\n\tbool m_bSetOrientation = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0\n{\n\tfloat m_flOffset = 0.000000\n\tfloat m_flMaxTraceLength = 128.000000\n\tfloat m_flTolerance = 32.000000\n\tfloat m_flTraceOffset = 64.000000\n\tfloat m_flLerpRate = 0.000000\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tint m_nRefCP1 = -1\n\tint m_nRefCP2 = -1\n\tint m_nLerpCP = -1\n\tbool m_bKill = false\n\tbool m_bIncludeWater = false\n\tbool m_bSetNormal = false\n\tbool m_bScaleOffset = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_nOrientationType = 0\n\tint m_nOrientationControlPoint = -1\n\tfloat m_flMinSize = 0.000000\n\tfloat m_flMaxSize = 5000.000000\n\tfloat m_flStartFadeSize = 100000000.000000\n\tfloat m_flEndFadeSize = 200000000.000000\n\tfloat m_flMaxLength = 100.000000\n\tfloat m_flMinLength = 64.000000\n\tbool m_bIgnoreDT = false\n\tfloat m_flConstrainRadiusToLengthRatio = 1.000000\n\tfloat m_flLengthScale = 1.000000\n\tfloat m_flRadiusTaper = 1.000000\n\tfloat m_flLengthFadeInTime = 0.100000\n\tfloat(4) m_vEndTrailTintFactor = ( 1.000000, 1.000000, 1.000000, 1.000000 )\n\tint m_nHorizCropField = 19\n\tint m_nVertCropField = 19\n\tfloat m_flRadiusScale = 1.000000\n\tfloat m_flFinalTextureScaleU = 1.000000\n\tfloat m_flFinalTextureScaleV = 1.000000\n\tfloat m_flFinalTextureOffsetU = 0.000000\n\tfloat m_flFinalTextureOffsetV = 0.000000\n\tfloat m_flAnimationRate = 0.100000\n\tbool m_bFitCycleToLifetime = false\n\tbool m_bAnimateInFPS = false\n\tbool m_bPerVertexLighting = false\n\tfloat m_flSelfIllumAmount = 2.000000\n\tfloat m_flDiffuseAmount = 1.000000\n\tfloat m_flSourceAlphaValueToMapToZero = 0.000000\n\tfloat m_flSourceAlphaValueToMapToOne = 1.000000\n\tbool m_bGammaCorrectVertexColors = true\n\tsymbol m_nSequenceCombineMode = 0\n\tfloat m_flAnimationRate2 = 0.000000\n\tfloat m_flSequence0RGBWeight = 0.500000\n\tfloat m_flSequence0AlphaWeight = 0.500000\n\tfloat m_flSequence1RGBWeight = 0.500000\n\tfloat m_flSequence1AlphaWeight = 0.500000\n\tfloat m_flAddSelfAmount = 0.000000\n\tbool m_bAdditive = false\n\tbool m_bMod2X = false\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = false\n\tbool m_bRefract = false\n\tfloat m_flRefractAmount = 1.000000\n\tint m_nRefractBlurRadius = 0\n\tsymbol m_nRefractBlurType = 0\n\tstring m_stencilTestID = \"\"\n\tstring m_stencilWriteID = \"\"\n\tbool m_bWriteStencilOnDepthPass = true\n\tbool m_bWriteStencilOnDepthFail = false\n\tbool m_bReverseZBuffering = false\n\tbool m_bDisableZBuffering = false\n\tbool m_bParticleFeathering = false\n\tfloat m_flFeatheringMinDist = 0.000000\n\tfloat m_flFeatheringMaxDist = 15.000000\n\tfloat m_flOverbrightFactor = 1.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tbool m_bUseAlphaTestWindow = false\n\tbool m_bUseTexture = false\n\tfloat m_flRadiusScale = 3.000000\n\tfloat m_flAlphaScale = 6.000000\n\tfloat m_flLightDistance = 0.000000\n\tfloat m_flStartFalloff = 0.100000\n\tfloat m_flDistanceFalloff = 0.000000\n\tfloat m_flSpotFoV = 60.000000\n\tuint(4) m_ColorScale = ( 50, 239, 174, 255 )\n\tint m_nAlphaTestPointField = 13\n\tint m_nAlphaTestRangeField = 23\n\tint m_nAlphaTestSharpnessField = 18\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 0.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 0\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 0.000000\n\tfloat m_fSpeedMax = 0.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.000000\n\tfloat m_fLifetimeMax = 0.000000\n\tfloat m_fLifetimeRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_VelocityFromCP C_INIT_VelocityFromCP_0\n{\n\tint m_nControlPoint = 1\n\tint m_nControlPointCompare = -1\n\tint m_nControlPointLocal = -1\n\tfloat m_flVelocityScale = 1.000000\n\tbool m_bDirectionOnly = false\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_ember.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0,\n\t\t&C_OP_AttractToControlPoint_2\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\yellowflare.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.090000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.500000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 )\n\tfloat(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 12, 50, 38, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 50, 239, 174, 255 )\n\tint(4) m_ColorMin = ( 33, 255, 122, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.500000\n\tfloat m_fLifetimeMin = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 7.000000\n\tfloat m_flRadiusMin = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMin = 200\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMax = 16.000000\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_fSpeedMin = 100.000000\n\tfloat m_fSpeedMax = 350.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tbool m_bLocalSpace = true\n\tfloat(3) m_vecOutputMax = ( 600.000000, 400.000000, 400.000000 )\n\tfloat(3) m_vecOutputMin = ( -200.000000, -400.000000, -400.000000 )\n\tfloat m_flNoiseScaleLoc = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 0.400000\n\tfloat m_flEmitRate = 500.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tfloat m_fForceAmount = -2000.000000\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_2\n{\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tfloat m_fFalloffPower = 0.100000\n\tfloat m_fForceAmount = -4000.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_ember_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0,\n\t\t&C_OP_AttractToControlPoint_2\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -255.000000 )\n\tfloat m_fDrag = 0.125000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.250000\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.300003\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 )\n\tfloat(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 )\n\tbool m_bAdditive = true\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 12, 50, 38, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.750000\n\tfloat m_fLifetimeMax = 1.500000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 3.000000\n\tfloat m_flRadiusMax = 7.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMax = 950.000000\n\tfloat m_fSpeedMin = 600.000000\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_fRadiusMax = 16.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.250000 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScaleLoc = 0.250000\n\tfloat(3) m_vecOutputMin = ( -400.000000, -400.000000, -400.000000 )\n\tfloat(3) m_vecOutputMax = ( 400.000000, 400.000000, 400.000000 )\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 63\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_fForceAmount = -2000.000000\n\tbool m_bDisableOperator = true\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = -4000.000000\n\tfloat m_fFalloffPower = 0.100000\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tbool m_bDisableOperator = true\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 50, 239, 174, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_ember_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_d.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_e.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_light.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_f.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_ember.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flStartFadeSize = 0.200000\n\tfloat m_flEndFadeSize = 0.250000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\maya_wispy\\\\wispy_v2.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tfloat m_fDrag = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flStartAlpha = 0.000000\n\tfloat m_flEndFadeInTime = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.700000\n\tfloat m_flEndScale = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -240.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( -230.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 100.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 22.000000\n\tfloat m_flRadiusMin = 18.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 255, 255, 155 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flStartFadeSize = 0.400000\n\tfloat m_flEndFadeSize = 0.650000\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 0.000000\n\tfloat m_flEndScale = 3.000000\n\tfloat m_flBias = 0.700000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMax = 100.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( -230.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -240.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 44.000000\n\tfloat m_flRadiusMax = 72.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint m_nFieldOutput = 22\n\tint(4) m_ColorMax = ( 14, 0, 0, 255 )\n\tint(4) m_ColorMin = ( 36, 14, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 8\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 4\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 86, 251, 152, 225 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 4.000000\n\tfloat m_flBias = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.200000\n\tfloat m_fLifetimeMin = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMax = 100.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 80.000000\n\tfloat m_flRadiusMax = 80.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_d.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 200, 0, 0, 175 )\n\tint m_nConstantSequenceNumber = 4\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tfloat m_flSelfIllumAmount = 2.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tfloat m_flLengthFadeInTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -300.000000 )\n\tfloat m_fDrag = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 93, 20, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.100000\n\tfloat m_fLifetimeMax = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -140.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 800.000000\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMin = 500.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 140.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 12.000000\n\tfloat m_flRadiusMin = 8.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMaxLength = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 94, 255, 208, 255 )\n\tint(4) m_ColorMin = ( 8, 192, 190, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 256\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_e.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 50, 239, 174, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flStartFadeSize = 0.200000\n\tfloat m_flEndFadeSize = 0.250000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\maya_wispy\\\\wispy_v2.vtex\"\n\tfloat m_flAnimationRate = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tfloat m_fDrag = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.800000\n\tfloat m_flEndScale = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.750000\n\tfloat m_fLifetimeMax = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 400.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 40.000000\n\tfloat m_flRadiusMin = 30.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 4\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_f.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 40, 177, 108, 245 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomRotationSpeed_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tint m_bAdditive = 1\n\tfloat m_flZoomRate1 = 4.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3b.vtex\"\n\tfloat m_flAnimationRate = 1.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 5.000000\n\tfloat m_flBias = 0.680000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 42, 105, 73, 255 )\n\tfloat m_flFadeStartTime = 0.250000\n\tfloat m_flFadeEndTime = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.500000\n\tfloat m_fLifetimeMin = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMax = 400.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 30.000000\n\tfloat m_flRadiusMax = 40.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 8\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0\n{\n\tfloat m_flDegreesMax = 50.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 4\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_light.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 120.000000\n\tint(4) m_ConstantColor = ( 95, 251, 161, 225 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0,\n\t\t&C_OP_RenderScreenShake_0,\n\t\t&C_OP_RenderScreenShake_2\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tint(4) m_ColorScale = ( 32, 215, 131, 255 )\n\tfloat m_flStartFalloff = 0.100000\n\tfloat m_flAlphaScale = 6.000000\n\tstring m_Notes = \"\"\n\tstring m_hTexture = \"materials\\\\particle\\\\fire_particle_2\\\\fire_particle_2.vtex\"\n}\n\nC_OP_RenderScreenShake C_OP_RenderScreenShake_0\n{\n\tfloat m_flDurationScale = 0.350000\n\tfloat m_flRadiusScale = 2000.000000\n\tfloat m_flFrequencyScale = 3.000000\n\tfloat m_flAmplitudeScale = 12.000000\n\tint m_nFilterCP = 9\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderScreenShake C_OP_RenderScreenShake_2\n{\n\tstring m_Notes = \"\"\n\tint m_nFilterCP = 1\n\tfloat m_flAmplitudeScale = 12.000000\n\tfloat m_flFrequencyScale = 3.000000\n\tfloat m_flRadiusScale = 2000.000000\n\tfloat m_flDurationScale = 0.350000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 5.000000\n\tfloat m_flBias = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 1\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 44, 248, 149, 155 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_VelocityRandom_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch_smoke.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tint m_bAdditive = 1\n\tfloat m_flZoomRate1 = 4.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3b.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 100.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.700000\n\tfloat m_flStartScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 63, 38, 38, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fSpeedMax = 100.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 72.000000\n\tfloat m_flRadiusMin = 44.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 8\n\tstring m_Notes = \"\"\n}\n\nC_INIT_VelocityRandom C_INIT_VelocityRandom_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 200.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 230.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 4\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 146, 255, 195, 215 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tfloat m_fDrag = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.800000\n\tfloat m_flEndScale = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.200000\n\tfloat m_fLifetimeMax = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 100.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 50.000000\n\tfloat m_flRadiusMin = 50.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch_smoke.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tint m_nInitialParticles = 2\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 15 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tint m_bAdditive = 1\n\tfloat m_flZoomRate1 = 4.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3b.vtex\"\n\tfloat m_flAnimationRate = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 60.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 130.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flBias = 0.350000\n\tfloat m_flStartScale = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flEndTime_max = 0.200000\n\tfloat m_flEndTime_min = 0.200000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n\tint m_nControlPointNumber = 9\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeEndTime = 0.500000\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 17, 169, 103, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 0, 255, 180, 255 )\n\tint(4) m_ColorMin = ( 0, 255, 126, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fSpeedMax = 35.000000\n\tint m_nControlPointNumber = 9\n\tfloat m_fRadiusMax = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tbool m_bLocalSpace = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 48.000000\n\tfloat m_flOutputMin = 32.000000\n\tfloat m_flNoiseScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 8\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 2.000000\n\tfloat m_flOpEndFadeOutTime = 2.000000\n\tfloat m_flOpStartFadeOutTime = 0.500000\n\tfloat m_flEmitRate = 38.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_skull.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 1\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_skull_lv.vpcf\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 2.000000\n\tfloat m_flConstantLifespan = 0.250000\n\tint(4) m_ConstantColor = ( 87, 187, 143, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Orient2DRelToCP_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_SetToCP_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomSecondSequence_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tint m_nManualFrameField = 18\n\tfloat m_flAnimationRate = 0.000000\n\tstring m_hOverrideMaterial = \"\"\n\tstring m_ActivityName = \"\"\n\tbool m_bOrientZ = true\n\tstring m_Notes = \"\"\n\tstring m_EconSlotName = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/heroes/necrolyte/necrolyte_skull.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0\n{\n\tint m_nCP = 1\n\tfloat m_flRotOffset = 270.000000\n\tint m_nFieldOutput = 12\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetToCP C_OP_SetToCP_0\n{\n\tbool m_bOffsetLocal = true\n\tfloat(3) m_vecOffset = ( -2.000000, 0.000000, -8.000000 )\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0\n{\n\tint m_nSequenceMax = 2\n\tint m_nSequenceMin = 2\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tbool m_bRandomlyFlipDirection = false\n\tint m_nFieldOutput = 20\n\tfloat m_flDegreesMax = -10.000000\n\tfloat m_flDegreesMin = -10.000000\n\tfloat m_flDegrees = -10.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_sphere_glow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 8\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 250.000000\n\tint(4) m_ConstantColor = ( 55, 255, 182, 100 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_RampScalarLinear_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.125000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tint m_nField = 4\n\tfloat m_RateMin = -5.000000\n\tfloat m_RateMax = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.400000\n\tfloat m_fLifetimeMin = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 9.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_sphere_glow_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 8\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 250.000000\n\tfloat m_flConstantLifespan = 0.250000\n\tint(4) m_ConstantColor = ( 55, 255, 182, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 2.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_RateMax = 5.000000\n\tfloat m_RateMin = -5.000000\n\tint m_nField = 4\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 160\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 60 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_Noise_2,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flStartFadeSize = 0.575000\n\tfloat m_flEndFadeSize = 0.650000\n\tfloat m_flMaxSize = 0.750000\n\tstring m_hTexture = \"materials\\\\particle\\\\water_splash\\\\water_splash.vtex\"\n\tfloat m_flAnimationRate = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 130.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_2\n{\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 90.000000\n\tint m_nFieldOutput = 12\n\tfloat m_fl4NoiseScale = 0.001100\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flEndTime = 0.140000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flEndTime_min = 0.300000\n\tfloat m_flEndTime_max = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n\tfloat m_flFadeStartTime = 0.500000\n\tint m_nFieldOutput = 22\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n\tint m_nFieldOutput = 23\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.750000\n\tfloat m_fLifetimeMin = 0.450000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 0, 178, 134, 255 )\n\tint(4) m_ColorMin = ( 222, 255, 244, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tint m_nFieldOutput = 22\n\tint(4) m_ColorMax = ( 6, 47, 40, 255 )\n\tint(4) m_ColorMin = ( 4, 28, 18, 255 )\n\tbool m_bRunForParentApplyKillList = false\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fRadiusMax = 1.000000\n\tfloat m_fSpeedMax = 64.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tbool m_bLocalSpace = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 18.000000\n\tfloat m_flOutputMin = 14.000000\n\tfloat m_flNoiseScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tint m_nInputMax = 4\n\tbool m_bScaleInitialRange = true\n\tbool m_bActiveRange = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 128.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_d.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 40.000000\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_DistanceToCP_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_FadeInSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 14.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_plasma_03.vtex\"\n\tfloat m_flTextureVScrollRate = -1.500000\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 249.999985\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.700000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_DistanceToCP C_OP_DistanceToCP_0\n{\n\tint m_nStartCP = 3\n\tint m_nFieldOutput = 16\n\tfloat m_flInputMax = 256.000000\n\tfloat m_flInputMin = 64.000000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tfloat m_fl4NoiseScale = 0.050000\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -1.000000, -1.000000, 0.000000 )\n\tfloat(3) m_vecOutputMax = ( 1.000000, 1.000000, 0.000000 )\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 1.000000\n\tfloat m_fLifetimeMax = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = -50.000000\n\tfloat m_flRadiusMax = 50.000000\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 40.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_detail.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_Noise_2,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_detail_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\static\\\\static_smoke.vtex\"\n\tfloat m_flAnimationRate = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.125000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 130.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_2\n{\n\tfloat m_fl4NoiseScale = 0.001100\n\tint m_nFieldOutput = 12\n\tfloat m_flOutputMax = 90.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndTime = 0.140000\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 9999.000000\n\tfloat m_Rate = 100.000000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -2.000000\n\tint m_nField = 16\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 57, 185, 135, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flEndTime_max = 0.100000\n\tfloat m_flEndTime_min = 0.100000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.150000\n\tfloat m_fLifetimeMax = 0.180000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 222, 255, 245, 255 )\n\tint(4) m_ColorMax = ( 50, 255, 156, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 64.000000\n\tfloat m_fRadiusMax = 1.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tbool m_bLocalSpace = true\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMin = -4.000000\n\tfloat m_flDegreesMax = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 9.000000\n\tfloat m_flRadiusMax = 15.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 256.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_detail_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_Noise_2,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tint m_nOrientationType = 3\n\tfloat m_flMaxSize = 0.400000\n\tstring m_hTexture = \"materials\\\\particle\\\\lava_blasts\\\\lava_glow.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.900000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 130.000000\n\tbool m_bAdditive = true\n}\n\nC_OP_Noise C_OP_Noise_2\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 90.000000\n\tint m_nFieldOutput = 12\n\tfloat m_fl4NoiseScale = 0.001100\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 4.000000\n\tfloat m_flBias = 0.750000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = 100.000000\n\tfloat m_flEndTime = 9999.000000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -2.000000\n\tfloat m_flEndTime = 99999.000000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 0, 255, 108, 255 )\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flEndTime_min = 0.100000\n\tfloat m_flEndTime_max = 0.100000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.180000\n\tfloat m_fLifetimeMin = 0.150000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 50, 255, 156, 255 )\n\tint(4) m_ColorMin = ( 222, 255, 245, 255 )\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_fRadiusMax = 1.000000\n\tfloat m_fSpeedMax = 64.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tbool m_bLocalSpace = true\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 12.000000\n\tfloat m_flRadiusMin = 6.000000\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 3\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 256.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_e.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 32.000000\n\tint(4) m_ConstantColor = ( 12, 245, 116, 125 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_DistanceToCP_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_VectorNoise_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\bendibeam2.vtex\"\n\tfloat m_flTextureVScrollRate = -0.100000\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 806.451599\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tbool m_bEaseInOut = false\n\tfloat m_flFadeEndTime = 0.600000\n\tint(4) m_ColorFade = ( 0, 88, 46, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 3.000000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_DistanceToCP C_OP_DistanceToCP_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_flInputMin = 64.000000\n\tfloat m_flInputMax = 256.000000\n\tint m_nFieldOutput = 16\n\tint m_nStartCP = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.125000\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tfloat m_fl4NoiseScale = 0.050000\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -1.000000, -1.000000, 0.000000 )\n\tfloat(3) m_vecOutputMax = ( 1.000000, 1.000000, 0.000000 )\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.400000\n\tfloat m_fLifetimeMin = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tint m_nInputMax = 2\n\tfloat m_flOutputMax = 48.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 40.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_f.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tint m_nInitialParticles = 2\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 20 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tint m_bAdditive = 1\n\tfloat m_flZoomRate1 = 4.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3b.vtex\"\n\tfloat m_flAnimationRate = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 30.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 130.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndTime = 0.140000\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 9999.000000\n\tfloat m_Rate = 150.000000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -1.000000\n\tint m_nField = 16\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flEndTime_min = 0.200000\n\tfloat m_flEndTime_max = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 152, 240, 214, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 1.500000\n\tfloat m_fLifetimeMax = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 50, 239, 174, 255 )\n\tint(4) m_ColorMax = ( 50, 239, 174, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMax = 1.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tbool m_bLocalSpace = true\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flNoiseScale = 2.000000\n\tfloat m_flOutputMin = 12.000000\n\tfloat m_flOutputMax = 16.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMin = -4.000000\n\tfloat m_flDegreesMax = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 8\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 38.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_g.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 512\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\yellowflare.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.500000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 130.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint m_nFieldOutput = 22\n\tfloat m_flFadeStartTime = 0.500000\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tint m_nFieldOutput = 23\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.250000\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.500000\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -4.000000, -4.000000, -4.000000 )\n\tfloat(3) m_vecOutputMax = ( 4.000000, 4.000000, 4.000000 )\n\tbool m_bAdditive = true\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.450000\n\tfloat m_fLifetimeMax = 2.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 222, 255, 244, 255 )\n\tint(4) m_ColorMax = ( 0, 178, 134, 255 )\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tstring m_Notes = \"\"\n\tbool m_bRunForParentApplyKillList = false\n\tint(4) m_ColorMin = ( 4, 28, 18, 255 )\n\tint(4) m_ColorMax = ( 6, 47, 40, 255 )\n\tint m_nFieldOutput = 22\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 64.000000\n\tfloat m_fRadiusMax = 16.000000\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bLocalSpace = true\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 2.000000\n\tfloat m_flOutputMin = 2.000000\n\tfloat m_flOutputMax = 6.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMin = -4.000000\n\tfloat m_flDegreesMax = 4.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bActiveRange = true\n\tbool m_bScaleInitialRange = true\n\tint m_nInputMax = 4\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 256.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_h.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 512\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tfloat m_flAnimationRate = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 130.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.250000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_vecOutputMin = ( -4.000000, -4.000000, -4.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 0.450000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fRadiusMax = 16.000000\n\tfloat m_fSpeedMax = 64.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tbool m_bLocalSpace = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 4.000000\n\tfloat m_flOutputMin = 2.000000\n\tfloat m_flNoiseScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tint m_nInputMax = 4\n\tbool m_bScaleInitialRange = true\n\tbool m_bActiveRange = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 63\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 256.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_i.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 512\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 20.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 155 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_Orient2DRelToCP_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\steam\\\\steam.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.100000\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.350000\n\tfloat m_flEndScale = 2.000000\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.500000\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -55.000000, -55.000000, -55.000000 )\n\tfloat(3) m_vecOutputMax = ( 55.000000, 55.000000, 55.000000 )\n\tbool m_bAdditive = true\n\tbool m_bOffset = true\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.250000\n\tfloat m_fLifetimeMax = 2.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 0, 43, 29, 255 )\n\tint(4) m_ColorMax = ( 0, 0, 0, 255 )\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMax = 320.000000\n\tfloat m_fRadiusMax = 2.000000\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bLocalSpace = true\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMin = -4.000000\n\tfloat m_flDegreesMax = 4.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 1\n}\n\nC_INIT_Orient2DRelToCP C_INIT_Orient2DRelToCP_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRotOffset = 180.000000\n\tint m_nCP = 3\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 256.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_spirit_trail.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 3\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( -30.000000, -30.000000, -30.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 30.000000, 30.000000, 30.000000 )\n\tfloat m_flCullRadius = -1.000000\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 250.000000\n\tfloat m_flConstantLifespan = 1.250000\n\tint(4) m_ConstantColor = ( 0, 248, 163, 255 )\n\tint m_nConstantSequenceNumber1 = 1\n\tfloat m_flMaxDrawDistance = 400000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 5.000000\n\tbool m_bShouldSort = false\n\tint m_nMinCPULevel = 1\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_SetPerChildControlPoint_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_Spin_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_InitialVelocityNoise_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_TurbulenceForce_0,\n\t\t&C_OP_TwistAroundAxis_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_spirit_trail_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tfloat m_flAlphaScale = 2.000000\n\tstring m_Notes = \"\"\n\tfloat m_flStartFalloff = 0.100000\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tbool m_bOffset = true\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMin = ( -540.000000, -540.000000, -1.000000 )\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMax = ( 540.000000, 540.000000, 1.000000 )\n\tfloat m_fl4NoiseScale = 0.050000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.080000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 7000.000000 )\n}\n\nC_OP_SetPerChildControlPoint C_OP_SetPerChildControlPoint_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat m_flEndTime_max = 99999998430674944.000000\n\tfloat m_flEndTime_min = 99999998430674944.000000\n\tbool m_bProportional = false\n\tfloat(3) m_FrequencyMax = ( 2.000000, 2.000000, 2.000000 )\n\tfloat(3) m_RateMax = ( 400.000000, 400.000000, 20.000000 )\n\tfloat(3) m_RateMin = ( -400.000000, -400.000000, -20.000000 )\n\tbool m_bOffset = true\n\tstring m_Notes = \"\"\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n}\n\nC_OP_Spin C_OP_Spin_0\n{\n\tint m_nSpinRateDegrees = 12\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeEndTime = 0.500000\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecDistanceBias = ( 0.010000, 0.010000, 0.000000 )\n\tfloat m_fRadiusMax = 48.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMax = ( 100.000000, 100.000000, 1500.000000 )\n\tfloat(3) m_vecOutputMin = ( -100.000000, -100.000000, 1400.000000 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_TurbulenceForce C_OP_TurbulenceForce_0\n{\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecNoiseAmount3 = ( -1300.000000, -1300.000000, -1300.000000 )\n\tfloat m_flNoiseCoordScale3 = 5.000000\n\tfloat(3) m_vecNoiseAmount2 = ( 1100.000000, 1100.000000, 1100.000000 )\n\tfloat m_flNoiseCoordScale2 = 3.000000\n\tfloat(3) m_vecNoiseAmount1 = ( -1510.000000, -1510.000000, -1510.000000 )\n\tfloat m_flNoiseCoordScale1 = 0.100000\n\tfloat(3) m_vecNoiseAmount0 = ( 1450.000000, 1450.000000, 1450.000000 )\n}\n\nC_OP_TwistAroundAxis C_OP_TwistAroundAxis_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = -150.000000\n\tfloat(3) m_TwistAxis = ( 0.100000, 0.000000, 1.000000 )\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_spirit_trail_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 36.000000\n\tfloat m_flConstantLifespan = 0.400000\n\tint(4) m_ConstantColor = ( 124, 250, 207, 155 )\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_RemapParticleCountOnScalarEndCap_0,\n\t\t&C_OP_RemapParticleCountOnScalarEndCap_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RemapCPtoVector_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_spirit_trail_c.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_plasma_05.vtex\"\n\tfloat m_flTextureVScrollRate = -1.250000\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 1428.571533\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flStartTime_max = -10.000000\n\tfloat m_flStartTime_min = -10.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 16.000000, 16.000000, 16.000000 )\n\tfloat(3) m_vecOutputMin = ( -16.000000, -16.000000, -16.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.080000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_0\n{\n\tint m_nFieldOutput = 16\n\tint m_nInputMax = 10\n\tbool m_bBackwards = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_2\n{\n\tbool m_bScaleCurrent = true\n\tint m_nInputMax = 25\n\tbool m_bBackwards = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 0.400000\n\tint m_nFieldOutput = 7\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapCPtoVector C_INIT_RemapCPtoVector_0\n{\n\tint m_nOpScaleCP = 16\n\tstring m_Notes = \"\"\n\tint m_nCPInput = 15\n\tfloat(3) m_vInputMax = ( 255.000000, 255.000000, 255.000000 )\n\tint m_nFieldOutput = 6\n\tfloat(3) m_vOutputMax = ( 1.000000, 1.000000, 1.000000 )\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tfloat m_flOutputMax = 0.000000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flInputMax = 0.350000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tbool m_bActiveRange = true\n\tbool m_bScaleInitialRange = true\n\tint m_nFieldOutput = 7\n\tint m_nInputMax = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 0.350000\n\tfloat m_flEmitRate = 32.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_spirit_trail_big.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 160\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 64.000000\n\tint(4) m_ConstantColor = ( 15, 196, 122, 100 )\n\tint m_nConstantSequenceNumber = 1\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_Spin_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_LerpScalar_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_PercentageBetweenCPs_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_SetSingleControlPointPosition_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_2,\n\t\t&C_INIT_RemapParticleCountToScalar_4,\n\t\t&C_INIT_RemapParticleCountToScalar_6,\n\t\t&C_INIT_RemapParticleCountToScalar_8,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_RemapParticleCountToScalar_10\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t&C_OP_ConstrainDistanceToPath_0\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\wisp\\\\particle_swirl.vtex\"\n\tfloat m_flAnimationRate = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tfloat m_flDecayTime = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Spin C_OP_Spin_0\n{\n\tint m_nSpinRateDegrees = -21\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 7\n\tfloat m_flOutput = 0.000000\n}\n\nC_OP_LerpScalar C_OP_LerpScalar_0\n{\n\tfloat m_flEndTime = 1.500000\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime = 0.400000\n\tint m_nFieldOutput = 18\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_0\n{\n\tbool m_bScaleInitialRange = true\n\tint m_nEndCP = 11\n\tfloat m_flInputMax = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0\n{\n\tstring m_Notes = \"\"\n\tint m_nCP1 = 11\n\tfloat(3) m_vecCP1Pos = ( 0.000000, 0.000000, 1250.000000 )\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMax = 100.000000\n\tfloat m_fSpeedMin = 100.000000\n\tfloat m_fRadiusMax = 30.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 2.000000\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tint m_nFieldOutput = 18\n\tint m_nInputMax = 160\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2\n{\n\tfloat m_flOutputMax = 12.000000\n\tint m_nFieldOutput = 4\n\tint m_nInputMax = 160\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_4\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMax = 0.350000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nInputMax = 160\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_6\n{\n\tstring m_Notes = \"\"\n\tint m_nInputMax = 32\n\tint m_nFieldOutput = 16\n\tbool m_bActiveRange = true\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_8\n{\n\tstring m_Notes = \"\"\n\tint m_nInputMin = 30\n\tint m_nInputMax = 160\n\tint m_nFieldOutput = 16\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 0.000000\n\tbool m_bActiveRange = true\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMaxLength = 0.400000\n\tfloat m_flMinLength = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_10\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMin = 0.800000\n\tint m_nFieldOutput = 1\n\tint m_nInputMax = 160\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 300.000000\n\tfloat m_flEmissionDuration = 0.500000\n\tstring m_Notes = \"\"\n\tfloat m_flOpEndFadeInTime = 0.500000\n}\n\nC_OP_ConstrainDistanceToPath C_OP_ConstrainDistanceToPath_0\n{\n\tint m_nManualTField = 18\n\tstring m_Notes = \"\"\n\tfloat m_flMaxDistance0 = 0.000000\n\tfloat m_flTravelTime = 1.000000\n\tCPathParameters m_PathParameters = CPathParameters\n\t{\n\t\tfloat m_flMidPoint = 0.600000\n\t\tfloat m_flBulge = 650.000000\n\t\tint m_nEndControlPointNumber = 11\n\t}\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_spirit_trail_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 48.000000\n\tfloat m_flConstantLifespan = 0.500000\n\tint(4) m_ConstantColor = ( 91, 241, 158, 155 )\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_RemapParticleCountOnScalarEndCap_0,\n\t\t&C_OP_RemapParticleCountOnScalarEndCap_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_plasma_06.vtex\"\n\tfloat m_flTextureVScrollRate = -0.700000\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 1000.000061\n\tint m_nMaxTesselation = 2\n\tint m_nMinTesselation = 2\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime_min = -10.000000\n\tfloat m_flStartTime_max = -10.000000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.080000\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -16.000000, -16.000000, -16.000000 )\n\tfloat(3) m_vecOutputMax = ( 16.000000, 16.000000, 16.000000 )\n\tbool m_bAdditive = true\n}\n\nC_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_0\n{\n\tint m_nFieldOutput = 16\n\tint m_nInputMax = 10\n\tbool m_bBackwards = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_2\n{\n\tbool m_bScaleCurrent = true\n\tint m_nInputMax = 25\n\tbool m_bBackwards = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tfloat m_flOutputMax = 0.000000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flInputMax = 0.350000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tbool m_bActiveRange = true\n\tbool m_bScaleInitialRange = true\n\tint m_nFieldOutput = 7\n\tint m_nInputMax = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 0.350000\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 32.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 200 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_SetRandomControlPointPosition_0,\n\t\t&C_OP_SetRandomControlPointPosition_2,\n\t\t&C_OP_SetParentControlPointsToChildCP_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_spirits.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_spirits.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_d.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_e.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_a.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_f.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_g.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_f.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_g.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_h.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tbool m_bEndCap = true\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_endcap.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_i.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_j.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_h.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tfloat m_flStartFadeSize = 0.200000\n\tfloat m_flEndFadeSize = 0.250000\n\tfloat m_flMaxSize = 0.250000\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\maya_wispy\\\\wispy_small.vtex\"\n\tfloat m_flAnimationRate = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusScale = 22.000000\n\tfloat m_flStartFalloff = 0.100000\n\tint(4) m_ColorScale = ( 122, 233, 164, 255 )\n\tfloat m_flAlphaScale = 18.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\maya_wispy\\\\wispy_small.vtex\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 10.000000 )\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.100000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 5.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n\tfloat m_flOutputMin = -5.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 1.250000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = 150.000000\n\tfloat m_flEndTime = 9999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -2.000000\n\tfloat m_flEndTime = 99999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeStartTime = 0.200000\n\tint(4) m_ColorFade = ( 0, 76, 41, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_HitboxSetName = \"head\"\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_SetRandomControlPointPosition C_OP_SetRandomControlPointPosition_0\n{\n\tfloat(3) m_vecCPMinPos = ( 0.200000, 0.200000, 0.200000 )\n\tstring m_Notes = \"\"\n\tint m_nCP1 = 6\n\tfloat(3) m_vecCPMaxPos = ( 2.000000, 2.000000, 2.000000 )\n\tbool m_bUseWorldLocation = true\n}\n\nC_OP_SetRandomControlPointPosition C_OP_SetRandomControlPointPosition_2\n{\n\tfloat(3) m_vecCPMinPos = ( 0.200000, 0.200000, 0.200000 )\n\tstring m_Notes = \"\"\n\tint m_nCP1 = 7\n\tfloat(3) m_vecCPMaxPos = ( 2.000000, 2.000000, 2.000000 )\n\tbool m_bUseWorldLocation = true\n}\n\nC_OP_SetParentControlPointsToChildCP C_OP_SetParentControlPointsToChildCP_0\n{\n\tstring m_Notes = \"\"\n\tint m_nChildControlPoint = 6\n\tint m_nNumControlPoints = 2\n\tint m_nFirstSourcePoint = 6\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.200000\n\tint m_nFieldOutput = 16\n\tfloat m_flOutput = 0.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 3, 142, 85, 255 )\n\tint(4) m_ColorMin = ( 232, 251, 244, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 64.000000, 64.000000, 64.000000 )\n\tfloat(3) m_vecOutputMin = ( -64.000000, -64.000000, -64.000000 )\n\tbool m_bLocalSpace = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 16.000000\n\tfloat m_flOutputMin = 11.000000\n\tfloat m_flNoiseScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_HitboxSetName = \"head\"\n\tfloat m_flHitBoxScale = 0.800000\n\tstring m_Notes = \"\"\n\tbool m_bLocalCoords = true\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bDisableOperator = true\n\tfloat(3) m_OffsetMin = ( 8.000000, 0.000000, 0.000000 )\n\tfloat(3) m_OffsetMax = ( 12.000000, 0.000000, 0.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 3.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 240 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tfloat m_flStartFadeSize = 0.200000\n\tfloat m_flEndFadeSize = 0.250000\n\tfloat m_flMaxSize = 0.250000\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\maya_wispy\\\\wispy_small.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 0.500000\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusScale = 2.500000\n\tfloat m_flAlphaScale = 2.000000\n\tfloat m_flStartFalloff = 0.100000\n\tint(4) m_ColorScale = ( 122, 233, 164, 255 )\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\maya_wispy\\\\wispy_small.vtex\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -8.000000 )\n\tfloat m_fDrag = 0.100000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.400000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 5.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n\tfloat m_flOutputMin = -5.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 3.000000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 9999.000000\n\tfloat m_Rate = 150.000000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -2.000000\n\tint m_nField = 16\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 0, 76, 41, 255 )\n\tfloat m_flFadeStartTime = 0.200000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLifeTimeFadeEnd = 3.000000\n\tstring m_HitboxSetName = \"hands\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.000000\n\tfloat m_fLifetimeMax = 2.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 232, 251, 244, 255 )\n\tint(4) m_ColorMax = ( 3, 142, 85, 255 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bLocalSpace = true\n\tfloat(3) m_vecOutputMin = ( -64.000000, -64.000000, -64.000000 )\n\tfloat(3) m_vecOutputMax = ( 64.000000, 64.000000, 64.000000 )\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 2.000000\n\tfloat m_flOutputMin = 11.000000\n\tfloat m_flOutputMax = 18.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMin = -4.000000\n\tfloat m_flDegreesMax = 4.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flHitBoxScale = 0.800000\n\tstring m_HitboxSetName = \"hands\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 11\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 8.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_a.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 60\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 76, 203, 121, 100 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_OffsetVectorToVector_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_RandomLifeTime_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_02.vtex\"\n\tbool m_bIgnoreDT = true\n\tstring m_Notes = \"\"\n\tfloat m_flLengthFadeInTime = 0.500000\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n\tstring m_HitboxSetName = \"head\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.600000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 10.000000\n\tfloat m_flRadiusMax = 38.000000\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tfloat m_flHitBoxScale = 0.800000\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecDirectionBias = ( 0.500000, 0.000000, 1.000000 )\n\tbool m_bLocalCoords = true\n\tstring m_HitboxSetName = \"head\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMinLength = 1.000000\n\tstring m_Notes = \"\"\n\tfloat m_flMaxLength = 1.000000\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tfloat(3) m_vecOutputMax = ( 0.000000, 0.000000, 85.000000 )\n\tfloat(3) m_vecOutputMin = ( 0.000000, 0.000000, 40.000000 )\n\tint m_nFieldOutput = 2\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, -2.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, -2.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 10.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 60\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 76, 203, 121, 140 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_OffsetVectorToVector_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\steam\\\\steam.vtex\"\n\tfloat m_flLengthFadeInTime = 0.500000\n\tfloat m_flAnimationRate = 1.000000\n\tstring m_Notes = \"\"\n\tbool m_bIgnoreDT = true\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tfloat m_flPrevPosScale = 0.900000\n\tstring m_HitboxSetName = \"head\"\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.600000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.400000\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 38.000000\n\tfloat m_flRadiusMin = 10.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_HitboxSetName = \"head\"\n\tbool m_bLocalCoords = true\n\tfloat(3) m_vecDirectionBias = ( 0.500000, 0.000000, 1.000000 )\n\tstring m_Notes = \"\"\n\tfloat m_flHitBoxScale = 0.800000\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMaxLength = 1.000000\n\tstring m_Notes = \"\"\n\tfloat m_flMinLength = 1.000000\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 2\n\tfloat(3) m_vecOutputMin = ( 0.000000, 0.000000, 90.000000 )\n\tfloat(3) m_vecOutputMax = ( 0.000000, 0.000000, 140.000000 )\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tbool m_bLocalCoords = true\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, -2.000000 )\n\tfloat(3) m_OffsetMax = ( 2.000000, 0.000000, -2.000000 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.000000\n\tfloat m_fLifetimeMax = 2.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 10.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 60\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 76, 203, 121, 100 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_OffsetVectorToVector_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\steam\\\\steam.vtex\"\n\tbool m_bIgnoreDT = true\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n\tstring m_HitboxSetName = \"hands\"\n\tfloat m_flPrevPosScale = 0.850000\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.600000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 10.000000\n\tfloat m_flRadiusMax = 48.000000\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tfloat m_flHitBoxScale = 0.800000\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecDirectionBias = ( 0.500000, 0.000000, 1.000000 )\n\tbool m_bLocalCoords = true\n\tstring m_HitboxSetName = \"hands\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMinLength = 0.750000\n\tstring m_Notes = \"\"\n\tfloat m_flMaxLength = 1.100000\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tfloat(3) m_vecOutputMax = ( 0.000000, 0.000000, 150.000000 )\n\tfloat(3) m_vecOutputMin = ( 0.000000, 0.000000, 90.000000 )\n\tint m_nFieldOutput = 2\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 1\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 10.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_f.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 68, 199, 114, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_OffsetVectorToVector_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tfloat m_flSelfIllumAmount = 4.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_jagged_01.vtex\"\n\tbool m_bIgnoreDT = true\n\tstring m_Notes = \"\"\n\tfloat m_flLengthFadeInTime = 2.000000\n\tint m_nVertCropField = 18\n\tint(4) m_trailTint = ( 0, 128, 0, 255 )\n\tfloat m_flTrailEndAlpha = -0.000000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tstring m_Notes = \"\"\n\tint m_nField = 18\n\tfloat m_RateMin = -1.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.650000\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 20.000000\n\tfloat m_flRadiusMax = 68.000000\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tfloat m_flHitBoxScale = 0.700000\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecDirectionBias = ( 0.000000, 0.000000, 0.180000 )\n\tbool m_bLocalCoords = true\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMinLength = 1.000000\n\tstring m_Notes = \"\"\n\tfloat m_flMaxLength = 2.000000\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tfloat(3) m_vecOutputMax = ( 0.000000, 0.000000, 345.000000 )\n\tfloat(3) m_vecOutputMin = ( 0.000000, 0.000000, 220.000000 )\n\tint m_nFieldOutput = 2\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 1.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMax = 2.000000\n\tint m_nFieldOutput = 18\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 20\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 35\n\tint m_nAlphaMax = 90\n\tfloat m_flAlphaRandExponent = 2.500000\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 80.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_g.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 68, 199, 114, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_OffsetVectorToVector_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tfloat m_flSelfIllumAmount = 4.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_jagged_01.vtex\"\n\tint m_nVertCropField = 18\n\tfloat m_flLengthFadeInTime = 2.000000\n\tstring m_Notes = \"\"\n\tbool m_bIgnoreDT = true\n\tint(4) m_trailTint = ( 0, 128, 0, 255 )\n\tfloat m_flTrailEndAlpha = -0.000000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tfloat m_RateMin = -1.000000\n\tint m_nField = 18\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.650000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 98.000000\n\tfloat m_flRadiusMin = 50.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tbool m_bLocalCoords = true\n\tfloat(3) m_vecDirectionBias = ( 0.000000, 0.000000, 0.180000 )\n\tstring m_Notes = \"\"\n\tfloat m_flHitBoxScale = 0.700000\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMaxLength = 3.000000\n\tstring m_Notes = \"\"\n\tfloat m_flMinLength = 1.000000\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 2\n\tfloat(3) m_vecOutputMin = ( 0.000000, 0.000000, 420.000000 )\n\tfloat(3) m_vecOutputMax = ( 0.000000, 0.000000, 545.000000 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.250000\n\tfloat m_fLifetimeMax = 2.000000\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tint m_nFieldOutput = 18\n\tfloat m_flMax = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tint m_nFieldOutput = 20\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tfloat m_flAlphaRandExponent = 2.500000\n\tint m_nAlphaMax = 30\n\tint m_nAlphaMin = 5\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 80.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_h.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 60\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 76, 203, 121, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_OffsetVectorToVector_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\steam\\\\steam.vtex\"\n\tfloat m_flAnimationRate = 1.000000\n\tstring m_Notes = \"\"\n\tbool m_bIgnoreDT = true\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.600000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.400000\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.200000\n\tint m_nFieldOutput = 16\n\tfloat m_flOutput = 0.000000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 68.000000\n\tfloat m_flRadiusMin = 40.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMaxLength = 1.100000\n\tstring m_Notes = \"\"\n\tfloat m_flMinLength = 0.750000\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 2\n\tfloat(3) m_vecOutputMin = ( -20.000000, -20.000000, 390.000000 )\n\tfloat(3) m_vecOutputMax = ( 20.000000, 20.000000, 250.000000 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.000000\n\tfloat m_fLifetimeMax = 2.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fRadiusMin = 8.000000\n\tfloat m_fRadiusMax = 10.000000\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 92.000000, 0.000000, 0.000000 )\n\tfloat(3) m_OffsetMax = ( 96.000000, 0.000000, 0.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 10.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_i.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 60\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 95.000000\n\tint(4) m_ConstantColor = ( 54, 176, 97, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\groundcracks_light_2.vtex\"\n\tint m_nOrientationType = 2\n\tfloat m_flAnimationRate = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 0.000000\n\tbool m_bDisableOperator = true\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 1\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tbool m_bLocalCoords = true\n\tfloat(3) m_OffsetMax = ( 92.000000, 0.000000, 20.000000 )\n\tfloat(3) m_OffsetMin = ( 92.000000, 0.000000, 20.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.000000 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_j.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 60\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 120.000000\n\tint(4) m_ConstantColor = ( 79, 240, 136, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_05.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 0.500000\n\tint m_nOrientationType = 2\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.400000\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.200000\n\tint m_nFieldOutput = 16\n\tfloat m_flOutput = 0.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.000000\n\tfloat m_fLifetimeMax = 2.000000\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 82.000000, -3.000000, 20.000000 )\n\tfloat(3) m_OffsetMax = ( 82.000000, -3.000000, 20.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 54 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_Spin_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_c_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\steam\\\\steam.vtex\"\n\tfloat m_flAnimationRate = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.500000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 130.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 9999.000000\n\tfloat m_Rate = 150.000000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -8.000000\n\tint m_nField = 16\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tbool m_bEaseInOut = false\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 98, 221, 164, 255 )\n\tfloat m_flFadeStartTime = 0.200000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n\tstring m_HitboxSetName = \"head\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_Spin C_OP_Spin_0\n{\n\tint m_nSpinRateDegrees = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 2.000000\n\tfloat m_fLifetimeMax = 3.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 0, 152, 96, 255 )\n\tint(4) m_ColorMax = ( 1, 79, 47, 255 )\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 2.000000\n\tfloat m_flOutputMin = 12.000000\n\tfloat m_flOutputMax = 22.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMin = -84.000000\n\tfloat m_flDegreesMax = 84.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tbool m_bLocalCoords = true\n\tfloat(3) m_vecDirectionBias = ( 4.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n\tfloat m_flHitBoxScale = 0.700000\n\tstring m_HitboxSetName = \"head\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 2.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_c_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 34 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 0.300000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 130.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n\tbool m_bDisableOperator = true\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = 150.000000\n\tfloat m_flEndTime = 9999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -8.000000\n\tfloat m_flEndTime = 99999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeStartTime = 0.200000\n\tint(4) m_ColorFade = ( 0, 76, 41, 255 )\n\tstring m_Notes = \"\"\n\tbool m_bDisableOperator = true\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_HitboxSetName = \"head\"\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 3.000000\n\tfloat m_fLifetimeMin = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 3, 142, 85, 255 )\n\tint(4) m_ColorMin = ( 0, 152, 96, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 22.000000\n\tfloat m_flOutputMin = 12.000000\n\tfloat m_flNoiseScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 64.000000\n\tfloat m_flDegreesMin = -64.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_HitboxSetName = \"head\"\n\tfloat m_flHitBoxScale = 0.700000\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecDirectionBias = ( 4.000000, 0.000000, 0.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 1\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 2.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_d.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 12\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\burst01.vtex\"\n\tstring m_Notes = \"\"\n\tbool m_bDisableOperator = true\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 13.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 3.000000\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartScale = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = 150.000000\n\tfloat m_flEndTime = 9999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -8.000000\n\tfloat m_flEndTime = 99999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeStartTime = 0.200000\n\tint(4) m_ColorFade = ( 0, 76, 41, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_HitboxSetName = \"hands\"\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 3.000000\n\tfloat m_fLifetimeMin = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 0, 158, 93, 255 )\n\tint(4) m_ColorMin = ( 0, 191, 121, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 12.000000\n\tfloat m_flOutputMin = 8.000000\n\tfloat m_flNoiseScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_HitboxSetName = \"hands\"\n\tfloat m_flHitBoxScale = 0.800000\n\tstring m_Notes = \"\"\n\tbool m_bLocalCoords = true\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 40\n\tint m_nAlphaMax = 80\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 5.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_e.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 120\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\burst01.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.500000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 13.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 3.000000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 9999.000000\n\tfloat m_Rate = 150.000000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -8.000000\n\tint m_nField = 16\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 0, 76, 41, 255 )\n\tfloat m_flFadeStartTime = 0.200000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 2.000000\n\tfloat m_fLifetimeMax = 3.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 0, 191, 121, 255 )\n\tint(4) m_ColorMax = ( 0, 158, 93, 255 )\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 2.000000\n\tfloat m_flOutputMin = 8.000000\n\tfloat m_flOutputMax = 12.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMin = -4.000000\n\tfloat m_flDegreesMax = 4.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tbool m_bLocalCoords = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 120\n\tint m_nAlphaMin = 40\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 50.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_endcap.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 120\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 32.000000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_BasicMovement_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_InitialVelocityNoise_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_explode.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\yellowflare2.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 13.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 4.000000\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tbool m_bOffset = true\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 128.000000, 128.000000, 128.000000 )\n\tfloat(3) m_vecOutputMin = ( -128.000000, -128.000000, -128.000000 )\n\tint m_nFieldOutput = 0\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_FrequencyMax = ( 2.000000, 2.000000, 2.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.200000, 0.200000, 0.200000 )\n\tfloat(3) m_RateMax = ( 64.000000, 64.000000, 64.000000 )\n\tfloat(3) m_RateMin = ( -64.000000, -64.000000, -64.000000 )\n\tbool m_bOffset = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.500000\n\tfloat m_fLifetimeMax = 0.750000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 80, 227, 173, 255 )\n\tint(4) m_ColorMax = ( 120, 255, 199, 255 )\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flHitBoxScale = 0.900000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 64.000000\n\tfloat m_flRadiusMin = 32.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 64.000000, 64.000000, 64.000000 )\n\tfloat(3) m_vecOutputMin = ( -64.000000, -64.000000, -64.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_f.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 120\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 180 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_LockToBone_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_CreateOnModel_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\softglow.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 13.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tint m_nOpEndCapState = 0\n\tfloat m_flEndScale = 3.000000\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartScale = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = 200.000000\n\tfloat m_flEndTime = 9999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -2.000000\n\tfloat m_flEndTime = 99999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tbool m_bDisableOperator = true\n\tfloat m_flFadeStartTime = 0.200000\n\tint(4) m_ColorFade = ( 0, 76, 41, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.500000\n\tfloat m_fLifetimeMin = 1.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 0, 158, 93, 255 )\n\tint(4) m_ColorMin = ( 0, 191, 121, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tfloat m_flHitBoxScale = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 50.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_g.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 220.000000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0,\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_LockToBone_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_i.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flAlphaScale = 18.000000\n\tfloat m_flStartFalloff = 0.450000\n\tint(4) m_ColorScale = ( 0, 158, 93, 255 )\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.500000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 13.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 1.250000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 9999.000000\n\tfloat m_Rate = 150.000000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -8.000000\n\tint m_nField = 16\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 0, 76, 41, 255 )\n\tfloat m_flFadeStartTime = 0.200000\n\tbool m_bDisableOperator = true\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.500000\n\tfloat m_fLifetimeMax = 1.500000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 0, 191, 121, 255 )\n\tint(4) m_ColorMax = ( 0, 158, 93, 255 )\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 280.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 280.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 3.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_h.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 8\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_LockToBone_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusScale = 3.000000\n\tfloat m_flAlphaScale = 5.000000\n\tfloat m_flStartFalloff = 0.300000\n\tint(4) m_ColorScale = ( 0, 158, 93, 255 )\n\tstring m_hTexture = \"materials\\\\particle\\\\softglow.vtex\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.500000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 13.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 3.000000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 9999.000000\n\tfloat m_Rate = 150.000000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -8.000000\n\tint m_nField = 16\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.250000\n\tfloat m_fLifetimeMax = 1.500000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 0, 191, 121, 255 )\n\tint(4) m_ColorMax = ( 0, 158, 93, 255 )\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 64.000000, 0.000000, 50.000000 )\n\tfloat(3) m_OffsetMax = ( 64.000000, 0.000000, 50.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 5.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_i.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 520.000000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0,\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tint(4) m_ColorScale = ( 0, 158, 93, 255 )\n\tfloat m_flStartFalloff = 0.100000\n\tstring m_Notes = \"\"\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n\tstring m_Notes = \"\"\n\tbool m_bDisableOperator = true\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 13.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 1.250000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = 150.000000\n\tfloat m_flEndTime = 9999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -8.000000\n\tfloat m_flEndTime = 99999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tbool m_bDisableOperator = true\n\tfloat m_flFadeStartTime = 0.200000\n\tint(4) m_ColorFade = ( 0, 76, 41, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.500000\n\tfloat m_fLifetimeMin = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 0, 158, 93, 255 )\n\tint(4) m_ColorMin = ( 0, 191, 121, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tbool m_bLocalCoords = true\n\tfloat(3) m_OffsetMax = ( 80.000000, 0.000000, 200.000000 )\n\tfloat(3) m_OffsetMin = ( 80.000000, 0.000000, 200.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 3.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_explode.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"particles/units/heroes/hero_skeletonking/wraith_king_reincarnate_explode.vpcf\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 32.000000\n\tfloat m_flConstantLifespan = 0.650000\n\tint(4) m_ConstantColor = ( 54, 245, 139, 255 )\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RemapParticleCountOnScalarEndCap_0,\n\t\t&C_OP_RemapParticleCountOnScalarEndCap_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_CreationNoise_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_smoke_03.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVScrollRate = -0.200000\n\tfloat m_flTextureVWorldSize = 1428.571533\n\tint m_nMaxTesselation = 2\n\tint m_nMinTesselation = 2\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tint(4) m_ColorScale = ( 54, 245, 139, 255 )\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusScale = 3.500000\n\tfloat m_flAlphaScale = 10.000000\n\tfloat m_flStartFalloff = 0.500000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_smoke_03.vtex\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.180000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.600000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.100000\n}\n\nC_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bBackwards = true\n\tint m_nInputMax = 10\n\tint m_nFieldOutput = 16\n}\n\nC_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_2\n{\n\tstring m_Notes = \"\"\n\tbool m_bBackwards = true\n\tint m_nInputMax = 25\n\tbool m_bScaleCurrent = true\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 7\n\tfloat m_flOutputMax = 0.400000\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 24.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 48.000000\n\tint(4) m_ConstantColor = ( 91, 241, 158, 15 )\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RemapParticleCountOnScalarEndCap_0,\n\t\t&C_OP_RemapParticleCountOnScalarEndCap_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_plasma_06.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVScrollRate = -0.170000\n\tfloat m_flTextureVWorldSize = 250.000015\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.750000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flStartTime_max = -10.000000\n\tfloat m_flStartTime_min = -10.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bBackwards = true\n\tint m_nInputMax = 10\n\tint m_nFieldOutput = 16\n}\n\nC_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_2\n{\n\tstring m_Notes = \"\"\n\tbool m_bBackwards = true\n\tint m_nInputMax = 25\n\tbool m_bScaleCurrent = true\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 32.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_spirits.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 6\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( -30.000000, -30.000000, -30.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 30.000000, 30.000000, 30.000000 )\n\tfloat m_flCullRadius = -1.000000\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 8.000000\n\tint(4) m_ConstantColor = ( 0, 248, 163, 255 )\n\tint m_nConstantSequenceNumber1 = 1\n\tfloat m_flMaxDrawDistance = 4000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 0.100000\n\tbool m_bShouldSort = false\n\tint m_nMinCPULevel = 1\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_SetControlPointToCenter_0,\n\t\t&C_OP_VelocityMatchingForce_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_MaxVelocity_0,\n\t\t&C_OP_SetPerChildControlPoint_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_MovementRotateParticleAroundAxis_0,\n\t\t&C_OP_SetControlPointOrientation_0,\n\t\t&C_OP_SetControlPointRotation_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_NormalOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0,\n\t\t&C_OP_TurbulenceForce_0,\n\t\t&C_OP_TwistAroundAxis_0,\n\t\t&C_OP_AttractToControlPoint_2,\n\t\t&C_OP_AttractToControlPoint_4,\n\t\t&C_OP_AttractToControlPoint_6,\n\t\t&C_OP_LocalAccelerationForce_0,\n\t\t&C_OP_AttractToControlPoint_8\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t&C_OP_PlanarConstraint_0,\n\t\t&C_OP_ConstrainDistance_0\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointToCenter C_OP_SetControlPointToCenter_0\n{\n\tint m_nCP1 = 2\n\tfloat(3) m_vecCP1Pos = ( 0.000000, 0.000000, 32.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_VelocityMatchingForce C_OP_VelocityMatchingForce_0\n{\n\tfloat m_flDirScale = 0.003313\n\tfloat m_flSpdScale = 0.002500\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 410.000000, 410.000000, 410.000000 )\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -410.000000, -410.000000, -410.000000 )\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.010000\n\tbool m_bOffset = true\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 10.000000 )\n\tfloat m_fDrag = 0.090000\n\tstring m_Notes = \"\"\n}\n\nC_OP_MaxVelocity C_OP_MaxVelocity_0\n{\n\tbool m_bDisableOperator = true\n\tfloat m_flMaxVelocity = 1750.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetPerChildControlPoint C_OP_SetPerChildControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tint m_nNumControlPoints = 6\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_FrequencyMin = ( 0.250000, 0.250000, 0.250000 )\n\tstring m_Notes = \"\"\n\tbool m_bOffset = true\n\tfloat(3) m_RateMin = ( -100.000000, -100.000000, -100.000000 )\n\tfloat(3) m_RateMax = ( 100.000000, 100.000000, 100.000000 )\n\tfloat(3) m_FrequencyMax = ( 0.500000, 0.500000, 0.500000 )\n\tbool m_bProportional = false\n\tfloat m_flEndTime_min = 99999998430674944.000000\n\tfloat m_flEndTime_max = 99999998430674944.000000\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDecayTime = 0.250000\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.250000\n\tfloat m_flOutput = 0.000000\n}\n\nC_OP_MovementRotateParticleAroundAxis C_OP_MovementRotateParticleAroundAxis_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRotRate = 32.000000\n}\n\nC_OP_SetControlPointOrientation C_OP_SetControlPointOrientation_0\n{\n\tstring m_Notes = \"\"\n\tint m_nCP = 5\n\tfloat(3) m_vecRotationB = ( 360.000000, 360.000000, 360.000000 )\n\tbool m_bRandomize = true\n\tbool m_bUseWorldLocation = true\n\tbool m_bSetOnce = true\n}\n\nC_OP_SetControlPointRotation C_OP_SetControlPointRotation_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecRotAxis = ( -0.500000, 0.700000, 1.200000 )\n\tfloat m_flRotRate = 87.000000\n\tint m_nCP = 5\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMax = 448.000000\n\tfloat(3) m_vecDistanceBias = ( 0.010000, 0.010000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 8.000000\n\tfloat m_fLifetimeMax = 22.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMin = -5.000000\n\tfloat m_flDegreesMax = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMin = ( -100.000000, -100.000000, 0.000000 )\n\tfloat(3) m_vecOutputMax = ( 100.000000, 100.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_NormalOffset C_INIT_NormalOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( -1.000000, -1.000000, -1.000000 )\n\tfloat(3) m_OffsetMax = ( 1.000000, 1.000000, 1.000000 )\n\tbool m_bNormalize = true\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 10.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 6\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tfloat m_fForceAmount = 25.000000\n\tfloat m_fFalloffPower = -0.700000\n\tfloat(3) m_vecComponentScale = ( 1.000000, 1.000000, 0.150000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_TurbulenceForce C_OP_TurbulenceForce_0\n{\n\tfloat(3) m_vecNoiseAmount0 = ( 1450.000000, 1450.000000, 450.000000 )\n\tfloat m_flNoiseCoordScale1 = 0.100000\n\tfloat(3) m_vecNoiseAmount1 = ( -1510.000000, -1510.000000, -110.000000 )\n\tfloat m_flNoiseCoordScale2 = 0.335000\n\tfloat(3) m_vecNoiseAmount2 = ( 1100.000000, 1100.000000, 100.000000 )\n\tfloat m_flNoiseCoordScale3 = 0.220000\n\tfloat(3) m_vecNoiseAmount3 = ( -1300.000000, -1300.000000, -300.000000 )\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseCoordScale0 = 0.155000\n}\n\nC_OP_TwistAroundAxis C_OP_TwistAroundAxis_0\n{\n\tfloat(3) m_TwistAxis = ( 0.100000, -0.115000, 1.000000 )\n\tbool m_bLocalSpace = true\n\tfloat m_fForceAmount = -1350.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_2\n{\n\tbool m_bDisableOperator = true\n\tint m_nControlPointNumber = 2\n\tfloat m_fFalloffPower = 0.500000\n\tfloat m_fForceAmount = -500.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_4\n{\n\tint m_nControlPointNumber = 2\n\tfloat m_fFalloffPower = -0.010000\n\tfloat m_fForceAmount = -150.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_6\n{\n\tfloat m_flOpEndFadeInTime = 0.200000\n\tfloat m_flOpStartFadeOutTime = 0.200000\n\tfloat m_flOpEndFadeOutTime = 0.400000\n\tfloat m_flOpFadeOscillatePeriod = 3.000000\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = 50.000000\n\tfloat m_fFalloffPower = -0.500000\n\tfloat(3) m_vecComponentScale = ( 0.750000, 1.300000, 0.190000 )\n\tint m_nScaleCP = 6\n\tint m_nScaleCPField = 2\n}\n\nC_OP_LocalAccelerationForce C_OP_LocalAccelerationForce_0\n{\n\tstring m_Notes = \"\"\n\tint m_nCP = 5\n\tfloat(3) m_vecAccel = ( 250.000000, -100.000000, 50.000000 )\n\tint m_nScaleCP = 6\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_8\n{\n\tfloat m_flOpEndFadeOutTime = 0.700000\n\tfloat m_flOpFadeOscillatePeriod = 8.000000\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = 950.000000\n\tfloat m_fFalloffPower = 0.000000\n\tfloat(3) m_vecComponentScale = ( 1.000000, 1.000000, 0.000000 )\n\tint m_nScaleCP = 6\n\tint m_nScaleCPField = 1\n}\n\nC_OP_PlanarConstraint C_OP_PlanarConstraint_0\n{\n\tbool m_bGlobalNormal = true\n\tfloat(3) m_PointOnPlane = ( 0.000000, 0.000000, 300.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ConstrainDistance C_OP_ConstrainDistance_0\n{\n\tfloat m_fMinDistance = 190.000000\n\tfloat(3) m_CenterOffset = ( 0.000000, 0.000000, 400.000000 )\n\tfloat m_fMaxDistance = 360.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 110.000000\n\tint(4) m_ConstantColor = ( 50, 239, 134, 255 )\n\tint m_nConstantSequenceNumber = 4\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_SetChildControlPoints_0,\n\t\t&C_OP_SetControlPointOrientation_0,\n\t\t&C_OP_StopAfterCPDuration_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t&C_OP_ConstrainDistanceToPath_0\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_skull.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_i.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_f.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_e.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tbool m_bEndCap = true\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_h.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_g.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_sphere_glow.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_d.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_detail.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_sphere_glow_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_warmup.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tfloat m_flSelfIllumAmount = 2.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tfloat m_flMinLength = 64.000000\n\tstring m_Notes = \"\"\n\tfloat m_flLengthFadeInTime = 0.100000\n\tfloat m_flMaxLength = 100.000000\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorScale = ( 50, 239, 174, 255 )\n\tfloat m_flStartFalloff = 0.100000\n\tfloat m_flAlphaScale = 6.000000\n\tfloat m_flRadiusScale = 3.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_SetChildControlPoints C_OP_SetChildControlPoints_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bSetOrientation = true\n\tint m_nFirstControlPoint = 3\n}\n\nC_OP_SetControlPointOrientation C_OP_SetControlPointOrientation_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecRotation = ( -90.000000, 0.000000, 0.000000 )\n\tfloat(3) m_vecRotationB = ( -90.000000, 0.000000, 0.000000 )\n\tbool m_bUseWorldLocation = true\n}\n\nC_OP_StopAfterCPDuration C_OP_StopAfterCPDuration_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDuration = 1.250000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}\n\nC_OP_ConstrainDistanceToPath C_OP_ConstrainDistanceToPath_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMaxDistance0 = 0.000000\n\tfloat m_flTravelTime = 1.250000\n\tCPathParameters m_PathParameters = CPathParameters\n\t{\n\t\tfloat m_flBulge = 0.500000\n\t\tint m_nEndControlPointNumber = 1\n\t\tint m_nBulgeControl = 2\n\t}\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_ember.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0,\n\t\t&C_OP_AttractToControlPoint_2\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\yellowflare.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n\tfloat m_fDrag = 0.090000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 0.500000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.200000\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 )\n\tfloat(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 )\n\tbool m_bAdditive = true\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 12, 50, 38, 255 )\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 33, 255, 122, 255 )\n\tint(4) m_ColorMax = ( 50, 239, 174, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.750000\n\tfloat m_fLifetimeMax = 1.500000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 3.000000\n\tfloat m_flRadiusMax = 7.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 200\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMax = 350.000000\n\tfloat m_fSpeedMin = 100.000000\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_fRadiusMax = 16.000000\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScaleLoc = 0.250000\n\tfloat(3) m_vecOutputMin = ( -200.000000, -400.000000, -400.000000 )\n\tfloat(3) m_vecOutputMax = ( 600.000000, 400.000000, 400.000000 )\n\tbool m_bLocalSpace = true\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 5\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 500.000000\n\tfloat m_flEmissionDuration = 0.400000\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_fForceAmount = -2000.000000\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = -4000.000000\n\tfloat m_fFalloffPower = 0.100000\n\tfloat m_flOpEndFadeOutTime = 0.200000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_ember_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0,\n\t\t&C_OP_AttractToControlPoint_2\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.125000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -255.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 )\n\tfloat(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.300003\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 12, 50, 38, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.500000\n\tfloat m_fLifetimeMin = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 7.000000\n\tfloat m_flRadiusMin = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.250000 )\n\tfloat m_fRadiusMax = 16.000000\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_fSpeedMin = 600.000000\n\tfloat m_fSpeedMax = 950.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 400.000000, 400.000000, 400.000000 )\n\tfloat(3) m_vecOutputMin = ( -400.000000, -400.000000, -400.000000 )\n\tfloat m_flNoiseScaleLoc = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 63\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tbool m_bDisableOperator = true\n\tfloat m_fForceAmount = -2000.000000\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_2\n{\n\tbool m_bDisableOperator = true\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tfloat m_fFalloffPower = 0.100000\n\tfloat m_fForceAmount = -4000.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 50, 239, 174, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_ember_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_d.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_e.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_light.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_f.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_ember.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flStartFadeSize = 0.200000\n\tfloat m_flEndFadeSize = 0.250000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\maya_wispy\\\\wispy_v2.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 2.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndFadeInTime = 0.150000\n\tfloat m_flStartAlpha = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 3.000000\n\tfloat m_flBias = 0.700000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.400000\n\tfloat m_fLifetimeMin = 0.400000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 1\n\tfloat m_fSpeedMax = 100.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( -230.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -240.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 18.000000\n\tfloat m_flRadiusMax = 22.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 3\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 255, 255, 155 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flStartFadeSize = 0.400000\n\tfloat m_flEndFadeSize = 0.650000\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 2.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 100.000000 )\n\tfloat m_fDrag = 0.050000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.700000\n\tfloat m_flEndScale = 3.000000\n\tfloat m_flStartScale = 0.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 1.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -240.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( -230.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 100.000000\n\tint m_nControlPointNumber = 1\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 72.000000\n\tfloat m_flRadiusMin = 44.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 36, 14, 0, 255 )\n\tint(4) m_ColorMax = ( 14, 0, 0, 255 )\n\tint m_nFieldOutput = 22\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 8\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 4\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 86, 251, 152, 225 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 2.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tfloat m_fDrag = 0.100000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.800000\n\tfloat m_flEndScale = 4.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.200000\n\tfloat m_fLifetimeMax = 0.200000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 100.000000\n\tint m_nControlPointNumber = 1\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 80.000000\n\tfloat m_flRadiusMin = 80.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 3\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_d.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 200, 0, 0, 175 )\n\tint m_nConstantSequenceNumber = 4\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tfloat m_flSelfIllumAmount = 2.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flLengthFadeInTime = 0.200000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.150000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -300.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.200000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 93, 20, 0, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.100000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 140.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMin = 500.000000\n\tint m_nControlPointNumber = 1\n\tfloat m_fSpeedMax = 800.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -140.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 8.000000\n\tfloat m_flRadiusMax = 12.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMaxLength = 0.200000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 8, 192, 190, 255 )\n\tint(4) m_ColorMax = ( 94, 255, 208, 255 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 256\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_e.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 50, 239, 174, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flStartFadeSize = 0.200000\n\tfloat m_flEndFadeSize = 0.250000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\maya_wispy\\\\wispy_v2.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 4.000000\n\tfloat m_flBias = 0.800000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.750000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 1\n\tfloat m_fSpeedMax = 400.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 30.000000\n\tfloat m_flRadiusMax = 40.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 4\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_f.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 40, 177, 108, 245 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomRotationSpeed_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tint m_bAdditive = 1\n\tfloat m_flZoomRate1 = 4.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3b.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.250000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tfloat m_fDrag = 0.100000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.680000\n\tfloat m_flEndScale = 5.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.800000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeEndTime = 0.750000\n\tfloat m_flFadeStartTime = 0.250000\n\tint(4) m_ColorFade = ( 42, 105, 73, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.000000\n\tfloat m_fLifetimeMax = 1.500000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 400.000000\n\tint m_nControlPointNumber = 1\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 40.000000\n\tfloat m_flRadiusMin = 30.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 8\n}\n\nC_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMax = 50.000000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 4\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_light.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 120.000000\n\tint(4) m_ConstantColor = ( 95, 251, 161, 225 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0,\n\t\t&C_OP_RenderScreenShake_0,\n\t\t&C_OP_RenderScreenShake_2\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flAlphaScale = 6.000000\n\tfloat m_flStartFalloff = 0.100000\n\tint(4) m_ColorScale = ( 32, 215, 131, 255 )\n\tstring m_hTexture = \"materials\\\\particle\\\\fire_particle_2\\\\fire_particle_2.vtex\"\n}\n\nC_OP_RenderScreenShake C_OP_RenderScreenShake_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFilterCP = 9\n\tfloat m_flAmplitudeScale = 12.000000\n\tfloat m_flFrequencyScale = 3.000000\n\tfloat m_flRadiusScale = 2000.000000\n\tfloat m_flDurationScale = 0.350000\n}\n\nC_OP_RenderScreenShake C_OP_RenderScreenShake_2\n{\n\tfloat m_flDurationScale = 0.350000\n\tfloat m_flRadiusScale = 2000.000000\n\tfloat m_flFrequencyScale = 3.000000\n\tfloat m_flAmplitudeScale = 12.000000\n\tint m_nFilterCP = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 )\n\tfloat m_fDrag = 0.100000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.800000\n\tfloat m_flEndScale = 5.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 1\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 44, 248, 149, 155 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_VelocityRandom_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch_smoke.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tint m_bAdditive = 1\n\tfloat m_flZoomRate1 = 4.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3b.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 2.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 100.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.000000\n\tfloat m_flBias = 0.700000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 63, 38, 38, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.400000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMax = 100.000000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 44.000000\n\tfloat m_flRadiusMax = 72.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 8\n}\n\nC_INIT_VelocityRandom C_INIT_VelocityRandom_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 230.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 200.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 3\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 4\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 146, 255, 195, 215 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 2.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 4.000000\n\tfloat m_flBias = 0.800000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.200000\n\tfloat m_fLifetimeMin = 0.200000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMax = 100.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 50.000000\n\tfloat m_flRadiusMax = 50.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 3\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch_smoke.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tint m_nInitialParticles = 2\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 15 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tint m_bAdditive = 1\n\tfloat m_flZoomRate1 = 4.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3b.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 60.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.900000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 130.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.500000\n\tfloat m_flBias = 0.350000\n\tfloat m_flEndScale = 2.000000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 9\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flEndTime_min = 0.200000\n\tfloat m_flEndTime_max = 0.200000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 17, 169, 103, 255 )\n\tstring m_Notes = \"\"\n\tfloat m_flFadeEndTime = 0.500000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.500000\n\tfloat m_fLifetimeMax = 2.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 0, 255, 126, 255 )\n\tint(4) m_ColorMax = ( 0, 255, 180, 255 )\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fRadiusMax = 1.000000\n\tint m_nControlPointNumber = 9\n\tfloat m_fSpeedMax = 35.000000\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bLocalSpace = true\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 2.000000\n\tfloat m_flOutputMin = 32.000000\n\tfloat m_flOutputMax = 48.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMin = -4.000000\n\tfloat m_flDegreesMax = 4.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 8\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 38.000000\n\tfloat m_flOpStartFadeOutTime = 0.500000\n\tfloat m_flOpEndFadeOutTime = 2.000000\n\tfloat m_flEmissionDuration = 2.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_skull.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 1\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_skull_lv.vpcf\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 2.000000\n\tfloat m_flConstantLifespan = 0.250000\n\tint(4) m_ConstantColor = ( 87, 187, 143, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Orient2DRelToCP_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_SetToCP_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomSecondSequence_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_EconSlotName = \"\"\n\tstring m_Notes = \"\"\n\tbool m_bOrientZ = true\n\tstring m_ActivityName = \"\"\n\tstring m_hOverrideMaterial = \"\"\n\tfloat m_flAnimationRate = 0.000000\n\tint m_nManualFrameField = 18\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/heroes/necrolyte/necrolyte_skull.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 12\n\tfloat m_flRotOffset = 270.000000\n\tint m_nCP = 1\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetToCP C_OP_SetToCP_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat(3) m_vecOffset = ( -2.000000, 0.000000, -8.000000 )\n\tbool m_bOffsetLocal = true\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMin = 2\n\tint m_nSequenceMax = 2\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegrees = -10.000000\n\tfloat m_flDegreesMin = -10.000000\n\tfloat m_flDegreesMax = -10.000000\n\tint m_nFieldOutput = 20\n\tbool m_bRandomlyFlipDirection = false\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_sphere_glow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 8\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 250.000000\n\tint(4) m_ConstantColor = ( 55, 255, 182, 100 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_RampScalarLinear_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 2.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.125000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_RateMax = 5.000000\n\tfloat m_RateMin = -5.000000\n\tint m_nField = 4\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 0.400000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 9.000000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_sphere_glow_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 8\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 250.000000\n\tfloat m_flConstantLifespan = 0.250000\n\tint(4) m_ConstantColor = ( 55, 255, 182, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tint m_nField = 4\n\tfloat m_RateMin = -5.000000\n\tfloat m_RateMax = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 2.000000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.750000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 256\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 60 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_Noise_2,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flStartFadeSize = 0.575000\n\tfloat m_flEndFadeSize = 0.650000\n\tfloat m_flMaxSize = 0.750000\n\tstring m_hTexture = \"materials\\\\particle\\\\water_splash\\\\water_splash.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.500000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 130.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n}\n\nC_OP_Noise C_OP_Noise_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.001100\n\tint m_nFieldOutput = 12\n\tfloat m_flOutputMax = 90.000000\n\tbool m_bAdditive = true\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 0.140000\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 2.000000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime_max = 0.150000\n\tfloat m_flEndTime_min = 0.130000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n\tint m_nControlPointNumber = 3\n\tfloat m_flJumpThreshold = 1512.000000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint m_nFieldOutput = 22\n\tfloat m_flFadeStartTime = 0.500000\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tint m_nFieldOutput = 23\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.450000\n\tfloat m_fLifetimeMax = 0.750000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 222, 255, 244, 255 )\n\tint(4) m_ColorMax = ( 0, 178, 134, 255 )\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tstring m_Notes = \"\"\n\tbool m_bRunForParentApplyKillList = false\n\tint(4) m_ColorMin = ( 4, 28, 18, 255 )\n\tint(4) m_ColorMax = ( 6, 47, 40, 255 )\n\tint m_nFieldOutput = 22\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 64.000000\n\tfloat m_fRadiusMax = 1.000000\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bLocalSpace = true\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 2.000000\n\tfloat m_flOutputMin = 14.000000\n\tfloat m_flOutputMax = 18.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMin = -4.000000\n\tfloat m_flDegreesMax = 4.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bActiveRange = true\n\tbool m_bScaleInitialRange = true\n\tint m_nInputMax = 4\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 328.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_d.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 40.000000\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_DistanceToCP_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_FadeInSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 14.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_plasma_03.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVScrollRate = -1.500000\n\tfloat m_flTextureVWorldSize = 249.999985\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n\tfloat m_fDrag = 0.050000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 2.000000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.700000\n}\n\nC_OP_DistanceToCP C_OP_DistanceToCP_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n\tfloat m_flInputMin = 64.000000\n\tfloat m_flInputMax = 256.000000\n\tint m_nFieldOutput = 16\n\tint m_nStartCP = 3\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 1.000000, 1.000000, 0.000000 )\n\tfloat(3) m_vecOutputMin = ( -1.000000, -1.000000, 0.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.050000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 1.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 50.000000\n\tfloat m_flRadiusMin = -50.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 40.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_detail.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_Noise_2,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_detail_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\static\\\\static_smoke.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.400000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.125000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 130.000000\n\tbool m_bAdditive = true\n}\n\nC_OP_Noise C_OP_Noise_2\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 90.000000\n\tint m_nFieldOutput = 12\n\tfloat m_fl4NoiseScale = 0.001100\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 4.000000\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flEndTime = 0.140000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = 100.000000\n\tfloat m_flEndTime = 9999.000000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -2.000000\n\tfloat m_flEndTime = 99999.000000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 57, 185, 135, 255 )\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flEndTime_min = 0.100000\n\tfloat m_flEndTime_max = 0.100000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.180000\n\tfloat m_fLifetimeMin = 0.150000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 50, 255, 156, 255 )\n\tint(4) m_ColorMin = ( 222, 255, 245, 255 )\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_fRadiusMax = 1.000000\n\tfloat m_fSpeedMax = 64.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tbool m_bLocalSpace = true\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 15.000000\n\tfloat m_flRadiusMin = 9.000000\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 256.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_detail_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_Noise_2,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tint m_nOrientationType = 3\n\tfloat m_flMaxSize = 0.400000\n\tstring m_hTexture = \"materials\\\\particle\\\\lava_blasts\\\\lava_glow.vtex\"\n\tfloat m_flAnimationRate = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 130.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_2\n{\n\tfloat m_fl4NoiseScale = 0.001100\n\tint m_nFieldOutput = 12\n\tfloat m_flOutputMax = 90.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 9999.000000\n\tfloat m_Rate = 100.000000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -2.000000\n\tint m_nField = 16\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 0, 255, 108, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flEndTime_max = 0.100000\n\tfloat m_flEndTime_min = 0.100000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.150000\n\tfloat m_fLifetimeMax = 0.180000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 222, 255, 245, 255 )\n\tint(4) m_ColorMax = ( 50, 255, 156, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 64.000000\n\tfloat m_fRadiusMax = 1.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tbool m_bLocalSpace = true\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMin = -4.000000\n\tfloat m_flDegreesMax = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 6.000000\n\tfloat m_flRadiusMax = 12.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 256.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_e.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 32.000000\n\tint(4) m_ConstantColor = ( 12, 245, 116, 125 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_DistanceToCP_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_VectorNoise_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\bendibeam2.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVScrollRate = -0.100000\n\tfloat m_flTextureVWorldSize = 806.451599\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 0, 88, 46, 255 )\n\tfloat m_flFadeEndTime = 0.600000\n\tbool m_bEaseInOut = false\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.800000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartScale = 3.000000\n}\n\nC_OP_DistanceToCP C_OP_DistanceToCP_0\n{\n\tstring m_Notes = \"\"\n\tint m_nStartCP = 3\n\tint m_nFieldOutput = 16\n\tfloat m_flInputMax = 256.000000\n\tfloat m_flInputMin = 64.000000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.125000\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 1.000000, 1.000000, 0.000000 )\n\tfloat(3) m_vecOutputMin = ( -1.000000, -1.000000, 0.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.050000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 0.400000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOutputMax = 48.000000\n\tint m_nInputMax = 2\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 40.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_f.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tint m_nInitialParticles = 2\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 20 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tint m_bAdditive = 1\n\tfloat m_flZoomRate1 = 4.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3b.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 30.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.900000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 130.000000\n\tbool m_bAdditive = true\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flEndTime = 0.140000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = 150.000000\n\tfloat m_flEndTime = 9999.000000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -1.000000\n\tfloat m_flEndTime = 99999.000000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime_max = 0.200000\n\tfloat m_flEndTime_min = 0.200000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n\tint m_nControlPointNumber = 3\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 152, 240, 214, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 1.500000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 50, 239, 174, 255 )\n\tint(4) m_ColorMin = ( 50, 239, 174, 255 )\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_fRadiusMax = 1.000000\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tbool m_bLocalSpace = true\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOutputMax = 16.000000\n\tfloat m_flOutputMin = 12.000000\n\tfloat m_flNoiseScale = 2.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 8\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 38.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_g.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 512\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\yellowflare.vtex\"\n\tfloat m_flAnimationRate = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 130.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n\tfloat m_flFadeStartTime = 0.500000\n\tint m_nFieldOutput = 22\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n\tint m_nFieldOutput = 23\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.250000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_vecOutputMin = ( -4.000000, -4.000000, -4.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 0.450000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 0, 178, 134, 255 )\n\tint(4) m_ColorMin = ( 222, 255, 244, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tint m_nFieldOutput = 22\n\tint(4) m_ColorMax = ( 6, 47, 40, 255 )\n\tint(4) m_ColorMin = ( 4, 28, 18, 255 )\n\tbool m_bRunForParentApplyKillList = false\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fRadiusMax = 16.000000\n\tfloat m_fSpeedMax = 64.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tbool m_bLocalSpace = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 6.000000\n\tfloat m_flOutputMin = 2.000000\n\tfloat m_flNoiseScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tint m_nInputMax = 4\n\tbool m_bScaleInitialRange = true\n\tbool m_bActiveRange = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 256.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_h.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 512\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.500000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 130.000000\n\tint m_nFieldOutput = 4\n\tfloat m_fl4NoiseScale = 0.001310\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.250000\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.500000\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -4.000000, -4.000000, -4.000000 )\n\tfloat(3) m_vecOutputMax = ( 4.000000, 4.000000, 4.000000 )\n\tbool m_bAdditive = true\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.450000\n\tfloat m_fLifetimeMax = 2.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 64.000000\n\tfloat m_fRadiusMax = 16.000000\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bLocalSpace = true\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScale = 2.000000\n\tfloat m_flOutputMin = 2.000000\n\tfloat m_flOutputMax = 4.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMin = -4.000000\n\tfloat m_flDegreesMax = 4.000000\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bActiveRange = true\n\tbool m_bScaleInitialRange = true\n\tint m_nInputMax = 4\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 63\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 256.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_i.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 512\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 20.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 155 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_Orient2DRelToCP_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\steam\\\\steam.vtex\"\n\tfloat m_flAnimationRate = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.100000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flBias = 0.350000\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tbool m_bOffset = true\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 55.000000, 55.000000, 55.000000 )\n\tfloat(3) m_vecOutputMin = ( -55.000000, -55.000000, -55.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 0, 0, 0, 255 )\n\tint(4) m_ColorMin = ( 0, 43, 29, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fRadiusMax = 2.000000\n\tfloat m_fSpeedMax = 320.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tbool m_bLocalSpace = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_Orient2DRelToCP C_INIT_Orient2DRelToCP_0\n{\n\tint m_nCP = 3\n\tfloat m_flRotOffset = 180.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 256.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_warmup.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 160\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 60 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_Noise_2,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomColor_2,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone_warmup_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flStartFadeSize = 0.575000\n\tfloat m_flEndFadeSize = 0.650000\n\tfloat m_flMaxSize = 0.750000\n\tstring m_hTexture = \"materials\\\\particle\\\\water_splash\\\\water_splash.vtex\"\n\tfloat m_flAnimationRate = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 130.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_2\n{\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 90.000000\n\tint m_nFieldOutput = 12\n\tfloat m_fl4NoiseScale = 0.001100\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flEndTime = 0.140000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n\tfloat m_flFadeStartTime = 0.500000\n\tint m_nFieldOutput = 22\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n\tint m_nFieldOutput = 23\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.750000\n\tfloat m_fLifetimeMin = 0.450000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 0, 178, 134, 255 )\n\tint(4) m_ColorMin = ( 222, 255, 244, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_2\n{\n\tint m_nFieldOutput = 22\n\tint(4) m_ColorMax = ( 6, 47, 40, 255 )\n\tint(4) m_ColorMin = ( 4, 28, 18, 255 )\n\tbool m_bRunForParentApplyKillList = false\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 )\n\tint m_nControlPointNumber = 1\n\tfloat m_fRadiusMax = 32.000000\n\tfloat m_fSpeedMax = 64.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 )\n\tfloat(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 )\n\tbool m_bLocalSpace = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 32.000000\n\tfloat m_flOutputMin = 24.000000\n\tfloat m_flNoiseScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tint m_nInputMax = 4\n\tbool m_bScaleInitialRange = true\n\tbool m_bActiveRange = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 128.000000 )\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 128.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_warmup_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 8\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 350.000000\n\tint(4) m_ConstantColor = ( 55, 255, 182, 100 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinear_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.125000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tint m_nField = 4\n\tfloat m_RateMin = -5.000000\n\tfloat m_RateMax = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.400000\n\tfloat m_fLifetimeMin = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 128.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 24.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_explode_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_OscillateVector_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 4.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks4.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.300000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 )\n\tfloat(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.300000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_2\n{\n\tfloat(3) m_RateMin = ( -15.000000, -15.000000, -15.000000 )\n\tfloat(3) m_RateMax = ( 15.000000, 15.000000, 15.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tbool m_bProportional = false\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.050000\n\tfloat m_fLifetimeMax = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tbool m_bEvenDistribution = true\n\tfloat m_flInitialSpeedMax = 1200.000000\n\tfloat m_flInitialSpeedMin = 200.000000\n\tfloat m_flInitialRadius = 96.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 8.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 63\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_explode_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 10\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 296.000000\n\tint m_nConstantSequenceNumber = 5\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue2.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tfloat m_flStartFalloff = 0.650000\n\tint(4) m_ColorScale = ( 97, 136, 224, 255 )\n\tstring m_Notes = \"\"\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue2.vtex\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 )\n\tfloat(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartScale = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.100000\n\tfloat m_fLifetimeMax = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 2\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_final.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( -510.000000, -510.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 510.000000, 510.000000, 10.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 200.000000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_SetControlPointsToParticle_0,\n\t\t&C_OP_MovementPlaceOnGround_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_NormalAlignToCP_0,\n\t\t&C_INIT_VelocityFromCP_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_final_grid_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_smoke.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_ice_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_main.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_ice.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_initial_explode.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_glow_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_smoke_glow.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_final_grid.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_glow.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tint(4) m_ColorScale = ( 11, 75, 219, 255 )\n\tfloat m_flStartFalloff = 0.650000\n\tfloat m_flAlphaScale = 3.000000\n\tfloat m_flRadiusScale = 2.250000\n\tstring m_Notes = \"\"\n\tstring m_hTexture = \"materials\\\\models\\\\heroes\\\\mirana\\\\javelin_color.vtex\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0\n{\n\tint m_nFirstControlPoint = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0\n{\n\tint m_nRefCP1 = 3\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tfloat m_flTraceOffset = 256.000000\n\tfloat m_flMaxTraceLength = 1024.000000\n\tbool m_bIncludeWater = true\n\tfloat m_flOffset = 120.000000\n\tfloat m_flTolerance = 96.000000\n\tint m_nLerpCP = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.200000\n\tfloat m_fLifetimeMax = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_NormalAlignToCP C_INIT_NormalAlignToCP_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_VelocityFromCP C_INIT_VelocityFromCP_0\n{\n\tint m_nControlPoint = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_final_grid.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 9.000000\n\tint(4) m_ConstantColor = ( 255, 182, 40, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_MovementRotateParticleAroundAxis_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateSpiralSphere_0,\n\t\t&C_INIT_RemapInitialDirectionToCPToVector_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tbool m_bMod2X = true\n\tint m_nOrientationType = 3\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_modulate_04.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tfloat m_flDecayTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_MovementRotateParticleAroundAxis C_OP_MovementRotateParticleAroundAxis_0\n{\n\tint m_nCP = 3\n\tfloat(3) m_vecRotAxis = ( 1.000000, 1.000000, 1.000000 )\n\tfloat m_flRotRate = -180.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateSpiralSphere C_INIT_CreateSpiralSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_flInitialRadius = 64.000000\n\tint m_nDensity = 1\n\tbool m_bUseParticleCount = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapInitialDirectionToCPToVector C_INIT_RemapInitialDirectionToCPToVector_0\n{\n\tfloat m_flScale = 3.000000\n\tint m_nCP = 3\n\tint m_nFieldOutput = 21\n\tbool m_bNormalize = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 128\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_fForceAmount = -800.000000\n\tfloat m_fFalloffPower = 0.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_final_grid_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 19.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_MovementRotateParticleAroundAxis_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_BasicMovement_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateSpiralSphere_0,\n\t\t&C_INIT_RemapInitialDirectionToCPToVector_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0,\n\t\t&C_OP_RandomForce_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\crystal\\\\crystal.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tfloat m_flDecayTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tint m_nOpEndCapState = 0\n\tstring m_Notes = \"\"\n}\n\nC_OP_MovementRotateParticleAroundAxis C_OP_MovementRotateParticleAroundAxis_0\n{\n\tint m_nCP = 3\n\tfloat m_flRotRate = -180.000000\n\tfloat(3) m_vecRotAxis = ( 1.000000, -1.000000, 1.000000 )\n\tint m_nOpEndCapState = 0\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tfloat m_flEndTime_max = 10000000000.000000\n\tfloat m_flEndTime_min = 10000000000.000000\n\tfloat m_RateMax = 4.000000\n\tfloat m_RateMin = -4.000000\n\tint m_nField = 4\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_2\n{\n\tint m_nOpEndCapState = 1\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -1500.000000 )\n\tfloat m_fDrag = 0.320000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateSpiralSphere C_INIT_CreateSpiralSphere_0\n{\n\tbool m_bUseParticleCount = true\n\tint m_nDensity = 1\n\tfloat m_flInitialRadius = 68.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapInitialDirectionToCPToVector C_INIT_RemapInitialDirectionToCPToVector_0\n{\n\tbool m_bNormalize = true\n\tint m_nFieldOutput = 21\n\tint m_nCP = 3\n\tfloat m_flScale = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 12\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 29.000000\n\tfloat m_flRadiusMin = 19.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 128\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fFalloffPower = 0.550000\n\tfloat m_fForceAmount = -149800.000000\n\tint m_nOpEndCapState = 1\n\tfloat(3) m_vecComponentScale = ( 1.000000, 1.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_RandomForce C_OP_RandomForce_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat(3) m_MinForce = ( -5000.000000, -5000.000000, -5000.000000 )\n\tfloat(3) m_MaxForce = ( 5000.000000, 5000.000000, 5000.000000 )\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_glow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 56.000000\n\tint m_nConstantSequenceNumber = 5\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\yellowflare2.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 )\n\tfloat(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 94, 62, 199, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.150000\n\tfloat m_fLifetimeMax = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 160, 249, 255, 255 )\n\tint(4) m_ColorMax = ( 46, 118, 238, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 155\n\tint m_nAlphaMin = 55\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 64.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_glow_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 256.000000\n\tint m_nConstantSequenceNumber = 5\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\particle_flare_007b.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 94, 62, 199, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 2.000000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.400000\n\tfloat m_fLifetimeMin = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 18, 83, 203, 255 )\n\tint(4) m_ColorMin = ( 0, 57, 221, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 24.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_ice.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_OscillateVector_2,\n\t\t&C_OP_OscillateScalar_0,\n\t\t&C_OP_OscillateScalar_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 4.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks4.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.300000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tbool m_bOffset = true\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMax = ( 30.000000, 30.000000, 30.000000 )\n\tfloat(3) m_RateMin = ( -30.000000, -30.000000, -30.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.300000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -450.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_2\n{\n\tbool m_bOffset = true\n\tbool m_bProportional = false\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_RateMax = ( 150.000000, 150.000000, 150.000000 )\n\tfloat(3) m_RateMin = ( -150.000000, -150.000000, -150.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_0\n{\n\tfloat m_FrequencyMin = 0.100000\n\tfloat m_RateMax = 12.000000\n\tfloat m_RateMin = -12.000000\n\tint m_nField = 4\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_2\n{\n\tfloat m_FrequencyMin = 0.200000\n\tfloat m_RateMax = 12.000000\n\tfloat m_RateMin = -12.000000\n\tint m_nField = 12\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.800000\n\tfloat m_fLifetimeMin = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 8.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fRadiusMin = 24.000000\n\tfloat m_fRadiusMax = 32.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 63\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 255.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_ice_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_OscillateVector_2,\n\t\t&C_OP_OscillateScalar_0,\n\t\t&C_OP_OscillateScalar_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\crystal\\\\crystal.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.300000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_RateMin = ( -30.000000, -30.000000, -30.000000 )\n\tfloat(3) m_RateMax = ( 30.000000, 30.000000, 30.000000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tbool m_bOffset = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.300000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -450.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_2\n{\n\tfloat(3) m_RateMin = ( -50.000000, -50.000000, -50.000000 )\n\tfloat(3) m_RateMax = ( 50.000000, 50.000000, 50.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tbool m_bProportional = false\n\tbool m_bOffset = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_0\n{\n\tint m_nField = 4\n\tfloat m_RateMin = -12.000000\n\tfloat m_RateMax = 12.000000\n\tfloat m_FrequencyMin = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_2\n{\n\tint m_nField = 12\n\tfloat m_RateMin = -12.000000\n\tfloat m_RateMax = 12.000000\n\tfloat m_FrequencyMin = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.050000\n\tfloat m_fLifetimeMax = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 12.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMax = 32.000000\n\tfloat m_fRadiusMin = 24.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 12\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 255.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_initial_explode.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 10\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 96.000000\n\tint m_nConstantSequenceNumber = 5\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_explode_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_explode_c.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\lens_flare\\\\lens_flare.vtex\"\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flStartTime_min = 0.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 94, 62, 199, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 0.250000\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.400000\n\tfloat m_fLifetimeMin = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 160, 249, 255, 255 )\n\tint(4) m_ColorMin = ( 160, 249, 255, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 4\n\tint m_nSequenceMin = 2\n\tbool m_bShuffle = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 10\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_main.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 96.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_glow.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_glow_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue2.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 94, 62, 199, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 3.000000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.400000\n\tfloat m_fLifetimeMin = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 160, 249, 255, 255 )\n\tint(4) m_ColorMin = ( 160, 249, 255, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 80.000000\n\tfloat m_flRadiusMin = 80.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 90.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 32.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 155 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_halo.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 2.000000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_sphere.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 )\n\tfloat(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.300000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.050000\n\tfloat m_fLifetimeMax = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 32.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 4.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_OscillateScalar_0,\n\t\t&C_OP_OscillateScalar_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomScalar_2\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_ActivityName = \"\"\n\tint m_nSkin = 7\n\tstring m_Notes = \"\"\n\tstring m_EconSlotName = \"\"\n\tstring m_hOverrideMaterial = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/particle/sphere.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.300000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_0\n{\n\tfloat m_FrequencyMin = 0.250000\n\tfloat m_RateMax = 25.000000\n\tfloat m_RateMin = -25.000000\n\tint m_nField = 4\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_2\n{\n\tfloat m_RateMax = 25.000000\n\tfloat m_RateMin = -25.000000\n\tint m_nField = 20\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.200000\n\tfloat m_fLifetimeMin = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 55, 159, 160, 255 )\n\tint(4) m_ColorMin = ( 42, 60, 238, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tint m_nFieldOutput = 12\n\tfloat m_flMax = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_2\n{\n\tint m_nFieldOutput = 20\n\tfloat m_flMax = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 32.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_glow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 210.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tint m_nConstantSequenceNumber = 2\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_05.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 )\n\tfloat(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.250000\n\tfloat m_flEndScale = 3.000000\n\tfloat m_flStartScale = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 59, 131, 187, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.225000\n\tfloat m_fLifetimeMax = 0.450000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 188.000000\n\tfloat m_flRadiusMin = 180.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMin = 1\n\tint m_nSequenceMax = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 28.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_glow_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 210.000000\n\tint(4) m_ConstantColor = ( 25, 25, 220, 255 )\n\tint m_nConstantSequenceNumber = 8\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\juggernaut\\\\juggernaut_blade_fury.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 )\n\tfloat(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 3.000000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeEndTime = 0.500000\n\tint(4) m_ColorFade = ( 107, 190, 255, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.450000\n\tfloat m_fLifetimeMin = 0.225000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 60.000000\n\tfloat m_flRadiusMax = 100.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 18.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_smoke.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 48\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 210.000000\n\tint(4) m_ConstantColor = ( 108, 108, 255, 25 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tfloat m_flZoomRate1 = 4.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tfloat m_flStartFadeSize = 1.000000\n\tfloat m_flEndFadeSize = 1.400000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3b.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 )\n\tfloat(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_flStartTime_min = -1.000000\n\tfloat m_flStartTime_max = -1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.350000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 167, 215, 253, 255 )\n\tfloat m_flFadeEndTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.800000\n\tfloat m_fLifetimeMax = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 140.000000\n\tfloat m_flRadiusMin = 100.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 8\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 38.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 2\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_smoke_glow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 48\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 210.000000\n\tint(4) m_ConstantColor = ( 12, 56, 89, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_03.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.125000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 )\n\tfloat(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flStartTime_max = -1.000000\n\tfloat m_flStartTime_min = -1.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 6.000000\n\tfloat m_flEndScale = 3.000000\n\tfloat m_flBias = 0.350000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 100.000000\n\tfloat m_flRadiusMax = 140.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 8\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 38.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 2\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_halo.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 96\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 110.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tint m_nConstantSequenceNumber = 2\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_ring_wavy4.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 )\n\tfloat(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 0.100000\n\tfloat m_flEndScale = 1.500000\n\tfloat m_flBias = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 59, 131, 187, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.450000\n\tfloat m_fLifetimeMin = 0.225000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 80.000000\n\tfloat m_flRadiusMax = 88.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 2\n\tint m_nSequenceMin = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 28.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_juggernaut_omnislash_burst.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 30 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Noise_0,\n\t\t&C_OP_Noise_2,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\curls\\\\smoke_curls.vtex\"\n\tfloat m_flAnimationRate = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_0\n{\n\tfloat m_fl4NoiseScale = 0.001310\n\tint m_nFieldOutput = 4\n\tfloat m_flOutputMax = 130.000000\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_Noise C_OP_Noise_2\n{\n\tbool m_bAdditive = true\n\tfloat m_flOutputMax = 90.000000\n\tint m_nFieldOutput = 12\n\tfloat m_fl4NoiseScale = 0.001100\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 9.000000\n\tfloat m_flBias = 0.850000\n\tfloat m_flStartScale = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = 100.000000\n\tfloat m_flEndTime = 9999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 39, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -2.000000\n\tfloat m_flEndTime = 99999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flStartTime_min = 0.200000\n\tfloat m_flStartTime_max = 0.300000\n\tfloat m_flEndTime_min = 0.400000\n\tfloat m_flEndTime_max = 0.700000\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.650000\n\tfloat m_fLifetimeMin = 0.450000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 247, 255, 22, 255 )\n\tint(4) m_ColorMin = ( 205, 124, 37, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMax = 25.000000\n\tfloat m_fSpeedMax = 64.000000\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 54.000000, 54.000000, 54.000000 )\n\tfloat(3) m_vecOutputMin = ( -54.000000, -54.000000, -54.000000 )\n\tbool m_bLocalSpace = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flOutputMax = 32.000000\n\tfloat m_flOutputMin = 24.000000\n\tfloat m_flNoiseScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 4.000000\n\tfloat m_flDegreesMin = -4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 40.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 120.000000 )\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 64.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 32\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_juggernaut_omnislash_image.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 1.000000\n\tbool m_bShouldSort = false\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_SetControlPointsToParticle_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_MovementPlaceOnGround_0,\n\t\t&C_OP_OrientTo2dDirection_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_VelocityFromCP_0,\n\t\t&C_INIT_RadiusFromCPObject_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_juggernaut_omnislash_image_ember.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_juggernaut_omnislash_image_flash.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_omnislash_trail_glow.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_omnislash_trail_glow_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/holdout_juggernaut_omnislash_burst.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_hOverrideMaterial = \"\"\n\tstring m_EconSlotName = \"\"\n\tstring m_ActivityName = \"ACT_DOTA_RUN\"\n\tbool m_bIgnoreNormal = true\n\tstring m_Notes = \"\"\n\tint m_nModelCP = 0\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/heroes/juggernaut/juggernaut.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bSetOrientation = true\n\tint m_nFirstControlPoint = 3\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 1.100000\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndTime = 0.500000\n\tfloat m_flStartScale = 0.000000\n}\n\nC_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0\n{\n\tstring m_Notes = \"\"\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tfloat m_flTraceOffset = 256.000000\n\tfloat m_flMaxTraceLength = 1024.000000\n\tfloat m_flTolerance = 0.000000\n}\n\nC_OP_OrientTo2dDirection C_OP_OrientTo2dDirection_0\n{\n\tint m_nFieldOutput = 12\n\tfloat m_flRotOffset = 180.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.200000\n\tfloat m_fLifetimeMax = 0.200000\n}\n\nC_INIT_VelocityFromCP C_INIT_VelocityFromCP_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPoint = 1\n}\n\nC_INIT_RadiusFromCPObject C_INIT_RadiusFromCPObject_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tbool m_bLocalCoords = true\n\tfloat(3) m_OffsetMax = ( -32.000000, 0.000000, 0.000000 )\n\tfloat(3) m_OffsetMin = ( -32.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_juggernaut_omnislash_image_ember.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_OscillateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_CreateFromParentParticles_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_TwistAroundAxis_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tfloat m_flSelfIllumAmount = 2.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 400.000000 )\n\tfloat m_fDrag = 0.075000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.250000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_RateMax = 40.000000\n\tfloat m_RateMin = -40.000000\n\tint m_nField = 4\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 64, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tfloat m_fl4NoiseScale = 0.300000\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 16.000000, 16.000000, 8.000000 )\n\tfloat(3) m_vecOutputMin = ( -16.000000, -16.000000, -8.000000 )\n\tint m_nFieldOutput = 0\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_FrequencyMax = ( 2.000000, 2.000000, 2.000000 )\n\tfloat(3) m_FrequencyMin = ( 0.100000, 0.100000, 0.100000 )\n\tfloat(3) m_RateMax = ( 44.000000, 44.000000, 44.000000 )\n\tfloat(3) m_RateMin = ( -44.000000, -44.000000, -44.000000 )\n\tbool m_bOffset = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.250000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 2.000000\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 9.000000\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat m_flNoiseScale = 0.250000\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMin = ( -214.000000, -214.000000, 0.000000 )\n\tfloat(3) m_vecOutputMax = ( 214.000000, 214.000000, 200.000000 )\n\tfloat m_flNoiseScaleLoc = 3.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMax = ( 32.000000, -42.000000, 128.000000 )\n\tfloat(3) m_OffsetMin = ( -32.000000, -12.000000, 40.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 7\n\tint m_nSequenceMin = 4\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMinLength = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 236, 183, 20, 255 )\n\tint(4) m_ColorMax = ( 255, 65, 14, 255 )\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 264.000000\n}\n\nC_OP_TwistAroundAxis C_OP_TwistAroundAxis_0\n{\n\tfloat m_fForceAmount = 140.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_juggernaut_omnislash_image_flash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tfloat m_flStartFadeSize = 0.800000\n\tfloat m_flEndFadeSize = 1.000000\n\tfloat m_flMaxSize = 0.400000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.640000\n\tfloat m_flStartScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.150000\n\tfloat m_fLifetimeMin = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 255, 65, 14, 255 )\n\tint(4) m_ColorMin = ( 236, 183, 20, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 80.000000\n\tfloat m_flRadiusMin = 50.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMax = 32.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 16\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_omnislash_trail_glow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeOut_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_PercentageBetweenCPs_0,\n\t\t&C_OP_PercentageBetweenCPs_2,\n\t\t&C_OP_RampScalarSplineSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_CreateSequentialPath_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOut C_OP_FadeOut_0\n{\n\tfloat m_flFadeOutTimeMin = 1.000000\n\tfloat m_flFadeOutTimeMax = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tfloat m_flOpStartFadeInTime = 3.000000\n\tfloat m_flOpEndFadeInTime = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 229, 221, 149, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_0\n{\n\tfloat m_flOutputMax = 0.000000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nFieldOutput = 16\n\tfloat m_flInputMin = 0.875000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_2\n{\n\tbool m_bRadialCheck = false\n\tbool m_bActiveRange = true\n\tint m_nFieldOutput = 16\n\tfloat m_flInputMax = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSplineSimple C_OP_RampScalarSplineSimple_0\n{\n\tbool m_bEaseOut = true\n\tfloat m_Rate = -50.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.500000\n\tfloat m_fLifetimeMin = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 206, 98, 39, 255 )\n\tint(4) m_ColorMin = ( 163, 61, 61, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 150.000000\n\tfloat m_flRadiusMax = 150.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 96.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 96.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0\n{\n\tfloat m_flNumToAssign = 25.000000\n\tstring m_Notes = \"\"\n\tCPathParameters m_PathParams = CPathParameters\n\t{\n\t\tfloat m_flMidPoint = 0.150000\n\t\tint m_nBulgeControl = 1\n\t\tfloat m_flBulge = 0.150000\n\t}\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMin = 64\n\tint m_nAlphaMax = 64\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 0.050000\n\tfloat m_flEmitRate = 500.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/holdout_omnislash_trail_glow_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint m_nConstantSequenceNumber = 8\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_PercentageBetweenCPs_0,\n\t\t&C_OP_PercentageBetweenCPs_2,\n\t\t&C_OP_PercentageBetweenCPs_4,\n\t\t&C_OP_RampScalarSplineSimple_0,\n\t\t&C_OP_RampScalarSplineSimple_2,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_CreateSequentialPath_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RemapScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_swirl_04c.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 89, 76, 53, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_0\n{\n\tfloat m_flInputMin = 0.875000\n\tint m_nFieldOutput = 16\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_2\n{\n\tfloat m_flInputMax = 0.750000\n\tint m_nFieldOutput = 16\n\tbool m_bActiveRange = true\n\tbool m_bRadialCheck = false\n\tstring m_Notes = \"\"\n}\n\nC_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_4\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMax = 4.000000\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOpEndFadeOutTime = 0.060000\n\tfloat m_flOpStartFadeOutTime = 0.060000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSplineSimple C_OP_RampScalarSplineSimple_0\n{\n\tfloat m_Rate = 70.000000\n\tbool m_bEaseOut = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSplineSimple C_OP_RampScalarSplineSimple_2\n{\n\tbool m_bEaseOut = true\n\tfloat m_flEndTime = 0.350000\n\tfloat m_Rate = 7.000000\n\tint m_nField = 4\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.750000\n\tfloat m_fLifetimeMax = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 206, 98, 39, 255 )\n\tint(4) m_ColorMax = ( 206, 98, 39, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 24.000000\n\tfloat m_flRadiusMin = 24.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 96.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 96.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0\n{\n\tstring m_Notes = \"\"\n\tCPathParameters m_PathParams = CPathParameters\n\t{\n\t\tfloat m_flBulge = 0.150000\n\t\tint m_nBulgeControl = 1\n\t\tfloat m_flMidPoint = 0.150000\n\t}\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMin = 92\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tfloat m_flOutputMax = 12.000000\n\tfloat m_flOutputMin = 8.000000\n\tint m_nFieldOutput = 4\n\tfloat m_flInputMax = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 2000.000000\n\tfloat m_flEmissionDuration = 0.050000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_rays.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 100.000000\n\tint(4) m_ConstantColor = ( 216, 239, 255, 150 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_InterpolateRadius_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_cone_gradient_2.vtex\"\n\tbool m_bIgnoreDT = true\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 30.000000\n\tfloat m_flLengthFadeInTime = 2.000000\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeStartTime = 0.500000\n\tint(4) m_ColorFade = ( 255, 181, 108, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tfloat m_flStartTime_max = 0.350000\n\tfloat m_flStartTime_min = 0.250000\n\tstring m_Notes = \"\"\n\tint m_nField = 10\n\tfloat m_RateMin = -0.500000\n\tfloat m_RateMax = -1.000000\n\tfloat m_flEndTime_min = 999999.000000\n\tfloat m_flEndTime_max = 999999.000000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tint m_nField = 12\n\tfloat m_Rate = 5.000000\n\tfloat m_flEndTime = 100000000.000000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n\tint m_nField = 7\n\tfloat m_Rate = -1.000000\n\tfloat m_flEndTime = 999999.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndTime = 0.500000\n\tfloat m_flEndScale = 2.000000\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime = 0.600000\n\tfloat m_flStartScale = 2.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 4.000000\n\tfloat m_fLifetimeMin = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 1000.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 1000.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMin = ( 0.000000, 0.000000, 800.000000 )\n\tfloat(3) m_vecOutputMax = ( 0.000000, 0.000000, 1000.000000 )\n\tbool m_bLocalSpace = true\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 100.000000\n\tfloat m_flRadiusMax = 625.000000\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMaxLength = 80.000000\n\tstring m_Notes = \"\"\n\tfloat m_flMinLength = 60.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fRadiusMax = -25.000000\n\tint m_nControlPointNumber = 7\n\tfloat m_fSpeedMin = 100.000000\n\tfloat m_fSpeedMax = 150.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 25\n\tint m_nAlphaMax = 50\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 255, 248, 208, 255 )\n\tint(4) m_ColorMax = ( 255, 209, 137, 255 )\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 4.000000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 5\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_ring.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_SetSingleControlPointPosition_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_start_ring.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tbool m_bEndCap = true\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_start_endcap.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_ring_aura.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_rays.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_ring_dust.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0\n{\n\tstring m_Notes = \"\"\n\tint m_nCP1 = 7\n\tfloat(3) m_vecCP1Pos = ( 75.000000, 0.000000, 0.000000 )\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_ring_aura.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 243, 216, 70 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_AlphaDecay_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tint m_bAdditive = 1\n\tfloat m_flSelfIllumAmount = 2.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_arc.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 1999.999878\n\tint m_nMaxTesselation = 2\n\tint m_nMinTesselation = 2\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 20.000000\n\tfloat m_flStartScale = 0.000000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n\tint m_nField = 7\n\tfloat m_Rate = -2.000000\n\tfloat m_flEndTime = 999999.000000\n}\n\nC_OP_AlphaDecay C_OP_AlphaDecay_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMinAlpha = 0.001000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 35.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 140, 100, 36, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInitialRadius = 625.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flParticlesPerOrbit = 10.000000\n\tfloat m_flInitialSpeedMax = 20.000000\n\tint m_nControlPointNumber = 7\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 10.000000\n\tfloat m_flRadiusMax = 10.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 2.500000\n\tfloat m_fLifetimeMax = 2.500000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 50\n\tint m_nAlphaMax = 50\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 15.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_ring_dust.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 0.900000\n\tint(4) m_ConstantColor = ( 195, 223, 255, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_SpinUpdate_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_Decay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRotationSpeed_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_ring_dust_detail.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke1\\\\smoke1.vtex\"\n\tfloat m_flAnimationRate = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 9999999.000000\n\tfloat m_Rate = -2.000000\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.030000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n\tint m_nField = 16\n\tfloat m_Rate = -1.500000\n\tfloat m_flEndTime = 999999.000000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 3.500000\n\tfloat m_fLifetimeMin = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tint m_nControlPointNumber = 7\n\tfloat m_flInitialSpeedMin = 10.000000\n\tstring m_Notes = \"\"\n\tfloat m_flInitialRadius = 625.000000\n\tfloat m_flInitialSpeedMax = 100.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 75.000000\n\tfloat m_flRadiusMax = 100.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 70\n\tint m_nAlphaMin = 35\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMax = 30.000000\n\tfloat m_flDegreesMin = 15.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 223, 200, 159, 255 )\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 147, 124, 97, 255 )\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 15\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 50.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 )\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 20.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 20\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_ring_dust_detail.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 0.900000\n\tint(4) m_ConstantColor = ( 195, 223, 255, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_SpinUpdate_0,\n\t\t&C_OP_RampScalarLinearSimple_2,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_Decay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRotationSpeed_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\static\\\\static_smoke.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 0.200000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n\tfloat m_Rate = -2.000000\n\tfloat m_flEndTime = 9999999.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 1.500000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.500000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 )\n\tfloat m_fDrag = 0.030000\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2\n{\n\tfloat m_flEndTime = 999999.000000\n\tfloat m_Rate = -1.500000\n\tint m_nField = 16\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 3.000000\n\tfloat m_fLifetimeMax = 3.500000\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flInitialSpeedMax = 50.000000\n\tfloat m_flInitialRadius = 625.000000\n\tstring m_Notes = \"\"\n\tfloat m_flInitialSpeedMin = 10.000000\n\tint m_nControlPointNumber = 7\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 75.000000\n\tfloat m_flRadiusMin = 50.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 50\n\tint m_nAlphaMax = 100\n}\n\nC_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0\n{\n\tfloat m_flDegreesMin = 15.000000\n\tfloat m_flDegreesMax = 30.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 222, 213, 190, 255 )\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 237, 219, 188, 255 )\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 4\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 10.000000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 10\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_endcap.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 256\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 216, 155, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_VectorNoise_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_InitialVelocityNoise_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tfloat m_flStartFadeSize = 0.800000\n\tfloat m_flEndFadeSize = 1.000000\n\tfloat m_flMaxSize = 0.400000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartScale = 20.000000\n\tfloat m_flBias = 0.950000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.010000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 201, 85, 22, 255 )\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -5.000000, -5.000000, 0.000000 )\n\tfloat(3) m_vecOutputMax = ( 5.000000, 5.000000, 5.000000 )\n\tbool m_bAdditive = true\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInitialRadius = 625.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flParticlesPerOrbit = 200.000000\n\tfloat m_flInitialSpeedMin = 100.000000\n\tfloat m_flInitialSpeedMax = 100.000000\n\tint m_nControlPointNumber = 7\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.350000\n\tfloat m_fLifetimeMax = 1.000000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 10.000000\n\tfloat m_flRadiusMax = 10.000000\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScaleLoc = 0.250000\n\tfloat(3) m_vecOutputMin = ( -50.000000, -50.000000, 50.000000 )\n\tfloat(3) m_vecOutputMax = ( 50.000000, 50.000000, 100.000000 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 200\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_line.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 238, 181, 255 )\n\tint m_nConstantSequenceNumber = 4\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_SetControlPointPositions_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_AlphaDecay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_CreateSequentialPath_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_2,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n\tint m_nOrientationType = 2\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 1.500000\n}\n\nC_OP_SetControlPointPositions C_OP_SetControlPointPositions_0\n{\n\tint m_nCP4 = 9\n\tint m_nCP3 = 9\n\tfloat(3) m_vecCP2Pos = ( 0.000000, 200.000000, 0.000000 )\n\tint m_nCP2 = 6\n\tfloat(3) m_vecCP1Pos = ( 0.000000, -200.000000, 0.000000 )\n\tint m_nCP1 = 5\n\tstring m_Notes = \"\"\n\tbool m_bSetOnce = true\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 9999999827968.000000\n\tfloat m_Rate = -2.000000\n\tint m_nField = 7\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_AlphaDecay C_OP_AlphaDecay_0\n{\n\tfloat m_flMinAlpha = 0.001000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 100.000000\n\tfloat m_flRadiusMax = 100.000000\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOffset = 5.000000\n\tbool m_bIncludeWater = true\n}\n\nC_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNumToAssign = 75.000000\n\tCPathParameters m_PathParams = CPathParameters\n\t{\n\t\tint m_nEndControlPointNumber = 6\n\t\tint m_nStartControlPointNumber = 5\n\t}\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tbool m_bScaleInitialRange = true\n\tint m_nInputMax = 30\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMax = 0.000000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nInputMax = 75\n\tint m_nInputMin = 35\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 6.000000\n\tfloat m_fLifetimeMin = 6.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 75.000000, 0.000000, 0.000000 )\n\tfloat(3) m_OffsetMax = ( 75.000000, 0.000000, 0.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 75\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_line_light.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 206, 129, 255 )\n\tint m_nConstantSequenceNumber = 4\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_AlphaDecay_0,\n\t\t&C_OP_SetControlPointPositions_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_CreateSequentialPath_0,\n\t\t&C_INIT_RandomLifeTime_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusScale = 1.500000\n\tfloat m_flAlphaScale = 15.000000\n\tfloat m_flStartFalloff = 0.100000\n\tint(4) m_ColorScale = ( 255, 210, 140, 255 )\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 9999999827968.000000\n\tfloat m_Rate = -3.000000\n\tint m_nField = 7\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_AlphaDecay C_OP_AlphaDecay_0\n{\n\tfloat m_flMinAlpha = 0.001000\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointPositions C_OP_SetControlPointPositions_0\n{\n\tfloat(3) m_vecCP4Pos = ( 0.000000, -50.000000, 0.000000 )\n\tstring m_Notes = \"\"\n\tint m_nCP1 = 5\n\tfloat(3) m_vecCP1Pos = ( 0.000000, -50.000000, 0.000000 )\n\tint m_nCP2 = 6\n\tfloat(3) m_vecCP2Pos = ( 0.000000, 50.000000, 0.000000 )\n\tint m_nCP3 = 9\n\tint m_nCP4 = 9\n\tbool m_bOrient = true\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 100.000000\n\tfloat m_flRadiusMin = 100.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 75.000000, 0.000000, 50.000000 )\n\tfloat(3) m_OffsetMax = ( 75.000000, 0.000000, 50.000000 )\n\tbool m_bLocalCoords = true\n}\n\nC_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0\n{\n\tfloat m_flNumToAssign = 3.000000\n\tstring m_Notes = \"\"\n\tCPathParameters m_PathParams = CPathParameters\n\t{\n\t\tint m_nStartControlPointNumber = 5\n\t\tint m_nEndControlPointNumber = 6\n\t}\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 6.000000\n\tfloat m_fLifetimeMin = 6.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 250\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint m_nConstantSequenceNumber = 4\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_AlphaDecay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_VelocityRandom_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_2,\n\t\t&C_INIT_PositionPlaceOnGround_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_start_ring_flash.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_start_line.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_start_line_light.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_start_ring_rope.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_start_ring_banner_light.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_start_ring_flags.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_start_ring_outer_rope.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\spark_02.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flLengthFadeInTime = 0.200000\n\tfloat m_flMaxLength = 500.000000\n\tbool m_bIgnoreDT = true\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flStartTime = 0.500000\n\tfloat m_Rate = -1.000000\n\tint m_nField = 10\n\tstring m_Notes = \"\"\n}\n\nC_OP_AlphaDecay C_OP_AlphaDecay_0\n{\n\tfloat m_flMinAlpha = 0.001000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInitialRadius = 625.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flParticlesPerOrbit = 200.000000\n\tint m_nControlPointNumber = 7\n}\n\nC_INIT_VelocityRandom C_INIT_VelocityRandom_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, -7000.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, -10000.000000 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.600000\n\tfloat m_fLifetimeMax = 0.650000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 75.000000\n\tfloat m_flRadiusMax = 100.000000\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMinLength = 1.500000\n\tfloat m_flMaxLength = 1.500000\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tstring m_Notes = \"\"\n\tint m_nInputMax = 100\n\tint m_nFieldOutput = 10\n\tbool m_bScaleInitialRange = true\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2\n{\n\tstring m_Notes = \"\"\n\tint m_nInputMin = 200\n\tint m_nInputMax = 250\n\tint m_nFieldOutput = 10\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 0.000000\n\tbool m_bScaleInitialRange = true\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tbool m_bIncludeWater = true\n\tfloat m_flOffset = -10.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 1500.000000\n\tfloat m_flEmissionDuration = 0.250000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_banner_light.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 250\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 150.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 150 )\n\tint m_nConstantSequenceNumber1 = 1\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Orient2DRelToCP_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_OscillateScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusScale = 1.500000\n\tfloat m_flAlphaScale = 25.000000\n\tfloat m_flStartFalloff = 0.100000\n\tstring m_hTexture = \"materials\\\\particle\\\\legion\\\\legion_banner.vtex\"\n}\n\nC_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0\n{\n\tint m_nFieldOutput = 12\n\tstring m_Notes = \"\"\n\tint m_nCP = 7\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tfloat m_flLerpTime = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tfloat m_flDecayTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_0\n{\n\tfloat m_flEndTime_max = 9999999.000000\n\tfloat m_FrequencyMax = 0.500000\n\tfloat m_FrequencyMin = 0.250000\n\tfloat m_RateMax = 1.000000\n\tfloat m_RateMin = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInitialRadius = 200.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flParticlesPerOrbit = 6.000000\n\tint m_nControlPointNumber = 7\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.500000\n\tfloat m_fLifetimeMax = 0.500000\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tbool m_bIncludeWater = true\n\tfloat m_flOffset = 200.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tint m_nFieldOutput = 18\n\tfloat m_flMax = 20.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 255, 182, 88, 255 )\n\tint(4) m_ColorMin = ( 255, 234, 160, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tint m_nFieldOutput = 12\n\tfloat m_flDegreesMax = 0.000000\n\tfloat m_flDegrees = 90.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 6\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_energy.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 207, 181, 168, 255 )\n\tfloat m_flNoDrawTimeToGoToSleep = 0.100000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_RampScalarLinearSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_SequenceLifeTime_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\steam\\\\steam.vtex\"\n\tstring m_Notes = \"\"\n\tbool m_bAnimateInFPS = true\n\tfloat m_flAnimationRate = 10.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bEaseInAndOut = true\n\tfloat m_flBias = 0.860000\n\tfloat m_flEndScale = 1.500000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeStartTime = 0.350000\n\tint(4) m_ColorFade = ( 255, 203, 79, 255 )\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.350000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 )\n\tfloat m_fDrag = 0.050000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n\tint m_nField = 7\n\tfloat m_Rate = -5.000000\n\tfloat m_flEndTime = 1000000000.000000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 35.000000\n\tfloat m_flRadiusMax = 50.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 200\n}\n\nC_INIT_SequenceLifeTime C_INIT_SequenceLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFramerate = 24.000000\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 10\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecOutputMax = ( 26.000000, 26.000000, 34.000000 )\n\tfloat(3) m_vecOutputMin = ( -26.000000, -26.000000, -16.000000 )\n\tfloat m_flNoiseScaleLoc = 0.050000\n\tfloat m_flNoiseScale = 0.100000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 255, 250, 218, 255 )\n\tint(4) m_ColorMax = ( 255, 238, 188, 255 )\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flInitialRadius = 625.000000\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 7\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 20.000000 )\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 15.000000\n\tfloat m_flEmitRate = 150.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_flags.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 250\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 0.500000\n\tint(4) m_ConstantColor = ( 255, 206, 89, 255 )\n\tint m_nConstantSequenceNumber1 = 1\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Orient2DRelToCP_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_EndCapTimedDecay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_VelocityRandom_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RandomSecondSequence_0,\n\t\t&C_INIT_RandomScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tfloat m_flAnimationRate = 60.000000\n\tstring m_Notes = \"\"\n\tbool m_bIgnoreNormal = true\n\tstring m_ActivityName = \"\"\n\tint m_nManualFrameField = 18\n\tstring m_EconSlotName = \"\"\n\tstring m_hOverrideMaterial = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/particle/legion_duel_banner.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 12\n\tint m_nCP = 7\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.000000\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.250000\n\tfloat m_flOutput = 0.000000\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDecayTime = 0.500000\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flParticlesPerOrbit = 6.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flInitialRadius = 625.000000\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 7\n}\n\nC_INIT_VelocityRandom C_INIT_VelocityRandom_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, -10000.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, -7000.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.500000\n\tfloat m_fLifetimeMin = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMaxLength = 1.500000\n\tfloat m_flMinLength = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOffset = -10.000000\n\tbool m_bIncludeWater = true\n}\n\nC_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0\n{\n\tint m_nSequenceMax = 2\n\tint m_nSequenceMin = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMax = 100.000000\n\tint m_nFieldOutput = 18\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 6\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_flash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 245, 129, 255 )\n\tint m_nConstantSequenceNumber = 4\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_AlphaDecay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RandomLifeTime_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tint m_nOrientationType = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 999999.000000\n\tfloat m_Rate = -2.000000\n\tint m_nField = 7\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_AlphaDecay C_OP_AlphaDecay_0\n{\n\tfloat m_flMinAlpha = 0.001000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flParticlesPerOrbit = 100.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flInitialRadius = 625.000000\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 7\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 50.000000\n\tfloat m_flRadiusMin = 50.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tbool m_bIncludeWater = true\n\tfloat m_flOffset = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 15.000000\n\tfloat m_fLifetimeMin = 15.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_outer_rope.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 75\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 161, 184, 201, 255 )\n\tint m_nConstantSequenceNumber = 4\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_AlphaDecay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_2,\n\t\t&C_INIT_RandomLifeTime_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tbool m_bMod2X = true\n\tint m_nOrientationType = 3\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_crack_03.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 499.999969\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n\tint m_nField = 7\n\tfloat m_Rate = -2.000000\n\tfloat m_flEndTime = 1000000000.000000\n}\n\nC_OP_AlphaDecay C_OP_AlphaDecay_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMinAlpha = 0.001000\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flPitch = 180.000000\n\tint m_nControlPointNumber = 7\n\tfloat m_flParticlesPerOrbit = 11.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flInitialRadius = 635.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 300.000000\n\tfloat m_flRadiusMin = 150.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tbool m_bIncludeWater = true\n\tfloat m_flOffset = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMax = 0.000000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nFieldOutput = 7\n\tint m_nInputMax = 14\n\tint m_nInputMin = 12\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2\n{\n\tbool m_bScaleInitialRange = true\n\tint m_nFieldOutput = 7\n\tint m_nInputMax = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 15.000000\n\tfloat m_fLifetimeMax = 15.000000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 15\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_rope.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 75\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 253, 223, 255 )\n\tint m_nConstantSequenceNumber = 4\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_AlphaDecay_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_2,\n\t\t&C_INIT_RandomLifeTime_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/legion_gladiators_start_ring_energy.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tint m_bAdditive = 1\n\tint m_nOrientationType = 3\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_crack_02.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 333.333344\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 1.500000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 1000000000.000000\n\tfloat m_Rate = -2.000000\n\tint m_nField = 7\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_AlphaDecay C_OP_AlphaDecay_0\n{\n\tfloat m_flMinAlpha = 0.001000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 255, 219, 143, 255 )\n\tfloat m_flFadeStartTime = 0.750000\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInitialRadius = 625.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flParticlesPerOrbit = 28.000000\n\tint m_nControlPointNumber = 7\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 50.000000\n\tfloat m_flRadiusMax = 50.000000\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOffset = 5.000000\n\tbool m_bIncludeWater = true\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tstring m_Notes = \"\"\n\tint m_nInputMin = 28\n\tint m_nInputMax = 34\n\tint m_nFieldOutput = 7\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 0.000000\n\tbool m_bScaleInitialRange = true\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2\n{\n\tstring m_Notes = \"\"\n\tint m_nInputMax = 5\n\tint m_nFieldOutput = 7\n\tbool m_bScaleInitialRange = true\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 15.000000\n\tfloat m_fLifetimeMin = 15.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 35\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/witch_buff.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 24\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 237, 89, 17, 155 )\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_RemapCPtoVector_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RemapCPtoVector_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/witch_buff_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/witch_buff_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/witch_buff_d.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tfloat m_flSelfIllumAmount = 4.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_jagged_01.vtex\"\n\tfloat m_flAnimationRate = 0.600000\n\tint m_nVertCropField = 18\n\tfloat m_flLengthFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n\tbool m_bIgnoreDT = true\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_HitboxSetName = \"hands\"\n\tstring m_Notes = \"\"\n\tfloat m_flPrevPosScale = 0.000000\n}\n\nC_OP_RemapCPtoVector C_OP_RemapCPtoVector_0\n{\n\tfloat(3) m_vOutputMax = ( 1000000.000000, 1000000.000000, 1000000.000000 )\n\tfloat(3) m_vOutputMin = ( -1000000.000000, -1000000.000000, -1000000.000000 )\n\tint m_nFieldOutput = 2\n\tfloat(3) m_vInputMax = ( 1000000.000000, 1000000.000000, 1000000.000000 )\n\tfloat(3) m_vInputMin = ( -1000000.000000, -1000000.000000, -1000000.000000 )\n\tint m_nCPInput = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 25.000000\n\tfloat m_flRadiusMin = 15.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 15\n\tint m_nAlphaMax = 25\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_HitboxSetName = \"hands\"\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.500000\n\tfloat m_fLifetimeMax = 0.750000\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMaxLength = 1.000000\n\tfloat m_flMinLength = 1.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 0, 191, 121, 255 )\n\tint(4) m_ColorMin = ( 47, 241, 170, 255 )\n}\n\nC_INIT_RemapCPtoVector C_INIT_RemapCPtoVector_0\n{\n\tfloat(3) m_vOutputMax = ( 1000000.000000, 1000000.000000, 1000000.000000 )\n\tfloat(3) m_vOutputMin = ( -1000000.000000, -1000000.000000, -1000000.000000 )\n\tint m_nFieldOutput = 2\n\tfloat(3) m_vInputMax = ( 1000000.000000, 1000000.000000, 1000000.000000 )\n\tfloat(3) m_vInputMin = ( -1000000.000000, -1000000.000000, -1000000.000000 )\n\tint m_nCPInput = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tint m_nFieldOutput = 18\n\tfloat m_flMax = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tint m_nFieldOutput = 12\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 20.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/witch_buff_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 200\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 237, 89, 17, 55 )\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_EndCapTimedDecay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\steam\\\\steam.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flStartFadeOutTime = 0.600000\n\tfloat m_flEndFadeInTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tfloat m_flJumpThreshold = 1.000000\n\tstring m_HitboxSetName = \"hands\"\n\tint m_nControlPointNumber = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 20.000000\n\tfloat m_flRadiusMax = 40.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 155\n\tint m_nAlphaMin = 55\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 1\n\tfloat m_flHitBoxScale = 0.500000\n\tstring m_HitboxSetName = \"hands\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.750000\n\tfloat m_fLifetimeMin = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 47, 241, 170, 255 )\n\tint(4) m_ColorMax = ( 0, 191, 121, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 20.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/witch_buff_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 60\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 237, 89, 17, 100 )\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_BasicMovement_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\wisp\\\\particle_swirl.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 0.500000\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flStartAlpha = 0.000000\n\tstring m_Notes = \"\"\n\tfloat m_flEndFadeInTime = 0.200000\n\tfloat m_flStartFadeOutTime = 0.600000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.650000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_HitboxSetName = \"hands\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 40.000000\n\tfloat m_flRadiusMin = 20.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.600000\n\tfloat m_fLifetimeMax = 1.600000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 11, 233, 209, 255 )\n\tint(4) m_ColorMin = ( 47, 241, 170, 255 )\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 2\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_HitboxSetName = \"hands\"\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 50.000000\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tint m_nControlPointNumber = 1\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_fForceAmount = 100.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/witch_buff_d.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 237, 89, 17, 100 )\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_BasicMovement_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n\tfloat m_flAnimationRate = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flStartFadeOutTime = 0.600000\n\tfloat m_flEndFadeInTime = 0.400000\n\tstring m_Notes = \"\"\n\tfloat m_flStartAlpha = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.650000\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n\tstring m_HitboxSetName = \"hands\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 40.000000\n\tfloat m_flRadiusMax = 60.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.600000\n\tfloat m_fLifetimeMin = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 47, 241, 170, 255 )\n\tint(4) m_ColorMax = ( 11, 233, 209, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 2\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flHitBoxScale = 0.600000\n\tstring m_HitboxSetName = \"hands\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 15.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = 100.000000\n\tfloat m_fFalloffPower = 0.000000\n\tint m_nControlPointNumber = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_heal.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_heal_flash_glow.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_heal_flash_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_heal_twinkle.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_heal_rings.vpcf\"\n\t\t}\n\t]\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_heal_flash_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 248, 241, 124, 200 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\particle_flare_006.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 15.000000\n\tfloat m_flStartScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.175000\n\tfloat m_fLifetimeMin = 0.170000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 20.000000\n\tfloat m_flRadiusMax = 30.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_heal_flash_glow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 204, 255, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 8.000000\n\tfloat m_flStartScale = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.150000\n\tfloat m_fLifetimeMin = 0.130000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMin = 24.000000\n\tfloat m_fSpeedMax = 48.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 32.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 64.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 40.000000\n\tfloat m_flRadiusMax = 120.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 100\n\tint m_nAlphaMin = 150\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 130, 255, 109, 255 )\n\tint(4) m_ColorMax = ( 187, 255, 126, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 6\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_heal_rings.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_SpinUpdate_0,\n\t\t&C_OP_SpinYaw_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRotationSpeed_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_ring_pulled.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinYaw C_OP_SpinYaw_0\n{\n\tint m_nSpinRateDegrees = 20\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 9.000000\n\tfloat m_flStartScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flEndFadeInTime = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeStartTime = 0.250000\n\tint(4) m_ColorFade = ( 47, 92, 17, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 10.000000\n\tfloat m_flRadiusMin = 30.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.750000\n\tfloat m_fLifetimeMin = 0.300000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0\n{\n\tfloat m_flDegreesMax = 120.000000\n\tfloat m_flDegreesMin = 100.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 255, 252, 158, 255 )\n\tint(4) m_ColorMin = ( 255, 233, 50, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMin = 200\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 12\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_heal_twinkle.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_SpinUpdate_0,\n\t\t&C_OP_SpinYaw_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRotationSpeed_0,\n\t\t&C_INIT_RemapSpeedToScalar_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYaw_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tint m_nOrientationType = 3\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\particle_flare_002.vtex\"\n\tfloat m_flAnimationRate = 0.750000\n\tfloat m_flAnimationRate2 = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.090000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flEndFadeInTime = 0.200000\n\tfloat m_flStartFadeOutTime = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.865000\n\tfloat m_flEndScale = 25.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinYaw C_OP_SpinYaw_0\n{\n\tint m_nSpinRateDegrees = 40\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 104, 136, 27, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.400012\n\tfloat m_fLifetimeMax = 0.600000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 6.000000\n\tfloat m_flRadiusMin = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 255, 253, 196, 255 )\n\tint(4) m_ColorMin = ( 255, 226, 109, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMin = 25\n\tint m_nAlphaMax = 150\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0\n{\n\tfloat m_flDegreesMax = 180.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapSpeedToScalar C_INIT_RemapSpeedToScalar_0\n{\n\tfloat m_flOutputMax = 0.500000\n\tint m_nFieldOutput = 5\n\tfloat m_flInputMax = 10.000000\n\tbool m_bPerParticle = true\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMin = 90.000000\n\tfloat m_flDegreesMax = 90.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_e.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 50, 239, 174, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flStartFadeSize = 0.200000\n\tfloat m_flEndFadeSize = 0.250000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\maya_wispy\\\\wispy_v2.vtex\"\n\tfloat m_flAnimationRate = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tfloat m_fDrag = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.800000\n\tfloat m_flEndScale = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.500000\n\tfloat m_fLifetimeMax = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 400.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 130.000000\n\tfloat m_flRadiusMin = 110.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 4\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_ember.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0,\n\t\t&C_OP_AttractToControlPoint_2\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\yellowflare.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.090000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.500000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 )\n\tfloat(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 12, 50, 38, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 50, 239, 174, 255 )\n\tint(4) m_ColorMin = ( 33, 255, 122, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.200000\n\tfloat m_fLifetimeMin = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 15.000000\n\tfloat m_flRadiusMin = 8.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMin = 200\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMax = 300.000000\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_fSpeedMin = 300.000000\n\tfloat m_fSpeedMax = 350.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 400.000000, 400.000000, 400.000000 )\n\tfloat(3) m_vecOutputMin = ( -400.000000, -400.000000, -400.000000 )\n\tfloat m_flNoiseScaleLoc = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 0.400000\n\tfloat m_flEmitRate = 500.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tfloat m_fForceAmount = -2000.000000\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_2\n{\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tfloat m_fFalloffPower = 0.100000\n\tfloat m_fForceAmount = -4000.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_ember_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0,\n\t\t&C_OP_AttractToControlPoint_2\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -255.000000 )\n\tfloat m_fDrag = 0.125000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.250000\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.300003\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 )\n\tfloat(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 )\n\tbool m_bAdditive = true\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 12, 50, 38, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.750000\n\tfloat m_fLifetimeMax = 1.500000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 3.000000\n\tfloat m_flRadiusMax = 7.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMax = 1350.000000\n\tfloat m_fSpeedMin = 900.000000\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_fRadiusMax = 60.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.250000 )\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNoiseScaleLoc = 0.250000\n\tfloat(3) m_vecOutputMin = ( -400.000000, -400.000000, -400.000000 )\n\tfloat(3) m_vecOutputMax = ( 400.000000, 400.000000, 400.000000 )\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 63\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_fForceAmount = -2000.000000\n\tbool m_bDisableOperator = true\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = -4000.000000\n\tfloat m_fFalloffPower = 0.100000\n\tfloat m_flOpEndFadeOutTime = 0.200000\n\tbool m_bDisableOperator = true\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_explosion.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 50, 239, 174, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_explosion_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_ember_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_explosion_d.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_e.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_light.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_ember.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tfloat m_flStartFadeSize = 0.200000\n\tfloat m_flEndFadeSize = 0.250000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke\\\\maya_wispy\\\\wispy_v2.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tfloat m_fDrag = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flStartAlpha = 0.000000\n\tfloat m_flEndFadeInTime = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.700000\n\tfloat m_flEndScale = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -240.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( -230.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 100.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 220.000000\n\tfloat m_flRadiusMin = 180.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_explosion_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 86, 251, 152, 225 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 4.000000\n\tfloat m_flBias = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.200000\n\tfloat m_fLifetimeMin = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMax = 200.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 460.000000\n\tfloat m_flRadiusMax = 460.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_explosion_d.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 200, 0, 0, 175 )\n\tint m_nConstantSequenceNumber = 4\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tfloat m_flSelfIllumAmount = 2.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tfloat m_flLengthFadeInTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -300.000000 )\n\tfloat m_fDrag = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 93, 20, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.100000\n\tfloat m_fLifetimeMax = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMax = 200.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -140.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 1500.000000\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMin = 900.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 140.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 25.000000\n\tfloat m_flRadiusMin = 15.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMaxLength = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 94, 255, 208, 255 )\n\tint(4) m_ColorMin = ( 8, 192, 190, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 256\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_light.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 251, 152, 152, 225 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tint(4) m_ColorScale = ( 32, 215, 131, 255 )\n\tfloat m_flStartFalloff = 0.100000\n\tfloat m_flAlphaScale = 6.000000\n\tfloat m_flRadiusScale = 2.500000\n\tstring m_Notes = \"\"\n\tstring m_hTexture = \"materials\\\\particle\\\\fire_particle_2\\\\fire_particle_2.vtex\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 5.000000\n\tfloat m_flBias = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMax = 400.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 120.000000\n\tfloat m_flRadiusMax = 150.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 4\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 68, 199, 114, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LerpEndCapScalar_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_OffsetVectorToVector_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_d.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tbool m_bEndCap = true\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_explode.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tfloat m_flSelfIllumAmount = 4.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_jagged_01.vtex\"\n\tint m_nVertCropField = 18\n\tfloat m_flLengthFadeInTime = 2.000000\n\tstring m_Notes = \"\"\n\tbool m_bIgnoreDT = true\n\tint(4) m_trailTint = ( 0, 128, 0, 255 )\n\tfloat m_flTrailEndAlpha = -10.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tfloat m_RateMin = -1.000000\n\tint m_nField = 18\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.650000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.200000\n\tfloat m_flOutput = 0.000000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 140.000000\n\tfloat m_flRadiusMin = 80.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMaxLength = 3.500000\n\tstring m_Notes = \"\"\n\tfloat m_flMinLength = 5.500000\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 2\n\tfloat(3) m_vecOutputMin = ( 0.000000, 0.000000, 120.000000 )\n\tfloat(3) m_vecOutputMax = ( 0.000000, 0.000000, 145.000000 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.250000\n\tfloat m_fLifetimeMax = 2.000000\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tint m_nFieldOutput = 18\n\tfloat m_flMax = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tint m_nFieldOutput = 20\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tfloat m_flAlphaRandExponent = 2.500000\n\tint m_nAlphaMax = 90\n\tint m_nAlphaMin = 35\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInitialRadius = 650.000000\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 512.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 512.000000 )\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMaxTraceLength = 2048.000000\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tfloat m_flOffset = 24.000000\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 80.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 68, 199, 114, 25 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_2,\n\t\t&C_INIT_RandomLifeTime_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 14.000000\n\tint m_nOrientationType = 3\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_jagged_01.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVScrollRate = 0.300000\n\tfloat m_flTextureVWorldSize = 2000.000122\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDecayTime = 0.200000\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.200000\n\tfloat m_flOutput = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tint m_nOpEndCapState = 0\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.000000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 120.000000\n\tfloat m_flRadiusMax = 128.000000\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flParticlesPerOrbit = 46.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flInitialRadius = 650.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 512.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 512.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tfloat m_flMaxTraceLength = 2048.000000\n\tstring m_Notes = \"\"\n\tfloat m_flOffset = 24.000000\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tstring m_Notes = \"\"\n\tint m_nInputMax = 1\n\tint m_nFieldOutput = 16\n\tbool m_bActiveRange = true\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2\n{\n\tstring m_Notes = \"\"\n\tint m_nInputMax = 1\n\tint m_nFieldOutput = 16\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 0.000000\n\tbool m_bActiveRange = true\n\tbool m_bInvert = true\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 1.000000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 48\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 350.000000\n\tint(4) m_ConstantColor = ( 86, 252, 144, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LerpEndCapScalar_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_2,\n\t\t&C_INIT_RandomLifeTime_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tint m_bAdditive = 1\n\tint m_nOrientationType = 3\n\tbool m_bDisableZBuffering = false\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_hotwhite.vtex\"\n\tfloat m_flTextureVScrollRate = 1.000000\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 2000.000122\n\tint m_nMaxTesselation = 2\n\tint m_nMinTesselation = 2\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tfloat m_flDecayTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tfloat m_flLerpTime = 0.200000\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 7\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 0.000000\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.100000\n\tfloat m_flOutput = 550.000000\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInitialRadius = 650.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flParticlesPerOrbit = 46.000000\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 512.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 512.000000 )\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMaxTraceLength = 2048.000000\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tfloat m_flOffset = 24.000000\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tbool m_bActiveRange = true\n\tint m_nFieldOutput = 16\n\tint m_nInputMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2\n{\n\tbool m_bInvert = true\n\tbool m_bActiveRange = true\n\tfloat m_flOutputMax = 0.000000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nFieldOutput = 16\n\tint m_nInputMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.300000\n\tfloat m_fLifetimeMax = 1.000000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 48\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_d.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 260.000000\n\tint(4) m_ConstantColor = ( 86, 252, 144, 5 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_InterpolateRadius_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RandomLifeTime_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n\tstring m_Notes = \"\"\n\tint m_nOrientationType = 2\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusScale = 2.000000\n\tfloat m_flAlphaScale = 8.000000\n\tfloat m_flStartFalloff = 0.100000\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_04.vtex\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDecayTime = 0.200000\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.200000\n\tfloat m_flOutput = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tint m_nOpEndCapState = 0\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.000000\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flParticlesPerOrbit = 16.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flInitialRadius = 650.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 512.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 512.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tfloat m_flOffset = 128.000000\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tfloat m_flMaxTraceLength = 2048.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 16\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_explode.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 128\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantLifespan = 0.200000\n\tint(4) m_ConstantColor = ( 68, 199, 114, 25 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_2\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_explode_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_throne_wraith_king_explode.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 14.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_jagged_01.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 2000.000122\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 4.000000\n\tfloat m_flStartScale = 0.000000\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 0\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.250000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 128.000000\n\tfloat m_flRadiusMin = 120.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flInitialSpeedMax = 7550.000000\n\tfloat m_flInitialSpeedMin = 7550.000000\n\tstring m_Notes = \"\"\n\tfloat m_flInitialRadius = 50.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flParticlesPerOrbit = 46.000000\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 64.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 64.000000 )\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tbool m_bActiveRange = true\n\tint m_nFieldOutput = 16\n\tint m_nInputMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2\n{\n\tbool m_bInvert = true\n\tbool m_bActiveRange = true\n\tfloat m_flOutputMax = 0.000000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nFieldOutput = 16\n\tint m_nInputMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 48\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_explode_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 90.000000\n\tint(4) m_ConstantColor = ( 99, 255, 190, 155 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_RotateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_hOverrideMaterial = \"\"\n\tstring m_EconSlotName = \"\"\n\tstring m_ActivityName = \"\"\n\tint m_nSkin = 10\n\tstring m_Notes = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/particle/sphere.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.850000\n\tfloat m_flStartScale = 0.000000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 1.000000\n}\n\nC_OP_RotateVector C_OP_RotateVector_0\n{\n\tfloat m_flRotRateMax = 380.000000\n\tfloat m_flRotRateMin = -380.000000\n\tfloat(3) m_vecRotAxisMax = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecRotAxisMin = ( -1.000000, -1.000000, -1.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.500000\n\tfloat m_fLifetimeMin = 0.500000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_spirit_trail_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 24.000000\n\tfloat m_flConstantLifespan = 0.800000\n\tint(4) m_ConstantColor = ( 23, 217, 119, 155 )\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_RemapParticleCountOnScalarEndCap_0,\n\t\t&C_OP_RemapParticleCountOnScalarEndCap_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RemapCPtoVector_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 14.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_plasma_03.vtex\"\n\tfloat m_flTextureVOffset = 0.300000\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVScrollRate = -1.250000\n\tfloat m_flTextureVWorldSize = 142.857132\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.100000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime_min = -10.000000\n\tfloat m_flStartTime_max = -10.000000\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.080000\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -16.000000, -16.000000, -16.000000 )\n\tfloat(3) m_vecOutputMax = ( 16.000000, 16.000000, 16.000000 )\n\tbool m_bAdditive = true\n}\n\nC_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bBackwards = true\n\tint m_nInputMax = 4\n\tint m_nFieldOutput = 16\n}\n\nC_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_2\n{\n\tstring m_Notes = \"\"\n\tbool m_bBackwards = true\n\tint m_nInputMax = 4\n\tbool m_bScaleCurrent = true\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 7\n\tfloat m_flOutputMax = 0.200000\n\tfloat m_flNoiseScaleLoc = 0.100000\n}\n\nC_INIT_RemapCPtoVector C_INIT_RemapCPtoVector_0\n{\n\tfloat(3) m_vOutputMax = ( 1.000000, 1.000000, 1.000000 )\n\tint m_nFieldOutput = 6\n\tfloat(3) m_vInputMax = ( 255.000000, 255.000000, 255.000000 )\n\tint m_nCPInput = 15\n\tstring m_Notes = \"\"\n\tint m_nOpScaleCP = 16\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tbool m_bActiveRange = true\n\tbool m_bScaleInitialRange = true\n\tint m_nInputMax = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 32.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_spirits_2.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 3\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( -30.000000, -30.000000, -30.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 30.000000, 30.000000, 30.000000 )\n\tfloat m_flCullRadius = -1.000000\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 0.750000\n\tint(4) m_ConstantColor = ( 0, 248, 146, 255 )\n\tint m_nConstantSequenceNumber1 = 1\n\tfloat m_flMaxDrawDistance = 4000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 0.100000\n\tbool m_bShouldSort = false\n\tint m_nMinCPULevel = 1\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0,\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_VelocityMatchingForce_0,\n\t\t&C_OP_SetControlPointToCenter_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_MaxVelocity_0,\n\t\t&C_OP_SetPerChildControlPoint_0,\n\t\t&C_OP_OscillateVector_0,\n\t\t&C_OP_RemapSpeed_0,\n\t\t&C_OP_Spin_0,\n\t\t&C_OP_SpinYaw_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomTrailLength_0,\n\t\t&C_INIT_NormalOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0,\n\t\t&C_OP_TurbulenceForce_0,\n\t\t&C_OP_TwistAroundAxis_0,\n\t\t&C_OP_AttractToControlPoint_2,\n\t\t&C_OP_AttractToControlPoint_4\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t&C_OP_ConstrainDistance_0\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_spirit_trail_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_spirit_trail_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/wraith_king_spirit_trail_c.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tfloat m_flStartFalloff = 0.100000\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusScale = 3.000000\n\tfloat m_flAlphaScale = 4.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_yellow.vtex\"\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tbool m_bOrientZ = true\n\tstring m_Notes = \"\"\n\tint m_nSkin = 1\n\tstring m_ActivityName = \"\"\n\tstring m_EconSlotName = \"\"\n\tstring m_hOverrideMaterial = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/particle/sphere3.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_VelocityMatchingForce C_OP_VelocityMatchingForce_0\n{\n\tfloat m_flDirScale = 0.013129\n\tfloat m_flSpdScale = 0.002500\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointToCenter C_OP_SetControlPointToCenter_0\n{\n\tint m_nCP1 = 5\n\tfloat(3) m_vecCP1Pos = ( 0.000000, 0.000000, 32.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -10.000000, -10.000000, -10.000000 )\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 300.000000 )\n\tfloat m_fDrag = 0.080000\n\tstring m_Notes = \"\"\n}\n\nC_OP_MaxVelocity C_OP_MaxVelocity_0\n{\n\tfloat m_flMaxVelocity = 1750.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetPerChildControlPoint C_OP_SetPerChildControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tint m_nNumControlPoints = 3\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bOffset = true\n\tfloat(3) m_RateMin = ( -200.000000, -200.000000, -200.000000 )\n\tfloat(3) m_RateMax = ( 200.000000, 200.000000, 200.000000 )\n\tfloat(3) m_FrequencyMax = ( 2.000000, 2.000000, 2.000000 )\n\tbool m_bProportional = false\n\tfloat m_flEndTime_min = 99999998430674944.000000\n\tfloat m_flEndTime_max = 99999998430674944.000000\n}\n\nC_OP_RemapSpeed C_OP_RemapSpeed_0\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMax = 1.500000\n\tfloat m_flOutputMin = 0.750000\n\tfloat m_flInputMax = 1500.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Spin C_OP_Spin_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSpinRateDegrees = 12\n}\n\nC_OP_SpinYaw C_OP_SpinYaw_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSpinRateDegrees = 100\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDecayTime = 0.250000\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLerpTime = 0.250000\n\tfloat m_flOutput = 0.000000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flPrevPosScale = 3.000000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 25.000000\n\tfloat m_fRadiusMax = 25.000000\n\tfloat(3) m_vecDistanceBias = ( 0.010000, 0.010000, 0.000000 )\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMax = 100.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 8.000000\n\tfloat m_fLifetimeMax = 22.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMin = -5.000000\n\tfloat m_flDegreesMax = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMin = ( -100.000000, -100.000000, 0.000000 )\n\tfloat(3) m_vecOutputMax = ( 100.000000, 100.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomTrailLength C_INIT_RandomTrailLength_0\n{\n\tfloat m_flMinLength = 0.500000\n\tfloat m_flMaxLength = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_NormalOffset C_INIT_NormalOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( -1.000000, -1.000000, -1.000000 )\n\tfloat(3) m_OffsetMax = ( 1.000000, 1.000000, 1.000000 )\n\tbool m_bNormalize = true\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 10.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 3\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tfloat m_fForceAmount = 80.000000\n\tfloat m_fFalloffPower = -0.625000\n\tfloat(3) m_vecComponentScale = ( 1.000000, 1.000000, 0.500000 )\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_OP_TurbulenceForce C_OP_TurbulenceForce_0\n{\n\tfloat(3) m_vecNoiseAmount0 = ( 450.000000, 450.000000, 450.000000 )\n\tfloat m_flNoiseCoordScale1 = 0.100000\n\tfloat(3) m_vecNoiseAmount1 = ( -510.000000, -510.000000, -510.000000 )\n\tfloat m_flNoiseCoordScale2 = 3.000000\n\tfloat(3) m_vecNoiseAmount2 = ( 100.000000, 100.000000, 100.000000 )\n\tfloat m_flNoiseCoordScale3 = 5.000000\n\tfloat(3) m_vecNoiseAmount3 = ( -300.000000, -300.000000, -300.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_TwistAroundAxis C_OP_TwistAroundAxis_0\n{\n\tfloat(3) m_TwistAxis = ( 0.100000, 0.000000, 1.000000 )\n\tbool m_bLocalSpace = true\n\tfloat m_fForceAmount = -150.000000\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_2\n{\n\tint m_nControlPointNumber = 5\n\tfloat m_fFalloffPower = -0.010000\n\tfloat m_fForceAmount = -150.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_4\n{\n\tint m_nControlPointNumber = 5\n\tfloat m_fFalloffPower = 0.500000\n\tfloat m_fForceAmount = -500.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ConstrainDistance C_OP_ConstrainDistance_0\n{\n\tfloat m_fMaxDistance = 56.000000\n\tstring m_Notes = \"\"\n\tfloat m_fMinDistance = 15.000000\n\tint m_nControlPointNumber = 3\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_tombstone_tether.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 15\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 135, 198, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_gameplay/frostivus_wraithking_tombstone.vpcf\"\n\t\t}\n\t]\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_explosion.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 2.000000\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tint m_nConstantSequenceNumber = 3\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_OffsetVectorToVector_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 0\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tbool m_bIgnoreDT = true\n\tfloat m_flMaxLength = 128.000000\n\tstring m_Notes = \"\"\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.250000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.100000\n\tfloat m_fLifetimeMax = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 8.000000\n\tfloat m_flRadiusMax = 24.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tfloat(3) m_vecOutputMax = ( 700.000000, 700.000000, 700.000000 )\n\tfloat(3) m_vecOutputMin = ( -700.000000, -700.000000, -700.000000 )\n\tint m_nFieldOutput = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 32\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_fForceAmount = 700.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_explosion_flash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 127, 223, 254, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/drow_base_attack_explosion_flash_b.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/drow_base_attack_explosion.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 3.000000\n\tfloat m_flStartScale = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.150000\n\tfloat m_fLifetimeMin = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMin = 24.000000\n\tfloat m_fSpeedMax = 48.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 130.000000, 0.000000, 32.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 330.000000, 0.000000, 64.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 80.000000\n\tfloat m_flRadiusMax = 90.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_explosion_flash_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tbool m_bMod2X = true\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_modulate_03.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 0.500000\n\tfloat m_flEndScale = 1.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.180000\n\tfloat m_fLifetimeMax = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 64.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 32.000000 )\n\tfloat m_fSpeedMax = 48.000000\n\tfloat m_fSpeedMin = 24.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 24.000000\n\tfloat m_flRadiusMin = 20.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_launch.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tint m_nInitialParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_OscillateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tbool m_bMod2X = true\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_modulate_02.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flStartFadeOutTime = 0.750000\n\tfloat m_flEndFadeInTime = 0.125000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 2.000000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fSpeedMax = 96.000000\n\tfloat m_fSpeedMin = 24.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.500000\n\tfloat m_fLifetimeMin = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 4.000000\n\tfloat m_flRadiusMax = 8.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 0, 50, 67, 255 )\n\tint(4) m_ColorMax = ( 0, 130, 173, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 32\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tfloat m_flOpEndFadeOutTime = 0.250000\n\tfloat m_fForceAmount = 1000.000000\n\tfloat m_fFalloffPower = 0.000000\n\tint m_nControlPointNumber = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_trail.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 0, 47, 90, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InheritVelocity_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_smoke_01.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 999.999939\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tint m_nOpEndCapState = 0\n\tfloat m_flBias = 0.750000\n\tfloat m_flStartTime = 0.500000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flStartTime_min = 0.050000\n\tfloat m_flStartTime_max = 0.050000\n\tfloat m_flEndTime_min = 0.100000\n\tint m_nControlPointNumber = 5\n\tfloat m_flEndTime_max = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -12.000000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.350000\n\tfloat m_fLifetimeMin = 0.350000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 14.000000\n\tfloat m_flRadiusMin = 14.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InheritVelocity C_INIT_InheritVelocity_0\n{\n\tfloat m_flVelocityScale = 0.010000\n\tint m_nControlPointNumber = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMin = 148\n\tint m_nAlphaMax = 148\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 32.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_trail_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 99, 166, 250, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_DistanceToCP_0,\n\t\t&C_OP_SetControlPointPositions_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InheritVelocity_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RemapScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/drow_base_attack_trail.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 2.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_smoke_01.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 999.999939\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartTime = 0.500000\n\tfloat m_flBias = 0.750000\n\tint m_nOpEndCapState = 0\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flEndTime_max = 0.100000\n\tint m_nControlPointNumber = 5\n\tfloat m_flEndTime_min = 0.100000\n\tfloat m_flStartTime_max = 0.050000\n\tfloat m_flStartTime_min = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = -12.000000\n\tfloat m_flEndTime = 99999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_DistanceToCP C_OP_DistanceToCP_0\n{\n\tint m_nStartCP = 5\n\tint m_nFieldOutput = 16\n\tfloat m_flInputMax = 48.000000\n\tfloat m_flInputMin = 12.000000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointPositions C_OP_SetControlPointPositions_0\n{\n\tint m_nCP1 = 5\n\tfloat(3) m_vecCP1Pos = ( -40.000000, 0.000000, 0.000000 )\n\tint m_nCP2 = 6\n\tfloat(3) m_vecCP2Pos = ( -24.000000, 0.000000, 0.000000 )\n\tint m_nCP3 = 6\n\tfloat(3) m_vecCP3Pos = ( -24.000000, 0.000000, 0.000000 )\n\tint m_nCP4 = 6\n\tfloat(3) m_vecCP4Pos = ( -32.000000, 0.000000, 0.000000 )\n\tint m_nHeadLocation = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.300000\n\tfloat m_fLifetimeMax = 0.300000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 21.000000\n\tfloat m_flRadiusMax = 21.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InheritVelocity C_INIT_InheritVelocity_0\n{\n\tint m_nControlPointNumber = 5\n\tfloat m_flVelocityScale = 0.010000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 24\n\tint m_nAlphaMin = 24\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flInputMax = 0.100000\n\tfloat m_flEndTime = 0.100000\n\tfloat m_flStartTime = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 32.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/drow_linear_arrow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 1.000000\n\tbool m_bShouldSort = false\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_SetControlPointsToParticle_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_MovementPlaceOnGround_0,\n\t\t&C_OP_RemapVelocityToVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_NormalAlignToCP_0,\n\t\t&C_INIT_VelocityFromCP_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_ActivityName = \"\"\n\tstring m_Notes = \"\"\n\tstring m_EconSlotName = \"\"\n\tstring m_hOverrideMaterial = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/projectiles/drow_arrow.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0\n{\n\tbool m_bSetOrientation = true\n\tint m_nFirstControlPoint = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tfloat m_RateMax = 2.000000\n\tfloat m_RateMin = 1.000000\n\tint m_nField = 4\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0\n{\n\tint m_nRefCP1 = 3\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tfloat m_flTraceOffset = 256.000000\n\tfloat m_flMaxTraceLength = 1024.000000\n\tbool m_bIncludeWater = true\n\tfloat m_flOffset = 70.000000\n\tfloat m_flTolerance = 96.000000\n\tint m_nLerpCP = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_RemapVelocityToVector C_OP_RemapVelocityToVector_0\n{\n\tint m_nFieldOutput = 21\n\tbool m_bNormalize = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.200000\n\tfloat m_fLifetimeMax = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 213, 240, 246, 255 )\n\tint(4) m_ColorMax = ( 213, 240, 246, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_NormalAlignToCP C_INIT_NormalAlignToCP_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_VelocityFromCP C_INIT_VelocityFromCP_0\n{\n\tint m_nControlPoint = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/holdout_guardian_angel_wings.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 1\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 0.650000\n\tint m_nConstantSequenceNumber1 = 1\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_RemapScalarOnceTimed_0,\n\t\t&C_OP_ReinitializeScalarEndCap_0,\n\t\t&C_OP_LerpEndCapScalar_0,\n\t\t&C_OP_LerpEndCapScalar_2,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Orient2DRelToCP_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tbool m_bOrientZ = true\n\tbool m_bResetAnimOnStop = true\n\tstring m_ActivityName = \"\"\n\tstring m_Notes = \"\"\n\tstring m_EconSlotName = \"\"\n\tstring m_hOverrideMaterial = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/heroes/omniknight/omniknightwings.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tfloat m_flDecayTime = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RemapScalarOnceTimed C_OP_RemapScalarOnceTimed_0\n{\n\tfloat m_flOutputMax = 2.000000\n\tfloat m_flOutputMin = 2.000000\n\tint m_nFieldOutput = 13\n\tfloat m_flInputMax = 10.000000\n\tint m_nFieldInput = 13\n\tfloat m_flRemapTime = 1.800000\n\tint m_nOpEndCapState = 0\n\tstring m_Notes = \"\"\n}\n\nC_OP_ReinitializeScalarEndCap C_OP_ReinitializeScalarEndCap_0\n{\n\tfloat m_flOutputMax = 4.000000\n\tfloat m_flOutputMin = 4.000000\n\tint m_nFieldOutput = 13\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0\n{\n\tfloat m_flOutput = 0.000000\n\tfloat m_flLerpTime = 0.250000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_2\n{\n\tfloat m_flOutput = 0.000000\n\tint m_nFieldOutput = 7\n\tfloat m_flLerpTime = 0.250000\n\tint m_nOpEndCapState = 1\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tbool m_bLockRot = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0\n{\n\tfloat m_flRotOffset = -90.000000\n\tint m_nFieldOutput = 12\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 7.000000\n\tfloat m_fLifetimeMax = 7.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMin = ( -2.000000, 0.000000, 0.000000 )\n\tfloat(3) m_OffsetMax = ( -2.000000, 0.000000, 0.000000 )\n\tbool m_bLocalCoords = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fs_bladeswipe_flash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_CreateFromParentParticles_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.400000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartScale = 2.000000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.050000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 98, 76, 62, 255 )\n\tfloat m_flFadeEndTime = 0.600000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 1.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMax = ( 255, 139, 14, 255 )\n\tint(4) m_ColorMin = ( 255, 235, 235, 255 )\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOutputMax = 0.000000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nFieldOutput = 7\n\tfloat m_flInputMax = 0.100000\n\tfloat m_flInputMin = 0.090000\n}\n\nC_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tfloat m_flOutputMax = 10.000000\n\tfloat m_flOutputMin = 1.000000\n\tint m_nInputMax = 60\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmissionDuration = 0.075000\n\tfloat m_flEmitRate = 805.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fs_bladeswipe_rope.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateSequentialPath_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fs_bladeswipe_flash.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 2.000000\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_streak_01.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVOffset = 0.100000\n\tfloat m_flTextureVScrollRate = -0.150000\n\tfloat m_flTextureVWorldSize = 999.999939\n\tint m_nMaxTesselation = 2\n\tint m_nMinTesselation = 2\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 12.000000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.600000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.050000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeEndTime = 0.600000\n\tint(4) m_ColorFade = ( 105, 64, 36, 255 )\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.600000\n\tfloat m_fLifetimeMax = 0.600000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 255, 235, 235, 255 )\n\tint(4) m_ColorMax = ( 255, 133, 60, 255 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 8.000000\n\tfloat m_flRadiusMax = 8.000000\n}\n\nC_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flNumToAssign = 60.000000\n\tCPathParameters m_PathParams = CPathParameters\n\t{\n\t\tint m_nEndControlPointNumber = 3\n\t\tint m_nStartControlPointNumber = 2\n\t}\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tint m_nInputMax = 60\n\tstring m_Notes = \"\"\n\tfloat m_flOutputMin = 0.100000\n\tfloat m_flOutputMax = 10.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 805.000000\n\tfloat m_flEmissionDuration = 0.075000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fs_omnislash_attack_blur_3.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 9\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 300.000000\n\tint(4) m_ConstantColor = ( 255, 198, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RemapDirectionToCPToVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RemapParticleCountToScalar_0,\n\t\t&C_INIT_RemapParticleCountToScalar_2,\n\t\t&C_INIT_RemapParticleCountToScalar_4,\n\t\t&C_INIT_RemapParticleCountToScalar_6,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_RingWave_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fs_bladeswipe_flash.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tfloat m_flSelfIllumAmount = 1.000000\n\tint m_nOrientationType = 3\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_plasma_06.vtex\"\n\tfloat m_flTextureVScrollRate = -1.000000\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 666.666687\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tfloat m_flOpEndFadeInTime = 0.500000\n\tfloat m_flOpStartFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.350000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.500000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.650000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RemapDirectionToCPToVector C_OP_RemapDirectionToCPToVector_0\n{\n\tint m_nFieldOutput = 21\n\tbool m_bNormalize = true\n\tfloat(3) m_vecOffsetAxis = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flOffsetRot = -70.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.180000\n\tfloat m_fLifetimeMin = 0.180000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0\n{\n\tint m_nInputMax = 8\n\tfloat m_flOutputMax = 300.000000\n\tfloat m_flOutputMin = 100.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2\n{\n\tint m_nInputMax = 5\n\tint m_nFieldOutput = 7\n\tfloat m_flOutputMax = 0.250000\n\tbool m_bActiveRange = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_4\n{\n\tint m_nInputMin = 6\n\tint m_nInputMax = 8\n\tint m_nFieldOutput = 7\n\tfloat m_flOutputMin = 0.250000\n\tfloat m_flOutputMax = 0.000000\n\tbool m_bActiveRange = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_6\n{\n\tfloat m_flOutputMin = 0.075000\n\tint m_nInputMax = 8\n\tint m_nFieldOutput = 1\n\tfloat m_flOutputMax = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMin = ( 20.000000, 0.000000, 80.000000 )\n\tfloat(3) m_OffsetMax = ( 20.000000, 0.000000, 80.000000 )\n\tbool m_bLocalCoords = true\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flInitialRadius = 150.000000\n\tbool m_bEvenDistribution = true\n\tfloat m_flParticlesPerOrbit = 15.000000\n\tfloat m_flYaw = 160.000000\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n\tfloat m_flRoll = -35.000000\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 60.000000\n\tfloat m_flEmissionDuration = 0.180000\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime = 0.350000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fs_omnislash_slashers.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 10\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 0.800000\n\tint m_nConstantSequenceNumber = 6\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Orient2DRelToCP_0,\n\t\t&C_OP_StopAfterCPDuration_0,\n\t\t&C_OP_EndCapTimedDecay_0,\n\t\t&C_OP_RampScalarSplineSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_SetPerChildControlPoint_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RandomSecondSequence_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_VelocityRandom_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fs_omnislash_attack_blur_3.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tint m_nModelCP = 0\n\tbool m_bOrientZ = true\n\tstring m_ActivityName = \"\"\n\tstring m_Notes = \"\"\n\tstring m_EconSlotName = \"\"\n\tstring m_hOverrideMaterial = \"models\\\\heroes\\\\ember_spirit\\\\ember_spirit_remnant_2_Add.vmt\"\n\tbool m_bManualAnimFrame = true\n\tint m_nManualFrameField = 18\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/heroes/juggernaut/juggernaut.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tbool m_bDisableOperator = true\n\tfloat m_flFadeInTime = 0.125000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0\n{\n\tint m_nFieldOutput = 12\n\tfloat m_flRotOffset = 90.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_StopAfterCPDuration C_OP_StopAfterCPDuration_0\n{\n\tbool m_bDestroyImmediately = true\n\tbool m_bPlayEndCap = false\n\tstring m_Notes = \"\"\n}\n\nC_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0\n{\n\tfloat m_flDecayTime = 0.125000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSplineSimple C_OP_RampScalarSplineSimple_0\n{\n\tstring m_Notes = \"\"\n\tint m_nField = 18\n\tfloat m_Rate = 16.000000\n\tbool m_bEaseOut = true\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tint m_nField = 18\n\tfloat m_Rate = 5.000000\n}\n\nC_OP_SetPerChildControlPoint C_OP_SetPerChildControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFirstControlPoint = 3\n\tint m_nNumControlPoints = 6\n\tbool m_bSetOrientation = true\n\tbool m_bNumBasedOnParticleCount = true\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusRandExponent = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( -20.000000, -20.000000, 200.000000 )\n\tfloat(3) m_OffsetMax = ( 20.000000, 20.000000, 200.000000 )\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tfloat m_flMaxTraceLength = 512.000000\n\tstring m_CollisionGroupName = \"DEBRIS\"\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0\n{\n\tint m_nSequenceMax = 35\n\tint m_nSequenceMin = 35\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 24, 255, 0, 255 )\n\tint(4) m_ColorMax = ( 24, 255, 0, 255 )\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMin = 6.000000\n\tfloat m_flMax = 6.000000\n\tint m_nFieldOutput = 18\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_VelocityRandom C_INIT_VelocityRandom_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 600.000000, 600.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( -600.000000, -600.000000, 0.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fs_omnislash_tgt.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_SetChildControlPoints_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fs_bladeswipe_rope.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_SetChildControlPoints C_OP_SetChildControlPoints_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bSetOrientation = true\n\tint m_nNumControlPoints = 2\n\tint m_nFirstControlPoint = 2\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fRadiusMax = 70.000000\n\tfloat m_fRadiusMin = 60.000000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 2\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_caster.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 204, 0, 255 )\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_BasicMovement_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_CreateOnModel_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fsos_flashbang.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fsos_flash.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fsos_caster_grndhit.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fsos_caster_scortch.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tint m_bAdditive = 1\n\tint m_nOrientationType = 3\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_edge_03.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 999.999939\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeStartTime = 0.250000\n\tfloat m_flFadeEndTime = 0.600000\n\tint(4) m_ColorFade = ( 72, 32, 0, 255 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 4.000000\n\tfloat m_flBias = 0.600000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 2.000000\n\tfloat m_flRadiusMax = 2.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 255, 186, 69, 255 )\n\tint(4) m_ColorMax = ( 255, 186, 69, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.600000\n\tfloat m_fLifetimeMax = 0.600000\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInputMin = 0.100000\n\tfloat m_flInputMax = 0.185000\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 0.000000\n\tbool m_bScaleInitialRange = true\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMax = ( -5.000000, 0.000000, 125.000000 )\n\tfloat(3) m_OffsetMin = ( -5.000000, 0.000000, 125.000000 )\n\tint m_nControlPointNumber = 1\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOffset = 5.000000\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_Notes = \"\"\n\tstring m_HitboxSetName = \"low\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmissionDuration = 0.100000\n\tfloat m_flEmitRate = 200.000000\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = -100.000000\n\tfloat m_fFalloffPower = 0.000000\n\tint m_nControlPointNumber = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_caster_grndhit.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_SpinUpdate_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_ring_wave_10.vtex\"\n\tstring m_Notes = \"\"\n\tint m_nOrientationType = 2\n\tfloat m_flAnimationRate = 0.300000\n\tfloat m_flAnimationRate2 = 0.100000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.020000\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndFadeInTime = 0.200000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 80.000000\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 175, 155, 156, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.350000\n\tfloat m_fLifetimeMax = 0.500000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 1.500000\n\tfloat m_flRadiusMin = 0.500000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 250\n\tint m_nAlphaMax = 200\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 1\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 163, 154, 103, 255 )\n\tint(4) m_ColorMax = ( 200, 68, 42, 255 )\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( -5.000000, 0.000000, 125.000000 )\n\tfloat(3) m_OffsetMax = ( -5.000000, 0.000000, 125.000000 )\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOffset = 5.000000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 12\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_caster_scortch.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 1\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 0.350000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_RemapScalarOnceTimed_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_hOverrideMaterial = \"\"\n\tstring m_EconSlotName = \"\"\n\tstring m_Notes = \"\"\n\tint m_nBodyGroupField = 13\n\tint m_nAnimationField = 9\n\tstring m_ActivityName = \"\"\n\tbool m_bOrientZ = true\n\tfloat m_flAnimationRate = 60.000000\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/particle/crater.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusScale = 300.000000\n\tfloat m_flAlphaScale = 10.000000\n\tint(4) m_ColorScale = ( 255, 114, 0, 255 )\n\tstring m_hTexture = \"materials\\\\models\\\\particle\\\\crater_color.vtex\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n\tfloat m_flOpEndFadeInTime = 5.000000\n\tfloat m_flOpStartFadeInTime = 4.000000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -10.000000 )\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.100000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.450000\n}\n\nC_OP_RemapScalarOnceTimed C_OP_RemapScalarOnceTimed_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOutputMax = 2.000000\n\tfloat m_flOutputMin = 2.000000\n\tint m_nFieldOutput = 9\n\tfloat m_flInputMin = 1.000000\n\tint m_nFieldInput = 9\n\tfloat m_flRemapTime = 0.235000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 3.000000\n\tfloat m_fLifetimeMax = 3.000000\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 1\n\tint m_nSequenceMin = 1\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 128.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 128.000000 )\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOffset = 4.000000\n\tbool m_bSetNormal = true\n\tfloat m_flMaxTraceLength = 512.000000\n\tstring m_CollisionGroupName = \"DEBRIS\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 12\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 0.300000\n\tfloat m_flRadiusMax = 0.450000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartTime = 0.150000\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_flash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 100\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 15.000000\n\tint(4) m_ConstantColor = ( 255, 0, 0, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_CreateFromParentParticles_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\yellowflare2.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.400000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeEndTime = 0.600000\n\tint(4) m_ColorFade = ( 98, 96, 62, 255 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.250000\n\tfloat m_fLifetimeMax = 0.250000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 255, 235, 235, 255 )\n\tint(4) m_ColorMax = ( 255, 20, 14, 255 )\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 80.000000\n\tfloat m_flRadiusMax = 80.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMin = 50\n\tint m_nAlphaMax = 100\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInputMin = 0.100000\n\tfloat m_flInputMax = 0.200000\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 3.000000\n\tbool m_bScaleInitialRange = true\n}\n\nC_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_OffsetMax = ( 15.000000, 0.000000, 0.000000 )\n\tbool m_bLocalCoords = true\n\tfloat(3) m_OffsetMin = ( 15.000000, 0.000000, 0.000000 )\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 350.000000\n\tfloat m_flEmissionDuration = 0.150000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_flashbang.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 2\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 600.000000\n\tint(4) m_ConstantColor = ( 0, 234, 255, 155 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_2\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fsos_flashbang_glow2.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fsos_flashbang_ray.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\anam_white.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 0.900000\n\tfloat m_flBias = 0.800000\n\tfloat m_flStartScale = 3.000000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 243, 209, 126, 255 )\n\tfloat m_flFadeEndTime = 0.500000\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_2\n{\n\tstring m_Notes = \"\"\n\tfloat m_flBias = 0.250000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartTime = 0.900000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.500000\n\tfloat m_fLifetimeMax = 0.500000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 1\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegrees = 90.000000\n\tfloat m_flDegreesMax = 0.000000\n\tbool m_bRandomlyFlipDirection = false\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 6\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_flashbang_glow2.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 20.000000\n\tint(4) m_ConstantColor = ( 204, 255, 0, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_CreateFromParentParticles_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 4.000000\n\tfloat m_flStartScale = 0.500000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.150000\n\tfloat m_fLifetimeMin = 0.130000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 40.000000\n\tfloat m_flRadiusMax = 120.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMax = 100\n\tint m_nAlphaMin = 150\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 236, 255, 109, 255 )\n\tint(4) m_ColorMax = ( 187, 255, 126, 255 )\n}\n\nC_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 6\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_flashbang_ray.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 20.000000\n\tint(4) m_ConstantColor = ( 255, 240, 77, 100 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateFromParentParticles_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\particle_flare_006.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.000000\n\tfloat m_flEndScale = 5.000000\n\tfloat m_flBias = 0.750000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.170000\n\tfloat m_fLifetimeMax = 0.175000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 98.000000\n\tfloat m_flRadiusMin = 24.000000\n}\n\nC_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 5\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_omnislash_ascension.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 60\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 210, 239, 159, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_SetSingleControlPointPosition_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RemapScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_omnislash_ascension_sparks.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_fsos_flashbang.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_ring_wavy4.vtex\"\n\tfloat m_flAnimationRate2 = 0.100000\n\tfloat m_flAnimationRate = 1.000000\n\tint m_nOrientationType = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 1.500000\n\tint m_nOpEndCapState = 0\n\tfloat m_flBias = 0.900000\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.000000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 255, 216, 0, 255 )\n\tfloat m_flFadeStartTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_Rate = -3.000000\n\tint m_nField = 16\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0\n{\n\tfloat(3) m_vecCP1Pos = ( 0.000000, 0.000000, 20.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.750000\n\tfloat m_fLifetimeMin = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 175.000000\n\tfloat m_flRadiusMin = 175.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat m_flNoiseScale = 3.000000\n\tfloat(3) m_vecOutputMax = ( 32.000000, 32.000000, 132.000000 )\n\tfloat(3) m_vecOutputMin = ( -32.000000, -32.000000, -32.000000 )\n\tfloat m_flNoiseScaleLoc = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 20.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 10.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 255, 143, 0, 255 )\n\tint(4) m_ColorMax = ( 210, 239, 159, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tbool m_bEvenDistribution = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInputMin = 0.600000\n\tint m_nFieldOutput = 7\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 0.000000\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 1.000000\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 60.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_omnislash_ascension_sparkrays.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 150\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOut_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_DistanceToCP_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeInSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_CreateFromParentParticles_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOut C_OP_FadeOut_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTimeMax = 1.000000\n\tfloat m_flFadeOutTimeMin = 0.400000\n\tfloat m_flFadeBias = 0.800000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 0.500000\n\tfloat m_flStartScale = 2.000000\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 40.000000, 40.000000, 40.000000 )\n\tfloat(3) m_vecOutputMin = ( -40.000000, -40.000000, -40.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.800000\n}\n\nC_OP_DistanceToCP C_OP_DistanceToCP_0\n{\n\tstring m_Notes = \"\"\n\tint m_nStartCP = 10\n\tfloat m_flInputMin = 150.000000\n\tfloat m_flInputMax = 1600.000000\n\tint m_nFieldOutput = 10\n\tfloat m_flOutputMin = 0.250000\n\tfloat m_flOutputMax = 0.050000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.100000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.500000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.500000\n\tfloat m_fLifetimeMax = 0.600000\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flVelocityScale = 1.000000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 25.000000\n\tfloat m_flRadiusMin = 16.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 255, 228, 0, 255 )\n\tint(4) m_ColorMax = ( 252, 255, 0, 255 )\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bInitFromKilledParentParticles = true\n\tfloat m_flEmitRate = 2000.000000\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fFalloffPower = 0.100000\n\tfloat m_fForceAmount = 8000.000000\n\tint m_nControlPointNumber = 10\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_omnislash_ascension_sparks.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 150\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_SetSingleControlPointPosition_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_VelocityRandom_0,\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/juggernaut_omnislash_ascension_sparkrays.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\yellowflare.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 1.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.200000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 2.000000\n\tfloat m_flEndScale = 0.500000\n\tfloat m_flEndTime = 0.800000\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fl4NoiseScale = 0.800000\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -40.000000, -40.000000, -40.000000 )\n\tfloat(3) m_vecOutputMax = ( 40.000000, 40.000000, 40.000000 )\n\tbool m_bAdditive = true\n}\n\nC_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_vecCP1Pos = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nCP1 = 10\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 20.000000\n\tfloat m_flRadiusMin = 15.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.350000\n\tfloat m_fLifetimeMin = 0.800000\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 255, 204, 0, 255 )\n\tint(4) m_ColorMax = ( 218, 232, 64, 255 )\n}\n\nC_INIT_VelocityRandom C_INIT_VelocityRandom_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 500.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 100.000000 )\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fSpeedMax = 1500.000000\n\tfloat m_fSpeedMin = 500.000000\n\tint m_nControlPointNumber = 10\n\tfloat m_fRadiusMax = 160.000000\n\tfloat m_fRadiusMin = 160.000000\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 200\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fForceAmount = 8000.000000\n\tfloat m_fFalloffPower = 0.100000\n\tint m_nControlPointNumber = 10\n\tfloat m_flOpStartFadeInTime = 0.350000\n\tfloat m_flOpEndFadeInTime = 0.600000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/maiden_holdout_arcane_buff.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 512\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flNoDrawTimeToGoToSleep = 12.000000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_OscillateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RingWave_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t&C_OP_PlanarConstraint_0\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/maiden_holdout_arcane_buff_snow_c.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/maiden_holdout_arcane_buff_caster.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.001000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat(3) m_RateMin = ( -2.000000, -2.000000, -1.000000 )\n\tfloat(3) m_RateMax = ( 2.000000, 2.000000, 1.000000 )\n\tfloat(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 )\n\tfloat m_flEndTime_min = 0.700000\n\tfloat m_flEndTime_max = 0.700000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 117, 175, 241, 255 )\n\tint(4) m_ColorMin = ( 155, 214, 245, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 24.000000, 24.000000, 824.000000 )\n\tfloat(3) m_OffsetMin = ( -24.000000, -24.000000, 634.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 63\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat m_flNoiseScaleLoc = 0.100000\n\tfloat(3) m_vecOutputMin = ( -64.000000, -64.000000, -64.000000 )\n\tfloat(3) m_vecOutputMax = ( 64.000000, 64.000000, 64.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flInitialRadius = 0.600000\n\tfloat m_flThickness = 0.600000\n\tfloat m_flInitialSpeedMax = 0.200000\n\tint m_nOverrideCP = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 400.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PlanarConstraint C_OP_PlanarConstraint_0\n{\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/maiden_holdout_arcane_buff_caster.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 200\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flNoDrawTimeToGoToSleep = 12.000000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_MovementRotateParticleAroundAxis_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_CreateWithinSphere_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks3.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.010000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_MovementRotateParticleAroundAxis C_OP_MovementRotateParticleAroundAxis_0\n{\n\tfloat m_flRotRate = -75.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 117, 175, 241, 255 )\n\tint(4) m_ColorMin = ( 155, 214, 245, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 10.000000\n\tfloat m_fLifetimeMin = 8.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 2.000000\n\tfloat m_flRadiusMax = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 155\n\tint m_nAlphaMin = 55\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 50.000000, 0.000000, 50.000000 )\n\tfloat(3) m_OffsetMin = ( 40.000000, 0.000000, 32.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMin = -360.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 63\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat m_flNoiseScale = 0.500000\n\tfloat m_flNoiseScaleLoc = 0.000000\n\tfloat(3) m_vecOutputMin = ( -16.000000, -16.000000, 0.000000 )\n\tfloat(3) m_vecOutputMax = ( 16.000000, 16.000000, 45.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMax = 52.000000\n\tfloat m_fSpeedMin = -82.000000\n\tfloat m_fSpeedMax = -12.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 6.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/maiden_holdout_arcane_buff_snow_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flNoDrawTimeToGoToSleep = 12.000000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_SpinUpdate_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomSecondSequence_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotationSpeed_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0,\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tsymbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1\n\tfloat m_flZoomRate1 = 4.000000\n\tbool m_bMaxLuminanceBlendingSequence0 = false\n\tbool m_bMaxLuminanceBlendingSequence1 = true\n\tfloat m_flStartFadeSize = 1.000000\n\tfloat m_flEndFadeSize = 1.400000\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\smoke3\\\\smoke3b.vtex\"\n\tint m_nOrientationType = 2\n\tfloat m_flAnimationRate = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 )\n\tfloat m_fDrag = 0.001000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 3.000000\n\tfloat m_flEndScale = 1.500000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 29, 155, 221, 255 )\n\tint(4) m_ColorMax = ( 117, 175, 241, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 2.000000\n\tfloat m_fLifetimeMax = 2.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 50.000000\n\tfloat m_flRadiusMax = 75.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 10\n\tint m_nAlphaMin = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0\n{\n\tint m_nSequenceMin = 9\n\tint m_nSequenceMax = 10\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.500000\n\tfloat m_fRadiusMax = 1.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.000000 )\n\tint m_nScaleCP = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0\n{\n\tfloat m_flDegreesMin = 14.000000\n\tfloat m_flDegreesMax = 24.000000\n\tbool m_bRandomlyFlipDirection = false\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 30.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 12\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_core_linear.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 25.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 1.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 32\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_SetControlPointsToParticle_0,\n\t\t&C_OP_MovementPlaceOnGround_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_VelocityFromCP_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_core_linear_glow.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_core_linear_light.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t}\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_fDrag = 0.000000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = 1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tint m_nFieldOutput = 7\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 1.000000\n\tfloat m_flStartScale = 1.000000\n\tfloat m_flEndScale = 2.000000\n\tbool m_bEaseInAndOut = false\n\tfloat m_flBias = 0.500000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0\n{\n\tint m_nChildGroupID = 0\n\tint m_nFirstControlPoint = 3\n\tint m_nNumControlPoints = 1\n\tint m_nFirstSourcePoint = 0\n\tbool m_bSetOrientation = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0\n{\n\tfloat m_flOffset = 0.000000\n\tfloat m_flMaxTraceLength = 128.000000\n\tfloat m_flTolerance = 32.000000\n\tfloat m_flTraceOffset = 64.000000\n\tfloat m_flLerpRate = 0.000000\n\tstring m_CollisionGroupName = \"NONE\"\n\tint m_nRefCP1 = -1\n\tint m_nRefCP2 = -1\n\tint m_nLerpCP = -1\n\tbool m_bKill = false\n\tbool m_bIncludeWater = false\n\tbool m_bSetNormal = false\n\tbool m_bScaleOffset = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 0.600000\n\tfloat m_fLifetimeRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 0.000000\n\tfloat(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 0\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 0.000000\n\tfloat m_fSpeedMax = 0.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nFieldOutput = 7\n\tint m_nAlphaMin = 25\n\tint m_nAlphaMax = 50\n\tfloat m_flAlphaRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 30.000000\n\tfloat m_flRadiusMax = 50.000000\n\tfloat m_flRadiusRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMin = 0.000000\n\tfloat m_flDegreesMax = 360.000000\n\tfloat m_flDegrees = 0.000000\n\tint m_nFieldOutput = 4\n\tfloat m_flRotationRandExponent = 1.000000\n\tbool m_bRandomlyFlipDirection = true\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMin = 0\n\tint m_nSequenceMax = 2\n\tbool m_bShuffle = false\n\tbool m_bLinear = false\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tfloat m_flPercent = 0.500000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tuint(4) m_ColorMin = ( 234, 89, 106, 255 )\n\tuint(4) m_ColorMax = ( 162, 9, 9, 255 )\n\tuint(4) m_TintMin = ( 0, 0, 0, 0 )\n\tuint(4) m_TintMax = ( 255, 255, 255, 255 )\n\tfloat m_flTintPerc = 0.000000\n\tfloat m_flUpdateThreshold = 32.000000\n\tint m_nTintCP = 0\n\tint m_nFieldOutput = 6\n\tsymbol m_nTintBlendMode = 0\n\tfloat m_flLightAmplification = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_VelocityFromCP C_INIT_VelocityFromCP_0\n{\n\tint m_nControlPoint = 1\n\tint m_nControlPointCompare = -1\n\tint m_nControlPointLocal = -1\n\tfloat m_flVelocityScale = 1.000000\n\tbool m_bDirectionOnly = false\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 0.000000\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEmitRate = 100.000000\n\tfloat m_flEmissionScale = 0.000000\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tbool m_bScalePerParticle = false\n\tbool m_bInitFromKilledParentParticles = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_core_linear_flare.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 25.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_SpinUpdate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotationSpeed_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_white_v2.vtex\"\n\tint m_nOrientationType = 2\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 0.750000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 3.000000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 0.600000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 50.000000\n\tfloat m_flRadiusMin = 50.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tbool m_bRandomlyFlipDirection = false\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 234, 89, 106, 255 )\n\tint(4) m_ColorMax = ( 255, 159, 159, 255 )\n}\n\nC_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0\n{\n\tfloat m_flDegreesMax = 40.000000\n\tfloat m_flDegreesMin = 40.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 15.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_core_linear_glow.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 25.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_core_linear_flare.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_01.vtex\"\n\tfloat m_flAnimationRate = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.600000\n\tfloat m_fLifetimeMin = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMin = 25\n\tint m_nAlphaMax = 50\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 100.000000\n\tfloat m_flRadiusMax = 125.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 2\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 162, 9, 9, 255 )\n\tint(4) m_ColorMin = ( 234, 89, 106, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 15.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_core_linear_light.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 25.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tfloat m_flStartFalloff = 0.100000\n\tfloat m_flAlphaScale = 5.000000\n\tfloat m_flRadiusScale = 3.000000\n\tstring m_Notes = \"\"\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_01.vtex\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 3.000000\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 0.600000\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tint m_nControlPointNumber = 3\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 125.000000\n\tfloat m_flRadiusMin = 100.000000\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorMin = ( 234, 89, 106, 255 )\n\tint(4) m_ColorMax = ( 162, 9, 9, 255 )\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_core_linear_ring.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 25.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_SpinUpdate_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotationSpeed_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_ring_wave_8.vtex\"\n\tfloat m_flAnimationRate = 0.750000\n\tstring m_Notes = \"\"\n\tint m_nOrientationType = 2\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 157, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.600000\n\tfloat m_fLifetimeMin = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 100.000000\n\tfloat m_flRadiusMax = 100.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bRandomlyFlipDirection = false\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 255, 159, 159, 255 )\n\tint(4) m_ColorMin = ( 251, 133, 147, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMin = 90.000000\n\tfloat m_flDegreesMax = 90.000000\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 10.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_explosion_flash_linear.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_05.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 0.500000\n\tfloat m_flEndScale = 1.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 251, 171, 171, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.180000\n\tfloat m_fLifetimeMax = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fSpeedMax = 48.000000\n\tfloat m_fSpeedMin = 24.000000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 124.000000\n\tfloat m_flRadiusMin = 20.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_explosion_linear.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 162, 162, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_explosion_points_linear.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_explosion_points_b_linear.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_explosion_flash_linear.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 3.000000\n\tfloat m_flStartScale = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.250000\n\tfloat m_fLifetimeMin = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat m_fSpeedMin = 24.000000\n\tfloat m_fSpeedMax = 48.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 130.000000, 0.000000, 32.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 330.000000, 0.000000, 64.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 80.000000\n\tfloat m_flRadiusMax = 90.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_explosion_points_b_linear.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 2.000000\n\tint(4) m_ConstantColor = ( 226, 202, 255, 255 )\n\tint m_nConstantSequenceNumber = 6\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 0\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tfloat m_flLengthFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -800.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 149, 0, 10, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.500000\n\tfloat m_fLifetimeMin = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 0.000000 )\n\tfloat m_fSpeedMax = 1200.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 24.000000\n\tfloat m_flRadiusMin = 8.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 64\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_explosion_points_linear.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 2.000000\n\tint(4) m_ConstantColor = ( 226, 208, 249, 255 )\n\tint m_nConstantSequenceNumber = 3\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderTrails_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_LerpScalar_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_OffsetVectorToVector_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderTrails C_OP_RenderTrails_0\n{\n\tint m_bAdditive = 0\n\tstring m_hTexture = \"materials\\\\particle\\\\sparks\\\\sparks.vtex\"\n\tfloat m_flLengthFadeInTime = 1.000000\n\tbool m_bIgnoreDT = true\n\tfloat m_flMaxLength = 128.000000\n\tstring m_Notes = \"\"\n\tint(4) m_trailTint = ( 255, 255, 255, 255 )\n\tfloat m_flTrailEndAlpha = 0.000000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.250000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpScalar C_OP_LerpScalar_0\n{\n\tfloat m_flOutput = 2.000000\n\tint m_nFieldOutput = 10\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeStartTime = 0.200000\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.200000\n\tfloat m_fLifetimeMax = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 8.000000\n\tfloat m_flRadiusMax = 24.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0\n{\n\tfloat(3) m_vecOutputMax = ( 700.000000, 700.000000, 700.000000 )\n\tfloat(3) m_vecOutputMin = ( -700.000000, -700.000000, -700.000000 )\n\tint m_nFieldOutput = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 32\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tfloat m_fFalloffPower = 0.000000\n\tfloat m_fForceAmount = 700.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_glow_linear.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 25.000000\n\tint(4) m_ConstantColor = ( 255, 255, 255, 55 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomColor_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_glow_01.vtex\"\n\tfloat m_flAnimationRate = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flEndTime_max = 0.600000\n\tfloat m_flEndTime_min = 0.500000\n\tfloat m_flStartTime_max = 0.250000\n\tfloat m_flStartTime_min = 0.150000\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.600000\n\tfloat m_fLifetimeMin = 0.400000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMin = 25\n\tint m_nAlphaMax = 50\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 30.000000\n\tfloat m_flRadiusMax = 50.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 2\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 162, 9, 9, 255 )\n\tint(4) m_ColorMin = ( 234, 89, 106, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 25.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_linear.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = -1.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 1.650000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 1.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 4\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_SetControlPointsToParticle_0,\n\t\t&C_OP_CPOffsetToPercentageBetweenCPs_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_SpinUpdate_0,\n\t\t&C_OP_MovementPlaceOnGround_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomSecondSequence_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_VelocityFromCP_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_explosion_linear.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_trail_linear.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_trail_c_linear.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_glow_linear.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t}\n\t]\n\tbool m_bShouldSort = false\n\tbool m_bShouldBatch = false\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 )\n\tfloat m_fDrag = 0.000000\n\tint m_nMaxConstraintPasses = 3\n\tbool m_bLockULCorner = false\n\tbool m_bLockURCorner = false\n\tbool m_bLockLLCorner = false\n\tbool m_bLockLRCorner = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = 1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 1.000000\n\tfloat m_flStartScale = 0.500000\n\tfloat m_flEndScale = 1.000000\n\tbool m_bEaseInAndOut = false\n\tfloat m_flBias = 0.500000\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0\n{\n\tint m_nChildGroupID = 0\n\tint m_nFirstControlPoint = 3\n\tint m_nNumControlPoints = 1\n\tint m_nFirstSourcePoint = 0\n\tbool m_bSetOrientation = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_CPOffsetToPercentageBetweenCPs C_OP_CPOffsetToPercentageBetweenCPs_0\n{\n\tfloat m_flInputMin = 1.000000\n\tfloat m_flInputMax = 0.000000\n\tfloat m_flInputBias = 0.125000\n\tint m_nStartCP = 0\n\tint m_nEndCP = 1\n\tint m_nOffsetCP = 1\n\tint m_nOuputCP = 4\n\tint m_nInputCP = 3\n\tbool m_bRadialCheck = true\n\tbool m_bScaleOffset = true\n\tfloat(3) m_vecOffset = ( 0.000000, 0.000000, 0.150000 )\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tfloat m_RateMin = 30.000000\n\tfloat m_RateMax = 30.000000\n\tfloat m_flStartTime_min = 0.000000\n\tfloat m_flStartTime_max = 0.000000\n\tfloat m_flEndTime_min = 1.000000\n\tfloat m_flEndTime_max = 1.000000\n\tint m_nField = 12\n\tbool m_bProportionalOp = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0\n{\n\tfloat m_flOffset = 0.000000\n\tfloat m_flMaxTraceLength = 128.000000\n\tfloat m_flTolerance = 32.000000\n\tfloat m_flTraceOffset = 64.000000\n\tfloat m_flLerpRate = 0.000000\n\tstring m_CollisionGroupName = \"NONE\"\n\tint m_nRefCP1 = -1\n\tint m_nRefCP2 = -1\n\tint m_nLerpCP = -1\n\tbool m_bKill = false\n\tbool m_bIncludeWater = false\n\tbool m_bSetNormal = false\n\tbool m_bScaleOffset = false\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_ActivityName = \"\"\n\tstring m_EconSlotName = \"\"\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/heroes/queenofpain/queenofpain_weapon.vmdl\"\n\t\t\tfloat m_flRelativeProbabilityOfSpawn = 1.000000\n\t\t}\n\t]\n\tbool m_bIgnoreNormal = false\n\tbool m_bOrientZ = true\n\tbool m_bScaleAnimationRate = false\n\tbool m_bResetAnimOnStop = false\n\tbool m_bManualAnimFrame = false\n\tint m_nAnimationScaleField = 10\n\tint m_nSkin = 0\n\tint m_nBodyGroupField = 9\n\tint m_nSubModelField = 18\n\tint m_nAnimationField = 13\n\tint m_nManualFrameField = 8\n\tstring m_hOverrideMaterial = \"\"\n\tint m_nSkinCP = -1\n\tint m_nModelCP = -1\n\tfloat m_flAnimationRate = 30.000000\n\tbool m_bAnimated = true\n\tbool m_bForceDrawInterlevedWithSiblings = false\n\tCParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs\n\t{\n\t\tfloat m_flCameraBias = 0.000000\n\t\tfloat m_flInputMin = 0.000000\n\t\tfloat m_flInputMax = 0.000000\n\t\tfloat m_flAlphaScaleMin = 0.000000\n\t\tfloat m_flAlphaScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleMin = 1.000000\n\t\tfloat m_flRadiusScaleMax = 1.000000\n\t\tfloat m_flRadiusScaleFOVBase = 0.000000\n\t\tfloat m_flProxyRadius = 1.000000\n\t\tfloat m_flDistanceInputMin = 0.000000\n\t\tfloat m_flDistanceInputMax = 0.000000\n\t\tfloat m_flDotInputMin = 0.000000\n\t\tfloat m_flDotInputMax = 0.000000\n\t\tfloat m_flNoPixelVisibilityFallback = 1.000000\n\t\tint m_nCPin = -1\n\t}\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMin = 0.000000\n\tfloat m_fRadiusMax = 0.000000\n\tfloat(3) m_vecDistanceBias = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nControlPointNumber = 0\n\tint m_nScaleCP = -1\n\tfloat m_fSpeedMin = 0.000000\n\tfloat m_fSpeedMax = 0.000000\n\tfloat m_fSpeedRandExp = 1.000000\n\tbool m_bLocalCoords = false\n\tbool m_bUseHighestEndCP = false\n\tfloat m_flEndCPGrowthTime = 0.000000\n\tfloat(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 )\n\tfloat(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 )\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.100000\n\tfloat m_fLifetimeMax = 0.100000\n\tfloat m_fLifetimeRandExponent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0\n{\n\tint m_nSequenceMin = 1\n\tint m_nSequenceMax = 1\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tfloat m_flPercent = 1.000000\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = true\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMin = 0.000000\n\tfloat m_flDegreesMax = 0.000000\n\tfloat m_flDegrees = 90.000000\n\tint m_nFieldOutput = 4\n\tfloat m_flRotationRandExponent = 1.000000\n\tbool m_bRandomlyFlipDirection = true\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_VelocityFromCP C_INIT_VelocityFromCP_0\n{\n\tint m_nControlPoint = 1\n\tint m_nControlPointCompare = -1\n\tint m_nControlPointLocal = -1\n\tfloat m_flVelocityScale = 1.000000\n\tbool m_bDirectionOnly = false\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_linear_glow_core.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 1.650000\n\tbool m_bShouldSort = false\n\tfloat m_flMaxRecreationTime = -1.000000\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_SetControlPointsToParticle_0,\n\t\t&C_OP_CPOffsetToPercentageBetweenCPs_0,\n\t\t&C_OP_RampScalarLinear_0,\n\t\t&C_OP_SpinUpdate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomSecondSequence_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_VelocityFromCP_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_explosion_linear.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_trail_linear.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_trail_c_linear.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_glow_linear.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\models\\\\heroes\\\\queenofpain\\\\queenofpain_weapon.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flAnimationRate = 0.750000\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.500000\n}\n\nC_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFirstControlPoint = 3\n\tbool m_bSetOrientation = true\n}\n\nC_OP_CPOffsetToPercentageBetweenCPs C_OP_CPOffsetToPercentageBetweenCPs_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flInputMin = 1.000000\n\tfloat m_flInputMax = 0.000000\n\tint m_nOffsetCP = 1\n\tfloat(3) m_vecOffset = ( 0.000000, 0.000000, 0.150000 )\n\tfloat m_flInputBias = 0.125000\n\tbool m_bScaleOffset = true\n}\n\nC_OP_RampScalarLinear C_OP_RampScalarLinear_0\n{\n\tstring m_Notes = \"\"\n\tint m_nField = 12\n\tfloat m_RateMin = 30.000000\n\tfloat m_RateMax = 30.000000\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fRadiusMax = 85.000000\n\tfloat(3) m_vecDistanceBias = ( 0.050000, 1.000000, 0.000000 )\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.100000\n\tfloat m_fLifetimeMin = 0.100000\n}\n\nC_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMin = 1\n\tint m_nSequenceMax = 1\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bDisableOperator = true\n\tfloat m_flPercent = 1.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegrees = 90.000000\n\tfloat m_flDegreesMax = 0.000000\n}\n\nC_INIT_VelocityFromCP C_INIT_VelocityFromCP_0\n{\n\tint m_nControlPoint = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tint m_nParticlesToEmit = 1\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_linear_parent.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tint m_nInitialParticles = 0\n\tfloat(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 )\n\tint m_nSnapshotControlPoint = 0\n\tstring m_pszSnapshotName = \"\"\n\tstring m_pszTargetLayerID = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_pszCullReplacementName = \"\"\n\tfloat m_flCullRadius = 0.000000\n\tfloat m_flCullFillCost = 1.000000\n\tint m_nCullControlPoint = 0\n\tfloat m_flMaxRecreationTime = 0.000000\n\tstring m_hFallback = \"\"\n\tint m_nFallbackMaxCount = -1\n\tstring m_hLowViolenceDef = \"\"\n\tuint(4) m_ConstantColor = ( 255, 255, 255, 255 )\n\tfloat(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 )\n\tfloat m_flConstantRadius = 5.000000\n\tfloat m_flConstantRotation = 0.000000\n\tfloat m_flConstantRotationSpeed = 0.000000\n\tfloat m_flConstantLifespan = 1.000000\n\tint m_nConstantSequenceNumber = 0\n\tint m_nConstantSequenceNumber1 = 0\n\tint m_nGroupID = 0\n\tfloat m_flMaximumTimeStep = 0.100000\n\tfloat m_flMaximumSimTime = 0.000000\n\tfloat m_flMinimumSimTime = 0.000000\n\tfloat m_flMinimumTimeStep = 0.000000\n\tint m_nMinimumFrames = 0\n\tint m_nMinCPULevel = 0\n\tint m_nMinGPULevel = 0\n\tbool m_bViewModelEffect = false\n\tbool m_bScreenSpaceEffect = false\n\tfloat m_flMaxDrawDistance = 100000.000000\n\tfloat m_flStartFadeDistance = 200000.000000\n\tfloat m_flNoDrawTimeToGoToSleep = 8.000000\n\tint m_nMaxParticles = 1000\n\tint m_nSkipRenderControlPoint = -1\n\tint m_nAllowRenderControlPoint = -1\n\tint m_nAggregationMinAvailableParticles = 0\n\tfloat m_flAggregateRadius = 0.000000\n\tfloat m_flStopSimulationAfterTime = 1000000000.000000\n\tfloat(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 )\n\tstring m_Name = \"\"\n\tCParticleOperatorInstance*[] m_Operators = \n\t[\n\t\t&C_OP_SetPerChildControlPoint_0\n\t]\n\tCParticleOperatorInstance*[] m_Renderers = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Initializers = \n\t[\n\t\t&C_INIT_RingWave_0\n\t]\n\tCParticleOperatorInstance*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperatorInstance*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperatorInstance*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_linear.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_linear.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_linear.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_linear.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_linear.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/frostivus_herofx/queen_shadow_strike_core_linear.vpcf\"\n\t\t\tbool m_bPreventNameBasedLookup = false\n\t\t\tfloat m_flDelay = 0.000000\n\t\t\tbool m_bEndCap = false\n\t\t\tbool m_bDisableChild = false\n\t\t}\n\t]\n\tbool m_bShouldSort = true\n\tbool m_bShouldBatch = false\n}\n\nC_OP_SetPerChildControlPoint C_OP_SetPerChildControlPoint_0\n{\n\tint m_nChildGroupID = 0\n\tint m_nFirstControlPoint = 0\n\tint m_nNumControlPoints = 3\n\tint m_nFirstSourcePoint = 0\n\tbool m_bSetOrientation = false\n\tbool m_bNumBasedOnParticleCount = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tint m_nControlPointNumber = 0\n\tint m_nOverrideCP = -1\n\tint m_nOverrideCP2 = -1\n\tfloat m_flParticlesPerOrbit = 5.000000\n\tfloat m_flInitialRadius = 75.000000\n\tfloat m_flThickness = 0.000000\n\tfloat m_flInitialSpeedMin = 0.000000\n\tfloat m_flInitialSpeedMax = 0.000000\n\tfloat m_flRoll = 0.000000\n\tfloat m_flPitch = 0.000000\n\tfloat m_flYaw = 0.000000\n\tbool m_bEvenDistribution = true\n\tbool m_bXYVelocityOnly = true\n\tbool m_bRunForParentApplyKillList = true\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 5\n\tint m_nMinParticlesToEmit = -1\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flStartTimeMax = -1.000000\n\tfloat m_flInitFromKilledParentParticles = 0.000000\n\tint m_nMaxEmittedPerFrame = -1\n\tint m_nScaleControlPoint = -1\n\tint m_nScaleControlPointField = 0\n\tint m_nSnapshotControlPoint = -1\n\tbool m_bDisableOperator = false\n\tfloat m_flOpStartFadeInTime = 0.000000\n\tfloat m_flOpEndFadeInTime = 0.000000\n\tfloat m_flOpStartFadeOutTime = 0.000000\n\tfloat m_flOpEndFadeOutTime = 0.000000\n\tfloat m_flOpFadeOscillatePeriod = 0.000000\n\tfloat m_flOpTimeOffsetMin = 0.000000\n\tfloat m_flOpTimeOffsetMax = 0.000000\n\tint m_nOpTimeOffsetSeed = 0\n\tint m_nOpStrengthScaleSeed = 0\n\tfloat m_flOpStrengthMinScale = 1.000000\n\tfloat m_flOpStrengthMaxScale = 1.000000\n\tint m_nOpTimeScaleSeed = 0\n\tfloat m_flOpTimeScaleMin = 1.000000\n\tfloat m_flOpTimeScaleMax = 1.000000\n\tint m_nOpEndCapState = -1\n\tint m_nOpScaleCP = -1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_trail_c_linear.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 107, 107, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_SetControlPointPositions_0,\n\t\t&C_OP_DistanceToCP_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InheritVelocity_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RemapScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_generic_2.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 999.999939\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tint m_nOpEndCapState = 0\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flStartTime_min = 0.050000\n\tfloat m_flStartTime_max = 0.050000\n\tfloat m_flEndTime_min = 0.100000\n\tint m_nControlPointNumber = 5\n\tfloat m_flEndTime_max = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -12.000000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointPositions C_OP_SetControlPointPositions_0\n{\n\tint m_nHeadLocation = 3\n\tfloat(3) m_vecCP4Pos = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nCP4 = 6\n\tfloat(3) m_vecCP3Pos = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nCP3 = 6\n\tfloat(3) m_vecCP2Pos = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nCP2 = 6\n\tfloat(3) m_vecCP1Pos = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nCP1 = 5\n\tstring m_Notes = \"\"\n}\n\nC_OP_DistanceToCP C_OP_DistanceToCP_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_flInputMin = 12.000000\n\tfloat m_flInputMax = 48.000000\n\tint m_nFieldOutput = 16\n\tint m_nStartCP = 5\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tfloat m_fl4NoiseScale = 0.900000\n\tint m_nFieldOutput = 0\n\tfloat(3) m_vecOutputMin = ( -2.000000, -2.000000, -2.000000 )\n\tfloat(3) m_vecOutputMax = ( 2.000000, 2.000000, 2.000000 )\n\tbool m_bAdditive = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 129, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.900000\n\tfloat m_fLifetimeMin = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 4.000000\n\tfloat m_flRadiusMin = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tint m_nControlPointNumber = 5\n\tfloat m_fRadiusMin = 20.000000\n\tfloat m_fRadiusMax = 20.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InheritVelocity C_INIT_InheritVelocity_0\n{\n\tfloat m_flVelocityScale = 0.010000\n\tint m_nControlPointNumber = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tfloat m_flStartTime = 0.000000\n\tfloat m_flEndTime = 0.100000\n\tfloat m_flInputMax = 0.100000\n\tbool m_bScaleInitialRange = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 32.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_trail_linear.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 107, 107, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderRopes_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_SetControlPointPositions_0,\n\t\t&C_OP_DistanceToCP_0,\n\t\t&C_OP_VectorNoise_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_InheritVelocity_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RemapScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderRopes C_OP_RenderRopes_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\beam_generic_2.vtex\"\n\tstring m_Notes = \"\"\n\tfloat m_flTextureVWorldSize = 999.999939\n\tint m_nMaxTesselation = 3\n\tint m_nMinTesselation = 3\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.000000\n\tint m_nOpEndCapState = 0\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tfloat m_flEndTime_max = 0.100000\n\tint m_nControlPointNumber = 5\n\tfloat m_flEndTime_min = 0.100000\n\tfloat m_flStartTime_max = 0.050000\n\tfloat m_flStartTime_min = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tfloat m_Rate = -12.000000\n\tfloat m_flEndTime = 99999.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_SetControlPointPositions C_OP_SetControlPointPositions_0\n{\n\tint m_nCP1 = 5\n\tfloat(3) m_vecCP1Pos = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nCP2 = 6\n\tfloat(3) m_vecCP2Pos = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nCP3 = 6\n\tfloat(3) m_vecCP3Pos = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nCP4 = 6\n\tfloat(3) m_vecCP4Pos = ( 0.000000, 0.000000, 0.000000 )\n\tint m_nHeadLocation = 3\n\tstring m_Notes = \"\"\n}\n\nC_OP_DistanceToCP C_OP_DistanceToCP_0\n{\n\tint m_nStartCP = 5\n\tint m_nFieldOutput = 16\n\tfloat m_flInputMax = 48.000000\n\tfloat m_flInputMin = 12.000000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_VectorNoise C_OP_VectorNoise_0\n{\n\tbool m_bAdditive = true\n\tfloat(3) m_vecOutputMax = ( 2.000000, 2.000000, 2.000000 )\n\tfloat(3) m_vecOutputMin = ( -2.000000, -2.000000, -2.000000 )\n\tint m_nFieldOutput = 0\n\tfloat m_fl4NoiseScale = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 129, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.750000\n\tfloat m_fLifetimeMax = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 8.000000\n\tfloat m_flRadiusMax = 8.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tfloat m_fRadiusMax = 10.000000\n\tfloat m_fRadiusMin = 10.000000\n\tint m_nControlPointNumber = 5\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InheritVelocity C_INIT_InheritVelocity_0\n{\n\tint m_nControlPointNumber = 5\n\tfloat m_flVelocityScale = 0.010000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flInputMax = 0.100000\n\tfloat m_flEndTime = 0.100000\n\tfloat m_flStartTime = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 32.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/material_change.vpcf",
    "content": "<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->\n{\n\t_class = \"CParticleSystemDefinition\"\n\tm_bShouldHitboxesFallbackToRenderBounds = false\n\tm_nMaxParticles = 1\n\tm_flConstantRadius = 1.000000\n\tm_ConstantColor =\n\t[\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t255,\n\t]\n\tm_nConstantSequenceNumber1 = 18\n\tm_bShouldSort = false\n\tm_Renderers =\n\t[\n\t\t{\n\t\t\t_class = \"C_OP_RenderModels\"\n\t\t\tm_nManualFrameField = 18\n\t\t\tm_nSubModelField = 19\n\t\t\tm_nBodyGroupField = 19\n\t\t\tm_bManualAnimFrame = true\n\t\t\tm_bOrientZ = true\n\t\t\tm_nSkin = 1\n\t\t\tm_nModelCP = 0\n\t\t\tm_hOverrideMaterial = resource:\"materials/models/blob/pedestal_ice_surface.vmat\"\n\t\t\tm_bSuppressTint = true\n\t\t\tm_ModelList =\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\tm_model = resource:\"models/heroes/storm_spirit/storm_spirit.vmdl\"\n\t\t\t\t},\n\t\t\t]\n\t\t\tm_bAnimated = true\n\t\t\tm_bForceDrawInterlevedWithSiblings = true\n\t\t\tm_nLOD = 1\n\t\t\tm_bIgnoreNormal = true\n\t\t\tm_nAnimationScaleField = 18\n\t\t},\n\t]\n\tm_Operators =\n\t[\n\t\t{\n\t\t\t_class = \"C_OP_BasicMovement\"\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_PositionLock\"\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_Orient2DRelToCP\"\n\t\t\tm_nFieldOutput = 12\n\t\t\tm_flRotOffset = 90.000000\n\t\t\tm_flOpStartFadeOutTime = 0.100000\n\t\t\tm_flOpEndFadeOutTime = 0.100000\n\t\t\tm_bDisableOperator = true\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_RemapCPtoScalar\"\n\t\t\tm_flOutputMax = 10.000000\n\t\t\tm_flInputMax = 10.000000\n\t\t\tm_nCPInput = 2\n\t\t\tm_nField = 1\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_OscillateScalarSimple\"\n\t\t\tm_nField = 3\n\t\t\tm_Rate = 1.000000\n\t\t\tm_Frequency = 255.000000\n\t\t\tm_bDisableOperator = true\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_EndCapTimedDecay\"\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_RampScalarLinearSimple\"\n\t\t\tm_flEndTime = 0.500000\n\t\t\tm_Rate = 30.000000\n\t\t\tm_nField = 18\n\t\t\tm_bDisableOperator = true\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_OscillateScalarSimple\"\n\t\t\tm_Rate = 15.000000\n\t\t\tm_Frequency = 0.500000\n\t\t\tm_nField = 18\n\t\t\tm_flOscMult = 1.000000\n\t\t\tm_flOscAdd = 0.000000\n\t\t\tm_bDisableOperator = true\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_RemapCPOrientationToRotations\"\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_SequenceFromModel\"\n\t\t\tm_nFieldOutput = 13\n\t\t\tm_nFieldOutputAnim = 18\n\t\t\tm_flInputMax = 4000.000000\n\t\t\tm_flOutputMax = 4000.000000\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_RemapScalar\"\n\t\t\tm_nFieldInput = 18\n\t\t\tm_nFieldOutput = 18\n\t\t\tm_flInputMax = 100.000000\n\t\t\tm_flOutputMax = 3000.000000\n\t\t},\n\t]\n\tm_Initializers =\n\t[\n\t\t{\n\t\t\t_class = \"C_INIT_RandomLifeTime\"\n\t\t\tm_fLifetimeMin = 1.000000\n\t\t\tm_fLifetimeMax = 1.000000\n\t\t},\n\t\t{\n\t\t\t_class = \"C_INIT_CreateWithinSphere\"\n\t\t},\n\t\t{\n\t\t\t_class = \"C_INIT_PositionOffset\"\n\t\t\tm_OffsetMin =\n\t\t\t[\n\t\t\t\t2.000000,\n\t\t\t\t0.000000,\n\t\t\t\t0.000000,\n\t\t\t]\n\t\t\tm_OffsetMax =\n\t\t\t[\n\t\t\t\t2.000000,\n\t\t\t\t0.000000,\n\t\t\t\t0.000000,\n\t\t\t]\n\t\t\tm_bLocalCoords = true\n\t\t\tm_bDisableOperator = true\n\t\t},\n\t\t{\n\t\t\t_class = \"C_INIT_RandomAlphaWindowThreshold\"\n\t\t\tm_flMin = 18.000000\n\t\t\tm_flMax = 18.000000\n\t\t\tm_bDisableOperator = true\n\t\t},\n\t\t{\n\t\t\t_class = \"C_INIT_RemapCPtoScalar\"\n\t\t\tm_nCPInput = 2\n\t\t\tm_flInputMax = 1000.000000\n\t\t\tm_nFieldOutput = 13\n\t\t\tm_flOutputMax = 1000.000000\n\t\t},\n\t]\n\tm_Emitters =\n\t[\n\t\t{\n\t\t\t_class = \"C_OP_InstantaneousEmitter\"\n\t\t\tm_nParticlesToEmit = 1\n\t\t},\n\t]\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/channel_field_1.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 110\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 249, 242, 161, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Orient2DRelToCP_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_CreateInEpitrochoid_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_swirl_04b.vtex\"\n\tstring m_Notes = \"\"\n\tint m_nOrientationType = 2\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.500000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeInTime = 0.500000\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tstring m_Notes = \"\"\n\tint(4) m_ColorFade = ( 96, 176, 251, 255 )\n\tfloat m_flFadeStartTime = 0.500000\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 8.000000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flBias = 0.750000\n}\n\nC_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRotOffset = 315.000000\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tstring m_Notes = \"\"\n\tint m_nSequenceMax = 3\n}\n\nC_INIT_CreateInEpitrochoid C_INIT_CreateInEpitrochoid_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bUseCount = true\n\tfloat m_flParticleDensity = 4.000000\n\tfloat m_flOffset = 92.000008\n\tfloat m_flRadius2 = -41.000000\n\tfloat m_flRadius1 = 62.000000\n\tint m_nComponent2 = 0\n\tint m_nComponent1 = 1\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.600000\n\tfloat m_fLifetimeMin = 0.600000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 16.000000\n\tfloat m_flRadiusMin = 16.000000\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 200.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/channel_field_2.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 110\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 90, 196, 236, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_Orient2DRelToCP_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_CreateInEpitrochoid_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_swirl_04b.vtex\"\n\tint m_nOrientationType = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeStartTime = 0.500000\n\tint(4) m_ColorFade = ( 96, 176, 251, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 0.000000\n\tfloat m_flStartScale = 8.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0\n{\n\tfloat m_flRotOffset = 315.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateInEpitrochoid C_INIT_CreateInEpitrochoid_0\n{\n\tint m_nComponent1 = 1\n\tint m_nComponent2 = 0\n\tfloat m_flRadius1 = 62.000000\n\tfloat m_flRadius2 = -41.000000\n\tfloat m_flOffset = 92.000008\n\tfloat m_flParticleDensity = 4.000000\n\tbool m_bUseCount = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.600000\n\tfloat m_fLifetimeMax = 0.600000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 16.000000\n\tfloat m_flRadiusMax = 16.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 200.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/creature_spiked_carapace.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 82, 102, 128, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_CreateOnModel_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/test_particle/creature_spiked_carapace_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tbool m_bMod2X = true\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_modulate_01.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 150.000000 )\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndScale = 1.250000\n\tfloat m_flBias = 0.750000\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flLifeTimeFadeStart = 1.000000\n\tfloat m_flLifeTimeFadeEnd = 1.000000\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flFadeOutTime = 0.750000\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -6.000000\n\tfloat m_flEndTime = 99999.000000\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMin = 1.000000\n\tfloat m_fLifetimeMax = 1.500000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMin = 32.000000\n\tfloat m_flRadiusMax = 48.000000\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n\tint m_nAlphaMax = 80\n\tint m_nAlphaMin = 60\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flHitBoxScale = 0.800000\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmitRate = 50.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/creature_spiked_carapace_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 75\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 230, 241, 255, 255 )\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderModels_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_RemapDirectionToCPToVector_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_RadiusDecay_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateOnModel_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRotation_2\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderModels C_OP_RenderModels_0\n{\n\tstring m_hOverrideMaterial = \"\"\n\tstring m_EconSlotName = \"\"\n\tstring m_Notes = \"\"\n\tstring m_ActivityName = \"\"\n\tbool m_bOrientZ = true\n\tModelReference_t[] m_ModelList = \n\t[\n\t\tModelReference_t\n\t\t{\n\t\t\tstring m_model = \"models/particle/quill.vmdl\"\n\t\t}\n\t]\n\tbool m_bAnimated = true\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flStartScale = 0.000000\n\tfloat m_flBias = 0.900000\n\tfloat m_flEndTime = 0.500000\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -2.000000\n\tint m_nOpEndCapState = 1\n}\n\nC_OP_RemapDirectionToCPToVector C_OP_RemapDirectionToCPToVector_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flOffsetRot = 30.000000\n\tfloat(3) m_vecOffsetAxis = ( 1.000000, 0.000000, 0.000000 )\n\tbool m_bNormalize = true\n\tint m_nFieldOutput = 21\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RadiusDecay C_OP_RadiusDecay_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flMinRadius = 0.010000\n\tint m_nOpEndCapState = 1\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_fLifetimeMax = 0.500000\n\tfloat m_fLifetimeMin = 0.400000\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flRadiusMax = 1.150000\n\tfloat m_flRadiusMin = 0.850000\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tstring m_Notes = \"\"\n\tbool m_bLocalCoords = true\n\tfloat(3) m_vecDirectionBias = ( -0.250000, 0.000000, 0.500000 )\n\tfloat m_flHitBoxScale = 0.850000\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 20\n\tfloat m_flMax = 1.000000\n\tfloat m_flMin = -1.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flDegreesMax = 45.000000\n\tfloat m_flDegreesMin = -45.000000\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_2\n{\n\tstring m_Notes = \"\"\n\tint m_nFieldOutput = 12\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tstring m_Notes = \"\"\n\tfloat m_flEmissionDuration = 0.500000\n\tfloat m_flEmitRate = 250.000000\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/damage_immunity.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 110\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 249, 242, 161, 120 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_PositionLock_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Orient2DRelToCP_0,\n\t\t&C_OP_ColorInterpolate_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_RampScalarLinearSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_CreateInEpitrochoid_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_CreateInEpitrochoid_2,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/test_particle/damage_immunity_b.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 0\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_swirl_04c.vtex\"\n\tint m_nOrientationType = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_PositionLock C_OP_PositionLock_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0\n{\n\tfloat m_flRotOffset = 100.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeStartTime = 0.500000\n\tint(4) m_ColorFade = ( 243, 240, 190, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flBias = 0.750000\n\tfloat m_flEndScale = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 999999.000000\n\tfloat m_Rate = -6.000000\n\tint m_nField = 16\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 3\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateInEpitrochoid C_INIT_CreateInEpitrochoid_0\n{\n\tfloat m_flRadius1 = 62.000000\n\tfloat m_flRadius2 = -41.000000\n\tfloat m_flOffset = 92.000008\n\tfloat m_flParticleDensity = 8.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.500000\n\tfloat m_fLifetimeMax = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 46.000000\n\tfloat m_flRadiusMax = 46.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateInEpitrochoid C_INIT_CreateInEpitrochoid_2\n{\n\tbool m_bOffsetExistingPos = true\n\tfloat m_flOffset = 44.000000\n\tfloat m_flRadius2 = -34.000000\n\tfloat m_flRadius1 = 19.000000\n\tint m_nComponent2 = 2\n\tint m_nComponent1 = -1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 90.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 90.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 120.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/damage_immunity_b.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 512\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 255, 250, 195, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_LockToBone_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_CreateOnModel_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t&C_OP_AttractToControlPoint_0\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tbool m_bMod2X = true\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_modulate_01.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 150.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flBias = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LockToBone C_OP_LockToBone_0\n{\n\tfloat m_flLifeTimeFadeStart = 1.000000\n\tfloat m_flLifeTimeFadeEnd = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tint m_nOpEndCapState = 1\n\tint m_nField = 16\n\tfloat m_Rate = -6.000000\n\tfloat m_flEndTime = 99999.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.400000\n\tfloat m_fLifetimeMax = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 16.000000\n\tfloat m_flRadiusMax = 30.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 30\n\tint m_nAlphaMin = 30\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateOnModel C_INIT_CreateOnModel_0\n{\n\tfloat m_flHitBoxScale = 0.800000\n\tfloat(3) m_vecDirectionBias = ( 0.000000, 0.000000, 1.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmitRate = 150.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_AttractToControlPoint C_OP_AttractToControlPoint_0\n{\n\tfloat m_fForceAmount = -500.000000\n\tfloat m_fFalloffPower = 0.000000\n\tint m_nControlPointNumber = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/leshrac_splitearth_groundflash_lines.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 70\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( 20.000000, 20.000000, 0.000000 )\n\tfloat(3) m_BoundingBoxMax = ( -20.000000, -20.000000, 0.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0,\n\t\t&C_OP_RenderDeferredLight_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_InterpolateRadius_2,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_SpinUpdate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateFromParentParticles_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_PositionPlaceOnGround_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_PositionOffset_2\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/test_particle/leshrac_splitearth_sparkles.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tint m_nOrientationType = 3\n\tbool m_bDisableZBuffering = false\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\particle_flare_001.vtex\"\n\tstring m_Notes = \"\"\n}\n\nC_OP_RenderDeferredLight C_OP_RenderDeferredLight_0\n{\n\tfloat m_flRadiusScale = 2.500000\n\tint(4) m_ColorScale = ( 241, 13, 13, 255 )\n\tstring m_Notes = \"\"\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\particle_flare_001.vtex\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartScale = 0.100000\n\tfloat m_flEndTime = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_2\n{\n\tfloat m_flEndTime = 0.800000\n\tfloat m_flBias = 0.200000\n\tfloat m_flEndScale = 0.300000\n\tfloat m_flStartTime = 0.600000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 100.000000\n\tfloat m_flRadiusMin = 60.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 83, 15, 47, 255 )\n\tint(4) m_ColorMin = ( 166, 20, 20, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.500000\n\tfloat m_fLifetimeMin = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0\n{\n\tbool m_bRandomDistribution = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 50.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0\n{\n\tbool m_bSetNormal = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tfloat m_flOutputMax = 7.000000\n\tfloat m_flOutputMin = 3.000000\n\tint m_nFieldOutput = 9\n\tfloat m_flInputMin = 0.500000\n\tint m_nFieldInput = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tint m_nAlphaMax = 140\n\tint m_nAlphaMin = 30\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_2\n{\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 70\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/leshrac_splitearth_sparkles.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 60\n\tint m_nInitialParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint(4) m_ConstantColor = ( 214, 45, 45, 255 )\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_RampScalarLinearSimple_0,\n\t\t&C_OP_OscillateVector_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_AgeNoise_0,\n\t\t&C_INIT_CreateFromParentParticles_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_InitialVelocityNoise_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_ContinuousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\particle_flares\\\\aircraft_blue2.vtex\"\n\tfloat m_flAnimationRate = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 600.000000 )\n\tfloat m_fDrag = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0\n{\n\tfloat m_flEndTime = 99999.000000\n\tfloat m_Rate = -30.000000\n\tint m_nOpEndCapState = 1\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateVector C_OP_OscillateVector_0\n{\n\tfloat m_flOscMult = 1.000000\n\tfloat m_flStartTime_max = 0.500000\n\tfloat m_flStartTime_min = 0.250000\n\tfloat(3) m_FrequencyMax = ( 4.000000, 4.000000, 4.000000 )\n\tfloat(3) m_RateMax = ( 8.000000, 8.000000, 8.000000 )\n\tfloat(3) m_RateMin = ( -8.000000, -8.000000, -8.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 2.000000\n\tfloat m_fLifetimeMin = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusRandExponent = 0.800000\n\tfloat m_flRadiusMin = 7.000000\n\tfloat m_flRadiusMax = 25.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_AgeNoise C_INIT_AgeNoise_0\n{\n\tfloat m_flAgeMax = 0.200000\n\tfloat m_flAgeMin = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMin = ( -50.000000, -50.000000, -50.000000 )\n\tfloat(3) m_OffsetMax = ( 50.000000, 50.000000, 50.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat(3) m_vecOutputMax = ( 1.000000, 1.000000, 900.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ContinuousEmitter C_OP_ContinuousEmitter_0\n{\n\tfloat m_flEmissionDuration = 0.250000\n\tfloat m_flEmitRate = 203.000000\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/ogre_melee_smash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 32\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_FadeOutSimple_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_PositionOffset_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RemapCPtoScalar_0,\n\t\t&C_INIT_RandomAlpha_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/test_particle/ogre_melee_smash_projected.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tbool m_bRefract = true\n\tfloat m_flRefractAmount = -0.040000\n\tstring m_hTexture = \"materials\\\\particle\\\\warp_ripple4_normal.vtex\"\n\tbool m_bFitCycleToLifetime = true\n\tfloat m_flAnimationRate = 1.500000\n\tint m_nOrientationType = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.050000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tfloat m_flOpStartFadeInTime = 3.000000\n\tfloat m_flOpEndFadeInTime = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 0.750000\n\tfloat m_flBias = 0.850000\n\tfloat m_flStartScale = 0.350000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tfloat m_flFadeOutTime = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.500000\n\tfloat m_fLifetimeMin = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 64.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 64.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMax = 90.000000\n\tfloat m_flDegreesMin = -90.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0\n{\n\tfloat m_flOutputMax = 5000.000000\n\tfloat m_flInputMax = 2500.000000\n\tint m_nCPInput = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/ogre_melee_smash_c.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 220\n\tstring m_pszSnapshotName = \"\"\n\tfloat(3) m_BoundingBoxMin = ( 300.000000, 300.000000, -10.000000 )\n\tfloat(3) m_BoundingBoxMax = ( -300.000000, -300.000000, 10.000000 )\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_RemapSpeed_0,\n\t\t&C_OP_SpinUpdate_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_MaxVelocity_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_InitialVelocityNoise_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_CreationNoise_0,\n\t\t&C_INIT_RingWave_0,\n\t\t&C_INIT_RemapScalar_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tstring m_hTexture = \"materials\\\\particle\\\\impact\\\\fleks.vtex\"\n\tbool m_bFitCycleToLifetime = true\n\tfloat m_flAnimationRate = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.020007\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, -800.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_RemapSpeed C_OP_RemapSpeed_0\n{\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flInputMax = 10.000000\n\tint m_nFieldOutput = 5\n\tbool m_bScaleInitialRange = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_SpinUpdate C_OP_SpinUpdate_0\n{\n\tfloat m_flOpEndFadeOutTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.750000\n\tfloat m_flEndScale = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_MaxVelocity C_OP_MaxVelocity_0\n{\n\tfloat m_flMaxVelocity = 450.000000\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 130, 151, 91, 255 )\n\tint(4) m_ColorMin = ( 153, 127, 79, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 1.000000\n\tfloat m_fLifetimeMin = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 10.000000\n\tfloat m_flRadiusMin = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 63\n\tint m_nSequenceMin = 50\n\tstring m_Notes = \"\"\n}\n\nC_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0\n{\n\tfloat m_flNoiseScale = 2.000000\n\tfloat m_flNoiseScaleLoc = 2.000000\n\tfloat(3) m_vecOutputMin = ( -36.000000, -36.000000, 150.000000 )\n\tfloat(3) m_vecOutputMax = ( 36.000000, 36.000000, 600.000000 )\n\tbool m_bLocalSpace = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreationNoise C_INIT_CreationNoise_0\n{\n\tfloat m_flNoiseScale = 3.000000\n\tfloat m_flNoiseScaleLoc = 1.000000\n\tint m_nFieldOutput = 5\n\tfloat m_flOutputMin = -15.000000\n\tfloat m_flOutputMax = 15.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RingWave C_INIT_RingWave_0\n{\n\tfloat m_flThickness = 0.500000\n\tint m_nOverrideCP = 1\n\tfloat m_flInitialSpeedMax = 1.500000\n\tfloat m_flInitialSpeedMin = 0.250000\n\tfloat m_flInitialRadius = 0.750000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flInputMax = 0.250000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 220\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/ogre_melee_smash_flash.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 16\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint m_nConstantSequenceNumber = 1\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_InterpolateRadius_2,\n\t\t&C_OP_LerpScalar_0,\n\t\t&C_OP_OscillateScalar_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinBox_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\lens_flare\\\\lens_flare.vtex\"\n\tfloat m_flAnimationRate = 4.000000\n\tint m_nOrientationType = 2\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flStartScale = 0.100000\n\tfloat m_flStartTime = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_2\n{\n\tfloat m_flBias = 0.850000\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flEndTime = 0.850000\n\tfloat m_flStartTime = 0.100000\n\tfloat m_flStartScale = 0.200000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpScalar C_OP_LerpScalar_0\n{\n\tfloat m_flOutput = 1.570796\n\tint m_nFieldOutput = 12\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_0\n{\n\tint m_nField = 4\n\tfloat m_RateMin = -11.000000\n\tfloat m_RateMax = 11.000000\n\tfloat m_FrequencyMin = 0.125000\n\tfloat m_FrequencyMax = 0.500000\n\tfloat m_flOscAdd = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 )\n\tfloat m_flOpStartFadeInTime = 0.100000\n\tfloat m_flOpEndFadeInTime = 0.150000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeEndTime = 0.000000\n\tfloat m_flFadeStartTime = 1.000000\n\tint(4) m_ColorFade = ( 252, 255, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tbool m_bRunForParentApplyKillList = false\n\tint m_nSequenceMax = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tfloat m_flOutputMax = 5.000000\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMin = 5.000000\n\tint m_nFieldInput = 9\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 90.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMax = ( 246, 77, 252, 255 )\n\tint(4) m_ColorMin = ( 148, 153, 255, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 0.200000\n\tfloat m_fLifetimeMin = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinBox C_INIT_CreateWithinBox_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMax = 105.000000\n\tfloat m_flRadiusMin = 45.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 15\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/ogre_melee_smash_projected.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 1.500000\n\tint(4) m_ConstantColor = ( 0, 0, 0, 255 )\n\tint m_nConstantSequenceNumber1 = 1\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderProjected_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_RampScalarSpline_0,\n\t\t&C_OP_RampScalarSpline_2,\n\t\t&C_OP_Decay_2,\n\t\t&C_OP_FadeOut_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RemapCPtoScalar_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_DistanceToCPInit_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/test_particle/ogre_melee_smash_scorch.vpcf\"\n\t\t},\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/test_particle/ogre_melee_smash_pulse.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderProjected C_OP_RenderProjected_0\n{\n\tstring m_Notes = \"\"\n\tstring m_hProjectedMaterial = \"materials\\\\particle\\\\projected_cracks.vmat\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tbool m_bDisableOperator = true\n\tfloat m_fDrag = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSpline C_OP_RampScalarSpline_0\n{\n\tfloat m_flStartTime_max = 0.700000\n\tfloat m_flStartTime_min = 0.600000\n\tint m_nField = 13\n\tfloat m_RateMin = 2.000000\n\tfloat m_RateMax = 3.000000\n\tfloat m_flEndTime_min = 0.900000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSpline C_OP_RampScalarSpline_2\n{\n\tbool m_bEaseOut = true\n\tfloat m_RateMax = -1.800000\n\tfloat m_RateMin = -1.000000\n\tint m_nField = 13\n\tfloat m_flEndTime_min = 0.095000\n\tfloat m_flEndTime_max = 0.220000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_2\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOut C_OP_FadeOut_0\n{\n\tbool m_bEaseInAndOut = false\n\tbool m_bProportional = false\n\tfloat m_flFadeOutTimeMax = 1.000000\n\tfloat m_flFadeOutTimeMin = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tfloat m_flDegreesMax = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tint m_nFieldOutput = 13\n\tfloat m_flMax = 1.310000\n\tfloat m_flMin = 1.310000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMax = 4.500000\n\tfloat m_fLifetimeMin = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0\n{\n\tfloat m_flOutputMax = 900.000000\n\tfloat m_flOutputMin = 100.000000\n\tfloat m_flInputMax = 900.000000\n\tfloat m_flInputMin = 100.000000\n\tint m_nCPInput = 1\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_DistanceToCPInit C_INIT_DistanceToCPInit_0\n{\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flInputMax = 450.000000\n\tfloat m_flInputMin = 1.000000\n\tbool m_bScaleInitialRange = true\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 )\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 3\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/ogre_melee_smash_pulse.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 64\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tint m_nConstantSequenceNumber = 1\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderSprites_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_FadeOutSimple_0,\n\t\t&C_OP_FadeInSimple_0,\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_InterpolateRadius_0,\n\t\t&C_OP_InterpolateRadius_2,\n\t\t&C_OP_LerpScalar_0,\n\t\t&C_OP_OscillateScalar_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomSequence_0,\n\t\t&C_INIT_RemapScalar_0,\n\t\t&C_INIT_RandomYawFlip_0,\n\t\t&C_INIT_RandomYaw_0,\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomColor_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_CreateWithinBox_0,\n\t\t&C_INIT_RandomRadius_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\tParticleChildrenInfo_t\n\t\t{\n\t\t\tstring m_ChildRef = \"particles/test_particle/ogre_melee_smash_flash.vpcf\"\n\t\t}\n\t]\n}\n\nC_OP_RenderSprites C_OP_RenderSprites_0\n{\n\tint m_bAdditive = 1\n\tbool m_bDisableZBuffering = true\n\tstring m_hTexture = \"materials\\\\particle\\\\lens_flare\\\\lens_flare.vtex\"\n\tfloat m_flAnimationRate = 4.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeOutSimple C_OP_FadeOutSimple_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeInSimple C_OP_FadeInSimple_0\n{\n\tfloat m_flFadeInTime = 1.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_0\n{\n\tfloat m_flStartTime = 0.850000\n\tfloat m_flStartScale = 0.100000\n\tfloat m_flEndScale = 2.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InterpolateRadius C_OP_InterpolateRadius_2\n{\n\tfloat m_flStartScale = 0.200000\n\tfloat m_flStartTime = 0.100000\n\tfloat m_flEndTime = 0.850000\n\tfloat m_flEndScale = 2.000000\n\tfloat m_flBias = 0.850000\n\tstring m_Notes = \"\"\n}\n\nC_OP_LerpScalar C_OP_LerpScalar_0\n{\n\tint m_nFieldOutput = 12\n\tfloat m_flOutput = 1.570796\n\tstring m_Notes = \"\"\n}\n\nC_OP_OscillateScalar C_OP_OscillateScalar_0\n{\n\tfloat m_flOscAdd = 0.100000\n\tfloat m_FrequencyMax = 0.500000\n\tfloat m_FrequencyMin = 0.125000\n\tfloat m_RateMax = 11.000000\n\tfloat m_RateMin = -11.000000\n\tint m_nField = 4\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_flOpEndFadeInTime = 0.150000\n\tfloat m_flOpStartFadeInTime = 0.100000\n\tfloat(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tint(4) m_ColorFade = ( 252, 255, 0, 255 )\n\tfloat m_flFadeStartTime = 1.000000\n\tfloat m_flFadeEndTime = 0.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomSequence C_INIT_RandomSequence_0\n{\n\tint m_nSequenceMax = 1\n\tbool m_bRunForParentApplyKillList = false\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapScalar C_INIT_RemapScalar_0\n{\n\tint m_nFieldInput = 9\n\tfloat m_flOutputMin = 0.500000\n\tbool m_bScaleInitialRange = true\n\tfloat m_flOutputMax = 3.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYawFlip C_INIT_RandomYawFlip_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomYaw C_INIT_RandomYaw_0\n{\n\tfloat m_flDegreesMax = 90.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomColor C_INIT_RandomColor_0\n{\n\tint(4) m_ColorMin = ( 148, 153, 255, 255 )\n\tint(4) m_ColorMax = ( 246, 77, 252, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 0.100000\n\tfloat m_fLifetimeMax = 0.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinBox C_INIT_CreateWithinBox_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tfloat m_flRadiusMin = 45.000000\n\tfloat m_flRadiusMax = 105.000000\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 50\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_particle/ogre_melee_smash_scorch.vpcf",
    "content": "<!-- schema text {7e125a45-3d83-4043-b292-9e24f8ef27b4} generic {198980d8-3a93-4919-b4c6-dd1fb07a3a4b} -->\nCParticleSystemDefinition CParticleSystemDefinition_0\n{\n\tbool m_bPreventNameBasedLookup = false\n\tint m_nMaxParticles = 4\n\tstring m_pszSnapshotName = \"\"\n\tstring m_hLowViolenceDef = \"\"\n\tstring m_hReferenceReplacement = \"\"\n\tstring m_hFallback = \"\"\n\tfloat m_flConstantRadius = 1.500000\n\tbool m_bShouldSort = false\n\tCParticleOperator*[] m_Renderers = \n\t[\n\t\t&C_OP_RenderProjected_0\n\t]\n\tCParticleOperator*[] m_Operators = \n\t[\n\t\t&C_OP_Decay_0,\n\t\t&C_OP_BasicMovement_0,\n\t\t&C_OP_RampScalarSpline_0,\n\t\t&C_OP_RampScalarSpline_2,\n\t\t&C_OP_FadeAndKill_0,\n\t\t&C_OP_ColorInterpolate_0\n\t]\n\tCParticleOperator*[] m_Initializers = \n\t[\n\t\t&C_INIT_RandomRotation_0,\n\t\t&C_INIT_RandomScalar_0,\n\t\t&C_INIT_RandomLifeTime_0,\n\t\t&C_INIT_RandomAlpha_0,\n\t\t&C_INIT_RemapCPtoScalar_0,\n\t\t&C_INIT_RandomRadius_0,\n\t\t&C_INIT_DistanceToCPInit_0,\n\t\t&C_INIT_CreateWithinSphere_0,\n\t\t&C_INIT_PositionOffset_0\n\t]\n\tCParticleOperator*[] m_Emitters = \n\t[\n\t\t&C_OP_InstantaneousEmitter_0\n\t]\n\tCParticleOperator*[] m_ForceGenerators = \n\t[\n\t\t\n\t]\n\tCParticleOperator*[] m_Constraints = \n\t[\n\t\t\n\t]\n\tParticleChildrenInfo_t[] m_Children = \n\t[\n\t\t\n\t]\n}\n\nC_OP_RenderProjected C_OP_RenderProjected_0\n{\n\tbool m_bProjectWater = false\n\tstring m_Notes = \"\"\n\tstring m_hProjectedMaterial = \"materials\\\\particle\\\\frost_projected_mod.vmat\"\n}\n\nC_OP_Decay C_OP_Decay_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_OP_BasicMovement C_OP_BasicMovement_0\n{\n\tfloat m_fDrag = 0.100000\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSpline C_OP_RampScalarSpline_0\n{\n\tfloat m_flEndTime_min = 0.900000\n\tfloat m_RateMax = 12.000000\n\tfloat m_RateMin = 8.000000\n\tint m_nField = 13\n\tfloat m_flStartTime_min = 0.600000\n\tfloat m_flStartTime_max = 0.700000\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_RampScalarSpline C_OP_RampScalarSpline_2\n{\n\tfloat m_flEndTime_max = 0.220000\n\tfloat m_flEndTime_min = 0.095000\n\tint m_nField = 13\n\tfloat m_RateMin = -0.350000\n\tfloat m_RateMax = -0.100000\n\tbool m_bEaseOut = true\n\tbool m_bDisableOperator = true\n\tstring m_Notes = \"\"\n}\n\nC_OP_FadeAndKill C_OP_FadeAndKill_0\n{\n\tfloat m_flStartFadeOutTime = 0.800000\n\tfloat m_flEndFadeInTime = 0.800000\n\tstring m_Notes = \"\"\n}\n\nC_OP_ColorInterpolate C_OP_ColorInterpolate_0\n{\n\tfloat m_flFadeEndTime = 0.250000\n\tint(4) m_ColorFade = ( 0, 0, 0, 255 )\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRotation C_INIT_RandomRotation_0\n{\n\tbool m_bRandomlyFlipDirection = false\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomScalar C_INIT_RandomScalar_0\n{\n\tfloat m_flMin = 1.300000\n\tfloat m_flMax = 1.310000\n\tint m_nFieldOutput = 13\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomLifeTime C_INIT_RandomLifeTime_0\n{\n\tfloat m_fLifetimeMin = 4.500000\n\tfloat m_fLifetimeMax = 5.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomAlpha C_INIT_RandomAlpha_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0\n{\n\tint m_nCPInput = 1\n\tfloat m_flInputMin = 100.000000\n\tfloat m_flInputMax = 900.000000\n\tfloat m_flOutputMin = 100.000000\n\tfloat m_flOutputMax = 900.000000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_RandomRadius C_INIT_RandomRadius_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_DistanceToCPInit C_INIT_DistanceToCPInit_0\n{\n\tbool m_bScaleInitialRange = true\n\tfloat m_flInputMin = 1.000000\n\tfloat m_flInputMax = 450.000000\n\tfloat m_flOutputMin = 1.000000\n\tfloat m_flOutputMax = 1.500000\n\tstring m_Notes = \"\"\n}\n\nC_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0\n{\n\tstring m_Notes = \"\"\n}\n\nC_INIT_PositionOffset C_INIT_PositionOffset_0\n{\n\tfloat(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 )\n\tfloat(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 )\n\tstring m_Notes = \"\"\n}\n\nC_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0\n{\n\tint m_nParticlesToEmit = 1\n\tstring m_Notes = \"\"\n}"
  },
  {
    "path": "content/dota_addons/barebones/particles/test_shot.vpcf",
    "content": "<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->\n{\n\t_class = \"CParticleSystemDefinition\"\n\tm_bShouldHitboxesFallbackToRenderBounds = false\n\tm_nMaxParticles = 16\n\tm_flConstantRadius = 25.000000\n\tm_bShouldSort = false\n\tm_Renderers =\n\t[\n\t\t{\n\t\t\t_class = \"C_OP_RenderSprites\"\n\t\t\tm_nOrientationType = 2\n\t\t},\n\t]\n\tm_Operators =\n\t[\n\t\t{\n\t\t\t_class = \"C_OP_BasicMovement\"\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_SetControlPointsToParticle\"\n\t\t\tm_nFirstControlPoint = 3\n\t\t\tm_bSetOrientation = true\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_MovementPlaceOnGround\"\n\t\t\tm_nLerpCP = 3\n\t\t\tm_flTolerance = 96.000000\n\t\t\tm_flOffset = 120.000000\n\t\t\tm_bIncludeWater = true\n\t\t\tm_flMaxTraceLength = 1024.000000\n\t\t\tm_flTraceOffset = 256.000000\n\t\t\tm_CollisionGroupName = \"DEBRIS\"\n\t\t\tm_nRefCP1 = 3\n\t\t\tm_bDisableOperator = true\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_LagCompensation\"\n\t\t\tm_nLatencyCP = 10\n\t\t\tm_nDesiredVelocityCP = 1\n\t\t\tm_bDisableOperator = true\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_Decay\"\n\t\t},\n\t\t{\n\t\t\t_class = \"C_OP_RemapCPtoVelocity\"\n\t\t\tm_nCPInput = 1\n\t\t},\n\t]\n\tm_Initializers =\n\t[\n\t\t{\n\t\t\t_class = \"C_INIT_CreateWithinSphere\"\n\t\t},\n\t\t{\n\t\t\t_class = \"C_INIT_RandomLifeTime\"\n\t\t\tm_fLifetimeMax = 3.000000\n\t\t\tm_fLifetimeMin = 3.000000\n\t\t},\n\t\t{\n\t\t\t_class = \"C_INIT_NormalAlignToCP\"\n\t\t},\n\t\t{\n\t\t\t_class = \"C_INIT_VelocityFromCP\"\n\t\t\tm_nControlPoint = 1\n\t\t},\n\t\t{\n\t\t\t_class = \"C_INIT_PositionOffset\"\n\t\t\tm_OffsetMin =\n\t\t\t[\n\t\t\t\t0.000000,\n\t\t\t\t0.000000,\n\t\t\t\t80.000000,\n\t\t\t]\n\t\t\tm_OffsetMax =\n\t\t\t[\n\t\t\t\t0.000000,\n\t\t\t\t0.000000,\n\t\t\t\t80.000000,\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t_class = \"C_INIT_RemapCPtoVector\"\n\t\t\tm_nCPInput = 4\n\t\t\tm_nFieldOutput = 6\n\t\t\tm_vInputMax =\n\t\t\t[\n\t\t\t\t255.000000,\n\t\t\t\t255.000000,\n\t\t\t\t255.000000,\n\t\t\t]\n\t\t\tm_vOutputMax =\n\t\t\t[\n\t\t\t\t1.000000,\n\t\t\t\t1.000000,\n\t\t\t\t1.000000,\n\t\t\t]\n\t\t},\n\t]\n\tm_Emitters =\n\t[\n\t\t{\n\t\t\t_class = \"C_OP_InstantaneousEmitter\"\n\t\t\tm_nParticlesToEmit = 1\n\t\t},\n\t]\n}"
  },
  {
    "path": "content/dota_addons/barebones/soundevents/game_sounds_custom.vsndevts",
    "content": "\"Creature.FireBreath.Cast\"\n{\n\t\"operator_stacks\"\n\t{\n\t\t\"update_stack\"\n\t\t{\n\t\t\t\"reference_operator\"\n\t\t\t{\n\t\t\t\t\"operator\"\t\t\"sos_reference_stack\"\n\t\t\t\t\"reference_stack\"\t\t\"dota_update_default\"\n\t\t\t\t\"operator_variables\"\n\t\t\t\t{\n\t\t\t\t\t\"vsnd_files\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"value0\"\t\t\"sounds/mini_rosh_firebreath.vsnd\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\"volume_min\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"1.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"volume_max\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"1.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"pitch_min\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"0.950000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"pitch_max\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"1.050000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"chan_type\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"6\"\n\t\t\t\t\t}\n\t\t\t\t\t\"memory_type\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"0\"\n\t\t\t\t\t}\n\t\t\t\t\t\"soundlevel_min\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"90.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"soundlevel_max\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"90.000000\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\"Reflex.Midnight_Pulse\"\n{\n\t\"operator_stacks\"\n\t{\n\t\t\"update_stack\"\n\t\t{\n\t\t\t\"reference_operator\"\n\t\t\t{\n\t\t\t\t\"operator\"\t\t\"sos_reference_stack\"\n\t\t\t\t\"reference_stack\"\t\t\"dota_update_default\"\n\t\t\t\t\"operator_variables\"\n\t\t\t\t{\n\t\t\t\t\t\"vsnd_files\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"value0\"\t\t\"sounds/weapons/hero/enigma/midnight_pulse.vsnd\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\"volume_min\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"1.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"volume_max\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"1.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"pitch_min\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"1.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"pitch_max\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"1.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"chan_type\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"6\"\n\t\t\t\t\t}\n\t\t\t\t\t\"memory_type\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"0\"\n\t\t\t\t\t}\n\t\t\t\t\t\"soundlevel_min\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"81.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"soundlevel_max\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"81.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"mixgroup\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"Weapons\"\n\t\t\t\t\t}\n\t\t\t\t\t\"spread_radius\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"600.000000\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n\"Start\"\n{\n\t\"operator_stacks\"\n\t{\n\t\t\"update_stack\"\n\t\t{\n\t\t\t\"update_operator\"\n\t\t\t{\n\t\t\t\t\"operator\"\t\t\"sos_reference_stack\"\n\t\t\t\t\"reference_stack\"\t\t\"src1_3d\"\n\t\t\t\t\"operator_variables\"\n\t\t\t\t{\n\t\t\t\t\t\"vsnd_files\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"value0\"\t\t\"sounds/start.vsnd\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\"volume_min\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"1.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"volume_max\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"1.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"pitch_min\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"0.950000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"pitch_max\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"1.050000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"chan_type\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"6\"\n\t\t\t\t\t}\n\t\t\t\t\t\"memory_type\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"0\"\n\t\t\t\t\t}\n\t\t\t\t\t\"soundlevel_min\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"90.000000\"\n\t\t\t\t\t}\n\t\t\t\t\t\"soundlevel_max\"\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\"\t\t\"90.000000\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "game/dota_addons/barebones/addoninfo.txt",
    "content": "\"AddonInfo\"\n{\n  \"TeamCount\" \"10\"\n  \"maps\"      \"template_map playground\"\n  \"IsPlayable\"  \"1\"\n  \"template_map\"\n  {\n          \"MaxPlayers\"                    \"10\"\n  }\n  \"playground\"\n  {\n          \"MaxPlayers\"                    \"10\"\n  }\n//  \"desert_duo\"\n//  {\n//          \"MaxPlayers\"                    \"10\"\n//  }\n//  \"forest_solo\"\n//  {\n//          \"MaxPlayers\"                    \"10\"\n//  }\n}\n"
  },
  {
    "path": "game/dota_addons/barebones/network_measurement.txt",
    "content": "\"measurement\"\n{\n\t\"version\"\t\t\"1\"\n\t\"timestamp\"\t\t\"1443744715\"\n\t\"upload\"\t\t\"0x000000000013A19C\"\n}\n"
  },
  {
    "path": "game/dota_addons/barebones/panorama/localization/addon_english.txt",
    "content": "\"addon\"\n{\n\t\"Unassigned\"      \t\t\t\t\t\t\t\t\"Unassigned Team\"\n\t\"Spectator\"       \t\t\t\t\t\t\t\t\"Spectator Team\"\n\t\"Neutrals\"        \t\t\t\t\t\t\t\t\"Neutral Team\"\n\t\"NoTeam\"          \t\t\t\t\t\t\t\t\"No Team\"\n\n\t\"DOTA_GoodGuys\"   \t\t\t\t\t\t\t\t\"Teal Tiger\"\n\t\"DOTA_BadGuys\"    \t\t\t\t\t\t\t\t\"Yellow Monkey\"\n\t\"DOTA_Custom1\"    \t\t\t\t\t\t\t\t\"Pink Dragon\"\n\t\"DOTA_Custom2\"    \t\t\t\t\t\t\t\t\"Orange Dog\"\n\t\"DOTA_Custom3\"    \t\t\t\t\t\t\t\t\"Blue Rooster\"\n\t\"DOTA_Custom4\"    \t\t\t\t\t\t\t\t\"Green Ram\"\n\t\"DOTA_Custom5\"    \t\t\t\t\t\t\t\t\"Brown Rat\"\n\t\"DOTA_Custom6\"    \t\t\t\t\t\t\t\t\"Cyan Boar\"\n\t\"DOTA_Custom7\"    \t\t\t\t\t\t\t\t\"Olive Snake\"\n\t\"DOTA_Custom8\"    \t\t\t\t\t\t\t\t\"Purple Horse\"\n\t\n\t\"addonname\"\t\t\t\t\t\t\t\t\t\t\"Barebones\"\n}"
  },
  {
    "path": "game/dota_addons/barebones/resource/flash3/custom_ui.txt",
    "content": "\"CustomUI\"\n{\n\t// swf files should be published into the same folder as this file\n\n\t// Add a numbered block for each swf file to load when your addon starts\n\n\n\t//\"1\"\n\t//{\n\t//\t\"File\"\t\t\"Example\"\n\t//\t\"Depth\"\t\t\"50\"\n\t//}\n}\n\n// =============================================\n// Depths of base Dota UI elements\n// =============================================\n// hud_chat: 8,\n\n// error_msg: 10,\n\t\n// voicechat: 11,\n// shop: 12,\t\n// tutorial: 13,\n// herodisplay: 14,\n// actionpanel: 15,\n// inventory: 16,\n// channelbar: 17,\n\n// gameend: 19,\n// chat_wheel: 20,\n// survey: 21,\t\n// quests: 22,\n// questlog: 23,\n\n// ti_onstage_side: 30,\n\n// last_hit_challenge: 35,\n// waitingforplayers: 36,\n// highlight_reel: 37,\n// stats_dropdown: 38,\n// halloween: 39,\t\n// killcam: 40,\t\t// and inspect\n// scoreboard: 41,\n// quickstats: 42,\n// shared_units: 43,\n// shared_content: 44,\n\n// holdout: 50,\n\n// spectator_items: 145,\n// spectator_graph: 146,\n// spectator_harvest: 147,\n// spectator_player: 148,\n// spectator_fantasy: 149,\n\n// heroselection: 250,\n// spectate_heroselection: 251,\n// shared_heroselectorandloadout : 252,\n\n// broadcaster: 364,\n\n// spectate: 365,\n// coach: 366,\n\n// combat_log: 367,\n\n// guide_panel: 368,\n\n// loadgame: 380,\n\n// report_dialogue : 381,\n// popups : 382,\n// matchmaking_ready : 383,\n\n// ti_onstage_pods: 500,\n\n// overlay: 1000\n// ============================================="
  },
  {
    "path": "game/dota_addons/barebones/resource/overviews/dota_pvp.txt",
    "content": "dota_pvp\n{\n\tmaterial materials/overviews/dota_pvp.vmat\n\tpos_x -7072\n\tpos_y 7898\n\tscale 14.531\n}\n\n"
  },
  {
    "path": "game/dota_addons/barebones/resource/overviews/playground.txt",
    "content": "playground\n{\n\tmaterial materials/overviews/playground.vmat\n\tpos_x -2048\n\tpos_y 2048\n\tscale 4.000\n}\n\n"
  },
  {
    "path": "game/dota_addons/barebones/resource/overviews/template_map.txt",
    "content": "template_map\n{\n\tmaterial materials/overviews/template_map.vmat\n\tpos_x -8192\n\tpos_y 8192\n\tscale 16.000\n}\n\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/addon_hud_textures.txt",
    "content": "\"\"\n{\n  \"TextureData\"\n  {\n//    \"minimap_treasure_chest\"\n//    {\n//      \"file\"    \"materials/vgui/hud/minimap_treasure_chest.vmat\"\n//      \"x\"   \"0\"\n//      \"y\"   \"0\"\n//      \"width\"   \"64\"\n//      \"height\"    \"64\"\n//    }\n  }\n}\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/attachments.txt",
    "content": "\"Attachments\"\n{\n\t\"models/heroes/juggernaut/juggernaut.vmdl\"\n\t{\n\t\t\"attach_hitloc\"\n\t\t{\n\t\t\t\"models/items/furion/hat_holiday_1.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"1\"\n\t\t\t\t\"pitch\"\t\t\"20\"\n\t\t\t\t\"roll\"\t\t\"105\"\n\t\t\t\t\"ZPos\"\t\t\"-159\"\n\t\t\t\t\"YPos\"\t\t\"-10\"\n\t\t\t\t\"yaw\"\t\t\"-35\"\n\t\t\t\t\"XPos\"\t\t\"19\"\n\t\t\t}\n\t\t}\n\t}\n\t\"models/heroes/mirana/mirana.vmdl\"\n\t{\n\t\t\"attach_hitloc\"\n\t\t{\n\t\t\t\"models/items/furion/hat_holiday_1.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"0.89999997615814\"\n\t\t\t\t\"pitch\"\t\t\"-105\"\n\t\t\t\t\"roll\"\t\t\"-35\"\n\t\t\t\t\"ZPos\"\t\t\"-146\"\n\t\t\t\t\"YPos\"\t\t\"-6\"\n\t\t\t\t\"yaw\"\t\t\"0\"\n\t\t\t\t\"XPos\"\t\t\"14\"\n\t\t\t}\n\t\t}\n\t}\n\t\"models/heroes/antimage/antimage.vmdl\"\n\t{\n\t\t\"attach_hitloc\"\n\t\t{\n\t\t\t\"models/props_gameplay/red_box.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"1.1000000238419\"\n\t\t\t\t\"pitch\"\t\t\"-70\"\n\t\t\t\t\"roll\"\t\t\"0\"\n\t\t\t\t\"yaw\"\t\t\"-135\"\n\t\t\t\t\"YPos\"\t\t\"-17\"\n\t\t\t\t\"ZPos\"\t\t\"0\"\n\t\t\t\t\"XPos\"\t\t\"-13\"\n\t\t\t}\n\t\t\t\"models/particle/snowball.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"0.30000001192093\"\n\t\t\t\t\"pitch\"\t\t\"-113\"\n\t\t\t\t\"roll\"\t\t\"131\"\n\t\t\t\t\"yaw\"\t\t\"45\"\n\t\t\t\t\"YPos\"\t\t\"-27\"\n\t\t\t\t\"ZPos\"\t\t\"112\"\n\t\t\t\t\"XPos\"\t\t\"-65\"\n\t\t\t}\n\t\t}\n\t\t\"attach_h2\"\n\t\t{\n\t\t\t\"models/particle/snowball.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"0.30000001192093\"\n\t\t\t\t\"pitch\"\t\t\"105\"\n\t\t\t\t\"roll\"\t\t\"-90\"\n\t\t\t\t\"yaw\"\t\t\"-90\"\n\t\t\t\t\"YPos\"\t\t\"-50\"\n\t\t\t\t\"ZPos\"\t\t\"-19\"\n\t\t\t\t\"XPos\"\t\t\"-80\"\n\t\t\t}\n\t\t}\n\t\t\"attach_h1\"\n\t\t{\n\t\t\t\"models/particle/snowball.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"0.30000001192093\"\n\t\t\t\t\"pitch\"\t\t\"-113\"\n\t\t\t\t\"roll\"\t\t\"0\"\n\t\t\t\t\"yaw\"\t\t\"0\"\n\t\t\t\t\"YPos\"\t\t\"97\"\n\t\t\t\t\"ZPos\"\t\t\"-19\"\n\t\t\t\t\"XPos\"\t\t\"60\"\n\t\t\t}\n\t\t}\n\t}\n\t\"models/heroes/dragon_knight/dragon_knight.vmdl\"\n\t{\n\t\t\"attach_attack1\"\n\t\t{\n\t\t\t\"models/items/faceless_void/battlefury/battlefury.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"1.7999999523163\"\n\t\t\t\t\"pitch\"\t\t\"180\"\n\t\t\t\t\"roll\"\t\t\"10\"\n\t\t\t\t\"yaw\"\t\t\"190\"\n\t\t\t\t\"YPos\"\t\t\"120\"\n\t\t\t\t\"ZPos\"\t\t\"-90\"\n\t\t\t\t\"XPos\"\t\t\"0\"\n\t\t\t}\n\t\t}\n\t}\n\t\"models/heroes/axe/axe.vmdl\"\n\t{\n\t\t\"attach_weapon\"\n\t\t{\n\t\t\t\"models/items/wraith_king/winterblight_weapon/winterblight_weapon.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"2.2999999523163\"\n\t\t\t\t\"YPos\"\t\t\"0\"\n\t\t\t\t\"pitch\"\t\t\"-140\"\n\t\t\t\t\"yaw\"\t\t\"180\"\n\t\t\t\t\"roll\"\t\t\"30\"\n\t\t\t\t\"ZPos\"\t\t\"0\"\n\t\t\t\t\"XPos\"\t\t\"70\"\n\t\t\t}\n\t\t\t\"models/items/faceless_void/battlefury/battlefury.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"2\"\n\t\t\t\t\"pitch\"\t\t\"-50\"\n\t\t\t\t\"roll\"\t\t\"28\"\n\t\t\t\t\"yaw\"\t\t\"0\"\n\t\t\t\t\"YPos\"\t\t\"111\"\n\t\t\t\t\"ZPos\"\t\t\"-63\"\n\t\t\t\t\"XPos\"\t\t\"0\"\n\t\t\t}\n\t\t}\n\t\t\"attach_hitloc\"\n\t\t{\n\t\t\t\"models/props_gameplay/red_box.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"1.2999999523163\"\n\t\t\t\t\"pitch\"\t\t\"-70\"\n\t\t\t\t\"roll\"\t\t\"0\"\n\t\t\t\t\"ZPos\"\t\t\"0\"\n\t\t\t\t\"YPos\"\t\t\"0\"\n\t\t\t\t\"yaw\"\t\t\"-135\"\n\t\t\t\t\"XPos\"\t\t\"-13\"\n\t\t\t}\n\t\t\t\"models/heroes/tiny_04/tiny04_deathsim.vmdl\"\n\t\t\t{\n\t\t\t\t\"Animation\"\t\t\"tiny04_deathsim_anim\"\n\t\t\t\t\"scale\"\t\t\"1\"\n\t\t\t\t\"pitch\"\t\t\"0\"\n\t\t\t\t\"roll\"\t\t\"0\"\n\t\t\t\t\"yaw\"\t\t\"0\"\n\t\t\t\t\"YPos\"\t\t\"0\"\n\t\t\t\t\"ZPos\"\t\t\"0\"\n\t\t\t\t\"XPos\"\t\t\"0\"\n\t\t\t}\n\t\t}\n\t\t\"attach_origin\"\n\t\t{\n\t\t\t\"models/props_gameplay/red_box.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"2\"\n\t\t\t\t\"pitch\"\t\t\"0\"\n\t\t\t\t\"roll\"\t\t\"0\"\n\t\t\t\t\"ZPos\"\t\t\"0\"\n\t\t\t\t\"YPos\"\t\t\"0\"\n\t\t\t\t\"yaw\"\t\t\"0\"\n\t\t\t\t\"XPos\"\t\t\"0\"\n\t\t\t}\n\t\t}\n\t}\n\t\"models/heroes/sniper/sniper.vmdl\"\n\t{\n\t\t\"attach_hitloc\"\n\t\t{\n\t\t\t\"models/items/furion/hat_holiday_1.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"0.89999997615814\"\n\t\t\t\t\"pitch\"\t\t\"-165\"\n\t\t\t\t\"roll\"\t\t\"169\"\n\t\t\t\t\"ZPos\"\t\t\"-159\"\n\t\t\t\t\"YPos\"\t\t\"5\"\n\t\t\t\t\"yaw\"\t\t\"186\"\n\t\t\t\t\"XPos\"\t\t\"39\"\n\t\t\t}\n\t\t}\n\t}\n\t\"models/heroes/windrunner/windrunner.vmdl\"\n\t{\n\t\t\"attach_hitloc\"\n\t\t{\n\t\t\t\"models/items/furion/hat_holiday_1.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"0.89999997615814\"\n\t\t\t\t\"pitch\"\t\t\"-111\"\n\t\t\t\t\"roll\"\t\t\"-6\"\n\t\t\t\t\"ZPos\"\t\t\"-144\"\n\t\t\t\t\"YPos\"\t\t\"-5\"\n\t\t\t\t\"yaw\"\t\t\"-19\"\n\t\t\t\t\"XPos\"\t\t\"9\"\n\t\t\t}\n\t\t}\n\t}\n\t\"models/heroes/shadow_fiend/shadow_fiend_arcana.vmdl\"\n\t{\n\t\t\"attach_hitloc\"\n\t\t{\n\t\t\t\"models/items/furion/hat_holiday_1.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"0.89999997615814\"\n\t\t\t\t\"pitch\"\t\t\"-165\"\n\t\t\t\t\"roll\"\t\t\"169\"\n\t\t\t\t\"ZPos\"\t\t\"-99\"\n\t\t\t\t\"YPos\"\t\t\"5\"\n\t\t\t\t\"yaw\"\t\t\"186\"\n\t\t\t\t\"XPos\"\t\t\"39\"\n\t\t\t}\n\t\t}\n\t\t\"attach_head\"\n\t\t{\n\t\t\t\"models/items/furion/hat_holiday_1.vmdl\"\n\t\t\t{\n\t\t\t\t\"scale\"\t\t\"1.2000000476837\"\n\t\t\t\t\"pitch\"\t\t\"-95\"\n\t\t\t\t\"roll\"\t\t\"-90\"\n\t\t\t\t\"ZPos\"\t\t\"-174\"\n\t\t\t\t\"YPos\"\t\t\"0\"\n\t\t\t\t\"yaw\"\t\t\"0\"\n\t\t\t\t\"XPos\"\t\t\"14\"\n\t\t\t}\n\t\t}\n\t}\n\t\"Particles\"\n\t{\n\t\t\"models/items/wraith_king/winterblight_weapon/winterblight_weapon.vmdl\"\n\t\t{\n\t\t\t\"particles/econ/items/wraith_king/wraith_king_winterblight_weapon/wraith_king_winterblight_ambient.vpcf\"\n\t\t\t{\n\t\t\t\t\"2\"\t\t\"attach_mouth\"\n\t\t\t\t\"1\"\t\t\"attach_eye_l\"\n\t\t\t\t\"0\"\t\t\"attach_eye_r\"\n\t\t\t}\n\t\t}\n\t}\n\t\"ExtraKeys\"\t\t\"Can Be Added Wherever\"\n}\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/custom_net_tables.txt",
    "content": "<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->\n{\n  custom_net_tables =\n  [\n    \"containers_lua\",\n    \"selection\",\n  ]\n}\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/npc/herolist.txt",
    "content": "//\n// <key>  <value>\n// Hero   currently on/off, will be # of instances (-1 = infinite)\n//\n\n\"CustomHeroList\"\n{\n  \"npc_dota_hero_ancient_apparition\" \"1\"\n  \"npc_dota_hero_antimage\" \"1\"\n  \"npc_dota_hero_axe\" \"1\"\n  \"npc_dota_hero_bane\" \"1\"\n  \"npc_dota_hero_beastmaster\" \"1\"\n  \"npc_dota_hero_bloodseeker\" \"1\"\n  \"npc_dota_hero_chen\" \"1\"\n  \"npc_dota_hero_crystal_maiden\" \"1\"\n  \"npc_dota_hero_dark_seer\" \"1\"\n  \"npc_dota_hero_dazzle\"  \"1\"\n  \"npc_dota_hero_dragon_knight\" \"1\"\n  \"npc_dota_hero_doom_bringer\" \"1\"\n  \"npc_dota_hero_drow_ranger\" \"1\"\n  \"npc_dota_hero_earthshaker\" \"1\"\n  \"npc_dota_hero_enchantress\" \"1\"\n  \"npc_dota_hero_enigma\" \"1\"\n  \"npc_dota_hero_faceless_void\" \"1\"\n  \"npc_dota_hero_furion\" \"1\"\n  \"npc_dota_hero_juggernaut\" \"1\"\n  \"npc_dota_hero_kunkka\" \"1\"\n  \"npc_dota_hero_leshrac\" \"1\"\n  \"npc_dota_hero_lich\" \"1\"\n  \"npc_dota_hero_life_stealer\" \"1\"\n  \"npc_dota_hero_lina\" \"1\"\n  \"npc_dota_hero_lion\" \"1\"\n  \"npc_dota_hero_mirana\" \"1\"\n  \"npc_dota_hero_morphling\" \"1\"\n  \"npc_dota_hero_necrolyte\" \"1\"\n  \"npc_dota_hero_nevermore\" \"1\"\n  \"npc_dota_hero_night_stalker\" \"1\"\n  \"npc_dota_hero_omniknight\" \"1\"\n  \"npc_dota_hero_puck\" \"1\"\n  \"npc_dota_hero_pudge\" \"1\"\n  \"npc_dota_hero_pugna\" \"1\"\n  \"npc_dota_hero_rattletrap\" \"1\"\n  \"npc_dota_hero_razor\" \"1\"\n  \"npc_dota_hero_riki\" \"1\"\n  \"npc_dota_hero_sand_king\" \"1\"\n  \"npc_dota_hero_shadow_shaman\" \"1\"\n  \"npc_dota_hero_slardar\" \"1\"\n  \"npc_dota_hero_sniper\" \"1\"\n  \"npc_dota_hero_spectre\" \"1\"\n  \"npc_dota_hero_storm_spirit\" \"1\"\n  \"npc_dota_hero_sven\" \"1\"\n  \"npc_dota_hero_tidehunter\" \"1\"\n  \"npc_dota_hero_tinker\" \"1\"\n  \"npc_dota_hero_tiny\" \"1\"\n  \"npc_dota_hero_vengefulspirit\" \"1\"\n  \"npc_dota_hero_venomancer\"  \"1\"\n  \"npc_dota_hero_viper\" \"1\"\n  \"npc_dota_hero_weaver\" \"1\"\n  \"npc_dota_hero_windrunner\" \"1\"\n  \"npc_dota_hero_witch_doctor\" \"1\"\n  \"npc_dota_hero_zuus\" \"1\"\n  \"npc_dota_hero_broodmother\" \"1\"\n  \"npc_dota_hero_skeleton_king\" \"1\"\n  \"npc_dota_hero_queenofpain\" \"1\"\n  \"npc_dota_hero_huskar\" \"1\"\n  \"npc_dota_hero_jakiro\" \"1\"\n  \"npc_dota_hero_batrider\" \"1\"\n  \"npc_dota_hero_warlock\" \"1\"\n  \"npc_dota_hero_alchemist\" \"1\"\n  \"npc_dota_hero_death_prophet\" \"1\"\n  \"npc_dota_hero_ursa\" \"1\"\n  \"npc_dota_hero_bounty_hunter\" \"1\"\n  \"npc_dota_hero_silencer\" \"1\"\n  \"npc_dota_hero_spirit_breaker\" \"1\"\n  \"npc_dota_hero_invoker\" \"1\"\n  \"npc_dota_hero_clinkz\" \"1\"\n  \"npc_dota_hero_obsidian_destroyer\" \"1\"\n  \"npc_dota_hero_shadow_demon\" \"1\"\n  \"npc_dota_hero_lycan\" \"1\"\n  \"npc_dota_hero_lone_druid\" \"1\"\n  \"npc_dota_hero_brewmaster\" \"1\"\n  \"npc_dota_hero_phantom_lancer\" \"1\"\n  \"npc_dota_hero_treant\" \"1\"\n  \"npc_dota_hero_ogre_magi\" \"1\"\n  \"npc_dota_hero_chaos_knight\" \"1\"\n  \"npc_dota_hero_phantom_assassin\" \"1\"\n  \"npc_dota_hero_gyrocopter\" \"1\"\n  \"npc_dota_hero_rubick\" \"1\"\n  \"npc_dota_hero_luna\" \"1\"\n  \"npc_dota_hero_wisp\" \"1\"\n  \"npc_dota_hero_disruptor\" \"1\"\n  \"npc_dota_hero_undying\" \"1\"\n  \"npc_dota_hero_templar_assassin\" \"1\"\n  \"npc_dota_hero_naga_siren\" \"1\"\n  \"npc_dota_hero_nyx_assassin\" \"1\"\n  \"npc_dota_hero_keeper_of_the_light\" \"1\"\n  \"npc_dota_hero_visage\" \"1\"\n  \"npc_dota_hero_meepo\" \"1\"\n  \"npc_dota_hero_magnataur\" \"1\"\n  \"npc_dota_hero_centaur\" \"1\"\n  \"npc_dota_hero_slark\" \"1\"\n  \"npc_dota_hero_shredder\" \"1\"\n  \"npc_dota_hero_medusa\" \"1\"\n  \"npc_dota_hero_troll_warlord\" \"1\"\n  \"npc_dota_hero_tusk\" \"1\"\n  \"npc_dota_hero_bristleback\" \"1\"\n  \"npc_dota_hero_skywrath_mage\" \"1\"\n  \"npc_dota_hero_elder_titan\" \"1\"\n  \"npc_dota_hero_abaddon\" \"1\"\n  \"npc_dota_hero_earth_spirit\" \"1\"\n  \"npc_dota_hero_ember_spirit\" \"1\"\n  \"npc_dota_hero_legion_commander\" \"1\"\n  \"npc_dota_hero_phoenix\" \"1\"\n  \"npc_dota_hero_terrorblade\" \"1\"\n  \"npc_dota_hero_techies\" \"1\"\n  \"npc_dota_hero_oracle\" \"1\"\n  \"npc_dota_hero_winter_wyvern\" \"1\"\n  \"npc_dota_hero_abyssal_underlord\" \"0\"\n}"
  },
  {
    "path": "game/dota_addons/barebones/scripts/npc/npc_abilities_custom.txt",
    "content": "\n// Dota Abilities Override File\n\"DOTAAbilities\"\n{\n  \"Version\"   \"1\"\n\n  \"containers_lua_targeting\"\n  {\n    // General\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_HIDDEN\"\n    \"AbilityUnitTargetTeam\"     \"DOTA_UNIT_TARGET_TEAM_BOTH\"\n    //\"AbilityUnitTargetType\"     \"DOTA_UNIT_TARGET_ALL\"\n    \"AbilityUnitTargetType\"     \"DOTA_UNIT_TARGET_ALL\"\n    \"AbilityUnitDamageType\"     \"DAMAGE_TYPE_MAGICAL\" \n    \"BaseClass\"         \"ability_lua\"\n    \"AbilityTextureName\"        \"rubick_empty1\"\n    \"ScriptFile\"          \"libraries/abilities/containers_lua_targeting\"\n    \"MaxLevel\"            \"1\"\n    \"IsCastableWhileHidden\" \"1\"\n    \n    // Casting\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityCastRange\"        \"0\"\n    \"AbilityCastPoint\"        \"0.0\"\n\n    // Time   \n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityCooldown\"       \"0\"\n\n    // Cost\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityManaCost\"       \"0 0 0 0\"\n  }\n\n  \"containers_lua_targeting_tree\"\n  {\n    // General\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_HIDDEN\"\n    \"AbilityUnitTargetTeam\"     \"DOTA_UNIT_TARGET_TEAM_BOTH\"\n    //\"AbilityUnitTargetType\"     \"DOTA_UNIT_TARGET_ALL\"\n    \"AbilityUnitTargetType\"     \"DOTA_UNIT_TARGET_ALL | DOTA_UNIT_TARGET_TREE\"\n    \"AbilityUnitDamageType\"     \"DAMAGE_TYPE_MAGICAL\" \n    \"BaseClass\"         \"ability_lua\"\n    \"AbilityTextureName\"        \"rubick_empty1\"\n    \"ScriptFile\"          \"libraries/abilities/containers_lua_targeting_tree\"\n    \"MaxLevel\"            \"1\"\n    \"IsCastableWhileHidden\" \"1\"\n    \n    // Casting\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityCastRange\"        \"0\"\n    \"AbilityCastPoint\"        \"0.0\"\n\n    // Time   \n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityCooldown\"       \"0\"\n\n    // Cost\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityManaCost\"       \"0 0 0 0\"\n  }\n  \n  \"example_ability\"\n  {\n    \"ID\"              \"1852\"\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED\"\n    \"BaseClass\"           \"ability_datadriven\"\n    \"AbilityTextureName\"      \"holdout_blade_fury\"\n\n    // Stats\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityCastRange\"        \"1000\"\n    \"AbilityCastPoint\"        \"0.0\"\n    \"AbilityCooldown\"       \"10.0\"\n    \"AbilityChannelTime\"      \"2.0 1.8 1.6 1.5\"\n    \"AbilityUnitDamageType\"     \"DAMAGE_TYPE_PURE\"\n    \"AbilityCastAnimation\"      \"ACT_DOTA_DISABLED\"\n    \"AbilityDamage\"         \"400 600 800 1000\"\n    \n    \"precache\"\n    {\n      \"particle\"          \"particles/econ/generic/generic_aoe_explosion_sphere_1/generic_aoe_explosion_sphere_1.vpcf\"\n      \"soundfile\"         \"soundevents/game_sounds_heroes/game_sounds_gyrocopter.vsndevts\"\n    }\n\n    // Item Info\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityManaCost\"       \"300\"\n    \"SideShop\"            \"1\"\n    \n    \"OnSpellStart\"\n    {\n      \"ApplyModifier\"\n      {\n        \"Target\"    \"CASTER\"\n        \"ModifierName\"  \"modifier_channel_start\"\n      }\n      \"FireSound\"\n      {\n        \"EffectName\"    \"Hero_Gyrocopter.CallDown.Fire\"\n        \"Target\"      \"CASTER\"\n      }\n    }\n    \n    \"OnChannelSucceeded\"\n    {\n      \"RemoveModifier\"\n      {\n        \"Target\"        \"CASTER\"\n        \"ModifierName\"      \"modifier_channel_start\"\n      }\n      \"AttachEffect\"\n      {\n        \"EffectName\"      \"particles/econ/generic/generic_aoe_explosion_sphere_1/generic_aoe_explosion_sphere_1.vpcf\"\n        \"EffectAttachType\"    \"follow_origin\"\n        \"EffectRadius\"      \"%radius\"\n        \"EffectDurationScale\" \"1\"\n        \"EffectLifeDurationScale\" \"1\"\n        \"EffectColorA\"      \"255 0 0\"\n        \"EffectColorB\"      \"255 0 0\"\n        \"Target\"      \"CASTER\"\n      }\n      \n      \"Damage\"\n      {\n        \"Type\"          \"DAMAGE_TYPE_PURE\"\n        \"Damage\"        \"%damage\"\n        \"Target\"\n        {\n          \"Center\"      \"CASTER\"\n          \"Radius\"      \"%radius\"\n          \"Teams\"       \"DOTA_UNIT_TARGET_TEAM_ENEMY\"\n          \"Types\"       \"DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC\"\n        }\n      }\n      \n      \"Knockback\"\n      {\n        \"Center\"  \"CASTER\"\n        \"Target\"\n        {\n          \"Center\"  \"CASTER\"\n          \"Radius\"  \"%radius\"\n          \"Teams\"   \"DOTA_UNIT_TARGET_TEAM_ENEMY\"\n        }\n        \"Duration\"  \"%duration\"\n        \"Distance\"  \"%distance\"\n        \"Height\"  \"%height\"\n      }\n      \n      \"FireSound\"\n      {\n        \"EffectName\"    \"Hero_Gyrocopter.CallDown.Damage\"\n        \"Target\"      \"CASTER\"\n      }\n    }\n    \n    \"OnChannelFinish\"\n    {\n      \"RemoveModifier\"\n      {\n        \"Target\"        \"CASTER\"\n        \"ModifierName\"      \"modifier_channel_start\"\n      }\n    }\n    \n    \"OnChannelInterrupted\"\n    {\n      \"RemoveModifier\"\n      {\n        \"Target\"    \"CASTER\"\n        \"ModifierName\"  \"modifier_channel_start\"\n      }\n    }\n    \n    \"Modifiers\"\n    {\n      \"modifier_channel_start\"\n      {\n        \"OnCreated\"\n        {\n          \"AttachEffect\"\n          {\n            \"IsHidden\" \"1\"\n            \"EffectName\"    \"particles/test_particle/channel_field_2.vpcf\"//\"gyro_calldown_marker_c\"//\"gyrocopter_call_down\"\n            \"EffectAttachType\"  \"follow_origin\"\n            \"Target\"      \"CASTER\"\n            \n            \"EffectRadius\"      \"%radius\"\n            \"EffectColorA\"      \"255 0 0\"\n            \"EffectColorB\"      \"255 0 0\"\n          \n            \"ControlPoints\"\n            {\n              \"00\"    \"50 100 5\"\n            }\n          }\n        }\n      }\n    }\n    \n    // Special  \n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilitySpecial\"\n    {\n      \"01\"\n      {\n        \"var_type\"        \"FIELD_FLOAT\"\n        \"duration\"        \"0.5\"\n      }\n      \n      \"02\"\n      {\n        \"var_type\"        \"FIELD_INTEGER\"\n        \"damage\"        \"400 600 800 1000\"\n      }\n      \n      \"03\"\n      {\n        \"var_type\"        \"FIELD_INTEGER\"\n        \"radius\"        \"550 550 600 650\"\n      }\n      \n      \"04\"\n      {\n        \"var_type\"        \"FIELD_INTEGER\"\n        \"distance\"        \"400 500 600 700\"\n      }\n      \n      \"05\"\n      {\n        \"var_type\"        \"FIELD_INTEGER\"\n        \"height\"        \"100 200 300 400\"\n      }\n    }\n  }\n  \n//-------------------\n// Dummy stuff\n//-------------------\n  \n  \"dummy_unit\"\n  {\n    \"AbilityBehavior\"     \"DOTA_ABILITY_BEHAVIOR_PASSIVE\"\n    \"BaseClass\"           \"ability_datadriven\"\n    \"AbilityTextureName\"            \"rubick_empty1\"\n    \"MaxLevel\"                      \"1\"\n    \n    \"Modifiers\"\n    {\n      \"dummy_unit\"\n      {\n          \"Passive\"                        \"1\"\n          \"IsHidden\"                        \"1\"    \n          \"States\"\n          {\n              \"MODIFIER_STATE_UNSELECTABLE\" \"MODIFIER_STATE_VALUE_ENABLED\"\n              \"MODIFIER_STATE_INVULNERABLE\"    \"MODIFIER_STATE_VALUE_ENABLED\"\n              \"MODIFIER_STATE_NOT_ON_MINIMAP\" \"MODIFIER_STATE_VALUE_ENABLED\"\n              \"MODIFIER_STATE_NO_HEALTH_BAR\"  \"MODIFIER_STATE_VALUE_ENABLED\"\n          }\n      }\n    }\n  }\n  \n  \"barebones_empty1\"\n  {\n    // General\n    //-------------------------------------------------------------------------------------------------------------\n    //\"ID\"              \"5343\"                            // unique ID number for this ability.  Do not change this once established or it will invalidate collected stats.\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE\"\n    \"MaxLevel\"            \"0\"\n    \"BaseClass\"           \"ability_datadriven\"\n    \"AbilityTextureName\"            \"rubick_empty1\"\n  }\n  \n  \"barebones_empty2\"\n  {\n    // General\n    //-------------------------------------------------------------------------------------------------------------\n    //\"ID\"              \"5343\"                            // unique ID number for this ability.  Do not change this once established or it will invalidate collected stats.\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE\"\n    \"MaxLevel\"            \"0\"\n    \"BaseClass\"           \"ability_datadriven\"\n    \"AbilityTextureName\"            \"rubick_empty1\"\n  }\n  \n  \"barebones_empty3\"\n  {\n    // General\n    //-------------------------------------------------------------------------------------------------------------\n    //\"ID\"              \"5343\"                            // unique ID number for this ability.  Do not change this once established or it will invalidate collected stats.\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE\"\n    \"MaxLevel\"            \"0\"\n    \"BaseClass\"           \"ability_datadriven\"\n    \"AbilityTextureName\"            \"rubick_empty1\"\n  }\n  \n  \"barebones_empty4\"\n  {\n    // General\n    //-------------------------------------------------------------------------------------------------------------\n    //\"ID\"              \"5343\"                            // unique ID number for this ability.  Do not change this once established or it will invalidate collected stats.\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE\"\n    \"MaxLevel\"            \"0\"\n    \"BaseClass\"           \"ability_datadriven\"\n    \"AbilityTextureName\"            \"rubick_empty1\"\n  }\n  \n  \"barebones_empty5\"\n  {\n    // General\n    //-------------------------------------------------------------------------------------------------------------\n    //\"ID\"              \"5343\"                            // unique ID number for this ability.  Do not change this once established or it will invalidate collected stats.\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE\"\n    \"MaxLevel\"            \"0\"\n    \"BaseClass\"           \"ability_datadriven\"\n    \"AbilityTextureName\"            \"rubick_empty1\"\n  }\n  \n  \"barebones_empty6\"\n  {\n    // General\n    //-------------------------------------------------------------------------------------------------------------\n    //\"ID\"              \"5343\"                            // unique ID number for this ability.  Do not change this once established or it will invalidate collected stats.\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE\"\n    \"MaxLevel\"            \"0\"\n    \"BaseClass\"           \"ability_datadriven\"\n    \"AbilityTextureName\"            \"rubick_empty1\"\n  }\n}\n\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/npc/npc_abilities_override.txt",
    "content": "\n// Dota Abilities Override File\n\"DOTAAbilities\"\n{\n  \"Version\"   \"1\"\n  \n  \n  // -----------------------------------------------------------\n  // - UNCOMMENT ANY ITEM YOU DON'T WANT TO APPEAR IN THE SHOP -\n  // -----------------------------------------------------------\n  \n  //\"item_blink\"      \"REMOVE\"\n  //\"item_blades_of_attack\"     \"REMOVE\"\n  //\"item_broadsword\"     \"REMOVE\"\n  //\"item_chainmail\"      \"REMOVE\"\n  //\"item_claymore\"     \"REMOVE\"\n  //\"item_helm_of_iron_will\"      \"REMOVE\"\n  //\"item_javelin\"      \"REMOVE\"\n  //\"item_mithril_hammer\"     \"REMOVE\"\n  //\"item_platemail\"      \"REMOVE\"\n  //\"item_quarterstaff\"     \"REMOVE\"\n  //\"item_quelling_blade\"     \"REMOVE\"\n  //\"item_ring_of_protection\"     \"REMOVE\"\n  //\"item_stout_shield\"     \"REMOVE\"\n  //\"item_gauntlets\"      \"REMOVE\"\n  //\"item_slippers\"     \"REMOVE\"\n  //\"item_mantle\"     \"REMOVE\"\n  //\"item_branches\"     \"REMOVE\"\n  //\"item_belt_of_strength\"     \"REMOVE\"\n  //\"item_boots_of_elves\"     \"REMOVE\"\n  //\"item_robe\"     \"REMOVE\"\n  //\"item_circlet\"      \"REMOVE\"\n  //\"item_ogre_axe\"     \"REMOVE\"\n  //\"item_blade_of_alacrity\"      \"REMOVE\"\n  //\"item_staff_of_wizardry\"      \"REMOVE\"\n  //\"item_ultimate_orb\"     \"REMOVE\"\n  //\"item_gloves\"     \"REMOVE\"\n  //\"item_lifesteal\"      \"REMOVE\"\n  //\"item_ring_of_regen\"      \"REMOVE\"\n  //\"item_sobi_mask\"      \"REMOVE\"\n  //\"item_boots\"      \"REMOVE\"\n  //\"item_gem\"      \"REMOVE\"\n  //\"item_cloak\"      \"REMOVE\"\n  //\"item_talisman_of_evasion\"      \"REMOVE\"\n  //\"item_cheese\"     \"REMOVE\"\n  //\"item_magic_stick\"      \"REMOVE\"\n  //\"item_recipe_magic_wand\"      \"REMOVE\"\n  //\"item_magic_wand\"     \"REMOVE\"\n  //\"item_ghost\"      \"REMOVE\"\n  //\"item_clarity\"      \"REMOVE\"\n  //\"item_flask\"      \"REMOVE\"\n  //\"item_dust\"     \"REMOVE\"\n  //\"item_bottle\"     \"REMOVE\"\n  //\"item_ward_observer\"      \"REMOVE\"\n  //\"item_ward_sentry\"      \"REMOVE\"\n  //\"item_tango\"      \"REMOVE\"\n  //\"item_tango_single\"     \"REMOVE\"\n  //\"item_courier\"      \"REMOVE\"\n  //\"item_tpscroll\"     \"REMOVE\"\n  //\"item_recipe_travel_boots\"      \"REMOVE\"\n  //\"item_travel_boots\"     \"REMOVE\"\n  //\"item_recipe_phase_boots\"     \"REMOVE\"\n  //\"item_phase_boots\"      \"REMOVE\"\n  //\"item_demon_edge\"     \"REMOVE\"\n  //\"item_eagle\"      \"REMOVE\"\n  //\"item_reaver\"     \"REMOVE\"\n  //\"item_relic\"      \"REMOVE\"\n  //\"item_hyperstone\"     \"REMOVE\"\n  //\"item_ring_of_health\"     \"REMOVE\"\n  //\"item_void_stone\"     \"REMOVE\"\n  //\"item_mystic_staff\"     \"REMOVE\"\n  //\"item_energy_booster\"     \"REMOVE\"\n  //\"item_point_booster\"      \"REMOVE\"\n  //\"item_vitality_booster\"     \"REMOVE\"\n  //\"item_recipe_power_treads\"      \"REMOVE\"\n  //\"item_power_treads\"     \"REMOVE\"\n  //\"item_recipe_hand_of_midas\"     \"REMOVE\"\n  //\"item_hand_of_midas\"      \"REMOVE\"\n  //\"item_recipe_oblivion_staff\"      \"REMOVE\"\n  //\"item_oblivion_staff\"     \"REMOVE\"\n  //\"item_recipe_pers\"      \"REMOVE\"\n  //\"item_pers\"     \"REMOVE\"\n  //\"item_recipe_poor_mans_shield\"      \"REMOVE\"\n  //\"item_poor_mans_shield\"     \"REMOVE\"\n  //\"item_recipe_bracer\"      \"REMOVE\"\n  //\"item_bracer\"     \"REMOVE\"\n  //\"item_recipe_wraith_band\"     \"REMOVE\"\n  //\"item_wraith_band\"      \"REMOVE\"\n  //\"item_recipe_null_talisman\"     \"REMOVE\"\n  //\"item_null_talisman\"      \"REMOVE\"\n  //\"item_recipe_mekansm\"     \"REMOVE\"\n  //\"item_mekansm\"      \"REMOVE\"\n  //\"item_recipe_vladmir\"     \"REMOVE\"\n  //\"item_vladmir\"      \"REMOVE\"\n  //\"item_flying_courier\"     \"REMOVE\"\n  //\"item_recipe_buckler\"     \"REMOVE\"\n  //\"item_buckler\"      \"REMOVE\"\n  //\"item_recipe_ring_of_basilius\"      \"REMOVE\"\n  //\"item_ring_of_basilius\"     \"REMOVE\"\n  //\"item_recipe_pipe\"      \"REMOVE\"\n  //\"item_pipe\"     \"REMOVE\"\n  //\"item_recipe_urn_of_shadows\"      \"REMOVE\"\n  //\"item_urn_of_shadows\"     \"REMOVE\"\n  //\"item_recipe_headdress\"     \"REMOVE\"\n  //\"item_headdress\"      \"REMOVE\"\n  //\"item_recipe_sheepstick\"      \"REMOVE\"\n  //\"item_sheepstick\"     \"REMOVE\"\n  //\"item_recipe_orchid\"      \"REMOVE\"\n  //\"item_orchid\"     \"REMOVE\"\n  //\"item_recipe_cyclone\"     \"REMOVE\"\n  //\"item_cyclone\"      \"REMOVE\"\n  //\"item_recipe_force_staff\"     \"REMOVE\"\n  //\"item_force_staff\"      \"REMOVE\"\n  //\"item_recipe_dagon\"     \"REMOVE\"\n  //\"item_recipe_dagon_2\"     \"REMOVE\"\n  //\"item_recipe_dagon_3\"     \"REMOVE\"\n  //\"item_recipe_dagon_4\"     \"REMOVE\"\n  //\"item_recipe_dagon_5\"     \"REMOVE\"\n  //\"item_dagon\"      \"REMOVE\"\n  //\"item_dagon_2\"      \"REMOVE\"\n  //\"item_dagon_3\"      \"REMOVE\"\n  //\"item_dagon_4\"      \"REMOVE\"\n  //\"item_dagon_5\"      \"REMOVE\"\n  //\"item_recipe_necronomicon\"      \"REMOVE\"\n  //\"item_recipe_necronomicon_2\"      \"REMOVE\"\n  //\"item_recipe_necronomicon_3\"      \"REMOVE\"\n  //\"item_necronomicon\"     \"REMOVE\"\n  //\"item_necronomicon_2\"     \"REMOVE\"\n  //\"item_necronomicon_3\"     \"REMOVE\"\n  //\"item_recipe_ultimate_scepter\"      \"REMOVE\"\n  //\"item_ultimate_scepter\"     \"REMOVE\"\n  //\"item_recipe_refresher\"     \"REMOVE\"\n  //\"item_refresher\"      \"REMOVE\"\n  //\"item_recipe_assault\"     \"REMOVE\"\n  //\"item_assault\"      \"REMOVE\"\n  //\"item_recipe_heart\"     \"REMOVE\"\n  //\"item_heart\"      \"REMOVE\"\n  //\"item_recipe_black_king_bar\"      \"REMOVE\"\n  //\"item_black_king_bar\"     \"REMOVE\"\n  //\"item_aegis\"      \"REMOVE\"\n  //\"item_recipe_shivas_guard\"      \"REMOVE\"\n  //\"item_shivas_guard\"     \"REMOVE\"\n  //\"item_recipe_bloodstone\"      \"REMOVE\"\n  //\"item_bloodstone\"     \"REMOVE\"\n  //\"item_recipe_sphere\"      \"REMOVE\"\n  //\"item_sphere\"     \"REMOVE\"\n  //\"item_recipe_reflex_energy_regen_booster\"     \"REMOVE\"\n  //\"item_vanguard\"     \"REMOVE\"\n  //\"item_recipe_blade_mail\"      \"REMOVE\"\n  //\"item_blade_mail\"     \"REMOVE\"\n  //\"item_recipe_soul_booster\"      \"REMOVE\"\n  //\"item_soul_booster\"     \"REMOVE\"\n  //\"item_recipe_hood_of_defiance\"      \"REMOVE\"\n  //\"item_hood_of_defiance\"     \"REMOVE\"\n  //\"item_recipe_rapier\"      \"REMOVE\"\n  //\"item_rapier\"     \"REMOVE\"\n  //\"item_recipe_monkey_king_bar\"     \"REMOVE\"\n  //\"item_monkey_king_bar\"      \"REMOVE\"\n  //\"item_recipe_radiance\"      \"REMOVE\"\n  //\"item_radiance\"     \"REMOVE\"\n  //\"item_recipe_butterfly\"     \"REMOVE\"\n  //\"item_butterfly\"      \"REMOVE\"\n  //\"item_recipe_greater_crit\"      \"REMOVE\"\n  //\"item_greater_crit\"     \"REMOVE\"\n  //\"item_recipe_basher\"      \"REMOVE\"\n  //\"item_basher\"     \"REMOVE\"\n  //\"item_recipe_bfury\"     \"REMOVE\"\n  //\"item_bfury\"      \"REMOVE\"\n  //\"item_recipe_manta\"     \"REMOVE\"\n  //\"item_manta\"      \"REMOVE\"\n  //\"item_recipe_lesser_crit\"     \"REMOVE\"\n  //\"item_lesser_crit\"      \"REMOVE\"\n  //\"item_recipe_armlet\"      \"REMOVE\"\n  //\"item_armlet\"     \"REMOVE\"\n  //\"item_recipe_invis_sword\"     \"REMOVE\"\n  //\"item_invis_sword\"      \"REMOVE\"\n  //\"item_recipe_sange_and_yasha\"     \"REMOVE\"\n  //\"item_sange_and_yasha\"      \"REMOVE\"\n  //\"item_recipe_satanic\"     \"REMOVE\"\n  //\"item_satanic\"      \"REMOVE\"\n  //\"item_recipe_mjollnir\"      \"REMOVE\"\n  //\"item_mjollnir\"     \"REMOVE\"\n  //\"item_recipe_skadi\"     \"REMOVE\"\n  //\"item_skadi\"      \"REMOVE\"\n  //\"item_recipe_sange\"     \"REMOVE\"\n  //\"item_sange\"      \"REMOVE\"\n  //\"item_recipe_helm_of_the_dominator\"     \"REMOVE\"\n  //\"item_helm_of_the_dominator\"      \"REMOVE\"\n  //\"item_recipe_maelstrom\"     \"REMOVE\"\n  //\"item_maelstrom\"      \"REMOVE\"\n  //\"item_recipe_desolator\"     \"REMOVE\"\n  //\"item_desolator\"      \"REMOVE\"\n  //\"item_recipe_yasha\"     \"REMOVE\"\n  //\"item_yasha\"      \"REMOVE\"\n  //\"item_recipe_mask_of_madness\"     \"REMOVE\"\n  //\"item_mask_of_madness\"      \"REMOVE\"\n  //\"item_recipe_diffusal_blade\"      \"REMOVE\"\n  //\"item_recipe_diffusal_blade_2\"      \"REMOVE\"\n  //\"item_diffusal_blade\"     \"REMOVE\"\n  //\"item_diffusal_blade_2\"     \"REMOVE\"\n  //\"item_recipe_ethereal_blade\"      \"REMOVE\"\n  //\"item_ethereal_blade\"     \"REMOVE\"\n  //\"item_recipe_soul_ring\"     \"REMOVE\"\n  //\"item_soul_ring\"      \"REMOVE\"\n  //\"item_recipe_arcane_boots\"      \"REMOVE\"\n  //\"item_arcane_boots\"     \"REMOVE\"\n  //\"item_orb_of_venom\"     \"REMOVE\"\n  //\"item_recipe_ancient_janggo\"      \"REMOVE\"\n  //\"item_ancient_janggo\"     \"REMOVE\"\n  //\"item_recipe_medallion_of_courage\"      \"REMOVE\"\n  //\"item_medallion_of_courage\"     \"REMOVE\"\n  //\"item_smoke_of_deceit\"      \"REMOVE\"\n  //\"item_recipe_veil_of_discord\"     \"REMOVE\"\n  //\"item_veil_of_discord\"      \"REMOVE\"\n  //\"item_recipe_rod_of_atos\"     \"REMOVE\"\n  //\"item_rod_of_atos\"      \"REMOVE\"\n  //\"item_recipe_abyssal_blade\"     \"REMOVE\"\n  //\"item_abyssal_blade\"      \"REMOVE\"\n  //\"item_recipe_heavens_halberd\"     \"REMOVE\"\n  //\"item_heavens_halberd\"      \"REMOVE\"\n  //\"item_recipe_ring_of_aquila\"      \"REMOVE\"\n  //\"item_ring_of_aquila\"     \"REMOVE\"\n  //\"item_recipe_tranquil_boots\"      \"REMOVE\"\n  //\"item_tranquil_boots\"     \"REMOVE\"\n  //\"item_shadow_amulet\"      \"REMOVE\"\n  \n  \n  //\"item_halloween_candy_corn\"     \"REMOVE\"\n  //\"item_mystery_hook\"     \"REMOVE\"\n  //\"item_mystery_arrow\"      \"REMOVE\"\n  //\"item_mystery_missile\"      \"REMOVE\"\n  //\"item_mystery_toss\"     \"REMOVE\"\n  //\"item_mystery_vacuum\"     \"REMOVE\"\n  //\"item_halloween_rapier\"     \"REMOVE\"\n  //\"item_greevil_whistle\"      \"REMOVE\"\n  //\"item_greevil_whistle_toggle\"     \"REMOVE\"\n  //\"item_present\"      \"REMOVE\"\n  //\"item_winter_stocking\"      \"REMOVE\"\n  //\"item_winter_skates\"      \"REMOVE\"\n  //\"item_winter_cake\"      \"REMOVE\"\n  //\"item_winter_cookie\"      \"REMOVE\"\n  //\"item_winter_coco\"      \"REMOVE\"\n  //\"item_winter_ham\"     \"REMOVE\"\n  //\"item_winter_kringle\"     \"REMOVE\"\n  //\"item_winter_mushroom\"      \"REMOVE\"\n  //\"item_winter_greevil_treat\"     \"REMOVE\"\n  //\"item_winter_greevil_garbage\"     \"REMOVE\"\n  //\"item_winter_greevil_chewy\"     \"REMOVE\"\n  \n  //\"item_recipe_moon_shard\"      \"REMOVE\"\n  //\"item_moon_shard\"     \"REMOVE\"  \n  //\"item_enchanted_mango\"      \"REMOVE\"  \n  //\"item_recipe_travel_boots_2\"      \"REMOVE\"  \n  //\"item_travel_boots_2\"     \"REMOVE\"  \n  //\"item_recipe_lotus_orb\"     \"REMOVE\"  \n  //\"item_lotus_orb\"      \"REMOVE\"  \n  //\"item_recipe_crimson_guard\"     \"REMOVE\"  \n  //\"item_crimson_guard\"      \"REMOVE\"  \n  //\"item_recipe_silver_edge\"     \"REMOVE\"  \n  //\"item_silver_edge\"      \"REMOVE\"  \n  //\"item_recipe_octarine_core\"     \"REMOVE\"  \n  //\"item_octarine_core\"      \"REMOVE\"  \n  //\"item_recipe_solar_crest\"     \"REMOVE\"  \n  //\"item_solar_crest\"      \"REMOVE\"  \n  //\"item_recipe_guardian_greaves\"      \"REMOVE\"  \n  //\"item_guardian_greaves\"     \"REMOVE\"  \n  //\"item_recipe_glimmer_cape\"      \"REMOVE\"  \n  //\"item_glimmer_cape\"     \"REMOVE\"  \n\n  //\"item_faerie_fire\"     \"REMOVE\"\n  //\"item_recipe_aether_lens\"     \"REMOVE\"\n  //\"item_aether_lens\"     \"REMOVE\"\n  //\"item_recipe_dragon_lance\"     \"REMOVE\"\n  //\"item_dragon_lance\"     \"REMOVE\"\n  //\"item_recipe_iron_talon\"     \"REMOVE\"\n  //\"item_iron_talon\"     \"REMOVE\"\n\n  //\"item_recipe_bloodthorn\"      \"REMOVE\"\n  //\"item_bloodthorn\"      \"REMOVE\"\n  //\"item_wind_lace\"      \"REMOVE\"\n  //\"item_infused_raindrop\"      \"REMOVE\"\n  //\"item_blight_stone\"      \"REMOVE\"\n  //\"item_recipe_echo_sabre\"      \"REMOVE\"\n  //\"item_echo_sabre\"      \"REMOVE\"\n  //\"item_tome_of_knowledge\"      \"REMOVE\"\n  //\"item_recipe_hurricane_pike\"      \"REMOVE\"\n  //\"item_hurricane_pike\"      \"REMOVE\"\n  //\"item_banana\"      \"REMOVE\"\n}"
  },
  {
    "path": "game/dota_addons/barebones/scripts/npc/npc_heroes_custom.txt",
    "content": "\"DOTAHeroes\"\n{\n  \"npc_dota_hero_ancient_apparition_barebones\"\n  {\n    \"AbilityLayout\"     \"6\"\n    \"override_hero\"     \"npc_dota_hero_ancient_apparition\"\n    \"SoundSet\"          \"0\" \n    \"Ability1\"        \"example_ability\" \n    \"Ability2\"        \"barebones_empty2\" \n    \"Ability3\"        \"barebones_empty3\" \n    \"Ability4\"        \"barebones_empty4\"\n    \"Ability5\"        \"barebones_empty5\"\n    \"Ability6\"        \"barebones_empty6\"\n    \"Ability7\"        \"\"\n    \"Ability8\"        \"\"\n    \"Ability9\"        \"\"\n    \"Ability10\"       \"\"\n    \"Ability11\"       \"\"\n    \"Ability12\"       \"\"\n    \"Ability13\"       \"\"\n    \"Ability14\"       \"\"\n    \"Ability15\"       \"\"\n    \"Ability16\"       \"\"\n\n    \"ArmorPhysical\"       \"0\"                 // Physical protection.\n    \"MagicalResistance\"       \"0\"                 // Magical protection (percentage).\n\n    \"AttackCapabilities\"    \"DOTA_UNIT_CAP_NO_ATTACK\"\n    \"AttackDamageMin\"     \"1\"                   // Damage range min.\n    \"AttackDamageMax\"     \"1\"                   // Damage range max.\n\n    //\"AttributePrimary\"      \"DOTA_ATTRIBUTE_STRENGTH\"\n    \"AttributeBaseStrength\"   \"0\"                   // Base strength\n    \"AttributeStrengthGain\"   \"0\"                   // Strength bonus per level.\n    \"AttributeBaseIntelligence\" \"0\"                   // Base intelligence\n    \"AttributeIntelligenceGain\" \"0\"                   // Intelligence bonus per level.\n    \"AttributeBaseAgility\"    \"0\"                   // Base agility\n    \"AttributeAgilityGain\"    \"0\"                   // Agility bonus per level.\n\n    \"BountyXP\"          \"0\"                 // Experience earn.\n    \"BountyGoldMin\"       \"0\"                   // Gold earned min.\n    \"BountyGoldMax\"       \"0\"                   // Gold earned max.\n\n    //\"BoundsHullName\"      \"DOTA_HULL_SIZE_HERO\"\n    //\"RingRadius\"        \"70\"\n\n    \"MovementCapabilities\"    \"DOTA_UNIT_CAP_MOVE_GROUND\"\n    \"MovementSpeed\"       \"360\"                 // Speed.\n    \"MovementTurnRate\"      \"1.0\"                 // Turning rate.\n\n    \"StatusHealth\"        \"1000\"                 // Base health.\n    \"StatusHealthRegen\"     \"0.0\"                 // Health regeneration rate.\n    \"StatusMana\"        \"400\"                   // Base mana.\n    \"StatusManaRegen\"     \"100.0\"                 // Mana regeneration rate.\n\n    \"VisionDaytimeRange\"    \"1800\"                  // Range of vision at night time.\n    \"VisionNighttimeRange\"    \"1800\"                  // Range of vision at night time.\n  }\n}\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/npc/npc_items_custom.txt",
    "content": "\"DOTAAbilities\"\n{\n  \"item_containers_lua_pack\"\n  {\n    // General\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_NO_TARGET\"\n    \"ID\"              \"1835\"\n    \"BaseClass\"         \"item_lua\"\n    \"AbilityTextureName\"        \"item_present\"\n    \"ScriptFile\"          \"libraries/abilities/item_containers_lua_pack.lua\"\n    \"MaxLevel\"            \"1\"\n\n    \"ItemCost\"            \"0\"\n    \"ItemPurchasable\"          \"0\"\n    \"ItemKillable\"             \"0\"\n    \"ItemDroppable\"            \"0\"\n    \"ItemSellable\"             \"0\"\n    \"ItemCanChangeContainer\"   \"0\"\n    \n    // Casting\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityCastRange\"        \"0\"\n\n    // Time   \n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityCooldown\"       \"0\"\n\n    // Cost\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityManaCost\"       \"0 0 0 0\"\n  }\n\n  //Shield\n  \"item_example_item\"\n  {\n    \"ID\"              \"1836\"\n    \"AbilityBehavior\"       \"DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK\"\n    \"AbilityUnitTargetTeam\"     \"DOTA_UNIT_TARGET_TEAM_ENEMY\"\n    \"AbilityUnitTargetType\"     \"DOTA_UNIT_TARGET_HERO\"\n    \"BaseClass\"           \"item_datadriven\"\n    \"AbilityCastAnimation\"      \"ACT_DOTA_DISABLED\"\n    \"AbilityTextureName\"      \"item_example_item\"\n\n    // Stats\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityCastRange\"        \"900\"\n    \"AbilityCastPoint\"        \"0.2\"\n    \"AbilityCooldown\"       \"13.0\"\n\n    // Item Info\n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilityManaCost\"       \"100\"\n    \"ItemCost\"            \"750\"\n    \"ItemInitialCharges\"      \"0\"\n    \"ItemDroppable\"         \"1\"\n    \"ItemSellable\"          \"1\"\n    \"ItemRequiresCharges\"     \"0\"\n    \"ItemShareability\"        \"ITEM_NOT_SHAREABLE\"\n    \"ItemDeclarations\"        \"DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_TO_SPECTATORS\"\n    \n    \"MaxUpgradeLevel\"       \"1\"\n    \"ItemBaseLevel\"         \"1\"\n    \n    \"precache\"\n    {\n      \"particle\"              \"particles/frostivus_herofx/queen_shadow_strike_linear_parent.vpcf\"\n      \"particle_folder\"       \"particles/test_particle\"\n      \"soundfile\"             \"soundevents/game_sounds_heroes/game_sounds_abaddon.vsndevts\"\n    }\n    \"OnSpellStart\"\n    {\n      \"LinearProjectile\"\n      {\n        \"EffectName\"      \"particles/frostivus_herofx/queen_shadow_strike_linear_parent.vpcf\"\n        \"MoveSpeed\"       \"%speed\"\n        //\"StartPosition\"   \"attach_attack1\"\n        \"FixedDistance\"   \"%distance\"\n        \"StartRadius\"     \"%radius\"\n        \"EndRadius\"       \"%radius\"\n        \"TargetTeams\"     \"DOTA_UNIT_TARGET_TEAM_ENEMY\"\n        \"TargetTypes\"     \"DOTA_UNIT_TARGET_HERO\"\n        \"TargetFlags\"     \"DOTA_UNIT_TARGET_FLAG_NONE\"\n        \"HasFrontalCone\"    \"0\"\n        \"ProvidesVision\"    \"0\"\n        \"VisionRadius\"      \"0\"\n      }\n      \"FireSound\"\n      {\n        \"EffectName\"    \"Hero_Abaddon.AphoticShield.Cast\"\n        \"Target\"        \"CASTER\"\n      }\n      \"ApplyModifier\"\n      {\n        \"Target\"      \"CASTER\"\n        \"ModifierName\"  \"modifier_item_shield\"\n      }\n    }\n    \n    \"OnProjectileHitUnit\"\n    {     \n      \"DeleteOnHit\" \"0\"\n      \"Damage\"\n      {\n        \"Target\"      \"TARGET\"\n        \"Type\"    \"DAMAGE_TYPE_PURE\"\n        \"Damage\"  \"%damage\"\n      }\n    }\n    \n    \"Modifiers\"\n    {\n      \"modifier_item_shield\"\n      {\n        \"EffectName\"    \"particles/test_particle/damage_immunity.vpcf\"\n        \"EffectAttachType\"  \"follow_origin\"\n        \"Target\"      \"CASTER\"\n        \n        \"Duration\" \"%duration\"\n        \"TextureName\" \"abaddon_aphotic_shield\"\n        \"Properties\"\n        {\n          \"MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE\"    \"%damage_reduction\"\n        }\n      }\n\n      \"modifier_item_ex\"\n      {\n        \"Passive\" \"1\"\n        \"Attributes\"  \"MODIFIER_ATTRIBUTE_MULTIPLE\"\n\n        \"Properties\"\n        {\n          \"MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE\"    \"33\"\n        }\n      }\n\n      \"modifier_item_ex2\"\n      {\n        \"Passive\" \"1\"\n\n        \"Properties\"\n        {\n          \"MODIFIER_PROPERTY_STATS_AGILITY_BONUS\"    \"3\"\n        }\n      }\n    }\n    \n    // Special  \n    //-------------------------------------------------------------------------------------------------------------\n    \"AbilitySpecial\"\n    {\n      \"01\"\n      {\n        \"var_type\"        \"FIELD_FLOAT\"\n        \"duration\"        \"4.0\"\n      }\n      \n      \"02\"\n      {\n        \"var_type\"        \"FIELD_INTEGER\"\n        \"damage_reduction\"    \"-50\"\n      }\n      \"03\"\n      {\n        \"var_type\"        \"FIELD_INTEGER\"\n        \"radius\"          \"150\"\n      }\n      \"04\"\n      {\n        \"var_type\"        \"FIELD_INTEGER\"\n        \"speed\"           \"1800\"\n      }\n      \"05\"\n      {\n        \"var_type\"        \"FIELD_FLOAT\"\n        \"distance\"        \"900\"\n      }\n      \"06\"\n      {\n        \"var_type\"        \"FIELD_INTEGER\"\n        \"damage\"          \"125\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "game/dota_addons/barebones/scripts/npc/npc_units_custom.txt",
    "content": "  // Dota Units File\n\"DOTAUnits\"\n{\n  \"Version\" \"1\"\n  \n  \"npc_dummy_unit\"\n  {\n    // General\n    //\n    \"BaseClass\"         \"npc_dota_base_additive\"  // Class of entity of link to.\n    \"Model\"           \"models/development/invisiblebox.vmdl\"  // Model.\n    \"SoundSet\"          \"Creep_Good_Range\"          // Name of sound set.\n    \"Level\"           \"0\"\n    \"UnitLabel\"         \"healing_ward\"\n    \n    // Abilities\n    //----------------------------------------------------------------\n    \n    \"Ability1\"          \"dummy_unit\"     // Ability 1.\n    \"Ability2\"          \"\"      // Ability 2.\n    \"Ability3\"          \"\"      // Ability 3.\n    \"Ability4\"          \"\"      // Ability 4.\n    \"Ability5\"          \"\"      // Ability 5.\n    \"Ability6\"          \"\"      // Ability 6 - Extra.\n    \"Ability7\"          \"\"      // Ability 7 - Extra.\n    \"Ability8\"          \"\"      // Ability 8 - Extra.\n\n    // Armor\n    //----------------------------------------------------------------\n    \"ArmorPhysical\"       \"0\"     // Physical protection.\n    \"MagicalResistance\"       \"0\"     // Magical protection.\n\n    // Attack\n    //----------------------------------------------------------------\n    \"AttackCapabilities\"    \"DOTA_UNIT_CAP_NO_ATTACK\"     // Type of attack - melee, ranged, etc.\n    \"AttackDamageMin\"     \"0\"     // Damage range min.\n    \"AttackDamageMax\"     \"0\"     // Damage range max.\n    \"AttackDamageType\"      \"DAMAGE_TYPE_ArmorPhysical\"\n    \"AttackRate\"        \"1\"     // Speed of attack.\n    \"AttackAnimationPoint\"    \"0.5\"   // Normalized time in animation cycle to attack.\n    \"AttackAcquisitionRange\"  \"800\"   // Range within a target can be acquired.\n    \"AttackRange\"       \"500\"   // Range within a target can be attacked.\n    \"ProjectileModel\"     \"\" // Particle system model for projectile.\n    \"ProjectileSpeed\"     \"900\"   // Speed of projectile.\n\n    // Attributes\n    //----------------------------------------------------------------\n    \"AttributePrimary\"      \"DOTA_ATTRIBUTE_STRENGTH\"\n    \"AttributeBaseStrength\"   \"0\"     // Base strength\n    \"AttributeStrengthGain\"   \"0\"     // Strength bonus per level.\n    \"AttributeBaseIntelligence\" \"0\"     // Base intelligence\n    \"AttributeIntelligenceGain\" \"0\"     // Intelligence bonus per level.\n    \"AttributeBaseAgility\"    \"0\"     // Base agility\n    \"AttributeAgilityGain\"    \"0\"     // Agility bonus per level.\n\n    // Bounty\n    //----------------------------------------------------------------\n    \"BountyXP\"          \"0\"     // Experience earn.\n    \"BountyGoldMin\"       \"0\"     // Gold earned min.\n    \"BountyGoldMax\"       \"0\"     // Gold earned max.\n\n    // Bounds\n    //----------------------------------------------------------------\n    \"BoundsHullName\"      \"DOTA_HULL_SIZE_SMALL\"      // Hull type used for navigation/locomotion.\n\n    // Movement\n    //----------------------------------------------------------------\n    \"MovementCapabilities\"    \"DOTA_UNIT_CAP_MOVE_GROUND\"     // Type of locomotion - ground, air\n    \"MovementSpeed\"       \"450\"   // Speed\n    \"MovementTurnRate\"      \"1.0\"   // Turning rate.\n    \"FollowRange\"       \"250\"   // Distance to keep when following\n\n    // Status\n    //----------------------------------------------------------------\n    \"StatusHealth\"        \"1\"     // Base health.\n    \"StatusHealthRegen\"     \"0\"     // Health regeneration rate.\n    \"StatusMana\"        \"0\"     // Base mana.\n    \"StatusManaRegen\"     \"0\"     // Mana regeneration rate.\n\n    // Team\n    //----------------------------------------------------------------\n    \"TeamName\"          \"DOTA_TEAM_GOODGUYS\"      // Team name.\n    \"CombatClassAttack\"     \"DOTA_COMBAT_CLASS_ATTACK_PIERCE\"\n    \"CombatClassDefend\"     \"DOTA_COMBAT_CLASS_DEFEND_SOFT\"\n    \"UnitRelationshipClass\"   \"DOTA_NPC_UNIT_RELATIONSHIP_TYPE_WARD\"\n    \n    // Vision\n    //----------------------------------------------------------------\n    \"VisionDaytimeRange\"    \"0\"   // Range of vision during day light.\n    \"VisionNighttimeRange\"    \"0\"   // Range of vision at night time.\n\n    // Bots\n    //----------------------------------------------------------------\n    \"AttackDesire\"        \"1.5\"   // How much bots want to attack them vs other non-hero things\n  } \n}"
  },
  {
    "path": "game/dota_addons/barebones/scripts/shops.txt",
    "content": "\"dota_shops\"\n{\n  \"consumables\"\n  {\n    \"item\"    \"item_clarity\"\n    \"item\"    \"item_enchanted_mango\"\n    \"item\"    \"item_tango\"\n    \"item\"    \"item_flask\"\n    \"item\"    \"item_smoke_of_deceit\"\n    //\"item\"    \"item_blinders\"\n    \"item\"    \"item_tpscroll\"\n    //\"item\"    \"item_red_mist\"\n    //\"item\"    \"item_bounty_pact\"\n    \"item\"    \"item_dust\"\n    \"item\"    \"item_courier\"\n    \"item\"    \"item_flying_courier\"\n    \"item\"    \"item_ward_observer\"\n    \"item\"    \"item_ward_sentry\"\n    \"item\"    \"item_bottle\"             \n  }\n\n  \"attributes\"\n  {\n    \"item\"    \"item_branches\"\n\n    \"item\"    \"item_gauntlets\"\n    \"item\"    \"item_slippers\"\n    \"item\"    \"item_mantle\" \n\n    \"item\"    \"item_circlet\"\n\n    \"item\"    \"item_belt_of_strength\"\n    \"item\"    \"item_boots_of_elves\"\n    \"item\"    \"item_robe\"\n\n    \"item\"    \"item_ogre_axe\"\n    \"item\"    \"item_blade_of_alacrity\"\n    \"item\"    \"item_staff_of_wizardry\"\n  }\n\n  \"weapons_armor\"\n  {\n    \"item\"    \"item_ring_of_protection\"\n    \"item\"    \"item_quelling_blade\"\n    \"item\"    \"item_orb_of_venom\"\n    \"item\"    \"item_stout_shield\"\n    \"item\"    \"item_blades_of_attack\"\n    \"item\"    \"item_chainmail\"\n    \"item\"    \"item_helm_of_iron_will\"\n    \"item\"    \"item_broadsword\"\n    \"item\"    \"item_quarterstaff\"\n    \"item\"    \"item_claymore\"       \n    \"item\"    \"item_javelin\"\n    \"item\"    \"item_mithril_hammer\" \n  }\n      \n  \"misc\"\n  {\n    \"item\"    \"item_magic_stick\"\n    \"item\"    \"item_sobi_mask\"\n    \"item\"    \"item_ring_of_regen\"\n    //\"item\"    \"item_ward_dispenser\"\n    \"item\"    \"item_boots\"\n    //\"item\"    \"item_whip\"\n    //\"item\"    \"item_telescope\"\n    \"item\"    \"item_gloves\"\n    \"item\"    \"item_cloak\"\n    \"item\"    \"item_gem\"\n    \"item\"    \"item_lifesteal\"\n    \"item\"    \"item_ghost\"\n    \"item\"    \"item_blink\"    \n    \"item\"    \"item_shadow_amulet\"  \n    \"item\"    \"item_ring_of_health\"\n    \"item\"    \"item_void_stone\"     \n  } \n  \n  // Level 1 - Green Recipes\n  \"basics\"\n  {\n    \"item\"    \"item_wraith_band\"\n    \"item\"    \"item_null_talisman\"\n    \"item\"    \"item_magic_wand\"\n    \"item\"    \"item_bracer\"\n    \"item\"    \"item_poor_mans_shield\"\n    \"item\"    \"item_soul_ring\"\n    \"item\"    \"item_phase_boots\"\n    \"item\"    \"item_power_treads\"\n    \"item\"    \"item_oblivion_staff\"\n    \"item\"    \"item_pers\"\n    \"item\"    \"item_hand_of_midas\"\n    \"item\"    \"item_travel_boots\"   \n    \"item\"    \"item_moon_shard\"       \n  }\n\n  // Level 2 - Blue Recipes\n  \"support\"\n  {\n    \"item\"    \"item_ring_of_basilius\"\n    \"item\"    \"item_headdress\"\n    \"item\"    \"item_buckler\"\n    \"item\"    \"item_urn_of_shadows\"\n    //\"item\"    \"item_natures_mend\"\n    \"item\"    \"item_ring_of_aquila\" \n    //\"item\"    \"item_iron_talon\" \n    \"item\"    \"item_tranquil_boots\"\n    //\"item\"    \"item_nightfall_striders\"\n    \"item\"    \"item_guardian_greaves\"\n    \"item\"    \"item_medallion_of_courage\"\n    \"item\"    \"item_arcane_boots\"\n    //\"item\"    \"item_arcane_boots2\"\n    \"item\"    \"item_ancient_janggo\"\n    \"item\"    \"item_vladmir\"  \n    \"item\"    \"item_mekansm\"          \n    \"item\"    \"item_pipe\"     \n  }\n        \n  \"magics\"      \n  {\n    \"item\"    \"item_force_staff\"\n    \"item\"    \"item_necronomicon\"\n    \"item\"    \"item_cyclone\"\n    \"item\"    \"item_dagon\"\n    \"item\"    \"item_veil_of_discord\"    \n    \"item\"    \"item_rod_of_atos\"\n    \"item\"    \"item_ultimate_scepter\"\n    \"item\"    \"item_octarine_core\"\n    \"item\"    \"item_solar_crest\"\n    //\"item\"    \"item_rune_breaker\"\n    //\"item\"    \"item_aether_staff\"\n    \"item\"    \"item_orchid\" \n    \"item\"    \"item_refresher\"\n    \"item\"    \"item_sheepstick\"\n    \"item\"    \"item_glimmer_cape\"\n  }\n    \n  // Level 3 - Purple Recipes \n  \"defense\"\n  {\n    \"item\"    \"item_hood_of_defiance\"\n    \"item\"    \"item_blade_mail\"\n    \"item\"    \"item_vanguard\"\n    \"item\"    \"item_soul_booster\"\n    \"item\"    \"item_black_king_bar\"\n    \"item\"    \"item_shivas_guard\"\n    \"item\"    \"item_manta\"\n    \"item\"    \"item_bloodstone\"\n    \"item\"    \"item_sphere\"\n    \"item\"    \"item_assault\"\n    \"item\"    \"item_heart\"  \n    \"item\"    \"item_crimson_guard\"    \n    \"item\"    \"item_lotus_orb\"    \n  }\n      \n  \"weapons\"\n  {\n    \"item\"    \"item_lesser_crit\"  \n    \"item\"    \"item_armlet\"\n    \"item\"    \"item_basher\" \n    \"item\"    \"item_invis_sword\"\n    \"item\"    \"item_bfury\"\n    \"item\"    \"item_silver_edge\"\n    \"item\"    \"item_ethereal_blade\"\n    \"item\"    \"item_radiance\"\n    \"item\"    \"item_monkey_king_bar\"  \n    \"item\"    \"item_greater_crit\"\n    \"item\"    \"item_butterfly\"\n    \"item\"    \"item_rapier\"\n    \"item\"    \"item_abyssal_blade\"  \n          \n          \n  }\n    \n  // Level 4 - Orange / Orb / Artifacts       \n  \"artifacts\"\n  { \n    //\"item\"    \"item_venomous_shield\"\n    \"item\"    \"item_helm_of_the_dominator\"\n    \"item\"    \"item_mask_of_madness\"\n    \"item\"    \"item_sange\"\n    \"item\"    \"item_yasha\"\n    \"item\"    \"item_maelstrom\"\n    \"item\"    \"item_diffusal_blade\"     \n    \"item\"    \"item_desolator\"\n    \"item\"    \"item_heavens_halberd\"\n    \"item\"    \"item_sange_and_yasha\"\n    \"item\"    \"item_mjollnir\"\n    \"item\"    \"item_skadi\" \n    \"item\"    \"item_satanic\"    \n  }\n\n  \"sideshop1\"\n  {\n    \"item\"    \"item_tpscroll\"\n    \"item\"    \"item_magic_stick\"\n    \"item\"    \"item_sobi_mask\"\n    \"item\"    \"item_ring_of_regen\"\n    \"item\"    \"item_orb_of_venom\"\n    \"item\"    \"item_boots\"\n    \"item\"    \"item_cloak\"\n    \"item\"    \"item_ring_of_health\"\n    \"item\"    \"item_void_stone\"     \n    \"item\"    \"item_lifesteal\"\n    \"item\"    \"item_helm_of_iron_will\"\n    \"item\"    \"item_energy_booster\"\n    \"item\"    \"item_broadsword\"\n  }\n\n  \"sideshop2\"\n  {\n    \"item\"    \"item_slippers\"\n    \"item\"    \"item_mantle\"\n    \"item\"    \"item_quelling_blade\"\n    \"item\"    \"item_stout_shield\"\n    \"item\"    \"item_boots_of_elves\"\n    \"item\"    \"item_belt_of_strength\"\n    \"item\"    \"item_robe\"\n    \"item\"    \"item_blades_of_attack\"\n    \"item\"    \"item_gloves\"\n    \"item\"    \"item_chainmail\"\n    \"item\"    \"item_quarterstaff\"\n    \"item\"    \"item_ultimate_orb\"\n    \"item\"    \"item_blink\"\n  }\n  \n  \"secretshop\"\n  {             \n    \"item\"    \"item_energy_booster\"\n    \"item\"    \"item_vitality_booster\"\n    \"item\"    \"item_point_booster\"\n    \"item\"    \"item_platemail\"\n    \"item\"    \"item_talisman_of_evasion\"\n    \"item\"    \"item_hyperstone\"\n    \"item\"    \"item_ultimate_orb\"\n    \"item\"    \"item_demon_edge\"\n    \"item\"    \"item_mystic_staff\"\n    \"item\"    \"item_reaver\"\n    \"item\"    \"item_eagle\"\n    \"item\"    \"item_relic\"\n  } \n}"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/addon_game_mode.lua",
    "content": "-- This is the entry-point to your game mode and should be used primarily to precache models/particles/sounds/etc\n\nrequire('internal/util')\nrequire('gamemode')\n\nfunction Precache( context )\n--[[\n  This function is used to precache resources/units/items/abilities that will be needed\n  for sure in your game and that will not be precached by hero selection.  When a hero\n  is selected from the hero selection screen, the game will precache that hero's assets,\n  any equipped cosmetics, and perform the data-driven precaching defined in that hero's\n  precache{} block, as well as the precache{} block for any equipped abilities.\n\n  See GameMode:PostLoadPrecache() in gamemode.lua for more information\n  ]]\n\n  DebugPrint(\"[BAREBONES] Performing pre-load precache\")\n\n  -- Particles can be precached individually or by folder\n  -- It it likely that precaching a single particle system will precache all of its children, but this may not be guaranteed\n  PrecacheResource(\"particle\", \"particles/econ/generic/generic_aoe_explosion_sphere_1/generic_aoe_explosion_sphere_1.vpcf\", context)\n  PrecacheResource(\"particle_folder\", \"particles/test_particle\", context)\n\n  -- Models can also be precached by folder or individually\n  -- PrecacheModel should generally used over PrecacheResource for individual models\n  PrecacheResource(\"model_folder\", \"particles/heroes/antimage\", context)\n  PrecacheResource(\"model\", \"particles/heroes/viper/viper.vmdl\", context)\n  PrecacheModel(\"models/heroes/viper/viper.vmdl\", context)\n  --PrecacheModel(\"models/props_gameplay/treasure_chest001.vmdl\", context)\n  --PrecacheModel(\"models/props_debris/merchant_debris_chest001.vmdl\", context)\n  --PrecacheModel(\"models/props_debris/merchant_debris_chest002.vmdl\", context)\n\n  -- Sounds can precached here like anything else\n  PrecacheResource(\"soundfile\", \"soundevents/game_sounds_heroes/game_sounds_gyrocopter.vsndevts\", context)\n\n  -- Entire items can be precached by name\n  -- Abilities can also be precached in this way despite the name\n  PrecacheItemByNameSync(\"example_ability\", context)\n  PrecacheItemByNameSync(\"item_example_item\", context)\n\n  -- Entire heroes (sound effects/voice/models/particles) can be precached with PrecacheUnitByNameSync\n  -- Custom units from npc_units_custom.txt can also have all of their abilities and precache{} blocks precached in this way\n  PrecacheUnitByNameSync(\"npc_dota_hero_ancient_apparition\", context)\n  PrecacheUnitByNameSync(\"npc_dota_hero_enigma\", context)\nend\n\n-- Create the game mode when we activate\nfunction Activate()\n  GameRules.GameMode = GameMode()\n  GameRules.GameMode:_InitGameMode()\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/animation_example/heroes/axe/axe.lua",
    "content": "--============ Copyright (c) Valve Corporation, All rights reserved. ==========\n--\n-- source1import auto-generated animation script\n-- local changes will be overwritten if source1import if run again on this asset\n--\n-- mdl: models\\heroes\\axe\\axe.mdl\n--\n--=============================================================================\n\n\n--To Activate these scripted animation overrides, rename the \"animation_example\" folder to \"animation\"\n\nmodel:CreateWeightlist( \n  \"upperBody\",\n  {\n    { \"thigh_L\", 0 },\n    { \"thigh_R\", 0 },\n    { \"root\", 0.25 },\n    { \"spine1\", 1 }\n  }\n)\n\n\n--This is an example of a script-added weight list which effectively disables an animation from playing on any bones besides the right-arm\nmodel:CreateWeightlist( \n  \"testWeights\",\n  {\n    { \"thigh_L\", 0 },\n    { \"thigh_R\", 0 },\n    { \"root\", 0 },\n    { \"spine1\", 0 },\n    { \"spine2\", 0 },\n    { \"spine3\", 0 },\n    { \"neck1\", 0 },\n    { \"clavicle_L\", 0 },\n    { \"clavicle_R\", 0 },\n    { \"bicep_R\", 1 }\n  }\n)\n\n--This is an example of \"overriding\" the default ACT_DOTA_SPAWN activity animation with a different animation (\"death\") by heavily weighting this\n--script animation so that it is played 100000 out of every 100001 spawn activity\nmodel:CreateSequence(\n  {\n    name = \"new_spawn\",\n    sequences = {\n      { \"death\" }\n    },\n    weightlist = \"upperBody\",\n    activities = {\n      { name = \"ACT_DOTA_SPAWN\", weight = 100000 }\n    }\n  }\n)\n\n--This is an example of a scripted animation using the \"@attack\" animation that will only play on the right arm, as well as setting the new animation\n--to the ACT_DOTA_ATTACK2 activity, which is unused on axe's model (currently).\n--axeUnit:StartGesture(ACT_DOTA_ATTACK2) will play this single-arm scripted animation.\nmodel:CreateSequence(\n  {\n    name = \"test_weight\",\n    sequences = {\n      { \"@attack\" }\n    },\n    weightlist = \"testWeights\",\n    activities = {\n      { name = \"ACT_DOTA_ATTACK2\", weight = 1 }\n    }\n  }\n)\n\nmodel:CreateSequence(\n  {\n    name = \"berserkers_call\",\n    sequences = {\n      { \"@berserkers_call\" }\n    },\n    weightlist = \"upperBody\",\n    activities = {\n      { name = \"ACT_DOTA_OVERRIDE_ABILITY_1\", weight = 1 }\n    }\n  }\n)\n\n\nmodel:CreateSequence(\n  {\n    name = \"rampant_berserkers_call\",\n    sequences = {\n      { \"@rampant_berserkers_call\" }\n    },\n    weightlist = \"upperBody\",\n    activities = {\n      { name = \"ACT_DOTA_OVERRIDE_ABILITY_1\", weight = 1 },\n      { name = \"rampant\", weight = 1 }\n    }\n  }\n)\n\n\nmodel:CreateSequence(\n  {\n    name = \"battle_hunger\",\n    sequences = {\n      { \"@battle_hunger\" }\n    },\n    weightlist = \"upperBody\",\n    activities = {\n      { name = \"ACT_DOTA_OVERRIDE_ABILITY_2\", weight = 1 }\n    }\n  }\n)\n\n\n\n\nmodel:CreateSequence(\n  {\n    name = \"counter_helix\",\n    framerangesequence = \"@counter_helix\",\n    cmds = {\n      { cmd = \"sequence\", sequence = \"@counter_helix\", dst = 1 },\n      { cmd = \"fetchframe\", sequence = \"@counter_helix\", frame = 0, dst = 2 },\n      { cmd = \"subtract\", dst = 1, src = 2 },\n      { cmd = \"add\", dst = 0, src = 1 }\n    },\n    activities = {\n      { name = \"ACT_DOTA_CAST_ABILITY_3\", weight = 1 }\n    }\n  }\n)\n\n\nmodel:CreateSequence(\n  {\n    name = \"counter_helix_blood_chaser\",\n    framerangesequence = \"@counter_helix_blood_chaser\",\n    cmds = {\n      { cmd = \"sequence\", sequence = \"@counter_helix_blood_chaser\", dst = 1 },\n      { cmd = \"fetchframe\", sequence = \"@counter_helix_blood_chaser\", frame = 0, dst = 2 },\n      { cmd = \"subtract\", dst = 1, src = 2 },\n      { cmd = \"add\", dst = 0, src = 1 }\n    },\n    activities = {\n      { name = \"ACT_DOTA_CAST_ABILITY_3\", weight = 1 },\n      { name = \"blood_chaser\", weight = 1 }\n    }\n  }\n)\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/animation_example/heroes/legion_commander/legion_commander.lua",
    "content": "--============ Copyright (c) Valve Corporation, All rights reserved. ==========\n--\n-- source1import auto-generated animation script\n-- local changes will be overwritten if source1import if run again on this asset\n--\n-- mdl: models\\heroes\\legion_commander\\legion_commander.mdl\n--\n--=============================================================================\n\n\n\n\n\n-- AsLookLayer\nmodel:CreateSequence(\n\t{\n\t\tname = \"@turns_lookFrame_0\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@turns\", frame = 0, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"@turns_lookFrame_1\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@turns\", frame = 1, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"@turns_lookFrame_2\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@turns\", frame = 2, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"turns\",\n\t\tdelta = true,\n\t\tposeParamX = model:CreatePoseParameter( \"turn\", -1, 1, 0, false ),\n\t\tsequences = {\n\t\t\t{ \"@turns_lookFrame_0\", \"@turns_lookFrame_1\", \"@turns_lookFrame_2\" }\n\t\t}\n\t}\n)\n\n-- AsTurningRun\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"legion_commander_run\",\n\t\tsequences = {\n\t\t\t{ \"@legion_commander_run\" }\n\t\t},\n\t\taddlayer = {\n\t\t\t\"turns\"\n\t\t},\n\t\tactivities = {\n\t\t\t{ name = \"ACT_DOTA_RUN\", weight = 1 }\n\t\t}\n\t}\n)\n\n\n\n-- AsLookLayer\nmodel:CreateSequence(\n\t{\n\t\tname = \"@run_haste_turns_lookFrame_0\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_haste_turns\", frame = 0, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_haste_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"@run_haste_turns_lookFrame_1\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_haste_turns\", frame = 1, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_haste_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"@run_haste_turns_lookFrame_2\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_haste_turns\", frame = 2, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_haste_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"run_haste_turns\",\n\t\tdelta = true,\n\t\tposeParamX = model:CreatePoseParameter( \"turn\", -1, 1, 0, false ),\n\t\tsequences = {\n\t\t\t{ \"@run_haste_turns_lookFrame_0\", \"@run_haste_turns_lookFrame_1\", \"@run_haste_turns_lookFrame_2\" }\n\t\t}\n\t}\n)\n\n-- AsTurningRun\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"legion_commander_run_haste\",\n\t\tsequences = {\n\t\t\t{ \"@legion_commander_run_haste\" }\n\t\t},\n\t\taddlayer = {\n\t\t\t\"run_haste_turns\"\n\t\t},\n\t\tactivities = {\n\t\t\t{ name = \"ACT_DOTA_RUN\", weight = 1 },\n\t\t\t{ name = \"haste\", weight = 1 }\n\t\t}\n\t}\n)\n\n\n-- AsTurningRun\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"legion_commander_run_overwhelmingodds\",\n\t\tsequences = {\n\t\t\t{ \"@legion_commander_run_overwhelmingodds\" }\n\t\t},\n\t\taddlayer = {\n\t\t\t\"run_haste_turns\"\n\t\t},\n\t\tactivities = {\n\t\t\t{ name = \"ACT_DOTA_RUN\", weight = 1 },\n\t\t\t{ name = \"overwhelmingodds\", weight = 1 }\n\t\t}\n\t}\n)\n\n\n\n-- AsLookLayer\nmodel:CreateSequence(\n\t{\n\t\tname = \"@run_injured_turns_lookFrame_0\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_injured_turns\", frame = 0, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_injured_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"@run_injured_turns_lookFrame_1\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_injured_turns\", frame = 1, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_injured_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"@run_injured_turns_lookFrame_2\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_injured_turns\", frame = 2, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@run_injured_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"run_injured_turns\",\n\t\tdelta = true,\n\t\tposeParamX = model:CreatePoseParameter( \"turn\", -1, 1, 0, false ),\n\t\tsequences = {\n\t\t\t{ \"@run_injured_turns_lookFrame_0\", \"@run_injured_turns_lookFrame_1\", \"@run_injured_turns_lookFrame_2\" }\n\t\t}\n\t}\n)\n\n-- AsTurningRun\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"legion_commander_run_injured\",\n\t\tsequences = {\n\t\t\t{ \"@legion_commander_run_injured\" }\n\t\t},\n\t\taddlayer = {\n\t\t\t\"run_injured_turns\"\n\t\t},\n\t\tactivities = {\n\t\t\t{ name = \"ACT_DOTA_RUN\", weight = 1 },\n\t\t\t{ name = \"injured\", weight = 1 }\n\t\t}\n\t}\n)\n\n\n-- AsTurningRun\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"dualwield_legion_commander_run\",\n\t\tsequences = {\n\t\t\t{ \"@dualwield_legion_commander_run\" }\n\t\t},\n\t\taddlayer = {\n\t\t\t\"turns\"\n\t\t},\n\t\tactivities = {\n\t\t\t{ name = \"ACT_DOTA_RUN\", weight = 1 },\n\t\t\t{ name = \"dualwield\", weight = 1 }\n\t\t}\n\t}\n)\n\n\n\n-- AsLookLayer\nmodel:CreateSequence(\n\t{\n\t\tname = \"@dualwield_run_haste_turns_lookFrame_0\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_haste_turns\", frame = 0, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_haste_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"@dualwield_run_haste_turns_lookFrame_1\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_haste_turns\", frame = 1, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_haste_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"@dualwield_run_haste_turns_lookFrame_2\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_haste_turns\", frame = 2, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_haste_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"dualwield_run_haste_turns\",\n\t\tdelta = true,\n\t\tposeParamX = model:CreatePoseParameter( \"turn\", -1, 1, 0, false ),\n\t\tsequences = {\n\t\t\t{ \"@dualwield_run_haste_turns_lookFrame_0\", \"@dualwield_run_haste_turns_lookFrame_1\", \"@dualwield_run_haste_turns_lookFrame_2\" }\n\t\t}\n\t}\n)\n\n-- AsTurningRun\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"dualwield_legion_commander_run_haste\",\n\t\tsequences = {\n\t\t\t{ \"@dualwield_legion_commander_run_haste\" }\n\t\t},\n\t\taddlayer = {\n\t\t\t\"dualwield_run_haste_turns\"\n\t\t},\n\t\tactivities = {\n\t\t\t{ name = \"ACT_DOTA_RUN\", weight = 1 },\n\t\t\t{ name = \"dualwield\", weight = 1 },\n\t\t\t{ name = \"haste\", weight = 1 }\n\t\t}\n\t}\n)\n\n\n-- AsTurningRun\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"dualwield_legion_commander_run_overwhelmingodds\",\n\t\tsequences = {\n\t\t\t{ \"@dualwield_legion_commander_run_overwhelmingodds\" }\n\t\t},\n\t\taddlayer = {\n\t\t\t\"dualwield_run_haste_turns\"\n\t\t},\n\t\tactivities = {\n\t\t\t{ name = \"ACT_DOTA_RUN\", weight = 1 },\n\t\t\t{ name = \"dualwield\", weight = 1 },\n\t\t\t{ name = \"overwhelmingodds\", weight = 1 }\n\t\t}\n\t}\n)\n\n\n\n-- AsLookLayer\nmodel:CreateSequence(\n\t{\n\t\tname = \"@dualwield_run_injured_turns_lookFrame_0\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_injured_turns\", frame = 0, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_injured_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"@dualwield_run_injured_turns_lookFrame_1\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_injured_turns\", frame = 1, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_injured_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"@dualwield_run_injured_turns_lookFrame_2\",\n\t\tsnap = true,\n\t\tdelta = true,\n\t\thidden = true,\n\t\tcmds = {\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_injured_turns\", frame = 2, dst = 0 },\n\t\t\t{ cmd = \"fetchframe\", sequence = \"@dualwield_run_injured_turns\", frame = 1, dst = 1 },\n\t\t\t{ cmd = \"subtract\", dst = 0, src = 1 }\n\t\t}\n\t}\n)\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"dualwield_run_injured_turns\",\n\t\tdelta = true,\n\t\tposeParamX = model:CreatePoseParameter( \"turn\", -1, 1, 0, false ),\n\t\tsequences = {\n\t\t\t{ \"@dualwield_run_injured_turns_lookFrame_0\", \"@dualwield_run_injured_turns_lookFrame_1\", \"@dualwield_run_injured_turns_lookFrame_2\" }\n\t\t}\n\t}\n)\n\n-- AsTurningRun\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"dualwield_legion_commander_run_injured\",\n\t\tsequences = {\n\t\t\t{ \"@dualwield_legion_commander_run_injured\" }\n\t\t},\n\t\taddlayer = {\n\t\t\t\"dualwield_run_injured_turns\"\n\t\t},\n\t\tactivities = {\n\t\t\t{ name = \"ACT_DOTA_RUN\", weight = 1 },\n\t\t\t{ name = \"dualwield\", weight = 1 },\n\t\t\t{ name = \"injured\", weight = 1 }\n\t\t}\n\t}\n)\n\n\n\n\nmodel:CreateSequence(\n\t{\n\t\tname = \"new_dualweild_moc\",\n\t\tsequences = {\n\t\t\t{ \"dualwield_legion_commander_momentofcourage\" }\n\t\t},\n\t\t--addlayer = {\n\t\t\t--\"turns\"\n\t\t--},\n\t\tactivities = {\n\t\t\t{ name = \"ACT_DOTA_CAST_ABILITY_3\", weight = 1 },\n\t\t\t{ name = \"dualwield\", weight = 1 }\n\t\t}\n\t}\n)"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/events.lua",
    "content": "-- This file contains all barebones-registered events and has already set up the passed-in parameters for your use.\n\n-- Cleanup a player when they leave\nfunction GameMode:OnDisconnect(keys)\n  DebugPrint('[BAREBONES] Player Disconnected ' .. tostring(keys.userid))\n  DebugPrintTable(keys)\n\n  local name = keys.name\n  local networkid = keys.networkid\n  local reason = keys.reason\n  local userid = keys.userid\n\nend\n-- The overall game state has changed\nfunction GameMode:OnGameRulesStateChange(keys)\n  DebugPrint(\"[BAREBONES] GameRules State Changed\")\n  DebugPrintTable(keys)\n\n  local newState = GameRules:State_Get()\nend\n\n-- An NPC has spawned somewhere in game.  This includes heroes\nfunction GameMode:OnNPCSpawned(keys)\n  DebugPrint(\"[BAREBONES] NPC Spawned\")\n  DebugPrintTable(keys)\n\n  local npc = EntIndexToHScript(keys.entindex)\nend\n\n-- An entity somewhere has been hurt.  This event fires very often with many units so don't do too many expensive\n-- operations here\nfunction GameMode:OnEntityHurt(keys)\n  --DebugPrint(\"[BAREBONES] Entity Hurt\")\n  --DebugPrintTable(keys)\n\n  local damagebits = keys.damagebits -- This might always be 0 and therefore useless\n  if keys.entindex_attacker ~= nil and keys.entindex_killed ~= nil then\n    local entCause = EntIndexToHScript(keys.entindex_attacker)\n    local entVictim = EntIndexToHScript(keys.entindex_killed)\n\n    -- The ability/item used to damage, or nil if not damaged by an item/ability\n    local damagingAbility = nil\n\n    if keys.entindex_inflictor ~= nil then\n      damagingAbility = EntIndexToHScript( keys.entindex_inflictor )\n    end\n  end\nend\n\n-- An item was picked up off the ground\nfunction GameMode:OnItemPickedUp(keys)\n  DebugPrint( '[BAREBONES] OnItemPickedUp' )\n  DebugPrintTable(keys)\n\n  local unitEntity = nil\n  if keys.UnitEntitIndex then\n    unitEntity = EntIndexToHScript(keys.UnitEntitIndex)\n  elseif keys.HeroEntityIndex then\n    unitEntity = EntIndexToHScript(keys.HeroEntityIndex)\n  end\n\n  local itemEntity = EntIndexToHScript(keys.ItemEntityIndex)\n  local player = PlayerResource:GetPlayer(keys.PlayerID)\n  local itemname = keys.itemname\nend\n\n-- A player has reconnected to the game.  This function can be used to repaint Player-based particles or change\n-- state as necessary\nfunction GameMode:OnPlayerReconnect(keys)\n  DebugPrint( '[BAREBONES] OnPlayerReconnect' )\n  DebugPrintTable(keys) \nend\n\n-- An item was purchased by a player\nfunction GameMode:OnItemPurchased( keys )\n  DebugPrint( '[BAREBONES] OnItemPurchased' )\n  DebugPrintTable(keys)\n\n  -- The playerID of the hero who is buying something\n  local plyID = keys.PlayerID\n  if not plyID then return end\n\n  -- The name of the item purchased\n  local itemName = keys.itemname \n  \n  -- The cost of the item purchased\n  local itemcost = keys.itemcost\n  \nend\n\n-- An ability was used by a player\nfunction GameMode:OnAbilityUsed(keys)\n  DebugPrint('[BAREBONES] AbilityUsed')\n  DebugPrintTable(keys)\n\n  local player = PlayerResource:GetPlayer(keys.PlayerID)\n  local abilityname = keys.abilityname\nend\n\n-- A non-player entity (necro-book, chen creep, etc) used an ability\nfunction GameMode:OnNonPlayerUsedAbility(keys)\n  DebugPrint('[BAREBONES] OnNonPlayerUsedAbility')\n  DebugPrintTable(keys)\n\n  local abilityname=  keys.abilityname\nend\n\n-- A player changed their name\nfunction GameMode:OnPlayerChangedName(keys)\n  DebugPrint('[BAREBONES] OnPlayerChangedName')\n  DebugPrintTable(keys)\n\n  local newName = keys.newname\n  local oldName = keys.oldName\nend\n\n-- A player leveled up an ability\nfunction GameMode:OnPlayerLearnedAbility( keys)\n  DebugPrint('[BAREBONES] OnPlayerLearnedAbility')\n  DebugPrintTable(keys)\n\n  local player = EntIndexToHScript(keys.player)\n  local abilityname = keys.abilityname\nend\n\n-- A channelled ability finished by either completing or being interrupted\nfunction GameMode:OnAbilityChannelFinished(keys)\n  DebugPrint('[BAREBONES] OnAbilityChannelFinished')\n  DebugPrintTable(keys)\n\n  local abilityname = keys.abilityname\n  local interrupted = keys.interrupted == 1\nend\n\n-- A player leveled up\nfunction GameMode:OnPlayerLevelUp(keys)\n  DebugPrint('[BAREBONES] OnPlayerLevelUp')\n  DebugPrintTable(keys)\n\n  local player = EntIndexToHScript(keys.player)\n  local level = keys.level\nend\n\n-- A player last hit a creep, a tower, or a hero\nfunction GameMode:OnLastHit(keys)\n  DebugPrint('[BAREBONES] OnLastHit')\n  DebugPrintTable(keys)\n\n  local isFirstBlood = keys.FirstBlood == 1\n  local isHeroKill = keys.HeroKill == 1\n  local isTowerKill = keys.TowerKill == 1\n  local player = PlayerResource:GetPlayer(keys.PlayerID)\n  local killedEnt = EntIndexToHScript(keys.EntKilled)\nend\n\n-- A tree was cut down by tango, quelling blade, etc\nfunction GameMode:OnTreeCut(keys)\n  DebugPrint('[BAREBONES] OnTreeCut')\n  DebugPrintTable(keys)\n\n  local treeX = keys.tree_x\n  local treeY = keys.tree_y\nend\n\n-- A rune was activated by a player\nfunction GameMode:OnRuneActivated (keys)\n  DebugPrint('[BAREBONES] OnRuneActivated')\n  DebugPrintTable(keys)\n\n  local player = PlayerResource:GetPlayer(keys.PlayerID)\n  local rune = keys.rune\n\n  --[[ Rune Can be one of the following types\n  DOTA_RUNE_DOUBLEDAMAGE\n  DOTA_RUNE_HASTE\n  DOTA_RUNE_HAUNTED\n  DOTA_RUNE_ILLUSION\n  DOTA_RUNE_INVISIBILITY\n  DOTA_RUNE_BOUNTY\n  DOTA_RUNE_MYSTERY\n  DOTA_RUNE_RAPIER\n  DOTA_RUNE_REGENERATION\n  DOTA_RUNE_SPOOKY\n  DOTA_RUNE_TURBO\n  ]]\nend\n\n-- A player took damage from a tower\nfunction GameMode:OnPlayerTakeTowerDamage(keys)\n  DebugPrint('[BAREBONES] OnPlayerTakeTowerDamage')\n  DebugPrintTable(keys)\n\n  local player = PlayerResource:GetPlayer(keys.PlayerID)\n  local damage = keys.damage\nend\n\n-- A player picked a hero\nfunction GameMode:OnPlayerPickHero(keys)\n  DebugPrint('[BAREBONES] OnPlayerPickHero')\n  DebugPrintTable(keys)\n\n  local heroClass = keys.hero\n  local heroEntity = EntIndexToHScript(keys.heroindex)\n  local player = EntIndexToHScript(keys.player)\nend\n\n-- A player killed another player in a multi-team context\nfunction GameMode:OnTeamKillCredit(keys)\n  DebugPrint('[BAREBONES] OnTeamKillCredit')\n  DebugPrintTable(keys)\n\n  local killerPlayer = PlayerResource:GetPlayer(keys.killer_userid)\n  local victimPlayer = PlayerResource:GetPlayer(keys.victim_userid)\n  local numKills = keys.herokills\n  local killerTeamNumber = keys.teamnumber\nend\n\n-- An entity died\nfunction GameMode:OnEntityKilled( keys )\n  DebugPrint( '[BAREBONES] OnEntityKilled Called' )\n  DebugPrintTable( keys )\n  \n\n  -- The Unit that was Killed\n  local killedUnit = EntIndexToHScript( keys.entindex_killed )\n  -- The Killing entity\n  local killerEntity = nil\n\n  if keys.entindex_attacker ~= nil then\n    killerEntity = EntIndexToHScript( keys.entindex_attacker )\n  end\n\n  -- The ability/item used to kill, or nil if not killed by an item/ability\n  local killerAbility = nil\n\n  if keys.entindex_inflictor ~= nil then\n    killerAbility = EntIndexToHScript( keys.entindex_inflictor )\n  end\n\n  local damagebits = keys.damagebits -- This might always be 0 and therefore useless\n\n  -- Put code here to handle when an entity gets killed\nend\n\n\n\n-- This function is called 1 to 2 times as the player connects initially but before they \n-- have completely connected\nfunction GameMode:PlayerConnect(keys)\n  DebugPrint('[BAREBONES] PlayerConnect')\n  DebugPrintTable(keys)\nend\n\n-- This function is called once when the player fully connects and becomes \"Ready\" during Loading\nfunction GameMode:OnConnectFull(keys)\n  DebugPrint('[BAREBONES] OnConnectFull')\n  DebugPrintTable(keys)\n  \n  local entIndex = keys.index+1\n  -- The Player entity of the joining user\n  local ply = EntIndexToHScript(entIndex)\n  \n  -- The Player ID of the joining player\n  local playerID = ply:GetPlayerID()\nend\n\n-- This function is called whenever illusions are created and tells you which was/is the original entity\nfunction GameMode:OnIllusionsCreated(keys)\n  DebugPrint('[BAREBONES] OnIllusionsCreated')\n  DebugPrintTable(keys)\n\n  local originalEntity = EntIndexToHScript(keys.original_entindex)\nend\n\n-- This function is called whenever an item is combined to create a new item\nfunction GameMode:OnItemCombined(keys)\n  DebugPrint('[BAREBONES] OnItemCombined')\n  DebugPrintTable(keys)\n\n  -- The playerID of the hero who is buying something\n  local plyID = keys.PlayerID\n  if not plyID then return end\n  local player = PlayerResource:GetPlayer(plyID)\n\n  -- The name of the item purchased\n  local itemName = keys.itemname \n  \n  -- The cost of the item purchased\n  local itemcost = keys.itemcost\nend\n\n-- This function is called whenever an ability begins its PhaseStart phase (but before it is actually cast)\nfunction GameMode:OnAbilityCastBegins(keys)\n  DebugPrint('[BAREBONES] OnAbilityCastBegins')\n  DebugPrintTable(keys)\n\n  local player = PlayerResource:GetPlayer(keys.PlayerID)\n  local abilityName = keys.abilityname\nend\n\n-- This function is called whenever a tower is killed\nfunction GameMode:OnTowerKill(keys)\n  DebugPrint('[BAREBONES] OnTowerKill')\n  DebugPrintTable(keys)\n\n  local gold = keys.gold\n  local killerPlayer = PlayerResource:GetPlayer(keys.killer_userid)\n  local team = keys.teamnumber\nend\n\n-- This function is called whenever a player changes there custom team selection during Game Setup \nfunction GameMode:OnPlayerSelectedCustomTeam(keys)\n  DebugPrint('[BAREBONES] OnPlayerSelectedCustomTeam')\n  DebugPrintTable(keys)\n\n  local player = PlayerResource:GetPlayer(keys.player_id)\n  local success = (keys.success == 1)\n  local team = keys.team_id\nend\n\n-- This function is called whenever an NPC reaches its goal position/target\nfunction GameMode:OnNPCGoalReached(keys)\n  DebugPrint('[BAREBONES] OnNPCGoalReached')\n  DebugPrintTable(keys)\n\n  local goalEntity = EntIndexToHScript(keys.goal_entindex)\n  local nextGoalEntity = EntIndexToHScript(keys.next_goal_entindex)\n  local npc = EntIndexToHScript(keys.npc_entindex)\nend\n\n-- This function is called whenever any player sends a chat message to team or All\nfunction GameMode:OnPlayerChat(keys)\n  local teamonly = keys.teamonly\n  local userID = keys.userid\n  local playerID = self.vUserIds[userID]:GetPlayerID()\n\n  local text = keys.text\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/examples/colliders.lua",
    "content": "if hero == nil then\n  hero = PlayerResource:GetPlayer(0):GetAssignedHero()\n  Physics:Unit(hero)\nend\n\n--[[if true then\n  boxcollider4 = Physics:AddCollider(\"aabox2\", Physics:ColliderFromProfile(\"aaboxreflect\"))\n  boxcollider4.box = {Vector(-400,-800,0), Vector(-200,-200,500)}\n  boxcollider4.draw = true\n  boxcollider4.test = function(self, unit)\n    return IsPhysicsUnit(unit)\n  end\n  return\nend]]\n\nif testCount == nil then\n  if not enigma then\n    enigma = CreateUnitByName('npc_dummy_unit', Vector(0,0,0), true, hero, hero, hero:GetTeamNumber())\n    enigma:FindAbilityByName(\"reflex_dummy_unit\"):SetLevel(1)\n    enigma:SetModel('models/heroes/enigma/enigma.vmdl')\n    enigma:SetOriginalModel('models/heroes/enigma/enigma.vmdl')\n\n    Physics:Unit(enigma)\n\n    planet1 = CreateUnitByName('npc_dummy_unit', Vector(0,0,0), true, hero, hero, hero:GetTeamNumber())\n    planet1:FindAbilityByName(\"reflex_dummy_unit\"):SetLevel(1)\n    planet1:SetModel('models/props_gameplay/rune_doubledamage01.vmdl')\n    planet1:SetOriginalModel('models/props_gameplay/rune_doubledamage01.vmdl')\n    Physics:Unit(planet1)\n\n\n    planet2 = CreateUnitByName('npc_dummy_unit', Vector(0,0,0), true, hero, hero, hero:GetTeamNumber())\n    planet2:FindAbilityByName(\"reflex_dummy_unit\"):SetLevel(1)\n    planet2:SetModel('models/props_gameplay/rune_haste01.vmdl')\n    planet2:SetOriginalModel('models/props_gameplay/rune_haste01.vmdl')\n    Physics:Unit(planet2)\n\n    planet3 = CreateUnitByName('npc_dummy_unit', Vector(0,0,0), true, hero, hero, hero:GetTeamNumber())\n    planet3:FindAbilityByName(\"reflex_dummy_unit\"):SetLevel(1)\n    planet3:SetModel('models/props_gameplay/rune_illusion01.vmdl')\n    planet3:SetOriginalModel('models/props_gameplay/rune_illusion01.vmdl')\n    Physics:Unit(planet3)\n  end\n\n  Timers:CreateTimer(function()\n    enigma:SetAbsOrigin(Vector(0,0,400))\n\n    enigma:RemoveCollider()\n    collider = enigma:AddColliderFromProfile(\"gravity\")\n    collider.radius = 1000\n    collider.fullRadius = 0\n    collider.force = 5000\n    collider.linear = false\n    collider.test = function(self, collider, collided)\n      return IsPhysicsUnit(collided) and collided.GetUnitName and collided:GetUnitName() == \"npc_dummy_unit\"\n    end\n\n    planet1:SetAbsOrigin(Vector(-500,0,400))\n    planet2:SetAbsOrigin(Vector(300,0,400))\n    planet3:SetAbsOrigin(Vector(0,100,400))\n\n    planet1:SetPhysicsVelocity(Vector(0,600,0))\n    planet2:SetPhysicsVelocity(Vector(0,0,1000))\n    planet3:SetPhysicsVelocity(Vector(1,0,1):Normalized() * 1200)\n    planet1:SetPhysicsFriction(0)\n    planet2:SetPhysicsFriction(0)\n    planet3:SetPhysicsFriction(0)\n  end)\n\n  testCount = -1\nend\n\n-- Default block others\nif testCount == 0 then\n  enigma:RemoveSelf()\n  planet1:RemoveSelf()\n  planet2:RemoveSelf()\n  planet3:RemoveSelf()\n  if testUnit == nil then\n    --PrecacheUnitByNameAsync(\"npc_dota_hero_slark\", function(...) end)\n    testUnit = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber())\n    testUnit:SetModel('models/heroes/viper/viper.vmdl')\n    testUnit:SetOriginalModel('models/heroes/viper/viper.vmdl')\n\n    testUnit:SetControllableByPlayer(0, true)\n    Physics:Unit(testUnit)\n\n    ring = nil\n    ring2 = nil\n    ring3 = nil\n    ring4 = nil\n    ring5 = nil\n    ring6 = nil\n\n    box1 = nil\n    box2 = nil\n    box3 = nil\n\n    mass = 100\n  end\n\n  if testUnit2 == nil then\n    --PrecacheUnitByNameAsync(\"npc_dota_hero_slark\", function(...) end)\n    testUnit2 = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber())\n    --testUnit2:SetModel('models/heroes/viper/viper.vmdl')\n    --testUnit2:SetOriginalModel('models/heroes/viper/viper.vmdl')\n    testUnit2:SetModel('models/heroes/abaddon/abaddon.vmdl')\n    testUnit2:SetOriginalModel('models/heroes/abaddon/abaddon.vmdl')\n\n    testUnit2:SetControllableByPlayer(0, true)\n    testUnit2:SetRenderColor(200,0,0)\n    Physics:Unit(testUnit2)\n  end\n\n  collider = hero:AddColliderFromProfile(\"blocker\")\n  collider.radius = 400\n  collider.draw = {color = Vector(200,200,200), alpha = 5}\n\n  ring = {unit = hero, radius = 400, alpha = 0, rgb = Vector(200,50,50)}\n\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\n  collider.postaction = function(self, collider, collided)\n    print(\"post: \" .. collided:GetName() .. \" -- \" .. VectorDistance(collider:GetAbsOrigin(), collided:GetAbsOrigin()))\n  end\n  collider.preaction = function(self, collider, collided)\n    print(\"pre: \" .. collided:GetName() .. \" -- \" .. VectorDistance(collider:GetAbsOrigin(), collided:GetAbsOrigin()))\n  end\n\n\n  Physics:RemoveCollider(\"testbox\")\n  boxcollider = Physics:AddCollider(\"testbox\", Physics:ColliderFromProfile(\"boxblocker\"))\n  boxcollider.box = {Vector(-200,0,0), Vector(0,0,0), Vector(-200,1000,500)}\n  boxcollider.test = function(self, unit)  \n    return IsPhysicsUnit(unit)\n  end\n  boxcollider.draw = {color = Vector(50,200,50), alpha = 5}\n  units = {}\n  --[[for i=1,4 do\n    units[i] = CreateUnitByName('npc_dummy_unit', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber())\n    --units[i]:FindAbilityByName(\"reflex_dummy_unit\"):SetLevel(1)\n    units[i]:SetModel(\"models/props_gameplay/rune_doubledamage01.vmdl\")\n    units[i]:SetOriginalModel(\"models/props_gameplay/rune_doubledamage01.vmdl\")\n    units[i]:AddNewModifier(units[i], nil, \"modifier_phased\", {})\n  end]]\n\n  Physics:RemoveCollider(\"testbox2\")\n  boxcollider2 = Physics:AddCollider(\"testbox2\", Physics:ColliderFromProfile(\"boxreflect\"))\n  boxcollider2.box = {Vector(-100,700,0), Vector(1000,700,0), Vector(-100,900,500)}\n  boxcollider2.test = function(self, unit)\n    return IsPhysicsUnit(unit)\n  end\n  boxcollider2.draw = {color = Vector(200,50,200), alpha = 5}\n    \nend\n\n-- Self-blocker\nif testCount == 1 then\n  collider.moveSelf = true\nend\n\n-- Half radius\nif testCount == 2 then\n  collider.radius = 200\nend\n\n--testCount = 3\n-- Remove collider, new collider\nif testCount == 3 then\n  hero:RemoveCollider()\n  Timers:CreateTimer(\"timer\", {\n    callback = function()\n      local unit = CreateUnitByName('npc_dummy_unit', hero:GetAbsOrigin() + hero:GetForwardVector() * 100, true, hero, hero, hero:GetTeamNumber())\n      unit:FindAbilityByName(\"reflex_dummy_unit\"):SetLevel(1)\n      unit:SetModel(\"models/props_gameplay/rune_doubledamage01.vmdl\")\n      unit:SetOriginalModel(\"models/props_gameplay/rune_doubledamage01.vmdl\")\n\n      unit:AddNewModifier(unit, nil, \"modifier_phased\", {})\n\n      Physics:Unit(unit)\n      unit:SetMass(mass)\n      local projCollider = unit:AddColliderFromProfile(\"delete\")\n      projCollider.draw = {color=Vector(50,50,200), alpha=0}\n      projCollider.radius = 100\n      projCollider.test = function(self, collider, collided)\n        return IsPhysicsUnit(collided) and collided.GetUnitName ~= nil and collided:GetUnitName() == \"npc_dummy_blank\"\n      end\n\n      --unit:SetPhysicsVelocityMax(1000)\n\n      unit:SetFriction(0)\n      unit:AddPhysicsVelocity(hero:GetForwardVector() * 3000)\n      unit:OnPhysicsFrame(function(unit)\n        local dir = testUnit:GetAbsOrigin() - unit:GetAbsOrigin()\n        dir = dir:Normalized()\n\n        unit:SetPhysicsAcceleration(dir * 3000)\n        end)\n      return 1\n    end\n    })\nend\n\nif testCount == 4 then\n  Physics:RemoveCollider(\"testbox\")\n  boxcollider = Physics:AddCollider(\"testbox\", Physics:ColliderFromProfile(\"boxreflect\"))\n  boxcollider.box = {Vector(-100,550,0), \n    RotatePosition(Vector(-100,550,0), QAngle(0,-15,0), Vector(-100,350,0)), \n    RotatePosition(Vector(-100,550,0), QAngle(0,-15,0), Vector(1000,550,0)) + Vector(0,0,500)}\n  boxcollider.test = function(self, unit)\n    return IsPhysicsUnit(unit)\n  end\n  boxcollider.draw = {color = Vector(200,200,200), alpha = 5}\nend\n\nif testCount == 5 then\n  collider = hero:AddColliderFromProfile(\"blocker\")\n\n  collider.radius = 400\n  collider.draw = {color = Vector(200,50,50), alpha = 0}\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\n\nif testCount == 6 then\n  hero:RemoveCollider()\n  collider = hero:AddColliderFromProfile(\"gravity\")\n  collider.draw = {color = Vector(200,50,200), alpha = 0}\n  collider.radius = 1000\n  collider.force = 1000\n  collider.linear = false\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\nif testCount == 7 then\n  hero:RemoveCollider()\n  collider = hero:AddColliderFromProfile(\"gravity\")\n  collider.draw = {color = Vector(100,50,200), alpha = 0}\n  collider.radius = 1000\n  collider.fullRadius = 500\n  collider.force = 1000\n  collider.linear = true\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\n\nif testCount == 8 then\n  hero:RemoveCollider()\n  collider = hero:AddColliderFromProfile(\"gravity\")\n  collider.draw = {color = Vector(50,200,50), alpha = 0}\n  collider.radius = 1500\n  collider.fullRadius = 1000\n  collider.minRadius = 750\n  collider.force = 1000\n  collider.linear = true\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\n\nif testCount == 9 then\n  hero:RemoveCollider()\n  collider = hero:AddColliderFromProfile(\"repel\")\n  collider.draw = {color = Vector(200,200,50), alpha = 0}\n  collider.radius = 1000\n  collider.force = 1000\n  collider.linear = false\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\n\nif testCount == 10 then\n  hero:RemoveCollider()\n  collider = hero:AddColliderFromProfile(\"reflect\")\n  collider.draw = {color = Vector(200,200,200), alpha = 0}\n  collider.radius = 200\n  collider.multiplier = 1\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\n\nif testCount == 11 then\n  hero:RemoveCollider()\n  collider = hero:AddColliderFromProfile(\"momentum\")\n  collider.draw = {color = Vector(0,0,0), alpha = 0}\n  collider.radius = 200\n  collider.blockRadius = 100\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\n\nif testCount == 12 then\n  hero:RemoveCollider()\n  collider = hero:AddColliderFromProfile(\"momentum\")\n  collider.draw = {color = Vector(0,0,0), alpha = 0}\n  collider.radius = 200\n  collider.blockRadius = 200\n  collider.test = function(self, collider, collided)\n  mass = 5\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\n\nif testCount == 13 then\n  hero:RemoveCollider()\n  collider = hero:AddColliderFromProfile(\"momentum\")\n  collider.draw = {color = Vector(0,0,0), alpha = 0}\n  collider.radius = 200\n  collider.blockRadius = 200\n  collider.elasticity = 0\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\n\nif testCount == 14 then\n  hero:RemoveCollider()\n  collider = hero:AddColliderFromProfile(\"momentum\")\n  collider.draw = {color = Vector(50,200,50), alpha = 0}\n  collider.radius = 200\n  collider.blockRadius = 0\n  collider.elasticity = 0\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\n\nif testCount == 15 then\n  hero:RemoveCollider()\n  collider = hero:AddColliderFromProfile(\"gravity\")\n  collider.draw = {color = Vector(50,200,50), alpha = 0}\n  collider.radius = 1500\n  collider.fullRadius = 1000\n  collider.minRadius = 750\n  collider.force = 1000\n  collider.linear = true\n  collider.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\n\n  collider2 = hero:AddColliderFromProfile(\"blocker\")\n  collider.draw = {color = Vector(200,200,50), alpha = 0}\n  collider2.radius = 400\n  collider2.test = function(self, collider, collided)\n    return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero())\n  end\nend\n\n\nprint(testCount)\ntestCount = testCount + 1\n\n--PrintTable(Physics.Colliders)\n\nprint('0----0')\n--print(testUnit:GetModelRadius())\n--print(testUnit:BoundingRadius2D())\n--print(testUnit:GetHullRadius())\n--print(testUnit:GetPaddedCollisionRadius())\nPrintTable(Physics.Colliders)\nprint('0----0')\n\nhero:Hibernate(false)"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/examples/modifier_no_health.lua",
    "content": "modifier_no_health = class({})\n\nfunction modifier_no_health:CheckState()\n  local state = {\n    [MODIFIER_STATE_NO_HEALTH_BAR] = true,\n  }\n\n  return state\nend\n\nfunction modifier_no_health:IsHidden()\n    return true\nend\n\nfunction modifier_no_health:GetAttributes()\n  return MODIFIER_ATTRIBUTE_PERMANENT\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/examples/notificationsExample.lua",
    "content": "-- Send a notification to all players that displays up top for 5 seconds\nNotifications:TopToAll({text=\"Top Notification for 5 seconds \", duration=5.0})\n-- Send a notification to playerID 0 which will display up top for 9 seconds and be green, on the same line as the previous notification\nNotifications:Top(0, {text=\"GREEEENNNN\", duration=9, style={color=\"green\"}, continue=true})\n\n-- Display 3 styles of hero icons on the same line for 5 seconds.\nNotifications:TopToAll({hero=\"npc_dota_hero_axe\", duration=5.0})\nNotifications:TopToAll({hero=\"npc_dota_hero_axe\", imagestyle=\"landscape\", continue=true})\nNotifications:TopToAll({hero=\"npc_dota_hero_axe\", imagestyle=\"portrait\", continue=true})\n\n-- Display a generic image and then 2 ability icons and an item on the same line for 5 seconds\nNotifications:TopToAll({image=\"file://{images}/status_icons/dota_generic.psd\", duration=5.0})\nNotifications:TopToAll({ability=\"nyx_assassin_mana_burn\", continue=true})\nNotifications:TopToAll({ability=\"lina_fiery_soul\", continue=true})\nNotifications:TopToAll({item=\"item_force_staff\", continue=true})\n\n\n-- Send a notification to all players on radiant (GOODGUYS) that displays near the bottom of the screen for 10 seconds to be displayed with the NotificationMessage class added\nNotifications:BottomToTeam(DOTA_TEAM_GOODGUYS, {text=\"AAAAAAAAAAAAAA\", duration=10, class=\"NotificationMessage\"})\n-- Send a notification to player 0 which will display near the bottom a large red notification with a solid blue border for 5 seconds\nNotifications:Bottom(PlayerResource:GetPlayer(0), {text=\"Super Size Red\", duration=5, style={color=\"red\", [\"font-size\"]=\"110px\", border=\"10px solid blue\"}})\n\n\n-- Remove 1 bottom and 2 top notifications 2 seconds later\nTimers:CreateTimer(2,function()\n  Notifications:RemoveTop(0, 2)\n  Notifications:RemoveBottomFromTeam(DOTA_TEAM_GOODGUYS, 1)\n\n  -- Add 1 more notification to the bottom\n  Notifications:BottomToAll({text=\"GREEEENNNN again\", duration=9, style={color=\"green\"}})\nend)\n\n-- Clear all notifications from the bottom\nTimers:CreateTimer(7, function()\n  Notifications:ClearBottomFromAll()\nend)"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/examples/playground.lua",
    "content": "--[[\n\n  This file is an example scenario showing a number of ways to make use of the containers.lua library.\n  It works based on the \"playground\" map provided with barebones.\n\n  This code creates several containers:\n    1) A backpack container for every hero in the game.  This container has an item within their normal inventory\n      which when used/cast opens/closes the corresponding container.\n    2) An equipment container for every hero in the game.  This container has an item within their normal inventory\n      which when used/cast opens/closes the corresponding container.  There are 3 item slots in this container:\n      a helmet slot, a chest armor slot, and a boots slot.  Putting valid items into the correct slot will equip\n      them and apply the passive associated with them (similar to the standard dota inventory).\n\n    3) Loot Boxes which are 2x2 boxes that spawn on the map and can be looted by each player.\n    4) Private Bank containers for each player, represented by a stone chest in the game world.  Opening this\n      container by right clicking it shows the private bank of the player that clicked it.\n    5) Shared Bank container represented by a wooden treasure chest.  Opening and using this container is\n      shared among all players.\n    6) Item-based Shop container represented by a golden treasure chest. This shop is availble to all players.\n    7) Team-based Unit-based shops.  There is one team-shop for radiant (Ancient Apparition) and one for\n      dire (Enigma). These shops can be inspected by left clicking them to select them from any distance.\n    8) Crafting Materials container represented by a wooden crate.\n    9) Crafting Station container represented by a workbench/table which allows for crafting things in a\n      Minecraft-style.  The only recipe built-in is branch+claymore+broadsword makes a battlefury \n      (when properly oriented)\n\n]]\n\nif GetMapName() == \"playground\" then\n\n  if not PlayGround then\n    PlayGround = {}\n  end\n\n  function RandomItem(owner)\n    local id = RandomInt(1,29)\n    local name = Containers.itemIDs[id]\n    return CreateItem(name, owner, owner)\n  end\n\n  function CreateLootBox(loc)\n    local phys = CreateItemOnPositionSync(loc:GetAbsOrigin(), nil)\n    phys:SetForwardVector(Vector(0,-1,0))\n    phys:SetModelScale(1.5)\n\n    local items = {}\n    local slots = {1,2,3,4}\n    for i=1,RandomInt(1,3) do\n      items[table.remove(slots, RandomInt(1,#slots))] = RandomItem()\n    end\n\n    local cont = Containers:CreateContainer({\n      layout =      {2,2},\n      --skins =       {\"Hourglass\"},\n      headerText =  \"Loot Box\",\n      buttons =     {\"Take All\"},\n      position =    \"entity\", --\"mouse\",--\"900px 200px 0px\",\n      OnClose = function(playerID, container)\n        print(\"Closed\")\n\n        if next(container:GetAllOpen()) == nil and #container:GetAllItems() == 0 then\n          container:GetEntity():RemoveSelf()\n          container:Delete()\n          loc.container = nil\n\n          Timers:CreateTimer(7, function()\n            CreateLootBox(loc)\n          end)\n        end\n      end,\n      OnOpen = function(playerID, container)\n        print(\"Loot box opened\")\n      end,\n      closeOnOrder= true,\n      items = items,\n      entity = phys,\n      range = 150,\n      --OnButtonPressedJS = \"ExampleButtonPressed\",\n      OnButtonPressed = function(playerID, container, unit, button, buttonName)\n        if button == 1 then\n          local items = container:GetAllItems()\n          for _,item in ipairs(items) do\n            container:RemoveItem(item)\n            Containers:AddItemToUnit(unit,item)\n          end\n\n          container:Close(playerID)\n        end\n      end,\n      OnEntityOrder = function(playerID, container, unit, target)\n        print(\"ORDER ACTION loot box: \", playerID)\n        container:Open(playerID)\n        unit:Stop()\n      end\n    })\n\n    loc.container = cont\n    loc.phys = phys\n  end\n\n  function CreateShop(ii)\n    local sItems = {}\n    local prices = {}\n    local stocks = {}\n\n    for _,i in ipairs(ii) do\n      item = CreateItem(i[1], unit, unit)\n      local index = item:GetEntityIndex()\n      sItems[#sItems+1] = item\n      if i[2] ~= nil then prices[index] = i[2] end\n      if i[3] ~= nil then stocks[index] = i[3] end\n    end\n\n    return sItems, prices, stocks\n  end\n\n\n  function PlayGround:OnFirstPlayerLoaded()\n    Containers:SetItemLimit(100) -- default item limit is 24 for dota.  Once a unit owns more items than that, they would be unable to buy them from the dota shops\n    Containers:UsePanoramaInventory(true)\n\n    -- create initial stuff\n    lootSpawns = Entities:FindAllByName(\"loot_spawn\")\n    itemDrops = Entities:FindAllByName(\"item_drops\")\n    contShopRadEnt = Entities:FindByName(nil, \"container_shop_radiant\")\n    contShopDireEnt = Entities:FindByName(nil, \"container_shop_dire\")\n    privateBankEnt = Entities:FindByName(nil, \"private_bank\")\n    sharedBankEnt = Entities:FindByName(nil, \"shared_bank\")\n    itemShopEnt = Entities:FindByName(nil, \"item_shop\")\n    craftingEnt = Entities:FindByName(nil, \"crafting_station\")\n    craftingMatsEnt = Entities:FindByName(nil, \"crafting_mats\")\n\n\n    privateBankEnt = CreateItemOnPositionSync(privateBankEnt:GetAbsOrigin(), nil)\n    privateBankEnt:SetModel(\"models/props_debris/merchant_debris_chest002.vmdl\")\n    privateBankEnt:SetModelScale(1.8)\n    privateBankEnt:SetForwardVector(Vector(-1,0,0))\n\n    craftingEnt = CreateItemOnPositionSync(craftingEnt:GetAbsOrigin(), nil)\n    craftingEnt:SetModel(\"models/props_structures/bad_base_shop002.vmdl\")\n    craftingEnt:SetForwardVector(Vector(-1,0,0))\n\n    craftingMatsEnt = CreateItemOnPositionSync(craftingMatsEnt:GetAbsOrigin(), nil)\n    craftingMatsEnt:SetModel(\"models/props_debris/shop_set_cage001.vmdl\")\n    craftingMatsEnt:SetForwardVector(Vector(1,0,0))\n\n    local all = {}\n    for i=0,23 do all[#all+1] = i end\n\n\n    sharedBankEnt = CreateItemOnPositionSync(sharedBankEnt:GetAbsOrigin(), nil)\n    sharedBankEnt:SetModel(\"models/props_debris/merchant_debris_chest001.vmdl\")\n    sharedBankEnt:SetModelScale(2.3)\n    sharedBankEnt:SetForwardVector(Vector(-1,0,0))\n\n    sharedBank = Containers:CreateContainer({\n      layout =      {6,4,4,6},\n      headerText =  \"Shared Bank\",\n      pids =        all,\n      position =    \"entity\", --\"600px 400px 0px\",\n      entity =      sharedBankEnt,\n      closeOnOrder= true,\n      range =       230,\n      OnEntityOrder=function(playerID, container, unit, target)\n        print(\"ORDER ACTION shared bank: \", playerID)\n        container:Open(playerID)\n        unit:Stop()\n      end,\n      OnEntityDrag= function(playerID, container, unit, target, fromContainer, item)\n        print(\"Drag ACTION shared bank: \", playerID, unit, target, fromContainer, item)\n        if IsValidEntity(target) and fromContainer:ContainsItem(item) then\n          fromContainer:RemoveItem(item)\n          if not container:AddItem(item) then\n            CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(10), item)\n          end\n        end\n\n        unit:Stop()\n      end\n    })\n\n\n    itemShopEnt = CreateItemOnPositionSync(itemShopEnt:GetAbsOrigin(), nil)\n    itemShopEnt:SetModel(\"models/props_gameplay/treasure_chest001.vmdl\")\n    itemShopEnt:SetModelScale(2.7)\n    itemShopEnt:SetForwardVector(Vector(-1,0,0))\n\n    local ii = {}\n    for i=0,RandomInt(4,8) do\n      local inner = {Containers.itemIDs[RandomInt(1,29)], RandomInt(8,200)*10}\n      if RandomInt(0,1) == 1 then\n        inner[3] = RandomInt(3,15)\n      end\n\n      table.insert(ii, inner)\n    end\n\n    local sItems,prices,stocks = CreateShop(ii)\n\n    itemShop = Containers:CreateShop({\n      layout =      {3,3,3},\n      skins =       {},\n      headerText =  \"Item Shop\",\n      pids =        {},\n      position =    \"entity\", --\"1000px 300px 0px\",\n      entity =      itemShopEnt,\n      items =       sItems,\n      prices =      prices,\n      stocks =      stocks,\n      closeOnOrder= true,\n      range =       230,\n      OnEntityOrder=function(playerID, container, unit, target)\n        print(\"ORDER ACTION item shop\", playerID)\n        container:Open(playerID)\n        unit:Stop()\n      end,\n    })\n\n\n    contShopRadEnt = CreateUnitByName(\"npc_dummy_unit\", contShopRadEnt:GetAbsOrigin(), false, nil, nil, DOTA_TEAM_GOODGUYS)\n    contShopRadEnt:AddNewModifier(viper, nil, \"modifier_shopkeeper\", {})\n    contShopRadEnt:SetModel(\"models/heroes/ancient_apparition/ancient_apparition.vmdl\")\n    contShopRadEnt:SetOriginalModel(\"models/heroes/ancient_apparition/ancient_apparition.vmdl\")\n    contShopRadEnt:StartGesture(ACT_DOTA_IDLE)\n    contShopRadEnt:SetForwardVector(Vector(1,0,0))\n\n    sItems,prices,stocks = CreateShop({\n      {\"item_quelling_blade\", 150, 3},\n      {\"item_quelling_blade\"},\n      {\"item_clarity\"},\n      {\"item_bfury\", 9000},\n    })\n\n    sItems[3]:SetCurrentCharges(2)\n\n    contRadiantShop = Containers:CreateShop({\n      layout =      {2,2,2,2,2},\n      skins =       {},\n      headerText =  \"Radiant Shop\",\n      pids =        {},\n      position =    \"entity\", --\"1000px 300px 0px\",\n      entity =      contShopRadEnt,\n      items =       sItems,\n      prices =      prices,\n      stocks =      stocks,\n      closeOnOrder= true,\n      range =       300,\n      --OnCloseClickedJS = \"ExampleCloseClicked\",\n      OnSelect  =   function(playerID, container, selected)\n        print(\"Selected\", selected:GetUnitName())\n        if PlayerResource:GetTeam(playerID) == DOTA_TEAM_GOODGUYS then\n          container:Open(playerID)\n        end\n      end,\n      OnDeselect =  function(playerID, container, deselected)\n        print(\"Deselected\", deselected:GetUnitName())\n        if PlayerResource:GetTeam(playerID) == DOTA_TEAM_GOODGUYS then\n          container:Close(playerID)\n        end\n      end,\n      OnEntityOrder=function(playerID, container, unit, target)\n        print(\"ORDER ACTION radiant shop\", playerID)\n        if PlayerResource:GetTeam(playerID) == DOTA_TEAM_GOODGUYS then\n          container:Open(playerID)\n          unit:Stop()\n        else\n          Containers:DisplayError(playerID, \"#dota_hud_error_unit_command_restricted\")\n        end\n      end,\n    })\n\n\n    contShopDireEnt = CreateUnitByName(\"npc_dummy_unit\", contShopDireEnt:GetAbsOrigin(), false, nil, nil, DOTA_TEAM_BADGUYS)\n    contShopDireEnt:AddNewModifier(viper, nil, \"modifier_shopkeeper\", {})\n    contShopDireEnt:SetModel(\"models/heroes/enigma/enigma.vmdl\")\n    contShopDireEnt:SetOriginalModel(\"models/heroes/enigma/enigma.vmdl\")\n    contShopDireEnt:StartGesture(ACT_DOTA_IDLE)\n    contShopDireEnt:SetForwardVector(Vector(-1,0,0))\n\n    sItems,prices,stocks = CreateShop({\n      {\"item_quelling_blade\", 150, 3},\n      {\"item_quelling_blade\"},\n      {\"item_clarity\"},\n      {\"item_bfury\", 9000},\n    })\n\n    sItems[3]:SetCurrentCharges(2)\n    \n    contShopDire = Containers:CreateShop({\n      layout =      {2,2,2,2,2},\n      skins =       {},\n      headerText =  \"Dire Shop\",\n      pids =        {},\n      position =    \"entity\", --\"1000px 300px 0px\",\n      entity =      contShopDireEnt,\n      items =       sItems,\n      prices =      prices,\n      stocks =      stocks,\n      closeOnOrder= true,\n      range =       300,\n      OnSelect  =   function(playerID, container, selected)\n        print(\"Selected\", selected:GetUnitName())\n        if PlayerResource:GetTeam(playerID) == DOTA_TEAM_BADGUYS then\n          container:Open(playerID)\n        end\n      end,\n      OnDeselect  =   function(playerID, container, deselected)\n        print(\"Deselected\", deselected:GetUnitName())\n        if PlayerResource:GetTeam(playerID) == DOTA_TEAM_BADGUYS then\n          container:Close(playerID)\n        end\n      end,\n      OnEntityOrder=function(playerID, container, unit, target)\n        print(\"ORDER ACTION dire shop\", playerID)\n        if PlayerResource:GetTeam(playerID) == DOTA_TEAM_BADGUYS then\n          container:Open(playerID)\n          unit:Stop()\n        else\n          Containers:DisplayError(playerID, \"#dota_hud_error_unit_command_restricted\")\n        end\n      end,\n    })\n\n\n    crafting = Containers:CreateContainer({\n      layout =      {3,3,3},\n      skins =       {},\n      headerText =  \"Crafting Station\",\n      pids =        {},\n      position =    \"entity\", --\"1000px 300px 0px\",\n      entity =      craftingEnt,\n      closeOnOrder= true,\n      range =       200,\n      buttons =     {\"Craft\"},\n      OnEntityOrder=function(playerID, container, unit, target)\n        print(\"ORDER ACTION crafting station\", playerID)\n        container:Open(playerID)\n        unit:Stop()\n      end,\n      OnButtonPressed = function(playerID, container, unit, button, buttonName)\n        if button == 1 then\n          local all = container:GetAllItems()\n          local branches = container:GetItemsByName(\"item_branches\")\n          local broadswords = container:GetItemsByName(\"item_broadsword\")\n          local claymores = container:GetItemsByName(\"item_claymore\")\n          print(#all, #branches, #broadswords, #claymores)\n\n          if #all == 3 and #branches == 1 and #broadswords == 1 and #claymores == 1 then\n            local row,col = container:GetRowColumnForItem(branches[1])\n            local row2,col2 = container:GetRowColumnForItem(broadswords[1])\n            local row3,col3 = container:GetRowColumnForItem(claymores[1])\n            print(row,col)\n            print(row2,col2)\n            print(row3,col3)\n            if row == 3 and row2+row3 == 3 and col == col2 and col == col3 then\n              for _,item in ipairs(all) do\n                container:RemoveItem(item)\n              end\n              container:AddItem(CreateItem(\"item_bfury\",unit,unit), 2, 2)\n            end\n          end\n        end\n      end,\n    })\n\n    craftingMats = Containers:CreateContainer({\n      layout =      {3,3,3},\n      skins =       {},\n      headerText =  \"Materials\",\n      pids =        {},\n      position =    \"entity\", --\"1000px 300px 0px\",\n      entity =      craftingMatsEnt,\n      closeOnOrder= true,\n      range =       200,\n      buttons =     {},\n      OnEntityOrder=function(playerID, container, unit, target)\n        print(\"ORDER ACTION crafting mats\", playerID)\n        container:Open(playerID)\n        unit:Stop()\n      end,\n    })\n\n    item = CreateItem(\"item_branches\", nil, nil)\n    craftingMats:AddItem(item)\n    item = CreateItem(\"item_branches\", nil, nil)\n    craftingMats:AddItem(item)\n    item = CreateItem(\"item_broadsword\", nil, nil)\n    craftingMats:AddItem(item)\n    item = CreateItem(\"item_branches\", nil, nil)\n    craftingMats:AddItem(item)\n    item = CreateItem(\"item_claymore\", nil, nil)\n    craftingMats:AddItem(item)\n    item = CreateItem(\"item_claymore\", nil, nil)\n    craftingMats:AddItem(item)\n    item = CreateItem(\"item_branches\", nil, nil)\n    craftingMats:AddItem(item)\n\n\n\n    for _,loc in ipairs(lootSpawns) do\n      CreateLootBox(loc)\n    end\n\n    for _,loc in ipairs(itemDrops) do\n      local phys = CreateItemOnPositionSync(loc:GetAbsOrigin(), RandomItem())\n      phys:SetForwardVector(Vector(0,-1,0))\n\n      loc.phys = phys\n    end\n\n    Timers:CreateTimer(.1, function()    \n      GameRules:GetGameModeEntity():SetCameraDistanceOverride( 1500 )\n    end)\n\n    Timers:CreateTimer(function()\n      for _,loc in ipairs(itemDrops) do\n        if not IsValidEntity(loc.phys) then\n          local phys = CreateItemOnPositionSync(loc:GetAbsOrigin(), RandomItem())\n          phys:SetForwardVector(Vector(0,-1,0))\n\n          loc.phys = phys\n        end\n      end\n      return 15\n    end)\n  end\n\n  function PlayGround:OnHeroInGame(hero)\n    -- create inventory\n    print(pid, hero:GetName())\n    local pid = hero:GetPlayerID()\n\n    local validItemsBySlot = {\n      [1] = --helm\n        {item_helm_of_iron_will=  true,\n        item_veil_of_discord=     true},\n      [2] = --chest\n        {item_chainmail=          true,\n        item_blade_mail=          true},\n      [3] = --boots\n        {item_boots=              true,\n        item_phase_boots=         true},\n    }\n\n    local c = Containers:CreateContainer({\n      layout =      {3,4,4},\n      skins =       {},\n      headerText =  \"Backpack\",\n      pids =        {pid},\n      entity =      hero,\n      closeOnOrder =false,\n      position =    \"75% 25%\",\n      OnDragWorld = true,\n      OnRightClickJS = \"SpecialContextMenu\",\n      OnRightClick = function(playerID, container, unit, item, slot)\n        print(\"RIGHT CLICK\")\n        local armor = pidEquipment[playerID]\n        for i,valid in pairs(validItemsBySlot) do\n          for itemname,_ in pairs(valid) do\n            if itemname == item:GetAbilityName() then\n              Containers:OnDragFrom(playerID, container, unit, item, slot, armor, i)\n            end\n          end\n        end\n      end\n    })\n\n    pidInventory[pid] = c\n\n    local item = CreateItem(\"item_tango\", hero, hero)\n    c:AddItem(item, 4)\n\n    item = CreateItem(\"item_tango\", hero, hero)\n    c:AddItem(item, 6)\n\n    item = CreateItem(\"item_ring_of_basilius\", hero, hero)\n    c:AddItem(item, 8)\n\n    item = CreateItem(\"item_phase_boots\", hero, hero)\n    c:AddItem(item, 9)\n\n    item = CreateItem(\"item_force_staff\", hero, hero)\n    c:AddItem(item)\n\n    item = CreateItem(\"item_blade_mail\", hero, hero)\n    c:AddItem(item)\n\n    item = CreateItem(\"item_veil_of_discord\", hero, hero)\n    c:AddItem(item)\n\n    privateBank[pid] = Containers:CreateContainer({\n      layout =      {4,4,4,4},\n      headerText =  \"Private Bank\",\n      pids =        {pid},\n      position =    \"entity\", --\"200px 200px 0px\",\n      entity =      privateBankEnt,\n      closeOnOrder= true,\n      forceOwner =  hero,\n      forcePurchaser=hero,\n      range =       250,\n      OnEntityOrder =function(playerID, container, unit, target)\n        print(\"ORDER ACTION private bank: \", playerID)\n        if privateBank[playerID] then\n          privateBank[playerID]:Open(playerID)\n        end\n        unit:Stop()\n      end,\n    })\n\n    defaultInventory[pid] = true\n    Containers:SetDefaultInventory(hero, c)\n\n    local pack = CreateItem(\"item_containers_lua_pack\", hero, hero)\n    pack.container = c\n    hero:AddItem(pack)\n\n    c = Containers:CreateContainer({\n      layout =      {1,1,1},\n      skins =       {\"Hourglass\"},\n      headerText =  \"Armor\",\n      pids =        {pid},\n      entity =      hero,\n      closeOnOrder =false,\n      position =    \"200px 500px 0px\",\n      equipment =   true,\n      layoutFile =  \"file://{resources}/layout/custom_game/containers/alt_container_example.xml\",\n      OnDragWithin = false,\n      OnRightClickJS = \"ExampleRightClick\",\n      OnMouseOverJS = \"ExampleMouseOver\",\n      AddItemFilter = function(container, item, slot)\n        print(\"Armor, AddItemFilter: \", container, item, slot)\n        if slot ~= -1 and validItemsBySlot[slot][item:GetAbilityName()] then\n          return true\n        end\n        return false\n      end,\n    })\n\n    pidEquipment[pid] = c\n\n    item = CreateItem(\"item_helm_of_iron_will\", hero, hero)\n    c:AddItem(item, 1)\n\n    item = CreateItem(\"item_chainmail\", hero, hero)\n    c:AddItem(item, 2)\n\n    item = CreateItem(\"item_boots\", hero, hero)\n    c:AddItem(item, 3)\n\n    pack = CreateItem(\"item_containers_lua_pack\", hero, hero)\n    pack.container = c\n    hero:AddItem(pack)\n  end\n\n\n  function PlayGround:OnNPCSpawned(keys)\n    local npc = EntIndexToHScript(keys.entindex)\n\n    if npc:IsRealHero() and npc.bFirstSpawnedPG == nil then\n      npc.bFirstSpawnedPG = true\n      PlayGround:OnHeroInGame(npc)\n    end\n  end\n\n  function PlayGround:OnConnectFull(keys)\n    if OFPL then\n      PlayGround:OnFirstPlayerLoaded()\n      OFPL = false\n    end\n  end\n\n  if LOADED then\n    return\n  end\n  LOADED = true\n  OFPL = true\n\n  MAX_NUMBER_OF_TEAMS = 2\n  USE_AUTOMATIC_PLAYERS_PER_TEAM = true\n\n  ListenToGameEvent('npc_spawned', Dynamic_Wrap(PlayGround, 'OnNPCSpawned'), PlayGround)\n  ListenToGameEvent('player_connect_full', Dynamic_Wrap(PlayGround, 'OnConnectFull'), PlayGround)\n\n  pidInventory = {}\n  pidEquipment = {}\n  lootSpawns = nil\n  itemDrops = nil\n  privateBankEnt = nil\n  sharedBankEnt = nil\n  contShopRadEnt = nil\n  contShopDireEnt = nil\n  itemShopEnt = nil\n\n  craftingEnt = nil\n  craftingMatsEnt = nil\n\n  crafting = nil\n  craftingMats = nil\n  contShopRad = nil\n  contShopDire = nil\n  itemShop = nil\n  sharedBank = nil\n  privateBank = {}\n\n  defaultInventory = {}\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/examples/projectile.lua",
    "content": "require('libraries/projectiles')\n\nlocal player = PlayerResource:GetPlayer(0)\nlocal hero = player:GetAssignedHero()\n\nlocal projectile = {\n  --EffectName = \"particles/test_particle/ranged_tower_good.vpcf\",\n  --EffectName = \"particles/units/heroes/hero_lina/lina_spell_dragon_slave.vpcf\",\n  EffectName = \"particles/units/heroes/hero_mirana/mirana_spell_arrow.vpcf\",\n  --EeffectName = \"\",\n  --vSpawnOrigin = hero:GetAbsOrigin(),\n  vSpawnOrigin = hero:GetAbsOrigin() + Vector(0,0,80),--{unit=hero, attach=\"attach_attack1\", offset=Vector(0,0,0)},\n  fDistance = 3000,\n  fStartRadius = 100,\n  fEndRadius = 100,\n  Source = hero,\n  fExpireTime = 8.0,\n  vVelocity = hero:GetForwardVector() * 900, -- RandomVector(1000),\n  UnitBehavior = PROJECTILES_DESTROY,\n  bMultipleHits = false,\n  bIgnoreSource = true,\n  TreeBehavior = PROJECTILES_NOTHING,\n  bCutTrees = true,\n  bTreeFullCollision = false,\n  WallBehavior = PROJECTILES_NOTHING,\n  GroundBehavior = PROJECTILES_NOTHING,\n  fGroundOffset = 80,\n  nChangeMax = 1,\n  bRecreateOnChange = true,\n  bZCheck = false,\n  bGroundLock = true,\n  bProvidesVision = true,\n  iVisionRadius = 350,\n  iVisionTeamNumber = hero:GetTeam(),\n  bFlyingVision = false,\n  fVisionTickTime = .1,\n  fVisionLingerDuration = 1,\n  draw = true,--             draw = {alpha=1, color=Vector(200,0,0)},\n  --iPositionCP = 0,\n  --iVelocityCP = 1,\n  --ControlPoints = {[5]=Vector(100,0,0), [10]=Vector(0,0,1)},\n  --ControlPointForwards = {[4]=hero:GetForwardVector() * -1},\n  --ControlPointOrientations = {[1]={hero:GetForwardVector() * -1, hero:GetForwardVector() * -1, hero:GetForwardVector() * -1}},\n  --[[ControlPointEntityAttaches = {[0]={\n    unit = hero,\n    pattach = PATTACH_ABSORIGIN_FOLLOW,\n    attachPoint = \"attach_attack1\", -- nil\n    origin = Vector(0,0,0)\n  }},]]\n  --fRehitDelay = .3,\n  --fChangeDelay = 1,\n  --fRadiusStep = 10,\n  --bUseFindUnitsInRadius = false,\n\n  UnitTest = function(self, unit) return unit:GetUnitName() ~= \"npc_dummy_unit\" and unit:GetTeamNumber() ~= hero:GetTeamNumber() end,\n  OnUnitHit = function(self, unit) \n    print ('HIT UNIT: ' .. unit:GetUnitName())\n  end,\n  --OnTreeHit = function(self, tree) ... end,\n  --OnWallHit = function(self, gnvPos) ... end,\n  --OnGroundHit = function(self, groundPos) ... end,\n  --OnFinish = function(self, pos) ... end,\n}\n\nProjectiles:CreateProjectile(projectile)"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/examples/worldpanelsExample.lua",
    "content": "require(\"libraries/worldpanels\")\n\nif not WorldPanelExample then\n  WorldPanelExample = class({})\nend\n\nfunction WorldPanelExample:OnNPCSpawned(keys)\n  --Apply a worldpanel health bar to every spawned hero unit\n  local npc = EntIndexToHScript(keys.entindex)\n\n  if npc.IsRealHero and npc:IsRealHero() and not npc.worldPanel then\n    npc:AddNewModifier(npc, nil, \"modifier_no_health\", {})\n\n    -- entityHeight could be loaded from the npc_heroes.txt \"HealthBarOffset\"\n    npc.worldPanel = WorldPanels:CreateWorldPanelForAll(\n      {layout = \"file://{resources}/layout/custom_game/worldpanels/healthbar.xml\",\n        entity = npc:GetEntityIndex(),\n        entityHeight = 210,\n      })\n  end\nend\n\nif not WorldPanelExample.initialized then\n  LinkLuaModifier(\"modifier_no_health\", \"examples/modifier_no_health\", LUA_MODIFIER_MOTION_NONE)\n\n  Timers:CreateTimer(1, function()\n    WorldPanels:CreateWorldPanelForAll(\n      {layout = \"file://{resources}/layout/custom_game/worldpanels/arrow.xml\",\n        position = GetGroundPosition(Vector(0,0,0), nil) + Vector(0,0,200),\n        edgePadding = 5,\n      })\n    end)\n\n  ListenToGameEvent('npc_spawned', Dynamic_Wrap(WorldPanelExample, 'OnNPCSpawned'), WorldPanelExample)\n  WorldPanelExample.initialized = true\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/gamemode.lua",
    "content": "-- This is the primary barebones gamemode script and should be used to assist in initializing your game mode\nBAREBONES_VERSION = \"1.00\"\n\n-- Set this to true if you want to see a complete debug output of all events/processes done by barebones\n-- You can also change the cvar 'barebones_spew' at any time to 1 or 0 for output/no output\nBAREBONES_DEBUG_SPEW = false \n\nif GameMode == nil then\n    DebugPrint( '[BAREBONES] creating barebones game mode' )\n    _G.GameMode = class({})\nend\n\n-- This library allow for easily delayed/timed actions\nrequire('libraries/timers')\n-- This library can be used for advancted physics/motion/collision of units.  See PhysicsReadme.txt for more information.\nrequire('libraries/physics')\n-- This library can be used for advanced 3D projectile systems.\nrequire('libraries/projectiles')\n-- This library can be used for sending panorama notifications to the UIs of players/teams/everyone\nrequire('libraries/notifications')\n-- This library can be used for starting customized animations on units from lua\nrequire('libraries/animations')\n-- This library can be used for performing \"Frankenstein\" attachments on units\nrequire('libraries/attachments')\n-- This library can be used to synchronize client-server data via player/client-specific nettables\nrequire('libraries/playertables')\n-- This library can be used to create container inventories or container shops\nrequire('libraries/containers')\n-- This library provides a searchable, automatically updating lua API in the tools-mode via \"modmaker_api\" console command\nrequire('libraries/modmaker')\n-- This library provides an automatic graph construction of path_corner entities within the map\nrequire('libraries/pathgraph')\n-- This library (by Noya) provides player selection inspection and management from server lua\nrequire('libraries/selection')\n\n-- These internal libraries set up barebones's events and processes.  Feel free to inspect them/change them if you need to.\nrequire('internal/gamemode')\nrequire('internal/events')\n\n-- settings.lua is where you can specify many different properties for your game mode and is one of the core barebones files.\nrequire('settings')\n-- events.lua is where you can specify the actions to be taken when any event occurs and is one of the core barebones files.\nrequire('events')\n\n\n-- This is a detailed example of many of the containers.lua possibilities, but only activates if you use the provided \"playground\" map\nif GetMapName() == \"playground\" then\n  require(\"examples/playground\")\nend\n\n--require(\"examples/worldpanelsExample\")\n\n--[[\n  This function should be used to set up Async precache calls at the beginning of the gameplay.\n\n  In this function, place all of your PrecacheItemByNameAsync and PrecacheUnitByNameAsync.  These calls will be made\n  after all players have loaded in, but before they have selected their heroes. PrecacheItemByNameAsync can also\n  be used to precache dynamically-added datadriven abilities instead of items.  PrecacheUnitByNameAsync will \n  precache the precache{} block statement of the unit and all precache{} block statements for every Ability# \n  defined on the unit.\n\n  This function should only be called once.  If you want to/need to precache more items/abilities/units at a later\n  time, you can call the functions individually (for example if you want to precache units in a new wave of\n  holdout).\n\n  This function should generally only be used if the Precache() function in addon_game_mode.lua is not working.\n]]\nfunction GameMode:PostLoadPrecache()\n  DebugPrint(\"[BAREBONES] Performing Post-Load precache\")    \n  --PrecacheItemByNameAsync(\"item_example_item\", function(...) end)\n  --PrecacheItemByNameAsync(\"example_ability\", function(...) end)\n\n  --PrecacheUnitByNameAsync(\"npc_dota_hero_viper\", function(...) end)\n  --PrecacheUnitByNameAsync(\"npc_dota_hero_enigma\", function(...) end)\nend\n\n--[[\n  This function is called once and only once as soon as the first player (almost certain to be the server in local lobbies) loads in.\n  It can be used to initialize state that isn't initializeable in InitGameMode() but needs to be done before everyone loads in.\n]]\nfunction GameMode:OnFirstPlayerLoaded()\n  DebugPrint(\"[BAREBONES] First Player has loaded\")\nend\n\n--[[\n  This function is called once and only once after all players have loaded into the game, right as the hero selection time begins.\n  It can be used to initialize non-hero player state or adjust the hero selection (i.e. force random etc)\n]]\nfunction GameMode:OnAllPlayersLoaded()\n  DebugPrint(\"[BAREBONES] All Players have loaded into the game\")\nend\n\n--[[\n  This function is called once and only once for every player when they spawn into the game for the first time.  It is also called\n  if the player's hero is replaced with a new hero for any reason.  This function is useful for initializing heroes, such as adding\n  levels, changing the starting gold, removing/adding abilities, adding physics, etc.\n\n  The hero parameter is the hero entity that just spawned in\n]]\nfunction GameMode:OnHeroInGame(hero)\n  DebugPrint(\"[BAREBONES] Hero spawned in game for first time -- \" .. hero:GetUnitName())\n\n  -- This line for example will set the starting gold of every hero to 500 unreliable gold\n  --hero:SetGold(500, false)\n\n  -- These lines will create an item and add it to the player, effectively ensuring they start with the item\n  local item = CreateItem(\"item_example_item\", hero, hero)\n  hero:AddItem(item)\n\n  --[[ --These lines if uncommented will replace the W ability of any hero that loads into the game\n    --with the \"example_ability\" ability\n\n  local abil = hero:GetAbilityByIndex(1)\n  hero:RemoveAbility(abil:GetAbilityName())\n  hero:AddAbility(\"example_ability\")]]\nend\n\n--[[\n  This function is called once and only once when the game completely begins (about 0:00 on the clock).  At this point,\n  gold will begin to go up in ticks if configured, creeps will spawn, towers will become damageable etc.  This function\n  is useful for starting any game logic timers/thinkers, beginning the first round, etc.\n]]\nfunction GameMode:OnGameInProgress()\n  DebugPrint(\"[BAREBONES] The game has officially begun\")\n\n  Timers:CreateTimer(30, -- Start this timer 30 game-time seconds later\n    function()\n      DebugPrint(\"This function is called 30 seconds after the game begins, and every 30 seconds thereafter\")\n      return 30.0 -- Rerun this timer every 30 game-time seconds \n    end)\nend\n\n\n\n-- This function initializes the game mode and is called before anyone loads into the game\n-- It can be used to pre-initialize any values/tables that will be needed later\nfunction GameMode:InitGameMode()\n  GameMode = self\n  DebugPrint('[BAREBONES] Starting to load Barebones gamemode...')\n\n  -- Commands can be registered for debugging purposes or as functions that can be called by the custom Scaleform UI\n  Convars:RegisterCommand( \"command_example\", Dynamic_Wrap(GameMode, 'ExampleConsoleCommand'), \"A console command example\", FCVAR_CHEAT )\n\n  DebugPrint('[BAREBONES] Done loading Barebones gamemode!\\n\\n')\nend\n\n-- This is an example console command\nfunction GameMode:ExampleConsoleCommand()\n  print( '******* Example Console Command ***************' )\n  local cmdPlayer = Convars:GetCommandClient()\n  if cmdPlayer then\n    local playerID = cmdPlayer:GetPlayerID()\n    if playerID ~= nil and playerID ~= -1 then\n      -- Do something here for the player who called this command\n      PlayerResource:ReplaceHeroWith(playerID, \"npc_dota_hero_viper\", 1000, 1000)\n    end\n  end\n\n  print( '*********************************************' )\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/internal/events.lua",
    "content": "-- The overall game state has changed\nfunction GameMode:_OnGameRulesStateChange(keys)\n  if GameMode._reentrantCheck then\n    return\n  end\n\n  local newState = GameRules:State_Get()\n  if newState == DOTA_GAMERULES_STATE_WAIT_FOR_PLAYERS_TO_LOAD then\n    self.bSeenWaitForPlayers = true\n  elseif newState == DOTA_GAMERULES_STATE_INIT then\n    --Timers:RemoveTimer(\"alljointimer\")\n  elseif newState == DOTA_GAMERULES_STATE_HERO_SELECTION then\n    GameMode:PostLoadPrecache()\n    GameMode:OnAllPlayersLoaded()\n\n    if USE_CUSTOM_TEAM_COLORS_FOR_PLAYERS then\n      for i=0,9 do\n        if PlayerResource:IsValidPlayer(i) then\n          local color = TEAM_COLORS[PlayerResource:GetTeam(i)]\n          PlayerResource:SetCustomPlayerColor(i, color[1], color[2], color[3])\n        end\n      end\n    end\n  elseif newState == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then\n    GameMode:OnGameInProgress()\n  end\n\n  GameMode._reentrantCheck = true\n  GameMode:OnGameRulesStateChange(keys)\n  GameMode._reentrantCheck = false\nend\n\n-- An NPC has spawned somewhere in game.  This includes heroes\nfunction GameMode:_OnNPCSpawned(keys)\n  if GameMode._reentrantCheck then\n    return\n  end\n\n  local npc = EntIndexToHScript(keys.entindex)\n\n  if npc:IsRealHero() and npc.bFirstSpawned == nil then\n    npc.bFirstSpawned = true\n    GameMode:OnHeroInGame(npc)\n  end\n\n  GameMode._reentrantCheck = true\n  GameMode:OnNPCSpawned(keys)\n  GameMode._reentrantCheck = false\nend\n\n-- An entity died\nfunction GameMode:_OnEntityKilled( keys )\n  if GameMode._reentrantCheck then\n    return\n  end\n\n  -- The Unit that was Killed\n  local killedUnit = EntIndexToHScript( keys.entindex_killed )\n  -- The Killing entity\n  local killerEntity = nil\n\n  if keys.entindex_attacker ~= nil then\n    killerEntity = EntIndexToHScript( keys.entindex_attacker )\n  end\n\n  if killedUnit:IsRealHero() then \n    DebugPrint(\"KILLED, KILLER: \" .. killedUnit:GetName() .. \" -- \" .. killerEntity:GetName())\n    if END_GAME_ON_KILLS and GetTeamHeroKills(killerEntity:GetTeam()) >= KILLS_TO_END_GAME_FOR_TEAM then\n      GameRules:SetSafeToLeave( true )\n      GameRules:SetGameWinner( killerEntity:GetTeam() )\n    end\n\n    --PlayerResource:GetTeamKills\n    if SHOW_KILLS_ON_TOPBAR then\n      GameRules:GetGameModeEntity():SetTopBarTeamValue ( DOTA_TEAM_BADGUYS, GetTeamHeroKills(DOTA_TEAM_BADGUYS) )\n      GameRules:GetGameModeEntity():SetTopBarTeamValue ( DOTA_TEAM_GOODGUYS, GetTeamHeroKills(DOTA_TEAM_GOODGUYS) )\n    end\n  end\n\n  GameMode._reentrantCheck = true\n  GameMode:OnEntityKilled( keys )\n  GameMode._reentrantCheck = false\nend\n\n-- This function is called once when the player fully connects and becomes \"Ready\" during Loading\nfunction GameMode:_OnConnectFull(keys)\n  if GameMode._reentrantCheck then\n    return\n  end\n\n  GameMode:_CaptureGameMode()\n\n  local entIndex = keys.index+1\n  -- The Player entity of the joining user\n  local ply = EntIndexToHScript(entIndex)\n  \n  local userID = keys.userid\n\n  self.vUserIds = self.vUserIds or {}\n  self.vUserIds[userID] = ply\n\n  GameMode._reentrantCheck = true\n  GameMode:OnConnectFull( keys )\n  GameMode._reentrantCheck = false\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/internal/eventtest.lua",
    "content": "function GameMode:StartEventTest()\n\tListenToGameEvent(\"team_info\", Dynamic_Wrap(GameMode, 'On_team_info'), self)\n\tListenToGameEvent(\"team_score\", Dynamic_Wrap(GameMode, 'On_team_score'), self)\n\tListenToGameEvent(\"teamplay_broadcast_audio\", Dynamic_Wrap(GameMode, 'On_teamplay_broadcast_audio'), self)\n\tListenToGameEvent(\"player_team\", Dynamic_Wrap(GameMode, 'On_player_team'), self)\n\tListenToGameEvent(\"player_class\", Dynamic_Wrap(GameMode, 'On_player_class'), self)\n\tListenToGameEvent(\"player_death\", Dynamic_Wrap(GameMode, 'On_player_death '), self)\n\tListenToGameEvent(\"player_hurt\", Dynamic_Wrap(GameMode, 'On_player_hurt '), self)\n\tListenToGameEvent(\"player_chat\", Dynamic_Wrap(GameMode, 'On_player_chat '), self)\n\tListenToGameEvent(\"player_score\", Dynamic_Wrap(GameMode, 'On_player_score'), self)\n\tListenToGameEvent(\"player_spawn\", Dynamic_Wrap(GameMode, 'On_player_spawn'), self)\n\tListenToGameEvent(\"player_shoot\", Dynamic_Wrap(GameMode, 'On_player_shoot'), self)\n\tListenToGameEvent(\"player_use\", Dynamic_Wrap(GameMode, 'On_player_use'), self)\n\tListenToGameEvent(\"player_changename\", Dynamic_Wrap(GameMode, 'On_player_changename'), self)\n\tListenToGameEvent(\"player_hintmessage\", Dynamic_Wrap(GameMode, 'On_player_hintmessage'), self)\n\tListenToGameEvent(\"player_reconnected\", Dynamic_Wrap(GameMode, 'On_player_reconnected '), self)\n\tListenToGameEvent(\"game_init\", Dynamic_Wrap(GameMode, 'On_game_init'), self)\n\tListenToGameEvent(\"game_newmap\", Dynamic_Wrap(GameMode, 'On_game_newmap'), self)\n\tListenToGameEvent(\"game_start\", Dynamic_Wrap(GameMode, 'On_game_start'), self)\n\tListenToGameEvent(\"game_end\", Dynamic_Wrap(GameMode, 'On_game_end'), self)\n\tListenToGameEvent(\"round_start\", Dynamic_Wrap(GameMode, 'On_round_start'), self)\n\tListenToGameEvent(\"round_end\", Dynamic_Wrap(GameMode, 'On_round_end'), self)\n\tListenToGameEvent(\"round_start_pre_entity\", Dynamic_Wrap(GameMode, 'On_round_start_pre_entity'), self)\n\tListenToGameEvent(\"teamplay_round_start\", Dynamic_Wrap(GameMode, 'On_teamplay_round_start'), self)\n\tListenToGameEvent(\"hostname_changed\", Dynamic_Wrap(GameMode, 'On_hostname_changed'), self)\n\tListenToGameEvent(\"difficulty_changed\", Dynamic_Wrap(GameMode, 'On_difficulty_changed'), self)\n\tListenToGameEvent(\"finale_start\", Dynamic_Wrap(GameMode, 'On_finale_start'), self)\n\tListenToGameEvent(\"game_message\", Dynamic_Wrap(GameMode, 'On_game_message'), self)\n\tListenToGameEvent(\"break_breakable\", Dynamic_Wrap(GameMode, 'On_break_breakable'), self)\n\tListenToGameEvent(\"break_prop\", Dynamic_Wrap(GameMode, 'On_break_prop'), self)\n\t--ListenToGameEvent(\"npc_spawned\", Dynamic_Wrap(GameMode, 'On_npc_spawned'), self)\n\tListenToGameEvent(\"npc_replaced\", Dynamic_Wrap(GameMode, 'On_npc_replaced'), self)\n\t--ListenToGameEvent(\"entity_killed\", Dynamic_Wrap(GameMode, 'On_entity_killed'), self)\n\t--ListenToGameEvent(\"entity_hurt\", Dynamic_Wrap(GameMode, 'On_entity_hurt'), self)\n\tListenToGameEvent(\"bonus_updated\", Dynamic_Wrap(GameMode, 'On_bonus_updated'), self)\n\tListenToGameEvent(\"player_stats_updated\", Dynamic_Wrap(GameMode, 'On_player_stats_updated'), self)\n\tListenToGameEvent(\"achievement_event\", Dynamic_Wrap(GameMode, 'On_achievement_event'), self)\n\tListenToGameEvent(\"achievement_earned\", Dynamic_Wrap(GameMode, 'On_achievement_earned'), self)\n\tListenToGameEvent(\"achievement_write_failed\", Dynamic_Wrap(GameMode, 'On_achievement_write_failed'), self)\n\tListenToGameEvent(\"physgun_pickup\", Dynamic_Wrap(GameMode, 'On_physgun_pickup'), self)\n\tListenToGameEvent(\"flare_ignite_npc\", Dynamic_Wrap(GameMode, 'On_flare_ignite_npc'), self)\n\tListenToGameEvent(\"helicopter_grenade_punt_miss\", Dynamic_Wrap(GameMode, 'On_helicopter_grenade_punt_miss'), self)\n\tListenToGameEvent(\"user_data_downloaded\", Dynamic_Wrap(GameMode, 'On_user_data_downloaded'), self)\n\tListenToGameEvent(\"ragdoll_dissolved\", Dynamic_Wrap(GameMode, 'On_ragdoll_dissolved'), self)\n\tListenToGameEvent(\"gameinstructor_draw\", Dynamic_Wrap(GameMode, 'On_gameinstructor_draw'), self)\n\tListenToGameEvent(\"gameinstructor_nodraw\", Dynamic_Wrap(GameMode, 'On_gameinstructor_nodraw'), self)\n\tListenToGameEvent(\"map_transition\", Dynamic_Wrap(GameMode, 'On_map_transition'), self)\n\tListenToGameEvent(\"instructor_server_hint_create\", Dynamic_Wrap(GameMode, 'On_instructor_server_hint_create'), self)\n\tListenToGameEvent(\"instructor_server_hint_stop\", Dynamic_Wrap(GameMode, 'On_instructor_server_hint_stop'), self)\n\tListenToGameEvent(\"chat_new_message\", Dynamic_Wrap(GameMode, 'On_chat_new_message'), self)\n\tListenToGameEvent(\"chat_members_changed\", Dynamic_Wrap(GameMode, 'On_chat_members_changed'), self)\n\tListenToGameEvent(\"game_rules_state_change\", Dynamic_Wrap(GameMode, 'On_game_rules_state_change'), self)\n\tListenToGameEvent(\"inventory_updated\", Dynamic_Wrap(GameMode, 'On_inventory_updated'), self)\n\tListenToGameEvent(\"cart_updated\", Dynamic_Wrap(GameMode, 'On_cart_updated'), self)\n\tListenToGameEvent(\"store_pricesheet_updated\", Dynamic_Wrap(GameMode, 'On_store_pricesheet_updated'), self)\n\tListenToGameEvent(\"gc_connected\", Dynamic_Wrap(GameMode, 'On_gc_connected'), self)\n\tListenToGameEvent(\"item_schema_initialized\", Dynamic_Wrap(GameMode, 'On_item_schema_initialized'), self)\n\tListenToGameEvent(\"drop_rate_modified\", Dynamic_Wrap(GameMode, 'On_drop_rate_modified'), self)\n\tListenToGameEvent(\"event_ticket_modified\", Dynamic_Wrap(GameMode, 'On_event_ticket_modified'), self)\n\tListenToGameEvent(\"modifier_event\", Dynamic_Wrap(GameMode, 'On_modifier_event'), self)\n\tListenToGameEvent(\"dota_player_kill\", Dynamic_Wrap(GameMode, 'On_dota_player_kill'), self)\n\tListenToGameEvent(\"dota_player_deny\", Dynamic_Wrap(GameMode, 'On_dota_player_deny'), self)\n\tListenToGameEvent(\"dota_barracks_kill\", Dynamic_Wrap(GameMode, 'On_dota_barracks_kill'), self)\n\tListenToGameEvent(\"dota_tower_kill\", Dynamic_Wrap(GameMode, 'On_dota_tower_kill'), self)\n\tListenToGameEvent(\"dota_roshan_kill\", Dynamic_Wrap(GameMode, 'On_dota_roshan_kill'), self)\n\tListenToGameEvent(\"dota_courier_lost\", Dynamic_Wrap(GameMode, 'On_dota_courier_lost'), self)\n\tListenToGameEvent(\"dota_courier_respawned\", Dynamic_Wrap(GameMode, 'On_dota_courier_respawned'), self)\n\tListenToGameEvent(\"dota_glyph_used\", Dynamic_Wrap(GameMode, 'On_dota_glyph_used'), self)\n\tListenToGameEvent(\"dota_super_creeps\", Dynamic_Wrap(GameMode, 'On_dota_super_creeps'), self)\n\tListenToGameEvent(\"dota_item_purchase\", Dynamic_Wrap(GameMode, 'On_dota_item_purchase'), self)\n\tListenToGameEvent(\"dota_item_gifted\", Dynamic_Wrap(GameMode, 'On_dota_item_gifted'), self)\n\tListenToGameEvent(\"dota_rune_pickup\", Dynamic_Wrap(GameMode, 'On_dota_rune_pickup'), self)\n\tListenToGameEvent(\"dota_rune_spotted\", Dynamic_Wrap(GameMode, 'On_dota_rune_spotted'), self)\n\tListenToGameEvent(\"dota_item_spotted\", Dynamic_Wrap(GameMode, 'On_dota_item_spotted'), self)\n\tListenToGameEvent(\"dota_no_battle_points\", Dynamic_Wrap(GameMode, 'On_dota_no_battle_points'), self)\n\tListenToGameEvent(\"dota_chat_informational\", Dynamic_Wrap(GameMode, 'On_dota_chat_informational'), self)\n\tListenToGameEvent(\"dota_action_item\", Dynamic_Wrap(GameMode, 'On_dota_action_item'), self)\n\tListenToGameEvent(\"dota_chat_ban_notification\", Dynamic_Wrap(GameMode, 'On_dota_chat_ban_notification'), self)\n\tListenToGameEvent(\"dota_chat_event\", Dynamic_Wrap(GameMode, 'On_dota_chat_event'), self)\n\tListenToGameEvent(\"dota_chat_timed_reward\", Dynamic_Wrap(GameMode, 'On_dota_chat_timed_reward'), self)\n\tListenToGameEvent(\"dota_pause_event\", Dynamic_Wrap(GameMode, 'On_dota_pause_event'), self)\n\tListenToGameEvent(\"dota_chat_kill_streak\", Dynamic_Wrap(GameMode, 'On_dota_chat_kill_streak'), self)\n\tListenToGameEvent(\"dota_chat_first_blood\", Dynamic_Wrap(GameMode, 'On_dota_chat_first_blood'), self)\n\tListenToGameEvent(\"dota_player_update_hero_selection\", Dynamic_Wrap(GameMode, 'On_dota_player_update_hero_selection'), self)\n\tListenToGameEvent(\"dota_player_update_selected_unit\", Dynamic_Wrap(GameMode, 'On_dota_player_update_selected_unit'), self)\n\tListenToGameEvent(\"dota_player_update_query_unit\", Dynamic_Wrap(GameMode, 'On_dota_player_update_query_unit'), self)\n\tListenToGameEvent(\"dota_player_update_killcam_unit\", Dynamic_Wrap(GameMode, 'On_dota_player_update_killcam_unit'), self)\n\tListenToGameEvent(\"dota_player_take_tower_damage\", Dynamic_Wrap(GameMode, 'On_dota_player_take_tower_damage'), self)\n\tListenToGameEvent(\"dota_hud_error_message\", Dynamic_Wrap(GameMode, 'On_dota_hud_error_message'), self)\n\tListenToGameEvent(\"dota_action_success\", Dynamic_Wrap(GameMode, 'On_dota_action_success'), self)\n\tListenToGameEvent(\"dota_starting_position_changed\", Dynamic_Wrap(GameMode, 'On_dota_starting_position_changed'), self)\n\tListenToGameEvent(\"dota_money_changed\", Dynamic_Wrap(GameMode, 'On_dota_money_changed'), self)\n\tListenToGameEvent(\"dota_enemy_money_changed\", Dynamic_Wrap(GameMode, 'On_dota_enemy_money_changed'), self)\n\tListenToGameEvent(\"dota_portrait_unit_stats_changed\", Dynamic_Wrap(GameMode, 'On_dota_portrait_unit_stats_changed'), self)\n\tListenToGameEvent(\"dota_portrait_unit_modifiers_changed\", Dynamic_Wrap(GameMode, 'On_dota_portrait_unit_modifiers_changed'), self)\n\tListenToGameEvent(\"dota_force_portrait_update\", Dynamic_Wrap(GameMode, 'On_dota_force_portrait_update'), self)\n\tListenToGameEvent(\"dota_inventory_changed\", Dynamic_Wrap(GameMode, 'On_dota_inventory_changed'), self)\n\tListenToGameEvent(\"dota_item_picked_up\", Dynamic_Wrap(GameMode, 'On_dota_item_picked_up'), self)\n\tListenToGameEvent(\"dota_inventory_item_changed\", Dynamic_Wrap(GameMode, 'On_dota_inventory_item_changed'), self)\n\tListenToGameEvent(\"dota_ability_changed\", Dynamic_Wrap(GameMode, 'On_dota_ability_changed'), self)\n\tListenToGameEvent(\"dota_portrait_ability_layout_changed\", Dynamic_Wrap(GameMode, 'On_dota_portrait_ability_layout_changed'), self)\n\tListenToGameEvent(\"dota_inventory_item_added\", Dynamic_Wrap(GameMode, 'On_dota_inventory_item_added'), self)\n\tListenToGameEvent(\"dota_inventory_changed_query_unit\", Dynamic_Wrap(GameMode, 'On_dota_inventory_changed_query_unit'), self)\n\tListenToGameEvent(\"dota_link_clicked\", Dynamic_Wrap(GameMode, 'On_dota_link_clicked'), self)\n\tListenToGameEvent(\"dota_set_quick_buy\", Dynamic_Wrap(GameMode, 'On_dota_set_quick_buy'), self)\n\tListenToGameEvent(\"dota_quick_buy_changed\", Dynamic_Wrap(GameMode, 'On_dota_quick_buy_changed'), self)\n\tListenToGameEvent(\"dota_player_shop_changed\", Dynamic_Wrap(GameMode, 'On_dota_player_shop_changed'), self)\n\tListenToGameEvent(\"dota_player_show_killcam\", Dynamic_Wrap(GameMode, 'On_dota_player_show_killcam'), self)\n\tListenToGameEvent(\"dota_player_show_minikillcam\", Dynamic_Wrap(GameMode, 'On_dota_player_show_minikillcam'), self)\n\tListenToGameEvent(\"gc_user_session_created\", Dynamic_Wrap(GameMode, 'On_gc_user_session_created'), self)\n\tListenToGameEvent(\"team_data_updated\", Dynamic_Wrap(GameMode, 'On_team_data_updated'), self)\n\tListenToGameEvent(\"guild_data_updated\", Dynamic_Wrap(GameMode, 'On_guild_data_updated'), self)\n\tListenToGameEvent(\"guild_open_parties_updated\", Dynamic_Wrap(GameMode, 'On_guild_open_parties_updated'), self)\n\tListenToGameEvent(\"fantasy_updated\", Dynamic_Wrap(GameMode, 'On_fantasy_updated'), self)\n\tListenToGameEvent(\"fantasy_league_changed\", Dynamic_Wrap(GameMode, 'On_fantasy_league_changed'), self)\n\tListenToGameEvent(\"fantasy_score_info_changed\", Dynamic_Wrap(GameMode, 'On_fantasy_score_info_changed'), self)\n\tListenToGameEvent(\"player_info_updated\", Dynamic_Wrap(GameMode, 'On_player_info_updated'), self)\n\tListenToGameEvent(\"game_rules_state_change\", Dynamic_Wrap(GameMode, 'On_game_rules_state_change'), self)\n\tListenToGameEvent(\"match_history_updated\", Dynamic_Wrap(GameMode, 'On_match_history_updated'), self)\n\tListenToGameEvent(\"match_details_updated\", Dynamic_Wrap(GameMode, 'On_match_details_updated'), self)\n\tListenToGameEvent(\"live_games_updated\", Dynamic_Wrap(GameMode, 'On_live_games_updated'), self)\n\tListenToGameEvent(\"recent_matches_updated\", Dynamic_Wrap(GameMode, 'On_recent_matches_updated'), self)\n\tListenToGameEvent(\"news_updated\", Dynamic_Wrap(GameMode, 'On_news_updated'), self)\n\tListenToGameEvent(\"persona_updated\", Dynamic_Wrap(GameMode, 'On_persona_updated'), self)\n\tListenToGameEvent(\"tournament_state_updated\", Dynamic_Wrap(GameMode, 'On_tournament_state_updated'), self)\n\tListenToGameEvent(\"party_updated\", Dynamic_Wrap(GameMode, 'On_party_updated'), self)\n\tListenToGameEvent(\"lobby_updated\", Dynamic_Wrap(GameMode, 'On_lobby_updated'), self)\n\tListenToGameEvent(\"dashboard_caches_cleared\", Dynamic_Wrap(GameMode, 'On_dashboard_caches_cleared'), self)\n\tListenToGameEvent(\"last_hit\", Dynamic_Wrap(GameMode, 'On_last_hit'), self)\n\tListenToGameEvent(\"player_completed_game\", Dynamic_Wrap(GameMode, 'On_player_completed_game'), self)\n\t--ListenToGameEvent(\"dota_combatlog\", Dynamic_Wrap(GameMode, 'On_dota_combatlog'), self)\n\tListenToGameEvent(\"player_reconnected\", Dynamic_Wrap(GameMode, 'On_player_reconnected'), self)\n\tListenToGameEvent(\"nommed_tree\", Dynamic_Wrap(GameMode, 'On_nommed_tree'), self)\n\tListenToGameEvent(\"dota_rune_activated_server\", Dynamic_Wrap(GameMode, 'On_dota_rune_activated_server'), self)\n\tListenToGameEvent(\"dota_player_gained_level\", Dynamic_Wrap(GameMode, 'On_dota_player_gained_level'), self)\n\tListenToGameEvent(\"dota_player_pick_hero\", Dynamic_Wrap(GameMode, 'On_dota_player_pick_hero'), self)\n\tListenToGameEvent(\"dota_player_learned_ability\", Dynamic_Wrap(GameMode, 'On_dota_player_learned_ability'), self)\n\tListenToGameEvent(\"dota_player_used_ability\", Dynamic_Wrap(GameMode, 'On_dota_player_used_ability'), self)\n\tListenToGameEvent(\"dota_non_player_used_ability\", Dynamic_Wrap(GameMode, 'On_dota_non_player_used_ability'), self)\n\tListenToGameEvent(\"dota_ability_channel_finished\", Dynamic_Wrap(GameMode, 'On_dota_ability_channel_finished'), self)\n\tListenToGameEvent(\"dota_holdout_revive_complete\", Dynamic_Wrap(GameMode, 'On_dota_holdout_revive_complete'), self)\n\tListenToGameEvent(\"dota_player_killed\", Dynamic_Wrap(GameMode, 'On_dota_player_killed'), self)\n\tListenToGameEvent(\"bindpanel_open\", Dynamic_Wrap(GameMode, 'On_bindpanel_open'), self)\n\tListenToGameEvent(\"bindpanel_close\", Dynamic_Wrap(GameMode, 'On_bindpanel_close'), self)\n\tListenToGameEvent(\"keybind_changed\", Dynamic_Wrap(GameMode, 'On_keybind_changed'), self)\n\tListenToGameEvent(\"dota_item_drag_begin\", Dynamic_Wrap(GameMode, 'On_dota_item_drag_begin'), self)\n\tListenToGameEvent(\"dota_item_drag_end\", Dynamic_Wrap(GameMode, 'On_dota_item_drag_end'), self)\n\tListenToGameEvent(\"dota_shop_item_drag_begin\", Dynamic_Wrap(GameMode, 'On_dota_shop_item_drag_begin'), self)\n\tListenToGameEvent(\"dota_shop_item_drag_end\", Dynamic_Wrap(GameMode, 'On_dota_shop_item_drag_end'), self)\n\tListenToGameEvent(\"dota_item_purchased\", Dynamic_Wrap(GameMode, 'On_dota_item_purchased'), self)\n\tListenToGameEvent(\"dota_item_used\", Dynamic_Wrap(GameMode, 'On_dota_item_used'), self)\n\tListenToGameEvent(\"dota_item_auto_purchase\", Dynamic_Wrap(GameMode, 'On_dota_item_auto_purchase'), self)\n\tListenToGameEvent(\"dota_unit_event\", Dynamic_Wrap(GameMode, 'On_dota_unit_event'), self)\n\tListenToGameEvent(\"dota_quest_started\", Dynamic_Wrap(GameMode, 'On_dota_quest_started'), self)\n\tListenToGameEvent(\"dota_quest_completed\", Dynamic_Wrap(GameMode, 'On_dota_quest_completed'), self)\n\tListenToGameEvent(\"gameui_activated\", Dynamic_Wrap(GameMode, 'On_gameui_activated'), self)\n\tListenToGameEvent(\"gameui_hidden\", Dynamic_Wrap(GameMode, 'On_gameui_hidden'), self)\n\tListenToGameEvent(\"player_fullyjoined\", Dynamic_Wrap(GameMode, 'On_player_fullyjoined'), self)\n\tListenToGameEvent(\"dota_spectate_hero\", Dynamic_Wrap(GameMode, 'On_dota_spectate_hero'), self)\n\tListenToGameEvent(\"dota_match_done\", Dynamic_Wrap(GameMode, 'On_dota_match_done'), self)\n\tListenToGameEvent(\"dota_match_done_client\", Dynamic_Wrap(GameMode, 'On_dota_match_done_client'), self)\n\tListenToGameEvent(\"set_instructor_group_enabled\", Dynamic_Wrap(GameMode, 'On_set_instructor_group_enabled'), self)\n\tListenToGameEvent(\"joined_chat_channel\", Dynamic_Wrap(GameMode, 'On_joined_chat_channel'), self)\n\tListenToGameEvent(\"left_chat_channel\", Dynamic_Wrap(GameMode, 'On_left_chat_channel'), self)\n\tListenToGameEvent(\"gc_chat_channel_list_updated\", Dynamic_Wrap(GameMode, 'On_gc_chat_channel_list_updated'), self)\n\tListenToGameEvent(\"today_messages_updated\", Dynamic_Wrap(GameMode, 'On_today_messages_updated'), self)\n\tListenToGameEvent(\"file_downloaded\", Dynamic_Wrap(GameMode, 'On_file_downloaded'), self)\n\tListenToGameEvent(\"player_report_counts_updated\", Dynamic_Wrap(GameMode, 'On_player_report_counts_updated'), self)\n\tListenToGameEvent(\"scaleform_file_download_complete\", Dynamic_Wrap(GameMode, 'On_scaleform_file_download_complete'), self)\n\tListenToGameEvent(\"item_purchased\", Dynamic_Wrap(GameMode, 'On_item_purchased'), self)\n\tListenToGameEvent(\"gc_mismatched_version\", Dynamic_Wrap(GameMode, 'On_gc_mismatched_version'), self)\n\tListenToGameEvent(\"demo_skip\", Dynamic_Wrap(GameMode, 'On_demo_skip'), self)\n\tListenToGameEvent(\"demo_start\", Dynamic_Wrap(GameMode, 'On_demo_start'), self)\n\tListenToGameEvent(\"demo_stop\", Dynamic_Wrap(GameMode, 'On_demo_stop'), self)\n\tListenToGameEvent(\"map_shutdown\", Dynamic_Wrap(GameMode, 'On_map_shutdown'), self)\n\tListenToGameEvent(\"dota_workshop_fileselected\", Dynamic_Wrap(GameMode, 'On_dota_workshop_fileselected'), self)\n\tListenToGameEvent(\"dota_workshop_filecanceled\", Dynamic_Wrap(GameMode, 'On_dota_workshop_filecanceled'), self)\n\tListenToGameEvent(\"rich_presence_updated\", Dynamic_Wrap(GameMode, 'On_rich_presence_updated'), self)\n\tListenToGameEvent(\"dota_hero_random\", Dynamic_Wrap(GameMode, 'On_dota_hero_random'), self)\n\tListenToGameEvent(\"dota_rd_chat_turn\", Dynamic_Wrap(GameMode, 'On_dota_rd_chat_turn'), self)\n\tListenToGameEvent(\"dota_favorite_heroes_updated\", Dynamic_Wrap(GameMode, 'On_dota_favorite_heroes_updated'), self)\n\tListenToGameEvent(\"profile_closed\", Dynamic_Wrap(GameMode, 'On_profile_closed'), self)\n\tListenToGameEvent(\"item_preview_closed\", Dynamic_Wrap(GameMode, 'On_item_preview_closed'), self)\n\tListenToGameEvent(\"dashboard_switched_section\", Dynamic_Wrap(GameMode, 'On_dashboard_switched_section'), self)\n\tListenToGameEvent(\"dota_tournament_item_event\", Dynamic_Wrap(GameMode, 'On_dota_tournament_item_event'), self)\n\tListenToGameEvent(\"dota_hero_swap\", Dynamic_Wrap(GameMode, 'On_dota_hero_swap'), self)\n\tListenToGameEvent(\"dota_reset_suggested_items\", Dynamic_Wrap(GameMode, 'On_dota_reset_suggested_items'), self)\n\tListenToGameEvent(\"halloween_high_score_received\", Dynamic_Wrap(GameMode, 'On_halloween_high_score_received'), self)\n\tListenToGameEvent(\"halloween_phase_end\", Dynamic_Wrap(GameMode, 'On_halloween_phase_end'), self)\n\tListenToGameEvent(\"halloween_high_score_request_failed\", Dynamic_Wrap(GameMode, 'On_halloween_high_score_request_failed'), self)\n\tListenToGameEvent(\"dota_hud_skin_changed\", Dynamic_Wrap(GameMode, 'On_dota_hud_skin_changed'), self)\n\tListenToGameEvent(\"dota_inventory_player_got_item\", Dynamic_Wrap(GameMode, 'On_dota_inventory_player_got_item'), self)\n\tListenToGameEvent(\"player_is_experienced\", Dynamic_Wrap(GameMode, 'On_player_is_experienced'), self)\n\tListenToGameEvent(\"player_is_notexperienced\", Dynamic_Wrap(GameMode, 'On_player_is_notexperienced'), self)\n\tListenToGameEvent(\"dota_tutorial_lesson_start\", Dynamic_Wrap(GameMode, 'On_dota_tutorial_lesson_start'), self)\n\tListenToGameEvent(\"map_location_updated\", Dynamic_Wrap(GameMode, 'On_map_location_updated'), self)\n\tListenToGameEvent(\"richpresence_custom_updated\", Dynamic_Wrap(GameMode, 'On_richpresence_custom_updated'), self)\n\tListenToGameEvent(\"game_end_visible\", Dynamic_Wrap(GameMode, 'On_game_end_visible'), self)\n\tListenToGameEvent(\"antiaddiction_update\", Dynamic_Wrap(GameMode, 'On_antiaddiction_update'), self)\n\tListenToGameEvent(\"highlight_hud_element\", Dynamic_Wrap(GameMode, 'On_highlight_hud_element'), self)\n\tListenToGameEvent(\"hide_highlight_hud_element\", Dynamic_Wrap(GameMode, 'On_hide_highlight_hud_element'), self)\n\tListenToGameEvent(\"intro_video_finished\", Dynamic_Wrap(GameMode, 'On_intro_video_finished'), self)\n\tListenToGameEvent(\"matchmaking_status_visibility_changed\", Dynamic_Wrap(GameMode, 'On_matchmaking_status_visibility_changed'), self)\n\tListenToGameEvent(\"practice_lobby_visibility_changed\", Dynamic_Wrap(GameMode, 'On_practice_lobby_visibility_changed'), self)\n\tListenToGameEvent(\"dota_courier_transfer_item\", Dynamic_Wrap(GameMode, 'On_dota_courier_transfer_item'), self)\n\tListenToGameEvent(\"full_ui_unlocked\", Dynamic_Wrap(GameMode, 'On_full_ui_unlocked'), self)\n\tListenToGameEvent(\"client_connectionless_packet\", Dynamic_Wrap(GameMode, 'On_client_connectionless_packet'), self)\n\tListenToGameEvent(\"hero_selector_preview_set\", Dynamic_Wrap(GameMode, 'On_hero_selector_preview_set'), self)\n\tListenToGameEvent(\"antiaddiction_toast\", Dynamic_Wrap(GameMode, 'On_antiaddiction_toast'), self)\n\tListenToGameEvent(\"hero_picker_shown\", Dynamic_Wrap(GameMode, 'On_hero_picker_shown'), self)\n\tListenToGameEvent(\"hero_picker_hidden\", Dynamic_Wrap(GameMode, 'On_hero_picker_hidden'), self)\n\tListenToGameEvent(\"dota_local_quickbuy_changed\", Dynamic_Wrap(GameMode, 'On_dota_local_quickbuy_changed'), self)\n\tListenToGameEvent(\"show_center_message\", Dynamic_Wrap(GameMode, 'On_show_center_message'), self)\n\tListenToGameEvent(\"hud_flip_changed\", Dynamic_Wrap(GameMode, 'On_hud_flip_changed'), self)\n\tListenToGameEvent(\"frosty_points_updated\", Dynamic_Wrap(GameMode, 'On_frosty_points_updated'), self)\n\tListenToGameEvent(\"defeated\", Dynamic_Wrap(GameMode, 'On_defeated'), self)\n\tListenToGameEvent(\"reset_defeated\", Dynamic_Wrap(GameMode, 'On_reset_defeated'), self)\n\tListenToGameEvent(\"booster_state_updated\", Dynamic_Wrap(GameMode, 'On_booster_state_updated'), self)\n\tListenToGameEvent(\"event_points_updated\", Dynamic_Wrap(GameMode, 'On_event_points_updated'), self)\n\tListenToGameEvent(\"local_player_event_points\", Dynamic_Wrap(GameMode, 'On_local_player_event_points'), self)\n\tListenToGameEvent(\"custom_game_difficulty\", Dynamic_Wrap(GameMode, 'On_custom_game_difficulty'), self)\n\tListenToGameEvent(\"tree_cut\", Dynamic_Wrap(GameMode, 'On_tree_cut'), self)\n\tListenToGameEvent(\"ugc_details_arrived\", Dynamic_Wrap(GameMode, 'On_ugc_details_arrived'), self)\n\tListenToGameEvent(\"ugc_subscribed\", Dynamic_Wrap(GameMode, 'On_ugc_subscribed'), self)\n\tListenToGameEvent(\"ugc_unsubscribed\", Dynamic_Wrap(GameMode, 'On_ugc_unsubscribed'), self)\n\tListenToGameEvent(\"prizepool_received\", Dynamic_Wrap(GameMode, 'On_prizepool_received'), self)\n\tListenToGameEvent(\"microtransaction_success\", Dynamic_Wrap(GameMode, 'On_microtransaction_success'), self)\n\tListenToGameEvent(\"dota_rubick_ability_steal\", Dynamic_Wrap(GameMode, 'On_dota_rubick_ability_steal'), self)\n\tListenToGameEvent(\"compendium_event_actions_loaded\", Dynamic_Wrap(GameMode, 'On_compendium_event_actions_loaded'), self)\n\tListenToGameEvent(\"compendium_selections_loaded\", Dynamic_Wrap(GameMode, 'On_compendium_selections_loaded'), self)\n\tListenToGameEvent(\"compendium_set_selection_failed\", Dynamic_Wrap(GameMode, 'On_compendium_set_selection_failed'), self)\n\tListenToGameEvent(\"community_cached_names_updated\", Dynamic_Wrap(GameMode, 'On_community_cached_names_updated'), self)\n\tListenToGameEvent(\"dota_team_kill_credit\", Dynamic_Wrap(GameMode, 'On_dota_team_kill_credit'), self)\n\n\tListenToGameEvent(\"dota_effigy_kill\", Dynamic_Wrap(GameMode, 'On_dota_effigy_kill'), self)\n\tListenToGameEvent(\"dota_chat_assassin_announce\", Dynamic_Wrap(GameMode, 'On_dota_chat_assassin_announce'), self)\n\tListenToGameEvent(\"dota_chat_assassin_denied\", Dynamic_Wrap(GameMode, 'On_dota_chat_assassin_denied'), self)\n\tListenToGameEvent(\"dota_chat_assassin_success\", Dynamic_Wrap(GameMode, 'On_dota_chat_assassin_success'), self)\n\tListenToGameEvent(\"player_info_individual_updated\", Dynamic_Wrap(GameMode, 'On_player_info_individual_updated'), self)\n\tListenToGameEvent(\"dota_player_begin_cast\", Dynamic_Wrap(GameMode, 'On_dota_player_begin_cast'), self)\n\tListenToGameEvent(\"dota_non_player_begin_cast\", Dynamic_Wrap(GameMode, 'On_dota_non_player_begin_cast'), self)\n\tListenToGameEvent(\"dota_item_combined\", Dynamic_Wrap(GameMode, 'On_dota_item_combined'), self)\n\tListenToGameEvent(\"profile_opened\", Dynamic_Wrap(GameMode, 'On_profile_opened'), self)\n\tListenToGameEvent(\"dota_tutorial_task_advance\", Dynamic_Wrap(GameMode, 'On_dota_tutorial_task_advance'), self)\n\tListenToGameEvent(\"dota_tutorial_shop_toggled\", Dynamic_Wrap(GameMode, 'On_dota_tutorial_shop_toggled'), self)\n\tListenToGameEvent(\"ugc_download_requested\", Dynamic_Wrap(GameMode, 'On_ugc_download_requested'), self)\n\tListenToGameEvent(\"ugc_installed\", Dynamic_Wrap(GameMode, 'On_ugc_installed'), self)\n\tListenToGameEvent(\"compendium_trophies_loaded\", Dynamic_Wrap(GameMode, 'On_compendium_trophies_loaded'), self)\n\tListenToGameEvent(\"spec_item_pickup\", Dynamic_Wrap(GameMode, 'On_spec_item_pickup'), self)\n\tListenToGameEvent(\"spec_aegis_reclaim_time\", Dynamic_Wrap(GameMode, 'On_spec_aegis_reclaim_time'), self)\n\tListenToGameEvent(\"account_trophies_changed\", Dynamic_Wrap(GameMode, 'On_account_trophies_changed'), self)\n\tListenToGameEvent(\"account_all_hero_challenge_changed\", Dynamic_Wrap(GameMode, 'On_account_all_hero_challenge_changed'), self)\n\tListenToGameEvent(\"team_showcase_ui_update\", Dynamic_Wrap(GameMode, 'On_team_showcase_ui_update'), self)\n\tListenToGameEvent(\"ingame_events_changed\", Dynamic_Wrap(GameMode, 'On_ingame_events_changed'), self)\n\tListenToGameEvent(\"dota_match_signout\", Dynamic_Wrap(GameMode, 'On_dota_match_signout'), self)\n\tListenToGameEvent(\"dota_illusions_created\", Dynamic_Wrap(GameMode, 'On_dota_illusions_created'), self)\n\tListenToGameEvent(\"dota_year_beast_killed\", Dynamic_Wrap(GameMode, 'On_dota_year_beast_killed'), self)\n\tListenToGameEvent(\"dota_hero_undoselection\", Dynamic_Wrap(GameMode, 'On_dota_hero_undoselection'), self)\n\tListenToGameEvent(\"dota_challenge_socache_updated\", Dynamic_Wrap(GameMode, 'On_dota_challenge_socache_updated'), self)\n\tListenToGameEvent(\"party_invites_updated\", Dynamic_Wrap(GameMode, 'On_party_invites_updated'), self)\n\tListenToGameEvent(\"lobby_invites_updated\", Dynamic_Wrap(GameMode, 'On_lobby_invites_updated'), self)\n\tListenToGameEvent(\"custom_game_mode_list_updated\", Dynamic_Wrap(GameMode, 'On_custom_game_mode_list_updated'), self)\n\tListenToGameEvent(\"custom_game_lobby_list_updated\", Dynamic_Wrap(GameMode, 'On_custom_game_lobby_list_updated'), self)\n\tListenToGameEvent(\"friend_lobby_list_updated\", Dynamic_Wrap(GameMode, 'On_friend_lobby_list_updated'), self)\n\tListenToGameEvent(\"dota_team_player_list_changed\", Dynamic_Wrap(GameMode, 'On_dota_team_player_list_changed'), self)\n\tListenToGameEvent(\"dota_player_details_changed\", Dynamic_Wrap(GameMode, 'On_dota_player_details_changed'), self)\n\tListenToGameEvent(\"player_profile_stats_updated\", Dynamic_Wrap(GameMode, 'On_player_profile_stats_updated'), self)\n\tListenToGameEvent(\"custom_game_player_count_updated\", Dynamic_Wrap(GameMode, 'On_custom_game_player_count_updated'), self)\n\tListenToGameEvent(\"custom_game_friends_played_updated\", Dynamic_Wrap(GameMode, 'On_custom_game_friends_played_updated'), self)\n\tListenToGameEvent(\"custom_games_friends_play_updated\", Dynamic_Wrap(GameMode, 'On_custom_games_friends_play_updated'), self)\n\tListenToGameEvent(\"dota_player_update_assigned_hero\", Dynamic_Wrap(GameMode, 'On_dota_player_update_assigned_hero'), self)\n\tListenToGameEvent(\"dota_player_hero_selection_dirty\", Dynamic_Wrap(GameMode, 'On_dota_player_hero_selection_dirty'), self)\n\t--ListenToGameEvent(\"dota_npc_goal_reached\", Dynamic_Wrap(GameMode, 'On_dota_npc_goal_reached'), self)\n\tListenToGameEvent(\"dota_player_selected_custom_team\", Dynamic_Wrap(GameMode, 'On_dota_player_selected_custom_team'), self)\nend\n\nfunction GameMode:On_team_info(data)\n  print(\"[BAREBONES] team_info\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_team_score(data)\n  print(\"[BAREBONES] team_score\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_teamplay_broadcast_audio(data)\n  print(\"[BAREBONES] teamplay_broadcast_audio\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_team(data)\n  print(\"[BAREBONES] player_team\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_class(data)\n  print(\"[BAREBONES] player_class\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_death (data)\n  print(\"[BAREBONES] player_death\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_hurt (data)\n  print(\"[BAREBONES] player_hurt\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_chat (data)\n  print(\"[BAREBONES] player_chat\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_score(data)\n  print(\"[BAREBONES] player_score\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_spawn(data)\n  print(\"[BAREBONES] player_spawn\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_shoot(data)\n  print(\"[BAREBONES] player_shoot\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_use(data)\n  print(\"[BAREBONES] player_use\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_changename(data)\n  print(\"[BAREBONES] player_changename\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_hintmessage(data)\n  print(\"[BAREBONES] player_hintmessage\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_reconnected (data)\n  print(\"[BAREBONES] player_reconnected\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_game_init(data)\n  print(\"[BAREBONES] game_init\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_game_newmap(data)\n  print(\"[BAREBONES] game_newmap\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_game_start(data)\n  print(\"[BAREBONES] game_start\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_game_end(data)\n  print(\"[BAREBONES] game_end\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_round_start(data)\n  print(\"[BAREBONES] round_start\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_round_end(data)\n  print(\"[BAREBONES] round_end\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_round_start_pre_entity(data)\n  print(\"[BAREBONES] round_start_pre_entity\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_teamplay_round_start(data)\n  print(\"[BAREBONES] teamplay_round_start\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_hostname_changed(data)\n  print(\"[BAREBONES] hostname_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_difficulty_changed(data)\n  print(\"[BAREBONES] difficulty_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_finale_start(data)\n  print(\"[BAREBONES] finale_start\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_game_message(data)\n  print(\"[BAREBONES] game_message\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_break_breakable(data)\n  print(\"[BAREBONES] break_breakable\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_break_prop(data)\n  print(\"[BAREBONES] break_prop\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_npc_spawned(data)\n  print(\"[BAREBONES] npc_spawned\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_npc_replaced(data)\n  print(\"[BAREBONES] npc_replaced\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_entity_killed(data)\n  print(\"[BAREBONES] entity_killed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_entity_hurt(data)\n  print(\"[BAREBONES] entity_hurt\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_bonus_updated(data)\n  print(\"[BAREBONES] bonus_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_stats_updated(data)\n  print(\"[BAREBONES] player_stats_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_achievement_event(data)\n  print(\"[BAREBONES] achievement_event\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_achievement_earned(data)\n  print(\"[BAREBONES] achievement_earned\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_achievement_write_failed(data)\n  print(\"[BAREBONES] achievement_write_failed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_physgun_pickup(data)\n  print(\"[BAREBONES] physgun_pickup\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_flare_ignite_npc(data)\n  print(\"[BAREBONES] flare_ignite_npc\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_helicopter_grenade_punt_miss(data)\n  print(\"[BAREBONES] helicopter_grenade_punt_miss\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_user_data_downloaded(data)\n  print(\"[BAREBONES] user_data_downloaded\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_ragdoll_dissolved(data)\n  print(\"[BAREBONES] ragdoll_dissolved\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_gameinstructor_draw(data)\n  print(\"[BAREBONES] gameinstructor_draw\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_gameinstructor_nodraw(data)\n  print(\"[BAREBONES] gameinstructor_nodraw\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_map_transition(data)\n  print(\"[BAREBONES] map_transition\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_instructor_server_hint_create(data)\n  print(\"[BAREBONES] instructor_server_hint_create\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_instructor_server_hint_stop(data)\n  print(\"[BAREBONES] instructor_server_hint_stop\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_chat_new_message(data)\n  print(\"[BAREBONES] chat_new_message\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_chat_members_changed(data)\n  print(\"[BAREBONES] chat_members_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_game_rules_state_change(data)\n  print(\"[BAREBONES] game_rules_state_change\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_inventory_updated(data)\n  print(\"[BAREBONES] inventory_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_cart_updated(data)\n  print(\"[BAREBONES] cart_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_store_pricesheet_updated(data)\n  print(\"[BAREBONES] store_pricesheet_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_gc_connected(data)\n  print(\"[BAREBONES] gc_connected\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_item_schema_initialized(data)\n  print(\"[BAREBONES] item_schema_initialized\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_drop_rate_modified(data)\n  print(\"[BAREBONES] drop_rate_modified\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_event_ticket_modified(data)\n  print(\"[BAREBONES] event_ticket_modified\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_modifier_event(data)\n  print(\"[BAREBONES] modifier_event\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_kill(data)\n  print(\"[BAREBONES] dota_player_kill\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_deny(data)\n  print(\"[BAREBONES] dota_player_deny\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_barracks_kill(data)\n  print(\"[BAREBONES] dota_barracks_kill\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_tower_kill(data)\n  print(\"[BAREBONES] dota_tower_kill\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_roshan_kill(data)\n  print(\"[BAREBONES] dota_roshan_kill\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_courier_lost(data)\n  print(\"[BAREBONES] dota_courier_lost\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_courier_respawned(data)\n  print(\"[BAREBONES] dota_courier_respawned\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_glyph_used(data)\n  print(\"[BAREBONES] dota_glyph_used\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_super_creeps(data)\n  print(\"[BAREBONES] dota_super_creeps\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_item_purchase(data)\n  print(\"[BAREBONES] dota_item_purchase\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_item_gifted(data)\n  print(\"[BAREBONES] dota_item_gifted\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_rune_pickup(data)\n  print(\"[BAREBONES] dota_rune_pickup\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_rune_spotted(data)\n  print(\"[BAREBONES] dota_rune_spotted\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_item_spotted(data)\n  print(\"[BAREBONES] dota_item_spotted\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_no_battle_points(data)\n  print(\"[BAREBONES] dota_no_battle_points\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_chat_informational(data)\n  print(\"[BAREBONES] dota_chat_informational\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_action_item(data)\n  print(\"[BAREBONES] dota_action_item\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_chat_ban_notification(data)\n  print(\"[BAREBONES] dota_chat_ban_notification\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_chat_event(data)\n  print(\"[BAREBONES] dota_chat_event\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_chat_timed_reward(data)\n  print(\"[BAREBONES] dota_chat_timed_reward\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_pause_event(data)\n  print(\"[BAREBONES] dota_pause_event\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_chat_kill_streak(data)\n  print(\"[BAREBONES] dota_chat_kill_streak\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_chat_first_blood(data)\n  print(\"[BAREBONES] dota_chat_first_blood\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_update_hero_selection(data)\n  print(\"[BAREBONES] dota_player_update_hero_selection\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_update_selected_unit(data)\n  print(\"[BAREBONES] dota_player_update_selected_unit\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_update_query_unit(data)\n  print(\"[BAREBONES] dota_player_update_query_unit\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_update_killcam_unit(data)\n  print(\"[BAREBONES] dota_player_update_killcam_unit\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_take_tower_damage(data)\n  print(\"[BAREBONES] dota_player_take_tower_damage\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_hud_error_message(data)\n  print(\"[BAREBONES] dota_hud_error_message\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_action_success(data)\n  print(\"[BAREBONES] dota_action_success\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_starting_position_changed(data)\n  print(\"[BAREBONES] dota_starting_position_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_money_changed(data)\n  print(\"[BAREBONES] dota_money_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_enemy_money_changed(data)\n  print(\"[BAREBONES] dota_enemy_money_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_portrait_unit_stats_changed(data)\n  print(\"[BAREBONES] dota_portrait_unit_stats_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_portrait_unit_modifiers_changed(data)\n  print(\"[BAREBONES] dota_portrait_unit_modifiers_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_force_portrait_update(data)\n  print(\"[BAREBONES] dota_force_portrait_update\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_inventory_changed(data)\n  print(\"[BAREBONES] dota_inventory_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_item_picked_up(data)\n  print(\"[BAREBONES] dota_item_picked_up\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_inventory_item_changed(data)\n  print(\"[BAREBONES] dota_inventory_item_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_ability_changed(data)\n  print(\"[BAREBONES] dota_ability_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_portrait_ability_layout_changed(data)\n  print(\"[BAREBONES] dota_portrait_ability_layout_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_inventory_item_added(data)\n  print(\"[BAREBONES] dota_inventory_item_added\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_inventory_changed_query_unit(data)\n  print(\"[BAREBONES] dota_inventory_changed_query_unit\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_link_clicked(data)\n  print(\"[BAREBONES] dota_link_clicked\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_set_quick_buy(data)\n  print(\"[BAREBONES] dota_set_quick_buy\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_quick_buy_changed(data)\n  print(\"[BAREBONES] dota_quick_buy_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_shop_changed(data)\n  print(\"[BAREBONES] dota_player_shop_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_show_killcam(data)\n  print(\"[BAREBONES] dota_player_show_killcam\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_show_minikillcam(data)\n  print(\"[BAREBONES] dota_player_show_minikillcam\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_gc_user_session_created(data)\n  print(\"[BAREBONES] gc_user_session_created\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_team_data_updated(data)\n  print(\"[BAREBONES] team_data_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_guild_data_updated(data)\n  print(\"[BAREBONES] guild_data_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_guild_open_parties_updated(data)\n  print(\"[BAREBONES] guild_open_parties_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_fantasy_updated(data)\n  print(\"[BAREBONES] fantasy_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_fantasy_league_changed(data)\n  print(\"[BAREBONES] fantasy_league_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_fantasy_score_info_changed(data)\n  print(\"[BAREBONES] fantasy_score_info_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_info_updated(data)\n  print(\"[BAREBONES] player_info_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_game_rules_state_change(data)\n  print(\"[BAREBONES] game_rules_state_change\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_match_history_updated(data)\n  print(\"[BAREBONES] match_history_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_match_details_updated(data)\n  print(\"[BAREBONES] match_details_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_live_games_updated(data)\n  print(\"[BAREBONES] live_games_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_recent_matches_updated(data)\n  print(\"[BAREBONES] recent_matches_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_news_updated(data)\n  print(\"[BAREBONES] news_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_persona_updated(data)\n  print(\"[BAREBONES] persona_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_tournament_state_updated(data)\n  print(\"[BAREBONES] tournament_state_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_party_updated(data)\n  print(\"[BAREBONES] party_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_lobby_updated(data)\n  print(\"[BAREBONES] lobby_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dashboard_caches_cleared(data)\n  print(\"[BAREBONES] dashboard_caches_cleared\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_last_hit(data)\n  print(\"[BAREBONES] last_hit\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_completed_game(data)\n  print(\"[BAREBONES] player_completed_game\")\n  PrintTable(data)\nend\n\nfunction GameMode:On_dota_combatlog(data)\n  print(\"[BAREBONES] dota_combatlog\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_reconnected(data)\n  print(\"[BAREBONES] player_reconnected\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_nommed_tree(data)\n  print(\"[BAREBONES] nommed_tree\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_rune_activated_server(data)\n  print(\"[BAREBONES] dota_rune_activated_server\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_gained_level(data)\n  print(\"[BAREBONES] dota_player_gained_level\")\n  PrintTable(data)\nend\n\nfunction GameMode:On_dota_player_pick_hero(data)\n  print(\"[BAREBONES] dota_player_pick_hero\")\n  PrintTable(data)\nend\n\nfunction GameMode:On_dota_player_learned_ability(data)\n  print(\"[BAREBONES] dota_player_learned_ability\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_used_ability(data)\n  print(\"[BAREBONES] dota_player_used_ability\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_non_player_used_ability(data)\n  print(\"[BAREBONES] dota_non_player_used_ability\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_ability_channel_finished(data)\n  print(\"[BAREBONES] dota_ability_channel_finished\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_holdout_revive_complete(data)\n  print(\"[BAREBONES] dota_holdout_revive_complete\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_killed(data)\n  print(\"[BAREBONES] dota_player_killed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_bindpanel_open(data)\n  print(\"[BAREBONES] bindpanel_open\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_bindpanel_close(data)\n  print(\"[BAREBONES] bindpanel_close\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_keybind_changed(data)\n  print(\"[BAREBONES] keybind_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_item_drag_begin(data)\n  print(\"[BAREBONES] dota_item_drag_begin\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_item_drag_end(data)\n  print(\"[BAREBONES] dota_item_drag_end\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_shop_item_drag_begin(data)\n  print(\"[BAREBONES] dota_shop_item_drag_begin\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_shop_item_drag_end(data)\n  print(\"[BAREBONES] dota_shop_item_drag_end\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_item_purchased(data)\n  print(\"[BAREBONES] dota_item_purchased\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_item_used(data)\n  print(\"[BAREBONES] dota_item_used\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_item_auto_purchase(data)\n  print(\"[BAREBONES] dota_item_auto_purchase\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_unit_event(data)\n  print(\"[BAREBONES] dota_unit_event\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_quest_started(data)\n  print(\"[BAREBONES] dota_quest_started\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_quest_completed(data)\n  print(\"[BAREBONES] dota_quest_completed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_gameui_activated(data)\n  print(\"[BAREBONES] gameui_activated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_gameui_hidden(data)\n  print(\"[BAREBONES] gameui_hidden\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_fullyjoined(data)\n  print(\"[BAREBONES] player_fullyjoined\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_spectate_hero(data)\n  print(\"[BAREBONES] dota_spectate_hero\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_match_done(data)\n  print(\"[BAREBONES] dota_match_done\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_match_done_client(data)\n  print(\"[BAREBONES] dota_match_done_client\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_set_instructor_group_enabled(data)\n  print(\"[BAREBONES] set_instructor_group_enabled\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_joined_chat_channel(data)\n  print(\"[BAREBONES] joined_chat_channel\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_left_chat_channel(data)\n  print(\"[BAREBONES] left_chat_channel\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_gc_chat_channel_list_updated(data)\n  print(\"[BAREBONES] gc_chat_channel_list_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_today_messages_updated(data)\n  print(\"[BAREBONES] today_messages_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_file_downloaded(data)\n  print(\"[BAREBONES] file_downloaded\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_report_counts_updated(data)\n  print(\"[BAREBONES] player_report_counts_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_scaleform_file_download_complete(data)\n  print(\"[BAREBONES] scaleform_file_download_complete\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_item_purchased(data)\n  print(\"[BAREBONES] item_purchased\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_gc_mismatched_version(data)\n  print(\"[BAREBONES] gc_mismatched_version\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_demo_skip(data)\n  print(\"[BAREBONES] demo_skip\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_demo_start(data)\n  print(\"[BAREBONES] demo_start\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_demo_stop(data)\n  print(\"[BAREBONES] demo_stop\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_map_shutdown(data)\n  print(\"[BAREBONES] map_shutdown\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_workshop_fileselected(data)\n  print(\"[BAREBONES] dota_workshop_fileselected\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_workshop_filecanceled(data)\n  print(\"[BAREBONES] dota_workshop_filecanceled\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_rich_presence_updated(data)\n  print(\"[BAREBONES] rich_presence_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_hero_random(data)\n  print(\"[BAREBONES] dota_hero_random\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_rd_chat_turn(data)\n  print(\"[BAREBONES] dota_rd_chat_turn\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_favorite_heroes_updated(data)\n  print(\"[BAREBONES] dota_favorite_heroes_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_profile_closed(data)\n  print(\"[BAREBONES] profile_closed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_item_preview_closed(data)\n  print(\"[BAREBONES] item_preview_closed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dashboard_switched_section(data)\n  print(\"[BAREBONES] dashboard_switched_section\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_tournament_item_event(data)\n  print(\"[BAREBONES] dota_tournament_item_event\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_hero_swap(data)\n  print(\"[BAREBONES] dota_hero_swap\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_reset_suggested_items(data)\n  print(\"[BAREBONES] dota_reset_suggested_items\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_halloween_high_score_received(data)\n  print(\"[BAREBONES] halloween_high_score_received\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_halloween_phase_end(data)\n  print(\"[BAREBONES] halloween_phase_end\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_halloween_high_score_request_failed(data)\n  print(\"[BAREBONES] halloween_high_score_request_failed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_hud_skin_changed(data)\n  print(\"[BAREBONES] dota_hud_skin_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_inventory_player_got_item(data)\n  print(\"[BAREBONES] dota_inventory_player_got_item\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_is_experienced(data)\n  print(\"[BAREBONES] player_is_experienced\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_is_notexperienced(data)\n  print(\"[BAREBONES] player_is_notexperienced\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_tutorial_lesson_start(data)\n  print(\"[BAREBONES] dota_tutorial_lesson_start\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_map_location_updated(data)\n  print(\"[BAREBONES] map_location_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_richpresence_custom_updated(data)\n  print(\"[BAREBONES] richpresence_custom_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_game_end_visible(data)\n  print(\"[BAREBONES] game_end_visible\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_antiaddiction_update(data)\n  print(\"[BAREBONES] antiaddiction_update\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_highlight_hud_element(data)\n  print(\"[BAREBONES] highlight_hud_element\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_hide_highlight_hud_element(data)\n  print(\"[BAREBONES] hide_highlight_hud_element\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_intro_video_finished(data)\n  print(\"[BAREBONES] intro_video_finished\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_matchmaking_status_visibility_changed(data)\n  print(\"[BAREBONES] matchmaking_status_visibility_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_practice_lobby_visibility_changed(data)\n  print(\"[BAREBONES] practice_lobby_visibility_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_courier_transfer_item(data)\n  print(\"[BAREBONES] dota_courier_transfer_item\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_full_ui_unlocked(data)\n  print(\"[BAREBONES] full_ui_unlocked\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_client_connectionless_packet(data)\n  print(\"[BAREBONES] client_connectionless_packet\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_hero_selector_preview_set(data)\n  print(\"[BAREBONES] hero_selector_preview_set\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_antiaddiction_toast(data)\n  print(\"[BAREBONES] antiaddiction_toast\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_hero_picker_shown(data)\n  print(\"[BAREBONES] hero_picker_shown\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_hero_picker_hidden(data)\n  print(\"[BAREBONES] hero_picker_hidden\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_local_quickbuy_changed(data)\n  print(\"[BAREBONES] dota_local_quickbuy_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_show_center_message(data)\n  print(\"[BAREBONES] show_center_message\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_hud_flip_changed(data)\n  print(\"[BAREBONES] hud_flip_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_frosty_points_updated(data)\n  print(\"[BAREBONES] frosty_points_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_defeated(data)\n  print(\"[BAREBONES] defeated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_reset_defeated(data)\n  print(\"[BAREBONES] reset_defeated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_booster_state_updated(data)\n  print(\"[BAREBONES] booster_state_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_event_points_updated(data)\n  print(\"[BAREBONES] event_points_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_local_player_event_points(data)\n  print(\"[BAREBONES] local_player_event_points\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_custom_game_difficulty(data)\n  print(\"[BAREBONES] custom_game_difficulty\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_tree_cut(data)\n  print(\"[BAREBONES] tree_cut\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_ugc_details_arrived(data)\n  print(\"[BAREBONES] ugc_details_arrived\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_ugc_subscribed(data)\n  print(\"[BAREBONES] ugc_subscribed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_ugc_unsubscribed(data)\n  print(\"[BAREBONES] ugc_unsubscribed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_prizepool_received(data)\n  print(\"[BAREBONES] prizepool_received\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_microtransaction_success(data)\n  print(\"[BAREBONES] microtransaction_success\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_rubick_ability_steal(data)\n  print(\"[BAREBONES] dota_rubick_ability_steal\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_compendium_event_actions_loaded(data)\n  print(\"[BAREBONES] compendium_event_actions_loaded\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_compendium_selections_loaded(data)\n  print(\"[BAREBONES] compendium_selections_loaded\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_compendium_set_selection_failed(data)\n  print(\"[BAREBONES] compendium_set_selection_failed\")\n  PrintTable(data)\nend\n\nfunction GameMode:On_community_cached_names_updated(data)\n  print(\"[BAREBONES] community_cached_names_updated\")\n  PrintTable(data)\nend\n\nfunction GameMode:On_dota_team_kill_credit(data)\n  print(\"[BAREBONES] dota_team_kill_credit\")\n  PrintTable(data)\nend\n\nfunction GameMode:On_dota_effigy_kill(data)\n  print(\"[BAREBONES] dota_effigy_kill\")\n  PrintTable(data)\nend\n\nfunction GameMode:On_dota_chat_assassin_announce(data)\n  print(\"[BAREBONES] dota_chat_assassin_announce\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_chat_assassin_denied(data)\n  print(\"[BAREBONES] dota_chat_assassin_denied\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_chat_assassin_success(data)\n  print(\"[BAREBONES] dota_chat_assassin_success\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_info_individual_updated(data)\n  print(\"[BAREBONES] player_info_individual_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_begin_cast(data)\n  print(\"[BAREBONES] dota_player_begin_cast\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_non_player_begin_cast(data)\n  print(\"[BAREBONES] dota_non_player_begin_cast\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_item_combined(data)\n  print(\"[BAREBONES] dota_item_combined\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_profile_opened(data)\n  print(\"[BAREBONES] profile_opened\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_tutorial_task_advance(data)\n  print(\"[BAREBONES] dota_tutorial_task_advance\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_tutorial_shop_toggled(data)\n  print(\"[BAREBONES] dota_tutorial_shop_toggled\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_ugc_download_requested(data)\n  print(\"[BAREBONES] ugc_download_requested\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_ugc_installed(data)\n  print(\"[BAREBONES] ugc_installed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_compendium_trophies_loaded(data)\n  print(\"[BAREBONES] compendium_trophies_loaded\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_spec_item_pickup(data)\n  print(\"[BAREBONES] spec_item_pickup\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_spec_aegis_reclaim_time(data)\n  print(\"[BAREBONES] spec_aegis_reclaim_time\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_account_trophies_changed(data)\n  print(\"[BAREBONES] account_trophies_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_account_all_hero_challenge_changed(data)\n  print(\"[BAREBONES] account_all_hero_challenge_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_team_showcase_ui_update(data)\n  print(\"[BAREBONES] team_showcase_ui_update\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_ingame_events_changed(data)\n  print(\"[BAREBONES] ingame_events_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_match_signout(data)\n  print(\"[BAREBONES] dota_match_signout\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_illusions_created(data)\n  print(\"[BAREBONES] dota_illusions_created\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_year_beast_killed(data)\n  print(\"[BAREBONES] dota_year_beast_killed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_hero_undoselection(data)\n  print(\"[BAREBONES] dota_hero_undoselection\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_challenge_socache_updated(data)\n  print(\"[BAREBONES] dota_challenge_socache_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_party_invites_updated(data)\n  print(\"[BAREBONES] party_invites_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_lobby_invites_updated(data)\n  print(\"[BAREBONES] lobby_invites_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_custom_game_mode_list_updated(data)\n  print(\"[BAREBONES] custom_game_mode_list_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_custom_game_lobby_list_updated(data)\n  print(\"[BAREBONES] custom_game_lobby_list_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_friend_lobby_list_updated(data)\n  print(\"[BAREBONES] friend_lobby_list_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_team_player_list_changed(data)\n  print(\"[BAREBONES] dota_team_player_list_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_details_changed(data)\n  print(\"[BAREBONES] dota_player_details_changed\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_player_profile_stats_updated(data)\n  print(\"[BAREBONES] player_profile_stats_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_custom_game_player_count_updated(data)\n  print(\"[BAREBONES] custom_game_player_count_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_custom_game_friends_played_updated(data)\n  print(\"[BAREBONES] custom_game_friends_played_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_custom_games_friends_play_updated(data)\n  print(\"[BAREBONES] custom_games_friends_play_updated\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_update_assigned_hero(data)\n  print(\"[BAREBONES] dota_player_update_assigned_hero\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_hero_selection_dirty(data)\n  print(\"[BAREBONES] dota_player_hero_selection_dirty\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_npc_goal_reached(data)\n  print(\"[BAREBONES] dota_npc_goal_reached\")\n  PrintTable(data)\nend\n\n\nfunction GameMode:On_dota_player_selected_custom_team(data)\n  print(\"[BAREBONES] dota_player_selected_custom_team\")\n  PrintTable(data)\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/internal/gamemode.lua",
    "content": "-- This function initializes the game mode and is called before anyone loads into the game\n-- It can be used to pre-initialize any values/tables that will be needed later\nfunction GameMode:_InitGameMode()\n  if GameMode._reentrantCheck then\n    return\n  end\n\n  -- Setup rules\n  GameRules:SetHeroRespawnEnabled( ENABLE_HERO_RESPAWN )\n  GameRules:SetUseUniversalShopMode( UNIVERSAL_SHOP_MODE )\n  GameRules:SetSameHeroSelectionEnabled( ALLOW_SAME_HERO_SELECTION )\n  GameRules:SetHeroSelectionTime( HERO_SELECTION_TIME )\n  GameRules:SetPreGameTime( PRE_GAME_TIME)\n  GameRules:SetPostGameTime( POST_GAME_TIME )\n  GameRules:SetTreeRegrowTime( TREE_REGROW_TIME )\n  GameRules:SetUseCustomHeroXPValues ( USE_CUSTOM_XP_VALUES )\n  GameRules:SetGoldPerTick(GOLD_PER_TICK)\n  GameRules:SetGoldTickTime(GOLD_TICK_TIME)\n  GameRules:SetRuneSpawnTime(RUNE_SPAWN_TIME)\n  GameRules:SetUseBaseGoldBountyOnHeroes(USE_STANDARD_HERO_GOLD_BOUNTY)\n  GameRules:SetHeroMinimapIconScale( MINIMAP_ICON_SIZE )\n  GameRules:SetCreepMinimapIconScale( MINIMAP_CREEP_ICON_SIZE )\n  GameRules:SetRuneMinimapIconScale( MINIMAP_RUNE_ICON_SIZE )\n\n  GameRules:SetFirstBloodActive( ENABLE_FIRST_BLOOD )\n  GameRules:SetHideKillMessageHeaders( HIDE_KILL_BANNERS )\n\n  GameRules:SetCustomGameEndDelay( GAME_END_DELAY )\n  GameRules:SetCustomVictoryMessageDuration( VICTORY_MESSAGE_DURATION )\n  GameRules:SetStartingGold( STARTING_GOLD )\n\n  if SKIP_TEAM_SETUP then\n    GameRules:SetCustomGameSetupAutoLaunchDelay( 0 )\n    GameRules:LockCustomGameSetupTeamAssignment( true )\n    GameRules:EnableCustomGameSetupAutoLaunch( true )\n  else\n    GameRules:SetCustomGameSetupAutoLaunchDelay( AUTO_LAUNCH_DELAY )\n    GameRules:LockCustomGameSetupTeamAssignment( LOCK_TEAM_SETUP )\n    GameRules:EnableCustomGameSetupAutoLaunch( ENABLE_AUTO_LAUNCH )\n  end\n\n\n  -- This is multiteam configuration stuff\n  if USE_AUTOMATIC_PLAYERS_PER_TEAM then\n    local num = math.floor(10 / MAX_NUMBER_OF_TEAMS)\n    local count = 0\n    for team,number in pairs(TEAM_COLORS) do\n      if count >= MAX_NUMBER_OF_TEAMS then\n        GameRules:SetCustomGameTeamMaxPlayers(team, 0)\n      else\n        GameRules:SetCustomGameTeamMaxPlayers(team, num)\n      end\n      count = count + 1\n    end\n  else\n    local count = 0\n    for team,number in pairs(CUSTOM_TEAM_PLAYER_COUNT) do\n      if count >= MAX_NUMBER_OF_TEAMS then\n        GameRules:SetCustomGameTeamMaxPlayers(team, 0)\n      else\n        GameRules:SetCustomGameTeamMaxPlayers(team, number)\n      end\n      count = count + 1\n    end\n  end\n\n  if USE_CUSTOM_TEAM_COLORS then\n    for team,color in pairs(TEAM_COLORS) do\n      SetTeamCustomHealthbarColor(team, color[1], color[2], color[3])\n    end\n  end\n  DebugPrint('[BAREBONES] GameRules set')\n\n  --InitLogFile( \"log/barebones.txt\",\"\")\n\n  -- Event Hooks\n  -- All of these events can potentially be fired by the game, though only the uncommented ones have had\n  -- Functions supplied for them.  If you are interested in the other events, you can uncomment the\n  -- ListenToGameEvent line and add a function to handle the event\n  ListenToGameEvent('dota_player_gained_level', Dynamic_Wrap(GameMode, 'OnPlayerLevelUp'), self)\n  ListenToGameEvent('dota_ability_channel_finished', Dynamic_Wrap(GameMode, 'OnAbilityChannelFinished'), self)\n  ListenToGameEvent('dota_player_learned_ability', Dynamic_Wrap(GameMode, 'OnPlayerLearnedAbility'), self)\n  ListenToGameEvent('entity_killed', Dynamic_Wrap(GameMode, '_OnEntityKilled'), self)\n  ListenToGameEvent('player_connect_full', Dynamic_Wrap(GameMode, '_OnConnectFull'), self)\n  ListenToGameEvent('player_disconnect', Dynamic_Wrap(GameMode, 'OnDisconnect'), self)\n  ListenToGameEvent('dota_item_purchased', Dynamic_Wrap(GameMode, 'OnItemPurchased'), self)\n  ListenToGameEvent('dota_item_picked_up', Dynamic_Wrap(GameMode, 'OnItemPickedUp'), self)\n  ListenToGameEvent('last_hit', Dynamic_Wrap(GameMode, 'OnLastHit'), self)\n  ListenToGameEvent('dota_non_player_used_ability', Dynamic_Wrap(GameMode, 'OnNonPlayerUsedAbility'), self)\n  ListenToGameEvent('player_changename', Dynamic_Wrap(GameMode, 'OnPlayerChangedName'), self)\n  ListenToGameEvent('dota_rune_activated_server', Dynamic_Wrap(GameMode, 'OnRuneActivated'), self)\n  ListenToGameEvent('dota_player_take_tower_damage', Dynamic_Wrap(GameMode, 'OnPlayerTakeTowerDamage'), self)\n  ListenToGameEvent('tree_cut', Dynamic_Wrap(GameMode, 'OnTreeCut'), self)\n  ListenToGameEvent('entity_hurt', Dynamic_Wrap(GameMode, 'OnEntityHurt'), self)\n  ListenToGameEvent('player_connect', Dynamic_Wrap(GameMode, 'PlayerConnect'), self)\n  ListenToGameEvent('dota_player_used_ability', Dynamic_Wrap(GameMode, 'OnAbilityUsed'), self)\n  ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(GameMode, '_OnGameRulesStateChange'), self)\n  ListenToGameEvent('npc_spawned', Dynamic_Wrap(GameMode, '_OnNPCSpawned'), self)\n  ListenToGameEvent('dota_player_pick_hero', Dynamic_Wrap(GameMode, 'OnPlayerPickHero'), self)\n  ListenToGameEvent('dota_team_kill_credit', Dynamic_Wrap(GameMode, 'OnTeamKillCredit'), self)\n  ListenToGameEvent(\"player_reconnected\", Dynamic_Wrap(GameMode, 'OnPlayerReconnect'), self)\n\n  ListenToGameEvent(\"dota_illusions_created\", Dynamic_Wrap(GameMode, 'OnIllusionsCreated'), self)\n  ListenToGameEvent(\"dota_item_combined\", Dynamic_Wrap(GameMode, 'OnItemCombined'), self)\n  ListenToGameEvent(\"dota_player_begin_cast\", Dynamic_Wrap(GameMode, 'OnAbilityCastBegins'), self)\n  ListenToGameEvent(\"dota_tower_kill\", Dynamic_Wrap(GameMode, 'OnTowerKill'), self)\n  ListenToGameEvent(\"dota_player_selected_custom_team\", Dynamic_Wrap(GameMode, 'OnPlayerSelectedCustomTeam'), self)\n  ListenToGameEvent(\"dota_npc_goal_reached\", Dynamic_Wrap(GameMode, 'OnNPCGoalReached'), self)\n\n  ListenToGameEvent(\"player_chat\", Dynamic_Wrap(GameMode, 'OnPlayerChat'), self)\n  \n  --ListenToGameEvent(\"dota_tutorial_shop_toggled\", Dynamic_Wrap(GameMode, 'OnShopToggled'), self)\n\n  --ListenToGameEvent('player_spawn', Dynamic_Wrap(GameMode, 'OnPlayerSpawn'), self)\n  --ListenToGameEvent('dota_unit_event', Dynamic_Wrap(GameMode, 'OnDotaUnitEvent'), self)\n  --ListenToGameEvent('nommed_tree', Dynamic_Wrap(GameMode, 'OnPlayerAteTree'), self)\n  --ListenToGameEvent('player_completed_game', Dynamic_Wrap(GameMode, 'OnPlayerCompletedGame'), self)\n  --ListenToGameEvent('dota_match_done', Dynamic_Wrap(GameMode, 'OnDotaMatchDone'), self)\n  --ListenToGameEvent('dota_combatlog', Dynamic_Wrap(GameMode, 'OnCombatLogEvent'), self)\n  --ListenToGameEvent('dota_player_killed', Dynamic_Wrap(GameMode, 'OnPlayerKilled'), self)\n  --ListenToGameEvent('player_team', Dynamic_Wrap(GameMode, 'OnPlayerTeam'), self)\n\n  --[[This block is only used for testing events handling in the event that Valve adds more in the future\n  Convars:RegisterCommand('events_test', function()\n      GameMode:StartEventTest()\n    end, \"events test\", 0)]]\n\n  local spew = 0\n  if BAREBONES_DEBUG_SPEW then\n    spew = 1\n  end\n  Convars:RegisterConvar('barebones_spew', tostring(spew), 'Set to 1 to start spewing barebones debug info.  Set to 0 to disable.', 0)\n\n  -- Change random seed\n  local timeTxt = string.gsub(string.gsub(GetSystemTime(), ':', ''), '^0+','')\n  math.randomseed(tonumber(timeTxt))\n\n  -- Initialized tables for tracking state\n  self.bSeenWaitForPlayers = false\n  self.vUserIds = {}\n\n  DebugPrint('[BAREBONES] Done loading Barebones gamemode!\\n\\n')\n  GameMode._reentrantCheck = true\n  GameMode:InitGameMode()\n  GameMode._reentrantCheck = false\nend\n\nmode = nil\n\n-- This function is called as the first player loads and sets up the GameMode parameters\nfunction GameMode:_CaptureGameMode()\n  if mode == nil then\n    -- Set GameMode parameters\n    mode = GameRules:GetGameModeEntity()        \n    mode:SetRecommendedItemsDisabled( RECOMMENDED_BUILDS_DISABLED )\n    mode:SetCameraDistanceOverride( CAMERA_DISTANCE_OVERRIDE )\n    mode:SetCustomBuybackCostEnabled( CUSTOM_BUYBACK_COST_ENABLED )\n    mode:SetCustomBuybackCooldownEnabled( CUSTOM_BUYBACK_COOLDOWN_ENABLED )\n    mode:SetBuybackEnabled( BUYBACK_ENABLED )\n    mode:SetTopBarTeamValuesOverride ( USE_CUSTOM_TOP_BAR_VALUES )\n    mode:SetTopBarTeamValuesVisible( TOP_BAR_VISIBLE )\n    mode:SetUseCustomHeroLevels ( USE_CUSTOM_HERO_LEVELS )\n    mode:SetCustomHeroMaxLevel ( MAX_LEVEL )\n    mode:SetCustomXPRequiredToReachNextLevel( XP_PER_LEVEL_TABLE )\n\n    mode:SetBotThinkingEnabled( USE_STANDARD_DOTA_BOT_THINKING )\n    mode:SetTowerBackdoorProtectionEnabled( ENABLE_TOWER_BACKDOOR_PROTECTION )\n\n    mode:SetFogOfWarDisabled(DISABLE_FOG_OF_WAR_ENTIRELY)\n    mode:SetGoldSoundDisabled( DISABLE_GOLD_SOUNDS )\n    mode:SetRemoveIllusionsOnDeath( REMOVE_ILLUSIONS_ON_DEATH )\n\n    mode:SetAlwaysShowPlayerInventory( SHOW_ONLY_PLAYER_INVENTORY )\n    mode:SetAnnouncerDisabled( DISABLE_ANNOUNCER )\n    if FORCE_PICKED_HERO ~= nil then\n      mode:SetCustomGameForceHero( FORCE_PICKED_HERO )\n    end\n    mode:SetFixedRespawnTime( FIXED_RESPAWN_TIME ) \n    mode:SetFountainConstantManaRegen( FOUNTAIN_CONSTANT_MANA_REGEN )\n    mode:SetFountainPercentageHealthRegen( FOUNTAIN_PERCENTAGE_HEALTH_REGEN )\n    mode:SetFountainPercentageManaRegen( FOUNTAIN_PERCENTAGE_MANA_REGEN )\n    mode:SetLoseGoldOnDeath( LOSE_GOLD_ON_DEATH )\n    mode:SetMaximumAttackSpeed( MAXIMUM_ATTACK_SPEED )\n    mode:SetMinimumAttackSpeed( MINIMUM_ATTACK_SPEED )\n    mode:SetStashPurchasingDisabled ( DISABLE_STASH_PURCHASING )\n\n    for rune, spawn in pairs(ENABLED_RUNES) do\n      mode:SetRuneEnabled(rune, spawn)\n    end\n\n    mode:SetUnseenFogOfWarEnabled( USE_UNSEEN_FOG_OF_WAR )\n\n    mode:SetDaynightCycleDisabled( DISABLE_DAY_NIGHT_CYCLE )\n    mode:SetKillingSpreeAnnouncerDisabled( DISABLE_KILLING_SPREE_ANNOUNCER )\n    mode:SetStickyItemDisabled( DISABLE_STICKY_ITEM )\n\n    self:OnFirstPlayerLoaded()\n  end \nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/internal/util.lua",
    "content": "function DebugPrint(...)\n  local spew = Convars:GetInt('barebones_spew') or -1\n  if spew == -1 and BAREBONES_DEBUG_SPEW then\n    spew = 1\n  end\n\n  if spew == 1 then\n    print(...)\n  end\nend\n\nfunction DebugPrintTable(...)\n  local spew = Convars:GetInt('barebones_spew') or -1\n  if spew == -1 and BAREBONES_DEBUG_SPEW then\n    spew = 1\n  end\n\n  if spew == 1 then\n    PrintTable(...)\n  end\nend\n\nfunction PrintTable(t, indent, done)\n  --print ( string.format ('PrintTable type %s', type(keys)) )\n  if type(t) ~= \"table\" then return end\n\n  done = done or {}\n  done[t] = true\n  indent = indent or 0\n\n  local l = {}\n  for k, v in pairs(t) do\n    table.insert(l, k)\n  end\n\n  table.sort(l)\n  for k, v in ipairs(l) do\n    -- Ignore FDesc\n    if v ~= 'FDesc' then\n      local value = t[v]\n\n      if type(value) == \"table\" and not done[value] then\n        done [value] = true\n        print(string.rep (\"\\t\", indent)..tostring(v)..\":\")\n        PrintTable (value, indent + 2, done)\n      elseif type(value) == \"userdata\" and not done[value] then\n        done [value] = true\n        print(string.rep (\"\\t\", indent)..tostring(v)..\": \"..tostring(value))\n        PrintTable ((getmetatable(value) and getmetatable(value).__index) or getmetatable(value), indent + 2, done)\n      else\n        if t.FDesc and t.FDesc[v] then\n          print(string.rep (\"\\t\", indent)..tostring(t.FDesc[v]))\n        else\n          print(string.rep (\"\\t\", indent)..tostring(v)..\": \"..tostring(value))\n        end\n      end\n    end\n  end\nend\n\n-- Colors\nCOLOR_NONE = '\\x06'\nCOLOR_GRAY = '\\x06'\nCOLOR_GREY = '\\x06'\nCOLOR_GREEN = '\\x0C'\nCOLOR_DPURPLE = '\\x0D'\nCOLOR_SPINK = '\\x0E'\nCOLOR_DYELLOW = '\\x10'\nCOLOR_PINK = '\\x11'\nCOLOR_RED = '\\x12'\nCOLOR_LGREEN = '\\x15'\nCOLOR_BLUE = '\\x16'\nCOLOR_DGREEN = '\\x18'\nCOLOR_SBLUE = '\\x19'\nCOLOR_PURPLE = '\\x1A'\nCOLOR_ORANGE = '\\x1B'\nCOLOR_LRED = '\\x1C'\nCOLOR_GOLD = '\\x1D'\n\n\nfunction DebugAllCalls()\n    if not GameRules.DebugCalls then\n        print(\"Starting DebugCalls\")\n        GameRules.DebugCalls = true\n\n        debug.sethook(function(...)\n            local info = debug.getinfo(2)\n            local src = tostring(info.short_src)\n            local name = tostring(info.name)\n            if name ~= \"__index\" then\n                print(\"Call: \".. src .. \" -- \" .. name .. \" -- \" .. info.currentline)\n            end\n        end, \"c\")\n    else\n        print(\"Stopped DebugCalls\")\n        GameRules.DebugCalls = false\n        debug.sethook(nil, \"c\")\n    end\nend\n\n\n\n\n--[[Author: Noya\n  Date: 09.08.2015.\n  Hides all dem hats\n]]\nfunction HideWearables( unit )\n  unit.hiddenWearables = {} -- Keep every wearable handle in a table to show them later\n    local model = unit:FirstMoveChild()\n    while model ~= nil do\n        if model:GetClassname() == \"dota_item_wearable\" then\n            model:AddEffects(EF_NODRAW) -- Set model hidden\n            table.insert(unit.hiddenWearables, model)\n        end\n        model = model:NextMovePeer()\n    end\nend\n\nfunction ShowWearables( unit )\n\n  for i,v in pairs(unit.hiddenWearables) do\n    v:RemoveEffects(EF_NODRAW)\n  end\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/abilities/containers_lua_targeting.lua",
    "content": "containers_lua_targeting = class({})\n\n--------------------------------------------------------------------------------\nfunction containers_lua_targeting:GetBehavior()\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return self.BaseClass.GetBehavior(self) end \n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem then\n    return proxyItem:GetBehavior()\n  end\nend\n\nfunction containers_lua_targeting:GetAOERadius()\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return self.BaseClass.GetAOERadius(self) end \n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetAOERadius then\n    return proxyItem:GetAOERadius()\n  end\n    \n  return result.aoe\nend\n\nfunction containers_lua_targeting:GetCastRange(vLocation, hTarget)\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return self.BaseClass.GetCastRange(self, vLocation, hTarget) end \n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetCastRange then\n    return proxyItem:GetCastRange(vLocation, hTarget)\n  end\n  \n  return result.range\nend\n\nfunction containers_lua_targeting:GetChannelTime()\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return self.BaseClass.GetChannelTime(self) end \n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetChannelTime then\n    return proxyItem:GetChannelTime()\n  end\n\n  return result.channelTime\nend\n\nfunction containers_lua_targeting:GetChannelledManaCostPerSecond(iLevel)\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return self.BaseClass.GetChannelledManaCostPerSecond(self, iLevel) end \n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetChannelledManaCostPerSecond then\n    return proxyItem:GetChannelledManaCostPerSecond(iLevel)\n  end\n  \n  return result.channelCost\nend\n\n--------------------------------------------------------------------------------\n\nfunction containers_lua_targeting:CastFilterResult( )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return UF_SUCCESS end\n \n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.CastFilterResult then\n    return proxyItem:CastFilterResult()\n  end\n \n  return UF_SUCCESS\nend\n \nfunction containers_lua_targeting:GetCustomCastError( )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return \"\" end\n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetCustomCastError then\n    return proxyItem:GetCustomCastError()\n  end\n\n  return \"\"\nend\n\n--------------------------------------------------------------------------------\n\nfunction containers_lua_targeting:CastFilterResultLocation( vLocation )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return UF_SUCCESS end\n \n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.CastFilterResultLocation then\n    return proxyItem:CastFilterResultLocation(vLocation)\n  end\n \n  return UF_SUCCESS\nend\n \nfunction containers_lua_targeting:GetCustomCastErrorLocation( vLocation )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return \"\" end\n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetCustomCastErrorLocation then\n    return proxyItem:GetCustomCastErrorLocation(vLocation)\n  end\n\n  return \"\"\nend\n\n--------------------------------------------------------------------------------\n\nfunction containers_lua_targeting:CastFilterResultTarget( hTarget )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return UF_SUCCESS end\n \n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.CastFilterResultTarget then\n    return proxyItem:CastFilterResultTarget(hTarget)\n  end\n\n  local nResult = UnitFilter( hTarget, result.targetTeam, result.targetType, result.targetFlags, self:GetCaster():GetTeamNumber() )\n  if nResult ~= UF_SUCCESS then\n    return nResult\n  end\n \n  return UF_SUCCESS\nend\n \nfunction containers_lua_targeting:GetCustomCastErrorTarget( hTarget )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return \"\" end\n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetCustomCastErrorTarget then\n    return proxyItem:GetCustomCastErrorTarget(hTarget)\n  end\n\n  return \"\"\nend\n\n--------------------------------------------------------------------------------\n\nfunction containers_lua_targeting:OnChannelThink(flInterval)\n  local item = self.proxyItem\n  self.proxyItem:OnChannelThink(flInterval)\nend\n\nfunction containers_lua_targeting:OnChannelFinish(bInterrupted)\n  local item = self.proxyItem\n  self.proxyItem:OnChannelFinish(bInterrupted)\nend\n\nfunction containers_lua_targeting:OnAbilityPhaseStart()\n  return self.proxyItem:OnAbilityPhaseStart()\n\nend\n\nfunction containers_lua_targeting:OnAbilityPhaseInterrupted()\n  self.proxyItem:OnAbilityPhaseInterrupted()\nend\n\nfunction containers_lua_targeting:OnSpellStart()\n  local target = self:GetCursorTarget()\n  local pos = self:GetCursorPosition()\n\n  local item = self.proxyItem\n  local owner = item:GetOwner()\n\n  local behavior =     item:GetBehavior()\n  local channelled =   bit.band(behavior, DOTA_ABILITY_BEHAVIOR_CHANNELLED) ~= 0\n\n  item:PayGoldCost()\n  item:PayManaCost()\n  item:StartCooldown(item:GetCooldown(item:GetLevel()))\n  owner:SetCursorPosition(pos)\n  owner:SetCursorCastTarget(target)\n\n  item:OnSpellStart()\nend\n\n--------------------------------------------------------------------------------\n--------------------------------------------------------------------------------"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/abilities/containers_lua_targeting_tree.lua",
    "content": "containers_lua_targeting_tree = class({})\n\n--------------------------------------------------------------------------------\nfunction containers_lua_targeting_tree:GetBehavior()\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return self.BaseClass.GetBehavior(self) end \n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem then\n    return proxyItem:GetBehavior()\n  end\nend\n\nfunction containers_lua_targeting_tree:GetAOERadius()\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return self.BaseClass.GetAOERadius(self) end \n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetAOERadius then\n    return proxyItem:GetAOERadius()\n  end\n    \n  return result.aoe\nend\n\nfunction containers_lua_targeting_tree:GetCastRange(vLocation, hTarget)\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return self.BaseClass.GetCastRange(self, vLocation, hTarget) end \n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetCastRange then\n    return proxyItem:GetCastRange(vLocation, hTarget)\n  end\n  \n  return result.range\nend\n\nfunction containers_lua_targeting_tree:GetChannelTime()\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return self.BaseClass.GetChannelTime(self) end \n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetChannelTime then\n    return proxyItem:GetChannelTime()\n  end\n\n  return result.channelTime\nend\n\nfunction containers_lua_targeting_tree:GetChannelledManaCostPerSecond(iLevel)\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return self.BaseClass.GetChannelledManaCostPerSecond(self, iLevel) end \n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetChannelledManaCostPerSecond then\n    return proxyItem:GetChannelledManaCostPerSecond(iLevel)\n  end\n  \n  return result.channelCost\nend\n\n--------------------------------------------------------------------------------\n\nfunction containers_lua_targeting_tree:CastFilterResult( )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return UF_SUCCESS end\n \n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.CastFilterResult then\n    return proxyItem:CastFilterResult()\n  end\n \n  return UF_SUCCESS\nend\n \nfunction containers_lua_targeting_tree:GetCustomCastError( )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return \"\" end\n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetCustomCastError then\n    return proxyItem:GetCustomCastError()\n  end\n\n  return \"\"\nend\n\n--------------------------------------------------------------------------------\n\nfunction containers_lua_targeting_tree:CastFilterResultLocation( vLocation )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return UF_SUCCESS end\n \n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.CastFilterResultLocation then\n    return proxyItem:CastFilterResultLocation(vLocation)\n  end\n \n  return UF_SUCCESS\nend\n \nfunction containers_lua_targeting_tree:GetCustomCastErrorLocation( vLocation )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return \"\" end\n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetCustomCastErrorLocation then\n    return proxyItem:GetCustomCastErrorLocation(vLocation)\n  end\n\n  return \"\"\nend\n\n--------------------------------------------------------------------------------\n\nfunction containers_lua_targeting_tree:CastFilterResultTarget( hTarget )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return UF_SUCCESS end\n \n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.CastFilterResultTarget then\n    return proxyItem:CastFilterResultTarget(hTarget)\n  end\n\n  local targetType = result.targetType\n  local treeTarget =   bit.band(targetType, DOTA_UNIT_TARGET_TREE) ~= 0\n  local customTarget =   bit.band(targetType, DOTA_UNIT_TARGET_CUSTOM) ~= 0\n\n  if treeTarget and customTarget and hTarget.GetUnitName and (hTarget:GetUnitName() == \"npc_dota_sentry_wards\" or hTarget:GetUnitName() == \"npc_dota_observer_wards\") then\n    return UF_SUCCESS\n  end\n\n  local nResult = UnitFilter( hTarget, result.targetTeam, result.targetType, result.targetFlags, self:GetCaster():GetTeamNumber() )\n  if nResult ~= UF_SUCCESS then\n    return nResult\n  end\n \n  return UF_SUCCESS\nend\n \nfunction containers_lua_targeting_tree:GetCustomCastErrorTarget( hTarget )\n  local result = CustomNetTables:GetTableValue(\"containers_lua\", tostring(self:entindex()))\n  if not result then return \"\" end\n\n  local proxyItem = EntIndexToHScript(result.proxyItem)\n  if proxyItem and proxyItem.GetCustomCastErrorTarget then\n    return proxyItem:GetCustomCastErrorTarget(hTarget)\n  end\n\n  return \"\"\nend\n\n--------------------------------------------------------------------------------\n\nfunction containers_lua_targeting_tree:OnChannelThink(flInterval)\n  local item = self.proxyItem\n  self.proxyItem:OnChannelThink(flInterval)\nend\n\nfunction containers_lua_targeting_tree:OnChannelFinish(bInterrupted)\n  local item = self.proxyItem\n  self.proxyItem:OnChannelFinish(bInterrupted)\nend\n\nfunction containers_lua_targeting_tree:OnAbilityPhaseStart()\n  return self.proxyItem:OnAbilityPhaseStart()\n\nend\n\nfunction containers_lua_targeting_tree:OnAbilityPhaseInterrupted()\n  self.proxyItem:OnAbilityPhaseInterrupted()\nend\n\nfunction containers_lua_targeting_tree:OnSpellStart()\n  local target = self:GetCursorTarget()\n  local pos = self:GetCursorPosition()\n\n  local item = self.proxyItem\n  local owner = item:GetOwner()\n\n  local behavior =     item:GetBehavior()\n  local channelled =   bit.band(behavior, DOTA_ABILITY_BEHAVIOR_CHANNELLED) ~= 0\n\n  item:PayGoldCost()\n  item:PayManaCost()\n  item:StartCooldown(item:GetCooldown(item:GetLevel()))\n  owner:SetCursorPosition(pos)\n  owner:SetCursorCastTarget(target)\n\n  item:OnSpellStart()\nend\n\n--------------------------------------------------------------------------------\n--------------------------------------------------------------------------------"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/abilities/item_containers_lua_pack.lua",
    "content": "item_containers_lua_pack = class({})\n--------------------------------------------------------------------------------\n\nfunction item_containers_lua_pack:OnSpellStart()\n\n  local container = self.container\n  if IsValidContainer(container) then\n    local pid = self:GetOwner():GetPlayerOwnerID()\n    if container:IsOpen(pid) then\n      container:Close(pid)\n      self.toggled = false\n    else\n      container:Open(pid)\n      self.toggled = true\n    end\n  else\n    print(\"INVALID CONTAINER\", container)\n  end\nend\n\n--------------------------------------------------------------------------------\n--------------------------------------------------------------------------------\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/animations.lua",
    "content": "ANIMATIONS_VERSION = \"1.00\"\n\n--[[\n  Lua-controlled Animations Library by BMD\n\n  Installation\n  -\"require\" this file inside your code in order to gain access to the StartAnmiation and EndAnimation global.\n  -Additionally, ensure that this file is placed in the vscripts/libraries path and that the vscripts/libraries/modifiers/modifier_animation.lua, modifier_animation_translate.lua, modifier_animation_translate_permanent.lua, and modifier_animation_freeze.lua files exist and are in the correct path\n\n  Usage\n  -Animations can be started for any unit and are provided as a table of information to the StartAnimation call\n  -Repeated calls to StartAnimation for a single unit will cancel any running animation and begin the new animation\n  -EndAnimation can be called in order to cancel a running animation\n  -Animations are specified by a table which has as potential parameters:\n    -duration: The duration to play the animation.  The animation will be cancelled regardless of how far along it is at the end fo the duration.\n    -activity: An activity code which will be used as the base activity for the animation i.e. DOTA_ACT_RUN, DOTA_ACT_ATTACK, etc.\n    -rate: An optional (will be 1.0 if unspecified) animation rate to be used when playing this animation.\n    -translate: An optional translate activity modifier string which can be used to modify the animation sequence.\n      Example: For ACT_DOTA_RUN+haste, this should be \"haste\"\n    -translate2: A second optional translate activity modifier string which can be used to modify the animation sequence further.\n      Example: For ACT_DOTA_ATTACK+sven_warcry+sven_shield, this should be \"sven_warcry\" or \"sven_shield\" while the translate property is the other translate modifier\n  -A permanent activity translate can be applied to a unit by calling AddAnimationTranslate for that unit.  This allows for a permanent \"injured\" or \"aggressive\" animation stance.\n  -Permanent activity translate modifiers can be removed with RemoveAnimationTranslate.\n  -Animations can be frozen in place at any time by calling FreezeAnimation(unit[, duration]).  Leaving the duration off will cause the animation to be frozen until UnfreezeAnimation is called.\n  -Animations can be unfrozen at any time by calling UnfreezeAnimation(unit)\n\n  Notes\n  -Animations can only play for valid activities/sequences possessed by the model the unit is using.\n  -Sequences requiring 3+ activity modifier translates (i.e \"stun+fear+loadout\" or similar) are not possible currently in this library.\n  -Calling EndAnimation and attempting to StartAnimation a new animation for the same unit withing ~2 server frames of the animation end will likely fail to play the new animation.  \n    Calling StartAnimation directly without ending the previous animation will automatically add in this delay and cancel the previous animation.\n  -The maximum animation rate which can be used is 12.75, and animation rates can only exist at a 0.05 resolution (i.e. 1.0, 1.05, 1.1 and not 1.06)\n  -StartAnimation and EndAnimation functions can also be accessed through GameRules as GameRules.StartAnimation and GameRules.EndAnimation for use in scoped lua files (triggers, vscript ai, etc)\n  -This library requires that the \"libraries/timers.lua\" be present in your vscripts directory.\n\n  Examples:\n  --Start a running animation at 2.5 rate for 2.5 seconds\n    StartAnimation(unit, {duration=2.5, activity=ACT_DOTA_RUN, rate=2.5})\n\n  --End a running animation\n    EndAnimation(unit)\n\n  --Start a running + hasted animation at .8 rate for 5 seconds\n    StartAnimation(unit, {duration=5, activity=ACT_DOTA_RUN, rate=0.8, translate=\"haste\"})\n\n  --Start a shield-bash animation for sven with variable rate\n    StartAnimation(unit, {duration=1.5, activity=ACT_DOTA_ATTACK, rate=RandomFloat(.5, 1.5), translate=\"sven_warcry\", translate2=\"sven_shield\"})\n\n  --Start a permanent injured translate modifier\n    AddAnimationTranslate(unit, \"injured\")\n\n  --Remove a permanent activity translate modifier\n    RemoveAnimationTranslate(unit)\n\n  --Freeze an animation for 4 seconds\n    FreezeAnimation(unit, 4)\n\n  --Unfreeze an animation\n    UnfreezeAnimation(unit)\n\n]]\n\nLinkLuaModifier( \"modifier_animation\", \"libraries/modifiers/modifier_animation.lua\", LUA_MODIFIER_MOTION_NONE )\nLinkLuaModifier( \"modifier_animation_translate\", \"libraries/modifiers/modifier_animation_translate.lua\", LUA_MODIFIER_MOTION_NONE )\nLinkLuaModifier( \"modifier_animation_translate_permanent\", \"libraries/modifiers/modifier_animation_translate_permanent.lua\", LUA_MODIFIER_MOTION_NONE )\nLinkLuaModifier( \"modifier_animation_freeze\", \"libraries/modifiers/modifier_animation_freeze.lua\", LUA_MODIFIER_MOTION_NONE )\n\nrequire('libraries/timers')\n\nlocal _ANIMATION_TRANSLATE_TO_CODE = {\n  abysm= 13,\n  admirals_prow= 307,\n  agedspirit= 3,\n  aggressive= 4,\n  agrressive= 163,\n  am_blink= 182,\n  ancestors_edge= 144,\n  ancestors_pauldron= 145,\n  ancestors_vambrace= 146,\n  ancestral_scepter= 67,\n  ancient_armor= 6,\n  anvil= 7,\n  arcana= 8,\n  armaments_set= 20,\n  axes= 188,\n  backstab= 41,\n  backstroke_gesture= 283,\n  backward= 335,\n  ball_lightning= 231,\n  batter_up= 43,\n  bazooka= 284,\n  belly_flop= 180,\n  berserkers_blood= 35,\n  black= 44,\n  black_hole= 194,\n  bladebiter= 147,\n  blood_chaser= 134,\n  bolt= 233,\n  bot= 47,\n  brain_sap= 185,\n  broodmother_spin= 50,\n  burning_fiend= 148,\n  burrow= 229,\n  burrowed= 51,\n  cat_dancer_gesture= 285,\n  cauldron= 29,\n  charge= 97,\n  charge_attack= 98,\n  chase= 246,\n  chasm= 57,\n  chemical_rage= 2,\n  chicken_gesture= 258,\n  come_get_it= 39,\n  corpse_dress= 104,\n  corpse_dresstop= 103,\n  corpse_scarf= 105,\n  cryAnimationExportNode= 341,\n  crystal_nova= 193,\n  culling_blade= 184,\n  dagger_twirl= 143,\n  dark_wraith= 174,\n  darkness= 213,\n  dc_sb_charge= 107,\n  dc_sb_charge_attack= 108,\n  dc_sb_charge_finish= 109,\n  dc_sb_ultimate= 110,\n  deadwinter_soul= 96,\n  death_protest= 94,\n  demon_drain= 116,\n  desolation= 55,\n  digger= 176,\n  dismember= 218,\n  divine_sorrow= 117,\n  divine_sorrow_loadout= 118,\n  divine_sorrow_loadout_spawn= 119,\n  divine_sorrow_sunstrike= 120,\n  dizzying_punch= 343,\n  dog_of_duty= 342,\n  dogofduty= 340,\n  dominator= 254,\n  dryad_tree= 311,\n  dualwield= 14,\n  duel_kill= 121,\n  earthshock= 235,\n  emp= 259,\n  enchant_totem= 313,\n  [\"end\"]= 243,\n  eyeoffetizu= 34,\n  f2p_doom= 131,\n  face_me= 286,\n  faces_hakama= 111,\n  faces_mask= 113,\n  faces_wraps= 112,\n  fast= 10,\n  faster= 11,\n  fastest= 12,\n  fear= 125,\n  fiends_grip= 186,\n  fiery_soul= 149,\n  finger= 200,\n  firefly= 190,\n  fish_slap= 123,\n  fishstick= 339,\n  fissure= 195,\n  flying= 36,\n  focusfire= 124,\n  forcestaff_enemy= 122,\n  forcestaff_friendly= 15,\n  forward= 336,\n  fountain= 49,\n  freezing_field= 191,\n  frost_arrow= 37,\n  frostbite= 192,\n  frostiron_raider= 150,\n  frostivus= 54,\n  ftp_dendi_back= 126,\n  gale= 236,\n  get_burned= 288,\n  giddy_up_gesture= 289,\n  glacier= 101,\n  glory= 345,\n  good_day_sir= 40,\n  great_safari= 267,\n  greevil_black_hole= 58,\n  greevil_blade_fury= 59,\n  greevil_bloodlust= 60,\n  greevil_cold_snap= 61,\n  greevil_decrepify= 62,\n  greevil_diabolic_edict= 63,\n  greevil_echo_slam= 64,\n  greevil_fatal_bonds= 65,\n  greevil_ice_wall= 66,\n  greevil_laguna_blade= 68,\n  greevil_leech_seed= 69,\n  greevil_magic_missile= 70,\n  greevil_maledict= 71,\n  greevil_miniboss_black_brain_sap= 72,\n  greevil_miniboss_black_nightmare= 73,\n  greevil_miniboss_blue_cold_feet= 74,\n  greevil_miniboss_blue_ice_vortex= 75,\n  greevil_miniboss_green_living_armor= 76,\n  greevil_miniboss_green_overgrowth= 77,\n  greevil_miniboss_orange_dragon_slave= 78,\n  greevil_miniboss_orange_lightstrike_array= 79,\n  greevil_miniboss_purple_plague_ward= 80,\n  greevil_miniboss_purple_venomous_gale= 81,\n  greevil_miniboss_red_earthshock= 82,\n  greevil_miniboss_red_overpower= 83,\n  greevil_miniboss_white_purification= 84,\n  greevil_miniboss_yellow_ion_shell= 85,\n  greevil_miniboss_yellow_surge= 86,\n  greevil_natures_attendants= 87,\n  greevil_phantom_strike= 88,\n  greevil_poison_nova= 89,\n  greevil_purification= 90,\n  greevil_shadow_strike= 91,\n  greevil_shadow_wave= 92,\n  groove_gesture= 305,\n  ground_pound= 128,\n  guardian_angel= 215,\n  guitar= 290,\n  hang_loose_gesture= 291,\n  happy_dance= 293,\n  harlequin= 129,\n  haste= 45,\n  hook= 220,\n  horn= 292,\n  immortal= 28,\n  impale= 201,\n  impatient_maiden= 100,\n  impetus= 138,\n  injured= 5,\n  [\"injured rare\"]= 247,\n  injured_aggressive= 130,\n  instagib= 21,\n  iron= 255,\n  iron_surge= 99,\n  item_style_2= 133,\n  jump_gesture= 294,\n  laguna= 202,\n  leap= 206,\n  level_1= 140,\n  level_2= 141,\n  level_3= 142,\n  life_drain= 219,\n  loadout= 0,\n  loda= 173,\n  lodestar= 114,\n  loser= 295,\n  lsa= 203,\n  lucentyr= 158,\n  lute= 296,\n  lyreleis_breeze= 159,\n  mace= 160,\n  mag_power_gesture= 298,\n  magic_ends_here= 297,\n  mana_drain= 204,\n  mana_void= 183,\n  manias_mask= 135,\n  manta= 38,\n  mask_lord= 299,\n  masquerade= 25,\n  meld= 162,\n  melee= 334,\n  miniboss= 164,\n  moon_griffon= 166,\n  moonfall= 165,\n  moth= 53,\n  nihility= 95,\n  obeisance_of_the_keeper= 151,\n  obsidian_helmet= 132,\n  odachi= 32,\n  offhand_basher= 42,\n  omnislash= 198,\n  overpower1= 167,\n  overpower2= 168,\n  overpower3= 169,\n  overpower4= 170,\n  overpower5= 171,\n  overpower6= 172,\n  pegleg= 248,\n  phantom_attack= 16,\n  pinfold= 175,\n  plague_ward= 237,\n  poison_nova= 238,\n  portrait_fogheart= 177,\n  poundnpoint= 300,\n  powershot= 242,\n  punch= 136,\n  purification= 216,\n  pyre= 26,\n  qop_blink= 221,\n  ravage= 225,\n  red_moon= 30,\n  reincarnate= 115,\n  remnant= 232,\n  repel= 217,\n  requiem= 207,\n  roar= 187,\n  robot_gesture= 301,\n  roshan= 181,\n  salvaged_sword= 152,\n  sandking_rubyspire_burrowstrike= 52,\n  sb_bracers= 251,\n  sb_helmet= 250,\n  sb_shoulder= 252,\n  sb_spear= 253,\n  scream= 222,\n  serene_honor= 153,\n  shadow_strike= 223,\n  shadowraze= 208,\n  shake_moneymaker= 179,\n  sharp_blade= 303,\n  shinobi= 27,\n  shinobi_mask= 154,\n  shinobi_tail= 23,\n  shrapnel= 230,\n  silent_ripper= 178,\n  slam= 196,\n  slasher_chest= 262,\n  slasher_mask= 263,\n  slasher_offhand= 261,\n  slasher_weapon= 260,\n  sm_armor= 264,\n  sm_head= 56,\n  sm_shoulder= 265,\n  snipe= 226,\n  snowangel= 17,\n  snowball= 102,\n  sonic_wave= 224,\n  sparrowhawk_bow= 269,\n  sparrowhawk_cape= 270,\n  sparrowhawk_hood= 272,\n  sparrowhawk_quiver= 271,\n  sparrowhawk_shoulder= 273,\n  spin= 199,\n  split_shot= 1,\n  sprint= 275,\n  sprout= 209,\n  staff_swing= 304,\n  stalker_exo= 93,\n  start= 249,\n  stinger= 280,\n  stolen_charge= 227,\n  stolen_firefly= 189,\n  strike= 228,\n  sugarrush= 276,\n  suicide_squad= 18,\n  summon= 210,\n  sven_shield= 256,\n  sven_warcry= 257,\n  swag_gesture= 287,\n  swordonshoulder= 155,\n  taunt_fullbody= 19,\n  taunt_killtaunt= 139,\n  taunt_quickdraw_gesture= 268,\n  taunt_roll_gesture= 302,\n  techies_arcana= 9,\n  telebolt= 306,\n  teleport= 211,\n  thirst= 137,\n  tidebringer= 24,\n  tidehunter_boat= 22,\n  tidehunter_toss_fish= 312,\n  tidehunter_yippy= 347,\n  timelord_head= 309,\n  tinker_rollermaw= 161,\n  torment= 279,\n  totem= 197,\n  transition= 278,\n  trapper= 314,\n  tree= 310,\n  trickortreat= 277,\n  triumphant_timelord= 127,\n  turbulent_teleport= 308,\n  twinblade_attack= 315,\n  twinblade_attack_b= 316,\n  twinblade_attack_c= 317,\n  twinblade_attack_d= 318,\n  twinblade_attack_injured= 319,\n  twinblade_death= 320,\n  twinblade_idle= 321,\n  twinblade_idle_injured= 322,\n  twinblade_idle_rare= 323,\n  twinblade_injured_attack_b= 324,\n  twinblade_jinada= 325,\n  twinblade_jinada_injured= 326,\n  twinblade_shuriken_toss= 327,\n  twinblade_shuriken_toss_injured= 328,\n  twinblade_spawn= 329,\n  twinblade_stun= 330,\n  twinblade_track= 331,\n  twinblade_track_injured= 332,\n  twinblade_victory= 333,\n  twister= 274,\n  unbroken= 106,\n  vendetta= 337,\n  viper_strike= 239,\n  viridi_set= 338,\n  void= 214,\n  vortex= 234,\n  wall= 240,\n  ward= 241,\n  wardstaff= 344,\n  wave= 205,\n  web= 48,\n  whalehook= 156,\n  whats_that= 281,\n  when_nature_attacks= 31,\n  white= 346,\n  windrun= 244,\n  windy= 245,\n  winterblight= 157,\n  witchdoctor_jig= 282,\n  with_item= 46,\n  wolfhound= 266,\n  wraith_spin= 33,\n  wrath= 212,\n\n  rampant= 348,\n  overload= 349,\n\n  surge=350,\n  es_prosperity=351,\n  Espada_pistola=352,\n  overload_injured=353,\n  ss_fortune=354,\n  liquid_fire=355,\n  jakiro_icemelt=356,\n  jakiro_roar=357,\n\n  chakram=358,\n  doppelwalk=359,\n  enrage=360,\n  fast_run=361,\n  overpower=362,\n  overwhelmingodds=363,\n  pregame=364,\n  shadow_dance=365,\n  shukuchi=366,\n  strength=367,\n  twinblade_run=368,\n  twinblade_run_injured=369,\n  windwalk=370,  \n\n}\n\nfunction StartAnimation(unit, table)\n  local duration = table.duration\n  local activity = table.activity\n  local translate = table.translate\n  local translate2 = table.translate2\n  local rate = table.rate or 1.0\n\n  rate = math.floor(math.max(0,math.min(255/20, rate)) * 20 + .5)\n\n  local stacks = activity + bit.lshift(rate,11)\n\n  if translate ~= nil then\n    if _ANIMATION_TRANSLATE_TO_CODE[translate] == nil then\n      print(\"[ANIMATIONS.lua] ERROR, no translate-code found for '\" .. translate .. \"'.  This translate may be misspelled or need to be added to the enum manually.\")\n      return\n    end\n    stacks = stacks + bit.lshift(_ANIMATION_TRANSLATE_TO_CODE[translate],19)\n  end\n\n  if translate2 ~= nil and _ANIMATION_TRANSLATE_TO_CODE[translate2] == nil then\n    print(\"[ANIMATIONS.lua] ERROR, no translate-code found for '\" .. translate2 .. \"'.  This translate may be misspelled or need to be added to the enum manually.\")\n    return\n  end\n\n  if unit:HasModifier(\"modifier_animation\") or (unit._animationEnd ~= nil and unit._animationEnd + .067 > GameRules:GetGameTime()) then\n    EndAnimation(unit)\n    Timers:CreateTimer(.066, function() \n      if translate2 ~= nil then\n        unit:AddNewModifier(unit, nil, \"modifier_animation_translate\", {duration=duration, translate=translate2})\n        unit:SetModifierStackCount(\"modifier_animation_translate\", unit, _ANIMATION_TRANSLATE_TO_CODE[translate2])\n      end\n\n      unit._animationEnd = GameRules:GetGameTime() + duration\n      unit:AddNewModifier(unit, nil, \"modifier_animation\", {duration=duration, translate=translate})\n      unit:SetModifierStackCount(\"modifier_animation\", unit, stacks)\n    end)\n  else\n    if translate2 ~= nil then\n      unit:AddNewModifier(unit, nil, \"modifier_animation_translate\", {duration=duration, translate=translate2})\n      unit:SetModifierStackCount(\"modifier_animation_translate\", unit, _ANIMATION_TRANSLATE_TO_CODE[translate2])\n    end\n\n    unit._animationEnd = GameRules:GetGameTime() + duration\n    unit:AddNewModifier(unit, nil, \"modifier_animation\", {duration=duration, translate=translate})\n    unit:SetModifierStackCount(\"modifier_animation\", unit, stacks)\n  end\nend\n\nfunction FreezeAnimation(unit, duration)\n  if duration then\n    unit:AddNewModifier(unit, nil, \"modifier_animation_freeze\", {duration=duration})\n  else\n    unit:AddNewModifier(unit, nil, \"modifier_animation_freeze\", {})\n  end\nend\n\nfunction UnfreezeAnimation(unit)\n  unit:RemoveModifierByName(\"modifier_animation_freeze\")\nend\n\nfunction EndAnimation(unit)\n  unit._animationEnd = GameRules:GetGameTime()\n  unit:RemoveModifierByName(\"modifier_animation\")\n  unit:RemoveModifierByName(\"modifier_animation_translate\")\nend\n\nfunction AddAnimationTranslate(unit, translate)\n  if translate == nil or _ANIMATION_TRANSLATE_TO_CODE[translate] == nil then\n    print(\"[ANIMATIONS.lua] ERROR, no translate-code found for '\" .. translate .. \"'.  This translate may be misspelled or need to be added to the enum manually.\")\n    return\n  end\n\n  unit:AddNewModifier(unit, nil, \"modifier_animation_translate_permanent\", {duration=duration, translate=translate})\n  unit:SetModifierStackCount(\"modifier_animation_translate_permanent\", unit, _ANIMATION_TRANSLATE_TO_CODE[translate])\nend\n\nfunction RemoveAnimationTranslate(unit)\n  unit:RemoveModifierByName(\"modifier_animation_translate_permanent\")\nend\n\nGameRules.StartAnimation = StartAnimation\nGameRules.EndAnimation = EndAnimation\nGameRules.AddAnimationTranslate = AddAnimationTranslate\nGameRules.RemoveAnimationTranslate = RemoveAnimationTranslate"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/attachments.lua",
    "content": "ATTACHMENTS_VERSION = \"1.00\"\n\n--[[\n  Lua-controlled Frankenstein Attachments Library by BMD\n\n  Installation\n  -\"require\" this file inside your code in order to gain access to the Attachments global table.\n  -Optionally require \"libraries/notifications\" before this file so that the Attachment Configuration GUI can display messages via the Notifications library.\n  -Ensure that this file is placed in the vscripts/libraries path\n  -Ensure that you have the barebones_attachments.xml, barebones_attachments.js, and barebones_attachments.css files in your panorama content folder to use the GUI.\n  -Ensure that barebones_attachments.xml is included in your custom_ui_manifest.xml with\n    <CustomUIElement type=\"Hud\" layoutfile=\"file://{resources}/layout/custom_game/barebones_attachments.xml\" />\n  -Finally, include the \"attachments.txt\" in your scripts directory if you have a pre-build database of attachment settings.\n\n  Library Usage\n  -The library when required in loads in the \"scripts/attachments.txt\" file containing the attachment properties database for use during your game mode.\n  -Attachment properties are specified as a 3-tuple of unit model name, attachment point string, and attachment prop model name.\n    -Ex: (\"models/heroes/antimage/antimage.vmdl\" // \"attach_hitloc\" // \"models/items/axe/weapon_heavy_cutter.vmdl\")\n  -Optional particles can be specified in the \"Particles\" block of attachmets.txt.\n  -To attach a prop to a unit, use the Attachments:AttachProp(unit, attachPoint, model[, scale[, properties] ]) function\n    -Ex: Attachments:AttachProp(unit, \"attach_hitloc\", \"models/items/axe/weapon_heavy_cutter.vmdl\", 1.0)\n    -This will create the prop and retrieve the properties from the database to attach it to the provided unit\n    -If you pass in an already created prop or unit as the 'model' parameter, the attachment system will scale, position, and attach that prop/unit without creating a new one\n    -Scale is the prop scale to be used, and defaults to 1.0.  The scale of the prop will also be scaled based on the unit model scale.\n    -It is possible not to use the attachment database, but to instead provide the properties directly in the 'properties' parameter.\n    -This properties table will look like:\n      {\n        pitch = 45.0,\n        yaw = 55.0,\n        roll = 65.0,\n        XPos = 10.0,\n        YPos = -10.0,\n        ZPos = -33.0,\n        Animation = \"idle_hurt\"\n      }\n  -To retrieve the currently attached prop entity, you can call Attachments:GetCurrentAttachment(unit, attachPoint)\n    -Ex: local prop = Attachments:AttachProp(unit, \"attach_hitloc\")\n    -Calling prop:RemoveSelf() will automatically detach the prop from the unit\n  -To access the loaded Attachment database directly (for reading properties directly), you can call Attachments:GetAttachmentDatabase()\n\n  Attachment Configuration Usage\n  -In tools-mode, execute \"attachment_configure <ADDON_NAME>\" to activate the attachment configuration GUI for setting up the attachment database.\n  -See https://www.youtube.com/watch?v=PS1XmHGP3sw for an example of how to generally use the GUI\n  -The Load button will reload the database from disk and update the current attach point/prop model if values are stored therein.\n  -The Hide button will hide/remove the current atatach point/prop model being displayed\n  -The Save button will save the current properties as well as any other adjusted properties in the attachment database to disk.  \n  -Databases will be saved to the scripts/attachments.txt file of the addon you set when calling the attachment_configure <ADDON_NAME> command.\n  -More detail to come...\n\n  Notes\n  -\"attach_origin\" can be used as the attachment string for attaching a prop do the origin of the unit, even if that unit has no attachment point named \"attach_origin\"\n  -Attached props will automatically scale when the parent unit/models are scaled, so rescaling individual props after attachment is not necessary.\n  -This library requires that the \"libraries/timers.lua\" be present in your vscripts directory.\n\n  Examples:\n  --Attach an Axe axe model to the \"attach_hitloc\" to a given unit at a 1.0 Scale.\n    Attachments:AttachProp(unit, \"attach_hitloc\", \"models/items/axe/weapon_heavy_cutter.vmdl\", 1.0)\n\n  --For GUI use, see https://www.youtube.com/watch?v=PS1XmHGP3sw\n\n]]\n\n--LinkLuaModifier( \"modifier_animation_freeze\", \"libraries/modifiers/modifier_animation_freeze.lua\", LUA_MODIFIER_MOTION_NONE )\n\nLinkLuaModifier( \"modifier_animation_freeze_stun\", \"libraries/attachments.lua\", LUA_MODIFIER_MOTION_NONE )\n\nmodifier_animation_freeze_stun = class({})\n\nfunction modifier_animation_freeze_stun:OnCreated(keys) \n\nend\n\nfunction modifier_animation_freeze_stun:GetAttributes()\n  return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE --+ MODIFIER_ATTRIBUTE_MULTIPLE\nend\n\nfunction modifier_animation_freeze_stun:IsHidden()\n  return true\nend\n\nfunction modifier_animation_freeze_stun:IsDebuff() \n  return false\nend\n\nfunction modifier_animation_freeze_stun:IsPurgable() \n  return false\nend\n\nfunction modifier_animation_freeze_stun:CheckState() \n  local state = {\n    [MODIFIER_STATE_FROZEN] = true,\n    [MODIFIER_STATE_STUNNED] = true,\n  }\n\n  return state\nend\n\n-- Drop out of self-include to prevent execution of timers library and other code in modifier lua VM environment\nif not Entities or not Entities.CreateByClassname then\n  return\nend\n\nrequire('libraries/timers')\n\n\nlocal Notify = function(player, msg, duration)\n  duration = duration or 2\n  if Notifications then\n    local table = {text=msg, duration=duration, style={color=\"red\"}}\n    Notifications:Bottom(player, table)\n  else\n    print('[Attachments.lua] ' .. msg)\n  end\nend\n\nfunction WriteKV(file, firstLine, t, indent, done)\n  if type(t) ~= \"table\" then return end\n\n  done = done or {}\n  done[t] = true\n  indent = indent or 1\n\n  file:write(string.rep (\"\\t\", indent-1) .. \"\\\"\" .. firstLine .. \"\\\"\\n\")\n  file:write(string.rep (\"\\t\", indent-1) .. \"{\\n\")\n  for k,value in pairs(t) do\n    if type(value) == \"table\" and not done[value] then\n        done [value] = true\n        WriteKV (file, k, value, indent + 1, done)\n      elseif type(value) == \"userdata\" and not done[value] then\n        --skip userdata\n      else\n        file:write(string.rep (\"\\t\", indent) .. \"\\\"\" .. tostring(k) .. \"\\\"\\t\\t\\\"\" .. tostring(value) .. \"\\\"\\n\")\n      end\n  end\n  file:write(string.rep (\"\\t\", indent-1) .. \"}\\n\")\nend\n\nif not Attachments then\n  Attachments = class({})\nend\n\nfunction Attachments:start()\n\n  local src = debug.getinfo(1).source\n  --print(src)\n\n  self.gameDir = \"\"\n  self.addonName = \"\"\n\n  if IsInToolsMode() then\n\n    if src:sub(2):find(\"(.*dota 2 beta[\\\\/]game[\\\\/]dota_addons[\\\\/])([^\\\\/]+)[\\\\/]\") then\n\n      self.gameDir, self.addonName = string.match(src:sub(2), \"(.*dota 2 beta[\\\\/]game[\\\\/]dota_addons[\\\\/])([^\\\\/]+)[\\\\/]\")\n      --print('[attachments] ', self.gameDir)\n      --print('[attachments] ', self.addonName)\n\n      self.initialized = true\n\n      self.activated = false\n      self.dbFilePath = nil\n      self.currentAttach = {}\n      self.hiddenCosmetics = {}\n      self.doAttach = true\n      self.doSphere = false\n      self.attachDB = LoadKeyValues(\"scripts/attachments.txt\")\n\n\n      if IsInToolsMode() then\n        print('[attachments] Tools Mode')\n        SendToServerConsole(\"dota_combine_models 0\")\n        Convars:RegisterCommand( \"attachment_configure\", Dynamic_Wrap(Attachments, 'ActivateAttachmentSetup'), \"Activate Attachment Setup\", FCVAR_CHEAT )\n      end\n    else\n      print(\"[attachments] RELOADING\")\n      SendToServerConsole(\"script_reload_code \" .. src:sub(2))\n    end\n  else\n    self.initialized = true\n\n    self.activated = false\n    self.dbFilePath = nil\n    self.currentAttach = {}\n    self.hiddenCosmetics = {}\n    self.doAttach = true\n    self.doSphere = false\n    self.attachDB = LoadKeyValues(\"scripts/attachments.txt\")\n  end\nend\n\nfunction Attachments:ActivateAttachmentSetup()\n  addon = Attachments.addonName\n  --[[if addon == nil or addon == \"\" then\n    print(\"[Attachments.lua] Addon name must be specified.\")\n    return\n  end]]\n\n  if not io then\n    print(\"[Attachments.lua] Attachments Setup is only available in tools mode.\")\n    return\n  end\n  if not Attachments.activated then\n    local file = io.open(\"../../dota_addons/\" .. addon ..  \"/scripts/attachments.txt\", 'r')\n    if not file and Attachments.dbFilePath == nil then\n      print(\"[Attachments.lua] Cannot find file 'dota_addons/\" .. addon .. \"/scripts/attachments.txt'.  Re-execute the console command to force create the file.\")\n      Attachments.dbFilePath = \"\"\n      return\n    end\n\n    Attachments.dbFilePath = \"../../dota_addons/\" .. addon .. \"/scripts/attachments.txt\"\n\n    if not file then\n      file = io.open(Attachments.dbFilePath, 'w')\n      WriteKV(file, \"Attachments\", {})\n      print(\"[Attachments.lua] Created file: 'dota_addons/\" .. addon .. \"/scripts/attachments.txt'.\")\n    end\n    file:close()\n\n    CustomGameEventManager:RegisterListener(\"Attachment_DoSphere\", Dynamic_Wrap(Attachments, \"Attachment_DoSphere\"))\n    CustomGameEventManager:RegisterListener(\"Attachment_DoAttach\", Dynamic_Wrap(Attachments, \"Attachment_DoAttach\"))\n    CustomGameEventManager:RegisterListener(\"Attachment_Freeze\", Dynamic_Wrap(Attachments, \"Attachment_Freeze\"))\n    CustomGameEventManager:RegisterListener(\"Attachment_UpdateAttach\", Dynamic_Wrap(Attachments, \"Attachment_UpdateAttach\"))\n    CustomGameEventManager:RegisterListener(\"Attachment_SaveAttach\", Dynamic_Wrap(Attachments, \"Attachment_SaveAttach\"))\n    CustomGameEventManager:RegisterListener(\"Attachment_LoadAttach\", Dynamic_Wrap(Attachments, \"Attachment_LoadAttach\"))\n    CustomGameEventManager:RegisterListener(\"Attachment_HideAttach\", Dynamic_Wrap(Attachments, \"Attachment_HideAttach\"))\n    CustomGameEventManager:RegisterListener(\"Attachment_UpdateUnit\", Dynamic_Wrap(Attachments, \"Attachment_UpdateUnit\"))\n    CustomGameEventManager:RegisterListener(\"Attachment_HideCosmetic\", Dynamic_Wrap(Attachments, \"Attachment_HideCosmetic\"))\n\n    Attachments.activated = true\n    Attachments.doSphere = true\n  end\n\n  local ply = Convars:GetCommandClient()\n  CustomGameEventManager:Send_ServerToPlayer(ply, \"activate_attachment_configuration\", {})\nend\n\nfunction Attachments:Attachment_DoSphere(args)\n  --DebugPrint('Attachment_DoSphere')\n  --DebugPrintTable(args)\n\n  Attachments.doSphere = args.doSphere == 1\n\n  Attachments:Attachment_UpdateAttach(args)\nend\n\nfunction Attachments:Attachment_DoAttach(args)\n  --DebugPrint('Attachment_DoAttach')\n  --DebugPrintTable(args)\n\n  Attachments.doAttach = args.doAttach == 1\n\n  Attachments:Attachment_UpdateAttach(args)\nend\n\nfunction Attachments:Attachment_Freeze(args)\n  --DebugPrint('Attachment_Freeze')\n  --DebugPrintTable(args)\n\n  local unit = EntIndexToHScript(args.index)\n  if not unit then\n    Notify(args.PlayerID, \"Invalid Unit.\")\n    return\n  end\n\n  if args.freeze == 1 then\n    unit:AddNewModifier(unit, nil, \"modifier_animation_freeze_stun\", {})\n    unit:SetForwardVector(Vector(0,-1,0))\n    --unit:AddNewModifier(unit, nil, \"modifier_stunned\", {})\n  else\n    unit:RemoveModifierByName(\"modifier_animation_freeze_stun\")\n    --unit:RemoveModifierByName(\"modifier_stunned\")\n  end\nend\n\nfunction Attachments:Attachment_UpdateAttach(args)\n  DebugPrint('Attachment_UpdateAttach')\n  DebugPrintTable(args)\n\n  local unit = EntIndexToHScript(args.index)\n  if not unit then\n    Notify(args.PlayerID, \"Invalid Unit.\")\n    return\n  end\n  \n  local properties = args.properties\n  local unitModel = unit:GetModelName()\n  local attach = properties.attach\n  local model = properties.model\n  properties.attach = nil\n  properties.model = nil\n\n  if not string.find(model, \"%.vmdl$\") then\n    Notify(args.PlayerID, \"Prop model must end in '.vmdl'.\")\n    return\n  end\n\n  local point = unit:ScriptLookupAttachment(attach)\n  if attach ~= \"attach_origin\" and point == 0 then\n    Notify(args.PlayerID, \"Attach point '\" .. attach .. \"' not found.\")\n    return\n  end\n\n  local db = Attachments.attachDB\n  if not db[unitModel] then db[unitModel] = {} end\n  if not db[unitModel][attach] then db[unitModel][attach] = {} end\n  local oldProperties = db[unitModel][attach][model] or {}\n\n  -- update old properties\n  for k,v in pairs(properties) do\n    oldProperties[k] = v\n  end\n\n  properties = oldProperties\n  db[unitModel][attach][model] = properties\n  \n\n  if not Attachments.currentAttach[args.index] then Attachments.currentAttach[args.index] = {} end\n  local prop = Attachments.currentAttach[args.index][attach]\n  if prop and IsValidEntity(prop) then\n    prop:RemoveSelf()\n  end\n\n  --Attachments.currentAttach[args.index][attach] = Attachments:AttachProp(unit, attach, model, properties.scale)\n  Attachments:AttachProp(unit, attach, model, properties.scale)\nend\n\nfunction Attachments:Attachment_SaveAttach(args)\n  --DebugPrint('Attachment_SaveAttach')\n  --DebugPrintTable(args)\n\n  local unit = EntIndexToHScript(args.index)\n  if not unit then\n    Notify(args.PlayerID, \"Invalid Unit.\")\n    return\n  end\n  \n  local properties = args.properties\n  local unitModel = unit:GetModelName()\n  local attach = properties.attach\n  local model = properties.model\n\n  Attachments:Attachment_UpdateAttach(args)\n\n  if not io then\n    print(\"[Attachments.lua] Attachments Setup is only available in tools mode.\")\n    return\n  end\n\n  if Attachments.dbFilePath == nil or Attachments.dbFilePath == \"\" then\n    print(\"[Attachments.lua] Attachments database file must be set.\")\n    return\n  end\n\n  local file = io.open(Attachments.dbFilePath, 'w')\n  WriteKV(file, \"Attachments\", Attachments.attachDB)\n  file:close();\nend\n\nfunction Attachments:Attachment_LoadAttach(args)\n  --DebugPrint('Attachment_LoadAttach')\n  --DebugPrintTable(args)\n\n  local unit = EntIndexToHScript(args.index)\n  if not unit then\n    Notify(args.PlayerID, \"Invalid Unit.\")\n    return\n  end\n\n  local properties = args.properties\n  local unitModel = unit:GetModelName()\n  local attach = properties.attach\n  local model = properties.model\n\n  if not io then\n    print(\"[Attachments.lua] Attachments Setup is only available in tools mode.\")\n    return\n  end\n\n  Attachments.attachDB = LoadKeyValues(\"scripts/attachments.txt\")\n\n  local db = Attachments.attachDB\n  if not db[unitModel] or not db[unitModel][attach] or not db[unitModel][attach][model] then\n    Notify(args.PlayerID, \"No saved attach found for '\" .. attach .. \"'' / '\" .. model .. \"' on this unit.\")\n    return\n  end\n\n  local ply = PlayerResource:GetPlayer(args.PlayerID)\n  local properties = {}\n  for k,v in pairs(db[unitModel][attach][model]) do\n    properties[k] = v\n  end\n  properties.attach = attach\n  properties.model = model\n  CustomGameEventManager:Send_ServerToPlayer(ply, \"attachment_update_fields\", properties)\nend\n\nfunction Attachments:Attachment_HideAttach(args)\n  --DebugPrint('Attachment_HideAttach')\n  --DebugPrintTable(args)\n\n  local unit = EntIndexToHScript(args.index)\n  if not unit then\n    Notify(args.PlayerID, \"Invalid Unit.\")\n    return\n  end\n  \n  local properties = args.properties\n  local attach = properties.attach\n\n  local currentAttach = Attachments.currentAttach\n  if not currentAttach[args.index] or not currentAttach[args.index][attach] then\n    Notify(args.PlayerID, \"No Current Attach to Hide for '\" .. attach .. \"'.\")\n    return\n  end\n\n  local prop = currentAttach[args.index][attach]\n  if prop and IsValidEntity(prop) then\n    prop:RemoveSelf()\n  end\n  currentAttach[args.index][attach] = nil\nend\n\nfunction Attachments:Attachment_UpdateUnit(args)\n  --DebugPrint('Attachment_UpdateUnit')\n  --DebugPrintTable(args)\n\n  local unit = EntIndexToHScript(args.index)\n  if not unit then\n    Notify(args.PlayerID, \"Invalid Unit.\")\n    return\n  end\n\n  local cosmetics = {}\n  for i,child in ipairs(unit:GetChildren()) do\n    if child:GetClassname() == \"dota_item_wearable\" and child:GetModelName() ~= \"\" then\n      table.insert(cosmetics, child:GetModelName())\n    end\n  end\n\n  --DebugPrintTable(cosmetics)\n  CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(args.PlayerID), \"attachment_cosmetic_list\", cosmetics )\nend\n\nfunction Attachments:Attachment_HideCosmetic(args)\n  --DebugPrint('Attachment_HideCosmetic')\n  --DebugPrintTable(args)\n\n  local unit = EntIndexToHScript(args.index)\n  if not unit then\n    Notify(args.PlayerID, \"Invalid Unit.\")\n    return\n  end\n\n  local model = args.model;\n  \n  local cosmetics = {}\n  for i,child in ipairs(unit:GetChildren()) do\n    if child:GetClassname() == \"dota_item_wearable\" and child:GetModelName() == model then\n      local hiddenCosmetics = Attachments.hiddenCosmetics[args.index]\n      if not hiddenCosmetics then\n        hiddenCosmetics = {}\n        Attachments.hiddenCosmetics[args.index] = hiddenCosmetics\n      end\n\n      if hiddenCosmetics[model] then\n        child:RemoveEffects(EF_NODRAW)\n        hiddenCosmetics[model] = nil\n      else\n        --print(\"HIDING\")\n        child:AddEffects(EF_NODRAW)\n        hiddenCosmetics[model] = true\n      end\n    end\n  end\nend\n\n\n\nfunction Attachments:GetAttachmentDatabase()\n  return Attachments.attachDB\nend\n\nfunction Attachments:GetCurrentAttachment(unit, attachPoint)\n  if not Attachments.currentAttach[unit:entindex()] then return nil end\n  local prop = Attachments.currentAttach[unit:entindex()][attachPoint]\n  return prop\nend\n\nfunction Attachments:AttachProp(unit, attachPoint, model, scale, properties)\n\n    local unitModel = unit:GetModelName()\n    local propModel = model\n\n    local db = Attachments.attachDB\n    if propModel.GetModelName then propModel = propModel:GetModelName() end\n    if not properties then\n      if not db[unitModel] or not db[unitModel][attachPoint] or not db[unitModel][attachPoint][propModel] then\n        print(\"[Attachments.lua] No attach found in attachment database for '\" .. unitModel .. \"', '\" .. attachPoint .. \"', '\" .. propModel .. \"'\")\n        return\n      end\n    end\n\n    local attach = unit:ScriptLookupAttachment(attachPoint)\n    local scale = scale or db[unitModel][attachPoint][propModel]['scale'] or 1.0\n\n    properties = properties or db[unitModel][attachPoint][propModel]\n    local pitch = tonumber(properties.pitch)\n    local yaw = tonumber(properties.yaw)\n    local roll = tonumber(properties.roll)\n    --local angleSpace = QAngle(properties.QX, properties.QY, properties.QZ)\n    local offset = Vector(tonumber(properties.XPos), tonumber(properties.YPos), tonumber(properties.ZPos)) * scale * unit:GetModelScale()\n    local animation = properties.Animation\n    \n    --offset = RotatePosition(Vector(0,0,0), RotationDelta(angleSpace, QAngle(0,0,0)), offset)\n\n    --local new_prop = Entities:CreateByClassname(\"prop_dynamic\")\n    local prop = nil\n    if model.GetName and IsValidEntity(model) then\n      prop = model\n    else\n      prop = SpawnEntityFromTableSynchronous(\"prop_dynamic\", {model = propModel, DefaultAnim=animation, targetname=DoUniqueString(\"prop_dynamic\")})\n      prop:SetModelScale(scale * unit:GetModelScale())\n    end\n\n    local angles = unit:GetAttachmentAngles(attach)\n\n    \n    angles = QAngle(angles.x, angles.y, angles.z)\n    --angles = RotationDelta(angles,QAngle(pitch, yaw, roll))\n    --print(prop:GetAngles())\n    --print(angles)\n    --print(RotationDelta(RotationDelta(angles,QAngle(pitch, yaw, roll)),QAngle(0,0,0)))\n    --angles = QAngle(pitch, yaw, roll)\n\n    if not Attachments.doAttach then angles = QAngle(pitch, yaw, roll) end\n    angles = RotateOrientation(angles,RotationDelta(QAngle(pitch, yaw, roll), QAngle(0,0,0)))\n\n    --print('angleSpace = QAngle(' .. angles.x .. ', ' .. angles.y .. ', ' .. angles.z .. ')')\n\n    local attach_pos = unit:GetAttachmentOrigin(attach)\n    --attach_pos = attach_pos + RotatePosition(Vector(0,0,0), QAngle(angles.x,angles.y,angles.z), offset)\n    attach_pos = attach_pos + RotatePosition(Vector(0,0,0), angles, offset)\n\n    prop:SetAbsOrigin(attach_pos)\n    prop:SetAngles(angles.x,angles.y,angles.z)\n\n    -- Attach and store it\n    if Attachments.doAttach then\n      if attachPoint == \"attach_origin\" then\n        prop:SetParent(unit, \"\")\n      else        \n        prop:SetParent(unit, attachPoint)\n      end\n    end\n\n\n    -- From Noya\n    local particle_data = nil\n    if db['Particles']  then particle_data = db['Particles'][propModel] end\n    if particle_data then\n      for particleName,control_points in pairs(particle_data) do\n        prop.fx = ParticleManager:CreateParticle(particleName, PATTACH_ABSORIGIN, prop)\n\n        -- Loop through the Control Point Entities\n        for k,ent_point in pairs(control_points) do\n          ParticleManager:SetParticleControlEnt(prop.fx, tonumber(k), prop, PATTACH_POINT_FOLLOW, ent_point, prop:GetAbsOrigin(), true)\n        end\n      end    \n    end\n\n\n    if Attachments.timer then\n      Timers:RemoveTimer(Attachments.timer)\n    end\n    Attachments.timer = Timers:CreateTimer(function()\n      if Attachments.doSphere then\n        if unit and IsValidEntity(unit) then\n          DebugDrawSphere(unit:GetAttachmentOrigin(attach), Vector(255,255,255), 100, 15, true, .03)\n        end\n        if prop and IsValidEntity(prop) then\n          DebugDrawSphere(prop:GetAbsOrigin(), Vector(0,0,0), 100, 15, true, .03)\n        end\n      end\n      return .03\n    end)\n\n\n    if not Attachments.currentAttach[unit:GetEntityIndex()] then Attachments.currentAttach[unit:GetEntityIndex()] = {} end\n    Attachments.currentAttach[unit:GetEntityIndex()][attachPoint] = prop\n\n    return prop\nend\n\nif not Attachments.initialized then Attachments:start() end"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/containers.lua",
    "content": "CONTAINERS_VERSION = \"0.80\"\n\nrequire('libraries/timers')\nrequire('libraries/playertables')\n\nlocal ID_BASE = \"cont_\"\nFORCE_NIL = false\n\n\nCONTAINERS_DEBUG = IsInToolsMode() -- Should we print debugging prints for containers\n\n--[[\n\n  Containers API Calls\n    Containers:AddItemToUnit(unit, item)\n    Containers:CreateContainer(cont)\n    Containers:CreateShop(cont)\n    Containers:DeleteContainer(c, deleteContents)\n    Containers:DisplayError(pid, message)\n    Containers:EmitSoundOnClient(pid, sound)\n    Containers:GetDefaultInventory(unit)\n    Containers:GetEntityContainers(entity)\n    Containers:SetDefaultInventory(unit, container)\n    Containers:SetItemLimit(limit)\n    Containers:SetRangeAction(unit, tab)\n    Containers:UsePanoramaInventory(useInventory)\n\n    Containers:OnButtonPressed(playerID, container, unit, buttonNumber, buttonName)\n    Containers:OnCloseClicked(playerID, container, unit)\n    Containers:OnDragFrom(playerID, container, unit, item, fromSlot, toContainer, toSlot)\n    Containers:OnDragTo(playerID, container, unit, item, fromSlot, toContainer, toSlot)\n    Containers:OnDragWithin(playerID, container, unit, item, fromSlot, toSlot)\n    Containers:OnDragWorld(playerID, container, unit, item, slot, position, entity)\n    Containers:OnLeftClick(playerID, container, unit, item, slot)\n    Containers:OnRightClick(playerID, container, unit, item, slot)\n\n\n  Container Creation:\n    Containers:CreateContainer({\n      layout             = {3,2,2},\n      skins              = {\"Skin1\", \"Another\"}, --{}\n      buttons            = {}, -- {\"Take All\"}\n      headerText         = \"#lootbox\",\n      draggable          = true,\n      position           = \"200px 200px 0px\",  -- \"30% 40%\"   -- \"mouse\"    -- \"entity\"\n      equipment          = true,\n      range              = 250,\n      closeOnOrder       = true,\n      forceOwner         = false,\n      forcePurchaser     = false,\n      entity             = PlayerResource:GetSelectedHeroEntity(0),\n      \n      pids               = {0}, -- {[2]=true, [4]=true}\n      items              = {}, -- {CreateItem(...), CreateItem(...)}    -- {[3]=CreateItem(...), [5]=CreateItem(...):GetEntityIndex()}\n      \n      cantDragFrom       = {}, -- {3,5}\n      cantDragTo         = {},\n\n      layoutFile         = \"file://{resources}/layout/custom_game/containers/alt_container_example.xml\", nil->default\n      \n      OnLeftClick        = function(playerID, container, unit, item, slot) ... end,  -- nil->default, false->do nothing\n      OnRightClick       = function(playerID, container, unit, item, slot) ... end,  -- nil->default, false->do nothing\n      OnDragFrom         = function(playerID, container, unit, item, fromSlot, toContainer, toSlot) ... end,  -- nil->default, false->do nothing\n      OnDragTo           = function(playerID, container, unit, item, fromSlot, toContainer, toSlot) ... end,  -- nil->default, false->do nothing\n      OnDragWithin       = function(playerID, container, unit, item, fromSlot, toSlot) ... end,  -- nil->default, false->do nothing\n      OnDragWorld        = function(playerID, container, unit, item, slot, position, entity) ... end,  -- nil->default, false->do nothing\n      OnCloseClicked     = function(playerID, container, unit) ... end,  -- nil->default, false->do nothing\n      OnButtonPressed    = function(playerID, container, unit, buttonNumber, buttonName) ... end,  -- nil->default, false->do nothing\n      OnEntityOrder      = function(playerID, container, unit, target),  -- nil->do nothing\n      OnEntityDrag       = function(playerID, container, unit, target, fromContainer, item) ... end,  -- nil->do nothing\n      OnClose            = function(playerID, container) ... end,  -- nil->default\n      OnOpen             = function(playerID, container) ... end,  -- nil->default,\n      OnSelect           = function(playerID, container, selectedEntity) ... end,  -- nil->default,\n      OnDeselect         = function(playerID, container, deselectedEntity) ... end,  -- nil->default,,\n      \n      -- return true to allow the item add event.  slot is -1 if no slot is specified.\n      AddItemFilter      = function(container, item, slot),  -- nil->no filter\n      \n\n      -- See containers/container_events.js for javascript callback registration and handling\n      -- nil means to use the default\n      OnLeftClickJS      = \"ExampleLeftClick\",\n      OnRightClickJS     = \"ExampleRightClick\",\n      OnDoubleClickJS    = \"ExampleDoubleClick\",\n      OnMouseOutJS       = \"ExampleMouseOut\",\n      OnMouseOverJS      = \"ExampleMouseOver\",\n      OnButtonPressedJS  = \"ExampleButtonPressed\",\n      OnCloseClickedJS   = \"ExampleCloseClicked\",\n    )} \n\n  Container Functions:\n      c:ActivateItem(unit, item, playerID)\n      c:AddItem(item, slot, column, bypassFilter)\n      c:AddSkin(skin)\n      c:AddSubscription(pid)\n      c:CanDragFrom(pid)\n      c:CanDragTo(pid)\n      c:CanDragWithin(pid)\n      c:ClearSlot(slot)\n      c:Close(pid)\n      c:ContainsItem(item)\n      c:Delete(deleteContents)\n      c:GetAllItems()\n      c:GetAllOpen()\n      c:GetButtonName(number)\n      c:GetButtons()\n      c:GetCanDragFromPlayers()\n      c:GetCanDragToPlayers()\n      c:GetCanDragWithinPlayers()\n      c:GetContainerIndex()\n      c:GetEntity()\n      c:GetForceOwner()\n      c:GetForcePurchaser()\n      c:GetHeaderText()\n      c:GetItemInRowColumn(row, column)\n      c:GetItemInSlot(slot)\n      c:GetItemsByName(name)\n      c:GetLayout()\n      c:GetNumItems()\n      c:GetRange()\n      c:GetRowColumnForItem(item)\n      c:GetSize()\n      c:GetSkins()\n      c:GetSlotForItem(item)\n      c:GetSubscriptions()\n      c:HasSkin(skin)\n      c:IsCloseOnOrder()\n      c:IsDraggable()\n      c:IsEquipment()\n      c:IsInventory()\n      c:IsOpen(pid)\n      c:IsSubscribed(pid)\n      c:OnButtonPressed(fun)\n      c:OnButtonPressedJS(jsCallback)\n      c:OnClose(fun)\n      c:OnCloseClicked(fun)\n      c:OnCloseClickedJS(jsCallback)\n      c:OnDeselect(fun)\n      c:OnDoubleClickJS(jsCallback)\n      c:OnDragFrom(fun)\n      c:OnDragTo(fun)\n      c:OnDragWithin(fun)\n      c:OnDragWorld(fun)\n      c:OnEntityDrag(fun)\n      c:OnEntityOrder(fun)\n      c:OnLeftClick(fun)\n      c:OnLeftClickJS(jsCallback)\n      c:OnMouseOutJS(jsCallback)\n      c:OnMouseOverJS(jsCallback)\n      c:OnOpen(fun)\n      c:OnRightClick(fun)\n      c:OnRightClickJS(jsCallback)\n      c:OnSelect(fun)\n      c:Open(pid)\n      c:RemoveButton(number)\n      c:RemoveItem(item)\n      c:RemoveSkin(skin)\n      c:RemoveSubscription(pid)\n      c:SetButton(number, name)\n      c:SetCanDragFrom(pid, canDrag)\n      c:SetCanDragTo(pid, canDrag)\n      c:SetCanDragWithin(pid, canDrag)\n      c:SetCloseOnOrder(close)\n      c:SetDraggable(drag)\n      c:SetEntity(entity)\n      c:SetEquipment(equip)\n      c:SetForceOwner(owner)\n      c:SetForcePurchaser(purchaser)\n      c:SetHeaderText(header)\n      c:SetLayout(layout, removeOnContract)\n      c:SetRange(range)\n      c:SwapItems(item1, item2, allowCombine)\n      c:SwapSlots(slot1, slot2, allowCombine)\n\n\n\n\n  Shop Creation:\n    Containers:CreateShop({\n      -- Same as CreateContainer but with the additions of\n      items              = {}, -- {CreateItem(...), CreateItem(...)}    -- {[3]=CreateItem(...), [5]=CreateItem(...):GetEntityIndex()}\n      prices             = {}, -- {500, 800}   -- {[3]=500, [5]=800}\n      stocks             = {}, -- {[5]=10}\n    }\n\n  Shop Functions:\n    -- Same as a Container but with the additions of\n    shop:BuyItem(playerID, unit, item)\n    shop:GetPrice(item)\n    shop:GetStock(item)\n    shop:SetPrice(item, price)\n    shop:SetStock(item, stock)\n\n]]\n\n\nLinkLuaModifier( \"modifier_shopkeeper\", \"libraries/modifiers/modifier_shopkeeper.lua\", LUA_MODIFIER_MOTION_NONE )\n\n--\"dota_hud_error_not_enough_gold\"        \"Not Enough Gold\"\n--\"dota_hud_error_item_out_of_stock\"        \"Item is out of Stock\"\n--\"dota_hud_error_cant_pick_up_item\"        \"Inventory Full\"\n--\"dota_hud_error_cant_sell_shop_not_in_range\"  \"No Shop In Range\"\n--\"dota_hud_error_target_out_of_range\"      \"Target Out Of Range\"\n--\"dota_hud_error_unit_command_restricted\"    \"Can't Act\"\n--\"DOTA_FantasyTeamCreate_Error_Header\"       \"Error\"\n--\"DOTA_Trading_Response_UnknownError\"      \"Unknown Error\"\n\n\n-- mango can't be activated from outside inventory if it ever touched it\n-- dust crash for same reason\n-- dagon no particles/effects for same reason\n-- soul ring crash for same reason\n-- bottle also doesn't activate for same reason\n\n-- travels don't work, TP either probably\n-- armlet doesn't activate at all\n\n-- euls has targeting issues\n-- aghs probably not for sure\n-- treads don't work in equipment\n\n\nlocal ApplyPassives = nil\nApplyPassives = function(container, item, entOverride)\n  local ent = entOverride or container:GetEntity()\n  if not ent or not ent.AddNewModifier then return end\n  if container.appliedPassives[item:GetEntityIndex()] then return end\n\n  local passives = Containers.itemPassives[item:GetAbilityName()]\n  if passives then\n    for _,passive in ipairs(passives) do\n      -- check for previous buffs from this exact item\n      local buffs = ent:FindAllModifiersByName(passive)\n      for _, buff in ipairs(buffs) do\n        if buff:GetAbility() == item then\n          Timers:CreateTimer(function()\n            --print(\"FOUND, rerunning until removed\")\n            ApplyPassives(container, item, entOverride)\n          end)\n          return\n        end\n      end\n    end\n\n    container.appliedPassives[item:GetEntityIndex()] = {}\n    for _,passive in ipairs(passives) do\n      item:ApplyDataDrivenModifier(ent, ent, passive, {})\n      buffs = ent:FindAllModifiersByName(passive)\n      for _, buff in ipairs(buffs) do\n        if buff:GetAbility() == item then\n          table.insert(container.appliedPassives[item:GetEntityIndex()], buff)\n          break\n        end\n      end\n    end\n  else\n    passives = item:GetIntrinsicModifierName()\n    if passives then\n      local buff = ent:AddNewModifier(ent, item, passives, {})\n      container.appliedPassives[item:GetEntityIndex()] = {buff}\n    end\n  end\nend\n\nlocal GetItem = function(item)\n  if type(item) == \"number\" then\n    return EntIndexToHScript(item)\n  elseif item and IsValidEntity(item) and item.IsItem and item:IsItem() then \n    return item\n  end\nend\n\n\n\nlocal unitInventory = {unit = nil, range = 150, allowStash = false, canDragFrom = {}, canDragTo = {}, forceOwner = nil, forcePurchaser = nil}\n\nfunction unitInventory:AddItem(item, slot)\n  item = GetItem(item)\n  local unit = self.unit\n\n  local findStack = slot == nil\n  slot = slot or 0\n\n  local size = self:GetSize()\n\n  if slot > size then\n    print(\"[containers.lua]  Request to add item in slot \" .. slot .. \" -- exceeding dota inventory size \" .. size)\n    return false\n  end\n\n  local full = true\n  local stack = false\n  for i=0,size do\n    local sItem = unit:GetItemInSlot(i)\n    if not sItem then\n      full = false\n    elseif sItem:GetAbilityName() == item:GetAbilityName() and item:IsStackable() then\n      stack = true\n    end\n  end\n\n  if full and not stack then return false end\n  unit:AddItem(item)\n\n  Timers:CreateTimer(function()\n    if not IsValidEntity(item) then return end\n\n    unit:DropItemAtPositionImmediate(item, unit:GetAbsOrigin())\n    local drop = nil\n    for i=GameRules:NumDroppedItems()-1,0,-1 do\n      drop = GameRules:GetDroppedItem(i)\n      if drop:GetContainedItem() == item then\n        drop:RemoveSelf()\n        break\n      end\n    end\n\n    unit:AddItem(item)\n\n    if not findStack then\n      for i=0,5 do\n        if unit:GetItemInSlot(i) == item then\n          unit:SwapItems(i,slot)\n\n          if self.forceOwner then \n            item:SetOwner(self.forceOwner) \n          elseif self.forceOwner == false then\n            item:SetOwner(nil)\n          end\n          if self.forcePurchaser then\n            item:SetPurchaser(self.forcePurchaser) \n          elseif self.forceOwner == false then\n            item:SetPurchaser(nil)\n          end\n        end\n      end\n    end\n\n  end)\n\n  if not findStack then\n    for i=0,5 do\n      if unit:GetItemInSlot(i) == item then\n        unit:SwapItems(i,slot)\n\n        if self.forceOwner then \n          item:SetOwner(self.forceOwner) \n        elseif self.forceOwner == false then\n          item:SetOwner(nil)\n        end\n        if self.forcePurchaser then\n          item:SetPurchaser(self.forcePurchaser) \n        elseif self.forceOwner == false then\n          item:SetPurchaser(nil)\n        end\n        return true\n      end\n    end\n  end\n\n\n\n  return true\nend\n\nfunction unitInventory:ClearSlot(slot)\n  local item = self.unit:GetItemInSlot(slot)\n  if item then\n    self:RemoveItem(item)\n  end\nend\n\nfunction unitInventory:RemoveItem(item)\n  item = GetItem(item)\n  local unit = self.unit\n\n  if self:ContainsItem(item) then\n    unit:DropItemAtPositionImmediate(item, unit:GetAbsOrigin())\n    local drop = nil\n    for i=GameRules:NumDroppedItems()-1,0,-1 do\n      drop = GameRules:GetDroppedItem(i)\n      if drop:GetContainedItem() == item then\n        drop:RemoveSelf()\n        break\n      end\n    end\n  end\nend\n\n\nfunction unitInventory:ContainsItem(item)\n  item = GetItem(item)\n  if not item then return false end\n\n  local unit = self.unit\n  for i=0,11 do\n    if item == unit:GetItemInSlot(i) then\n      return true\n    end\n  end\n\n  return false\nend\n\nfunction unitInventory:GetSize()\n  if self.allowStash then\n    return 11 \n  else\n    return 5\n  end\nend\n\nfunction unitInventory:GetItemInSlot(slot)\n  return self.unit:GetItemInSlot(slot)\nend\n\nfunction unitInventory:GetRange()\n  return self.range\nend\n\nfunction unitInventory:GetEntity()\n  return self.unit\nend\n\nfunction unitInventory:IsInventory()\n  return true\nend\n\n\n\n\n\nif not Containers then\n  Containers = class({})\nend\n\nfunction Containers:start()\n  if not __ACTIVATE_HOOK then\n    __ACTIVATE_HOOK = {funcs={}}\n    setmetatable(__ACTIVATE_HOOK, {\n      __call = function(t, func)\n        table.insert(t.funcs, func)\n      end\n    })\n\n    debug.sethook(function(...)\n      local info = debug.getinfo(2)\n      local src = tostring(info.short_src)\n      local name = tostring(info.name)\n      if name ~= \"__index\" then\n        if string.find(src, \"addon_game_mode\") then\n          if GameRules:GetGameModeEntity() then\n            for _, func in ipairs(__ACTIVATE_HOOK.funcs) do\n              local status, err = pcall(func)\n              if not status then\n                print(\"__ACTIVATE_HOOK callback error: \" .. err)\n              end\n            end\n\n            debug.sethook(nil, \"c\")\n          end\n        end\n      end\n    end, \"c\")\n  end\n\n  __ACTIVATE_HOOK(function()\n    local mode = GameRules:GetGameModeEntity()\n    mode:SetExecuteOrderFilter(Dynamic_Wrap(Containers, 'OrderFilter'), Containers)\n    Containers.oldFilter = mode.SetExecuteOrderFilter\n    mode.SetExecuteOrderFilter = function(mode, fun, context)\n      --print('SetExecuteOrderFilter', fun, context)\n      Containers.nextFilter = fun\n      Containers.nextContext = context\n    end\n    Containers.initialized = true\n  end)\n  \n\n  self.initialized = false\n  self.containers = {}\n  self.nextID = 0\n  self.closeOnOrders = {}\n  for i=0,DOTA_MAX_TEAM_PLAYERS do\n    self.closeOnOrders[i] = {}\n  end\n\n  CustomNetTables:SetTableValue(\"containers_lua\", \"use_panorama_inventory\", {value=false})\n\n  self.nextFilter = nil\n  self.nextContext = nil\n  self.disableItemLimit = false\n\n  self.itemKV = LoadKeyValues(\"scripts/npc/items.txt\")\n  self.itemIDs = {}\n\n  self.entityShops = {}\n  self.defaultInventories = {}\n\n  self.rangeActions = {}\n  self.previousSelection = {}\n  self.entityContainers = {}\n\n  for k,v in pairs(LoadKeyValues(\"scripts/npc/npc_abilities_override.txt\")) do\n    if self.itemKV[k] then\n      self.itemKV[k] = v\n    end\n  end\n\n  for k,v in pairs(LoadKeyValues(\"scripts/npc/npc_items_custom.txt\")) do\n    if not self.itemKV[k] then\n      self.itemKV[k] = v\n    end\n  end\n\n  for k,v in pairs(self.itemKV) do\n    if type(v) == \"table\" and v.ID then\n      self.itemIDs[v.ID] = k\n    end\n  end\n\n  self.itemPassives = {}\n\n  for id,itemName in pairs(Containers.itemIDs) do\n    local kv = Containers.itemKV[itemName]\n    if kv.BaseClass == \"item_datadriven\" then\n      self.itemPassives[itemName] = {}\n      if kv.Modifiers then\n        local mods = kv.Modifiers\n        for modname, mod in pairs(mods) do\n          if mod.Passive == 1 then\n            table.insert(self.itemPassives[itemName], modname)\n          end\n        end\n      end\n    end\n  end\n\n  self.oldUniversal = GameRules.SetUseUniversalShopMode\n  self.universalShopMode = false\n  GameRules.SetUseUniversalShopMode = function(gamerules, universal)\n    Containers.universalShopMode = universal\n    Containers.oldUniversal(gamerules, universal)\n  end\n  if GameRules.FDesc then\n    GameRules.FDesc[\"SetUseUniversalShopMode\"] = nil\n  end\n\n  CustomGameEventManager:RegisterListener(\"Containers_EntityShopRange\", Dynamic_Wrap(Containers, \"Containers_EntityShopRange\"))\n  CustomGameEventManager:RegisterListener(\"Containers_Select\", Dynamic_Wrap(Containers, \"Containers_Select\"))\n  CustomGameEventManager:RegisterListener(\"Containers_HideProxy\", Dynamic_Wrap(Containers, \"Containers_HideProxy\"))\n\n  CustomGameEventManager:RegisterListener(\"Containers_OnLeftClick\", Dynamic_Wrap(Containers, \"Containers_OnLeftClick\"))\n  CustomGameEventManager:RegisterListener(\"Containers_OnRightClick\", Dynamic_Wrap(Containers, \"Containers_OnRightClick\"))\n  CustomGameEventManager:RegisterListener(\"Containers_OnDragFrom\", Dynamic_Wrap(Containers, \"Containers_OnDragFrom\"))\n  CustomGameEventManager:RegisterListener(\"Containers_OnDragWorld\", Dynamic_Wrap(Containers, \"Containers_OnDragWorld\"))\n  CustomGameEventManager:RegisterListener(\"Containers_OnCloseClicked\", Dynamic_Wrap(Containers, \"Containers_OnCloseClicked\"))\n  CustomGameEventManager:RegisterListener(\"Containers_OnButtonPressed\", Dynamic_Wrap(Containers, \"Containers_OnButtonPressed\"))\n\n  CustomGameEventManager:RegisterListener(\"Containers_OnSell\", Dynamic_Wrap(Containers, \"Containers_OnSell\"))\n\n\n\n  Timers:CreateTimer(function()\n    for id,action in pairs(Containers.rangeActions) do\n      local unit = action.unit\n      if unit then\n        if action.entity and not IsValidEntity(action.entity) then\n          Containers.rangeActions[id] = nil  \n        else\n          local range = action.range\n          if not range and action.container then\n            range = action.container:GetRange()\n          end\n          if not range then range = 150 end\n          local range2 = range * range\n          local pos = action.position or action.entity:GetAbsOrigin()\n          local dist = unit:GetAbsOrigin() - pos\n\n          if (dist.x * dist.x + dist.y * dist.y) <= range2 then\n            local status, err = pcall(action.action, action.playerID, action.container, unit, action.entity or action.position, action.fromContainer or action.orderType, action.item)\n            if not status then print('[containers.lua] RangeAction failure:' .. err) end\n            Containers.rangeActions[id] = nil  \n          end\n        end\n      else\n        Containers.rangeActions[id] = nil\n      end\n    end\n    return .01\n  end)\nend\n\n\nlocal closeOnOrderSkip = {\n  [DOTA_UNIT_ORDER_PURCHASE_ITEM] = true,\n  [DOTA_UNIT_ORDER_GLYPH] = true,\n  [DOTA_UNIT_ORDER_HOLD_POSITION] = true,\n  [DOTA_UNIT_ORDER_STOP] = true,\n  [DOTA_UNIT_ORDER_EJECT_ITEM_FROM_STASH] = true,\n  [DOTA_UNIT_ORDER_DISASSEMBLE_ITEM] = true,\n  [DOTA_UNIT_ORDER_PING_ABILITY] = true,\n  [DOTA_UNIT_ORDER_TRAIN_ABILITY] = true,\n  [DOTA_UNIT_ORDER_CAST_NO_TARGET] = true,\n  [DOTA_UNIT_ORDER_CAST_TOGGLE] = true,\n}\n\nfunction Containers:AddItemToUnit(unit, item)\n  if item and unit then\n    local defInventory = Containers:GetDefaultInventory(unit)\n    if defInventory then\n      if not defInventory:AddItem(item) then\n        CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(10), item)\n      end\n    else\n      local iname = item:GetAbilityName()\n      local exists = false\n      local full = true\n      for i=0,5 do\n        local it = unit:GetItemInSlot(i)\n        if not it then\n          full = false\n        elseif it:GetAbilityName() == iname then\n          exists = true\n        end\n      end\n\n      if not full or (full and item:IsStackable() and exists) then\n        unit:AddItem(item)\n      else\n        CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(10), item)\n      end\n    end\n  end\nend\n\nfunction Containers:SetItemLimit(limit)\n  SendToServerConsole(\"dota_max_physical_items_purchase_limit \" .. limit)\nend\n\nfunction Containers:SetDisableItemLimit(disable)\n  if not self.initialized then\n    print('[containers.lua] FATAL: Containers:Init() has not been initialized!')\n    return\n  end\n  --self.disableItemLimit = disable\nend\n\nfunction Containers:UsePanoramaInventory(useInventory)\n  CustomNetTables:SetTableValue(\"containers_lua\", \"use_panorama_inventory\", {value=useInventory})\n  CustomGameEventManager:Send_ServerToAllClients(\"cont_use_panorama_inventory\", {use=useInventory})\nend\n\nfunction Containers:DisplayError(pid, message)\n  local player = PlayerResource:GetPlayer(pid)\n  if player then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"cont_create_error_message\", {message=message})\n  end\nend\n\nfunction Containers:EmitSoundOnClient(pid, sound)\n  local player = PlayerResource:GetPlayer(pid)\n  if player then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"cont_emit_client_sound\", {sound=sound})\n  end\nend\n\nfunction Containers:OrderFilter(order)\n  --print('Containers:OrderFilter')\n  --PrintTable(order)\n\n  local ret = true\n\n  if Containers.nextFilter then\n    ret = Containers.nextFilter(Containers.nextContext, order)\n  end\n\n  if not ret then\n    return false\n  end\n\n  local issuerID = order.issuer_player_id_const\n  local queue = order.queue == 1\n\n  if issuerID == -1 then return true end\n\n  -- close on order\n  if not closeOnOrderSkip[order.order_type] then\n    local oConts = Containers.closeOnOrders[issuerID]\n    for id,cont in pairs(oConts) do\n      if IsValidContainer(cont) then\n        cont:Close(issuerID)\n      else\n        oConts[id] = nil\n      end\n    end\n  end\n\n  if not queue and order.units[\"0\"] then\n    Containers.rangeActions[order.units[\"0\"]] = nil\n  end\n\n  local conts = Containers:GetEntityContainers(order.entindex_target)\n  if order.units[\"0\"] and #conts > 0 then\n    local container = nil\n    for _,cont in ipairs(conts) do\n      if cont._OnEntityOrder then\n        container = cont\n        break\n      end\n    end\n\n    if container then\n      local unit = EntIndexToHScript(order.units[\"0\"])\n      local target = EntIndexToHScript(order.entindex_target)\n      local range = container:GetRange() or 150\n      local unitpos = unit:GetAbsOrigin()\n      local diff = unitpos - target:GetAbsOrigin()\n      local dist = diff:Length2D()\n      local pos = unitpos\n      if dist > range * .9 then\n        pos = target:GetAbsOrigin() + diff:Normalized() * range * .9\n      end\n\n      local origOrder = order.order_type\n\n      if target.GetContainedItem then\n        order.order_type = DOTA_UNIT_ORDER_MOVE_TO_POSITION\n        order.position_x = pos.x\n        order.position_y = pos.y\n        order.position_z = pos.z\n      else\n        order.order_type = DOTA_UNIT_ORDER_MOVE_TO_TARGET\n      end\n      \n      Containers.rangeActions[order.units[\"0\"]] = {\n        unit = unit,\n        entity = target,\n        range = range,\n        playerID = issuerID,\n        container = container,\n        orderType = origOrder,\n        action = container._OnEntityOrder,\n      }\n    end\n  end\n\n  --DOTA_UNIT_ORDER_GIVE_ITEM\n  if order.units[\"0\"] and order.order_type == DOTA_UNIT_ORDER_GIVE_ITEM then\n    local unit = EntIndexToHScript(order.units[\"0\"])\n    local item = EntIndexToHScript(order.entindex_ability)\n    local target = EntIndexToHScript(order.entindex_target)\n\n    local defInventory = Containers:GetDefaultInventory(target)\n    if defInventory then\n      order.order_type = DOTA_UNIT_ORDER_MOVE_TO_TARGET\n\n      Containers.rangeActions[order.units[\"0\"]] = {\n        unit = unit,\n        entity = target,\n        range = 180,\n        playerID = issuerID,\n        action = function(playerID, container, unit, target)\n          if IsValidEntity(target) and target:IsAlive() then\n            unit:DropItemAtPositionImmediate(item, unit:GetAbsOrigin())\n            local drop = nil\n            for i=GameRules:NumDroppedItems()-1,0,-1 do\n              drop = GameRules:GetDroppedItem(i)\n              if drop:GetContainedItem() == item then\n                Containers:AddItemToUnit(target, item)\n                drop:RemoveSelf()\n                break\n              end\n            end\n          end\n\n          unit:Stop()\n        end,\n      }\n    else\n      return true\n    end\n  end\n\n  if order.units[\"0\"] and order.order_type == DOTA_UNIT_ORDER_PICKUP_ITEM then\n    local unit = EntIndexToHScript(order.units[\"0\"])\n    local physItem = EntIndexToHScript(order.entindex_target)\n    local unitpos = unit:GetAbsOrigin()\n    if not physItem then return false end\n    local diff = unitpos - physItem:GetAbsOrigin()\n    local dist = diff:Length2D()\n    local pos = unitpos\n    if dist > 90 then\n      pos = physItem:GetAbsOrigin() + diff:Normalized() * 90\n    end\n\n    local defInventory = Containers:GetDefaultInventory(unit)\n    if defInventory then\n      order.order_type = DOTA_UNIT_ORDER_MOVE_TO_POSITION\n      order.position_x = pos.x\n      order.position_y = pos.y\n      order.position_z = pos.z\n\n      Containers.rangeActions[order.units[\"0\"]] = {\n        unit = unit,\n        position = physItem:GetAbsOrigin(),\n        range = 100,\n        playerID = issuerID,\n        action = function(playerID, container, unit, target)\n          if IsValidEntity(physItem) then\n            local item = physItem:GetContainedItem()\n            if item and defInventory:AddItem(item) then\n              physItem:RemoveSelf()\n            end\n          end\n        end,\n      }\n    end\n  end\n\n  if order.units[\"0\"] and order.order_type == DOTA_UNIT_ORDER_PURCHASE_ITEM then\n    local unit = EntIndexToHScript(order.units[\"0\"])\n    local itemID = order.entindex_ability\n    local itemName = Containers.itemIDs[itemID]\n    local player = PlayerResource:GetPlayer(issuerID)\n    local ownerID = issuerID --unit:GetMainControllingPlayer()\n    local owner = PlayerResource:GetSelectedHeroEntity(ownerID)\n\n    local defInventory = Containers:GetDefaultInventory(unit)\n\n    if defInventory then\n      local shops = Containers.entityShops[unit:GetEntityIndex()] or {home=false, side=false, secret=false}\n      if not unit:IsAlive() then\n        shops = {home=true, side=false, secret=false}\n      end\n\n      if not shops.home and not shops.side and not shops.secret then\n        CustomGameEventManager:Send_ServerToPlayer(player, \"cont_create_error_message\", {reason=67})\n        return false\n      end\n\n      local item = CreateItem(itemName, owner, owner)\n      local cost = item:GetCost()\n      if not defInventory:AddItem(item) then\n        CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(10), item)\n      end\n\n      PlayerResource:SpendGold(ownerID, cost, DOTA_ModifyGold_PurchaseItem)\n      return false\n    elseif Containers.disableItemLimit then\n      if not unit:HasInventory() then\n        unit = owner\n        if unit == nil then return false end\n      end\n\n      local itemDefinition = Containers.itemKV[itemName]\n      local itemSide = itemDefinition[\"SideShop\"] == 1\n      local itemSecret = itemDefinition[\"SecretShop\"] == 1\n      if itemDefinition[\"ItemPurchasable\"] == 0 then return false end\n\n      local toStash = true\n      local full = true\n      for i=0,5 do\n        if unit:GetItemInSlot(i) == nil then\n          full = false\n          break\n        end\n      end\n\n      local shops = Containers.entityShops[unit:GetEntityIndex()] or {home=false, side=false, secret=false}\n      if not unit:IsAlive() then\n        shops = {home=true, side=false, secret=false}\n      end\n      local stashPurchasingDisabled = GameRules:GetGameModeEntity():GetStashPurchasingDisabled()\n      local universalShopMode = Containers.universalShopMode\n\n      if universalShopMode then\n        if not shops.home and not shops.side and not shops.secret then\n          if stashPurchasingDisabled then \n            CustomGameEventManager:Send_ServerToPlayer(player, \"cont_create_error_message\", {reason=67})\n            return false \n          end\n\n          toStash = true\n        end\n      else\n        if not shops.home and not shops.side and not shops.secret then\n          -- not in range of any shops\n          if stashPurchasingDisabled then \n            CustomGameEventManager:Send_ServerToPlayer(player, \"cont_create_error_message\", {reason=67})\n            return false \n          end\n        elseif itemSecret and shops.secret then\n          toStash = false\n        elseif itemSide and shops.side then\n          toStash = false\n        elseif shops.home and not full then\n          toStash = false\n        end\n      end\n\n      local item = CreateItem(itemName, owner, owner)\n      local fullyShareStacking = Containers.itemKV[itemName][\"ItemShareability\"] == \"ITEM_FULLY_SHAREABLE_STACKING\"\n      local dropped = {}\n      local cost = item:GetCost()\n\n      if toStash then\n        local restore = {}\n        local stashSlot = 11\n        for i=6,11 do\n          local slot = owner:GetItemInSlot(i)\n          if not slot then\n            stashSlot = i\n            break\n          end\n        end\n\n        for i=0,5 do\n          local slot = owner:GetItemInSlot(i)\n          if slot and (fullyShareStacking and slot:GetAbilityName() == itemName \n            or ((slot:GetAbilityName() == \"item_ward_dispenser\" or slot:GetAbilityName() == \"item_ward_observer\" or slot:GetAbilityName() == \"item_ward_sentry\")) and \n              (itemName == \"item_ward_observer\" or itemName == \"item_ward_sentry\")) then\n\n            owner:DropItemAtPositionImmediate(slot, owner:GetAbsOrigin())\n            for i=GameRules:NumDroppedItems()-1,0,-1 do\n              local drop = GameRules:GetDroppedItem(i)\n              if drop:GetContainedItem() == slot then\n                table.insert(dropped, drop)\n                break\n              end\n            end\n\n          elseif slot and (slot:GetOwner() == owner or slot:GetPurchaser() == owner) then\n            restore[slot:GetEntityIndex()] = {owner=slot:GetOwner(), purchaser=slot:GetPurchaser()}\n            slot:SetPurchaser(nil)\n            slot:SetOwner(nil)\n          end\n        end\n\n        if owner:GetNumItemsInStash() == 6 then\n          if not unit.HasAnyAvailableInventorySpace and shops.home then\n            CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(20), item)\n          else\n            local slot = DOTA_STASH_SLOT_6\n            local slotItem = owner:GetItemInSlot(slot)\n            if slotItem and slotItem:GetAbilityName() == item:GetAbilityName() then\n              slot = DOTA_STASH_SLOT_5\n            end\n            owner:SwapItems(slot,14)\n            owner:AddItem(item)\n            for i=0,11 do\n              if owner:GetItemInSlot(i) == item then\n                owner:SwapItems(slot,i)\n                owner:EjectItemFromStash(item)\n              end\n            end\n            owner:SwapItems(14,slot)\n          end\n        else\n          owner:AddItem(item)\n          for i=0,11 do\n            if owner:GetItemInSlot(i) == item then\n              owner:SwapItems(stashSlot,i)\n            end\n          end\n        end\n\n        for i=0,5 do\n          local item = owner:GetItemInSlot(i)\n          if item and restore[item:GetEntityIndex()] ~= nil then\n            item:SetPurchaser(restore[item:GetEntityIndex()].purchaser)\n            item:SetOwner(restore[item:GetEntityIndex()].owner)\n          end\n        end\n      else\n        if full then\n          local physItem = CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(5), item)\n          unit:PickupDroppedItem(physItem)\n        else\n          for i=6,11 do\n            local item = unit:GetItemInSlot(i)\n            if not shops.home and item and item:GetPurchaser() == owner then\n              item:SetPurchaser(nil)\n            end\n          end\n\n          unit:AddItem(item)\n\n          for i=6,11 do\n            local item = unit:GetItemInSlot(i)\n            if not shops.home and item and item:GetPurchaser() == nil then\n              item:SetPurchaser(owner)\n            end\n          end\n        end\n      end\n\n      local queue = false\n      for _,drop in ipairs(dropped) do\n        ExecuteOrderFromTable({\n          UnitIndex = owner:GetEntityIndex(),\n          TargetIndex = drop:GetEntityIndex(),\n          OrderType = DOTA_UNIT_ORDER_PICKUP_ITEM,\n          Queue = queue,\n          })\n        queue = true\n        --owner:AddItem(drop:GetContainedItem())\n        --drop:RemoveSelf()\n      end\n\n      PlayerResource:SpendGold(ownerID, cost, DOTA_ModifyGold_PurchaseItem)\n\n      return false\n    end\n  end\n\n  return ret\nend\n\nfunction Containers:Containers_EntityShopRange(args)\n  local unit = args.unit\n  local shop = args.shop\n\n  local cs = Containers.entityShops\n  if not cs[unit] then cs[unit] = {home=false, side=false, secret=false} end\n\n  cs[unit].home = bit.band(shop, 1) ~= 0\n  cs[unit].side = bit.band(shop, 2) ~= 0\n  cs[unit].secret = bit.band(shop, 4) ~= 0\nend\n\nfunction Containers:Containers_Select(args)\n  local playerID = args.PlayerID\n  local prev = Containers.previousSelection[playerID]\n  local new = args.entity\n  local newEnt = EntIndexToHScript(new)\n\n  local prevConts = Containers:GetEntityContainers(prev)\n  for _, c in ipairs(prevConts) do\n    if c._OnDeselect then\n      local res, err = pcall(c._OnDeselect, playerID, c, prev)\n      if err then\n        print('[containers.lua] Error in OnDeselect: ' .. err)\n      end\n    end\n  end\n\n  Containers.previousSelection[playerID] = newEnt\n\n  local conts = Containers:GetEntityContainers(new)\n  for _, c in ipairs(conts) do\n    if c._OnSelect then\n      local res, err = pcall(c._OnSelect, playerID, c, newEnt)\n      if err then\n        print('[containers.lua] Error in OnSelect: ' .. err)\n      end\n    end\n  end\nend\n\nfunction Containers:Containers_HideProxy(args)\n  local abil = EntIndexToHScript(args.abilID)\n  if abil and abil.GetAbilityName and (abil:GetAbilityName() == \"containers_lua_targeting\" or abil:GetAbilityName() == \"containers_lua_targeting_tree\" )\n      and abil:GetOwner():GetPlayerOwnerID() == args.PlayerID then\n    abil:SetHidden(true)\n  end\nend\n\nfunction Containers:Containers_OnSell(args)\n  Containers:print('Containers_OnSell')\n  Containers:PrintTable(args)\n\n  local playerID = args.PlayerID\n  local unit = args.unit == nil and nil or EntIndexToHScript(args.unit)\n  local contID = args.contID\n  local itemID = args.itemID\n  local slot =  args.slot\n\n  if not playerID then return end\n  --if unit and unit:GetMainControllingPlayer() ~= playerID then return end\n\n  local container = Containers.containers[contID]\n  if not container then return end\n\n  local item = EntIndexToHScript(args.itemID)\n  if not (item and IsValidEntity(item) and item.IsItem and item:IsItem()) then return end\n\n  if item:GetOwner() ~= unit or item:GetPurchaser() ~= unit then return end\n\n  local itemInSlot = container:GetItemInSlot(slot)\n  if itemInSlot ~= item then return end\n\n  local range = container:GetRange()\n  local ent = container:GetEntity()\n  if range == nil and ent and unit ~= ent then return end\n  if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then \n    Containers:DisplayError(playerID,\"#dota_hud_error_target_out_of_range\")\n    return \n  end\n\n  local shops = Containers.entityShops[unit:GetEntityIndex()] or {home=false, side=false, secret=false}\n  local player = PlayerResource:GetPlayer(playerID)\n\n  if not shops.home and not shops.side and not shops.secret then\n    if player then\n      CustomGameEventManager:Send_ServerToPlayer(player, \"cont_create_error_message\", {reason=67})\n    end\n    return\n  end\n\n  local cost = item:GetCost()\n  if GameRules:GetGameTime() - item:GetPurchaseTime() > 10 then\n    cost = cost /2\n  end\n\n  container:RemoveItem(item)\n  item:RemoveSelf()\n  PlayerResource:ModifyGold(playerID, cost, false, DOTA_ModifyGold_SellItem)\n\n  if player then\n    SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, unit, cost, player)\n    EmitSoundOnClient(\"General.Sell\", player)\n  end\nend\n\nfunction Containers:Containers_OnLeftClick(args)\n  Containers:print('Containers_OnLeftClick')\n  Containers:PrintTable(args)\n\n  local playerID = args.PlayerID\n  local unit = args.unit == nil and nil or EntIndexToHScript(args.unit)\n  local contID = args.contID\n  local itemID = args.itemID\n  local slot =  args.slot\n\n  if not playerID then return end\n  --if unit and unit:GetMainControllingPlayer() ~= playerID then return end\n\n  local container = Containers.containers[contID]\n  if not container then return end\n\n  local fun = container._OnLeftClick\n  if fun == false then return end\n\n  local item = EntIndexToHScript(args.itemID)\n  if not (item and IsValidEntity(item) and item.IsItem and item:IsItem()) then return end\n\n  local itemInSlot = container:GetItemInSlot(slot)\n  if itemInSlot ~= item then return end\n\n  local range = container:GetRange()\n  local ent = container:GetEntity()\n  if range == nil and ent and unit ~= ent then return end\n  if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then \n    Containers:DisplayError(playerID,\"#dota_hud_error_target_out_of_range\")\n    return \n  end\n\n  if type(fun) == \"function\" then\n    fun(playerID, container, unit, item, slot)\n  else\n    Containers:OnLeftClick(playerID, container, unit, item, slot)\n  end\nend\n\nfunction Containers:Containers_OnRightClick(args)\n  Containers:print('Containers_OnRightClick')\n  Containers:PrintTable(args)\n\n  local playerID = args.PlayerID\n  local unit = args.unit == nil and nil or EntIndexToHScript(args.unit)\n  local contID = args.contID\n  local itemID = args.itemID\n  local slot =  args.slot\n\n  if not playerID then return end\n  --if unit and unit:GetMainControllingPlayer() ~= playerID then return end\n\n  local container = Containers.containers[contID]\n  if not container then return end\n\n  local fun = container._OnRightClick\n  if fun == false then return end\n\n  local item = EntIndexToHScript(args.itemID)\n  if not (item and IsValidEntity(item) and item.IsItem and item:IsItem()) then return end\n\n  local itemInSlot = container:GetItemInSlot(slot)\n  if itemInSlot ~= item then return end\n\n  local range = container:GetRange()\n  local ent = container:GetEntity()\n  if range == nil and ent and unit ~= ent then return end\n  if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then \n    Containers:DisplayError(playerID,\"#dota_hud_error_target_out_of_range\")\n    return \n  end\n\n  if type(fun) == \"function\" then\n    fun(playerID, container, unit, item, slot)\n  else\n    Containers:OnRightClick(playerID, container, unit, item, slot)\n  end\nend\n\nfunction Containers:Containers_OnDragFrom(args)\n  Containers:print('Containers_OnDragFrom')\n  Containers:PrintTable(args)\n\n  local playerID = args.PlayerID\n  local unit = args.unit == nil and nil or EntIndexToHScript(args.unit)\n  local contID = args.contID\n  local itemID = args.itemID\n  local fromSlot = args.fromSlot\n  local toContID = args.toContID\n  local toSlot = args.toSlot\n\n  if not playerID then return end\n  --if unit and unit:GetMainControllingPlayer() ~= playerID then return end\n\n  local container = nil\n  if contID == -1 then\n    container = unitInventory\n    container.unit = unit\n    container.range = 150\n    if fromSlot > 5 then return end\n  else\n    container = Containers.containers[contID]\n  end\n  if not container then return end\n\n  local toContainer = nil\n  if toContID == -1 then\n    toContainer = unitInventory\n    toContainer.unit = unit\n    toContainer.range = 150\n    if toSlot > 5 then return end\n  else\n    toContainer = Containers.containers[toContID]\n  end\n  if not toContainer then return end\n\n  local item = EntIndexToHScript(args.itemID)\n  if not (item and IsValidEntity(item) and item.IsItem and item:IsItem()) then return end\n\n  local itemInSlot = container:GetItemInSlot(fromSlot)\n  if itemInSlot ~= item then return end\n\n  if toSlot > toContainer:GetSize() then return end\n\n  local range = container:GetRange()\n  local ent = container:GetEntity()\n  if range == nil and ent and unit ~= ent then return end\n  if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then \n    Containers:DisplayError(playerID,\"#dota_hud_error_target_out_of_range\")\n    return \n  end\n  \n  if container == toContainer then\n    if container.canDragWithin[playerID] == false then return end\n\n    local fun = container._OnDragWithin\n    if fun == false then return end\n\n    if type(fun) == \"function\" then\n      fun(playerID, container, unit, item, fromSlot, toSlot)\n    else\n      Containers:OnDragWithin(playerID, container, unit, item, fromSlot, toSlot)\n    end\n  else\n    if container.canDragFrom[playerID] == false or toContainer.canDragTo[playerID] == false then return end\n\n    local range = toContainer:GetRange()\n    local ent = toContainer:GetEntity()\n    if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then \n      Containers:DisplayError(playerID,\"#dota_hud_error_target_out_of_range\")\n      return \n    end\n\n    local fun = container._OnDragFrom\n    if fun == false then return end\n\n    if type(fun) == \"function\" then\n      fun(playerID, container, unit, item, fromSlot, toContainer, toSlot)\n    else\n      Containers:OnDragFrom(playerID, container, unit, item, fromSlot, toContainer, toSlot)\n    end\n  end\nend\n\nfunction Containers:Containers_OnDragWorld(args)\n  Containers:print('Containers_OnDragWorld')\n  Containers:PrintTable(args)\n\n  local playerID = args.PlayerID\n  local unit = args.unit == nil and nil or EntIndexToHScript(args.unit)\n  local contID = args.contID\n  local itemID = args.itemID\n  local slot =  args.slot\n  local position = args.position\n  local entity = nil\n  if type(args.entity) == \"number\" then entity = EntIndexToHScript(args.entity) end\n\n  if not playerID then return end\n  --if unit and unit:GetMainControllingPlayer() ~= playerID then return end\n\n  local container = nil\n  if contID == -1 then\n    container = unitInventory\n    container.unit = unit\n    container.range = nil\n  else\n    container = Containers.containers[contID]\n  end\n  if not container then return end\n\n  local fun = container._OnDragWorld\n  if fun == false then return end\n\n  local item = EntIndexToHScript(args.itemID)\n  if not (item and IsValidEntity(item) and item.IsItem and item:IsItem()) then return end\n\n  local itemInSlot = container:GetItemInSlot(slot)\n  if itemInSlot ~= item then return end\n\n  if not position[\"0\"] or not position[\"1\"] or not position[\"2\"] then return end\n  position = Vector(position[\"0\"], position[\"1\"], position[\"2\"])\n\n  if container.canDragFrom[playerID] == false then return end\n\n  if not item:IsDroppable() then\n    Containers:DisplayError(playerID,\"#dota_hud_error_item_cant_be_dropped\")\n    return\n  end\n\n  local range = container:GetRange()\n  local ent = container:GetEntity()\n  if range == nil and ent and unit ~= ent then return end\n  if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then \n    Containers:DisplayError(playerID,\"#dota_hud_error_target_out_of_range\")\n    return \n  end\n\n  if type(fun) == \"function\" then\n    fun(playerID, container, unit, item, slot, position, entity)\n  else\n    Containers:OnDragWorld(playerID, container, unit, item, slot, position, entity)\n  end\nend\n\nfunction Containers:Containers_OnCloseClicked(args)\n  Containers:print('Containers_OnCloseClicked')\n  Containers:PrintTable(args)\n\n  local playerID = args.PlayerID\n  local unit = args.unit == nil and nil or EntIndexToHScript(args.unit)\n  local contID = args.contID\n\n  if not playerID then return end\n\n  local container = Containers.containers[contID]\n  if not container then return end\n\n  local fun = container._OnCloseClicked\n  if fun == false then return end\n\n  if type(fun) == \"function\" then\n    fun(playerID, container, unit)\n  else\n    Containers:OnCloseClicked(playerID, container, unit)\n  end\nend\n\nfunction Containers:Containers_OnButtonPressed(args)\n  Containers:print('Containers_OnButtonPressed')\n  Containers:PrintTable(args)\n\n  local playerID = args.PlayerID\n  local unit = args.unit == nil and nil or EntIndexToHScript(args.unit)\n  local contID = args.contID\n  local buttonNumber = args.button\n\n  if not playerID then return end\n  --if unit and unit:GetMainControllingPlayer() ~= playerID then return end\n\n  local container = Containers.containers[contID]\n  if not container then return end\n\n  local fun = container._OnButtonPressed\n  if fun == false then return end\n\n  if buttonNumber < 1 then return end\n  local buttonName = container:GetButtonName(buttonNumber)\n\n  if not buttonName then return end\n\n  local range = container:GetRange()\n  local ent = container:GetEntity()\n  if range == nil and ent and unit ~= ent then return end\n  if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then \n    Containers:DisplayError(playerID,\"#dota_hud_error_target_out_of_range\")\n    return \n  end\n\n  if type(fun) == \"function\" then\n    fun(playerID, container, unit, buttonNumber, buttonName)\n  else\n    Containers:OnButtonPressed(playerID, container, unit, buttonNumber, buttonName)\n  end\nend\n\n\nfunction Containers:OnLeftClick(playerID, container, unit, item, slot)\n  Containers:print(\"Containers:OnLeftClick\", playerID, container, unit, item:GetEntityIndex(), slot)\n\n  local hero = PlayerResource:GetSelectedHeroEntity(playerID)\n  container:ActivateItem(hero, item, playerID)\nend\n\nfunction Containers:OnRightClick(playerID, container, unit, item, slot)\n  Containers:print(\"Containers:OnRightClick\", playerID, container, unit, item:GetEntityIndex(), slot)\nend\n\nfunction Containers:OnDragWithin(playerID, container, unit, item, fromSlot, toSlot)\n  Containers:print('Containers:OnDragWithin', playerID, container, unit, item, fromSlot, toSlot)\n\n  container:SwapSlots(fromSlot, toSlot, true)\nend\n\nfunction Containers:OnDragFrom(playerID, container, unit, item, fromSlot, toContainer, toSlot)\n  Containers:print('Containers:OnDragFrom', playerID, container, unit, item, fromSlot, toContainer, toSlot)\n\n  local canChange = Containers.itemKV[item:GetAbilityName()].ItemCanChangeContainer\n  if toContainer._OnDragTo == false or canChange == 0 then return end\n\n  local fun = nil\n  if type(toContainer._OnDragTo) == \"function\" then\n    fun = toContainer._OnDragTo\n  end\n\n  if fun then\n    fun(playerID, container, unit, item, fromSlot, toContainer, toSlot)\n  else\n    Containers:OnDragTo(playerID, container, unit, item, fromSlot, toContainer, toSlot)\n  end\n\nend\n\nfunction Containers:OnDragTo(playerID, container, unit, item, fromSlot, toContainer, toSlot)\n  Containers:print('Containers:OnDragTo', playerID, container, unit, item, fromSlot, toContainer, toSlot)\n\n  local item2 = toContainer:GetItemInSlot(toSlot)\n  local addItem = nil\n  if item2 and IsValidEntity(item2) and (item2:GetAbilityName() ~= item:GetAbilityName() or not item2:IsStackable() or not item:IsStackable()) then\n    if Containers.itemKV[item2:GetAbilityName()].ItemCanChangeContainer == 0 then\n      return false\n    end\n    toContainer:RemoveItem(item2)\n    addItem = item2\n  end\n\n  if toContainer:AddItem(item, toSlot) then\n    container:ClearSlot(fromSlot)\n    if addItem then\n      if container:AddItem(addItem, fromSlot) then\n        return true\n      else\n        toContainer:RemoveItem(item)\n        toContainer:AddItem(item2, toSlot, nil, true)\n        container:AddItem(item, fromSlot, nil, true)\n        return false\n      end\n    end\n    return true\n  elseif addItem then\n    toContainer:AddItem(item2, toSlot, nil, true)\n  end\n   \n  return false \nend\n\nfunction Containers:OnDragWorld(playerID, container, unit, item, slot, position, entity)\n  Containers:print('Containers:OnDragWorld', playerID, container, unit, item, slot, position, entity)\n\n  local unitpos = unit:GetAbsOrigin()\n  local diff = unitpos - position\n  local dist = diff:Length2D()\n\n  local conts = {}\n  if IsValidEntity(entity) then\n    conts = Containers:GetEntityContainers(entity:GetEntityIndex())\n  end\n\n  local toCont = nil\n  for _,cont in ipairs(conts) do\n    if cont._OnEntityDrag then\n      toCont = cont\n      break\n    end\n  end\n\n  if IsValidEntity(entity) and entity.GetContainedItem and toCont then\n    local range = toCont:GetRange() or 150\n\n    Containers:SetRangeAction(unit, {\n      unit = unit,\n      entity = entity,\n      range = range,\n      playerID = playerID,\n      container = toCont,\n      fromContainer = container,\n      item = item,\n      action = toCont._OnEntityDrag,\n    })\n  elseif IsValidEntity(entity) and entity:GetTeam() == unit:GetTeam() and entity.HasInventory and entity:HasInventory() and entity:IsAlive() then\n    ExecuteOrderFromTable({\n      UnitIndex=   unit:GetEntityIndex(),\n      OrderType=   DOTA_UNIT_ORDER_MOVE_TO_TARGET,\n      TargetIndex= entity:GetEntityIndex(),\n    })\n\n    Containers.rangeActions[unit:GetEntityIndex()] = {\n      unit = unit,\n      entity = entity,\n      range = 180,\n      container = container,\n      playerID = playerID,\n      action = function(playerID, container, unit, target)\n        if IsValidEntity(target) and target:IsAlive() and container:ContainsItem(item) then\n          container:RemoveItem(item)\n          Containers:AddItemToUnit(target, item)\n        end\n\n        unit:Stop()\n      end,\n    }\n  elseif IsValidEntity(entity) and entity:GetClassname() == \"ent_dota_shop\" and item:IsSellable() then\n    ExecuteOrderFromTable({\n      UnitIndex=   unit:GetEntityIndex(),\n      OrderType=   DOTA_UNIT_ORDER_MOVE_TO_TARGET,\n      TargetIndex= entity:GetEntityIndex(),\n    })\n\n    Containers.rangeActions[unit:GetEntityIndex()] = {\n      unit = unit,\n      entity = entity,\n      range = 425,\n      container = container,\n      playerID = playerID,\n      action = function(playerID, container, unit, target)\n        if IsValidEntity(target) and container:ContainsItem(item) then\n          local cost = item:GetCost()\n          if GameRules:GetGameTime() - item:GetPurchaseTime() > 10 then\n            cost = cost /2\n          end\n\n          container:RemoveItem(item)\n          item:RemoveSelf()\n          PlayerResource:ModifyGold(playerID, cost, false, DOTA_ModifyGold_SellItem)\n\n          local player = PlayerResource:GetPlayer(playerID)\n\n          if player then\n            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, unit, cost, player)\n            EmitSoundOnClient(\"General.Sell\", player)\n          end\n        end\n\n        unit:Stop()\n      end,\n    }\n  else\n    local pos = unitpos\n    if dist > 150 *.9 then\n      pos = position + diff:Normalized() * 150 * .9\n    end\n\n    --DebugDrawCircle(pos, Vector(255,0,0), 1, 50.0, true, 1)\n\n    --unit:MoveToPosition(pos)\n    ExecuteOrderFromTable({\n      UnitIndex= unit:GetEntityIndex(),\n      OrderType= DOTA_UNIT_ORDER_MOVE_TO_POSITION,\n      Position=  pos,\n    })\n\n    Containers.rangeActions[unit:GetEntityIndex()] = {\n      unit = unit,\n      --entity = target,\n      position = position,\n      range = 150,\n      container = container,\n      playerID = playerID,\n      action = function(playerID, container, unit, target)\n        if container:ContainsItem(item) then\n          container:RemoveItem(item)\n          CreateItemOnPositionSync(position, item)\n        end\n      end,\n    }\n  end\nend\n\n\nfunction Containers:OnCloseClicked(playerID, container, unit)\n  Containers:print('Containers:OnCloseClicked', playerID, container, unit)\n  container:Close(playerID)\nend\n\nfunction Containers:OnButtonPressed(playerID, container, unit, buttonNumber, buttonName)\n  print('Button ' .. buttonNumber .. ':\\'' .. buttonName .. '\\' Pressed by player:' .. playerID .. ' for container ' .. container.id .. '.  No OnButtonPressed handler.')\nend\n\n\n\n\nfunction Containers:GetEntityContainers(entity)\n  if entity and type(entity) ~= \"number\" and entity.GetEntityIndex and IsValidEntity(entity) then\n    entity = entity:GetEntityIndex()\n  end\n\n  local tab = {}\n  for id,cont in pairs(Containers.entityContainers[entity] or {}) do\n    table.insert(tab, cont)\n  end\n  return tab\nend\n\nfunction Containers:SetRangeAction(unit, tab)\n  if not IsValidEntity(unit) then\n    return\n  end\n\n  local range = tab.range or 150\n  if tab.container then range = (tab.container:GetRange() or 150) end\n  local tpos = tab.position or tab.entity:GetAbsOrigin()\n  local unitpos = unit:GetAbsOrigin()\n  local diff = unitpos - tpos\n  local dist = diff:Length2D()\n  local pos = unitpos\n  if dist > range * .9 then\n    pos = tpos + diff:Normalized() * range * .9\n  end\n\n  tab.unit = unit\n\n  if tab.entity and not tab.entity.GetContainedItem then\n    ExecuteOrderFromTable({\n      UnitIndex=   unit:GetEntityIndex(),\n      OrderType=   DOTA_UNIT_ORDER_MOVE_TO_TARGET,\n      TargetIndex= tab.entity:GetEntityIndex(),\n    })\n  else\n    ExecuteOrderFromTable({\n      UnitIndex=   unit:GetEntityIndex(),\n      OrderType=   DOTA_UNIT_ORDER_MOVE_TO_POSITION,\n      Position =   pos,\n    })\n  end\n\n  Containers.rangeActions[unit:GetEntityIndex()] = tab\nend\n\nfunction Containers:SetDefaultInventory(unit, container)\n  if not self.initialized then\n    print('[containers.lua] FATAL: Containers:Init() has not been called in the Activate() function chain!')\n    return\n  end\n  self.defaultInventories[unit:GetEntityIndex()] = container\nend\n\nfunction Containers:GetDefaultInventory(unit)\n  local di = self.defaultInventories[unit:GetEntityIndex()]\n  if IsValidContainer(di) then\n    return di\n  else\n    self.defaultInventories[unit:GetEntityIndex()] = nil\n    return nil\n  end\nend\n\nfunction Containers:CreateShop(cont)\n  local shop = self:CreateContainer(cont)\n\n  local ptID = shop.ptID\n  local pt = {shop = 1,\n              }\n\n  if cont.prices then\n    for k,v in pairs(cont.prices) do\n      local item = k\n      if type(k) ~= \"number\" then\n        item = k:GetEntityIndex()\n      end\n\n      pt['price' .. k] = v\n    end\n  end\n\n  if cont.stocks then\n    for k,v in pairs(cont.stocks) do\n      local item = k\n      if type(k) ~= \"number\" then\n        item = k:GetEntityIndex()\n      end\n\n      pt['stock' .. k] = v\n    end\n  end\n\n  PlayerTables:SetTableValues(ptID, pt)\n\n  function shop:BuyItem(playerID, unit, item)\n    local cost = self:GetPrice(item)\n    local stock = self:GetStock(item)\n    local owner = PlayerResource:GetSelectedHeroEntity(playerID)\n    local gold = PlayerResource:GetGold(playerID)\n    if gold >= cost and (stock == nil or stock > 0) then\n      local newItem = CreateItem(item:GetAbilityName(), owner, owner)\n      newItem:SetLevel(item:GetLevel())\n      newItem:SetCurrentCharges(item:GetCurrentCharges())\n\n      PlayerResource:SpendGold(playerID, cost, DOTA_ModifyGold_PurchaseItem)\n\n      if stock then\n        self:SetStock(item, stock-1)\n      end\n\n      Containers:EmitSoundOnClient(playerID, \"General.Buy\")\n\n      return newItem\n    elseif stock ~= nil and stock <= 0 then\n      Containers:DisplayError(playerID, \"#dota_hud_error_item_out_of_stock\")\n    elseif gold < cost then\n      Containers:DisplayError(playerID, \"#dota_hud_error_not_enough_gold\")\n    end\n  end\n\n  function shop:SellItem()\n\n  end\n\n  function shop:GetPrice(item)\n    item = GetItem(item)\n    return PlayerTables:GetTableValue(ptID, \"price\" .. item:GetEntityIndex()) or item:GetCost()\n  end\n  function shop:SetPrice(item, price)\n    item = GetItem(item)\n    if price then\n      PlayerTables:SetTableValue(ptID, \"price\" .. item:GetEntityIndex(), price)\n    else\n      PlayerTables:DeleteTableKey(ptID, \"price\" .. item:GetEntityIndex())\n    end\n  end\n\n  function shop:GetStock(item)\n    item = GetItem(item)\n    return PlayerTables:GetTableValue(ptID, \"stock\" .. item:GetEntityIndex())\n  end\n  function shop:SetStock(item, stock)\n    item = GetItem(item)\n    if stock then\n      PlayerTables:SetTableValue(ptID, \"stock\" .. item:GetEntityIndex(), stock)\n    else\n      PlayerTables:DeleteTableKey(ptID, \"stock\" .. item:GetEntityIndex())\n    end\n  end\n\n  if not cont.canDragWithin then shop.canDragWithin = {} end\n  shop:AddSkin(\"ContainerShop\")\n  if not cont.OnDragWorld then shop:OnDragWorld(false) end\n  if not cont.OnDragWithin then shop:OnDragWithin(false) end\n  if not cont.OnLeftClick then shop:OnLeftClick(false) end\n  if not cont.OnDragTo then \n    shop:OnDragTo(function(playerID, container, unit, item, fromSlot, toContainer, toSlot)\n      Containers:print('Shop:OnDragTo', playerID, container, unit, item, fromSlot, toContainer, toSlot)\n    end)\n  end\n  if not cont.OnDragFrom then\n    shop:OnDragFrom(function(playerID, container, unit, item, fromSlot, toContainer, toSlot)\n      Containers:print('Shop:OnDragFrom', playerID, container, unit, item, fromSlot, toContainer, toSlot)\n    end)\n  end\n  --[[shop:OnLeftClick(function(playerID, container, unit, item, slot)\n    print(\"Shop:OnLeftClick\", playerID, container, unit, item:GetEntityIndex(), slot)\n  end)]]\n  if not cont.OnRightClick then\n    shop:OnRightClick(function(playerID, container, unit, item, slot)\n      Containers:print(\"Shop:OnRightClick\", playerID, container, unit, item:GetEntityIndex(), slot)\n\n      local defInventory = Containers:GetDefaultInventory(unit)\n      if not defInventory and not unit:HasInventory() then return end\n\n      local item = container:BuyItem(playerID, unit, item)\n      Containers:AddItemToUnit(unit, item)\n    end)\n  end\n\n\n  return shop\nend\n\nfunction Containers:CreateContainer(cont)\n  if not self.initialized then\n    print('[containers.lua] FATAL: Containers:Init() has not been called in the Activate() function chain!')\n    return\n  end\n  local pt =\n    {id =          self.nextID,\n     ptID =        ID_BASE .. self.nextID,\n     --unit =        cont.unit\n\n     layout =      cont.layout or {2,2},\n     size =        0, -- calculated below\n     rowStarts =   {}, -- calculated below\n     --slot1 =       1111, -- set up below\n     --slot2 =       1122, -- set up below \n     skins =       {},\n     buttons =     cont.buttons or {},\n     headerText =  cont.headerText or \"Container\",\n     draggable =   cont.draggable or true,\n     position =    cont.position or \"100px 200px 0px\",\n     equipment =   cont.equipment,\n\n     layoutFile =  cont.layoutFile,\n\n     OnLeftClick =     type(cont.OnLeftClick) == \"function\" and true or cont.OnLeftClick,\n     OnRightClick =    type(cont.OnRightClick) == \"function\" and true or cont.OnRightClick,\n     OnDragFrom  =     type(cont.OnDragFrom) == \"function\" and true or cont.OnDragFrom,\n     OnDragWorld =     false,\n     OnCloseClicked =  type(cont.OnCloseClicked) == \"function\" and true or cont.OnCloseClicked,\n     OnButtonPressed = type(cont.OnButtonPressed) == \"function\" and true or cont.OnButtonPressed,\n     \n     OnLeftClickJS =   cont.OnLeftClickJS,\n     OnRightClickJS =  cont.OnRightClickJS,\n     OnDoubleClickJS = cont.OnDoubleClickJS,\n     OnMouseOutJS =    cont.OnMouseOutJS,\n     OnMouseOverJS =   cont.OnMouseOverJS,\n     OnButtonPressedJS=cont.OnButtonPressedJS,\n     OnCloseClickedJS =cont.OnCloseClickedJS,\n    }\n\n  local c = {id = pt.id,\n    ptID = pt.ptID,\n    items = {},\n    itemNames = {},\n    subs = {},\n    opens = {},\n    range = cont.range,\n    closeOnOrder = cont.closeOnOrder == nil and false or cont.closeOnOrder,\n\n    canDragFrom = {},\n    canDragTo = {},\n    canDragWithin = {},\n    appliedPassives = {},\n    cleanupTimer = nil,\n\n    forceOwner =         cont.forceOwner,\n    forcePurchaser =     cont.forcePurchaser,\n    --entity     =     nil,\n\n    _OnLeftClick =     cont.OnLeftClick,\n    _OnRightClick =    cont.OnRightClick,\n    _OnDragTo =        cont.OnDragTo,\n    _OnDragFrom =      cont.OnDragFrom,\n    _OnDragWithin =    cont.OnDragWithin,\n    _OnDragWorld =     cont.OnDragWorld,\n    _OnCloseClicked =  cont.OnCloseClicked,\n    _OnButtonPressed = cont.OnButtonPressed,\n    _OnEntityOrder =   cont.OnEntityOrder,\n    _OnEntityDrag =    cont.OnEntityDrag,\n    _OnClose =         cont.OnClose,\n    _OnOpen =          cont.OnOpen,\n    _OnSelect =        cont.OnSelect,\n    _OnDeselect =      cont.OnDeselect,\n    AddItemFilter =    cont.AddItemFilter,\n  }\n\n  if cont.OnDragWorld ~= nil and (type(cont.OnDragWorld) == \"function\" or cont.OnDragWorld == true) then\n    pt.OnDragWorld = true\n  end\n\n  --if cont.setOwner then c.setOwner = cont.setOwner end\n  --if cont.setPurchaser then c.setOwner = cont.setPurchaser end\n  \n  if cont.entity and type(cont.entity) == \"number\" then\n    pt.entity = cont.entity\n  elseif cont.entity and cont.entity.GetEntityIndex then\n    pt.entity = cont.entity:GetEntityIndex()\n  end\n\n  if pt.entity then\n    Containers.entityContainers[pt.entity] = Containers.entityContainers[pt.entity] or {}\n    Containers.entityContainers[pt.entity][c.id] = c\n  end\n\n  for i,row in ipairs(pt.layout) do\n    table.insert(pt.rowStarts, pt.size+1)\n    pt.size = pt.size + row\n  end\n\n  if cont.skins then\n    for k,v in pairs(cont.skins) do\n      if type(v) == \"string\" then\n        pt.skins[v] = true\n      end\n    end\n  end\n\n  if cont.items then\n    for k,v in pairs(cont.items) do\n      if type(k) == \"number\" then\n        local item = v\n        if type(v) == \"number\" then \n          item = EntIndexToHScript(item)\n        end\n\n        if item and IsValidEntity(item) and item.IsItem and item:IsItem() then \n          local itemid = item:GetEntityIndex() \n          local itemname = item:GetAbilityName()\n          pt['slot' .. k] = itemid \n          c.items[itemid] = k\n          c.itemNames[itemname] = c.itemNames[itemname] or {}\n          c.itemNames[itemname][itemid] = k\n\n          if cont.equipment and pt.entity then\n            ApplyPassives(c, item, EntIndexToHScript(pt.entity))\n          end\n        end\n      end\n    end\n  end\n\n  if cont.equipment then\n    c.cleanupTimer = Timers:CreateTimer(1, function()\n      for itemID, mods in pairs(c.appliedPassives) do\n        if not IsValidEntity(EntIndexToHScript(itemID)) or not c:ContainsItem(itemID) then\n          for _, mod in ipairs(mods) do\n            mod:Destroy()\n          end\n          c.appliedPassives[itemID] = nil\n        end\n      end\n      return 1\n    end)\n  end\n\n  if cont.cantDragFrom then\n    for _,pid in ipairs(cont.cantDragFrom) do\n      if type(pid) == \"number\" then\n        c.canDragFrom[pid] = false\n      end\n    end\n  end\n\n  if cont.cantDragTo then\n    for _,pid in ipairs(cont.cantDragTo) do\n      if type(pid) == \"number\" then\n        c.canDragTo[pid] = false\n      end\n    end\n  end\n\n  if cont.pids then\n    for _,pid in ipairs(cont.pids) do\n      c.subs[pid] = true\n    end\n  end\n\n  PlayerTables:CreateTable(c.ptID, pt, c.subs)\n\n  function c:ActivateItem(unit, item, playerID)\n    if item:GetOwner() ~= unit or not item:IsFullyCastable() then \n      Containers:EmitSoundOnClient(playerID, \"General.Cancel\")\n      return\n    end\n\n    local playerID = playerID or unit:GetPlayerOwnerID()\n\n    local behavior =     item:GetBehavior()\n    local targetType =   item:GetAbilityTargetType()\n    local toggle =       bit.band(behavior, DOTA_ABILITY_BEHAVIOR_TOGGLE) ~= 0\n    local unrestricted = bit.band(behavior, DOTA_ABILITY_BEHAVIOR_UNRESTRICTED) ~= 0\n    local rootDisables = bit.band(behavior, DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES) ~= 0\n    local channelled =   bit.band(behavior, DOTA_ABILITY_BEHAVIOR_CHANNELLED) ~= 0\n    local noTarget =     bit.band(behavior, DOTA_ABILITY_BEHAVIOR_NO_TARGET) ~= 0\n    local treeTarget =   bit.band(targetType, DOTA_UNIT_TARGET_TREE) ~= 0\n\n    if unit:IsStunned() and not unrestricted then\n      Containers:DisplayError(playerID, \"#dota_hud_error_unit_command_restricted\")\n      return\n    end\n    if unit:IsRooted() and rootDisables then\n      Containers:DisplayError(playerID, \"#dota_hud_error_ability_disabled_by_root\")\n      return\n    end\n    if noTarget and not channelled then\n      item:PayGoldCost()\n      item:PayManaCost()\n      item:StartCooldown(item:GetCooldown(item:GetLevel()))\n      if toggle then\n        item:OnToggle()\n      else\n        item:OnSpellStart()\n      end\n    else\n      local abil = unit:FindAbilityByName(\"containers_lua_targeting\")\n      if treeTarget then\n        if unit:HasAbility(\"containers_lua_targeting\") then unit:RemoveAbility(\"containers_lua_targeting\") end\n        abil = unit:FindAbilityByName(\"containers_lua_targeting_tree\")\n      elseif unit:HasAbility(\"containers_lua_targeting_tree\") then \n        unit:RemoveAbility(\"containers_lua_targeting_tree\")\n      end\n      if not abil then\n        -- no ability proxy found, add\n        local abilSlot = -1\n        for i=15,0,-1 do\n          local ab = unit:GetAbilityByIndex(i)\n          if not ab then\n            abilSlot = i\n            break\n          end\n        end\n\n        if abilSlot == -1 then\n          print(\"[containers.lua]  ERROR: 'containers_lua-targeting' ability not found for unit '\" .. unit:GetUnitName() .. '\" and all ability slots are full.')\n          return\n        end\n\n        if treeTarget then\n          abil = unit:AddAbility(\"containers_lua_targeting_tree\")\n          --abil = unit:FindAbilityByName(\"containers_lua_targeting_tree\")\n        else\n          abil = unit:AddAbility(\"containers_lua_targeting\")\n          --abil = unit:FindAbilityByName(\"containers_lua_targeting\")\n        end\n        abil:SetLevel(1)\n      end\n\n      abil:SetHidden(false)\n      abil.proxyItem = item\n\n      local aoe = nil\n      local iname = item:GetAbilityName()\n      if iname == \"item_veil_of_discord\" then\n        aoe = 600\n      elseif Containers.itemKV[iname] then\n        aoe = Containers.itemKV[iname].AOERadius\n      end\n\n      CustomNetTables:SetTableValue(\"containers_lua\", tostring(abil:GetEntityIndex()), {behavior=behavior, aoe=aoe, range=item:GetCastRange(), \n        targetType=targetType, targetTeam=item:GetAbilityTargetTeam(), targetFlags=item:GetAbilityTargetFlags(), \n        channelTime=item:GetChannelTime(), channelCost=item:GetChannelledManaCostPerSecond(item:GetLevel()),\n        proxyItem=item:GetEntityIndex()})\n\n      local player = PlayerResource:GetPlayer(playerID)\n      if player then\n        CustomGameEventManager:Send_ServerToPlayer(player, \"cont_execute_proxy\", {unit=unit:GetEntityIndex()})\n      end\n    end\n  end\n\n  function c:GetAllOpen()\n    return self.opens\n  end\n\n  function c:IsOpen(pid)\n    return self.opens[pid] ~= nil\n  end\n\n  function c:Open(pid)\n    self.opens[pid] = true\n    PlayerTables:AddPlayerSubscription(self.ptID, pid)\n\n    if self:IsCloseOnOrder() then\n      Containers.closeOnOrders[pid][self.id] = self\n    end\n\n    local player = PlayerResource:GetPlayer(pid)\n    if player then  \n      CustomGameEventManager:Send_ServerToPlayer(player, \"cont_open_container\", {id=self.id} )\n    end\n\n    if self._OnOpen then\n      self._OnOpen(pid, self)\n    end\n  end\n\n  function c:Close(pid)\n    if self.opens[pid] == nil then return end\n\n    self.opens[pid] = nil\n    if not self.subs[pid] then\n      PlayerTables:RemovePlayerSubscription(self.ptID, pid)\n    end\n\n    if self:IsCloseOnOrder() then\n      Containers.closeOnOrders[pid][self.id] = nil\n    end\n\n    local player = PlayerResource:GetPlayer(pid)\n    if player then  \n      CustomGameEventManager:Send_ServerToPlayer(player, \"cont_close_container\", {id=self.id} )\n    end\n\n    if self._OnClose then\n      self._OnClose(pid, self)\n    end\n  end\n\n  function c:Delete(deleteContents)\n    Containers:DeleteContainer(self, deleteContents)\n  end\n\n  function c:AddSubscription(pid)\n    self.subs[pid] = true\n    PlayerTables:AddPlayerSubscription(self.ptID, pid)\n  end\n\n  function c:RemoveSubscription(pid)\n    self.subs[pid] = nil\n    if not self.opens[pid] then\n      PlayerTables:RemovePlayerSubscription(self.ptID, pid)\n    end\n  end\n\n  function c:GetSubscriptions()\n    return self.subs\n  end\n\n  function c:IsSubscribed(pid)\n    return self.subs[pid] ~= nil\n  end\n\n  function c:SwapSlots(slot1, slot2, allowCombine)\n    local item1 = self:GetItemInSlot(slot1)\n    local item2 = self:GetItemInSlot(slot2)\n\n    if item1 and item2 then\n      return self:SwapItems(item1, item2, allowCombine)\n    elseif item1 then\n      local itemid = item1:GetEntityIndex()\n      local itemname = item1:GetAbilityName()\n      self.items[itemid] = slot2\n      self.itemNames[itemname][itemid] = slot2\n\n      PlayerTables:SetTableValue(self.ptID, \"slot\"..slot2, itemid)\n      PlayerTables:DeleteTableKey(self.ptID, \"slot\"..slot1)\n      return true\n    elseif item2 then\n      local itemid = item2:GetEntityIndex()\n      local itemname = item2:GetAbilityName()\n      self.items[itemid] = slot1\n      self.itemNames[itemname][itemid] = slot1\n\n      PlayerTables:SetTableValue(self.ptID, \"slot\"..slot1, itemid)\n      PlayerTables:DeleteTableKey(self.ptID, \"slot\"..slot2)\n      return true\n    end\n    return false\n  end\n\n  function c:SwapItems(item1, item2, allowCombine)\n    item1 = GetItem(item1)\n    item2 = GetItem(item2)\n\n    local i1id = item1:GetEntityIndex()\n    local i1name = item1:GetAbilityName()\n    local i2id = item2:GetEntityIndex()\n    local i2name = item2:GetAbilityName()\n\n    local i1 = self.items[i1id]\n    local i2 = self.items[i2id]\n\n    if i1 and i2 then\n      if allowCombine and i1name == i2name and item1:IsStackable() and item2:IsStackable() then\n        self:RemoveItem(item1)\n        item2:SetCurrentCharges(item2:GetCurrentCharges() + item1:GetCurrentCharges())\n        item1:RemoveSelf()\n        return true\n      end\n      self.items[i1id] = i2\n      self.items[i2id] = i1\n      self.itemNames[i1name][i1id] = i2\n      self.itemNames[i2name][i2id] = i1\n\n      PlayerTables:SetTableValues(self.ptID, {[\"slot\"..i1]=i2id, [\"slot\"..i2]=i1id})\n      return true\n    end\n\n    return false\n  end\n\n  function c:ContainsItem(item)\n    item = GetItem(item)\n    if not item then return false end\n    return self.items[item:GetEntityIndex()] ~= nil\n  end\n\n  function c:GetSlotForItem(item)\n    item = GetItem(item)\n    return self.items[item:GetEntityIndex()]\n  end\n\n  function c:GetRowColumnForItem(item)\n    item = GetItem(item)\n\n    local itemid = item:GetEntityIndex()\n    local slot = self.items[itemid]\n    if not slot then\n      return nil, nil\n    end\n\n    local size = self:GetSize()\n    if slot > size then\n      return nil, nil \n    end\n    local rowStarts = PlayerTables:GetTableValue(self.ptID, \"rowStarts\")\n    for row,start in ipairs(rowStarts) do\n      if start > slot then\n        local prev = row-1\n        return prev, (slot - rowStarts[prev] + 1)\n      end\n    end\n\n    local row = #rowStarts\n\n    return row, (slot - rowStarts[row] + 1)\n  end\n\n  function c:GetAllItems()\n    local items = {}\n    for slot=1,self:GetSize() do\n      local item = self:GetItemInSlot(slot)\n      if item then\n        table.insert(items, item)\n      end\n    end\n\n    return items\n  end\n\n  function c:GetItemsByName(name)\n    local nameTable = self.itemNames[name]\n    local items = {}\n    if not nameTable then\n      return items\n    end\n\n    for id,slot in pairs(nameTable) do\n      local item = GetItem(id)\n      if item then\n        table.insert(items, item)\n      else\n        nameTable[id] = nil\n      end\n    end\n    return items\n  end\n\n  function c:GetItemInSlot(slot)\n    local item = PlayerTables:GetTableValue(self.ptID, \"slot\" .. slot)\n    if item then\n      item = EntIndexToHScript(item)\n      if item and not IsValidEntity(item) then\n        PlayerTables:DeleteTableKey(self.ptID, \"slot\" .. slot)\n        return nil\n      elseif item and IsValidEntity(item) and item.IsItem and item:IsItem() then\n        return item\n      end\n    end\n      \n    return nil\n  end\n\n  function c:GetItemInRowColumn(row, column)\n    local rowStarts = PlayerTables:GetTableValue(self.ptID, \"rowStarts\")\n    if not rowStarts[row] then\n      return nil\n    end\n\n    local nextRowStart = rowStarts[row+1] or self:GetSize() + 1\n    local slot = rowStarts[row] + column - 1\n\n    if slot >= nextRowStart then\n      return nil\n    end\n\n    return self:GetItemInSlot(slot)\n  end\n\n  function c:AddItem(item, slot, column, bypassFilter)\n    item = GetItem(item)\n    if slot and type(slot) == \"number\" and column and type(column) == \"number\" then\n      local rowStarts = PlayerTables:GetTableValue(self.ptID, \"rowStarts\")\n      if not rowStarts[slot] then\n        print(\"[containers.lua]  Request to add item in row \" .. slot .. \" -- row not found. \")\n        return false\n      end\n\n      local nextRowStart = rowStarts[slot+1] or self:GetSize() + 1\n      local newslot = rowStarts[slot] + column - 1\n\n      if newslot >= nextRowStart then\n        print(\"[containers.lua]  Request to add item in row \" .. slot .. \", column \" .. column .. \" -- column exceeds row length. \")\n        return false\n      end\n\n      slot = newslot\n    end\n\n    local findStack = slot == nil\n    slot = slot or 1\n\n    local size = self:GetSize()\n    if slot > size then\n      print(\"[containers.lua]  Request to add item in slot \" .. slot .. \" -- exceeding container size \" .. size)\n      return false\n    end\n\n    local func = c.AddItemFilter\n    if not bypassFilter and c.AddItemFilter then\n      local status, result = pcall(c.AddItemFilter, c, item, findstack and -1 or slot)\n      if not status then\n        print(\"[containers.lua] AddItemFilter callback error: \" .. result)\n        return false\n      end\n\n      if not result then\n        return false\n      end\n    end\n\n    local itemid = item:GetEntityIndex()\n    local itemname = item:GetAbilityName()\n\n    if findStack and item:IsStackable() then\n      local nameTable = self.itemNames[itemname]\n      if nameTable then\n        local lowestSlot = size+1\n        local lowestItem = nil\n        for itemid, nameslot in pairs(nameTable) do\n          if nameslot < lowestSlot then\n            local item = self:GetItemInSlot(nameslot)\n            if item then\n              lowestSlot = nameslot\n              lowestItem = item\n            else\n              nameTable[itemid] = nil\n            end\n          end\n        end\n\n        if lowestItem and lowestItem:IsStackable() then\n          lowestItem:SetCurrentCharges(lowestItem:GetCurrentCharges() + item:GetCurrentCharges())\n          item:RemoveSelf()\n          return true\n        end\n      end\n    end\n\n    -- check if the slot specified is stackable\n    if not findStack and item:IsStackable() then\n      local slotitem = self:GetItemInSlot(slot)\n\n      if slotitem and itemname == slotitem:GetAbilityName() and slotitem:IsStackable() then\n        slotitem:SetCurrentCharges(slotitem:GetCurrentCharges() + item:GetCurrentCharges())\n        item:RemoveSelf()\n        return true\n      end\n    end\n\n    for i=slot,size do\n      local slotitem = self:GetItemInSlot(i)\n      if not slotitem then\n\n        self.items[itemid] = i\n        self.itemNames[itemname] = self.itemNames[itemname] or {}\n        self.itemNames[itemname][itemid] = i\n\n        if self.forceOwner then \n          item:SetOwner(self.forceOwner) \n        elseif self.forceOwner == false then\n          item:SetOwner(nil)\n        end\n        if self.forcePurchaser then\n          item:SetPurchaser(self.forcePurchaser) \n        elseif self.forceOwner == false then\n          item:SetPurchaser(nil)\n        end\n\n        if self:IsEquipment() then\n          ApplyPassives(self, item)\n        end\n\n        PlayerTables:SetTableValue(self.ptID, \"slot\" .. i, itemid)\n        return true\n      end\n    end\n\n    return false\n  end\n\n  function c:RemoveItem(item)\n    item = GetItem(item)\n    local slot = self.items[item:GetEntityIndex()]\n    local nameTable = self.itemNames[item:GetAbilityName()]\n    local itemid = item:GetEntityIndex()\n\n    self.items[itemid] = nil\n    nameTable[itemid] = nil\n\n    if self:IsEquipment() then\n      local mods = self.appliedPassives[itemid]\n      if mods then\n        for _, mod in ipairs(mods) do\n          mod:Destroy()\n        end\n      end\n      self.appliedPassives[itemid] = nil\n    end\n\n    PlayerTables:DeleteTableKey(self.ptID, \"slot\" .. slot)\n  end\n\n  function c:ClearSlot(slot)\n    local item = self:GetItemInSlot(slot)\n    if IsValidEntity(item) then\n      self:RemoveItem(item)\n    else\n      PlayerTables:DeleteTableKey(self.ptID, \"slot\" .. slot)\n    end\n  end\n\n  function c:GetContainerIndex()\n    return self.id\n  end\n\n  function c:GetHeaderText()\n    local headerText = PlayerTables:GetTableValue(self.ptID, \"headerText\")\n    return headerText\n  end\n\n  function c:SetHeaderText(header)\n    PlayerTables:SetTableValue(self.ptID, \"headerText\", header)\n  end\n\n  function c:GetSize()\n    local size = PlayerTables:GetTableValue(self.ptID, \"size\")\n    return size\n  end\n\n  function c:GetNumItems()\n    return #c:GetAllItems()\n  end\n\n  function c:GetLayout()\n    local layout = PlayerTables:GetTableValue(self.ptID, \"layout\")\n    return layout\n  end\n\n  function c:SetLayout(layout, removeOnContract)\n    local size = 0\n    local rowStarts = {}\n\n    for i,row in ipairs(layout) do\n      table.insert(rowStarts, size+1)\n      size = size + row\n    end\n\n    local oldSize = self:GetSize()\n    local changes = {}\n\n    if removeOnContract and size < oldSize then\n      local deletions = {}\n      for i=size+1,oldSize do\n        local item = self:GetItemInSlot(i)\n        if item then\n          local itemid = item:GetEntityIndex()\n          local itemname = item:GetAbilityName()\n          local nameTable = self.itemNames[item:GetAbilityName()]\n\n          self.items[item:GetEntityIndex()] = nil\n          nameTable[item:GetEntityIndex()] = nil\n\n          if self:IsEquipment() then\n            local mods = self.appliedPassives[itemid]\n            if mods then\n              for _, mod in ipairs(mods) do\n                mod:Destroy()\n              end\n            end\n            self.appliedPassives[itemid] = nil\n          end\n\n          table.insert(deletions, \"slot\"..i)\n        end\n      end\n\n      PlayerTables:DeleteTableKeys(self.ptID, deletions)\n    end\n\n    changes.layout = layout\n    changes.size = size\n    changes.rowStarts = rowStarts\n\n    PlayerTables:SetTableValues(self.ptID, changes)\n  end\n\n  function c:GetRange()\n    return self.range\n  end\n\n  function c:SetRange(range)\n    self.range = range\n    --[[if range then\n      PlayerTables:SetTableValue(self.ptID, \"range\", range)\n    else\n      PlayerTables:DeleteTableKey(self.ptID, \"range\")\n    end]]\n  end\n\n  function c:AddSkin(skin)\n    local skins = PlayerTables:GetTableValue(self.ptID, \"skins\")\n    skins[skin] = true\n\n    PlayerTables:SetTableValue(self.ptID, \"skins\", skins)\n  end\n\n  function c:RemoveSkin(skin)\n    local skins = PlayerTables:GetTableValue(self.ptID, \"skins\")\n    skins[skin] = nil\n\n    PlayerTables:SetTableValue(self.ptID, \"skins\", skins)\n  end\n\n  function c:GetSkins()\n    local skins = PlayerTables:GetTableValue(self.ptID, \"skins\")\n    return skins\n  end\n\n  function c:HasSkin(skin)\n    local skins = PlayerTables:GetTableValue(self.ptID, \"skins\")\n    return skins[skin] ~= nil\n  end\n\n  function c:SetButton(number, name)\n    local buttons = PlayerTables:GetTableValue(self.ptID, \"buttons\")\n    buttons[number] = name\n\n    PlayerTables:SetTableValue(self.ptID, \"buttons\", buttons)\n  end\n\n  function c:RemoveButton(number)\n    local buttons = PlayerTables:GetTableValue(self.ptID, \"buttons\")\n    buttons[number] = nil\n\n    PlayerTables:SetTableValue(self.ptID, \"buttons\", buttons)\n  end\n\n  function c:GetButtons()\n    local buttons = PlayerTables:GetTableValue(self.ptID, \"buttons\")\n    return buttons\n  end\n\n  function c:GetButtonName(number)\n    local buttons = PlayerTables:GetTableValue(self.ptID, \"buttons\")\n    return buttons[number]\n  end\n\n  function c:GetEntity()\n    local entity = PlayerTables:GetTableValue(self.ptID, \"entity\")\n    if entity then \n      return EntIndexToHScript(entity) \n    end\n    return nil\n  end\n\n  function c:SetEntity(entity)\n    local old = c:GetEntity()\n    local num = entity\n    if entity and type(entity) == \"number\" then\n      entity = EntIndexToHScript(entity)\n    elseif entity and entity.GetEntityIndex then\n      num = entity:GetEntityIndex()\n    end\n\n    if entity then\n      PlayerTables:SetTableValue(self.ptID, \"entity\", num)\n      Containers.entityContainers[num] = Containers.entityContainers[num] or {}\n      Containers.entityContainers[num][self.id] = self\n    elseif old ~= nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"entity\")\n      Containers.entityContainers[old:GetEntityIndex()] = Containers.entityContainers[old:GetEntityIndex()] or {}\n      Containers.entityContainers[old:GetEntityIndex()][self.id] = nil\n    end\n\n    if self:IsEquipment() and old ~= entity then\n      for itemID, mods in pairs(self.appliedPassives) do\n        for _, mod in ipairs(mods) do\n          mod:Destroy()\n        end\n      end\n      self.appliedPassives = {}\n\n      local items = self:GetAllItems()\n      for _, item in ipairs(items) do\n        ApplyPassives(self, item)\n      end\n    end\n  end\n\n  function c:GetCanDragFromPlayers()\n    return self.canDragFrom\n  end\n\n  function c:CanDragFrom(pid)\n    return self.canDragFrom[pid] ~= false\n  end\n\n  function c:SetCanDragFrom(pid, canDrag)\n    self.canDragFrom[pid] = canDrag\n  end\n\n  function c:GetCanDragToPlayers()\n    return self.canDragTo\n  end\n\n  function c:CanDragTo(pid)\n    return self.canDragTo[pid] ~= false\n  end\n\n  function c:SetCanDragTo(pid, canDrag)\n    self.canDragTo[pid] = canDrag\n  end\n\n  function c:GetCanDragWithinPlayers()\n    return self.canDragWithin\n  end\n\n  function c:CanDragWithin(pid)\n    return self.canDragWithin[pid] ~= false\n  end\n\n  function c:SetCanDragWithin(pid, canDrag)\n    self.canDragWithin[pid] = canDrag\n  end\n\n  function c:IsDraggable()\n    return PlayerTables:GetTableValue(self.ptID, \"draggable\")\n  end\n\n  function c:SetDraggable(drag)\n    PlayerTables:SetTableValue(self.ptID, \"draggable\", drag)\n  end\n\n  function c:IsEquipment()\n    local eq = PlayerTables:GetTableValue(self.ptID, \"equipment\")\n    if eq then\n      return true\n    else\n      return false\n    end\n  end\n\n  function c:SetEquipment(equip)\n    local isEq = self:IsEquipment()\n    if equip and not isEq then\n      local items = self:GetAllItems()\n      for _, item in ipairs(items) do\n        ApplyPassives(self, item)\n      end\n\n      local c = self\n\n      self.cleanupTimer = Timers:CreateTimer(1, function()\n        for itemID, mods in pairs(c.appliedPassives) do\n          if not IsValidEntity(EntIndexToHScript(itemID)) or not c:ContainsItem(itemID) then\n            for _, mod in ipairs(mods) do\n              mod:Destroy()\n            end\n            c.appliedPassives[itemID] = nil\n          end\n        end\n        return 1\n      end)\n    elseif not equip and isEq then\n      local items = self:GetAllItems()\n      for itemID,mods in pairs(self.appliedPassives) do\n        for _, mod in ipairs(mods) do\n          mod:Destroy()\n        end\n      end\n      self.appliedPassives = {}\n\n      Timers:RemoveTimer(self.cleanupTimer)\n    end\n    PlayerTables:SetTableValue(self.ptID, \"equipment\", equip)\n  end\n\n  function c:GetForceOwner()\n    return self.forceOwner\n  end\n\n  function c:GetForcePurchaser()\n    return self.ForcePurchaser\n  end\n\n  function c:SetForceOwner(owner)\n    self.forceOwner = owner\n  end\n\n  function c:SetForcePurchaser(purchaser)\n    self.ForcePurchaser = purchaser\n  end\n\n  function c:IsCloseOnOrder()\n    return self.closeOnOrder\n  end\n\n  function c:SetCloseOnOrder(close)\n    if close then\n      for pid, _ in pairs(self.opens) do\n        Containers.closeOnOrders[pid][self.id] = self\n      end\n    else\n      for pid,v in pairs(Containers.closeOnOrders) do\n        v[self.id] = nil\n      end\n    end\n    self.closeOnOrder = close\n  end\n\n  function c:OnLeftClick(fun)\n    if fun == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnLeftClick\")\n    elseif type(fun) == \"function\" then\n      PlayerTables:SetTableValue(self.ptID, \"OnLeftClick\", true)\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnLeftClick\", fun)\n    end\n\n    self._OnLeftClick = fun\n  end\n\n  function c:OnRightClick(fun)\n    if fun == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnRightClick\")\n    elseif type(fun) == \"function\" then\n      PlayerTables:SetTableValue(self.ptID, \"OnRightClick\", true)\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnRightClick\", fun)\n    end\n\n    self._OnRightClick = fun\n  end\n\n  function c:OnDragTo(fun)\n    self._OnDragTo = fun\n  end\n\n  function c:OnDragWithin(fun)\n    self._OnDragWithin = fun\n  end\n\n  function c:OnDragFrom(fun)\n    if fun == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnDragFrom\")\n    elseif type(fun) == \"function\" then\n      PlayerTables:SetTableValue(self.ptID, \"OnDragFrom\", true)\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnDragFrom\", fun)\n    end\n\n    self._OnDragFrom = fun\n  end\n\n  function c:OnDragWorld(fun)\n    if fun == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnDragWorld\")\n    elseif type(fun) == \"function\" then\n      PlayerTables:SetTableValue(self.ptID, \"OnDragWorld\", true)\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnDragWorld\", fun)\n    end\n\n    self._OnDragWorld = fun\n  end\n\n  function c:OnCloseClicked(fun)\n    if fun == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnCloseClicked\")\n    elseif type(fun) == \"function\" then\n      PlayerTables:SetTableValue(self.ptID, \"OnCloseClicked\", true)\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnCloseClicked\", fun)\n    end\n\n    self._OnCloseClicked = fun\n  end\n\n  function c:OnButtonPressed(fun)\n    if fun == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnButtonPressed\")\n    elseif type(fun) == \"function\" then\n      PlayerTables:SetTableValue(self.ptID, \"OnButtonPressed\", true)\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnButtonPressed\", fun)\n    end\n\n    self._OnButtonPressed = fun\n  end\n\n  function c:OnEntityOrder(fun)\n    self._OnEntityOrder = fun\n  end\n\n  function c:OnEntityDrag(fun)\n    self._OnEntityDrag = fun\n  end\n\n  function c:OnClose(fun)\n    self._OnClose = fun\n  end\n\n  function c:OnOpen(fun)\n    self._OnOpen = fun\n  end\n\n  function c:OnSelect(fun)\n    self._OnSelect = fun\n  end\n\n  function c:OnDeselect(fun)\n    self._OnDeselect = fun\n  end\n\n  function c:OnLeftClickJS(jsCallback)\n    if jsCallback == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnLeftClickJS\")\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnLeftClickJS\", jsCallback)\n    end\n  end\n\n  function c:OnRightClickJS(jsCallback)\n    if jsCallback == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnRightClickJS\")\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnRightClickJS\", jsCallback)\n    end\n  end\n\n  function c:OnDoubleClickJS(jsCallback)\n    if jsCallback == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnDoubleClickJS\")\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnDoubleClickJS\", jsCallback)\n    end\n  end\n\n  function c:OnMouseOutJS(jsCallback)\n    if jsCallback == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnMouseOutJS\")\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnMouseOutJS\", jsCallback)\n    end\n  end\n\n  function c:OnMouseOverJS(jsCallback)\n    if jsCallback == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnMouseOverJS\")\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnMouseOverJS\", jsCallback)\n    end\n  end\n\n  function c:OnButtonPressedJS(jsCallback)\n    if jsCallback == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnButtonPressedJS\")\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnButtonPressedJS\", jsCallback)\n    end\n  end\n\n  function c:OnCloseClickedJS(jsCallback)\n    if jsCallback == nil then\n      PlayerTables:DeleteTableKey(self.ptID, \"OnCloseClickedJS\")\n    else\n      PlayerTables:SetTableValue(self.ptID, \"OnCloseClickedJS\", jsCallback)\n    end\n  end\n\n  function c:IsInventory()\n    return false\n  end\n\n\n  self.containers[self.nextID] = c\n  self.nextID = self.nextID + 1\n  return c\nend\n\nfunction Containers:DeleteContainer(c, deleteContents)\n  if deleteContents ~= false or c:IsEquipment() then\n    local items = c:GetAllItems()\n    for _, item in ipairs(items) do\n      if c:IsEquipment() then\n        local mods = c.appliedPassives[item:GetEntityIndex()]\n        Timers:RemoveTimer(c.cleanupTimer)\n        if mods then\n          for _, mod in ipairs(mods) do\n            mod:Destroy()\n          end\n        end\n      end\n      if deleteContents then\n        item:RemoveSelf()\n      end\n    end\n  end\n\n  PlayerTables:DeleteTable(c.ptID)\n  self.containers[c.id] = nil\n\n  CustomGameEventManager:Send_ServerToAllClients(\"cont_delete_container\", {id=c.id} )\n\n  for k,v in pairs(c) do\n    c[k] = nil\n  end\nend\n\nfunction Containers:print(...)\n  if CONTAINERS_DEBUG then \n    print(unpack({...})) \n  end\nend\n\nfunction Containers:PrintTable(t)\n  if CONTAINERS_DEBUG then \n    PrintTable(t) \n  end\nend\n\nfunction IsValidContainer(c)\n  if c and c.GetAllOpen then \n    return true \n  else \n    return false \n  end\nend\n\nif not Containers.containers then Containers:start() end"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/modifiers/modifier_animation.lua",
    "content": "modifier_animation = class({})\n\nlocal _CODE_TO_ANIMATION_TRANSLATE = {\n  [0]= \"loadout\",\n  [1]= \"split_shot\",\n  [2]= \"chemical_rage\",\n  [3]= \"agedspirit\",\n  [4]= \"aggressive\",\n  [5]= \"injured\",\n  [6]= \"ancient_armor\",\n  [7]= \"anvil\",\n  [8]= \"arcana\",\n  [9]= \"techies_arcana\",\n  [10]= \"fast\",\n  [11]= \"faster\",\n  [12]= \"fastest\",\n  [13]= \"abysm\",\n  [14]= \"dualwield\",\n  [15]= \"forcestaff_friendly\",\n  [16]= \"phantom_attack\",\n  [17]= \"snowangel\",\n  [18]= \"suicide_squad\",\n  [19]= \"taunt_fullbody\",\n  [20]= \"armaments_set\",\n  [21]= \"instagib\",\n  [22]= \"tidehunter_boat\",\n  [23]= \"shinobi_tail\",\n  [24]= \"tidebringer\",\n  [25]= \"masquerade\",\n  [26]= \"pyre\",\n  [27]= \"shinobi\",\n  [28]= \"immortal\",\n  [29]= \"cauldron\",\n  [30]= \"red_moon\",\n  [31]= \"when_nature_attacks\",\n  [32]= \"odachi\",\n  [33]= \"wraith_spin\",\n  [34]= \"eyeoffetizu\",\n  [35]= \"berserkers_blood\",\n  [36]= \"flying\",\n  [37]= \"frost_arrow\",\n  [38]= \"manta\",\n  [39]= \"come_get_it\",\n  [40]= \"good_day_sir\",\n  [41]= \"backstab\",\n  [42]= \"offhand_basher\",\n  [43]= \"batter_up\",\n  [44]= \"black\",\n  [45]= \"haste\",\n  [46]= \"with_item\",\n  [47]= \"bot\",\n  [48]= \"web\",\n  [49]= \"fountain\",\n  [50]= \"broodmother_spin\",\n  [51]= \"burrowed\",\n  [52]= \"sandking_rubyspire_burrowstrike\",\n  [53]= \"moth\",\n  [54]= \"frostivus\",\n  [55]= \"desolation\",\n  [56]= \"sm_head\",\n  [57]= \"chasm\",\n  [58]= \"greevil_black_hole\",\n  [59]= \"greevil_blade_fury\",\n  [60]= \"greevil_bloodlust\",\n  [61]= \"greevil_cold_snap\",\n  [62]= \"greevil_decrepify\",\n  [63]= \"greevil_diabolic_edict\",\n  [64]= \"greevil_echo_slam\",\n  [65]= \"greevil_fatal_bonds\",\n  [66]= \"greevil_ice_wall\",\n  [67]= \"ancestral_scepter\",\n  [68]= \"greevil_laguna_blade\",\n  [69]= \"greevil_leech_seed\",\n  [70]= \"greevil_magic_missile\",\n  [71]= \"greevil_maledict\",\n  [72]= \"greevil_miniboss_black_brain_sap\",\n  [73]= \"greevil_miniboss_black_nightmare\",\n  [74]= \"greevil_miniboss_blue_cold_feet\",\n  [75]= \"greevil_miniboss_blue_ice_vortex\",\n  [76]= \"greevil_miniboss_green_living_armor\",\n  [77]= \"greevil_miniboss_green_overgrowth\",\n  [78]= \"greevil_miniboss_orange_dragon_slave\",\n  [79]= \"greevil_miniboss_orange_lightstrike_array\",\n  [80]= \"greevil_miniboss_purple_plague_ward\",\n  [81]= \"greevil_miniboss_purple_venomous_gale\",\n  [82]= \"greevil_miniboss_red_earthshock\",\n  [83]= \"greevil_miniboss_red_overpower\",\n  [84]= \"greevil_miniboss_white_purification\",\n  [85]= \"greevil_miniboss_yellow_ion_shell\",\n  [86]= \"greevil_miniboss_yellow_surge\",\n  [87]= \"greevil_natures_attendants\",\n  [88]= \"greevil_phantom_strike\",\n  [89]= \"greevil_poison_nova\",\n  [90]= \"greevil_purification\",\n  [91]= \"greevil_shadow_strike\",\n  [92]= \"greevil_shadow_wave\",\n  [93]= \"stalker_exo\",\n  [94]= \"death_protest\",\n  [95]= \"nihility\",\n  [96]= \"deadwinter_soul\",\n  [97]= \"charge\",\n  [98]= \"charge_attack\",\n  [99]= \"iron_surge\",\n  [100]= \"impatient_maiden\",\n  [101]= \"glacier\",\n  [102]= \"snowball\",\n  [103]= \"corpse_dresstop\",\n  [104]= \"corpse_dress\",\n  [105]= \"corpse_scarf\",\n  [106]= \"unbroken\",\n  [107]= \"dc_sb_charge\",\n  [108]= \"dc_sb_charge_attack\",\n  [109]= \"dc_sb_charge_finish\",\n  [110]= \"dc_sb_ultimate\",\n  [111]= \"faces_hakama\",\n  [112]= \"faces_wraps\",\n  [113]= \"faces_mask\",\n  [114]= \"lodestar\",\n  [115]= \"reincarnate\",\n  [116]= \"demon_drain\",\n  [117]= \"divine_sorrow\",\n  [118]= \"divine_sorrow_loadout\",\n  [119]= \"divine_sorrow_loadout_spawn\",\n  [120]= \"divine_sorrow_sunstrike\",\n  [121]= \"duel_kill\",\n  [122]= \"forcestaff_enemy\",\n  [123]= \"fish_slap\",\n  [124]= \"focusfire\",\n  [125]= \"fear\",\n  [126]= \"ftp_dendi_back\",\n  [127]= \"triumphant_timelord\",\n  [128]= \"ground_pound\",\n  [129]= \"harlequin\",\n  [130]= \"injured_aggressive\",\n  [131]= \"f2p_doom\",\n  [132]= \"obsidian_helmet\",\n  [133]= \"item_style_2\",\n  [134]= \"blood_chaser\",\n  [135]= \"manias_mask\",\n  [136]= \"punch\",\n  [137]= \"thirst\",\n  [138]= \"impetus\",\n  [139]= \"taunt_killtaunt\",\n  [140]= \"level_1\",\n  [141]= \"level_2\",\n  [142]= \"level_3\",\n  [143]= \"dagger_twirl\",\n  [144]= \"ancestors_edge\",\n  [145]= \"ancestors_pauldron\",\n  [146]= \"ancestors_vambrace\",\n  [147]= \"bladebiter\",\n  [148]= \"burning_fiend\",\n  [149]= \"fiery_soul\",\n  [150]= \"frostiron_raider\",\n  [151]= \"obeisance_of_the_keeper\",\n  [152]= \"salvaged_sword\",\n  [153]= \"serene_honor\",\n  [154]= \"shinobi_mask\",\n  [155]= \"swordonshoulder\",\n  [156]= \"whalehook\",\n  [157]= \"winterblight\",\n  [158]= \"lucentyr\",\n  [159]= \"lyreleis_breeze\",\n  [160]= \"mace\",\n  [161]= \"tinker_rollermaw\",\n  [162]= \"meld\",\n  [163]= \"agrressive\",\n  [164]= \"miniboss\",\n  [165]= \"moonfall\",\n  [166]= \"moon_griffon\",\n  [167]= \"overpower1\",\n  [168]= \"overpower2\",\n  [169]= \"overpower3\",\n  [170]= \"overpower4\",\n  [171]= \"overpower5\",\n  [172]= \"overpower6\",\n  [173]= \"loda\",\n  [174]= \"dark_wraith\",\n  [175]= \"pinfold\",\n  [176]= \"digger\",\n  [177]= \"portrait_fogheart\",\n  [178]= \"silent_ripper\",\n  [179]= \"shake_moneymaker\",\n  [180]= \"belly_flop\",\n  [181]= \"roshan\",\n  [182]= \"am_blink\",\n  [183]= \"mana_void\",\n  [184]= \"culling_blade\",\n  [185]= \"brain_sap\",\n  [186]= \"fiends_grip\",\n  [187]= \"roar\",\n  [188]= \"axes\",\n  [189]= \"stolen_firefly\",\n  [190]= \"firefly\",\n  [191]= \"freezing_field\",\n  [192]= \"frostbite\",\n  [193]= \"crystal_nova\",\n  [194]= \"black_hole\",\n  [195]= \"fissure\",\n  [196]= \"slam\",\n  [197]= \"totem\",\n  [198]= \"omnislash\",\n  [199]= \"spin\",\n  [200]= \"finger\",\n  [201]= \"impale\",\n  [202]= \"laguna\",\n  [203]= \"lsa\",\n  [204]= \"mana_drain\",\n  [205]= \"wave\",\n  [206]= \"leap\",\n  [207]= \"requiem\",\n  [208]= \"shadowraze\",\n  [209]= \"sprout\",\n  [210]= \"summon\",\n  [211]= \"teleport\",\n  [212]= \"wrath\",\n  [213]= \"darkness\",\n  [214]= \"void\",\n  [215]= \"guardian_angel\",\n  [216]= \"purification\",\n  [217]= \"repel\",\n  [218]= \"dismember\",\n  [219]= \"life_drain\",\n  [220]= \"hook\",\n  [221]= \"qop_blink\",\n  [222]= \"scream\",\n  [223]= \"shadow_strike\",\n  [224]= \"sonic_wave\",\n  [225]= \"ravage\",\n  [226]= \"snipe\",\n  [227]= \"stolen_charge\",\n  [228]= \"strike\",\n  [229]= \"burrow\",\n  [230]= \"shrapnel\",\n  [231]= \"ball_lightning\",\n  [232]= \"remnant\",\n  [233]= \"bolt\",\n  [234]= \"vortex\",\n  [235]= \"earthshock\",\n  [236]= \"gale\",\n  [237]= \"plague_ward\",\n  [238]= \"poison_nova\",\n  [239]= \"viper_strike\",\n  [240]= \"wall\",\n  [241]= \"ward\",\n  [242]= \"powershot\",\n  [243]= \"end\",\n  [244]= \"windrun\",\n  [245]= \"windy\",\n  [246]= \"chase\",\n  [247]= \"injured rare\",\n  [248]= \"pegleg\",\n  [249]= \"start\",\n  [250]= \"sb_helmet\",\n  [251]= \"sb_bracers\",\n  [252]= \"sb_shoulder\",\n  [253]= \"sb_spear\",\n  [254]= \"dominator\",\n  [255]= \"iron\",\n  [256]= \"sven_shield\",\n  [257]= \"sven_warcry\",\n  [258]= \"chicken_gesture\",\n  [259]= \"emp\",\n  [260]= \"slasher_weapon\",\n  [261]= \"slasher_offhand\",\n  [262]= \"slasher_chest\",\n  [263]= \"slasher_mask\",\n  [264]= \"sm_armor\",\n  [265]= \"sm_shoulder\",\n  [266]= \"wolfhound\",\n  [267]= \"great_safari\",\n  [268]= \"taunt_quickdraw_gesture\",\n  [269]= \"sparrowhawk_bow\",\n  [270]= \"sparrowhawk_cape\",\n  [271]= \"sparrowhawk_quiver\",\n  [272]= \"sparrowhawk_hood\",\n  [273]= \"sparrowhawk_shoulder\",\n  [274]= \"twister\",\n  [275]= \"sprint\",\n  [276]= \"sugarrush\",\n  [277]= \"trickortreat\",\n  [278]= \"transition\",\n  [279]= \"torment\",\n  [280]= \"stinger\",\n  [281]= \"whats_that\",\n  [282]= \"witchdoctor_jig\",\n  [283]= \"backstroke_gesture\",\n  [284]= \"bazooka\",\n  [285]= \"cat_dancer_gesture\",\n  [286]= \"face_me\",\n  [287]= \"swag_gesture\",\n  [288]= \"get_burned\",\n  [289]= \"giddy_up_gesture\",\n  [290]= \"guitar\",\n  [291]= \"hang_loose_gesture\",\n  [292]= \"horn\",\n  [293]= \"happy_dance\",\n  [294]= \"jump_gesture\",\n  [295]= \"loser\",\n  [296]= \"lute\",\n  [297]= \"magic_ends_here\",\n  [298]= \"mag_power_gesture\",\n  [299]= \"mask_lord\",\n  [300]= \"poundnpoint\",\n  [301]= \"robot_gesture\",\n  [302]= \"taunt_roll_gesture\",\n  [303]= \"sharp_blade\",\n  [304]= \"staff_swing\",\n  [305]= \"groove_gesture\",\n  [306]= \"telebolt\",\n  [307]= \"admirals_prow\",\n  [308]= \"turbulent_teleport\",\n  [309]= \"timelord_head\",\n  [310]= \"tree\",\n  [311]= \"dryad_tree\",\n  [312]= \"tidehunter_toss_fish\",\n  [313]= \"enchant_totem\",\n  [314]= \"trapper\",\n  [315]= \"twinblade_attack\",\n  [316]= \"twinblade_attack_b\",\n  [317]= \"twinblade_attack_c\",\n  [318]= \"twinblade_attack_d\",\n  [319]= \"twinblade_attack_injured\",\n  [320]= \"twinblade_death\",\n  [321]= \"twinblade_idle\",\n  [322]= \"twinblade_idle_injured\",\n  [323]= \"twinblade_idle_rare\",\n  [324]= \"twinblade_injured_attack_b\",\n  [325]= \"twinblade_jinada\",\n  [326]= \"twinblade_jinada_injured\",\n  [327]= \"twinblade_shuriken_toss\",\n  [328]= \"twinblade_shuriken_toss_injured\",\n  [329]= \"twinblade_spawn\",\n  [330]= \"twinblade_stun\",\n  [331]= \"twinblade_track\",\n  [332]= \"twinblade_track_injured\",\n  [333]= \"twinblade_victory\",\n  [334]= \"melee\",\n  [335]= \"backward\",\n  [336]= \"forward\",\n  [337]= \"vendetta\",\n  [338]= \"viridi_set\",\n  [339]= \"fishstick\",\n  [340]= \"dogofduty\",\n  [341]= \"cryAnimationExportNode\",\n  [342]= \"dog_of_duty\",\n  [343]= \"dizzying_punch\",\n  [344]= \"wardstaff\",\n  [345]= \"glory\",\n  [346]= \"white\",\n  [347]= \"tidehunter_yippy\",\n  [348]= \"rampant\",\n  [349]= \"overload\",\n  [350]=\"surge\",\n  [351]=\"es_prosperity\",\n  [352]=\"Espada_pistola\",\n  [353]=\"overload_injured\",\n  [354]=\"ss_fortune\",\n  [355]=\"liquid_fire\",\n  [356]=\"jakiro_icemelt\",\n  [357]=\"jakiro_roar\",\n  [358]=\"chakram\",\n  [359]=\"doppelwalk\",\n  [360]=\"enrage\",\n  [361]=\"fast_run\",\n  [362]=\"overpower\",\n  [363]=\"overwhelmingodds\",\n  [364]=\"pregame\",\n  [365]=\"shadow_dance\",\n  [366]=\"shukuchi\",\n  [367]=\"strength\",\n  [368]=\"twinblade_run\",\n  [369]=\"twinblade_run_injured\",\n  [370]=\"windwalk\",\n}\n\nfunction modifier_animation:OnCreated(keys) \n  self.keys = keys\n  if not IsServer() then\n    local stack = keys.stack_count\n    local activity = bit.band(stack, 0x07FF)\n    local rate = bit.rshift(bit.band(stack, 0x7F800), 11)\n    local rest = bit.rshift(bit.band(stack, 0xFFF80000), 19)\n    self.activity = activity\n    self.rate = rate / 20 \n    self.rest = rest\n    --print(self.activity)\n    --print(self.rate)\n    --print(self.rest)\n\n    self.translate = _CODE_TO_ANIMATION_TRANSLATE[self.rest]\n  else\n    self.translate = keys.translate\n  end\nend\n\nfunction modifier_animation:GetAttributes()\n  return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE --+ MODIFIER_ATTRIBUTE_MULTIPLE\nend\n\nfunction modifier_animation:IsHidden()\n  return true\nend\n\nfunction modifier_animation:IsDebuff() \n  return false\nend\n\nfunction modifier_animation:IsPurgable() \n  return false\nend\n\nfunction modifier_animation:DeclareFunctions() \n  local funcs = {\n    MODIFIER_PROPERTY_OVERRIDE_ANIMATION,\n    MODIFIER_PROPERTY_OVERRIDE_ANIMATION_RATE,\n    MODIFIER_PROPERTY_OVERRIDE_ANIMATION_WEIGHT,\n    MODIFIER_PROPERTY_TRANSLATE_ACTIVITY_MODIFIERS,\n  }\n \n  return funcs\nend\n\nfunction modifier_animation:GetOverrideAnimation(...)\n  return self.activity\nend\n\nfunction modifier_animation:GetOverrideAnimationRate(...)\n  return self.rate\nend\n\nfunction modifier_animation:GetOverrideAnimationWeight(...)\n  return 1\nend\n\nfunction modifier_animation:GetActivityTranslationModifiers(...)\n  --print('MA: ', self.translate, IsServer())\n  return self.translate or 0\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/modifiers/modifier_animation_freeze.lua",
    "content": "modifier_animation_freeze = class({})\n\nfunction modifier_animation_freeze:OnCreated(keys) \n\nend\n\nfunction modifier_animation_freeze:GetAttributes()\n  return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE --+ MODIFIER_ATTRIBUTE_MULTIPLE\nend\n\nfunction modifier_animation_freeze:IsHidden()\n  return true\nend\n\nfunction modifier_animation_freeze:IsDebuff() \n  return false\nend\n\nfunction modifier_animation_freeze:IsPurgable() \n  return false\nend\n\nfunction modifier_animation_freeze:CheckState() \n  local state = {\n    [MODIFIER_STATE_FROZEN] = true,\n  }\n\n  return state\nend\n\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/modifiers/modifier_animation_translate.lua",
    "content": "modifier_animation_translate = class({})\n\nlocal _CODE_TO_ANIMATION_TRANSLATE = {\n  [0]= \"loadout\",\n  [1]= \"split_shot\",\n  [2]= \"chemical_rage\",\n  [3]= \"agedspirit\",\n  [4]= \"aggressive\",\n  [5]= \"injured\",\n  [6]= \"ancient_armor\",\n  [7]= \"anvil\",\n  [8]= \"arcana\",\n  [9]= \"techies_arcana\",\n  [10]= \"fast\",\n  [11]= \"faster\",\n  [12]= \"fastest\",\n  [13]= \"abysm\",\n  [14]= \"dualwield\",\n  [15]= \"forcestaff_friendly\",\n  [16]= \"phantom_attack\",\n  [17]= \"snowangel\",\n  [18]= \"suicide_squad\",\n  [19]= \"taunt_fullbody\",\n  [20]= \"armaments_set\",\n  [21]= \"instagib\",\n  [22]= \"tidehunter_boat\",\n  [23]= \"shinobi_tail\",\n  [24]= \"tidebringer\",\n  [25]= \"masquerade\",\n  [26]= \"pyre\",\n  [27]= \"shinobi\",\n  [28]= \"immortal\",\n  [29]= \"cauldron\",\n  [30]= \"red_moon\",\n  [31]= \"when_nature_attacks\",\n  [32]= \"odachi\",\n  [33]= \"wraith_spin\",\n  [34]= \"eyeoffetizu\",\n  [35]= \"berserkers_blood\",\n  [36]= \"flying\",\n  [37]= \"frost_arrow\",\n  [38]= \"manta\",\n  [39]= \"come_get_it\",\n  [40]= \"good_day_sir\",\n  [41]= \"backstab\",\n  [42]= \"offhand_basher\",\n  [43]= \"batter_up\",\n  [44]= \"black\",\n  [45]= \"haste\",\n  [46]= \"with_item\",\n  [47]= \"bot\",\n  [48]= \"web\",\n  [49]= \"fountain\",\n  [50]= \"broodmother_spin\",\n  [51]= \"burrowed\",\n  [52]= \"sandking_rubyspire_burrowstrike\",\n  [53]= \"moth\",\n  [54]= \"frostivus\",\n  [55]= \"desolation\",\n  [56]= \"sm_head\",\n  [57]= \"chasm\",\n  [58]= \"greevil_black_hole\",\n  [59]= \"greevil_blade_fury\",\n  [60]= \"greevil_bloodlust\",\n  [61]= \"greevil_cold_snap\",\n  [62]= \"greevil_decrepify\",\n  [63]= \"greevil_diabolic_edict\",\n  [64]= \"greevil_echo_slam\",\n  [65]= \"greevil_fatal_bonds\",\n  [66]= \"greevil_ice_wall\",\n  [67]= \"ancestral_scepter\",\n  [68]= \"greevil_laguna_blade\",\n  [69]= \"greevil_leech_seed\",\n  [70]= \"greevil_magic_missile\",\n  [71]= \"greevil_maledict\",\n  [72]= \"greevil_miniboss_black_brain_sap\",\n  [73]= \"greevil_miniboss_black_nightmare\",\n  [74]= \"greevil_miniboss_blue_cold_feet\",\n  [75]= \"greevil_miniboss_blue_ice_vortex\",\n  [76]= \"greevil_miniboss_green_living_armor\",\n  [77]= \"greevil_miniboss_green_overgrowth\",\n  [78]= \"greevil_miniboss_orange_dragon_slave\",\n  [79]= \"greevil_miniboss_orange_lightstrike_array\",\n  [80]= \"greevil_miniboss_purple_plague_ward\",\n  [81]= \"greevil_miniboss_purple_venomous_gale\",\n  [82]= \"greevil_miniboss_red_earthshock\",\n  [83]= \"greevil_miniboss_red_overpower\",\n  [84]= \"greevil_miniboss_white_purification\",\n  [85]= \"greevil_miniboss_yellow_ion_shell\",\n  [86]= \"greevil_miniboss_yellow_surge\",\n  [87]= \"greevil_natures_attendants\",\n  [88]= \"greevil_phantom_strike\",\n  [89]= \"greevil_poison_nova\",\n  [90]= \"greevil_purification\",\n  [91]= \"greevil_shadow_strike\",\n  [92]= \"greevil_shadow_wave\",\n  [93]= \"stalker_exo\",\n  [94]= \"death_protest\",\n  [95]= \"nihility\",\n  [96]= \"deadwinter_soul\",\n  [97]= \"charge\",\n  [98]= \"charge_attack\",\n  [99]= \"iron_surge\",\n  [100]= \"impatient_maiden\",\n  [101]= \"glacier\",\n  [102]= \"snowball\",\n  [103]= \"corpse_dresstop\",\n  [104]= \"corpse_dress\",\n  [105]= \"corpse_scarf\",\n  [106]= \"unbroken\",\n  [107]= \"dc_sb_charge\",\n  [108]= \"dc_sb_charge_attack\",\n  [109]= \"dc_sb_charge_finish\",\n  [110]= \"dc_sb_ultimate\",\n  [111]= \"faces_hakama\",\n  [112]= \"faces_wraps\",\n  [113]= \"faces_mask\",\n  [114]= \"lodestar\",\n  [115]= \"reincarnate\",\n  [116]= \"demon_drain\",\n  [117]= \"divine_sorrow\",\n  [118]= \"divine_sorrow_loadout\",\n  [119]= \"divine_sorrow_loadout_spawn\",\n  [120]= \"divine_sorrow_sunstrike\",\n  [121]= \"duel_kill\",\n  [122]= \"forcestaff_enemy\",\n  [123]= \"fish_slap\",\n  [124]= \"focusfire\",\n  [125]= \"fear\",\n  [126]= \"ftp_dendi_back\",\n  [127]= \"triumphant_timelord\",\n  [128]= \"ground_pound\",\n  [129]= \"harlequin\",\n  [130]= \"injured_aggressive\",\n  [131]= \"f2p_doom\",\n  [132]= \"obsidian_helmet\",\n  [133]= \"item_style_2\",\n  [134]= \"blood_chaser\",\n  [135]= \"manias_mask\",\n  [136]= \"punch\",\n  [137]= \"thirst\",\n  [138]= \"impetus\",\n  [139]= \"taunt_killtaunt\",\n  [140]= \"level_1\",\n  [141]= \"level_2\",\n  [142]= \"level_3\",\n  [143]= \"dagger_twirl\",\n  [144]= \"ancestors_edge\",\n  [145]= \"ancestors_pauldron\",\n  [146]= \"ancestors_vambrace\",\n  [147]= \"bladebiter\",\n  [148]= \"burning_fiend\",\n  [149]= \"fiery_soul\",\n  [150]= \"frostiron_raider\",\n  [151]= \"obeisance_of_the_keeper\",\n  [152]= \"salvaged_sword\",\n  [153]= \"serene_honor\",\n  [154]= \"shinobi_mask\",\n  [155]= \"swordonshoulder\",\n  [156]= \"whalehook\",\n  [157]= \"winterblight\",\n  [158]= \"lucentyr\",\n  [159]= \"lyreleis_breeze\",\n  [160]= \"mace\",\n  [161]= \"tinker_rollermaw\",\n  [162]= \"meld\",\n  [163]= \"agrressive\",\n  [164]= \"miniboss\",\n  [165]= \"moonfall\",\n  [166]= \"moon_griffon\",\n  [167]= \"overpower1\",\n  [168]= \"overpower2\",\n  [169]= \"overpower3\",\n  [170]= \"overpower4\",\n  [171]= \"overpower5\",\n  [172]= \"overpower6\",\n  [173]= \"loda\",\n  [174]= \"dark_wraith\",\n  [175]= \"pinfold\",\n  [176]= \"digger\",\n  [177]= \"portrait_fogheart\",\n  [178]= \"silent_ripper\",\n  [179]= \"shake_moneymaker\",\n  [180]= \"belly_flop\",\n  [181]= \"roshan\",\n  [182]= \"am_blink\",\n  [183]= \"mana_void\",\n  [184]= \"culling_blade\",\n  [185]= \"brain_sap\",\n  [186]= \"fiends_grip\",\n  [187]= \"roar\",\n  [188]= \"axes\",\n  [189]= \"stolen_firefly\",\n  [190]= \"firefly\",\n  [191]= \"freezing_field\",\n  [192]= \"frostbite\",\n  [193]= \"crystal_nova\",\n  [194]= \"black_hole\",\n  [195]= \"fissure\",\n  [196]= \"slam\",\n  [197]= \"totem\",\n  [198]= \"omnislash\",\n  [199]= \"spin\",\n  [200]= \"finger\",\n  [201]= \"impale\",\n  [202]= \"laguna\",\n  [203]= \"lsa\",\n  [204]= \"mana_drain\",\n  [205]= \"wave\",\n  [206]= \"leap\",\n  [207]= \"requiem\",\n  [208]= \"shadowraze\",\n  [209]= \"sprout\",\n  [210]= \"summon\",\n  [211]= \"teleport\",\n  [212]= \"wrath\",\n  [213]= \"darkness\",\n  [214]= \"void\",\n  [215]= \"guardian_angel\",\n  [216]= \"purification\",\n  [217]= \"repel\",\n  [218]= \"dismember\",\n  [219]= \"life_drain\",\n  [220]= \"hook\",\n  [221]= \"qop_blink\",\n  [222]= \"scream\",\n  [223]= \"shadow_strike\",\n  [224]= \"sonic_wave\",\n  [225]= \"ravage\",\n  [226]= \"snipe\",\n  [227]= \"stolen_charge\",\n  [228]= \"strike\",\n  [229]= \"burrow\",\n  [230]= \"shrapnel\",\n  [231]= \"ball_lightning\",\n  [232]= \"remnant\",\n  [233]= \"bolt\",\n  [234]= \"vortex\",\n  [235]= \"earthshock\",\n  [236]= \"gale\",\n  [237]= \"plague_ward\",\n  [238]= \"poison_nova\",\n  [239]= \"viper_strike\",\n  [240]= \"wall\",\n  [241]= \"ward\",\n  [242]= \"powershot\",\n  [243]= \"end\",\n  [244]= \"windrun\",\n  [245]= \"windy\",\n  [246]= \"chase\",\n  [247]= \"injured rare\",\n  [248]= \"pegleg\",\n  [249]= \"start\",\n  [250]= \"sb_helmet\",\n  [251]= \"sb_bracers\",\n  [252]= \"sb_shoulder\",\n  [253]= \"sb_spear\",\n  [254]= \"dominator\",\n  [255]= \"iron\",\n  [256]= \"sven_shield\",\n  [257]= \"sven_warcry\",\n  [258]= \"chicken_gesture\",\n  [259]= \"emp\",\n  [260]= \"slasher_weapon\",\n  [261]= \"slasher_offhand\",\n  [262]= \"slasher_chest\",\n  [263]= \"slasher_mask\",\n  [264]= \"sm_armor\",\n  [265]= \"sm_shoulder\",\n  [266]= \"wolfhound\",\n  [267]= \"great_safari\",\n  [268]= \"taunt_quickdraw_gesture\",\n  [269]= \"sparrowhawk_bow\",\n  [270]= \"sparrowhawk_cape\",\n  [271]= \"sparrowhawk_quiver\",\n  [272]= \"sparrowhawk_hood\",\n  [273]= \"sparrowhawk_shoulder\",\n  [274]= \"twister\",\n  [275]= \"sprint\",\n  [276]= \"sugarrush\",\n  [277]= \"trickortreat\",\n  [278]= \"transition\",\n  [279]= \"torment\",\n  [280]= \"stinger\",\n  [281]= \"whats_that\",\n  [282]= \"witchdoctor_jig\",\n  [283]= \"backstroke_gesture\",\n  [284]= \"bazooka\",\n  [285]= \"cat_dancer_gesture\",\n  [286]= \"face_me\",\n  [287]= \"swag_gesture\",\n  [288]= \"get_burned\",\n  [289]= \"giddy_up_gesture\",\n  [290]= \"guitar\",\n  [291]= \"hang_loose_gesture\",\n  [292]= \"horn\",\n  [293]= \"happy_dance\",\n  [294]= \"jump_gesture\",\n  [295]= \"loser\",\n  [296]= \"lute\",\n  [297]= \"magic_ends_here\",\n  [298]= \"mag_power_gesture\",\n  [299]= \"mask_lord\",\n  [300]= \"poundnpoint\",\n  [301]= \"robot_gesture\",\n  [302]= \"taunt_roll_gesture\",\n  [303]= \"sharp_blade\",\n  [304]= \"staff_swing\",\n  [305]= \"groove_gesture\",\n  [306]= \"telebolt\",\n  [307]= \"admirals_prow\",\n  [308]= \"turbulent_teleport\",\n  [309]= \"timelord_head\",\n  [310]= \"tree\",\n  [311]= \"dryad_tree\",\n  [312]= \"tidehunter_toss_fish\",\n  [313]= \"enchant_totem\",\n  [314]= \"trapper\",\n  [315]= \"twinblade_attack\",\n  [316]= \"twinblade_attack_b\",\n  [317]= \"twinblade_attack_c\",\n  [318]= \"twinblade_attack_d\",\n  [319]= \"twinblade_attack_injured\",\n  [320]= \"twinblade_death\",\n  [321]= \"twinblade_idle\",\n  [322]= \"twinblade_idle_injured\",\n  [323]= \"twinblade_idle_rare\",\n  [324]= \"twinblade_injured_attack_b\",\n  [325]= \"twinblade_jinada\",\n  [326]= \"twinblade_jinada_injured\",\n  [327]= \"twinblade_shuriken_toss\",\n  [328]= \"twinblade_shuriken_toss_injured\",\n  [329]= \"twinblade_spawn\",\n  [330]= \"twinblade_stun\",\n  [331]= \"twinblade_track\",\n  [332]= \"twinblade_track_injured\",\n  [333]= \"twinblade_victory\",\n  [334]= \"melee\",\n  [335]= \"backward\",\n  [336]= \"forward\",\n  [337]= \"vendetta\",\n  [338]= \"viridi_set\",\n  [339]= \"fishstick\",\n  [340]= \"dogofduty\",\n  [341]= \"cryAnimationExportNode\",\n  [342]= \"dog_of_duty\",\n  [343]= \"dizzying_punch\",\n  [344]= \"wardstaff\",\n  [345]= \"glory\",\n  [346]= \"white\",\n  [347]= \"tidehunter_yippy\",\n  [348]= \"rampant\",\n  [349]= \"overload\",\n  [350]=\"surge\",\n  [351]=\"es_prosperity\",\n  [352]=\"Espada_pistola\",\n  [353]=\"overload_injured\",\n  [354]=\"ss_fortune\",\n  [355]=\"liquid_fire\",\n  [356]=\"jakiro_icemelt\",\n  [357]=\"jakiro_roar\",\n  [358]=\"chakram\",\n  [359]=\"doppelwalk\",\n  [360]=\"enrage\",\n  [361]=\"fast_run\",\n  [362]=\"overpower\",\n  [363]=\"overwhelmingodds\",\n  [364]=\"pregame\",\n  [365]=\"shadow_dance\",\n  [366]=\"shukuchi\",\n  [367]=\"strength\",\n  [368]=\"twinblade_run\",\n  [369]=\"twinblade_run_injured\",\n  [370]=\"windwalk\",\n}\n\nfunction modifier_animation_translate:OnCreated(keys) \n  if not IsServer() then\n    self.translate = _CODE_TO_ANIMATION_TRANSLATE[keys.stack_count]\n  else\n    self.translate = keys.translate\n  end\nend\n\nfunction modifier_animation_translate:GetAttributes()\n  return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE --+ MODIFIER_ATTRIBUTE_MULTIPLE\nend\n\nfunction modifier_animation_translate:IsHidden()\n  return true\nend\n\nfunction modifier_animation_translate:IsDebuff() \n  return false\nend\n\nfunction modifier_animation_translate:IsPurgable() \n  return false\nend\n\nfunction modifier_animation_translate:DeclareFunctions() \n  local funcs = {\n    MODIFIER_PROPERTY_TRANSLATE_ACTIVITY_MODIFIERS,\n  }\n \n  return funcs\nend\n\nfunction modifier_animation_translate:GetActivityTranslationModifiers(...)\n  --print('TRANSLATE MODIFIER', IsServer())\n  --print(self.translate)\n  return self.translate or 0\nend\n\n--[[function modifier_animation_translate:CheckState() \n  local state = {\n    [MODIFIER_STATE_UNSELECTABLE] = true,\n    [MODIFIER_STATE_INVULNERABLE] = true,\n    [MODIFIER_STATE_NOT_ON_MINIMAP] = true,\n    [MODIFIER_STATE_NO_HEALTH_BAR] = true,\n  }\n\n  return state\nend]]\n\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/modifiers/modifier_animation_translate_permanent.lua",
    "content": "modifier_animation_translate_permanent = class({})\n\nlocal _CODE_TO_ANIMATION_TRANSLATE = {\n  [0]= \"loadout\",\n  [1]= \"split_shot\",\n  [2]= \"chemical_rage\",\n  [3]= \"agedspirit\",\n  [4]= \"aggressive\",\n  [5]= \"injured\",\n  [6]= \"ancient_armor\",\n  [7]= \"anvil\",\n  [8]= \"arcana\",\n  [9]= \"techies_arcana\",\n  [10]= \"fast\",\n  [11]= \"faster\",\n  [12]= \"fastest\",\n  [13]= \"abysm\",\n  [14]= \"dualwield\",\n  [15]= \"forcestaff_friendly\",\n  [16]= \"phantom_attack\",\n  [17]= \"snowangel\",\n  [18]= \"suicide_squad\",\n  [19]= \"taunt_fullbody\",\n  [20]= \"armaments_set\",\n  [21]= \"instagib\",\n  [22]= \"tidehunter_boat\",\n  [23]= \"shinobi_tail\",\n  [24]= \"tidebringer\",\n  [25]= \"masquerade\",\n  [26]= \"pyre\",\n  [27]= \"shinobi\",\n  [28]= \"immortal\",\n  [29]= \"cauldron\",\n  [30]= \"red_moon\",\n  [31]= \"when_nature_attacks\",\n  [32]= \"odachi\",\n  [33]= \"wraith_spin\",\n  [34]= \"eyeoffetizu\",\n  [35]= \"berserkers_blood\",\n  [36]= \"flying\",\n  [37]= \"frost_arrow\",\n  [38]= \"manta\",\n  [39]= \"come_get_it\",\n  [40]= \"good_day_sir\",\n  [41]= \"backstab\",\n  [42]= \"offhand_basher\",\n  [43]= \"batter_up\",\n  [44]= \"black\",\n  [45]= \"haste\",\n  [46]= \"with_item\",\n  [47]= \"bot\",\n  [48]= \"web\",\n  [49]= \"fountain\",\n  [50]= \"broodmother_spin\",\n  [51]= \"burrowed\",\n  [52]= \"sandking_rubyspire_burrowstrike\",\n  [53]= \"moth\",\n  [54]= \"frostivus\",\n  [55]= \"desolation\",\n  [56]= \"sm_head\",\n  [57]= \"chasm\",\n  [58]= \"greevil_black_hole\",\n  [59]= \"greevil_blade_fury\",\n  [60]= \"greevil_bloodlust\",\n  [61]= \"greevil_cold_snap\",\n  [62]= \"greevil_decrepify\",\n  [63]= \"greevil_diabolic_edict\",\n  [64]= \"greevil_echo_slam\",\n  [65]= \"greevil_fatal_bonds\",\n  [66]= \"greevil_ice_wall\",\n  [67]= \"ancestral_scepter\",\n  [68]= \"greevil_laguna_blade\",\n  [69]= \"greevil_leech_seed\",\n  [70]= \"greevil_magic_missile\",\n  [71]= \"greevil_maledict\",\n  [72]= \"greevil_miniboss_black_brain_sap\",\n  [73]= \"greevil_miniboss_black_nightmare\",\n  [74]= \"greevil_miniboss_blue_cold_feet\",\n  [75]= \"greevil_miniboss_blue_ice_vortex\",\n  [76]= \"greevil_miniboss_green_living_armor\",\n  [77]= \"greevil_miniboss_green_overgrowth\",\n  [78]= \"greevil_miniboss_orange_dragon_slave\",\n  [79]= \"greevil_miniboss_orange_lightstrike_array\",\n  [80]= \"greevil_miniboss_purple_plague_ward\",\n  [81]= \"greevil_miniboss_purple_venomous_gale\",\n  [82]= \"greevil_miniboss_red_earthshock\",\n  [83]= \"greevil_miniboss_red_overpower\",\n  [84]= \"greevil_miniboss_white_purification\",\n  [85]= \"greevil_miniboss_yellow_ion_shell\",\n  [86]= \"greevil_miniboss_yellow_surge\",\n  [87]= \"greevil_natures_attendants\",\n  [88]= \"greevil_phantom_strike\",\n  [89]= \"greevil_poison_nova\",\n  [90]= \"greevil_purification\",\n  [91]= \"greevil_shadow_strike\",\n  [92]= \"greevil_shadow_wave\",\n  [93]= \"stalker_exo\",\n  [94]= \"death_protest\",\n  [95]= \"nihility\",\n  [96]= \"deadwinter_soul\",\n  [97]= \"charge\",\n  [98]= \"charge_attack\",\n  [99]= \"iron_surge\",\n  [100]= \"impatient_maiden\",\n  [101]= \"glacier\",\n  [102]= \"snowball\",\n  [103]= \"corpse_dresstop\",\n  [104]= \"corpse_dress\",\n  [105]= \"corpse_scarf\",\n  [106]= \"unbroken\",\n  [107]= \"dc_sb_charge\",\n  [108]= \"dc_sb_charge_attack\",\n  [109]= \"dc_sb_charge_finish\",\n  [110]= \"dc_sb_ultimate\",\n  [111]= \"faces_hakama\",\n  [112]= \"faces_wraps\",\n  [113]= \"faces_mask\",\n  [114]= \"lodestar\",\n  [115]= \"reincarnate\",\n  [116]= \"demon_drain\",\n  [117]= \"divine_sorrow\",\n  [118]= \"divine_sorrow_loadout\",\n  [119]= \"divine_sorrow_loadout_spawn\",\n  [120]= \"divine_sorrow_sunstrike\",\n  [121]= \"duel_kill\",\n  [122]= \"forcestaff_enemy\",\n  [123]= \"fish_slap\",\n  [124]= \"focusfire\",\n  [125]= \"fear\",\n  [126]= \"ftp_dendi_back\",\n  [127]= \"triumphant_timelord\",\n  [128]= \"ground_pound\",\n  [129]= \"harlequin\",\n  [130]= \"injured_aggressive\",\n  [131]= \"f2p_doom\",\n  [132]= \"obsidian_helmet\",\n  [133]= \"item_style_2\",\n  [134]= \"blood_chaser\",\n  [135]= \"manias_mask\",\n  [136]= \"punch\",\n  [137]= \"thirst\",\n  [138]= \"impetus\",\n  [139]= \"taunt_killtaunt\",\n  [140]= \"level_1\",\n  [141]= \"level_2\",\n  [142]= \"level_3\",\n  [143]= \"dagger_twirl\",\n  [144]= \"ancestors_edge\",\n  [145]= \"ancestors_pauldron\",\n  [146]= \"ancestors_vambrace\",\n  [147]= \"bladebiter\",\n  [148]= \"burning_fiend\",\n  [149]= \"fiery_soul\",\n  [150]= \"frostiron_raider\",\n  [151]= \"obeisance_of_the_keeper\",\n  [152]= \"salvaged_sword\",\n  [153]= \"serene_honor\",\n  [154]= \"shinobi_mask\",\n  [155]= \"swordonshoulder\",\n  [156]= \"whalehook\",\n  [157]= \"winterblight\",\n  [158]= \"lucentyr\",\n  [159]= \"lyreleis_breeze\",\n  [160]= \"mace\",\n  [161]= \"tinker_rollermaw\",\n  [162]= \"meld\",\n  [163]= \"agrressive\",\n  [164]= \"miniboss\",\n  [165]= \"moonfall\",\n  [166]= \"moon_griffon\",\n  [167]= \"overpower1\",\n  [168]= \"overpower2\",\n  [169]= \"overpower3\",\n  [170]= \"overpower4\",\n  [171]= \"overpower5\",\n  [172]= \"overpower6\",\n  [173]= \"loda\",\n  [174]= \"dark_wraith\",\n  [175]= \"pinfold\",\n  [176]= \"digger\",\n  [177]= \"portrait_fogheart\",\n  [178]= \"silent_ripper\",\n  [179]= \"shake_moneymaker\",\n  [180]= \"belly_flop\",\n  [181]= \"roshan\",\n  [182]= \"am_blink\",\n  [183]= \"mana_void\",\n  [184]= \"culling_blade\",\n  [185]= \"brain_sap\",\n  [186]= \"fiends_grip\",\n  [187]= \"roar\",\n  [188]= \"axes\",\n  [189]= \"stolen_firefly\",\n  [190]= \"firefly\",\n  [191]= \"freezing_field\",\n  [192]= \"frostbite\",\n  [193]= \"crystal_nova\",\n  [194]= \"black_hole\",\n  [195]= \"fissure\",\n  [196]= \"slam\",\n  [197]= \"totem\",\n  [198]= \"omnislash\",\n  [199]= \"spin\",\n  [200]= \"finger\",\n  [201]= \"impale\",\n  [202]= \"laguna\",\n  [203]= \"lsa\",\n  [204]= \"mana_drain\",\n  [205]= \"wave\",\n  [206]= \"leap\",\n  [207]= \"requiem\",\n  [208]= \"shadowraze\",\n  [209]= \"sprout\",\n  [210]= \"summon\",\n  [211]= \"teleport\",\n  [212]= \"wrath\",\n  [213]= \"darkness\",\n  [214]= \"void\",\n  [215]= \"guardian_angel\",\n  [216]= \"purification\",\n  [217]= \"repel\",\n  [218]= \"dismember\",\n  [219]= \"life_drain\",\n  [220]= \"hook\",\n  [221]= \"qop_blink\",\n  [222]= \"scream\",\n  [223]= \"shadow_strike\",\n  [224]= \"sonic_wave\",\n  [225]= \"ravage\",\n  [226]= \"snipe\",\n  [227]= \"stolen_charge\",\n  [228]= \"strike\",\n  [229]= \"burrow\",\n  [230]= \"shrapnel\",\n  [231]= \"ball_lightning\",\n  [232]= \"remnant\",\n  [233]= \"bolt\",\n  [234]= \"vortex\",\n  [235]= \"earthshock\",\n  [236]= \"gale\",\n  [237]= \"plague_ward\",\n  [238]= \"poison_nova\",\n  [239]= \"viper_strike\",\n  [240]= \"wall\",\n  [241]= \"ward\",\n  [242]= \"powershot\",\n  [243]= \"end\",\n  [244]= \"windrun\",\n  [245]= \"windy\",\n  [246]= \"chase\",\n  [247]= \"injured rare\",\n  [248]= \"pegleg\",\n  [249]= \"start\",\n  [250]= \"sb_helmet\",\n  [251]= \"sb_bracers\",\n  [252]= \"sb_shoulder\",\n  [253]= \"sb_spear\",\n  [254]= \"dominator\",\n  [255]= \"iron\",\n  [256]= \"sven_shield\",\n  [257]= \"sven_warcry\",\n  [258]= \"chicken_gesture\",\n  [259]= \"emp\",\n  [260]= \"slasher_weapon\",\n  [261]= \"slasher_offhand\",\n  [262]= \"slasher_chest\",\n  [263]= \"slasher_mask\",\n  [264]= \"sm_armor\",\n  [265]= \"sm_shoulder\",\n  [266]= \"wolfhound\",\n  [267]= \"great_safari\",\n  [268]= \"taunt_quickdraw_gesture\",\n  [269]= \"sparrowhawk_bow\",\n  [270]= \"sparrowhawk_cape\",\n  [271]= \"sparrowhawk_quiver\",\n  [272]= \"sparrowhawk_hood\",\n  [273]= \"sparrowhawk_shoulder\",\n  [274]= \"twister\",\n  [275]= \"sprint\",\n  [276]= \"sugarrush\",\n  [277]= \"trickortreat\",\n  [278]= \"transition\",\n  [279]= \"torment\",\n  [280]= \"stinger\",\n  [281]= \"whats_that\",\n  [282]= \"witchdoctor_jig\",\n  [283]= \"backstroke_gesture\",\n  [284]= \"bazooka\",\n  [285]= \"cat_dancer_gesture\",\n  [286]= \"face_me\",\n  [287]= \"swag_gesture\",\n  [288]= \"get_burned\",\n  [289]= \"giddy_up_gesture\",\n  [290]= \"guitar\",\n  [291]= \"hang_loose_gesture\",\n  [292]= \"horn\",\n  [293]= \"happy_dance\",\n  [294]= \"jump_gesture\",\n  [295]= \"loser\",\n  [296]= \"lute\",\n  [297]= \"magic_ends_here\",\n  [298]= \"mag_power_gesture\",\n  [299]= \"mask_lord\",\n  [300]= \"poundnpoint\",\n  [301]= \"robot_gesture\",\n  [302]= \"taunt_roll_gesture\",\n  [303]= \"sharp_blade\",\n  [304]= \"staff_swing\",\n  [305]= \"groove_gesture\",\n  [306]= \"telebolt\",\n  [307]= \"admirals_prow\",\n  [308]= \"turbulent_teleport\",\n  [309]= \"timelord_head\",\n  [310]= \"tree\",\n  [311]= \"dryad_tree\",\n  [312]= \"tidehunter_toss_fish\",\n  [313]= \"enchant_totem\",\n  [314]= \"trapper\",\n  [315]= \"twinblade_attack\",\n  [316]= \"twinblade_attack_b\",\n  [317]= \"twinblade_attack_c\",\n  [318]= \"twinblade_attack_d\",\n  [319]= \"twinblade_attack_injured\",\n  [320]= \"twinblade_death\",\n  [321]= \"twinblade_idle\",\n  [322]= \"twinblade_idle_injured\",\n  [323]= \"twinblade_idle_rare\",\n  [324]= \"twinblade_injured_attack_b\",\n  [325]= \"twinblade_jinada\",\n  [326]= \"twinblade_jinada_injured\",\n  [327]= \"twinblade_shuriken_toss\",\n  [328]= \"twinblade_shuriken_toss_injured\",\n  [329]= \"twinblade_spawn\",\n  [330]= \"twinblade_stun\",\n  [331]= \"twinblade_track\",\n  [332]= \"twinblade_track_injured\",\n  [333]= \"twinblade_victory\",\n  [334]= \"melee\",\n  [335]= \"backward\",\n  [336]= \"forward\",\n  [337]= \"vendetta\",\n  [338]= \"viridi_set\",\n  [339]= \"fishstick\",\n  [340]= \"dogofduty\",\n  [341]= \"cryAnimationExportNode\",\n  [342]= \"dog_of_duty\",\n  [343]= \"dizzying_punch\",\n  [344]= \"wardstaff\",\n  [345]= \"glory\",\n  [346]= \"white\",\n  [347]= \"tidehunter_yippy\",\n  [348]= \"rampant\",\n  [349]= \"overload\",\n  [350]=\"surge\",\n  [351]=\"es_prosperity\",\n  [352]=\"Espada_pistola\",\n  [353]=\"overload_injured\",\n  [354]=\"ss_fortune\",\n  [355]=\"liquid_fire\",\n  [356]=\"jakiro_icemelt\",\n  [357]=\"jakiro_roar\",\n  [358]=\"chakram\",\n  [359]=\"doppelwalk\",\n  [360]=\"enrage\",\n  [361]=\"fast_run\",\n  [362]=\"overpower\",\n  [363]=\"overwhelmingodds\",\n  [364]=\"pregame\",\n  [365]=\"shadow_dance\",\n  [366]=\"shukuchi\",\n  [367]=\"strength\",\n  [368]=\"twinblade_run\",\n  [369]=\"twinblade_run_injured\",\n  [370]=\"windwalk\",\n}\n\nfunction modifier_animation_translate_permanent:OnCreated(keys) \n  if not IsServer() then\n    self.translate = _CODE_TO_ANIMATION_TRANSLATE[keys.stack_count]\n  else\n    self.translate = keys.translate\n  end\nend\n\nfunction modifier_animation_translate_permanent:GetAttributes()\n  return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE --+ MODIFIER_ATTRIBUTE_MULTIPLE\nend\n\nfunction modifier_animation_translate_permanent:IsHidden()\n  return true\nend\n\nfunction modifier_animation_translate_permanent:IsDebuff() \n  return false\nend\n\nfunction modifier_animation_translate_permanent:IsPurgable() \n  return false\nend\n\nfunction modifier_animation_translate_permanent:DeclareFunctions() \n  local funcs = {\n    MODIFIER_PROPERTY_TRANSLATE_ACTIVITY_MODIFIERS,\n  }\n \n  return funcs\nend\n\nfunction modifier_animation_translate_permanent:GetActivityTranslationModifiers(...)\n  --print('TRANSLATE MODIFIER', IsServer())\n  --print(self.translate)\n  return self.translate or 0\nend\n\n--[[function modifier_animation_translate_permanent:CheckState() \n  local state = {\n    [MODIFIER_STATE_UNSELECTABLE] = true,\n    [MODIFIER_STATE_INVULNERABLE] = true,\n    [MODIFIER_STATE_NOT_ON_MINIMAP] = true,\n    [MODIFIER_STATE_NO_HEALTH_BAR] = true,\n  }\n\n  return state\nend]]\n\n"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/modifiers/modifier_shopkeeper.lua",
    "content": "modifier_shopkeeper = class({})\n\nfunction modifier_shopkeeper:DeclareFunctions()\n    local funcs = {\n        --MODIFIER_PROPERTY_DISABLE_AUTOATTACK,\n        MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL,\n        MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL,\n        MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE,\n        MODIFIER_PROPERTY_MIN_HEALTH,\n    }\n\n    return funcs\nend\n\nfunction modifier_shopkeeper:CheckState()\n  local state = {\n    --[MODIFIER_STATE_OUT_OF_GAME] = true,\n    [MODIFIER_STATE_MAGIC_IMMUNE] = true,\n    --[MODIFIER_STATE_ATTACK_IMMUNE] = true,\n    --[MODIFIER_STATE_NIGHTMARED] = true,\n    [MODIFIER_STATE_NO_HEALTH_BAR] = true,\n    --[MODIFIER_STATE_UNSELECTABLE] = true,\n  }\n\n  return state\nend\n\nfunction modifier_shopkeeper:GetAbsoluteNoDamageMagical()\n  return 1\nend\n\nfunction modifier_shopkeeper:GetAbsoluteNoDamagePhysical()\n  return 1\nend\n\nfunction modifier_shopkeeper:GetAbsoluteNoDamagePure()\n  return 1\nend\n\nfunction modifier_shopkeeper:GetMinHealth()\n  return 1\nend\n\nfunction modifier_shopkeeper:IsHidden()\n    return false--true\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/modmaker.lua",
    "content": "MODMAKER_VERSION = \"0.80\"\n\nrequire('libraries/timers')\n\n--[[\n  ModMaker Library by BMD\n\n  Installation\n  -\"require\" this file inside your code in order to make the ModMaker API available in game\n  -Ensure that this file is placed in the vscripts/libraries path\n  -Ensure that you have the modmaker/modmaker.xml, modmaker/modmaker_api_category.xml, and modmaker/modmaker_api_property.xml in your panorama content layout folder.\n  -Ensure that you have the modmaker/modmaker.js, modmaker/modmaker_api_category.js, and modmaker/modmaker_api_property.js in your panorama content scripts folder.\n  -Ensure that you have the modmaker/modmaker.css in your panorama content styles folder.\n  -Ensure that modmaker/modmaker.xml is included in your custom_ui_manifest.xml with\n    <CustomUIElement type=\"Hud\" layoutfile=\"file://{resources}/layout/custom_game/modmaker/modmaker.xml\" />\n\n  Library Usage\n  -The library when required in registers the \"modmaker_api\" console command (if in tools mode)\n  -Executing the \"modmakers_api\" console command will display the modmaker API UI in the game window, which allows for searching and exploring of the lua API.\n  -This API is based on the actual server vscript itself, and as such is always up to date and accurate (to the Valve docs).\n  -Each function has a \"Search GitHub\" button which will open the default browser on your system to search github for uses of the function in question.\n  \n]]\n\nif not ModMaker then\n  ModMaker = class({})\nend\n\nlocal mask = 0xBF\nlocal mark = 0x80\nlocal fbm =  { 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }\nlocal UTF8extra = {\n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \n    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, \n    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\n    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, \n    3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5\n}\nlocal UTFMagicOffsets = { 0x00000000, 0x00003080, 0x000E2080, 0x03C82080, 0xFA082080, 0x82082080 }\n\nlocal function utf16to8(str)\n  local out = {}\n  for i=1,str:len(),2 do\n    local b = bit.lshift(str:byte(i+1), 8) + str:byte(i)\n    local tow = 1\n    if b < 0x80 then tow = 1\n    elseif b < 0x800 then tow = 2\n    elseif b < 0x10000 then tow = 3\n    elseif b < 0x110000 then tow = 4\n    end\n    --print(b,tow)\n\n    local toww = tow\n\n    local r = {}\n\n    if tow == 4 then\n      r[4] = string.char(bit.band(bit.bor(b, mark), mask))\n      b = bit.rshift(b,6)\n      tow = tow - 1\n    end\n    if tow == 3 then\n      r[3] = string.char(bit.band(bit.bor(b, mark), mask))\n      b = bit.rshift(b,6)\n      tow = tow - 1\n    end\n    if tow == 2 then\n      r[2] = string.char(bit.band(bit.bor(b, mark), mask))\n      b = bit.rshift(b,6)\n      tow = tow - 1\n    end\n    if tow == 1 then\n      r[1] = table.insert(out, string.char(bit.bor(b, fbm[toww])))\n      b = bit.rshift(b,6)\n      tow = tow - 1\n    end\n\n    for j=1,#r do\n      table.insert(out, r[j])\n    end\n  end\n\n  return table.concat(out)\nend\n\nlocal function utf8to16(str)\n  local out = {}\n  local i = 1\n  while i<=str:len() do\n    local b = str:byte(i)\n    local extra = UTF8extra[b+1];\n    local ex = extra\n    local c = 0\n\n    if ex == 3 then\n      c = bit.lshift(c + b, 6)\n      i = i+1\n      b = str:byte(i)\n      ex = ex - 1\n    end\n    if ex == 2 then\n      c = bit.lshift(c + b, 6)\n      i = i+1\n      b = str:byte(i)\n      ex = ex - 1\n    end\n    if ex == 1 then\n      c = bit.lshift(c + b, 6)\n      i = i+1\n      b = str:byte(i)\n      ex = ex - 1\n    end\n    if ex == 0 then\n      c = c + b\n      i = i+1\n    end\n\n    --print(extra, c, UTFMagicOffsets[extra+1], c - UTFMagicOffsets[extra+1])\n\n    c = c - UTFMagicOffsets[extra+1]\n    table.insert(out, string.char(bit.band(c, 0x00FF)))\n    table.insert(out, string.char(bit.rshift(c, 8)))\n  end\n\n  return table.concat(out)\nend\n\n\nlocal function GetAPI(t, sub, done)\n  --print ( string.format ('PrintTable type %s', type(keys)) )\n  if type(t) ~= \"table\" then return end\n\n  done = done or {}\n  done[t] = true\n  sub = sub or ModMaker.api\n\n  local l = {}\n  for k, v in pairs(t) do\n    table.insert(l, k)\n  end\n\n  local ret = nil\n\n  table.sort(l)\n  for k, v in ipairs(l) do\n    -- Ignore FDesc\n    if v == 'CDesc' then\n      --print('======================')\n      --PrintTable(t[v])\n      --print('======================')\n      GetAPI (t[v], nil, done)\n      ret = true\n    elseif v ~= 'FDesc' then\n      local value = t[v]\n\n      if type(value) == \"table\" and not done[value] then\n        done [value] = true\n        if type(v) == \"string\" and v:sub(1,1):find(\"[A-Z]\") then\n          v = v:gsub(\"CDOTA_\", \"\")\n          v = v:gsub(\"CDOTA\", \"\")\n          if v:sub(2,2):find(\"[A-Z]\") then v = v:sub(2) end\n          local temp = {}\n          local r = GetAPI (value, temp, done)\n          if r then\n            sub[v] = temp\n            ret = true\n          end\n        end\n      elseif type(value) == \"userdata\" and not done[value] then\n        --done [value] = true\n        --GetAPI ((getmetatable(value) and getmetatable(value).__index) or getmetatable(value), sub, done)\n      else\n        if t.FDesc and t.FDesc[v] then\n          local func, desc = string.match(tostring(t.FDesc[v]), \"(.*)\\n(.*)\")\n          if sub == ModMaker.api then\n            ModMaker.api.__GLOBAL__[v] = {f=func,d=desc}\n          else\n            sub[v] = {f=func,d=desc}\n          end\n          ret = true\n        end\n      end\n    end\n  end\n\n  return ret\nend\n\n\nfunction ModMaker:start()\n  if not __ACTIVATE_HOOK then\n    __ACTIVATE_HOOK = {funcs={}}\n    setmetatable(__ACTIVATE_HOOK, {\n      __call = function(t, func)\n        table.insert(t.funcs, func)\n      end\n    })\n\n    debug.sethook(function(...)\n      local info = debug.getinfo(2)\n      local src = tostring(info.short_src)\n      local name = tostring(info.name)\n      if name ~= \"__index\" then\n        if string.find(src, \"addon_game_mode\") then\n          if GameRules:GetGameModeEntity() then\n            for _, func in ipairs(__ACTIVATE_HOOK.funcs) do\n              local status, err = pcall(func)\n              if not status then\n                print(\"__ACTIVATE_HOOK callback error: \" .. err)\n              end\n            end\n\n            debug.sethook(nil, \"c\")\n          end\n        end\n      end\n    end, \"c\")\n  end\n\n  --[[__ACTIVATE_HOOK(function()\n    print('activate hook called')\n    local mode = GameRules:GetGameModeEntity()\n    mode:SetExecuteOrderFilter(Dynamic_Wrap(ModMaker, 'OrderFilter'), ModMaker)\n    ModMaker.oldFilter = mode.SetExecuteOrderFilter\n    mode.SetExecuteOrderFilter = function(mode, fun, context)\n      --print('SetExecuteOrderFilter', fun, context)\n      ModMaker.nextFilter = fun\n      ModMaker.nextContext = context\n    end\n    ModMaker.initialized = true\n  end)]]\n\n  self.api = {__GLOBAL__ = {}}\n\n  local src = debug.getinfo(1).source\n  --print(src)\n\n  self.gameDir = \"\"\n  self.contentDir = \"\"\n  self.addonName = \"\"\n\n  self.gameFiles = {}\n  self.contentFiles = {}\n\n  if src:sub(2):find(\"(.*dota 2 beta[\\\\/]game[\\\\/]dota_addons[\\\\/])([^\\\\/]+)[\\\\/]\") then\n\n    self.gameDir, self.addonName = string.match(src:sub(2), \"(.*dota 2 beta[\\\\/]game[\\\\/]dota_addons[\\\\/])([^\\\\/]+)[\\\\/]\")\n    self.contentDir = self.gameDir:gsub(\"\\\\game\\\\dota_addons\\\\\", \"\\\\content\\\\dota_addons\\\\\")\n\n    self.initialized = true\n\n    Convars:RegisterCommand( \"modmaker_api\", Dynamic_Wrap(ModMaker, 'ModMakerAPI'), \"Show the ModMaker lua API for a serachable listing of the server lua vscript.\", FCVAR_CHEAT )\n\n    CustomGameEventManager:RegisterListener(\"ModMaker_OpenGithub\", Dynamic_Wrap(ModMaker, \"ModMaker_OpenGithub\"))\n  else\n    SendToServerConsole(\"script_reload_code \" .. src:sub(2))\n  end\n\n  --print(ModMaker.addonName)\n  --print(ModMaker.contentDir )\n  --print(ModMaker.gameDir)\nend\n\nfunction ModMaker:ModMaker_OpenGithub(msg)\n  local search = msg.search\n  local language = msg.language\n\n  print(\"ModMaker_OpenGithub\",search,language)\n\n  local url = \"https://github.com/search?utf8=%E2%9C%93&q=\" .. search .. \"&l=\" .. language .. \"&type=Code\"\n\n  local t = io.popen(\"start \\\"Browser\\\" \\\"\" .. url .. \"\\\"\")\n  t:lines()\nend\n\nfunction ModMaker:ModMakerAPI()\n  if not ModMaker.apiBuilt then\n    ModMaker.apiBuilt = true\n    ModMaker:BuildAPI()\n\n    CustomGameEventManager:Send_ServerToAllClients(\"modmaker_lua_api\", {api=ModMaker.api})\n  else\n    CustomGameEventManager:Send_ServerToAllClients(\"modmaker_lua_api\", {})\n  end\nend\n\nfunction ModMaker:BuildAPI()\n  GetAPI(_G)\nend\n\nfunction ModMaker:LoadFile(fileName, content)\n  local dir = self.gameDir\n  if content then dir = self.contentDir end\n\n  local src = dir .. self.addonName .. \"/\" .. fileName\n  local file = io.open(src, \"rb\")\n  local str = {}\n\n  local temp = nil\n  local total = 0\n  while 1 do\n    temp = file:read(\"*all\")\n    if temp == nil or temp == \"\" then\n      break\n    end\n    table.insert(str,temp)\n  end\n\n  local str = table.concat(str)\n  if str:byte(1) == 0xFF and str:byte(2) == 0xFE then\n    print(\"UCS2LE\")\n    str = utf16to8(str:sub(3))\n  end\n\n  if content then \n    self.contentFiles[fileName] = str\n  else\n    self.gameFiles[fileName] = str\n  end\nend\n\nfunction ModMaker:SendFile(fileName, content)\n  local str = self.gameFiles[fileName]\n  if content then str = self.contentFiles[fileName] end\n  if str == nil then\n    print(\"No file to send, \" .. fileName)\n  end\n  local msg = 1\n  local max = math.floor((str:len()-1) / 500000) + 1\n  for i=1,str:len(),500000 do\n    local rest = math.min(str:len() - i+1, 500000)\n    print(\"ASD\",i,rest)\n    local r = {}\n    for j=i,i+rest,32000 do\n      local rest2 = math.min(i+rest - j, 32000)\n      print(j, rest2, j+rest2-1)\n      table.insert(r, str:sub(j,j+rest2-1))\n    end\n    if msg == 1 then\n      CustomGameEventManager:Send_ServerToAllClients(\"modmaker_send_file\", {name=fileName, count=msg, max=max, t=r})\n    else\n      local c = msg\n      Timers(msg*1/30, function() CustomGameEventManager:Send_ServerToAllClients(\"modmaker_send_file\", {name=fileName, count=c, max=max, t=r}) end)\n    end\n    msg = msg + 1\n  end\nend\n\nif not ModMaker.initialized and IsInToolsMode() then ModMaker:start() end"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/notifications.lua",
    "content": "NOTIFICATIONS_VERSION = \"1.00\"\n\n--[[\n  Sample Panorama Notifications Library by BMD\n\n  Installation\n  -\"require\" this file inside your code in order to gain access to the Notifications class for sending notifications to players, teams, or all clients.\n  -Ensure that you have the barebones_notifications.xml, barebones_notifications.js, and barebones_notifications.css files in your panorama content folder.\n  -Ensure that barebones_notifications.xml is included in your custom_ui_manifest.xml with\n    <CustomUIElement type=\"Hud\" layoutfile=\"file://{resources}/layout/custom_game/barebones_notifications.xml\" />\n\n  Usage\n  -Notifications can be sent to the Top or Bottom notification panel of an individual player, a whole team, or all clients at once.\n  -Notifications can be sent in pieces consisting of Labels, Images, HeroImages, and AbilityImages.\n  -Notifications are specified by a table which has 4 potential parameters:\n    -duration: The duration to display the notification for on screen.  Ignored for a notification which \"continues\" a previous notification line.\n    -class: An optional (leave as nil for default) string which will be used as the class to add to the notification piece.\n    -style: An optional (leave as nil for default) table of css properties to add to this notification, such as {[\"font-size\"]=\"60px\", color=\"green\"}.\n    -continue: An optional (leave as nil for false) boolean which tells the notification system to add this notification to the current notification line if 'true'.  \n      This lets you place multiple individual notification pieces on the same overall notification.\n  -For Labels, there is one additional mandatory parameter:\n    -text:  The text to display in the notification.  Can provide localization tokens (\"#addonname\") or non-localized text.\n  -For HeroImages, there is two additional parameters:\n    -hero:  (Mandatory) The hero name, e.g. \"npc_dota_hero_axe\".\n    -imagestyle:  (Optional)  The image style to display for this hero image.  Default when 'nil' is 'icon'.  'portrait' and 'landscape' are two other options.\n  -For AboilityImages, there is one additional mandatory parameter:\n    -ability:  The ability name, e.g. \"lina_fiery_soul\".\n  -For Images, there is one additional mandatory parameter:\n    -image:  The image src string, e.g. \"file://{images}/status_icons/dota_generic.psd\".\n  -For ItemImages, there is one additional mandatory parameter:\n    -item:  The item name, e.g. \"item_force_staff\".\n\n  -Notifications can be removed from the Top/Bottom or cleared\n\n  -Call the Notifications:Top, Notifications:TopToAll, or Notifications:TopToTeam to send a top-area notification to the appropriate players \n  -Call the Notifications:Bottom, Notifications:BottomToAll, or Notifications:BottomToTeam to send a bottom-area notifications to the appropriate players \n  -Call the Notifications:ClearTop, Notifications:ClearTopFromAll, or Notifications:ClearTopFromTeam to clear all existing top-area notifications from appropriate players\n  -Call the Notifications:ClearBottom, Notifications:ClearBottomFromAll, or Notifications:ClearBottomFromTeam to clear all existing bottom-area notifications from appropriate players\n  -Call the Notifications:RemoveTop, Notifications:RemoveTopFromAll, or Notifications:RemoveTopFromTeam to remove all existing top-area notifications from appropriate players up to the provided count of notifications\n  -Call the Notifications:RemoveBottom, Notifications:RemoveBottomFromAll, or Notifications:RemoveBottomFromTeam to remove all existing bottom-area notifications from appropriate players up to the provided count of notifications\n  \n  Examples:\n\n  -- Send a notification to all players that displays up top for 5 seconds\n  Notifications:TopToAll({text=\"Top Notification for 5 seconds \", duration=5.0})\n  -- Send a notification to playerID 0 which will display up top for 9 seconds and be green, on the same line as the previous notification\n  Notifications:Top(0, {text=\"GREEEENNNN\", duration=9, style={color=\"green\"}, continue=true})\n\n  -- Display 3 styles of hero icons on the same line for 5 seconds.\n  Notifications:TopToAll({hero=\"npc_dota_hero_axe\", duration=5.0})\n  Notifications:TopToAll({hero=\"npc_dota_hero_axe\", imagestyle=\"landscape\", continue=true})\n  Notifications:TopToAll({hero=\"npc_dota_hero_axe\", imagestyle=\"portrait\", continue=true})\n\n  -- Display a generic image and then 2 ability icons and an item on the same line for 5 seconds\n  Notifications:TopToAll({image=\"file://{images}/status_icons/dota_generic.psd\", duration=5.0})\n  Notifications:TopToAll({ability=\"nyx_assassin_mana_burn\", continue=true})\n  Notifications:TopToAll({ability=\"lina_fiery_soul\", continue=true})\n  Notifications:TopToAll({item=\"item_force_staff\", continue=true})\n\n\n  -- Send a notification to all players on radiant (GOODGUYS) that displays near the bottom of the screen for 10 seconds to be displayed with the NotificationMessage class added\n  Notifications:BottomToTeam(DOTA_TEAM_GOODGUYS, {text=\"AAAAAAAAAAAAAA\", duration=10, class=\"NotificationMessage\"})\n  -- Send a notification to player 0 which will display near the bottom a large red notification with a solid blue border for 5 seconds\n  Notifications:Bottom(PlayerResource:GetPlayer(0), {text=\"Super Size Red\", duration=5, style={color=\"red\", [\"font-size\"]=\"110px\", border=\"10px solid blue\"}})\n\n\n  -- Remove 1 bottom and 2 top notifications 2 seconds later\n  Timers:CreateTimer(2,function()\n    Notifications:RemoveTop(0, 2)\n    Notifications:RemoveBottomFromTeam(DOTA_TEAM_GOODGUYS, 1)\n\n    -- Add 1 more notification to the bottom\n    Notifications:BottomToAll({text=\"GREEEENNNN again\", duration=9, style={color=\"green\"}})\n  end)\n\n  -- Clear all notifications from the bottom\n  Timers:CreateTimer(7, function()\n    Notifications:ClearBottomFromAll()\n  end)\n]]\n\nif Notifications == nil then\n  Notifications = class({})\nend\n\nfunction Notifications:ClearTop(player)\n  Notifications:RemoveTop(player, 50)\nend\n\nfunction Notifications:ClearBottom(player)\n  Notifications:RemoveBottom(player, 50)\nend\n\nfunction Notifications:ClearTopFromAll()\n  Notifications:RemoveTopFromAll(50)\nend\n\nfunction Notifications:ClearBottomFromAll()\n  Notifications:RemoveBottomFromAll(50)\nend\n\nfunction Notifications:ClearTopFromTeam(team)\n  Notifications:RemoveTopFromTeam(team, 50)\nend\n\nfunction Notifications:ClearBottomFromTeam(team)\n  Notifications:RemoveBottomFromTeam(team, 50)\nend\n\n\nfunction Notifications:RemoveTop(player, count)\n  if type(player) == \"number\" then\n    player = PlayerResource:GetPlayer(player)\n  end\n\n  CustomGameEventManager:Send_ServerToPlayer(player, \"top_remove_notification\", {count=count} )\nend\n\nfunction Notifications:RemoveBottom(player, count)\n  if type(player) == \"number\" then\n    player = PlayerResource:GetPlayer(player)\n  end\n\n  CustomGameEventManager:Send_ServerToPlayer(player, \"bottom_remove_notification\", {count=count})\nend\n\nfunction Notifications:RemoveTopFromAll(count)\n  CustomGameEventManager:Send_ServerToAllClients(\"top_remove_notification\", {count=count} )\nend\n\nfunction Notifications:RemoveBottomFromAll(count)\n  CustomGameEventManager:Send_ServerToAllClients(\"bottom_remove_notification\", {count=count})\nend\n\nfunction Notifications:RemoveTopFromTeam(team, count)\n  CustomGameEventManager:Send_ServerToTeam(team, \"top_remove_notification\", {count=count} )\nend\n\nfunction Notifications:RemoveBottomFromTeam(team, count)\n  CustomGameEventManager:Send_ServerToTeam(team, \"bottom_remove_notification\", {count=count})\nend\n\n\nfunction Notifications:Top(player, table)\n  if type(player) == \"number\" then\n    player = PlayerResource:GetPlayer(player)\n  end\n\n  if table.text ~= nil then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"top_notification\", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.hero ~= nil then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"top_notification\", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.image ~= nil then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"top_notification\", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.ability ~= nil then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"top_notification\", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.item ~= nil then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"top_notification\", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  else\n    CustomGameEventManager:Send_ServerToPlayer(player, \"top_notification\", {text=\"No TEXT provided.\", duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  end\nend\n\nfunction Notifications:TopToAll(table)\n  if table.text ~= nil then\n    CustomGameEventManager:Send_ServerToAllClients(\"top_notification\", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.hero ~= nil then\n    CustomGameEventManager:Send_ServerToAllClients(\"top_notification\", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.image ~= nil then\n    CustomGameEventManager:Send_ServerToAllClients(\"top_notification\", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.ability ~= nil then\n    CustomGameEventManager:Send_ServerToAllClients(\"top_notification\", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.item ~= nil then\n    CustomGameEventManager:Send_ServerToAllClients(\"top_notification\", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  else\n    CustomGameEventManager:Send_ServerToAllClients(\"top_notification\", {text=\"No TEXT provided.\", duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  end\nend\n\nfunction Notifications:TopToTeam(team, table)\n  if table.text ~= nil then\n    CustomGameEventManager:Send_ServerToTeam(team, \"top_notification\", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.hero ~= nil then\n    CustomGameEventManager:Send_ServerToTeam(team, \"top_notification\", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.image ~= nil then\n    CustomGameEventManager:Send_ServerToTeam(team, \"top_notification\", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.ability ~= nil then\n    CustomGameEventManager:Send_ServerToTeam(team, \"top_notification\", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.item ~= nil then\n    CustomGameEventManager:Send_ServerToTeam(team, \"top_notification\", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  else\n    CustomGameEventManager:Send_ServerToTeam(team, \"top_notification\", {text=\"No TEXT provided.\", duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  end\nend\n\n\nfunction Notifications:Bottom(player, table)\n  if type(player) == \"number\" then\n    player = PlayerResource:GetPlayer(player)\n  end\n\n  if table.text ~= nil then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"bottom_notification\", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.hero ~= nil then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"bottom_notification\", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.image ~= nil then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"bottom_notification\", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.ability ~= nil then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"bottom_notification\", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.item ~= nil then\n    CustomGameEventManager:Send_ServerToPlayer(player, \"bottom_notification\", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  else\n    CustomGameEventManager:Send_ServerToPlayer(player, \"bottom_notification\", {text=\"No TEXT provided.\", duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  end\nend\n\nfunction Notifications:BottomToAll(table)\n  if table.text ~= nil then\n    CustomGameEventManager:Send_ServerToAllClients(\"bottom_notification\", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.hero ~= nil then\n    CustomGameEventManager:Send_ServerToAllClients(\"bottom_notification\", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.image ~= nil then\n    CustomGameEventManager:Send_ServerToAllClients(\"bottom_notification\", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.ability ~= nil then\n    CustomGameEventManager:Send_ServerToAllClients(\"bottom_notification\", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.item ~= nil then\n    CustomGameEventManager:Send_ServerToAllClients(\"bottom_notification\", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  else\n    CustomGameEventManager:Send_ServerToAllClients(\"bottom_notification\", {text=\"No TEXT provided.\", duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  end\nend\n\nfunction Notifications:BottomToTeam(team, table)\n  if table.text ~= nil then\n    CustomGameEventManager:Send_ServerToTeam(team, \"bottom_notification\", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.hero ~= nil then\n    CustomGameEventManager:Send_ServerToTeam(team, \"bottom_notification\", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.image ~= nil then\n    CustomGameEventManager:Send_ServerToTeam(team, \"bottom_notification\", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.ability ~= nil then\n    CustomGameEventManager:Send_ServerToTeam(team, \"bottom_notification\", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  elseif table.item ~= nil then\n    CustomGameEventManager:Send_ServerToTeam(team, \"bottom_notification\", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  else\n    CustomGameEventManager:Send_ServerToTeam(team, \"bottom_notification\", {text=\"No TEXT provided.\", duration=table.duration, class=table.class, style=table.style, continue=table.continue} )\n  end\nend"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/pathgraph.lua",
    "content": "PATHGRAPH_VERSION = \"0.80\"\n\n--[[\n  Path Graph Instantiation Library by BMD\n\n  Installation\n  -\"require\" this file inside your code in order to gain access to the PathGraph global and functions.\n\n  Usage\n  -PathGraph:Initialize() should be called sometime during your game mode's initialization.\n  -The Initialize function will find all of the connecting \"path_corner\" entities as placed on your map via hammer and connect them.\n  -Each \"path_corner\" entity after Initialize will have a \"edges\" property containing a full edge graph for that node to all other connected nodes.\n  -PathGraph:DrawPaths(pathCorner, duration, color) should be called for debugging purposes in order to show the path graph connections.\n    -pathCorner is the path_corner entity to display the connected graph for.\n    -duration is the duration to display the graph\n    -color is the color to use for the graph lines and nodes\n  Notes\n  -Currently only supports path_corner and not path_track\n\n  Examples:\n  --Initialize the graph\n    PathGraph:Initialize()\n\n  --Iterate through all connected edges starting from a path_corner node named \"start_node\"\n    local node = Entities:FindByName(nil, \"start_node\")\n    for _,edge in pairs(node.edges) do\n      print(\"'start_node' is connected to '\" .. edge:GetName() .. \"'\")\n    end\n\n]]\n\nif not PathGraph then\n  PathGraph = class({})\nend\n\nlocal TableCount = function(t)\n  local n = 0\n  for _ in pairs( t ) do\n    n = n + 1\n  end\n  return n\nend\n\nfunction PathGraph:Initialize()\n  local corners = Entities:FindAllByClassname('path_corner')\n  local points = {} \n  for _,corner in ipairs(corners) do\n    points[corner:entindex()] = corner\n  end\n\n  local names = {}\n\n  for _,corner in ipairs(corners) do\n    local name = corner:GetName()\n    if names[name] ~= nil then\n      print(\"[PathGraph] Initialization error, duplicate path_corner named '\" .. name .. \"' found. Skipping...\")\n    else\n      local parents = Entities:FindAllByTarget(corner:GetName())\n      corner.edges = corner.edges or {}\n      \n      for _,parent in ipairs(parents) do\n        corner.edges[parent:entindex()] = parent\n        parent.edges = parent.edges or {}\n        parent.edges[corner:entindex()] = corner\n      end\n    end\n  end\nend\n\nfunction PathGraph:DrawPaths(pathCorner, duration, color)\n  duration = duration or 10\n  color = color or Vector(255,255,255)\n  if pathCorner ~= nil then\n    if pathCorner:GetClassname() ~= \"path_corner\" or pathCorner.edges == nil then\n      print(\"[PathGraph] An invalid path_corner was passed to PathGraph:DrawPaths.\")\n      return\n    end\n\n    local seen = {}\n    local toDo = {pathCorner}\n\n    repeat \n      local corner = table.remove(toDo)\n      local edges = corner.edges\n      DebugDrawCircle(corner:GetAbsOrigin(), color, 50, 20, true, duration)\n      seen[corner:entindex()] = corner\n\n      for index,edge in pairs(edges) do\n        if seen[index] == nil then\n          DebugDrawLine_vCol(corner:GetAbsOrigin(), edge:GetAbsOrigin(), color, true, duration)\n          table.insert(toDo, edge)\n        end\n      end\n    until (#toDo == 0)\n  else\n    local corners = Entities:FindAllByClassname('path_corner')\n    local points = {} \n    for _,corner in ipairs(corners) do\n      points[corner:entindex()] = corner\n    end\n\n    repeat \n      local seen = {}\n      local k,v = next(points)\n      local toDo = {v}\n\n      repeat \n        local corner = table.remove(toDo)\n        points[corner:entindex()] = nil\n        local edges = corner.edges\n        DebugDrawCircle(corner:GetAbsOrigin(), color, 50, 20, true, duration)\n        seen[corner:entindex()] = corner\n\n        for index,edge in pairs(edges) do\n          if seen[index] == nil then\n            DebugDrawLine_vCol(corner:GetAbsOrigin(), edge:GetAbsOrigin(), color, true, duration)\n            table.insert(toDo, edge)\n          end\n        end\n      until (#toDo == 0)\n    until (TableCount(points) == 0)\n  end\nend\n\n--PathGraph:Initialize()\n\nGameRules.PathGraph = PathGraph"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/physics.lua",
    "content": "PHYSICS_VERSION = \"1.01\"\n\nPHYSICS_NAV_NOTHING = 0\nPHYSICS_NAV_HALT = 1\nPHYSICS_NAV_SLIDE = 2\nPHYSICS_NAV_BOUNCE = 3\nPHYSICS_NAV_GROUND = 4\n\nPHYSICS_GROUND_NOTHING = 0\nPHYSICS_GROUND_ABOVE = 1\nPHYSICS_GROUND_LOCK = 2\n\nCOLLIDER_SPHERE = 0\nCOLLIDER_BOX = 1\nCOLLIDER_AABOX = 2\n\nPHYSICS_THINK = 0.01\n\nif Physics == nil then\n  print ( '[PHYSICS] creating Physics' )\n  Physics = {}\n  Physics.__index = Physics\nend\n\nfunction IsPhysicsUnit(unit)\n  return unit.GetPhysicsVelocity ~= nil\nend\n\nfunction Physics:new( o )\n  o = o or {}\n  setmetatable( o, Physics )\n  return o\nend\n\nColliderProfiles = {}\n\nfunction ColliderProfiles:new(o)\n  o = o or {}\n  setmetatable(o, self)\n  self.__index = self\n  return o\nend\n\nfunction Physics:start()\n  Physics = self\n\n  if self.thinkEnt == nil then\n    self.timers = {}\n    self.Colliders = {}\n    self.ColliderProfiles = {}\n    self.anggrid = nil\n    self.offsetX = nil\n    self.offsetY = nil\n    self.colliderSkipOffset = 0\n    self.frameCount = 0\n\n    --self.thinkEnt = Entities:CreateByClassname(\"info_target\") -- Entities:FindByClassname(nil, 'CWorld')\n    self.thinkEnt = SpawnEntityFromTableSynchronous(\"info_target\", {targetname=\"physics_lua_thinker\"})\n    --wspawn:SetContextThink(\"PhysicsThink\", Dynamic_Wrap( Physics, 'Think' ), PHYSICS_THINK )\n    self.thinkEnt:SetThink(\"Think\", self, \"physics\", PHYSICS_THINK)\n\n    Convars:RegisterCommand( \"phystest\", Dynamic_Wrap(Physics, 'PhysicsTestCommand'), \"Test different Physics library commands\", FCVAR_CHEAT )\n  end\nend\n\nfunction Physics:CreateColliderProfile(name, profile)\n  self.ColliderProfiles[name] = ColliderProfiles:new(profile)\n  profile.name = name\n  return self.ColliderProfiles[name]\nend\n\nfunction Physics:ColliderFromProfile(name, collider)\n  return self.ColliderProfiles[name]:new(collider)\nend\n\nfunction Physics:AddCollider(name, collider)\n  if type(name) == \"table\" then\n    collider = name\n    name = DoUniqueString(\"collider\")\n  end\n\n  collider.skipOffset = self.colliderSkipOffset\n  self.colliderSkipOffset = self.colliderSkipOffset + 1\n\n  collider.name = name\n  self.Colliders[name] = collider\n  return collider\nend\n\nfunction Physics:RemoveCollider(name)\n  if type(name) == \"table\" then\n    name = name.name\n  end\n\n  local collider = self.Colliders[name]\n  if collider == nil then\n    return\n  end\n  if collider.unit ~= nil and collider.unit.oColliders[collider.name] ~= nil then\n    collider.unit.oColliders[collider.name] = nil\n  end\n\n\n  self.Colliders[name] = nil\nend\n\nfunction Physics:Think()\n  if GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then\n    return\n  end\n\n  -- Track game time, since the dt passed in to think is actually wall-clock time not simulation time.\n  local now = GameRules:GetGameTime()\n  --print(\"now: \" .. now)\n  if Physics.t0 == nil then\n    Physics.t0 = now\n  end\n  local dt = now - Physics.t0\n  Physics.t0 = now\n\n  self.frameCount = self.frameCount + 1\n\n  -- Process timers\n  for k,v in pairs(Physics.timers) do\n    -- Run the callback\n    local status, nextCall = pcall(v.callback, Physics, v)\n\n    -- Make sure it worked\n    if status then\n      -- Check if it needs to loop\n      if nextCall then\n        -- Change it's end time\n        v.endTime = nextCall\n      else\n        Physics.timers[k] = nil\n      end\n\n      -- Update timer data\n      --self:UpdateTimerData()\n    else\n      -- Nope, handle the error\n      Physics.timers[k] = nil\n      print('[PHYSICS] Timer error:' .. nextCall)\n    end\n  end\n\n  if dt > 0 then\n    for name,collider in pairs(Physics.Colliders) do\n      if collider.skipFrames == 0 or ((self.frameCount + collider.skipOffset) % (collider.skipFrames + 1) == 0) then\n        if collider.type == COLLIDER_SPHERE then\n          local rad2 = collider.radius * collider.radius\n          local unit = collider.unit\n          if IsValidEntity(unit) then\n            if collider.draw then\n              local alpha = 0\n              local color = Vector(200,0,0)\n              if type(collider.draw) == \"table\" then\n                alpha = collider.draw.alpha or alpha\n                color = collider.draw.color or color\n              end\n\n              DebugDrawCircle(unit:GetAbsOrigin(), color, alpha, collider.radius, true, .01)\n            end\n\n            local ents = nil\n            if collider.filter then\n              if type(collider.filter) == \"table\" then\n                ents = collider.filter\n              else\n                local status = nil\n                status, ents = pcall(collider.filter, collider)\n                if not status then\n                  print('[PHYSICS] Collision Filter Failure!: ' .. ents)\n                end\n              end\n            else\n              ents = Entities:FindAllInSphere(unit:GetAbsOrigin(), collider.radius + 200)\n            end\n\n            for k,v in pairs(ents) do\n              if IsValidEntity(v) and IsValidEntity(unit) and v ~= unit and rad2 >= VectorDistanceSq(unit:GetAbsOrigin(), v:GetAbsOrigin()) then\n                local status, test = pcall(collider.test, collider, unit, v)\n\n                if not status then\n                  print('[PHYSICS] Collision Test Failure!: ' .. test)\n                elseif test then\n                  if collider.preaction then\n                    local status, action = pcall(collider.preaction, collider, unit, v)\n                    if not status then\n                      print('[PHYSICS] Collision preaction Failure!: ' .. action)\n                    end\n                  end\n                  local status, action = pcall(collider.action, collider, unit, v)\n                  if not status then\n                    print('[PHYSICS] Collision action Failure!: ' .. action)\n                  end\n                  if collider.postaction then\n                    local status, action = pcall(collider.postaction, collider, unit, v)\n                    if not status then\n                      print('[PHYSICS] Collision postaction Failure!: ' .. action)\n                    end\n                  end\n\n\n                  --unit.nNextCollide = now + collider.recollideTime\n                  --v.nNextCollide = now + v.collider.recollideTime\n                end\n              end\n            end\n          else\n            Physics:RemoveCollider(name)\n          end\n        elseif collider.type == COLLIDER_BOX then\n          -- box collider\n          local box = collider.box\n          if box.recalculate or box.ad2 == nil then\n            collider.box = Physics:PrecalculateBox(box)\n          end\n\n          if collider.draw then\n            local alpha = 5\n            local color = Vector(200,0,0)\n            if type(collider.draw) == \"table\" then\n              alpha = collider.draw.alpha or alpha\n              color = collider.draw.color or color\n            end\n\n            if not collider.box.drawAngle then\n               Physics:PrecalculateBoxDraw(collider.box)\n            end\n\n            DebugDrawBoxDirection(box.drawMins, Vector(0,0,0), box.drawMaxs - box.drawMins, RotatePosition(Vector(0,0,0), QAngle(0,box.drawAngle,0), Vector(1,0,0)), color, alpha, .01)\n          end\n\n          local ents = nil\n          if collider.filter then\n            if type(collider.filter) == \"table\" then\n              ents = collider.filter\n            else\n              local status = nil\n              status, ents = pcall(collider.filter, collider)\n              if not status then\n                print('[PHYSICS] Collision Filter Failure!: ' .. ents)\n              end\n            end\n          else\n            ents = Entities:FindAllInSphere(box.center, box.radius + 200)\n          end\n\n          for k,v in pairs(ents) do\n            if IsValidEntity(v) then\n              local pos = v:GetAbsOrigin()\n              if (pos.z >= box.zMin and pos.z <= box.zMax) then\n                pos.z = 0\n                local am = pos - box.a\n                local amDotAb = am:Dot(box.ab)\n                if amDotAb > 0 and amDotAb < box.ab2 then\n                  local amDotAd = am:Dot(box.ad)\n                  if amDotAd > 0 and amDotAd < box.ad2 then\n                    --inside\n                    local status, test = pcall(collider.test, collider, v)\n\n                    if not status then\n                      print('[PHYSICS] Collision Test Failure!: ' .. test)\n                    elseif test then\n                      if collider.preaction then\n                        local status, action = pcall(collider.preaction, collider, box, v)\n                        if not status then\n                          print('[PHYSICS] Collision preaction Failure!: ' .. action)\n                        end\n                      end\n                      local status, action = pcall(collider.action, collider, box, v)\n                      if not status then\n                        print('[PHYSICS] Collision action Failure!: ' .. action)\n                      end\n                      if collider.postaction then\n                        local status, action = pcall(collider.postaction, collider, box, v)\n                        if not status then\n                          print('[PHYSICS] Collision postaction Failure!: ' .. action)\n                        end\n                      end\n                    end\n                  end\n                end\n              end\n            end\n          end\n        elseif collider.type == COLLIDER_AABOX then\n          -- box collider\n          local box = collider.box\n          if box.recalculate or box.xMin == nil then\n            collider.box = Physics:PrecalculateAABox(box)\n          end\n\n          if collider.draw then\n            local alpha = 5\n            local color = Vector(200,0,0)\n            if type(collider.draw) == \"table\" then\n              alpha = collider.draw.alpha or alpha\n              color = collider.draw.color or color\n            end\n\n            DebugDrawBox(Vector(0,0,0), Vector(box.xMin, box.yMin, box.zMin), Vector(box.xMax, box.yMax, box.zMax), color.x, color.y, color.z, alpha, .01)\n          end\n\n          local ents = nil\n          if collider.filter then\n            if type(collider.filter) == \"table\" then\n              ents = collider.filter\n            else\n              local status = nil\n              status, ents = pcall(collider.filter, collider)\n              if not status then\n                print('[PHYSICS] Collision Filter Failure!: ' .. ents)\n              end\n            end\n          else\n            ents = Entities:FindAllInSphere(box.center, box.radius + 200)\n          end\n\n          for k,v in pairs(ents) do\n            if IsValidEntity(v) then\n              local pos = v:GetAbsOrigin()\n              if (pos.x >= box.xMin and pos.x <= box.xMax and\n                  pos.y >= box.yMin and pos.y <= box.yMax and\n                  pos.z >= box.zMin and pos.z <= box.zMax) then\n                \n                --inside\n                local status, test = pcall(collider.test, collider, v)\n\n                if not status then\n                  print('[PHYSICS] Collision Test Failure!: ' .. test)\n                elseif test then\n                  if collider.preaction then\n                    local status, action = pcall(collider.preaction, collider, box, v)\n                    if not status then\n                      print('[PHYSICS] Collision preaction Failure!: ' .. action)\n                    end\n                  end\n                  local status, action = pcall(collider.action, collider, box, v)\n                  if not status then\n                    print('[PHYSICS] Collision action Failure!: ' .. action)\n                  end\n                  if collider.postaction then\n                    local status, action = pcall(collider.postaction, collider, box, v)\n                    if not status then\n                      print('[PHYSICS] Collision postaction Failure!: ' .. action)\n                    end\n                  end\n                end\n              end\n            end\n          end\n        end\n      end\n    end\n  end\n\n  return PHYSICS_THINK\nend\n\nfunction Physics:CreateTimer(name, args)\n  if not args.endTime or not args.callback then\n    print(\"Invalid timer created: \"..name)\n    return\n  end\n\n  Physics.timers[name] = args\nend\n\nfunction Physics:RemoveTimer(name)\n  Physics.timers[name] = nil\nend\n\nfunction Physics:RemoveTimers(killAll)\n  local timers = {}\n\n  if not killAll then\n    for k,v in pairs(Physics.timers) do\n      if v.persist then\n        timers[k] = v\n      end\n    end\n  end\n\n  Physics.timers = timers\nend\n\n--[[\n  sequence:\n     {\"type\",  Physics_LINEAR, Physics_CURVED, Physics_SPLIT\n      LINEAR\n      \"distance\" or \"time\" or \"to\"\n      \"toward\" or \"angle\" or \"to\"\n      \"from\" or nothing\n      \"speed\" or nothing\n      CURVED\n      \"toward\" or \"angle\"\n        \"angleTick\"\n        \"tick\"\n        \"ticks\"\n      \"around\"\n      \"speed\" or nothing\n      SPLIT\n      \"TBD\"\n]]\n\nfunction Physics:GenerateAngleGrid()\n  local anggrid = {}\n  local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0)\n  local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0)\n\n  print(worldMin)\n  print(worldMax)\n\n  local boundX1 = GridNav:WorldToGridPosX(worldMin.x)\n  local boundX2 = GridNav:WorldToGridPosX(worldMax.x)\n  local boundY1 = GridNav:WorldToGridPosX(worldMin.y)\n  local boundY2 = GridNav:WorldToGridPosX(worldMax.y)\n  local offsetX = boundX1 * -1 + 1\n  local offsetY = boundY1 * -1 + 1\n\n  print(boundX1 .. \" -- \" .. boundX2)\n  print(boundY1 .. \" -- \" .. boundY2)\n  print(offsetX)\n  print(offsetY)\n\n  local vecs = {\n    {vec = Vector(0,1,0):Normalized(), x=0,y=1},-- N\n    {vec = Vector(1,1,0):Normalized(), x=1,y=1}, -- NE\n    {vec = Vector(1,0,0):Normalized(), x=1,y=0}, -- E\n    {vec = Vector(1,-1,0):Normalized(), x=1,y=-1}, -- SE\n    {vec = Vector(0,-1,0):Normalized(), x=0,y=-1}, -- S\n    {vec = Vector(-1,-1,0):Normalized(), x=-1,y=-1}, -- SW\n    {vec = Vector(-1,0,0):Normalized(), x=-1,y=0}, -- W\n    {vec = Vector(-1,1,0):Normalized(), x=-1,y=1} -- NW\n  }\n\n  print('----------------------')\n\n  anggrid[1] = {}\n  for j=boundY1,boundY2 do\n    anggrid[1][j + offsetY] = -1\n  end\n  anggrid[1][boundY2 + offsetY] = -1\n\n  for i=boundX1+1,boundX2-1 do\n    anggrid[i+offsetX] = {}\n    anggrid[i+offsetX][1] = -1\n    for j=(boundY1+1),boundY2-1 do\n      local position = Vector(GridNav:GridPosToWorldCenterX(i), GridNav:GridPosToWorldCenterY(j), 0)\n      local blocked = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) --or (pseudoGNV[i] ~= nil and pseudoGNV[i][j])\n      local seg = 0\n      local sum = Vector(0,0,0)\n      local count = 0\n      local inseg = false\n\n      if blocked then\n        for k=1,#vecs do\n          local vec = vecs[k].vec\n          local xoff = vecs[k].x\n          local yoff = vecs[k].y\n          local pos = Vector(GridNav:GridPosToWorldCenterX(i+xoff), GridNav:GridPosToWorldCenterY(j+yoff), 0)\n          local blo = not GridNav:IsTraversable(pos) or GridNav:IsBlocked(pos) --or (pseudoGNV[i+xoff] ~= nil and pseudoGNV[i+xoff][j+yoff])\n\n          if not blo then\n            count = count + 1\n            inseg = true\n            sum = sum + vec\n          else\n            if inseg then\n              inseg = false\n              seg = seg + 1\n            end\n          end\n        end\n\n        if seg > 1 then\n          print ('OVERSEG x=' .. i .. ' y=' .. j)\n          anggrid[i+offsetX][j+offsetY] = -1\n        elseif count > 5 then\n          print ('PROTRUDE x=' .. i .. ' y=' .. j)\n          anggrid[i+offsetX][j+offsetY] = -1\n        elseif count == 0 then\n          anggrid[i+offsetX][j+offsetY] = -1\n        else\n          local sum = sum:Normalized()\n          local angle = math.floor((math.acos(Vector(1,0,0):Dot(sum:Normalized()))/ math.pi * 180))\n          if sum.y < 0 then\n            angle = -1 * angle\n          end\n          anggrid[i+offsetX][j+offsetY] = angle\n        end\n      else\n        anggrid[i+offsetX][j+offsetY] = -1\n      end\n    end\n    anggrid[i+offsetX][boundY2+offsetY] = -1\n  end\n\n  anggrid[boundX2+offsetX] = {}\n  for j=boundY1,boundY2 do\n    anggrid[boundX2+offsetX][j+offsetY] = -1\n  end\n  anggrid[boundX2+offsetX][boundY2+offsetY] = -1\n\n  print('--------------')\n  print(#anggrid)\n  print(#anggrid[1])\n  print(#anggrid[2])\n  print(#anggrid[3])\n\n  if MAP_DATA  then\n    MAP_DATA.anggrid = anggrid\n  end\n  Physics:AngleGrid(anggrid)\nend\n\nfunction Physics:AngleGrid( anggrid, angoffsets )\n  self.anggrid = anggrid\n  print('[PHYSICS] Angle Grid Set')\n  local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0)\n  local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0)\n  local boundX1 = GridNav:WorldToGridPosX(worldMin.x)\n  local boundX2 = GridNav:WorldToGridPosX(worldMax.x)\n  local boundY1 = GridNav:WorldToGridPosX(worldMin.y)\n  local boundY2 = GridNav:WorldToGridPosX(worldMax.y)\n  local offsetX = boundX1 * -1 + 1\n  local offsetY = boundY1 * -1 + 1\n  self.offsetX = offsetX\n  self.offsetY = offsetY\n\n  if angoffsets ~= nil then\n    self.offsetX = math.abs(angoffsets.x) + 1\n    self.offsetY = math.abs(angoffsets.y) + 1\n  end\nend\n\nfunction Physics:CalcSlope(pos, unit, dir)\n\n  dir = Vector(dir.x, dir.y, 0):Normalized()\n  local f = GetGroundPosition(pos + dir, unit)\n  local b = GetGroundPosition(pos - dir, unit)\n\n  return (f - b):Normalized() \nend\n\nfunction Physics:CalcNormal(pos, unit, scale)\n  scale = scale or 1\n  local nscale = -1 * scale\n  local diag = 0.70710678118 * scale\n  local ndiag = -1 * diag\n\n  local zl =  GetGroundPosition(pos + Vector(nscale,0,0), unit).z\n  local zr =  GetGroundPosition(pos + Vector(scale,0,0), unit).z\n  local zu =  GetGroundPosition(pos + Vector(0,scale,0), unit).z\n  local zd =  GetGroundPosition(pos + Vector(0,nscale,0), unit).z\n\n  --[[local zld = GetGroundPosition(pos + Vector(ndiag,ndiag,0), unit).z\n  local zlu = GetGroundPosition(pos + Vector(ndiag,diag,0), unit).z\n  local zrd = GetGroundPosition(pos + Vector(diag,ndiag,0), unit).z\n  local zru = GetGroundPosition(pos + Vector(diag,diag,0), unit).z]]\n\n  --print (Vector(zld - zlu, zrd - zru, 2*scale))\n  --print (Vector(zl - zr, zd - zu, 2*scale))\n  --return (RotatePosition(Vector(0,0,0), QAngle(0,45,0), Vector(zld - zlu, zrd - zru, 2*scale)) + Vector(zl - zr, zd - zu, 2*scale)):Normalized()\n  return Vector(zl - zr, zd - zu, 2*scale):Normalized()\nend\n\nfunction Physics:Unit(unit)\n  if IsPhysicsUnit(unit) then\n    if Convars:GetBool(\"developer\") then\n      unit:StopPhysicsSimulation()\n    else\n      return\n    end\n  end\n  function unit:StopPhysicsSimulation ()\n    Physics.timers[unit.PhysicsTimerName] = nil\n    unit.bStarted = false\n  end\n  function unit:StartPhysicsSimulation ()\n    Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n    unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n    unit.PhysicsLastPosition = unit:GetAbsOrigin()\n    unit.PhysicsLastTime = GameRules:GetGameTime()\n    unit.vLastVelocity = Vector(0,0,0)\n    unit.vSlideVelocity = Vector(0,0,0)\n    unit.bStarted = true\n  end\n  \n  function unit:SetPhysicsVelocity (velocity)\n    unit.vVelocity = velocity / 30\n    if unit.nVelocityMax > 0 and unit.vVelocity:Length() > unit.nVelocityMax then\n      unit.vVelocity = unit.vVelocity:Normalized() * unit.nVelocityMax\n    end\n    \n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n  function unit:AddPhysicsVelocity (velocity)\n    unit.vVelocity = unit.vVelocity + velocity / 30\n    if unit.nVelocityMax > 0 and unit.vVelocity:Length() > unit.nVelocityMax then\n      unit.vVelocity = unit.vVelocity:Normalized() * unit.nVelocityMax\n    end\n    \n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n  \n  function unit:SetPhysicsVelocityMax (velocityMax)\n    unit.nVelocityMax = velocityMax / 30\n  end\n  function unit:GetPhysicsVelocityMax ()\n    return unit.vVelocity * 30\n  end\n  \n  function unit:SetPhysicsAcceleration (acceleration)\n    unit.vAcceleration = acceleration / 900\n    \n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n  function unit:AddPhysicsAcceleration (acceleration)\n    unit.vAcceleration = unit.vAcceleration + acceleration / 900\n    \n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n  \n  function unit:SetPhysicsFriction (percFriction, flatFriction)\n    unit.fFriction = percFriction\n    unit.fFlatFriction = (flatFriction or (unit.fFlatFriction*30))/30\n  end\n  \n  function unit:GetPhysicsVelocity ()\n    return unit.vVelocity  * 30\n  end\n  function unit:GetPhysicsAcceleration ()\n    return unit.vAcceleration * 900\n  end\n  function unit:GetPhysicsFriction ()\n    return unit.fFriction, unit.fFlatFriction*30\n  end\n  \n  function unit:FollowNavMesh (follow)\n    unit.bFollowNavMesh = follow\n  end\n  function unit:IsFollowNavMesh ()\n    return unit.bFollowNavMesh\n  end\n  \n  function unit:SetGroundBehavior (ground)\n    unit.nLockToGround = ground\n  end\n  function unit:GetGroundBehavior ()\n    return unit.nLockToGround\n  end\n  \n  function unit:SetSlideMultiplier (slideMultiplier)\n    unit.fSlideMultiplier = slideMultiplier\n  end\n  function unit:GetSlideMultiplier ()\n    return unit.fSlideMultiplier\n  end\n  \n  function unit:Slide (slide)\n    unit.bSlide = slide\n    \n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n  function unit:IsSlide ()\n    return unit.bSlide\n  end\n  \n  function unit:PreventDI (prevent)\n    unit.bPreventDI = prevent\n    if not prevent and unit:HasModifier(\"modifier_rooted\") then\n      unit:RemoveModifierByName(\"modifier_rooted\")\n    end\n  end\n  function unit:IsPreventDI ()\n    return unit.bPreventDI\n  end\n  \n  function unit:SetNavCollisionType (collisionType)\n    unit.nNavCollision = collisionType\n  end\n  function unit:GetNavCollisionType ()\n    return unit.nNavCollision\n  end\n  \n  function unit:OnPhysicsFrame(fun)\n    unit.PhysicsFrameCallback = fun\n  end\n  \n  function unit:SetVelocityClamp (clamp)\n    unit.fVelocityClamp = clamp / 30\n  end\n  \n  function unit:GetVelocityClamp ()\n    return unit.fVelocityClamp * 30\n  end\n  \n  function unit:Hibernate (hibernate)\n    unit.bHibernate = hibernate\n  end\n  \n  function unit:IsHibernate ()\n    return unit.bHibernate\n  end\n  \n  function unit:DoHibernate ()\n    Physics.timers[unit.PhysicsTimerName] = nil\n    unit.bHibernating = true\n  end\n  \n  function unit:OnHibernate(fun)\n    unit.PhysicsHibernateCallback = fun\n  end\n\n  function unit:OnPreBounce(fun)\n    unit.PhysicsOnPreBounce = fun\n  end\n\n  function unit:OnBounce(fun)\n    unit.PhysicsOnBounce = fun\n  end\n\n  function unit:OnPreSlide(fun)\n    unit.PhysicsOnPreSlide = fun\n  end\n\n  function unit:OnSlide(fun)\n    unit.PhysicsOnSlide = fun\n  end\n\n  function unit:AdaptiveNavGridLookahead (adaptive)\n    unit.bAdaptiveNavGridLookahead = adaptive\n  end\n  \n  function unit:IsAdaptiveNavGridLookahead ()\n    return unit.bAdaptiveNavGridLookahead\n  end\n  \n  function unit:SetNavGridLookahead (lookahead)\n    unit.nNavGridLookahead = lookahead\n  end\n  \n  function unit:GetNavGridLookahead ()\n    return unit.nNavGridLookahead\n  end\n  \n  function unit:SkipSlide (frames)\n    unit.nSkipSlide = frames or 1\n  end\n  \n  function unit:SetRebounceFrames ( rebounce )\n    unit.nMaxRebounce = rebounce\n    unit.nRebounceFrames = 0\n  end\n  \n  function unit:GetRebounceFrames ()\n    unit.nRebounceFrames = 0\n    return unit.nMaxRebounce\n  end\n  \n  function unit:GetLastGoodPosition ()\n    return unit.vLastGoodPosition\n  end\n  \n  function unit:SetStuckTimeout (timeout)\n    unit.nStuckTimeout = timeout\n    unit.nStuckFrames = 0\n  end\n  function unit:GetStuckTimeout ()\n    unit.nStuckFrames = 0\n    return unit.nStuckTimeout\n  end\n  \n  function unit:SetAutoUnstuck (unstuck)\n    unit.bAutoUnstuck = unstuck\n  end\n  function unit:GetAutoUnstuck ()\n    return unit.bAutoUnstuck\n  end\n\n  function unit:SetBounceMultiplier (bounce)\n    unit.fBounceMultiplier = bounce\n  end\n  function unit:GetBounceMultiplier ()\n    return unit.fBounceMultiplier\n  end\n\n  function unit:GetTotalVelocity()\n    if unit.bStarted and not unit.bHibernating then\n      return unit.vTotalVelocity\n    else\n      return Vector(0,0,0)\n    end\n  end\n\n  function unit:GetColliders()\n    return unit.oColliders\n  end\n\n  function unit:RemoveCollider(name)\n    if name == nil then\n      local i,v = next(unit.oColliders,  nil)\n      if i == nil then\n        return\n      end\n      name = unit.oColliders[i].name\n    elseif type(name) == \"table\" then\n      name = name.name\n    end\n    Physics:RemoveCollider(name)\n  end\n\n  function unit:AddCollider(name, collider)\n    local coll = Physics:AddCollider(name, collider)\n    coll.unit = unit\n    unit.oColliders[coll.name] = coll\n    return coll\n  end\n\n  function unit:AddColliderFromProfile(name, profile, collider)\n    if profile == nil then\n      profile = name\n      name = DoUniqueString(\"collider\")\n    elseif type(profile) == \"table\" then\n      collider = profile\n      profile = name\n      name = DoUniqueString(\"collider\")\n    end\n    local coll = Physics:AddCollider(name, Physics:ColliderFromProfile(profile, collider))\n    coll.unit = unit\n    unit.oColliders[coll.name] = coll\n    return coll\n  end\n\n  function unit:GetMass()\n    return unit.fMass\n  end\n\n  function unit:SetMass(mass)\n    unit.fMass = mass\n  end\n\n  function unit:GetNavGroundAngle()\n    return math.acos(unit.fNavGroundAngle) * 180 / math.pi \n  end\n\n  function unit:SetNavGroundAngle(angle)\n    unit.fNavGroundAngle = math.cos(angle * math.pi / 180)\n  end\n\n  function unit:CutTrees(cut)\n    unit.bCutTrees = cut\n  end\n\n  function unit:IsCutTrees()\n    return unit.bCutTrees\n  end\n\n  function unit:IsInSimulation()\n    return unit.bStarted\n  end\n\n  function unit:SetBoundOverride(bound)\n    unit.fBoundOverride = bound\n  end\n\n  function unit:GetBoundOverride()\n    return unit.fBoundOverride\n  end\n\n  function unit:ClearStaticVelocity()\n    unit.staticForces = {}\n    unit.staticSum = Vector(0,0,0)\n  end\n\n  function unit:SetStaticVelocity(name, velocity)\n    if unit.staticForces[name] ~= nil then\n      unit.staticSum = unit.staticSum - unit.staticForces[name]\n    end\n    unit.staticForces[name] = velocity / 30\n    unit.staticSum = unit.staticSum + unit.staticForces[name]\n\n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n\n  function unit:GetStaticVelocity(name)\n    if name == nil then\n      return unit.staticSum\n    else\n      return unit.staticForces[name]\n    end\n  end\n\n  function unit:AddStaticVelocity(name, velocity)\n    if unit.staticForces[name] == nil then\n      unit.staticForces[name] = velocity / 30\n      unit.staticSum = unit.staticSum + unit.staticForces[name]\n    else\n      unit.staticSum = unit.staticSum - unit.staticForces[name]\n      unit.staticForces[name] = unit.staticForces[name] + velocity / 30\n      unit.staticSum = unit.staticSum + unit.staticForces[name]\n    end\n\n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n\n  function unit:SetPhysicsFlatFriction(flatFriction)\n    unit.fFlatFriction = flatFriction / 30\n  end\n\n  function unit:GetPhysicsFlatFriction()\n    return unit.fFlatFriction\n  end\n\n\n  unit.lastGoodGround = Vector(0,0,0)\n  unit.PhysicsTimerName = DoUniqueString('phys')\n  Physics:CreateTimer(unit.PhysicsTimerName, {\n    endTime = GameRules:GetGameTime(),\n    useGameTime = true,\n    callback = function(reflex, args)\n      local prevTime = unit.PhysicsLastTime\n      if not IsValidEntity(unit) then\n        return\n      end\n      local curTime = GameRules:GetGameTime()\n      local prevPosition = unit.PhysicsLastPosition\n      local position = unit:GetAbsOrigin()\n      local slideVelocity = Vector(0,0,0)\n      local lastVelocity = unit.vLastVelocity\n      unit.vTotalVelocity = (position - prevPosition) / (curTime - prevTime)\n\n      unit.PhysicsLastTime = curTime\n      unit.PhysicsLastPosition = position\n      \n      if unit.bPreventDI and not unit:HasModifier(\"modifier_rooted\") then\n        unit:AddNewModifier(unit, nil, \"modifier_rooted\", {})\n      end\n      \n      if unit.bSlide and unit.nSkipSlide <= 0 then\n        slideVelocity = ((position - prevPosition) - lastVelocity + unit.vSlideVelocity) * unit.fSlideMultiplier\n      else\n        --print(unit.nSkipSlide)\n        unit.vSlideVelocity = Vector(0,0,0)\n      end\n      \n      unit.nSkipSlide = unit.nSkipSlide - 1\n      \n      -- Adjust velocity\n      local newVelocity = unit.vVelocity + unit.vAcceleration + (-1 * unit.fFriction * unit.vVelocity) + slideVelocity\n      local newVelLength\n      if unit.fFlatFriction > 0 then\n        newVelLength = newVelocity:Length()\n        if newVelLength ~= 0 then\n          newVelocity = newVelocity * (math.max(0, newVelLength - unit.fFlatFriction) / newVelLength)\n        end\n      end\n\n      local staticSum = unit.staticSum\n      newVelocity = newVelocity + staticSum\n      newVelLength = newVelocity:Length()\n      local staticSumLength = staticSum:Length()\n\n\n      local vel = unit.vVelocity + staticSum\n      local staticSumz = staticSum.z\n      local newVelz = newVelocity.z\n      local dontSet = false\n      local dontSetGround = false\n      --print('vel: ' .. tostring(unit.vVelocity:Length()) .. ' -- svel: ' .. tostring(slideVelocity:Length()) .. \" -- nvel: \" .. tostring(newVelocity:Length()))\n      \n      -- Calculate new position\n      local newPos = position + vel\n      \n      \n      \n      local blockedPos = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position)\n      if not blockedPos then\n        unit.vLastGoodPosition = position\n        unit.nStuckFrames = 0\n      else\n        unit.nStuckFrames = unit.nStuckFrames + 1\n      end\n\n      \n      if vel ~= Vector(0,0,0) or slideVelocity ~= Vector(0,0,0) or unit.nNavCollision == PHYSICS_NAV_GROUND then\n        if unit.nNavCollision == PHYSICS_NAV_GROUND then\n          local newGround = GetGroundPosition(newPos, unit)\n          local ground = GetGroundPosition(position, unit)\n\n          --if unit.vVelocity.x ~= 0 and unit.vVelocity.y ~= 0 then\n          if newPos.z - newGround.z < 0 or position.z - ground.z < 0 then -- and newPos.z ~= position.z then\n            local velLen = Vector(vel.x,vel.y,0):Length()\n            local diff = vel:Normalized()\n            local subpos = position\n            local minnormal = Vector(0,0,1)\n            --local avgnormal = Vector(0,0,0)\n            for i=1,math.ceil(velLen)+1 do\n              local normal = Physics:CalcNormal(subpos, unit, 15)\n              --local subground = GetGroundPosition(subpos, unit)\n              --print(i .. ' -- ' .. tostring(normal))\n              if normal.z < minnormal.z then\n                minnormal = normal\n                --subground = subpos\n              end\n              --DebugDrawLine_vCol(subground, subground + normal * 100, Vector(100,0,0), true, 1.1)\n              subpos = subpos + diff\n              --avgnormal = avgnormal + normal\n            end\n\n            --DebugDrawLine_vCol(position, position + Physics:CalcSlope(position, unit, vel) * 100, Vector(0,0,200), true, 1.1)\n\n            --avgnormal = avgnormal / math.ceil(velLen)+1\n            --avgnormal = Vector(avgnormal.x, avgnormal.y, minnormal.z):Normalized()\n            --DebugDrawLine_vCol(position, position + minnormal * 200, Vector(255,0,0), true, 1.1)\n\n            if minnormal.z < unit.fNavGroundAngle then\n              --steep\n              local xynorm = Vector(minnormal.x, minnormal.y, 0)\n              local xynormlen = xynorm:Length()\n              if xynorm:Length() > .98 then\n                minnormal = xynorm / xynormlen                \n                --avgnormal = Vector(avgnormal.x, avgnormal.y, 0):Normalized()\n              end\n              --print('-------------')\n              --print(minnormal)\n\n              --DebugDrawLine_vCol(position, position + Physics:CalcSlope(position, unit, minnormal) * 200, Vector(0,200,200), true, 1)\n              --DebugDrawLine_vCol(position, position + avgnormal * 200, Vector(0,100,0), true, 1.1)\n\n              local velz = vel.z\n              --newVelocity.z = 0\n              --vel.z = 0\n\n              local dot = vel:Dot(-1 * minnormal) *1.01\n              if dot >= 0 then\n                vel = vel + dot * minnormal\n                --DebugDrawLine_vCol(position, position + vel, Vector(0,255,0), true, 1.1)\n\n                newVelocity = newVelocity + newVelocity:Dot(-1 * minnormal)*1.01 * minnormal\n                --DebugDrawLine_vCol(position, position + newVelocity, Vector(0,255,122), true, 1.1)\n                staticSum = staticSum + staticSum:Dot(-1 * minnormal)*1.01 * minnormal\n                --DebugDrawLine_vCol(position, position + staticSum, Vector(255,0,122), true, 1.1)\n\n                --DebugDrawLine_vCol(position, position + vel * 10, Vector(0,255,0), true, 1.1)\n              end\n              \n              newPos = position + vel\n              local nz = newPos.z\n              --DebugDrawCircle(newPos, Vector(0,255,0), 1, 15, true, 1.1)\n              local gnorm = GetGroundPosition(newPos + minnormal * 50, unit)\n              --DebugDrawCircle(gnorm, Vector(255,0,0), 1, 15, true, 1.1)\n              --DebugDrawCircle(unit.lastGoodGround, Vector(255,255,255), 1, 15, true, 1.1)\n              local ng = GetGroundPosition(newPos, unit)\n              if ng.z >= newPos.z and newPos.z < gnorm.z then\n                --print(tostring(newPos.z) .. ' -- ' .. tostring(gnorm.z) .. ' -- ' .. tostring(ng.z) .. ' -- ' .. tostring(unit.lastGoodGround.z))\n                if ng.z > gnorm.z then\n                  newPos.z = gnorm.z\n                else\n                  newPos.z = ng.z\n                end\n                staticSum.z = 0\n                if newPos.z > position.z and (newPos - position):Normalized().z > unit.fNavGroundAngle then --newPos.z-position.z > vel.z*1.5 then\n                  --newPos = Vector(position.x,position.y,unit.lastGoodGround.z)\n                  newPos = position + Vector(0,0,newVelocity.z)\n                  if newPos.z < unit.lastGoodGround.z then\n                    newPos.z = unit.lastGoodGround.z\n                    newVelocity.z = math.max(0, newVelocity.z)\n                  end\n\n                  --newVelocity.z = 0\n                else\n                  newVelocity.z = math.max(0, newVelocity.z)\n                end\n              end\n              --DebugDrawCircle(newPos, Vector(150,0,255), 1, 15, true, 1.1)\n              \n              unit:SetAbsOrigin(newPos)\n              dontSet = true\n              dontSetGround = true\n              ground = ng\n              --unit:SetAbsOrigin(position)\n            --elseif (ground - position):Normalized().z > unit.fNavGroundAngle then\n              --unit.lastGoodGround = ground\n            end\n          else\n            unit.lastGoodGround = ground\n          end\n\n          local bound = 1\n          if unit.fBoundOverride then\n            bound = unit.fBoundOverride\n          elseif unit.GetPaddedCollisionRadius then\n            bound = unit:GetPaddedCollisionRadius()\n          elseif unit.GetBoundingMaxs then\n            bound = math.max(unit:GetBoundingMaxs().x, unit:GetBoundingMaxs().y)\n          end\n          -- tree check\n          local connect = position-- + diff * bound\n          local treeConnect = (not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect)) and GridNav:IsNearbyTree(connect, 30, true)\n          local lookaheadNum = unit.nNavGridLookahead\n          if unit.bAdaptiveNavGridLookahead then\n            lookaheadNum = math.ceil(vel:Length() / 16)\n          end\n          local diff = vel:Normalized()\n          local tot = lookaheadNum + 1\n          local div = 1 / tot\n          local index = 1\n          while not treeConnect and index < tot do\n            connect = position + vel * (div * index) + diff * bound\n            treeConnect = (not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect)) and GridNav:IsNearbyTree(connect, 30, true)\n            if treeConnect then\n              --DebugDrawCircle(connect, Vector(0,200,0), 100, 10, true, 1)\n            end\n            index = index + 1\n          end\n\n          --print (tostring(treeConnect) .. ' -- ' .. ground.z .. ' -- ' .. newPos.z .. ' -- ' .. position.z)\n          if treeConnect and ground.z + 340 >= newPos.z and newPos.z + 2 > ground.z then\n            if position.z >= ground.z + 340 then\n              newVelocity.z = math.max(0, newVelocity.z)\n              staticSum.z = math.max(0, staticSum.z)\n              --unit:SetAbsOrigin(newPos + Vector(0,0,ground.z + 340 - newPos.z))\n              newPos = Vector(newPos.x, newPos.y, ground.z + 340)\n              --print('treetop')\n            else\n              --print('treeConnect')\n              local vec = Vector(GridNav:GridPosToWorldCenterX(GridNav:WorldToGridPosX(connect.x)), GridNav:GridPosToWorldCenterY(GridNav:WorldToGridPosY(connect.y)), ground.z)\n              --DebugDrawCircle(vec, Vector(200,200,200), 100, 10, true, .5)\n              if unit.bCutTrees then\n                local ents = Entities:FindAllByClassnameWithin(\"ent_dota_tree\", vec, 70)\n                if #ents > 0 then\n                  local tree = ents[1]\n                  tree:CutDown(unit:GetTeamNumber())\n                end\n              else\n                local off = (Vector(position.x,position.y,vec.z) - vec):Normalized()\n                local normal = nil\n                if math.abs(off.x) > math.abs(off.y) then\n                  normal = Vector(math.abs(off.x)/off.x, 0, 0)\n                  local vec2 = vec + normal * 64\n                  local treeConnect2 = (not GridNav:IsTraversable(vec2) or GridNav:IsBlocked(vec2)) and GridNav:IsNearbyTree(vec2, 30, true)\n                  if treeConnect2 then\n                    normal = Vector(0, math.abs(off.y)/off.y, 0)\n                    vec2 = vec + normal * 64\n                    treeConnect2 = (not GridNav:IsTraversable(vec2) or GridNav:IsBlocked(vec2)) and GridNav:IsNearbyTree(vec2, 30, true)\n                    if treeConnect2 then\n                      normal = (Vector(diff.x,diff.y,0) * -1):Normalized()\n                    end\n                  end\n                else\n                  normal = Vector(0, math.abs(off.y)/off.y, 0)\n                  local vec2 = vec + normal * 64\n                  local treeConnect2 = (not GridNav:IsTraversable(vec2) or GridNav:IsBlocked(vec2)) and GridNav:IsNearbyTree(vec2, 30, true)\n                  if treeConnect2 then\n                    normal = Vector(math.abs(off.x)/off.x, 0, 0)\n                    vec2 = vec + normal * 64\n                    treeConnect2 = (not GridNav:IsTraversable(vec2) or GridNav:IsBlocked(vec2)) and GridNav:IsNearbyTree(vec2, 30, true)\n                    if treeConnect2 then\n                      normal = (Vector(diff.x,diff.y,0) * -1):Normalized()\n                    end\n                  end\n                end\n\n                --DebugDrawLine_vCol(vec, vec + off * 100, Vector(0,200,0), true, 1)\n                --DebugDrawLine_vCol(vec, vec + normal * 100, Vector(200,200,200), true, 1)\n\n                --newVelocity.z = newVelz\n                local dot = vel:Dot(-1 * normal)\n                if dot >= 0 then\n                  vel = vel + dot * 1.0 * normal\n                  newVelocity = newVelocity + newVelocity:Dot(-1 * normal) * 1.0 * normal\n                  staticSum = staticSum + staticSum:Dot(-1 * normal) * 1.0 * normal\n                  local newground = GetGroundPosition(position + vel, unit)\n                  local new = position + vel\n                  if newground.z > new.z then\n                    new.z = newground.z\n                  end\n\n                  off = (Vector(new.x, new.y, vec.z) - vec):Normalized()\n                  local scalar = math.min((32+bound) / math.abs(off.x), (32+bound) / math.abs(off.y))\n                  --local scalar = math.min((32) / math.abs(off.x), (32) / math.abs(off.y))\n                  unit.nSkipSlide = 1\n                  newPos = vec + Vector(scalar*off.x, scalar*off.y, new.z - vec.z)\n                end\n                --unit:SetAbsOrigin(new)\n              end\n            end\n          end\n        elseif unit.bFollowNavMesh then\n          local diff = vel:Normalized()\n          --FindClearSpaceForUnit(unit, newPos, true)\n\n          local bound = 1\n          if unit.fBoundOverride then\n            bound = unit.fBoundOverride\n          elseif unit.GetPaddedCollisionRadius then\n            bound = unit:GetPaddedCollisionRadius() + 1\n          elseif unit.GetBoundingMaxs then\n            bound = math.max(unit:GetBoundingMaxs().x, unit:GetBoundingMaxs().y)\n          end\n          \n          local connect = position-- + diff * bound\n          local navConnect = not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect) \n          local lookaheadNum = unit.nNavGridLookahead\n          if unit.bAdaptiveNavGridLookahead then\n            lookaheadNum = math.ceil(unit.vVelocity:Length() / 32)\n          end\n          local tot = lookaheadNum + 1\n          local div = 1 / tot\n          local index = 1\n          while not navConnect and index < tot do\n            connect = position + unit.vVelocity * (div * index) + diff * bound\n            navConnect = not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect)\n            index = index + 1\n          end\n          --or not GridNav:IsTraversable(newPos + unit.vVelocity * .5) -- diff * unit.nNavGridLookahead\n            --or  or GridNav:IsBlocked(newPos + unit.vVelocity * .5)\n          if unit.nNavCollision == PHYSICS_NAV_HALT and navConnect then\n            newVelocity = Vector(0,0,0)\n            staticSum = Vector(0,0,0)\n            FindClearSpaceForUnit(unit, newPos, true)\n            dontSet = true\n            unit.nSkipSlide = 1\n          elseif unit.nNavCollision == PHYSICS_NAV_SLIDE and navConnect then\n            local navX = GridNav:WorldToGridPosX(connect.x)\n            local navY = GridNav:WorldToGridPosY(connect.y)\n            local navPos = Vector(GridNav:GridPosToWorldCenterX(navX), GridNav:GridPosToWorldCenterY(navY), 0)\n            --unit.nRebounceFrames = unit.nMaxRebounce\n            \n            local normal = nil\n            local anggrid = self.anggrid\n            local offX = self.offsetX\n            local offY = self.offsetY\n            if anggrid then\n              local angSize = #anggrid\n              local angX = navX + offX\n              local angY = navY + offY\n\n              --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY)\n              \n              local angle = anggrid[angX][angY]\n              if angle ~= -1 then\n                angle = angle\n                normal = -1 * RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0))\n                --print(angle)\n                --print(normal)\n                --print('----------')\n              end\n            end\n            \n            local dir = navPos - position\n            if normal == nil then\n              --local face = navPos - position\n              --print(\"face: \" .. tostring(face)) \n              dir.z = 0\n              dir = dir:Normalized()\n              -- Nav bounce checks\n              --local angx = (math.acos(dir.x)/ math.pi * 180)\n              --local angy = (math.acos(dir.y)/ math.pi * 180)\n              --print(tostring(dir:Length()) .. \" -- \" .. tostring(dir))\n              --print(dir:Dot(Vector(1,0,0)))\n              --print(dir:Dot(Vector(-1,0,0)))\n              --print(dir:Dot(Vector(0,1,0)))\n              --print(dir:Dot(Vector(0,-1,0)))\n              --print('---------------')\n              if dir:Dot(Vector(1,0,0)) > .707 then\n                normal = Vector(1,0,0)\n                local navPos2 = navPos + Vector(-64,0,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vel.y > 0 then\n                    normal = Vector(0,1,0)\n                    navPos2 = navPos + Vector(0,-64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(0,64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(-1,0,0)) > .707 then\n                normal = Vector(-1,0,0)\n                local navPos2 = navPos + Vector(64,0,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vel.y > 0 then\n                    normal = Vector(0,1,0)\n                    navPos2 = navPos + Vector(0,-64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(0,64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(0,1,0)) > .707 then\n                normal = Vector(0,1,0)\n                local navPos2 = navPos + Vector(0,-64,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vel.x > 0 then\n                    normal = Vector(1,0,0)\n                    navPos2 = navPos + Vector(-64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  else\n                    normal = Vector(-1,0,0)\n                    navPos2 = navPos + Vector(64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(0,-1,0)) > .707 then\n                normal = Vector(0,-1,0)\n                local navPos2 = navPos + Vector(0,64,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vel.x > 0 then\n                    normal = Vector(-1,0,0)\n                    navPos2 = navPos + Vector(-64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  end\n                end\n              end\n              --FindClearSpaceForUnit(unit, newPos, true)\n              --print(tostring(unit:GetAbsOrigin()) .. \" -- \" .. tostring(navPos))\n            end\n\n            if unit.PhysicsOnPreSlide then\n              local status, nextCall = pcall(unit.PhysicsOnPreSlide, unit, normal)\n              if not status then\n                print('[PHYSICS] Failed OnPreSlide: ' .. nextCall)\n              end\n            end\n\n            newVelocity = (-1 * newVelocity:Dot(normal) * normal) + newVelocity\n            staticSum = (-1 * staticSum:Dot(normal) * normal) + staticSum\n            local ndir = dir * -1\n            local scalar = math.min((32+bound) / math.abs(ndir.x), (32+bound) / math.abs(ndir.y))\n\n            unit.nSkipSlide = 1\n            newPos = navPos + Vector(scalar*ndir.x, scalar*ndir.y, newPos.z)\n            \n            if unit.PhysicsOnSlide then\n              local status, nextCall = pcall(unit.PhysicsOnSlide, unit, normal)\n              if not status then\n                print('[PHYSICS] Failed OnSlide: ' .. nextCall)\n              end\n            end\n          elseif unit.nRebounceFrames <= 0 and unit.nNavCollision == PHYSICS_NAV_BOUNCE and navConnect then\n            local navX = GridNav:WorldToGridPosX(connect.x)\n            local navY = GridNav:WorldToGridPosY(connect.y)\n            local navPos = Vector(GridNav:GridPosToWorldCenterX(navX), GridNav:GridPosToWorldCenterY(navY), 0)\n            unit.nRebounceFrames = unit.nMaxRebounce\n            \n            local normal = nil\n            local anggrid = self.anggrid\n            local offX = self.offsetX\n            local offY = self.offsetY\n            if anggrid then\n              local angSize = #anggrid\n              local angX = navX + offX\n              local angY = navY + offY\n\n              --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY)\n              \n              local angle = anggrid[angX][angY]\n              if angle ~= -1 then\n                angle = angle\n                normal = RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0))\n                --print(normal)\n                --print('----------')\n              end\n            end\n            \n            if normal == nil then\n              --local face = navPos - position\n              --print(\"face: \" .. tostring(face))\n              --local dir = navPos - position\n              local dir = navPos - position\n              dir.z = 0\n              dir = dir:Normalized()\n              -- Nav bounce checks\n              --local angx = (math.acos(dir.x)/ math.pi * 180)\n              --local angy = (math.acos(dir.y)/ math.pi * 180)\n              --print(tostring(dir:Length()) .. \" -- \" .. tostring(dir))\n              --print(dir:Dot(Vector(1,0,0)))\n              --print(dir:Dot(Vector(-1,0,0)))\n              --print(dir:Dot(Vector(0,1,0)))\n              --print(dir:Dot(Vector(0,-1,0)))\n              --print('---------------')\n              if dir:Dot(Vector(1,0,0)) > .707 then\n                normal = Vector(1,0,0)\n                local navPos2 = navPos + Vector(-64,0,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vel.y > 0 then\n                    normal = Vector(0,1,0)\n                    navPos2 = navPos + Vector(0,-64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(0,64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(-1,0,0)) > .707 then\n                normal = Vector(-1,0,0)\n                local navPos2 = navPos + Vector(64,0,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vel.y > 0 then\n                    normal = Vector(0,1,0)\n                    navPos2 = navPos + Vector(0,-64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(0,64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(0,1,0)) > .707 then\n                normal = Vector(0,1,0)\n                local navPos2 = navPos + Vector(0,-64,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vel.x > 0 then\n                    normal = Vector(1,0,0)\n                    navPos2 = navPos + Vector(-64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  else\n                    normal = Vector(-1,0,0)\n                    navPos2 = navPos + Vector(64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(0,-1,0)) > .707 then\n                normal = Vector(0,-1,0)\n                local navPos2 = navPos + Vector(0,64,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vel.x > 0 then\n                    normal = Vector(-1,0,0)\n                    navPos2 = navPos + Vector(-64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  end\n                end\n              end\n              --FindClearSpaceForUnit(unit, newPos, true)\n              --print(tostring(unit:GetAbsOrigin()) .. \" -- \" .. tostring(navPos))\n            end\n\n            if unit.PhysicsOnPreBounce then\n              local status, nextCall = pcall(unit.PhysicsOnPreBounce, unit, normal)\n              if not status then\n                print('[PHYSICS] Failed OnPreBounce: ' .. nextCall)\n              end\n            end\n            newVelocity = ((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * unit.fBounceMultiplier\n            staticSum = ((-2 * staticSum:Dot(normal) * normal) + staticSum) * unit.fBounceMultiplier\n            if unit.PhysicsOnBounce then\n              local status, nextCall = pcall(unit.PhysicsOnBounce, unit, normal)\n              if not status then\n                print('[PHYSICS] Failed OnBounce: ' .. nextCall)\n              end\n            end\n          end\n        end\n      end\n\n      --if newPos.z > unit:GetAbsOrigin().z then print (tostring(newPos) .. ' -- ' .. tostring(unit:GetAbsOrigin())) end\n      --if newPos == unit:GetAbsOrigin() and newPos ~= prevPosition then print (tostring(dontSet) .. ' -- ' .. tostring(newPos) .. ' -- ' .. tostring(unit:GetAbsOrigin())) end\n      newVelLength = newVelocity:Length()\n      local groundPos = GetGroundPosition(newPos, unit)\n\n      if unit.nVelocityMax > 0 and newVelLength > unit.nVelocityMax then\n        newVelocity = newVelocity:Normalized() * unit.nVelocityMax\n        staticSum = staticSum:Normalized() * unit.nVelocityMax\n      end\n\n      local xylen = newVelocity:Length2D()\n      if unit.vAcceleration.x == 0 and unit.vAcceleration.y == 0 and xylen < unit.fVelocityClamp and (unit.vAcceleration.z == 0 or groundPos.z == newPos.z) then\n        --print('clamp')\n        newVelocity = Vector(0,0,newVelocity.z)\n        staticSum = Vector(0,0,staticSum.z)\n\n        if unit.bHibernate then\n          unit:DoHibernate()\n          local ent = Entities:FindInSphere(nil, position, 35)\n          local blocked = false\n          while ent ~= nil and not blocked do\n            if ent.GetUnitName ~= nil and ent ~= unit then\n              blocked = true\n            end\n            --print(ent:GetClassname() .. \" -- \" .. ent:GetName() .. \" -- \" .. tostring(ent.IsHero))\n            ent = Entities:FindInSphere(ent, position, 35)\n          end\n          if blocked or blockedPos or GridNav:IsNearbyTree(position, 30, true) then\n            FindClearSpaceForUnit(unit, position, true)\n            unit.nSkipSlide = 1\n            --print('FCS hib')\n          end\n          if unit.PhysicsHibernateCallback ~= nil then\n            local status, nextCall = pcall(unit.PhysicsHibernateCallback, unit)\n            if not status then\n              print('[PHYSICS] Failed HibernateCallback: ' .. nextCall)\n            end\n          end\n          return\n        end\n\n        --[[if unit:HasModifier(\"modifier_rooted\") then\n          unit:RemoveModifierByName(\"modifier_rooted\")\n        end\n\n        local ent = Entities:FindInSphere(nil, position, 35)\n        local blocked = false\n        while ent ~= nil and not blocked do\n          if ent.IsHero ~= nil and ent ~= unit then\n            blocked = true\n          end\n          --print(ent:GetClassname() .. \" -- \" .. ent:GetName() .. \" -- \" .. tostring(ent.IsHero))\n          ent = Entities:FindInSphere(ent, position, 35)\n        end\n        if blocked or not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) or GridNav:IsNearbyTree(position, 30, true) then\n          FindClearSpaceForUnit(unit, position, true)\n          unit.nSkipSlide = 1\n          --print('FCS nothib lowv + blocked')\n        end ]]\n      end\n\n      if not dontSetGround then\n        if unit.nLockToGround == PHYSICS_GROUND_LOCK then\n          local groundPos = GetGroundPosition(newPos, unit)\n          newPos = groundPos\n          newVelocity.z = 0\n          staticSum.z = 0\n        elseif unit.nLockToGround == PHYSICS_GROUND_ABOVE then\n          local groundPos = GetGroundPosition(newPos, unit)\n          --print(groundPos.z .. ' -- ' .. newPos.z .. ' -- ' .. (groundPos - position):Normalized().z)\n          if unit.nNavCollision == PHYSICS_NAV_GROUND and groundPos.z > position.z and (groundPos - position):Normalized().z > unit.fNavGroundAngle then\n            newVelocity.z = math.max(0, newVelocity.z)\n            staticSum.z = 0\n            --[[newPos = position + Vector(0,0,newVelocity.z)\n            if newPos.z < unit.lastGoodGround.z then\n              DebugDrawCircle(unit.lastGoodGround, Vector(255,255,255), 1, 15, true, 1.1)\n              DebugDrawCircle(groundPos, Vector(255,0,0), 1, 15, true, 1.1)\n              DebugDrawCircle(newPos, Vector(0,255,0), 1, 15, true, 1.1)\n              print ('LAST GROUND2') \n              newPos.z = unit.lastGoodGround.z\n              newVelocity.z = 0\n              staticSum.z = 0\n            end]]\n          elseif groundPos.z >= newPos.z then\n            newPos = groundPos\n            newVelocity.z = 0\n            staticSum.z = 0\n          end\n        end\n      end\n\n      if not dontSet then\n        unit:SetAbsOrigin(newPos)\n      end\n      \n      unit.nRebounceFrames = unit.nRebounceFrames - 1\n      unit.vLastVelocity = unit.vVelocity\n      unit.vVelocity = newVelocity - staticSum\n      \n      if unit.PhysicsFrameCallback ~= nil then\n        local status, nextCall = pcall(unit.PhysicsFrameCallback, unit)\n        if not status then\n          print('[PHYSICS] Failed FrameCallback: ' .. nextCall)\n        end\n      end\n      \n      if unit.nNavCollision ~= PHYSICS_NAV_NOTHING and  unit.bAutoUnstuck and unit.nStuckFrames >= unit.nStuckTimeout then\n        unit.nStuckFrames = 0\n        unit.nSkipSlide = 1\n\n        local navX = GridNav:WorldToGridPosX(position.x)\n        local navY = GridNav:WorldToGridPosY(position.y)\n\n        local anggrid = self.anggrid\n        local offX = self.offsetX\n        local offY = self.offsetY\n        if anggrid then\n          local angSize = #anggrid\n          local angX = navX + offX\n          local angY = navY + offY\n\n          --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY)\n          \n          local angle = anggrid[angX][angY]\n          if angle ~= -1 then\n            local normal = RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0))\n            --print(normal)\n            --print('----------')\n\n            unit:SetAbsOrigin(position + normal * 64)\n          else\n            unit:SetAbsOrigin(unit.vLastGoodPosition)\n          end\n        else\n          unit:SetAbsOrigin(unit.vLastGoodPosition)\n        end\n      end\n      \n      return curTime\n    end\n  })\n  \n  unit.PhysicsTimer = Physics.timers[unit.PhysicsTimerName]\n  unit.vVelocity = Vector(0,0,0)\n  unit.vLastVelocity = Vector(0,0,0)\n  unit.vAcceleration = Vector(0,0,0)\n  unit.fFriction = .05\n  unit.fFlatFriction = 0\n  unit.PhysicsLastPosition = unit:GetAbsOrigin()\n  unit.PhysicsLastTime = GameRules:GetGameTime()\n  unit.vTotalVelocity = Vector(0,0,0)\n  unit.bFollowNavMesh = true\n  unit.nLockToGround = PHYSICS_GROUND_ABOVE\n  unit.bPreventDI = false\n  unit.bSlide = false\n  unit.nNavCollision = PHYSICS_NAV_SLIDE\n  unit.fNavGroundAngle = .6\n  unit.fSlideMultiplier = 0.1\n  unit.nVelocityMax = 0\n  unit.PhysicsFrameCallback = nil\n  unit.fVelocityClamp = 20.0 / 30.0\n  unit.bHibernate = true\n  unit.bHibernating = false\n  unit.bStarted = true\n  unit.bCutTrees = false\n  unit.vSlideVelocity = Vector(0,0,0)\n  unit.nNavGridLookahead = 1\n  unit.bAdaptiveNavGridLookahead = false\n  unit.nSkipSlide = 0\n  unit.nMaxRebounce = 2\n  unit.nRebounceFrames = 2\n  unit.vLastGoodPosition = unit:GetAbsOrigin()\n  unit.bAutoUnstuck = true\n  unit.nStuckTimeout = 600\n  unit.nStuckFrames = 0\n  unit.fBounceMultiplier = 1.0\n  unit.oColliders = {}\n  unit.fMass = 100\n  unit.staticForces = {}\n  unit.staticSum = Vector(0,0,0)\nend\n\n\nPhysics.testUnitNum = 0\nPhysics.testUnits = {}\n-- Physics Testing commands\nfunction Physics:PhysicsTestCommand(...)\n\n  local args = {...}\n  local text = table.concat (args, \" \")\n  local ply = Convars:GetCommandClient()\n  local plyID = ply:GetPlayerID()\n\n  local hero = ply:GetAssignedHero()\n\n  if text == \"\" or string.find(text, \"^help\") then\n    print(\"PHYSTEST Help\")\n    print('---------------------')\n    print(\"vel X Y Z        -- Adds the given velocity X,Y,Z to the current hero's velocity.\")\n    print(\"velmax X         -- Sets the maximum velocity of the current hero to X.\")\n    print(\"clamp X          -- Sets the to-zero velocity clamp to X hammer units per second.\")\n    print(\"acc X Y Z        -- Sets the given acceleration X,Y,Z to the current hero's acceleration.\")\n    print(\"fric X           -- Sets the frcition of the current hero to X / 100.\")\n    print(\"prevent          -- Toggles Directional Influence prevention (aka right click moving).\")\n    print(\"slidemult X      -- Sets the slide multiplier to X / 100.\")\n    print(\"slide            -- Toggles Slide on/off.\")\n    print(\"nav              -- Toggles FollowNavMesh on/off.  Nav collision will not trigger if this is not set.\")\n    print(\"navtype          -- Cycles through the navtype collision types.\")\n    print(\"hibernate        -- Toggles hibernate on/off.\")\n    print(\"ground           -- Cycles through the ground behavior.\")\n    print(\"mass X           -- Sets the mass of this unit to X for momentum collision calculations.\")\n    print(\"bouncemult X     -- Sets the bounce multiplier to X / 100.\")\n    print(\"unstuck          -- Toggles AutoUnstuck on/off.\")\n    print(\"stuckframes X    -- Sets the number of frames to wait before triggering an Unstuck.\")\n    print(\"rebounceframes X -- Sets the number of frames to wait between NAV_BOUNCE bounces.\")\n    print(\"lookahead X      -- Sets the number of lookahead frames for nav collision detection.\")\n    print(\"phys             -- Activates this hero as a physics unit.\")\n    print(\"regrow           -- Regrow all trees on the map.\")\n    print(\"anggrid          -- Process the map into an anglegrid to use with SLIDE/BOUNCE nav collision.\")\n    print('---------------------')\n  end\n\n  if string.find(text, \"^regrow\") then\n    GridNav:RegrowAllTrees()\n  end\n\n  if string.find(text, \"^unstuck\") then    \n    hero:SetAutoUnstuck(not hero:GetAutoUnstuck())\n    print(hero:GetAutoUnstuck())\n  end\n\n  local mass1 = string.match(text, \"^mass%s+(-?%d+)\")\n  if mass1 ~= nil then\n    hero:SetMass(mass1)\n  end\n\n  local bmult1 = string.match(text, \"^bouncemult%s+(-?%d+)\")\n  if bmult1 ~= nil then\n    hero:SetBounceMultiplier(bmult1 / 100) \n  end\n\n  local stuckTimeout1 = string.match(text, \"^stuckframes%s+(%d+)\")\n  if stuckTimeout1 ~= nil then\n    hero:SetStuckTimeout(stuckTimeout1)\n  end\n\n  local rebounce1 = string.match(text, \"^rebounceframes%s+(%d+)\")\n  if rebounce1 ~= nil then\n    hero:SetRebounceFrames(rebounce1)\n  end\n  \n  local lookahead1 = string.match(text, \"^lookahead%s+(%d+)\")\n  if lookahead1 ~= nil then\n    hero:SetNavGridLookahead(lookahead1)\n  end\n\n  if string.find(text, \"^spider\") then\n    local mapGnv = {}\n    local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0)\n    local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0)\n\n    print(worldMin)\n    print(worldMax)\n\n    local boundX1 = GridNav:WorldToGridPosX(worldMin.x)\n    local boundX2 = GridNav:WorldToGridPosX(worldMax.x)\n    local boundY1 = GridNav:WorldToGridPosX(worldMin.y)\n    local boundY2 = GridNav:WorldToGridPosX(worldMax.y)\n\n    print(boundX1 .. \" -- \" .. boundX2)\n    print(boundY1 .. \" -- \" .. boundY2)\n\n    print('----------------------')\n\n    InitLogFile(\"addons/dotadash/spider.txt\", \"\")\n    AppendToLogFile(\"addons/dotadash/spider.txt\", \"P1\")\n    AppendToLogFile(\"addons/dotadash/spider.txt\", \"#spider created pbm\")\n    AppendToLogFile(\"addons/dotadash/spider.txt\", tostring(boundX2 - boundX1 + 1) .. \" \" .. tostring(boundY2 - boundY1 + 1))\n\n    local pseudoGNV = {}\n    local WALLS = self.WALLS\n    for i=1,#WALLS do\n      local from = WALLS[i].from\n      local to = WALLS[i].to\n      local cur = from\n      local dist = to - from\n      dist.z = 0\n      local dir = dist:Normalized()\n      dist = dist:Length()\n      local norm = RotatePosition(Vector(0,0,0), QAngle(0,90,0), dir)\n\n      for j=1,math.floor(dist/30) do\n        local pos = cur + norm * 64\n        local pos2 = cur - norm * 64\n        local x = GridNav:WorldToGridPosX(pos.x)\n        local y = GridNav:WorldToGridPosY(pos.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n\n        x = GridNav:WorldToGridPosX(pos2.x)\n        y = GridNav:WorldToGridPosY(pos2.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n\n        x = GridNav:WorldToGridPosX(cur.x)\n        y = GridNav:WorldToGridPosY(cur.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n\n        cur = from + dir*j*30\n      end\n\n      cur = to\n      local pos = cur + norm * 64\n      local pos2 = cur - norm * 64\n      local blocked = not GridNav:IsTraversable(pos) or GridNav:IsBlocked(pos)\n      if blocked then\n        local x = GridNav:WorldToGridPosX(pos.x)\n        local y = GridNav:WorldToGridPosY(pos.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n      end\n\n      blocked = not GridNav:IsTraversable(pos2) or GridNav:IsBlocked(pos2)\n      if blocked then\n        local x = GridNav:WorldToGridPosX(pos2.x)\n        local y = GridNav:WorldToGridPosY(pos2.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n      end\n\n      blocked = not GridNav:IsTraversable(cur) or GridNav:IsBlocked(cur)\n      if blocked then\n        local x = GridNav:WorldToGridPosX(cur.x)\n        local y = GridNav:WorldToGridPosY(cur.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n      end\n    end\n\n    --PrintTable(pseudoGNV)\n    --print('---------------')\n\n    local s = \"\"\n\n    for i=boundY2,boundY1,-1 do\n      for j=boundX1,boundX2 do\n        local position = Vector(GridNav:GridPosToWorldCenterX(j), GridNav:GridPosToWorldCenterY(i), 0)\n        local blocked = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) or (pseudoGNV[j] ~= nil and pseudoGNV[j][i])\n\n        if blocked then\n          s = s .. \"1\"\n        else\n          s = s .. \"0\"\n        end\n\n        if j == boundX2 then\n          AppendToLogFile(\"addons/dotadash/spider.txt\", s)\n          s = \"\"\n        else\n          s = s .. \" \"\n        end\n      end\n    end\n  end\n\n  if string.find(text, \"^anggrid\") then\n    Physics:GenerateAngleGrid()\n  end\n  \n  local ap = abilPoints\n\n  local fname = string.match(text, \"^angsave%s+(.+)\")\n  if fname ~= nil then\n    -- Process map\n    local addString = function (stack, s)\n        table.insert(stack, s)    -- push 's' into the the stack\n        for i=table.getn(stack)-1, 1, -1 do\n          if string.len(stack[i]) > string.len(stack[i+1]) then\n            break\n          end\n          stack[i] = stack[i] .. table.remove(stack)\n        end\n      end\n\n    local s = {\"\"}\n    addString(s, \"{\")\n    local anggrid = Physics.anggrid\n    for x=1,#anggrid do\n      addString(s, \"{\")\n      for y=1,#anggrid[x] do\n        addString(s, tostring(anggrid[x][y]))\n        if y < #anggrid[x] then\n          addString(s, \",\")\n        end\n      end\n      addString(s, \"}\")\n      if x < #anggrid then\n        addString(s, \",\")\n      end\n    end\n    addString(s, \"}\")\n\n    s = table.concat(s)\n    print('------------')\n    print(fname)\n    print(s)\n\n    InitLogFile(\"addons/dotadash/\" .. fname .. \".txt\", s)\n  end\n\n  if string.find(text, \"^units\") then\n    local m = string.match(text, \"(%d+)\")\n    if m ~= nil then\n      Physics.testUnitNum = Physics.testUnitNum + m\n      print (Physics.testUnitNum)\n      for i=1,m do \n        local unit = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber())\n        unit:AddNewModifier(unit, nil, \"modifier_phased\", {})\n        unit:SetModel('models/heroes/lycan/lycan_wolf.vmdl')\n        unit:SetOriginalModel('models/heroes/lycan/lycan_wolf.vdl')\n        \n        Physics:Unit(unit)\n        unit:SetPhysicsFriction(0)\n        unit:SetPhysicsVelocity(RandomVector(2000))\n        unit:SetNavCollisionType(PHYSICS_NAV_BOUNCE)\n      end\n    end\n  end\n  \n  \n  if string.find(text, \"^hibtest\") then\n    local m = string.match(text, \"(%d+)\")\n    if m ~= nil and m == \"0\" then\n      Timers:CreateTimer('units2',{\n        useOldStyle = true,\n        useGameTime = true,\n        endTime = GameRules:GetGameTime(),\n        callback = function(reflex, args)\n          local pushNum = math.floor(#units / 10) + 1\n          for i=1,pushNum do\n            local unit = units[RandomInt(1, #units)]\n            unit:AddPhysicsVelocity(RandomVector(RandomInt(1000,2000)))\n          end\n          \n          return GameRules:GetGameTime() + 1\n        end\n      })\n    elseif m ~= nil then\n      Physics.testUnitNum = Physics.testUnitNum + m\n      print (Physics.testUnitNum)\n      for i=1,m do \n        local unit = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber())\n        unit:AddNewModifier(unit, nil, \"modifier_phased\", {})\n        unit:SetModel('models/heroes/lycan/lycan_wolf.vmdl')\n        unit:SetOriginalModel('models/heroes/lycan/lycan_wolf.vmdl')\n        \n        Physics:Unit(unit)\n        unit:SetNavCollisionType(PHYSICS_NAV_BOUNCE)\n        \n        Physics.testUnits[#Physics.testUnits + 1] = unit\n      end\n    end\n  end\n  \n  local vel1,vel2,vel3 = string.match(text, \"^vel%s+(-?%d+)%s+(-?%d+)%s+(-?%d+)\")\n  if vel1 ~= nil and vel2 ~= nil and vel3 ~= nil then\n    hero:AddPhysicsVelocity(Vector(tonumber(vel1), tonumber(vel2), tonumber(vel3)))\n  end\n  \n  local velmax1 = string.match(text, \"^velmax%s+(%d+)\")\n  if velmax1 ~= nil then\n    hero:SetPhysicsVelocityMax(tonumber(velmax1))\n  end\n  \n  local acc1,acc2,acc3 = string.match(text, \"^acc%s+(-?%d+)%s+(-?%d+)%s+(-?%d+)\")\n  if acc1 ~= nil and acc2 ~= nil and acc3 ~= nil then\n    hero:SetPhysicsAcceleration(Vector(tonumber(acc1), tonumber(acc2), tonumber(acc3)))\n  end\n  \n  local fric1 = string.match(text, \"^fric%s+(-?%d+)\")\n  if fric1 ~= nil then\n    hero:SetPhysicsFriction(tonumber(fric1) / 100 )\n  end\n  \n  local slide1 = string.match(text, \"^slidemult%s+(-?%d+)\")\n  if slide1 ~= nil then\n    hero:SetSlideMultiplier(tonumber(slide1) / 100 )\n  end\n  \n  if string.find(text, \"^prevent\") then\n    hero:PreventDI(not hero:IsPreventDI())\n    print(hero:IsPreventDI())\n  end\n\n  if string.find(text, \"^phys\") and hero.IsSlide == nil then\n    Physics:Unit(hero)\n  end\n  \n  if string.find(text, \"^onframe\") then\n    hero:OnPhysicsFrame(function(unit)\n      --PrintTable(unit)\n      --print('----------------')\n    end)\n  end\n  \n  if string.find(text, \"^slide$\") then\n    hero:Slide(not hero:IsSlide())\n    print(hero:IsSlide())\n  end\n  \n  if string.find(text, \"^nav$\") then\n    hero:FollowNavMesh(not hero:IsFollowNavMesh())\n    print(hero:IsFollowNavMesh())\n  end\n  \n  local clamp1 = string.match(text, \"^clamp%s+(%d+)\")\n  if clamp1 ~= nil then\n    hero:SetVelocityClamp( tonumber(clamp1))\n  end\n  \n  if string.find(text, \"^hibernate\") then\n    hero:Hibernate(not hero:IsHibernate())\n    print(hero:IsHibernate())\n  end\n  \n  if string.find(text, \"^navtype\") then\n      local navType = hero:GetNavCollisionType()\n      navType = (navType + 1) % 4\n      local navStr = \"NOTHING\"\n      if navType == PHYSICS_NAV_NOTHING then\n        navStr = \"NOTHING\"\n      elseif navType == PHYSICS_NAV_HALT then\n        navStr = \"HALT\"\n      elseif navType == PHYSICS_NAV_BOUNCE then\n        navStr = \"BOUNCE\"\n      elseif navType == PHYSICS_NAV_SLIDE then\n        navStr = \"SLIDE\"\n      end\n      print('navtype: ' .. navStr)\n      hero:SetNavCollisionType(navType)\n  end\n  \n  if string.find(text, \"^ground\") then\n    local ground = hero:GetGroundBehavior()\n    ground = (ground + 1) % 3\n    local groundStr = \"NOTHING\"\n    if ground == PHYSICS_GROUND_NOTHING then\n      groundStr = \"NOTHING\"\n    elseif ground == PHYSICS_GROUND_ABOVE then\n      groundStr = \"ABOVE\"\n    elseif ground == PHYSICS_GROUND_LOCK then\n      groundStr = \"LOCK\"\n    end\n    print('ground: ' .. groundStr)\n    hero:SetGroundBehavior(ground)\n  end\nend\n\nfunction Physics:BlockInSphere(unit, unitToRepel, radius, findClearSpace)\n  local pos = unit:GetAbsOrigin()\n  local vPos = unitToRepel:GetAbsOrigin()\n  local dir = vPos - pos\n  local dist2 = VectorDistanceSq(pos, vPos)\n  local move = radius\n  local move2 = move * move\n\n  if move2 < dist2 then\n    return\n  end\n\n  if IsPhysicsUnit(unitToRepel) then\n    unitToRepel.nSkipSlide = 1\n  end\n\n  if findClearSpace then\n    FindClearSpaceForUnit(unitToRepel, pos + (dir:Normalized() * move), true)\n  else\n    unitToRepel:SetAbsOrigin(pos + (dir:Normalized() * move))\n  end\nend\n\nfunction Physics:BlockInBox(unit, dist, normal, buffer, findClearSpace)\n  local toside = (dist + buffer) * normal\n\n  if IsPhysicsUnit(unit) then\n    unit.nSkipSlide = 1\n  end\n\n  if findClearSpace then\n    FindClearSpaceForUnit(unit, unit:GetAbsOrigin() + toside, true)\n  else\n    unit:SetAbsOrigin(unit:GetAbsOrigin() + toside)\n  end\nend\n\nfunction Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace)\n  if IsPhysicsUnit(unit) then\n    unit.nSkipSlide = 1\n  end\n\n  local pos = unit:GetAbsOrigin()\n\n  if xblock then\n    pos.x = value\n  else\n    pos.y = value\n  end\n\n  if findClearSpace then\n    FindClearSpaceForUnit(unit, pos, true)\n  else\n    unit:SetAbsOrigin(pos)\n  end\nend\n\nfunction Physics:DistanceToLine(point, lineA, lineB)\n  local a = (lineA - point):Length()\n  local b = (lineB - point):Length()\n  local c = (lineB - lineA):Length()\n  local s = (a+b+c)/2\n  local num = (math.sqrt(s*(s-a)*(s-b)*(s-c)) * 2 / c)\n  if num ~= num then\n    return 0\n  end\n  return num\nend\n\nfunction Physics:CreateBox(a, b, width, center)\n  local az = Vector(a.x,a.y,0)\n  local bz = Vector(b.x,b.y,0)\n  local height = math.abs(b.z - a.z)\n  if height < 1 then \n    b.z = b.z + width/2 \n    a.z = a.z - width/2\n  end\n\n  local dir = (bz-az):Normalized()\n  local rot = Vector(-1*dir.y,dir.x,0)\n\n  local box = {}\n  if center then\n    box[1] = a + -1 * rot * width / 2\n    box[2] = b + -1 * rot * width / 2\n    box[3] = a + rot * width / 2\n  else\n    box[1] = a\n    box[2] = b\n    box[3] = a + rot * width\n  end\n\n  return box\nend\n\nfunction Physics:PrecalculateBoxDraw(box)\n  local ang = RotationDelta(VectorToAngles(box.upNormal), VectorToAngles(Vector(1,0,0))).y\n  local ang2 = RotationDelta(VectorToAngles(box.rightNormal), VectorToAngles(Vector(1,0,0))).y\n  if ang > 90 then\n    ang = 180 - ang\n  elseif ang < -90 then\n    ang = -180 - ang\n  end\n\n  if ang2 > 90 then\n    ang2 = 180 - ang2\n  elseif ang2 < -90 then\n    ang2 = -180 - ang2\n  end\n\n  local a = ang\n  if math.abs(ang2) < math.abs(ang) then\n    a = ang2\n  end\n\n  local aRot = RotatePosition(box.a, QAngle(0, a, 0), box.a)\n  local bRot = RotatePosition(box.a, QAngle(0, a, 0), box.b)\n  local cRot = RotatePosition(box.a, QAngle(0, a, 0), box.c)\n  local dRot = RotatePosition(box.a, QAngle(0, a, 0), box.d)\n\n  local minX = math.min(math.min(math.min(aRot.x, bRot.x), cRot.x), dRot.x)\n  local minY = math.min(math.min(math.min(aRot.y, bRot.y), cRot.y), dRot.y)\n  local maxX = math.max(math.max(math.max(aRot.x, bRot.x), cRot.x), dRot.x)\n  local maxY = math.max(math.max(math.max(aRot.y, bRot.y), cRot.y), dRot.y)\n\n  box.drawAngle = -1 * a\n  box.drawMins = Vector(minX, minY, box.zMin)\n  box.drawMaxs = Vector(maxX, maxY, box.zMax)\nend\n\nfunction Physics:PrecalculateBox(box)\n  box.zMin = math.min(math.min(box[1].z, box[2].z), box[3].z)\n  box.zMax = math.max(math.max(box[1].z, box[2].z), box[3].z)\n  box.center = box[2] + (box[3] - box[2]) / 2\n  box.center.z = (box.zMin + box.zMax) / 2\n  box.radius = math.max((box[3] - box.center):Length(), (box[2] - box.center):Length())\n  box.middle = Vector(box.center.x, box.center.y, box.center.z)\n  box.middle.z = 0\n  box.a = box[1]\n  box.a.z = 0\n  box.b = box[2]\n  box.b.z = 0\n  box.d = box[3]\n  box.d.z = 0\n  box.c = box.b + (box.d - box.a)\n  box.upNormal = (box.d - box.a):Normalized()\n  box.rightNormal = (box.b - box.a):Normalized()\n\n  box[1] = nil\n  box[2] = nil\n  box[3] = nil\n\n  box.ab = box.b - box.a\n  box.ad = box.d - box.a\n  box.ab2 = box.ab:Dot(box.ab)\n  box.ad2 = box.ad:Dot(box.ad)\n\n  box.recalculate = nil\n  return box\nend\n\nfunction Physics:PrecalculateAABox(box)\n  box.xMin = math.min(box[1].x, box[2].x)\n  box.xMax = math.max(box[1].x, box[2].x)\n  box.yMin = math.min(box[1].y, box[2].y)\n  box.yMax = math.max(box[1].y, box[2].y)\n  box.zMin = math.min(box[1].z, box[2].z)\n  box.zMax = math.max(box[1].z, box[2].z)\n  box.center = Vector((box.xMin + box.xMax) / 2, (box.yMin + box.yMax) / 2, (box.zMin + box.zMax) / 2)\n  box.radius =(Vector(xMax, yMax, zMax) - box.center):Length()\n  box.middle = Vector(box.center.x, box.center.y, 0)\n\n  box.xScale = box.xMax - box.middle.x\n  box.yScale = box.yMax - box.middle.y\n\n  box[1] = nil\n  box[2] = nil\n\n  box.recalculate = nil\n  return box\nend\n\n\nif not Physics.timers then Physics:start() end\n\nPhysics:CreateColliderProfile(\"blocker\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = 0,\n    skipFrames = 0,\n    moveSelf = false,\n    buffer = 0,\n    findClearSpace = false,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam()\n    end,\n    action = function(self, unit, v)\n      if self.moveSelf then\n        Physics:BlockInSphere(v, unit, self.radius + self.buffer, self.findClearSpace)\n      else\n        Physics:BlockInSphere(unit, v, self.radius + self.buffer, self.findClearSpace)\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"delete\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = 0,\n    skipFrames = 0,\n    deleteSelf = true,\n    removeCollider = true,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam()\n    end,\n    action = function(self, unit, v)\n      if self.deleteSelf then\n        UTIL_Remove(unit)\n      else\n        UTIL_Remove(v)\n      end\n\n      if self.removeCollider then\n        Physics:RemoveCollider(self)\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"gravity\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = 0,\n    skipFrames = 0,\n    minRadius = 0,\n    fullRadius = 0,\n    linear = false,\n    force = 1000,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided)\n    end,\n    action = function(self, unit, v)\n      local pos = unit:GetAbsOrigin()\n      local vPos = v:GetAbsOrigin()\n      local dir = pos - vPos\n      local len = dir:Length()\n      if len > self.minRadius then\n        local radDiff = self.radius - self.fullRadius\n        local dist = math.max(0, len - self.fullRadius)\n        local factor = (radDiff - dist) / radDiff\n\n        local force = self.force\n        if self.linear then\n          force = force * factor / 30\n        else\n          local factor2 = factor * factor\n          force = force * factor2 / 30\n        end\n\n        force = force * (self.skipFrames + 1)\n\n        v:AddPhysicsVelocity(dir:Normalized() * force)\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"repel\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = 0,\n    skipFrames = 0,\n    minRadius = 0,\n    fullRadius = 0,\n    linear = false,\n    force = 1000,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided)\n    end,\n    action = function(self, unit, v)\n      local pos = unit:GetAbsOrigin()\n      local vPos = v:GetAbsOrigin()\n      local dir = pos - vPos\n      local len = dir:Length()\n      if len > self.minRadius then\n        local radDiff = self.radius - self.fullRadius\n        local dist = math.max(0, len - self.fullRadius)\n        local factor = (radDiff - dist) / radDiff\n\n        local force = self.force\n        if self.linear then\n          force = force * factor / 30\n        else\n          local factor2 = factor * factor\n          force = force * factor2 / 30\n        end\n\n        force = force * (self.skipFrames + 1)\n\n        v:AddPhysicsVelocity(-1 * dir:Normalized() * force)\n      end\n    end\n  })\n\n\nPhysics:CreateColliderProfile(\"reflect\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = 0,\n    skipFrames = 0,\n    multiplier = 1,\n    block = true,\n    blockRadius = 100,\n    moveSelf = false,\n    findClearSpace = false,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided)\n    end,\n    action = function(self, unit, v)\n      local pos = unit:GetAbsOrigin()\n      local vPos = v:GetAbsOrigin()\n      local normal = vPos - pos\n      normal = normal:Normalized()\n\n      local newVelocity = v.vVelocity\n      if newVelocity:Dot(normal) >= 0 then\n        return\n      end\n\n      v:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30)\n\n      if self.block then\n        if self.moveSelf then\n          Physics:BlockInSphere(v, unit, self.blockRadius, self.findClearSpace)\n        else\n          Physics:BlockInSphere(unit, v, self.blockRadius, self.findClearSpace)\n        end\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"momentum\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = .1,\n    skipFrames = 0,\n    block = true,\n    blockRadius = 50,\n    moveSelf = false,\n    findClearSpace = false,\n    elasticity = 1,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided)\n    end,\n    action = function(self, unit, v)\n      if self.hitTime == nil or GameRules:GetGameTime() >= self.hitTime then\n        local pos = unit:GetAbsOrigin()\n        local vPos = v:GetAbsOrigin()\n        local dir = vPos - pos\n        local mass = unit:GetMass()\n        local vMass = v:GetMass()\n        --dir.z = 0\n        dir = dir:Normalized()\n        \n        local neg = -1 * dir\n        \n        local dot = dir:Dot(unit:GetTotalVelocity())\n        local dot2 = dir:Dot(v:GetTotalVelocity())\n\n        local v1 = (self.elasticity * vMass * (dot2 - dot) + (mass * dot) + (vMass * dot2)) / (mass + vMass)\n        local v2 = (self.elasticity * mass * (dot - dot2) + (mass * dot) + (vMass * dot2)) / (mass + vMass)\n        \n        --if dot < 1 and dot2 < 1 then\n          --return\n        --end\n\n        unit:AddPhysicsVelocity((v1 - dot) * dir)\n        v:AddPhysicsVelocity((v2 - dot2) * dir)\n\n        if self.block then\n          if self.moveSelf then\n            Physics:BlockInSphere(v, unit, self.blockRadius, self.findClearSpace)\n          else\n            Physics:BlockInSphere(unit, v, self.blockRadius, self.findClearSpace)\n          end\n        end\n\n        self.hitTime = GameRules:GetGameTime() + self.recollideTime\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"momentumFull\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = .1,\n    skipFrames = 0,\n    block = true,\n    blockRadius = 50,\n    moveSelf = false,\n    findClearSpace = false,\n    elasticity = 1,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided)\n    end,\n    action = function(self, unit, v)\n      if self.hitTime == nil or GameRules:GetGameTime() >= self.hitTime then\n        local pos = unit:GetAbsOrigin()\n        local vPos = v:GetAbsOrigin()\n        local dir = vPos - pos\n        local mass = unit:GetMass()\n        local vMass = v:GetMass()\n        --dir.z = 0\n        dir = dir:Normalized()\n        \n        local neg = -1 * dir\n        \n        local dot = unit:GetTotalVelocity():Length()\n        local dot2 = -1 * v:GetTotalVelocity():Length()\n\n        local v1 = (self.elasticity * vMass * (dot2 - dot) + (mass * dot) + (vMass * dot2)) / (mass + vMass)\n        local v2 = (self.elasticity * mass * (dot - dot2) + (mass * dot) + (vMass * dot2)) / (mass + vMass)\n        \n        --if dot < 1 and dot2 < 1 then\n          --return\n        --end\n\n        unit:AddPhysicsVelocity((v1 - dot) * dir)\n        v:AddPhysicsVelocity((v2 - dot2) * dir)\n\n        if self.block then\n          if self.moveSelf then\n            Physics:BlockInSphere(v, unit, self.blockRadius, self.findClearSpace)\n          else\n            Physics:BlockInSphere(unit, v, self.blockRadius, self.findClearSpace)\n          end\n        end\n\n        self.hitTime = GameRules:GetGameTime() + self.recollideTime\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"boxblocker\", \n  {\n    type = COLLIDER_BOX,\n    box = {Vector(0,0,0), Vector(200,100,500), Vector(0,100,0)},\n    slide = true,\n    recollideTime = 0,\n    skipFrames = 0,\n    buffer = 0,\n    findClearSpace = false,\n    test = function(self, unit)\n      return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit)\n    end,\n    action = function(self, box, unit)\n      --PrintTable(box)\n      local pos = unit:GetAbsOrigin()\n      pos.z = 0\n\n      --face collide determination\n      local diff =  (pos - box.middle):Normalized()\n      local up = diff:Dot(box.upNormal)\n      local right = diff:Dot(box.rightNormal)\n      local normal = box.upNormal\n      local toside = 0\n      local leg1 = box.c\n      local leg2 = box.d\n      if up >= 0 then\n        if right >= 0 then\n          -- check top,right\n          local u = Physics:DistanceToLine(pos, box.c, box.d)\n          local r = Physics:DistanceToLine(pos, box.c, box.b)\n          if u < r then\n            normal = box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = u\n          else\n            normal = box.rightNormal\n            leg1 = box.c\n            leg2 = box.b\n            toside = r\n          end\n        else\n          -- check top,left\n          local u = Physics:DistanceToLine(pos, box.c, box.d)\n          local l = Physics:DistanceToLine(pos, box.a, box.d)\n          if u < l then\n            normal = box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = u\n          else\n            normal = -1 * box.rightNormal\n            leg1 = box.a\n            leg2 = box.d\n            toside = l\n          end\n        end\n      else\n        if right >= 0 then\n          -- check bot,right\n          local b = Physics:DistanceToLine(pos, box.a, box.b)\n          local r = Physics:DistanceToLine(pos, box.c, box.b)\n          if b < r then\n            normal = -1 * box.upNormal\n            leg1 = box.a\n            leg2 = box.b\n            toside = b\n          else\n            normal = box.rightNormal\n            leg1 = box.c\n            leg2 = box.b\n            toside = r\n          end\n        else\n          -- check bot,left\n          local b = Physics:DistanceToLine(pos, box.a, box.b)\n          local l = Physics:DistanceToLine(pos, box.a, box.d)\n          if b < l then\n            normal = -1 * box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = b\n          else\n            normal = -1 * box.rightNormal\n            leg1 = box.a\n            leg2 = box.d\n            toside = l\n          end\n        end\n      end\n\n      normal = normal:Normalized()\n\n      Physics:BlockInBox(unit, toside, normal, self.buffer, self.findClearSpace)\n\n      if self.slide and IsPhysicsUnit(unit) then\n        unit:AddPhysicsVelocity(math.max(0,unit:GetPhysicsVelocity():Dot(normal * -1)) * normal)\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"boxreflect\", \n  {\n    type = COLLIDER_BOX,\n    box = {Vector(0,0,0), Vector(200,100,500), Vector(0,100,0)},\n    recollideTime = 0,\n    skipFrames = 0,\n    buffer = 0,\n    block = true,\n    findClearSpace = false,\n    multiplier = 1,\n    test = function(self, unit)\n      return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit)\n    end,\n    action = function(self, box, unit)\n      local pos = unit:GetAbsOrigin()\n      pos.z = 0\n\n      --face collide determination\n      local diff =  (pos - box.middle):Normalized()\n      local up = diff:Dot(box.upNormal)\n      local right = diff:Dot(box.rightNormal)\n      local normal = box.upNormal\n      local toside = 0\n      local leg1 = box.c\n      local leg2 = box.d\n      if up >= 0 then\n        if right >= 0 then\n          -- check top,right\n          local u = Physics:DistanceToLine(pos, box.c, box.d)\n          local r = Physics:DistanceToLine(pos, box.c, box.b)\n          if u < r then\n            normal = box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = u\n          else\n            normal = box.rightNormal\n            leg1 = box.c\n            leg2 = box.b\n            toside = r\n          end\n        else\n          -- check top,left\n          local u = Physics:DistanceToLine(pos, box.c, box.d)\n          local l = Physics:DistanceToLine(pos, box.a, box.d)\n          if u < l then\n            normal = box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = u\n          else\n            normal = -1 * box.rightNormal\n            leg1 = box.a\n            leg2 = box.d\n            toside = l\n          end\n        end\n      else\n        if right >= 0 then\n          -- check bot,right\n          local b = Physics:DistanceToLine(pos, box.a, box.b)\n          local r = Physics:DistanceToLine(pos, box.c, box.b)\n          if b < r then\n            normal = -1 * box.upNormal\n            leg1 = box.a\n            leg2 = box.b\n            toside = b\n          else\n            normal = box.rightNormal\n            leg1 = box.c\n            leg2 = box.b\n            toside = r\n          end\n        else\n          -- check bot,left\n          local b = Physics:DistanceToLine(pos, box.a, box.b)\n          local l = Physics:DistanceToLine(pos, box.a, box.d)\n          if b < l then\n            normal = -1 * box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = b\n          else\n            normal = -1 * box.rightNormal\n            leg1 = box.a\n            leg2 = box.d\n            toside = l\n          end\n        end\n      end\n\n      normal = normal:Normalized()\n\n      if self.block then\n        Physics:BlockInBox(unit, toside, normal, self.buffer, self.findClearSpace)\n      end\n\n      local newVelocity = unit.vVelocity\n      if newVelocity:Dot(normal) >= 0 then\n        return\n      end\n\n      unit:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30)\n    end\n  })\n\nPhysics:CreateColliderProfile(\"aaboxblocker\", \n  {\n    type = COLLIDER_AABOX,\n    box = {Vector(0,0,0), Vector(200,100,500)},\n    slide = true,\n    recollideTime = 0,\n    skipFrames = 0,\n    buffer = 0,\n    findClearSpace = false,\n    test = function(self, unit)\n      return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit)\n    end,\n    action = function(self, box, unit)\n      --PrintTable(box)\n      local pos = unit:GetAbsOrigin()\n      pos.z = 0\n\n      local x = pos.x\n      local y = pos.y\n      local middle = box.middle\n      local xblock = true\n      local value = 0\n      local normal = Vector(1,0,0)\n\n      if x > middle.x then\n        if y > middle.y then\n          -- up,right\n          local relx = (pos.x - middle.x) / box.xScale\n          local rely = (pos.y - middle.y) / box.yScale\n\n          if relx > rely then\n            --right\n            normal = Vector(1,0,0)\n            value = box.xMax\n            xblock = true\n          else\n            --up\n            normal = Vector(0,1,0)\n            value = box.yMax\n            xblock = false\n          end\n        elseif y <= middle.y then\n          -- down,right\n          local relx = (pos.x - middle.x) / box.xScale\n          local rely = (middle.y - pos.y) / box.yScale\n\n          if relx > rely then\n            --right\n            normal = Vector(1,0,0)\n            value = box.xMax\n            xblock = true\n          else\n            --down\n            normal = Vector(0,-1,0)\n            value = box.yMin\n            xblock = false\n          end\n        end\n      elseif x <= middle.x then\n        if y > middle.y then\n          -- up,left\n          local relx = (middle.x - pos.x) / box.xScale\n          local rely = (pos.y - middle.y) / box.yScale\n\n          if relx > rely then\n            --left\n            normal = Vector(-1,0,0)\n            value = box.xMin\n            xblock = true\n          else\n            --up\n            normal = Vector(0,1,0)\n            value = box.yMax\n            xblock = false\n          end\n        elseif y <= middle.y then\n          -- down,left\n          local relx = (middle.x - pos.x) / box.xScale\n          local rely = (middle.y - pos.y) / box.yScale\n\n          if relx > rely then\n            --left\n            normal = Vector(-1,0,0)\n            value = box.xMin\n            xblock = true\n          else\n            --down\n            normal = Vector(0,-1,0)\n            value = box.yMin\n            xblock = false\n          end\n        end\n      end\n\n      Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace)\n\n      if self.slide and IsPhysicsUnit(unit) then\n        unit:AddPhysicsVelocity(math.max(0,unit:GetPhysicsVelocity():Dot(normal * -1)) * normal)\n      end\n    end\n  })\n\n\nPhysics:CreateColliderProfile(\"aaboxreflect\", \n  {\n    type = COLLIDER_AABOX,\n    box = {Vector(0,0,0), Vector(200,100,500)},\n    recollideTime = 0,\n    skipFrames = 0,\n    buffer = 0,\n    block = true,\n    findClearSpace = false,\n    multiplier = 1,\n    test = function(self, unit)\n      return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit)\n    end,\n    action = function(self, box, unit)\n      --PrintTable(box)\n      local pos = unit:GetAbsOrigin()\n      pos.z = 0\n\n      local x = pos.x\n      local y = pos.y\n      local middle = box.middle\n      local xblock = true\n      local value = 0\n      local normal = Vector(1,0,0)\n\n      if x > middle.x then\n        if y > middle.y then\n          -- up,right\n          local relx = (pos.x - middle.x) / box.xScale\n          local rely = (pos.y - middle.y) / box.yScale\n\n          if relx > rely then\n            --right\n            normal = Vector(1,0,0)\n            value = box.xMax\n            xblock = true\n          else\n            --up\n            normal = Vector(0,1,0)\n            value = box.yMax\n            xblock = false\n          end\n        elseif y <= middle.y then\n          -- down,right\n          local relx = (pos.x - middle.x) / box.xScale\n          local rely = (middle.y - pos.y) / box.yScale\n\n          if relx > rely then\n            --right\n            normal = Vector(1,0,0)\n            value = box.xMax\n            xblock = true\n          else\n            --down\n            normal = Vector(0,-1,0)\n            value = box.yMin\n            xblock = false\n          end\n        end\n      elseif x <= middle.x then\n        if y > middle.y then\n          -- up,left\n          local relx = (middle.x - pos.x) / box.xScale\n          local rely = (pos.y - middle.y) / box.yScale\n\n          if relx > rely then\n            --left\n            normal = Vector(-1,0,0)\n            value = box.xMin\n            xblock = true\n          else\n            --up\n            normal = Vector(0,1,0)\n            value = box.yMax\n            xblock = false\n          end\n        elseif y <= middle.y then\n          -- down,left\n          local relx = (middle.x - pos.x) / box.xScale\n          local rely = (middle.y - pos.y) / box.yScale\n\n          if relx > rely then\n            --left\n            normal = Vector(-1,0,0)\n            value = box.xMin\n            xblock = true\n          else\n            --down\n            normal = Vector(0,-1,0)\n            value = box.yMin\n            xblock = false\n          end\n        end\n      end\n\n      if self.block then\n        Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace)\n      end\n\n      local newVelocity = unit.vVelocity\n      if newVelocity:Dot(normal) >= 0 then\n        return\n      end\n\n      unit:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30)      \n    end\n  })"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/physics_old.lua",
    "content": "PHYSICS_VERSION = \"0.92\"\n\nPHYSICS_NAV_NOTHING = 0\nPHYSICS_NAV_HALT = 1\nPHYSICS_NAV_SLIDE = 2\nPHYSICS_NAV_BOUNCE = 3\n\nPHYSICS_GROUND_NOTHING = 0\nPHYSICS_GROUND_ABOVE = 1\nPHYSICS_GROUND_LOCK = 2\n\nCOLLIDER_SPHERE = 0\nCOLLIDER_BOX = 1\nCOLLIDER_AABOX = 2\n\nPHYSICS_THINK = 0.01\n\nif Physics == nil then\n  print ( '[PHYSICS] creating Physics' )\n  Physics = {}\n  Physics.__index = Physics\nend\n\nfunction IsPhysicsUnit(unit)\n  return unit.GetPhysicsVelocity ~= nil\nend\n\nfunction Physics:new( o )\n  o = o or {}\n  setmetatable( o, Physics )\n  return o\nend\n\nColliderProfiles = {}\n\nfunction ColliderProfiles:new(o)\n  o = o or {}\n  setmetatable(o, self)\n  self.__index = self\n  return o\nend\n\nfunction Physics:start()\n  Physics = self\n\n  if self.thinkEnt == nil then\n    self.timers = {}\n    self.Colliders = {}\n    self.ColliderProfiles = {}\n    self.anggrid = nil\n    self.offsetX = nil\n    self.offsetY = nil\n    self.colliderSkipOffset = 0\n    self.frameCount = 0\n\n    self.thinkEnt = Entities:CreateByClassname(\"info_target\") -- Entities:FindByClassname(nil, 'CWorld')\n    --wspawn:SetContextThink(\"PhysicsThink\", Dynamic_Wrap( Physics, 'Think' ), PHYSICS_THINK )\n    self.thinkEnt:SetThink(\"Think\", self, \"physics\", PHYSICS_THINK)\n\n    Convars:RegisterCommand( \"phystest\", Dynamic_Wrap(Physics, 'PhysicsTestCommand'), \"Test different Physics library commands\", FCVAR_CHEAT )\n  end\nend\n\nfunction Physics:CreateColliderProfile(name, profile)\n  self.ColliderProfiles[name] = ColliderProfiles:new(profile)\n  profile.name = name\n  return self.ColliderProfiles[name]\nend\n\nfunction Physics:ColliderFromProfile(name, collider)\n  return self.ColliderProfiles[name]:new(collider)\nend\n\nfunction Physics:AddCollider(name, collider)\n  if type(name) == \"table\" then\n    collider = name\n    name = DoUniqueString(\"collider\")\n  end\n\n  collider.skipOffset = self.colliderSkipOffset\n  self.colliderSkipOffset = self.colliderSkipOffset + 1\n\n  collider.name = name\n  self.Colliders[name] = collider\n  return collider\nend\n\nfunction Physics:RemoveCollider(name)\n  if type(name) == \"table\" then\n    name = name.name\n  end\n\n  local collider = self.Colliders[name]\n  if collider == nil then\n    return\n  end\n  if collider.unit ~= nil and collider.unit.oColliders[collider.name] ~= nil then\n    collider.unit.oColliders[collider.name] = nil\n  end\n\n\n  self.Colliders[name] = nil\nend\n\nfunction Physics:Think()\n  if GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then\n    return\n  end\n\n  -- Track game time, since the dt passed in to think is actually wall-clock time not simulation time.\n  local now = GameRules:GetGameTime()\n  --print(\"now: \" .. now)\n  if Physics.t0 == nil then\n    Physics.t0 = now\n  end\n  local dt = now - Physics.t0\n  Physics.t0 = now\n\n  self.frameCount = self.frameCount + 1\n\n  -- Process timers\n  for k,v in pairs(Physics.timers) do\n    -- Run the callback\n    local status, nextCall = pcall(v.callback, Physics, v)\n\n    -- Make sure it worked\n    if status then\n      -- Check if it needs to loop\n      if nextCall then\n        -- Change it's end time\n        v.endTime = nextCall\n      else\n        Physics.timers[k] = nil\n      end\n\n      -- Update timer data\n      --self:UpdateTimerData()\n    else\n      -- Nope, handle the error\n      Physics.timers[k] = nil\n      print('[PHYSICS] Timer error:' .. nextCall)\n    end\n  end\n\n  if dt > 0 then\n    for name,collider in pairs(Physics.Colliders) do\n      if collider.skipFrames == 0 or ((self.frameCount + collider.skipOffset) % (collider.skipFrames + 1) == 0) then\n        if collider.type == COLLIDER_SPHERE then\n          local rad2 = collider.radius * collider.radius\n          local unit = collider.unit\n          if IsValidEntity(unit) then\n            if collider.draw then\n              local alpha = 0\n              local color = Vector(200,0,0)\n              if type(collider.draw) == \"table\" then\n                alpha = collider.draw.alpha or alpha\n                color = collider.draw.color or color\n              end\n\n              DebugDrawCircle(unit:GetAbsOrigin(), color, alpha, collider.radius, true, .01)\n            end\n\n            local ents = nil\n            if collider.filter then\n              if type(collider.filter) == \"table\" then\n                ents = collider.filter\n              else\n                local status = nil\n                status, ents = pcall(collider.filter, collider)\n                if not status then\n                  print('[PHYSICS] Collision Filter Failure!: ' .. ents)\n                end\n              end\n            else\n              ents = Entities:FindAllInSphere(unit:GetAbsOrigin(), collider.radius + 200)\n            end\n\n            for k,v in pairs(ents) do\n              if IsValidEntity(v) and IsValidEntity(unit) and v ~= unit and rad2 >= VectorDistanceSq(unit:GetAbsOrigin(), v:GetAbsOrigin()) then\n                local status, test = pcall(collider.test, collider, unit, v)\n\n                if not status then\n                  print('[PHYSICS] Collision Test Failure!: ' .. test)\n                elseif test then\n                  if collider.preaction then\n                    local status, action = pcall(collider.preaction, collider, unit, v)\n                    if not status then\n                      print('[PHYSICS] Collision preaction Failure!: ' .. action)\n                    end\n                  end\n                  local status, action = pcall(collider.action, collider, unit, v)\n                  if not status then\n                    print('[PHYSICS] Collision action Failure!: ' .. action)\n                  end\n                  if collider.postaction then\n                    local status, action = pcall(collider.postaction, collider, unit, v)\n                    if not status then\n                      print('[PHYSICS] Collision postaction Failure!: ' .. action)\n                    end\n                  end\n\n\n                  --unit.nNextCollide = now + collider.recollideTime\n                  --v.nNextCollide = now + v.collider.recollideTime\n                end\n              end\n            end\n          else\n            Physics:RemoveCollider(name)\n          end\n        elseif collider.type == COLLIDER_BOX then\n          -- box collider\n          local box = collider.box\n          if box.recalculate or box.ad2 == nil then\n            collider.box = Physics:PrecalculateBox(box)\n          end\n\n          if collider.draw then\n            local alpha = 5\n            local color = Vector(200,0,0)\n            if type(collider.draw) == \"table\" then\n              alpha = collider.draw.alpha or alpha\n              color = collider.draw.color or color\n            end\n\n            if not collider.box.drawAngle then\n               Physics:PrecalculateBoxDraw(collider.box)\n            end\n\n            -- what the hell is that xoffset on the origin, but it works\n            DebugDrawBoxDirection(box.drawMins, Vector(0,0,0), box.drawMaxs - box.drawMins, RotatePosition(Vector(0,0,0), QAngle(0,box.drawAngle,0), Vector(1,0,0)), color, alpha, .01)\n          end\n\n          local ents = nil\n          if collider.filter then\n            if type(collider.filter) == \"table\" then\n              ents = collider.filter\n            else\n              local status = nil\n              status, ents = pcall(collider.filter, collider)\n              if not status then\n                print('[PHYSICS] Collision Filter Failure!: ' .. ents)\n              end\n            end\n          else\n            ents = Entities:FindAllInSphere(box.center, box.radius + 200)\n          end\n\n          for k,v in pairs(ents) do\n            if IsValidEntity(v) then\n              local pos = v:GetAbsOrigin()\n              if (pos.z >= box.zMin and pos.z <= box.zMax) then\n                pos.z = 0\n                local am = pos - box.a\n                local amDotAb = am:Dot(box.ab)\n                if amDotAb > 0 and amDotAb < box.ab2 then\n                  local amDotAd = am:Dot(box.ad)\n                  if amDotAd > 0 and amDotAd < box.ad2 then\n                    --inside\n                    local status, test = pcall(collider.test, collider, v)\n\n                    if not status then\n                      print('[PHYSICS] Collision Test Failure!: ' .. test)\n                    elseif test then\n                      if collider.preaction then\n                        local status, action = pcall(collider.preaction, collider, box, v)\n                        if not status then\n                          print('[PHYSICS] Collision preaction Failure!: ' .. action)\n                        end\n                      end\n                      local status, action = pcall(collider.action, collider, box, v)\n                      if not status then\n                        print('[PHYSICS] Collision action Failure!: ' .. action)\n                      end\n                      if collider.postaction then\n                        local status, action = pcall(collider.postaction, collider, box, v)\n                        if not status then\n                          print('[PHYSICS] Collision postaction Failure!: ' .. action)\n                        end\n                      end\n                    end\n                  end\n                end\n              end\n            end\n          end\n        elseif collider.type == COLLIDER_AABOX then\n          -- box collider\n          local box = collider.box\n          if box.recalculate or box.xMin == nil then\n            collider.box = Physics:PrecalculateAABox(box)\n          end\n\n          if collider.draw then\n            local alpha = 5\n            local color = Vector(200,0,0)\n            if type(collider.draw) == \"table\" then\n              alpha = collider.draw.alpha or alpha\n              color = collider.draw.color or color\n            end\n\n            DebugDrawBox(Vector(0,0,0), Vector(box.xMin, box.yMin, box.zMin), Vector(box.xMax, box.yMax, box.zMax), color.x, color.y, color.z, alpha, .01)\n          end\n\n          local ents = nil\n          if collider.filter then\n            if type(collider.filter) == \"table\" then\n              ents = collider.filter\n            else\n              local status = nil\n              status, ents = pcall(collider.filter, collider)\n              if not status then\n                print('[PHYSICS] Collision Filter Failure!: ' .. ents)\n              end\n            end\n          else\n            ents = Entities:FindAllInSphere(box.center, box.radius + 200)\n          end\n\n          for k,v in pairs(ents) do\n            if IsValidEntity(v) then\n              local pos = v:GetAbsOrigin()\n              if (pos.x >= box.xMin and pos.x <= box.xMax and\n                  pos.y >= box.yMin and pos.y <= box.yMax and\n                  pos.z >= box.zMin and pos.z <= box.zMax) then\n                \n                --inside\n                local status, test = pcall(collider.test, collider, v)\n\n                if not status then\n                  print('[PHYSICS] Collision Test Failure!: ' .. test)\n                elseif test then\n                  if collider.preaction then\n                    local status, action = pcall(collider.preaction, collider, box, v)\n                    if not status then\n                      print('[PHYSICS] Collision preaction Failure!: ' .. action)\n                    end\n                  end\n                  local status, action = pcall(collider.action, collider, box, v)\n                  if not status then\n                    print('[PHYSICS] Collision action Failure!: ' .. action)\n                  end\n                  if collider.postaction then\n                    local status, action = pcall(collider.postaction, collider, box, v)\n                    if not status then\n                      print('[PHYSICS] Collision postaction Failure!: ' .. action)\n                    end\n                  end\n                end\n              end\n            end\n          end\n        end\n      end\n    end\n  end\n\n  return PHYSICS_THINK\nend\n\nfunction Physics:CreateTimer(name, args)\n  if not args.endTime or not args.callback then\n    print(\"Invalid timer created: \"..name)\n    return\n  end\n\n  Physics.timers[name] = args\nend\n\nfunction Physics:RemoveTimer(name)\n  Physics.timers[name] = nil\nend\n\nfunction Physics:RemoveTimers(killAll)\n  local timers = {}\n\n  if not killAll then\n    for k,v in pairs(Physics.timers) do\n      if v.persist then\n        timers[k] = v\n      end\n    end\n  end\n\n  Physics.timers = timers\nend\n\n--[[\n  sequence:\n     {\"type\",  Physics_LINEAR, Physics_CURVED, Physics_SPLIT\n      LINEAR\n      \"distance\" or \"time\" or \"to\"\n      \"toward\" or \"angle\" or \"to\"\n      \"from\" or nothing\n      \"speed\" or nothing\n      CURVED\n      \"toward\" or \"angle\"\n        \"angleTick\"\n        \"tick\"\n        \"ticks\"\n      \"around\"\n      \"speed\" or nothing\n      SPLIT\n      \"TBD\"\n]]\n\nfunction Physics:GenerateAngleGrid()\n  local anggrid = {}\n  local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0)\n  local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0)\n\n  print(worldMin)\n  print(worldMax)\n\n  local boundX1 = GridNav:WorldToGridPosX(worldMin.x)\n  local boundX2 = GridNav:WorldToGridPosX(worldMax.x)\n  local boundY1 = GridNav:WorldToGridPosX(worldMin.y)\n  local boundY2 = GridNav:WorldToGridPosX(worldMax.y)\n  local offsetX = boundX1 * -1 + 1\n  local offsetY = boundY1 * -1 + 1\n\n  print(boundX1 .. \" -- \" .. boundX2)\n  print(boundY1 .. \" -- \" .. boundY2)\n  print(offsetX)\n  print(offsetY)\n\n  local vecs = {\n    {vec = Vector(0,1,0):Normalized(), x=0,y=1},-- N\n    {vec = Vector(1,1,0):Normalized(), x=1,y=1}, -- NE\n    {vec = Vector(1,0,0):Normalized(), x=1,y=0}, -- E\n    {vec = Vector(1,-1,0):Normalized(), x=1,y=-1}, -- SE\n    {vec = Vector(0,-1,0):Normalized(), x=0,y=-1}, -- S\n    {vec = Vector(-1,-1,0):Normalized(), x=-1,y=-1}, -- SW\n    {vec = Vector(-1,0,0):Normalized(), x=-1,y=0}, -- W\n    {vec = Vector(-1,1,0):Normalized(), x=-1,y=1} -- NW\n  }\n\n  print('----------------------')\n\n  anggrid[1] = {}\n  for j=boundY1,boundY2 do\n    anggrid[1][j + offsetY] = -1\n  end\n  anggrid[1][boundY2 + offsetY] = -1\n\n  for i=boundX1+1,boundX2-1 do\n    anggrid[i+offsetX] = {}\n    anggrid[i+offsetX][1] = -1\n    for j=(boundY1+1),boundY2-1 do\n      local position = Vector(GridNav:GridPosToWorldCenterX(i), GridNav:GridPosToWorldCenterY(j), 0)\n      local blocked = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) --or (pseudoGNV[i] ~= nil and pseudoGNV[i][j])\n      local seg = 0\n      local sum = Vector(0,0,0)\n      local count = 0\n      local inseg = false\n\n      if blocked then\n        for k=1,#vecs do\n          local vec = vecs[k].vec\n          local xoff = vecs[k].x\n          local yoff = vecs[k].y\n          local pos = Vector(GridNav:GridPosToWorldCenterX(i+xoff), GridNav:GridPosToWorldCenterY(j+yoff), 0)\n          local blo = not GridNav:IsTraversable(pos) or GridNav:IsBlocked(pos) --or (pseudoGNV[i+xoff] ~= nil and pseudoGNV[i+xoff][j+yoff])\n\n          if not blo then\n            count = count + 1\n            inseg = true\n            sum = sum + vec\n          else\n            if inseg then\n              inseg = false\n              seg = seg + 1\n            end\n          end\n        end\n\n        if seg > 1 then\n          print ('OVERSEG x=' .. i .. ' y=' .. j)\n          anggrid[i+offsetX][j+offsetY] = -1\n        elseif count > 5 then\n          print ('PROTRUDE x=' .. i .. ' y=' .. j)\n          anggrid[i+offsetX][j+offsetY] = -1\n        elseif count == 0 then\n          anggrid[i+offsetX][j+offsetY] = -1\n        else\n          local sum = sum:Normalized()\n          local angle = math.floor((math.acos(Vector(1,0,0):Dot(sum:Normalized()))/ math.pi * 180))\n          if sum.y < 0 then\n            angle = -1 * angle\n          end\n          anggrid[i+offsetX][j+offsetY] = angle\n        end\n      else\n        anggrid[i+offsetX][j+offsetY] = -1\n      end\n    end\n    anggrid[i+offsetX][boundY2+offsetY] = -1\n  end\n\n  anggrid[boundX2+offsetX] = {}\n  for j=boundY1,boundY2 do\n    anggrid[boundX2+offsetX][j+offsetY] = -1\n  end\n  anggrid[boundX2+offsetX][boundY2+offsetY] = -1\n\n  print('--------------')\n  print(#anggrid)\n  print(#anggrid[1])\n  print(#anggrid[2])\n  print(#anggrid[3])\n\n  if MAP_DATA  then\n    MAP_DATA.anggrid = anggrid\n  end\n  Physics:AngleGrid(anggrid)\nend\n\nfunction Physics:AngleGrid( anggrid, angoffsets )\n  self.anggrid = anggrid\n  print('[PHYSICS] Angle Grid Set')\n  local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0)\n  local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0)\n  local boundX1 = GridNav:WorldToGridPosX(worldMin.x)\n  local boundX2 = GridNav:WorldToGridPosX(worldMax.x)\n  local boundY1 = GridNav:WorldToGridPosX(worldMin.y)\n  local boundY2 = GridNav:WorldToGridPosX(worldMax.y)\n  local offsetX = boundX1 * -1 + 1\n  local offsetY = boundY1 * -1 + 1\n  self.offsetX = offsetX\n  self.offsetY = offsetY\n\n  if angoffsets ~= nil then\n    self.offsetX = math.abs(angoffsets.x) + 1\n    self.offsetY = math.abs(angoffsets.y) + 1\n  end\nend\n\nfunction Physics:Unit(unit)\n  if IsPhysicsUnit(unit) then\n    if Convars:GetBool(\"developer\") then\n      unit:StopPhysicsSimulation()\n    else\n      return\n    end\n  end\n  function unit:StopPhysicsSimulation ()\n    Physics.timers[unit.PhysicsTimerName] = nil\n    unit.bStarted = false\n  end\n  function unit:StartPhysicsSimulation ()\n    Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n    unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n    unit.PhysicsLastPosition = unit:GetAbsOrigin()\n    unit.PhysicsLastTime = GameRules:GetGameTime()\n    unit.vLastVelocity = Vector(0,0,0)\n    unit.vSlideVelocity = Vector(0,0,0)\n    unit.bStarted = true\n  end\n  \n  function unit:SetPhysicsVelocity (velocity)\n    unit.vVelocity = velocity / 30\n    if unit.nVelocityMax > 0 and unit.vVelocity:Length() > unit.nVelocityMax then\n      unit.vVelocity = unit.vVelocity:Normalized() * unit.nVelocityMax\n    end\n    \n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n  function unit:AddPhysicsVelocity (velocity)\n    unit.vVelocity = unit.vVelocity + velocity / 30\n    if unit.nVelocityMax > 0 and unit.vVelocity:Length() > unit.nVelocityMax then\n      unit.vVelocity = unit.vVelocity:Normalized() * unit.nVelocityMax\n    end\n    \n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n  \n  function unit:SetPhysicsVelocityMax (velocityMax)\n    unit.nVelocityMax = velocityMax / 30\n  end\n  function unit:GetPhysicsVelocityMax ()\n    return unit.vVelocity * 30\n  end\n  \n  function unit:SetPhysicsAcceleration (acceleration)\n    unit.vAcceleration = acceleration / 900\n    \n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n  function unit:AddPhysicsAcceleration (acceleration)\n    unit.vAcceleration = unit.vAcceleration + acceleration / 900\n    \n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n  \n  function unit:SetPhysicsFriction (friction)\n    unit.fFriction = friction\n  end\n  \n  function unit:GetPhysicsVelocity ()\n    return unit.vVelocity  * 30\n  end\n  function unit:GetPhysicsAcceleration ()\n    return unit.vAcceleration * 900\n  end\n  function unit:GetPhysicsFriction ()\n    return unit.fFriction\n  end\n  \n  function unit:FollowNavMesh (follow)\n    unit.bFollowNavMesh = follow\n  end\n  function unit:IsFollowNavMesh ()\n    return unit.bFollowNavMesh\n  end\n  \n  function unit:SetGroundBehavior (ground)\n    unit.nLockToGround = ground\n  end\n  function unit:GetGroundBehavior ()\n    return unit.nLockToGround\n  end\n  \n  function unit:SetSlideMultiplier (slideMultiplier)\n    unit.fSlideMultiplier = slideMultiplier\n  end\n  function unit:GetSlideMultiplier ()\n    return unit.fSlideMultiplier\n  end\n  \n  function unit:Slide (slide)\n    unit.bSlide = slide\n    \n    if unit.bStarted and unit.bHibernating then\n      Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer\n      unit.PhysicsTimer.endTime = GameRules:GetGameTime()\n      unit.PhysicsLastPosition = unit:GetAbsOrigin()\n      unit.PhysicsLastTime = GameRules:GetGameTime()\n      unit.vLastVelocity = Vector(0,0,0)\n      unit.vSlideVelocity = Vector(0,0,0)\n      unit.bHibernating = false\n    end\n  end\n  function unit:IsSlide ()\n    return unit.bSlide\n  end\n  \n  function unit:PreventDI (prevent)\n    unit.bPreventDI = prevent\n    if not prevent and unit:HasModifier(\"modifier_rooted\") then\n      unit:RemoveModifierByName(\"modifier_rooted\")\n    end\n  end\n  function unit:IsPreventDI ()\n    return unit.bPreventDI\n  end\n  \n  function unit:SetNavCollisionType (collisionType)\n    unit.nNavCollision = collisionType\n  end\n  function unit:GetNavCollisionType ()\n    return unit.nNavCollision\n  end\n  \n  function unit:OnPhysicsFrame(fun)\n    unit.PhysicsFrameCallback = fun\n  end\n  \n  function unit:SetVelocityClamp (clamp)\n    unit.fVelocityClamp = clamp / 30\n  end\n  \n  function unit:GetVelocityClamp ()\n    return unit.fVelocityClamp * 30\n  end\n  \n  function unit:Hibernate (hibernate)\n    unit.bHibernate = hibernate\n  end\n  \n  function unit:IsHibernate ()\n    return unit.bHibernate\n  end\n  \n  function unit:DoHibernate ()\n    Physics.timers[unit.PhysicsTimerName] = nil\n    unit.bHibernating = true\n  end\n  \n  function unit:OnHibernate(fun)\n    unit.PhysicsHibernateCallback = fun\n  end\n\n  function unit:OnPreBounce(fun)\n    unit.PhysicsOnPreBounce = fun\n  end\n\n  function unit:OnBounce(fun)\n    unit.PhysicsOnBounce = fun\n  end\n\n  function unit:OnPreSlide(fun)\n    unit.PhysicsOnPreSlide = fun\n  end\n\n  function unit:OnSlide(fun)\n    unit.PhysicsOnSlide = fun\n  end\n\n  function unit:AdaptiveNavGridLookahead (adaptive)\n    unit.bAdaptiveNavGridLookahead = adaptive\n  end\n  \n  function unit:IsAdaptiveNavGridLookahead ()\n    return unit.bAdaptiveNavGridLookahead\n  end\n  \n  function unit:SetNavGridLookahead (lookahead)\n    unit.nNavGridLookahead = lookahead\n  end\n  \n  function unit:GetNavGridLookahead ()\n    return unit.nNavGridLookahead\n  end\n  \n  function unit:SkipSlide (frames)\n    unit.nSkipSlide = frames or 1\n  end\n  \n  function unit:SetRebounceFrames ( rebounce )\n    unit.nMaxRebounce = rebounce\n    unit.nRebounceFrames = 0\n  end\n  \n  function unit:GetRebounceFrames ()\n    unit.nRebounceFrames = 0\n    return unit.nMaxRebounce\n  end\n  \n  function unit:GetLastGoodPosition ()\n    return unit.vLastGoodPosition\n  end\n  \n  function unit:SetStuckTimeout (timeout)\n    unit.nStuckTimeout = timeout\n    unit.nStuckFrames = 0\n  end\n  function unit:GetStuckTimeout ()\n    unit.nStuckFrames = 0\n    return unit.nStuckTimeout\n  end\n  \n  function unit:SetAutoUnstuck (unstuck)\n    unit.bAutoUnstuck = unstuck\n  end\n  function unit:GetAutoUnstuck ()\n    return unit.bAutoUnstuck\n  end\n\n  function unit:SetBounceMultiplier (bounce)\n    unit.fBounceMultiplier = bounce\n  end\n  function unit:GetBounceMultiplier ()\n    return unit.fBounceMultiplier\n  end\n\n  function unit:GetTotalVelocity()\n    if unit.bStarted and not unit.bHibernating then\n      return unit.vTotalVelocity\n    else\n      return Vector(0,0,0)\n    end\n  end\n\n  function unit:GetColliders()\n    return unit.oColliders\n  end\n\n  function unit:RemoveCollider(name)\n    if name == nil then\n      local i,v = next(unit.oColliders,  nil)\n      if i == nil then\n        return\n      end\n      name = unit.oColliders[i].name\n    elseif type(name) == \"table\" then\n      name = name.name\n    end\n    Physics:RemoveCollider(name)\n  end\n\n  function unit:AddCollider(name, collider)\n    local coll = Physics:AddCollider(name, collider)\n    coll.unit = unit\n    unit.oColliders[coll.name] = coll\n    return coll\n  end\n\n  function unit:AddColliderFromProfile(name, profile, collider)\n    if profile == nil then\n      profile = name\n      name = DoUniqueString(\"collider\")\n    elseif type(profile) == \"table\" then\n      collider = profile\n      profile = name\n      name = DoUniqueString(\"collider\")\n    end\n    local coll = Physics:AddCollider(name, Physics:ColliderFromProfile(profile, collider))\n    coll.unit = unit\n    unit.oColliders[coll.name] = coll\n    return coll\n  end\n\n  function unit:GetMass()\n    return unit.fMass\n  end\n\n  function unit:SetMass(mass)\n    unit.fMass = mass\n  end\n  \n  unit.PhysicsTimerName = DoUniqueString('phys')\n  Physics:CreateTimer(unit.PhysicsTimerName, {\n    endTime = GameRules:GetGameTime(),\n    useGameTime = true,\n    callback = function(reflex, args)\n      local prevTime = unit.PhysicsLastTime\n      if not IsValidEntity(unit) then\n        return\n      end\n      local curTime = GameRules:GetGameTime()\n      local prevPosition = unit.PhysicsLastPosition\n      local position = unit:GetAbsOrigin()\n      local slideVelocity = Vector(0,0,0)\n      local lastVelocity = unit.vLastVelocity\n      unit.vLastVelocity = unit.vVelocity\n      unit.vTotalVelocity = (position - prevPosition) / (curTime - prevTime)\n\n      unit.PhysicsLastTime = curTime\n      unit.PhysicsLastPosition = position\n      \n      if unit.bPreventDI and not unit:HasModifier(\"modifier_rooted\") then\n        unit:AddNewModifier(unit, nil, \"modifier_rooted\", {})\n      end\n      \n      if unit.bSlide and unit.nSkipSlide <= 0 then\n        slideVelocity = ((position - prevPosition) - lastVelocity + unit.vSlideVelocity) * unit.fSlideMultiplier\n      else\n        --print(unit.nSkipSlide)\n        unit.vSlideVelocity = Vector(0,0,0)\n      end\n      \n      unit.nSkipSlide = unit.nSkipSlide - 1\n      \n      -- Adjust velocity\n      local newVelocity = unit.vVelocity + unit.vAcceleration + (-1 * unit.fFriction * unit.vVelocity) + slideVelocity\n      \n      --print('vel: ' .. tostring(unit.vVelocity:Length()) .. ' -- svel: ' .. tostring(slideVelocity:Length()) .. \" -- nvel: \" .. tostring(newVelocity:Length()))\n      \n      -- Calculate new position\n      local newPos = position + unit.vVelocity\n      if unit.nLockToGround == PHYSICS_GROUND_LOCK then\n        local groundPos = GetGroundPosition(newPos, unit)\n        newPos = groundPos\n        newVelocity.z = 0\n      elseif unit.nLockToGround == PHYSICS_GROUND_ABOVE then\n        local groundPos = GetGroundPosition(newPos, unit)\n        if groundPos.z > newPos.z then\n          newPos = groundPos\n          newVelocity.z = 0\n        end\n      end\n      \n      local newVelLength = newVelocity:Length()\n      \n      local blockedPos = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position)\n      if not blockedPos then\n        unit.vLastGoodPosition = position\n        unit.nStuckFrames = 0\n      else\n        unit.nStuckFrames = unit.nStuckFrames + 1\n      end\n      \n      if unit.nVelocityMax > 0 and newVelLength > unit.nVelocityMax then\n        newVelocity = newVelocity:Normalized() * unit.nVelocityMax\n      end\n      if unit.vAcceleration.x == 0 and unit.vAcceleration.y == 0 and newVelLength < unit.fVelocityClamp then\n        --print('clamp')\n        newVelocity = Vector(0,0,newVelocity.z)\n        if unit:HasModifier(\"modifier_rooted\") then\n          unit:RemoveModifierByName(\"modifier_rooted\")\n        end\n        if unit.bHibernate then\n          unit:DoHibernate()\n          local ent = Entities:FindInSphere(nil, position, 35)\n          local blocked = false\n          while ent ~= nil and not blocked do\n            if ent.IsHero ~= nil and ent ~= unit then\n              blocked = true\n            end\n            --print(ent:GetClassname() .. \" -- \" .. ent:GetName() .. \" -- \" .. tostring(ent.IsHero))\n            ent = Entities:FindInSphere(ent, position, 35)\n          end\n          if blocked or blockedPos or GridNav:IsNearbyTree(position, 30, true) then\n            FindClearSpaceForUnit(unit, position, true)\n            unit.nSkipSlide = 1\n            --print('FCS hib')\n          end\n          if unit.PhysicsHibernateCallback ~= nil then\n            local status, nextCall = pcall(unit.PhysicsHibernateCallback, unit)\n            if not status then\n              print('[PHYSICS] Failed HibernateCallback: ' .. nextCall)\n            end\n          end\n          return\n        end\n        \n        local ent = Entities:FindInSphere(nil, position, 35)\n        local blocked = false\n        while ent ~= nil and not blocked do\n          if ent.IsHero ~= nil and ent ~= unit then\n            blocked = true\n          end\n          --print(ent:GetClassname() .. \" -- \" .. ent:GetName() .. \" -- \" .. tostring(ent.IsHero))\n          ent = Entities:FindInSphere(ent, position, 35)\n        end\n        if blocked or not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) or GridNav:IsNearbyTree(position, 30, true) then\n          FindClearSpaceForUnit(unit, position, true)\n          unit.nSkipSlide = 1\n          --print('FCS nothib lowv + blocked')\n        end \n        --return curTime\n      end\n      \n      \n      if unit.vVelocity ~= Vector(0,0,0) or slideVelocity ~= Vector(0,0,0) then\n        if unit.bFollowNavMesh then\n          local diff = unit.vVelocity:Normalized()\n          --FindClearSpaceForUnit(unit, newPos, true)\n          unit:SetAbsOrigin(newPos)\n\n          local bound = 1\n          if unit.GetPaddedCollisionRadius then\n            bound = unit:GetPaddedCollisionRadius() + 1\n          elseif unit.GetBoundingMaxs then\n            bound = math.max(unit:GetBoundingMaxs().x, unit:GetBoundingMaxs().y)\n          end\n          \n          local connect = newPos-- + diff * bound\n          local navConnect = not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect) \n          local lookaheadNum = unit.nNavGridLookahead\n          if unit.bAdaptiveNavGridLookahead then\n            lookaheadNum = math.ceil(unit.vVelocity:Length() / 32)\n          end\n          local tot = lookaheadNum + 1\n          local div = 1 / tot\n          local index = 1\n          while not navConnect and index < tot do\n            connect = newPos + unit.vVelocity * (div * index) + diff * bound\n            navConnect = not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect) \n            index = index + 1\n          end\n          --or not GridNav:IsTraversable(newPos + unit.vVelocity * .5) -- diff * unit.nNavGridLookahead\n            --or  or GridNav:IsBlocked(newPos + unit.vVelocity * .5)\n          if unit.nNavCollision == PHYSICS_NAV_HALT and navConnect then\n            newVelocity = Vector(0,0,0)\n            FindClearSpaceForUnit(unit, newPos, true)\n            unit.nSkipSlide = 1\n          elseif unit.nNavCollision == PHYSICS_NAV_SLIDE and navConnect then        \n            local navX = GridNav:WorldToGridPosX(connect.x)\n            local navY = GridNav:WorldToGridPosY(connect.y)\n            local navPos = Vector(GridNav:GridPosToWorldCenterX(navX), GridNav:GridPosToWorldCenterY(navY), 0)\n            --unit.nRebounceFrames = unit.nMaxRebounce\n            \n            local normal = nil\n            local anggrid = self.anggrid\n            local offX = self.offsetX\n            local offY = self.offsetY\n            if anggrid then\n              local angSize = #anggrid\n              local angX = navX + offX\n              local angY = navY + offY\n\n              --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY)\n              \n              local angle = anggrid[angX][angY]\n              if angle ~= -1 then\n                angle = angle\n                normal = -1 * RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0))\n                --print(angle)\n                --print(normal)\n                --print('----------')\n              end\n            end\n            \n            local dir = navPos - position\n            if normal == nil then\n              --local face = navPos - position\n              --print(\"face: \" .. tostring(face)) \n              dir.z = 0\n              dir = dir:Normalized()\n              -- Nav bounce checks\n              --local angx = (math.acos(dir.x)/ math.pi * 180)\n              --local angy = (math.acos(dir.y)/ math.pi * 180)\n              --print(tostring(dir:Length()) .. \" -- \" .. tostring(dir))\n              --print(dir:Dot(Vector(1,0,0)))\n              --print(dir:Dot(Vector(-1,0,0)))\n              --print(dir:Dot(Vector(0,1,0)))\n              --print(dir:Dot(Vector(0,-1,0)))\n              --print('---------------')\n              local vVelocity = unit.vVelocity\n              if dir:Dot(Vector(1,0,0)) > .707 then\n                normal = Vector(1,0,0)\n                local navPos2 = navPos + Vector(-64,0,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vVelocity.y > 0 then\n                    normal = Vector(0,1,0)\n                    navPos2 = navPos + Vector(0,-64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(0,64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(-1,0,0)) > .707 then\n                normal = Vector(-1,0,0)\n                local navPos2 = navPos + Vector(64,0,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vVelocity.y > 0 then\n                    normal = Vector(0,1,0)\n                    navPos2 = navPos + Vector(0,-64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(0,64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(0,1,0)) > .707 then\n                normal = Vector(0,1,0)\n                local navPos2 = navPos + Vector(0,-64,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vVelocity.x > 0 then\n                    normal = Vector(1,0,0)\n                    navPos2 = navPos + Vector(-64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  else\n                    normal = Vector(-1,0,0)\n                    navPos2 = navPos + Vector(64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(0,-1,0)) > .707 then\n                normal = Vector(0,-1,0)\n                local navPos2 = navPos + Vector(0,64,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vVelocity.x > 0 then\n                    normal = Vector(-1,0,0)\n                    navPos2 = navPos + Vector(-64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x, diff.y, diff.z)\n                    end\n                  end\n                end\n              end\n              --FindClearSpaceForUnit(unit, newPos, true)\n              --print(tostring(unit:GetAbsOrigin()) .. \" -- \" .. tostring(navPos))\n            end\n\n            if unit.PhysicsOnPreSlide then\n              local status, nextCall = pcall(unit.PhysicsOnPreSlide, unit, normal)\n              if not status then\n                print('[PHYSICS] Failed OnPreSlide: ' .. nextCall)\n              end\n            end\n\n            newVelocity = (-1 * newVelocity:Dot(normal) * normal) + newVelocity\n            unit.vVelocity = newVelocity\n            local ndir = dir * -1\n            local scalar = math.min((32+bound) / math.abs(ndir.x), (32+bound) / math.abs(ndir.y))\n\n            unit.nSkipSlide = 1\n            unit:SetAbsOrigin(navPos + Vector(scalar*ndir.x, scalar*ndir.y, position.z))\n            \n            if unit.PhysicsOnSlide then\n              local status, nextCall = pcall(unit.PhysicsOnSlide, unit, normal)\n              if not status then\n                print('[PHYSICS] Failed OnSlide: ' .. nextCall)\n              end\n            end\n          elseif unit.nRebounceFrames <= 0 and unit.nNavCollision == PHYSICS_NAV_BOUNCE and navConnect then\n            local navX = GridNav:WorldToGridPosX(connect.x)\n            local navY = GridNav:WorldToGridPosY(connect.y)\n            local navPos = Vector(GridNav:GridPosToWorldCenterX(navX), GridNav:GridPosToWorldCenterY(navY), 0)\n            unit.nRebounceFrames = unit.nMaxRebounce\n            \n            local normal = nil\n            local anggrid = self.anggrid\n            local offX = self.offsetX\n            local offY = self.offsetY\n            if anggrid then\n              local angSize = #anggrid\n              local angX = navX + offX\n              local angY = navY + offY\n\n              --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY)\n              \n              local angle = anggrid[angX][angY]\n              if angle ~= -1 then\n                angle = angle\n                normal = RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0))\n                --print(normal)\n                --print('----------')\n              end\n            end\n            \n            if normal == nil then\n              --local face = navPos - position\n              --print(\"face: \" .. tostring(face))\n              --local dir = navPos - position\n              local dir = navPos - position\n              dir.z = 0\n              dir = dir:Normalized()\n              -- Nav bounce checks\n              --local angx = (math.acos(dir.x)/ math.pi * 180)\n              --local angy = (math.acos(dir.y)/ math.pi * 180)\n              --print(tostring(dir:Length()) .. \" -- \" .. tostring(dir))\n              --print(dir:Dot(Vector(1,0,0)))\n              --print(dir:Dot(Vector(-1,0,0)))\n              --print(dir:Dot(Vector(0,1,0)))\n              --print(dir:Dot(Vector(0,-1,0)))\n              --print('---------------')\n              local vVelocity = unit.vVelocity\n              if dir:Dot(Vector(1,0,0)) > .707 then\n                normal = Vector(1,0,0)\n                local navPos2 = navPos + Vector(-64,0,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vVelocity.y > 0 then\n                    normal = Vector(0,1,0)\n                    navPos2 = navPos + Vector(0,-64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(0,64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(-1,0,0)) > .707 then\n                normal = Vector(-1,0,0)\n                local navPos2 = navPos + Vector(64,0,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vVelocity.y > 0 then\n                    normal = Vector(0,1,0)\n                    navPos2 = navPos + Vector(0,-64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(0,64,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(0,1,0)) > .707 then\n                normal = Vector(0,1,0)\n                local navPos2 = navPos + Vector(0,-64,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vVelocity.x > 0 then\n                    normal = Vector(1,0,0)\n                    navPos2 = navPos + Vector(-64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  else\n                    normal = Vector(-1,0,0)\n                    navPos2 = navPos + Vector(64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  end\n                end\n              elseif dir:Dot(Vector(0,-1,0)) > .707 then\n                normal = Vector(0,-1,0)\n                local navPos2 = navPos + Vector(0,64,0)\n                local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                if navConnect2 then\n                  if vVelocity.x > 0 then\n                    normal = Vector(-1,0,0)\n                    navPos2 = navPos + Vector(-64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  else\n                    normal = Vector(0,-1,0)\n                    navPos2 = navPos + Vector(64,0,0)\n                    navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2)\n                    if navConnect2 then\n                      normal = Vector(diff.x * -1, diff.y * -1, diff.z)\n                    end\n                  end\n                end\n              end\n              --FindClearSpaceForUnit(unit, newPos, true)\n              --print(tostring(unit:GetAbsOrigin()) .. \" -- \" .. tostring(navPos))\n            end\n\n            if unit.PhysicsOnPreBounce then\n              local status, nextCall = pcall(unit.PhysicsOnPreBounce, unit, normal)\n              if not status then\n                print('[PHYSICS] Failed OnPreBounce: ' .. nextCall)\n              end\n            end\n            newVelocity = ((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * unit.fBounceMultiplier\n            unit.vVelocity = newVelocity\n            if unit.PhysicsOnBounce then\n              local status, nextCall = pcall(unit.PhysicsOnBounce, unit, normal)\n              if not status then\n                print('[PHYSICS] Failed OnBounce: ' .. nextCall)\n              end\n            end\n          end\n        else\n          unit:SetAbsOrigin(newPos)\n        end\n      end\n      \n      unit.nRebounceFrames = unit.nRebounceFrames - 1\n      unit.vVelocity = newVelocity\n      \n      if unit.PhysicsFrameCallback ~= nil then\n        local status, nextCall = pcall(unit.PhysicsFrameCallback, unit)\n        if not status then\n          print('[PHYSICS] Failed FrameCallback: ' .. nextCall)\n        end\n      end\n      \n      if unit.bAutoUnstuck and unit.nStuckFrames >= unit.nStuckTimeout then\n        unit.nStuckFrames = 0\n        unit.nSkipSlide = 1\n\n        local navX = GridNav:WorldToGridPosX(position.x)\n        local navY = GridNav:WorldToGridPosY(position.y)\n\n        local anggrid = self.anggrid\n        local offX = self.offsetX\n        local offY = self.offsetY\n        if anggrid then\n          local angSize = #anggrid\n          local angX = navX + offX\n          local angY = navY + offY\n\n          --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY)\n          \n          local angle = anggrid[angX][angY]\n          if angle ~= -1 then\n            local normal = RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0))\n            --print(normal)\n            --print('----------')\n\n            unit:SetAbsOrigin(position + normal * 64)\n          else\n            unit:SetAbsOrigin(unit.vLastGoodPosition)\n          end\n        else\n          unit:SetAbsOrigin(unit.vLastGoodPosition)\n        end\n      end\n      \n      return curTime\n    end\n  })\n  \n  unit.PhysicsTimer = Physics.timers[unit.PhysicsTimerName]\n  unit.vVelocity = Vector(0,0,0)\n  unit.vLastVelocity = Vector(0,0,0)\n  unit.vAcceleration = Vector(0,0,0)\n  unit.fFriction = .05\n  unit.PhysicsLastPosition = unit:GetAbsOrigin()\n  unit.PhysicsLastTime = GameRules:GetGameTime()\n  unit.vTotalVelocity = Vector(0,0,0)\n  unit.bFollowNavMesh = true\n  unit.nLockToGround = PHYSICS_GROUND_ABOVE\n  unit.bPreventDI = false\n  unit.bSlide = false\n  unit.nNavCollision = PHYSICS_NAV_SLIDE\n  unit.fSlideMultiplier = 0.1\n  unit.nVelocityMax = 0\n  unit.PhysicsFrameCallback = nil\n  unit.fVelocityClamp = 20.0 / 30.0\n  unit.bHibernate = true\n  unit.bHibernating = false\n  unit.bStarted = true\n  unit.vSlideVelocity = Vector(0,0,0)\n  unit.nNavGridLookahead = 1\n  unit.bAdaptiveNavGridLookahead = false\n  unit.nSkipSlide = 0\n  unit.nMaxRebounce = 2\n  unit.nRebounceFrames = 2\n  unit.vLastGoodPosition = unit:GetAbsOrigin()\n  unit.bAutoUnstuck = true\n  unit.nStuckTimeout = 300\n  unit.nStuckFrames = 0\n  unit.fBounceMultiplier = 1.0\n  unit.oColliders = {}\n  unit.fMass = 100\nend\n\n\nPhysics.testUnitNum = 0\nPhysics.testUnits = {}\n-- Physics Testing commands\nfunction Physics:PhysicsTestCommand(...)\n\n  local args = {...}\n  local text = table.concat (args, \" \")\n  local ply = Convars:GetCommandClient()\n  local plyID = ply:GetPlayerID()\n\n  local hero = ply:GetAssignedHero()\n\n  if text == \"\" or string.find(text, \"^help\") then\n    print(\"PHYSTEST Help\")\n    print('---------------------')\n    print(\"vel X Y Z        -- Adds the given velocity X,Y,Z to the current hero's velocity.\")\n    print(\"velmax X         -- Sets the maximum velocity of the current hero to X.\")\n    print(\"clamp X          -- Sets the to-zero velocity clamp to X hammer units per second.\")\n    print(\"acc X Y Z        -- Sets the given acceleration X,Y,Z to the current hero's acceleration.\")\n    print(\"fric X           -- Sets the frcition of the current hero to X / 100.\")\n    print(\"prevent          -- Toggles Directional Influence prevention (aka right click moving).\")\n    print(\"slidemult X      -- Sets the slide multiplier to X / 100.\")\n    print(\"slide            -- Toggles Slide on/off.\")\n    print(\"nav              -- Toggles FollowNavMesh on/off.  Nav collision will not trigger if this is not set.\")\n    print(\"navtype          -- Cycles through the navtype collision types.\")\n    print(\"hibernate        -- Toggles hibernate on/off.\")\n    print(\"ground           -- Cycles through the ground behavior.\")\n    print(\"mass X           -- Sets the mass of this unit to X for momentum collision calculations.\")\n    print(\"bouncemult X     -- Sets the bounce multiplier to X / 100.\")\n    print(\"unstuck          -- Toggles AutoUnstuck on/off.\")\n    print(\"stuckframes X    -- Sets the number of frames to wait before triggering an Unstuck.\")\n    print(\"rebounceframes X -- Sets the number of frames to wait between NAV_BOUNCE bounces.\")\n    print(\"lookahead X      -- Sets the number of lookahead frames for nav collision detection.\")\n    print(\"phys             -- Activates this hero as a physics unit.\")\n    print(\"regrow           -- Regrow all trees on the map.\")\n    print(\"anggrid          -- Process the map into an anglegrid to use with SLIDE/BOUNCE nav collision.\")\n    print('---------------------')\n  end\n\n  if string.find(text, \"^regrow\") then\n    GridNav:RegrowAllTrees()\n  end\n\n  if string.find(text, \"^unstuck\") then    \n    hero:SetAutoUnstuck(not hero:GetAutoUnstuck())\n    print(hero:GetAutoUnstuck())\n  end\n\n  local mass1 = string.match(text, \"^mass%s+(-?%d+)\")\n  if mass1 ~= nil then\n    hero:SetMass(mass1)\n  end\n\n  local bmult1 = string.match(text, \"^bouncemult%s+(-?%d+)\")\n  if bmult1 ~= nil then\n    hero:SetBounceMultiplier(bmult1 / 100) \n  end\n\n  local stuckTimeout1 = string.match(text, \"^stuckframes%s+(%d+)\")\n  if stuckTimeout1 ~= nil then\n    hero:SetStuckTimeout(stuckTimeout1)\n  end\n\n  local rebounce1 = string.match(text, \"^rebounceframes%s+(%d+)\")\n  if rebounce1 ~= nil then\n    hero:SetRebounceFrames(rebounce1)\n  end\n  \n  local lookahead1 = string.match(text, \"^lookahead%s+(%d+)\")\n  if lookahead1 ~= nil then\n    hero:SetNavGridLookahead(lookahead1)\n  end\n\n  if string.find(text, \"^spider\") then\n    local mapGnv = {}\n    local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0)\n    local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0)\n\n    print(worldMin)\n    print(worldMax)\n\n    local boundX1 = GridNav:WorldToGridPosX(worldMin.x)\n    local boundX2 = GridNav:WorldToGridPosX(worldMax.x)\n    local boundY1 = GridNav:WorldToGridPosX(worldMin.y)\n    local boundY2 = GridNav:WorldToGridPosX(worldMax.y)\n\n    print(boundX1 .. \" -- \" .. boundX2)\n    print(boundY1 .. \" -- \" .. boundY2)\n\n    print('----------------------')\n\n    InitLogFile(\"addons/dotadash/spider.txt\", \"\")\n    AppendToLogFile(\"addons/dotadash/spider.txt\", \"P1\")\n    AppendToLogFile(\"addons/dotadash/spider.txt\", \"#spider created pbm\")\n    AppendToLogFile(\"addons/dotadash/spider.txt\", tostring(boundX2 - boundX1 + 1) .. \" \" .. tostring(boundY2 - boundY1 + 1))\n\n    local pseudoGNV = {}\n    local WALLS = self.WALLS\n    for i=1,#WALLS do\n      local from = WALLS[i].from\n      local to = WALLS[i].to\n      local cur = from\n      local dist = to - from\n      dist.z = 0\n      local dir = dist:Normalized()\n      dist = dist:Length()\n      local norm = RotatePosition(Vector(0,0,0), QAngle(0,90,0), dir)\n\n      for j=1,math.floor(dist/30) do\n        local pos = cur + norm * 64\n        local pos2 = cur - norm * 64\n        local x = GridNav:WorldToGridPosX(pos.x)\n        local y = GridNav:WorldToGridPosY(pos.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n\n        x = GridNav:WorldToGridPosX(pos2.x)\n        y = GridNav:WorldToGridPosY(pos2.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n\n        x = GridNav:WorldToGridPosX(cur.x)\n        y = GridNav:WorldToGridPosY(cur.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n\n        cur = from + dir*j*30\n      end\n\n      cur = to\n      local pos = cur + norm * 64\n      local pos2 = cur - norm * 64\n      local blocked = not GridNav:IsTraversable(pos) or GridNav:IsBlocked(pos)\n      if blocked then\n        local x = GridNav:WorldToGridPosX(pos.x)\n        local y = GridNav:WorldToGridPosY(pos.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n      end\n\n      blocked = not GridNav:IsTraversable(pos2) or GridNav:IsBlocked(pos2)\n      if blocked then\n        local x = GridNav:WorldToGridPosX(pos2.x)\n        local y = GridNav:WorldToGridPosY(pos2.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n      end\n\n      blocked = not GridNav:IsTraversable(cur) or GridNav:IsBlocked(cur)\n      if blocked then\n        local x = GridNav:WorldToGridPosX(cur.x)\n        local y = GridNav:WorldToGridPosY(cur.y)\n        if pseudoGNV[x] == nil then\n          pseudoGNV[x] = {}\n        end\n        pseudoGNV[x][y] = true\n      end\n    end\n\n    --PrintTable(pseudoGNV)\n    --print('---------------')\n\n    local s = \"\"\n\n    for i=boundY2,boundY1,-1 do\n      for j=boundX1,boundX2 do\n        local position = Vector(GridNav:GridPosToWorldCenterX(j), GridNav:GridPosToWorldCenterY(i), 0)\n        local blocked = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) or (pseudoGNV[j] ~= nil and pseudoGNV[j][i])\n\n        if blocked then\n          s = s .. \"1\"\n        else\n          s = s .. \"0\"\n        end\n\n        if j == boundX2 then\n          AppendToLogFile(\"addons/dotadash/spider.txt\", s)\n          s = \"\"\n        else\n          s = s .. \" \"\n        end\n      end\n    end\n  end\n\n  if string.find(text, \"^anggrid\") then\n    Physics:GenerateAngleGrid()\n  end\n  \n  local ap = abilPoints\n\n  local fname = string.match(text, \"^angsave%s+(.+)\")\n  if fname ~= nil then\n    -- Process map\n    local addString = function (stack, s)\n        table.insert(stack, s)    -- push 's' into the the stack\n        for i=table.getn(stack)-1, 1, -1 do\n          if string.len(stack[i]) > string.len(stack[i+1]) then\n            break\n          end\n          stack[i] = stack[i] .. table.remove(stack)\n        end\n      end\n\n    local s = {\"\"}\n    addString(s, \"{\")\n    local anggrid = Physics.anggrid\n    for x=1,#anggrid do\n      addString(s, \"{\")\n      for y=1,#anggrid[x] do\n        addString(s, tostring(anggrid[x][y]))\n        if y < #anggrid[x] then\n          addString(s, \",\")\n        end\n      end\n      addString(s, \"}\")\n      if x < #anggrid then\n        addString(s, \",\")\n      end\n    end\n    addString(s, \"}\")\n\n    s = table.concat(s)\n    print('------------')\n    print(fname)\n    print(s)\n\n    InitLogFile(\"addons/dotadash/\" .. fname .. \".txt\", s)\n  end\n\n  if string.find(text, \"^units\") then\n    local m = string.match(text, \"(%d+)\")\n    if m ~= nil then\n      Physics.testUnitNum = Physics.testUnitNum + m\n      print (Physics.testUnitNum)\n      for i=1,m do \n        local unit = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber())\n        unit:AddNewModifier(unit, nil, \"modifier_phased\", {})\n        unit:SetModel('models/heroes/lycan/lycan_wolf.vmdl')\n        unit:SetOriginalModel('models/heroes/lycan/lycan_wolf.vdl')\n        \n        Physics:Unit(unit)\n        unit:SetPhysicsFriction(0)\n        unit:SetPhysicsVelocity(RandomVector(2000))\n        unit:SetNavCollisionType(PHYSICS_NAV_BOUNCE)\n      end\n    end\n  end\n  \n  \n  if string.find(text, \"^hibtest\") then\n    local m = string.match(text, \"(%d+)\")\n    if m ~= nil and m == \"0\" then\n      Timers:CreateTimer('units2',{\n        useOldStyle = true,\n        useGameTime = true,\n        endTime = GameRules:GetGameTime(),\n        callback = function(reflex, args)\n          local pushNum = math.floor(#units / 10) + 1\n          for i=1,pushNum do\n            local unit = units[RandomInt(1, #units)]\n            unit:AddPhysicsVelocity(RandomVector(RandomInt(1000,2000)))\n          end\n          \n          return GameRules:GetGameTime() + 1\n        end\n      })\n    elseif m ~= nil then\n      Physics.testUnitNum = Physics.testUnitNum + m\n      print (Physics.testUnitNum)\n      for i=1,m do \n        local unit = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber())\n        unit:AddNewModifier(unit, nil, \"modifier_phased\", {})\n        unit:SetModel('models/heroes/lycan/lycan_wolf.vmdl')\n        unit:SetOriginalModel('models/heroes/lycan/lycan_wolf.vmdl')\n        \n        Physics:Unit(unit)\n        unit:SetNavCollisionType(PHYSICS_NAV_BOUNCE)\n        \n        Physics.testUnits[#Physics.testUnits + 1] = unit\n      end\n    end\n  end\n  \n  local vel1,vel2,vel3 = string.match(text, \"^vel%s+(-?%d+)%s+(-?%d+)%s+(-?%d+)\")\n  if vel1 ~= nil and vel2 ~= nil and vel3 ~= nil then\n    hero:AddPhysicsVelocity(Vector(tonumber(vel1), tonumber(vel2), tonumber(vel3)))\n  end\n  \n  local velmax1 = string.match(text, \"^velmax%s+(%d+)\")\n  if velmax1 ~= nil then\n    hero:SetPhysicsVelocityMax(tonumber(velmax1))\n  end\n  \n  local acc1,acc2,acc3 = string.match(text, \"^acc%s+(-?%d+)%s+(-?%d+)%s+(-?%d+)\")\n  if acc1 ~= nil and acc2 ~= nil and acc3 ~= nil then\n    hero:SetPhysicsAcceleration(Vector(tonumber(acc1), tonumber(acc2), tonumber(acc3)))\n  end\n  \n  local fric1 = string.match(text, \"^fric%s+(-?%d+)\")\n  if fric1 ~= nil then\n    hero:SetPhysicsFriction(tonumber(fric1) / 100 )\n  end\n  \n  local slide1 = string.match(text, \"^slidemult%s+(-?%d+)\")\n  if slide1 ~= nil then\n    hero:SetSlideMultiplier(tonumber(slide1) / 100 )\n  end\n  \n  if string.find(text, \"^prevent\") then\n    hero:PreventDI(not hero:IsPreventDI())\n    print(hero:IsPreventDI())\n  end\n\n  if string.find(text, \"^phys\") and hero.IsSlide == nil then\n    Physics:Unit(hero)\n  end\n  \n  if string.find(text, \"^onframe\") then\n    hero:OnPhysicsFrame(function(unit)\n      --PrintTable(unit)\n      --print('----------------')\n    end)\n  end\n  \n  if string.find(text, \"^slide$\") then\n    hero:Slide(not hero:IsSlide())\n    print(hero:IsSlide())\n  end\n  \n  if string.find(text, \"^nav$\") then\n    hero:FollowNavMesh(not hero:IsFollowNavMesh())\n    print(hero:IsFollowNavMesh())\n  end\n  \n  local clamp1 = string.match(text, \"^clamp%s+(%d+)\")\n  if clamp1 ~= nil then\n    hero:SetVelocityClamp( tonumber(clamp1))\n  end\n  \n  if string.find(text, \"^hibernate\") then\n    hero:Hibernate(not hero:IsHibernate())\n    print(hero:IsHibernate())\n  end\n  \n  if string.find(text, \"^navtype\") then\n      local navType = hero:GetNavCollisionType()\n      navType = (navType + 1) % 4\n      local navStr = \"NOTHING\"\n      if navType == PHYSICS_NAV_NOTHING then\n        navStr = \"NOTHING\"\n      elseif navType == PHYSICS_NAV_HALT then\n        navStr = \"HALT\"\n      elseif navType == PHYSICS_NAV_BOUNCE then\n        navStr = \"BOUNCE\"\n      elseif navType == PHYSICS_NAV_SLIDE then\n        navStr = \"SLIDE\"\n      end\n      print('navtype: ' .. navStr)\n      hero:SetNavCollisionType(navType)\n  end\n  \n  if string.find(text, \"^ground\") then\n    local ground = hero:GetGroundBehavior()\n    ground = (ground + 1) % 3\n    local groundStr = \"NOTHING\"\n    if ground == PHYSICS_GROUND_NOTHING then\n      groundStr = \"NOTHING\"\n    elseif ground == PHYSICS_GROUND_ABOVE then\n      groundStr = \"ABOVE\"\n    elseif ground == PHYSICS_GROUND_LOCK then\n      groundStr = \"LOCK\"\n    end\n    print('ground: ' .. groundStr)\n    hero:SetGroundBehavior(ground)\n  end\nend\n\nfunction Physics:BlockInSphere(unit, unitToRepel, radius, findClearSpace)\n  local pos = unit:GetAbsOrigin()\n  local vPos = unitToRepel:GetAbsOrigin()\n  local dir = vPos - pos\n  local dist2 = VectorDistanceSq(pos, vPos)\n  local move = radius\n  local move2 = move * move\n\n  if move2 < dist2 then\n    return\n  end\n\n  if IsPhysicsUnit(unitToRepel) then\n    unitToRepel.nSkipSlide = 1\n  end\n\n  if findClearSpace then\n    FindClearSpaceForUnit(unitToRepel, pos + (dir:Normalized() * move), true)\n  else\n    unitToRepel:SetAbsOrigin(pos + (dir:Normalized() * move))\n  end\nend\n\nfunction Physics:BlockInBox(unit, dist, normal, buffer, findClearSpace)\n  local toside = (dist + buffer) * normal\n\n  if IsPhysicsUnit(unit) then\n    unit.nSkipSlide = 1\n  end\n\n  if findClearSpace then\n    FindClearSpaceForUnit(unit, unit:GetAbsOrigin() + toside, true)\n  else\n    unit:SetAbsOrigin(unit:GetAbsOrigin() + toside)\n  end\nend\n\nfunction Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace)\n  if IsPhysicsUnit(unit) then\n    unit.nSkipSlide = 1\n  end\n\n  local pos = unit:GetAbsOrigin()\n\n  if xblock then\n    pos.x = value\n  else\n    pos.y = value\n  end\n\n  if findClearSpace then\n    FindClearSpaceForUnit(unit, pos, true)\n  else\n    unit:SetAbsOrigin(pos)\n  end\nend\n\nfunction Physics:DistanceToLine(point, lineA, lineB)\n  local a = (lineA - point):Length()\n  local b = (lineB - point):Length()\n  local c = (lineB - lineA):Length()\n  local s = (a+b+c)/2\n  local num = (math.sqrt(s*(s-a)*(s-b)*(s-c)) * 2 / c)\n  if num ~= num then\n    return 0\n  end\n  return num\nend\n\nfunction Physics:CreateBox(a, b, width, center)\n  local az = Vector(a.x,a.y,0)\n  local bz = Vector(b.x,b.y,0)\n  local height = math.abs(b.z - a.z)\n  if height < 1 then \n    b.z = b.z + width/2 \n    a.z = a.z - width/2\n  end\n\n  local dir = (bz-az):Normalized()\n  local rot = Vector(-1*dir.y,dir.x,0)\n\n  local box = {}\n  if center then\n    box[1] = a + -1 * rot * width / 2\n    box[2] = b + -1 * rot * width / 2\n    box[3] = a + rot * width / 2\n  else\n    box[1] = a\n    box[2] = b\n    box[3] = a + rot * width\n  end\n\n  return box\nend\n\nfunction Physics:PrecalculateBoxDraw(box)\n  local ang = RotationDelta(VectorToAngles(box.upNormal), VectorToAngles(Vector(1,0,0))).y\n  local ang2 = RotationDelta(VectorToAngles(box.rightNormal), VectorToAngles(Vector(1,0,0))).y\n  if ang > 90 then\n    ang = 180 - ang\n  elseif ang < -90 then\n    ang = -180 - ang\n  end\n\n  if ang2 > 90 then\n    ang2 = 180 - ang2\n  elseif ang2 < -90 then\n    ang2 = -180 - ang2\n  end\n\n  local a = ang\n  if math.abs(ang2) < math.abs(ang) then\n    a = ang2\n  end\n\n  local aRot = RotatePosition(box.a, QAngle(0, a, 0), box.a)\n  local bRot = RotatePosition(box.a, QAngle(0, a, 0), box.b)\n  local cRot = RotatePosition(box.a, QAngle(0, a, 0), box.c)\n  local dRot = RotatePosition(box.a, QAngle(0, a, 0), box.d)\n\n  local minX = math.min(math.min(math.min(aRot.x, bRot.x), cRot.x), dRot.x)\n  local minY = math.min(math.min(math.min(aRot.y, bRot.y), cRot.y), dRot.y)\n  local maxX = math.max(math.max(math.max(aRot.x, bRot.x), cRot.x), dRot.x)\n  local maxY = math.max(math.max(math.max(aRot.y, bRot.y), cRot.y), dRot.y)\n\n  box.drawAngle = -1 * a\n  box.drawMins = Vector(minX, minY, box.zMin)\n  box.drawMaxs = Vector(maxX, maxY, box.zMax)\nend\n\nfunction Physics:PrecalculateBox(box)\n  box.zMin = math.min(math.min(box[1].z, box[2].z), box[3].z)\n  box.zMax = math.max(math.max(box[1].z, box[2].z), box[3].z)\n  box.center = box[2] + (box[3] - box[2]) / 2\n  box.center.z = (box.zMin + box.zMax) / 2\n  box.radius = math.max((box[3] - box.center):Length(), (box[2] - box.center):Length())\n  box.middle = Vector(box.center.x, box.center.y, box.center.z)\n  box.middle.z = 0\n  box.a = box[1]\n  box.a.z = 0\n  box.b = box[2]\n  box.b.z = 0\n  box.d = box[3]\n  box.d.z = 0\n  box.c = box.b + (box.d - box.a)\n  box.upNormal = (box.d - box.a):Normalized()\n  box.rightNormal = (box.b - box.a):Normalized()\n\n  box[1] = nil\n  box[2] = nil\n  box[3] = nil\n\n  box.ab = box.b - box.a\n  box.ad = box.d - box.a\n  box.ab2 = box.ab:Dot(box.ab)\n  box.ad2 = box.ad:Dot(box.ad)\n\n  box.recalculate = nil\n  return box\nend\n\nfunction Physics:PrecalculateAABox(box)\n  box.xMin = math.min(box[1].x, box[2].x)\n  box.xMax = math.max(box[1].x, box[2].x)\n  box.yMin = math.min(box[1].y, box[2].y)\n  box.yMax = math.max(box[1].y, box[2].y)\n  box.zMin = math.min(box[1].z, box[2].z)\n  box.zMax = math.max(box[1].z, box[2].z)\n  box.center = Vector((box.xMin + box.xMax) / 2, (box.yMin + box.yMax) / 2, (box.zMin + box.zMax) / 2)\n  box.radius =(Vector(xMax, yMax, zMax) - box.center):Length()\n  box.middle = Vector(box.center.x, box.center.y, 0)\n\n  box.xScale = box.xMax - box.middle.x\n  box.yScale = box.yMax - box.middle.y\n\n  box[1] = nil\n  box[2] = nil\n\n  box.recalculate = nil\n  return box\nend\n\n\nif not Physics.timers then Physics:start() end\n\nPhysics:CreateColliderProfile(\"blocker\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = 0,\n    skipFrames = 0,\n    moveSelf = false,\n    buffer = 0,\n    findClearSpace = false,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam()\n    end,\n    action = function(self, unit, v)\n      if self.moveSelf then\n        Physics:BlockInSphere(v, unit, self.radius + self.buffer, self.findClearSpace)\n      else\n        Physics:BlockInSphere(unit, v, self.radius + self.buffer, self.findClearSpace)\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"delete\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = 0,\n    skipFrames = 0,\n    deleteSelf = true,\n    removeCollider = true,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam()\n    end,\n    action = function(self, unit, v)\n      if self.deleteSelf then\n        UTIL_Remove(unit)\n      else\n        UTIL_Remove(v)\n      end\n\n      if self.removeCollider then\n        Physics:RemoveCollider(self)\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"gravity\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = 0,\n    skipFrames = 0,\n    minRadius = 0,\n    fullRadius = 0,\n    linear = false,\n    force = 1000,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided)\n    end,\n    action = function(self, unit, v)\n      local pos = unit:GetAbsOrigin()\n      local vPos = v:GetAbsOrigin()\n      local dir = pos - vPos\n      local len = dir:Length()\n      if len > self.minRadius then\n        local radDiff = self.radius - self.fullRadius\n        local dist = math.max(0, len - self.fullRadius)\n        local factor = (radDiff - dist) / radDiff\n\n        local force = self.force\n        if self.linear then\n          force = force * factor / 30\n        else\n          local factor2 = factor * factor\n          force = force * factor2 / 30\n        end\n\n        force = force * (self.skipFrames + 1)\n\n        v:AddPhysicsVelocity(dir:Normalized() * force)\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"repel\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = 0,\n    skipFrames = 0,\n    minRadius = 0,\n    fullRadius = 0,\n    linear = false,\n    force = 1000,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided)\n    end,\n    action = function(self, unit, v)\n      local pos = unit:GetAbsOrigin()\n      local vPos = v:GetAbsOrigin()\n      local dir = pos - vPos\n      local len = dir:Length()\n      if len > self.minRadius then\n        local radDiff = self.radius - self.fullRadius\n        local dist = math.max(0, len - self.fullRadius)\n        local factor = (radDiff - dist) / radDiff\n\n        local force = self.force\n        if self.linear then\n          force = force * factor / 30\n        else\n          local factor2 = factor * factor\n          force = force * factor2 / 30\n        end\n\n        force = force * (self.skipFrames + 1)\n\n        v:AddPhysicsVelocity(-1 * dir:Normalized() * force)\n      end\n    end\n  })\n\n\nPhysics:CreateColliderProfile(\"reflect\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = 0,\n    skipFrames = 0,\n    multiplier = 1,\n    block = true,\n    blockRadius = 100,\n    moveSelf = false,\n    findClearSpace = false,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided)\n    end,\n    action = function(self, unit, v)\n      local pos = unit:GetAbsOrigin()\n      local vPos = v:GetAbsOrigin()\n      local normal = vPos - pos\n      normal = normal:Normalized()\n\n      local newVelocity = v.vVelocity\n      if newVelocity:Dot(normal) >= 0 then\n        return\n      end\n\n      v:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30)\n\n      if self.block then\n        if self.moveSelf then\n          Physics:BlockInSphere(v, unit, self.blockRadius, self.findClearSpace)\n        else\n          Physics:BlockInSphere(unit, v, self.blockRadius, self.findClearSpace)\n        end\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"momentum\", \n  {\n    type = COLLIDER_SPHERE,\n    radius = 100,\n    recollideTime = .1,\n    skipFrames = 0,\n    block = true,\n    blockRadius = 50,\n    moveSelf = false,\n    findClearSpace = false,\n    elasticity = 1,\n    test = function(self, collider, collided)\n      return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided)\n    end,\n    action = function(self, unit, v)\n      if self.hitTime == nil or GameRules:GetGameTime() >= self.hitTime then\n        local pos = unit:GetAbsOrigin()\n        local vPos = v:GetAbsOrigin()\n        local dir = vPos - pos\n        local mass = unit:GetMass()\n        local vMass = v:GetMass()\n        --dir.z = 0\n        dir = dir:Normalized()\n        \n        local neg = -1 * dir\n        \n        local dot = dir:Dot(unit:GetTotalVelocity())\n        local dot2 = dir:Dot(v:GetTotalVelocity())\n\n        local v1 = (self.elasticity * vMass * (dot2 - dot) + (mass * dot) + (vMass * dot2)) / (mass + vMass)\n        local v2 = (self.elasticity * mass * (dot - dot2) + (mass * dot) + (vMass * dot2)) / (mass + vMass)\n        \n        --if dot < 1 and dot2 < 1 then\n          --return\n        --end\n\n        unit:AddPhysicsVelocity((v1 - dot) * dir)\n        v:AddPhysicsVelocity((v2 - dot2) * dir)\n\n        if self.block then\n          if self.moveSelf then\n            Physics:BlockInSphere(v, unit, self.blockRadius, self.findClearSpace)\n          else\n            Physics:BlockInSphere(unit, v, self.blockRadius, self.findClearSpace)\n          end\n        end\n\n        self.hitTime = GameRules:GetGameTime() + self.recollideTime\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"boxblocker\", \n  {\n    type = COLLIDER_BOX,\n    box = {Vector(0,0,0), Vector(200,100,500), Vector(0,100,0)},\n    slide = true,\n    recollideTime = 0,\n    skipFrames = 0,\n    buffer = 0,\n    findClearSpace = false,\n    test = function(self, unit)\n      return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit)\n    end,\n    action = function(self, box, unit)\n      --PrintTable(box)\n      local pos = unit:GetAbsOrigin()\n      pos.z = 0\n\n      --face collide determination\n      local diff =  (pos - box.middle):Normalized()\n      local up = diff:Dot(box.upNormal)\n      local right = diff:Dot(box.rightNormal)\n      local normal = box.upNormal\n      local toside = 0\n      local leg1 = box.c\n      local leg2 = box.d\n      if up >= 0 then\n        if right >= 0 then\n          -- check top,right\n          local u = Physics:DistanceToLine(pos, box.c, box.d)\n          local r = Physics:DistanceToLine(pos, box.c, box.b)\n          if u < r then\n            normal = box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = u\n          else\n            normal = box.rightNormal\n            leg1 = box.c\n            leg2 = box.b\n            toside = r\n          end\n        else\n          -- check top,left\n          local u = Physics:DistanceToLine(pos, box.c, box.d)\n          local l = Physics:DistanceToLine(pos, box.a, box.d)\n          if u < l then\n            normal = box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = u\n          else\n            normal = -1 * box.rightNormal\n            leg1 = box.a\n            leg2 = box.d\n            toside = l\n          end\n        end\n      else\n        if right >= 0 then\n          -- check bot,right\n          local b = Physics:DistanceToLine(pos, box.a, box.b)\n          local r = Physics:DistanceToLine(pos, box.c, box.b)\n          if b < r then\n            normal = -1 * box.upNormal\n            leg1 = box.a\n            leg2 = box.b\n            toside = b\n          else\n            normal = box.rightNormal\n            leg1 = box.c\n            leg2 = box.b\n            toside = r\n          end\n        else\n          -- check bot,left\n          local b = Physics:DistanceToLine(pos, box.a, box.b)\n          local l = Physics:DistanceToLine(pos, box.a, box.d)\n          if b < l then\n            normal = -1 * box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = b\n          else\n            normal = -1 * box.rightNormal\n            leg1 = box.a\n            leg2 = box.d\n            toside = l\n          end\n        end\n      end\n\n      normal = normal:Normalized()\n\n      Physics:BlockInBox(unit, toside, normal, self.buffer, self.findClearSpace)\n\n      if self.slide and IsPhysicsUnit(unit) then\n        unit:AddPhysicsVelocity(math.max(0,unit:GetPhysicsVelocity():Dot(normal * -1)) * normal)\n      end\n    end\n  })\n\nPhysics:CreateColliderProfile(\"boxreflect\", \n  {\n    type = COLLIDER_BOX,\n    box = {Vector(0,0,0), Vector(200,100,500), Vector(0,100,0)},\n    recollideTime = 0,\n    skipFrames = 0,\n    buffer = 0,\n    block = true,\n    findClearSpace = false,\n    multiplier = 1,\n    test = function(self, unit)\n      return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit)\n    end,\n    action = function(self, box, unit)\n      local pos = unit:GetAbsOrigin()\n      pos.z = 0\n\n      --face collide determination\n      local diff =  (pos - box.middle):Normalized()\n      local up = diff:Dot(box.upNormal)\n      local right = diff:Dot(box.rightNormal)\n      local normal = box.upNormal\n      local toside = 0\n      local leg1 = box.c\n      local leg2 = box.d\n      if up >= 0 then\n        if right >= 0 then\n          -- check top,right\n          local u = Physics:DistanceToLine(pos, box.c, box.d)\n          local r = Physics:DistanceToLine(pos, box.c, box.b)\n          if u < r then\n            normal = box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = u\n          else\n            normal = box.rightNormal\n            leg1 = box.c\n            leg2 = box.b\n            toside = r\n          end\n        else\n          -- check top,left\n          local u = Physics:DistanceToLine(pos, box.c, box.d)\n          local l = Physics:DistanceToLine(pos, box.a, box.d)\n          if u < l then\n            normal = box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = u\n          else\n            normal = -1 * box.rightNormal\n            leg1 = box.a\n            leg2 = box.d\n            toside = l\n          end\n        end\n      else\n        if right >= 0 then\n          -- check bot,right\n          local b = Physics:DistanceToLine(pos, box.a, box.b)\n          local r = Physics:DistanceToLine(pos, box.c, box.b)\n          if b < r then\n            normal = -1 * box.upNormal\n            leg1 = box.a\n            leg2 = box.b\n            toside = b\n          else\n            normal = box.rightNormal\n            leg1 = box.c\n            leg2 = box.b\n            toside = r\n          end\n        else\n          -- check bot,left\n          local b = Physics:DistanceToLine(pos, box.a, box.b)\n          local l = Physics:DistanceToLine(pos, box.a, box.d)\n          if b < l then\n            normal = -1 * box.upNormal\n            leg1 = box.c\n            leg2 = box.d\n            toside = b\n          else\n            normal = -1 * box.rightNormal\n            leg1 = box.a\n            leg2 = box.d\n            toside = l\n          end\n        end\n      end\n\n      normal = normal:Normalized()\n\n      if self.block then\n        Physics:BlockInBox(unit, toside, normal, self.buffer, self.findClearSpace)\n      end\n\n      local newVelocity = unit.vVelocity\n      if newVelocity:Dot(normal) >= 0 then\n        return\n      end\n\n      unit:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30)\n    end\n  })\n\nPhysics:CreateColliderProfile(\"aaboxblocker\", \n  {\n    type = COLLIDER_AABOX,\n    box = {Vector(0,0,0), Vector(200,100,500)},\n    slide = true,\n    recollideTime = 0,\n    skipFrames = 0,\n    buffer = 0,\n    findClearSpace = false,\n    test = function(self, unit)\n      return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit)\n    end,\n    action = function(self, box, unit)\n      --PrintTable(box)\n      local pos = unit:GetAbsOrigin()\n      pos.z = 0\n\n      local x = pos.x\n      local y = pos.y\n      local middle = box.middle\n      local xblock = true\n      local value = 0\n      local normal = Vector(1,0,0)\n\n      if x > middle.x then\n        if y > middle.y then\n          -- up,right\n          local relx = (pos.x - middle.x) / box.xScale\n          local rely = (pos.y - middle.y) / box.yScale\n\n          if relx > rely then\n            --right\n            normal = Vector(1,0,0)\n            value = box.xMax\n            xblock = true\n          else\n            --up\n            normal = Vector(0,1,0)\n            value = box.yMax\n            xblock = false\n          end\n        elseif y <= middle.y then\n          -- down,right\n          local relx = (pos.x - middle.x) / box.xScale\n          local rely = (middle.y - pos.y) / box.yScale\n\n          if relx > rely then\n            --right\n            normal = Vector(1,0,0)\n            value = box.xMax\n            xblock = true\n          else\n            --down\n            normal = Vector(0,-1,0)\n            value = box.yMin\n            xblock = false\n          end\n        end\n      elseif x <= middle.x then\n        if y > middle.y then\n          -- up,left\n          local relx = (middle.x - pos.x) / box.xScale\n          local rely = (pos.y - middle.y) / box.yScale\n\n          if relx > rely then\n            --left\n            normal = Vector(-1,0,0)\n            value = box.xMin\n            xblock = true\n          else\n            --up\n            normal = Vector(0,1,0)\n            value = box.yMax\n            xblock = false\n          end\n        elseif y <= middle.y then\n          -- down,left\n          local relx = (middle.x - pos.x) / box.xScale\n          local rely = (middle.y - pos.y) / box.yScale\n\n          if relx > rely then\n            --left\n            normal = Vector(-1,0,0)\n            value = box.xMin\n            xblock = true\n          else\n            --down\n            normal = Vector(0,-1,0)\n            value = box.yMin\n            xblock = false\n          end\n        end\n      end\n\n      Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace)\n\n      if self.slide and IsPhysicsUnit(unit) then\n        unit:AddPhysicsVelocity(math.max(0,unit:GetPhysicsVelocity():Dot(normal * -1)) * normal)\n      end\n    end\n  })\n\n\nPhysics:CreateColliderProfile(\"aaboxreflect\", \n  {\n    type = COLLIDER_AABOX,\n    box = {Vector(0,0,0), Vector(200,100,500)},\n    recollideTime = 0,\n    skipFrames = 0,\n    buffer = 0,\n    block = true,\n    findClearSpace = false,\n    multiplier = 1,\n    test = function(self, unit)\n      return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit)\n    end,\n    action = function(self, box, unit)\n      --PrintTable(box)\n      local pos = unit:GetAbsOrigin()\n      pos.z = 0\n\n      local x = pos.x\n      local y = pos.y\n      local middle = box.middle\n      local xblock = true\n      local value = 0\n      local normal = Vector(1,0,0)\n\n      if x > middle.x then\n        if y > middle.y then\n          -- up,right\n          local relx = (pos.x - middle.x) / box.xScale\n          local rely = (pos.y - middle.y) / box.yScale\n\n          if relx > rely then\n            --right\n            normal = Vector(1,0,0)\n            value = box.xMax\n            xblock = true\n          else\n            --up\n            normal = Vector(0,1,0)\n            value = box.yMax\n            xblock = false\n          end\n        elseif y <= middle.y then\n          -- down,right\n          local relx = (pos.x - middle.x) / box.xScale\n          local rely = (middle.y - pos.y) / box.yScale\n\n          if relx > rely then\n            --right\n            normal = Vector(1,0,0)\n            value = box.xMax\n            xblock = true\n          else\n            --down\n            normal = Vector(0,-1,0)\n            value = box.yMin\n            xblock = false\n          end\n        end\n      elseif x <= middle.x then\n        if y > middle.y then\n          -- up,left\n          local relx = (middle.x - pos.x) / box.xScale\n          local rely = (pos.y - middle.y) / box.yScale\n\n          if relx > rely then\n            --left\n            normal = Vector(-1,0,0)\n            value = box.xMin\n            xblock = true\n          else\n            --up\n            normal = Vector(0,1,0)\n            value = box.yMax\n            xblock = false\n          end\n        elseif y <= middle.y then\n          -- down,left\n          local relx = (middle.x - pos.x) / box.xScale\n          local rely = (middle.y - pos.y) / box.yScale\n\n          if relx > rely then\n            --left\n            normal = Vector(-1,0,0)\n            value = box.xMin\n            xblock = true\n          else\n            --down\n            normal = Vector(0,-1,0)\n            value = box.yMin\n            xblock = false\n          end\n        end\n      end\n\n      if self.block then\n        Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace)\n      end\n\n      local newVelocity = unit.vVelocity\n      if newVelocity:Dot(normal) >= 0 then\n        return\n      end\n\n      unit:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30)      \n    end\n  })"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/playertables.lua",
    "content": "PLAYERTABLES_VERSION = \"0.90\"\n\n--[[\n  PlayerTables: Player-specific shared state/nettable Library by BMD\n\n  PlayerTables sets up a table that is shared between server (lua) and client (javascript) between specific (but changeable) clients.\n  It is very similar in concept to nettables, but is built on being player-specific state (not sent to all players).\n  Like nettables, PlayerTable state adjustments are mirrored to clients (that are currently subscribed).\n  If players disconnect and then reconnect, PlayerTables automatically transmits their subscribed table states to them when they connect.\n  PlayerTables only support sending numbers, strings, and tables of numbers/strings/tables to clients.\n\n  Installation\n  -\"require\" this file inside your code in order to gain access to the PlayerTables global table.\n  -Ensure that you have the playertables/playertables_base.js in your panorama content scripts folder.\n  -Ensure that playertables/playertables_base.js script is included in your custom_ui_manifest.xml with\n    <scripts>\n      <include src=\"file://{resources}/scripts/playertables/playertables_base.js\" />\n    </scripts>\n\n  Library Usage\n  -Lua\n    -void PlayerTables:CreateTable(tableName, tableContents, pids)\n      Creates a new PlayerTable with the given name, default table contents, and automatically sets up a subscription\n      for all playerIDs in the \"pids\" object.\n    -void PlayerTables:DeleteTable(tableName)\n      Deletes a table by the given name, alerting any subscribed clients.\n    -bool PlayerTables:TableExists(tableName)\n      Returns whether a table currently exists with the given name\n    -void PlayerTables:SetPlayerSubscriptions(tableName, pids)\n      Clear and reset all player subscriptions based on the \"pids\" object.\n    -void PlayerTables:AddPlayerSubscription(tableName, pid)\n      Adds a subscription for the given player ID.\n    -void PlayerTables:RemovePlayerSubscription(tableName, pid)\n      Removes a subscription for the given player ID.\n    -<> PlayerTables:GetTableValue(tableName, key)\n      Returns the current value for this PlayerTable for the given \"key\", or nil if the key doesn't exist.\n    -<> PlayerTables:GetAllTableValues(tableName)\n      Returns the current keys and values for the given table.\n    -void PlayerTables:DeleteTableValue(tableName, key)\n      Delete a key from a playertable.\n    -void PlayerTables:DeleteTableValues(tableName, keys)\n      Delete the keys from a playertable given in the keys object.\n    -void PlayerTables:SetTableValue(tableName, key, value)\n      Set a value for the given key.\n    -void PlayerTables:SetTableValues(tableName, changes)\n      Set a all of the given key-value pairs in the changes object.\n\n\n  -Javascript: include the javascript API with \"var PlayerTables = GameUI.CustomUIConfig().PlayerTables\" at the top of your file.\n    -void PlayerTables.GetAllTableValues(tableName)\n      Returns the current keys and values of all keys within the table \"tableName\".\n      Returns null if no table exists with that name.\n    -void PlayerTables.GetTableValue(tableName, keyName)\n      Returns the current value for the key given by \"keyName\" if it exists on the table given by \"tableName\".\n      Returns null if no table exists, or undefined if the key does not exist.\n    -int PlayerTables.SubscribeNetTableListener(tableName, callback) \n      Sets up a callback for when this playertable is changed.  The callback is of the form:\n        function(tableName, changesObject, deletionsObject).\n          changesObject contains the key-value pairs that were changed\n          deletionsObject contains the keys that were deleted.\n          If changesObject and deletionsObject are both null, then the entire table was deleted.\n\n      Returns an integer value representing this subscription.\n    -void PlayerTables.UnsubscribeNetTableListener(callbackID)\n      Remvoes the existing subscription as given by the callbackID (the integer returned from SubscribeNetTableListener)\n\n  Examples:\n    --Create a Table and set a few values.\n      PlayerTables:CreateTable(\"new_table\", {initial=\"initial value\"}, {0})\n      PlayerTables:SetTableValue(\"new_table\", \"count\", 0)\n      PlayerTables:SetTableValues(\"new_table\", {val1=1, val2=2})\n\n    --Change player subscriptions\n      PlayerTables:RemovePlayerSubscription(\"new_table\", 0)\n      PlayerTables:SetPlayerSubscriptions(\"new_table\", {[1]=true,[3]=true})  -- the pids object can be a map or array type table\n\n    --Retrieve values on the client\n      var PlayerTables = GameUI.CustomUIConfig().PlayerTables;\n      $.Msg(PlayerTables.GetTableVaue(\"new_table\", \"count\"));\n\n    --Subscribe to changes on the client\n      var PlayerTables = GameUI.CustomUIConfig().PlayerTables;\n      PlayerTables.SubscribeNetTableListener(\"new_table\", function(tableName, changes, deletions){\n        $.Msg(tableName + \" changed: \" + changes + \" -- \" + deletions);\n      });\n\n]]\n\nif not PlayerTables then\n  PlayerTables = class({})\nend\n\nfunction PlayerTables:start()\n  self.tables = {}\n  self.subscriptions = {}\n\n  CustomGameEventManager:RegisterListener(\"PlayerTables_Connected\", Dynamic_Wrap(PlayerTables, \"PlayerTables_Connected\"))\nend\n\nfunction PlayerTables:equals(o1, o2, ignore_mt)\n    if o1 == o2 then return true end\n    local o1Type = type(o1)\n    local o2Type = type(o2)\n    if o1Type ~= o2Type then return false end\n    if o1Type ~= 'table' then return false end\n\n    if not ignore_mt then\n        local mt1 = getmetatable(o1)\n        if mt1 and mt1.__eq then\n            --compare using built in method\n            return o1 == o2\n        end\n    end\n\n    local keySet = {}\n\n    for key1, value1 in pairs(o1) do\n        local value2 = o2[key1]\n        if value2 == nil or self:equals(value1, value2, ignore_mt) == false then\n            return false\n        end\n        keySet[key1] = true\n    end\n\n    for key2, _ in pairs(o2) do\n        if not keySet[key2] then return false end\n    end\n    return true\nend\n\nfunction PlayerTables:copy(obj, seen)\n  if type(obj) ~= 'table' then return obj end\n  if seen and seen[obj] then return seen[obj] end\n  local s = seen or {}\n  local res = setmetatable({}, getmetatable(obj))\n  s[obj] = res\n  for k, v in pairs(obj) do res[self:copy(k, s)] = self:copy(v, s) end\n  return res\nend\n\nfunction PlayerTables:PlayerTables_Connected(args)\n  --print('PlayerTables_Connected')\n  --PrintTable(args)\n\n  local pid = args.pid\n  if not pid then\n    return\n  end\n\n  local player = PlayerResource:GetPlayer(pid)\n  --print('player: ', player)\n\n\n  for k,v in pairs(PlayerTables.subscriptions) do\n    if v[pid] then\n      if player then  \n        CustomGameEventManager:Send_ServerToPlayer(player, \"pt_fu\", {name=k, table=PlayerTables.tables[k]} )\n      end\n    end\n  end\nend\n\nfunction PlayerTables:CreateTable(tableName, tableContents, pids)\n  tableContents = tableContents or {}\n  pids = pids or {}\n\n  if pids == true then\n    pids = {}\n    for i=0,DOTA_MAX_TEAM_PLAYERS-1 do\n      pids[#pids+1] = i\n    end\n  end\n\n  if self.tables[tableName] then\n    print(\"[playertables.lua] Warning: player table '\" .. tableName .. \"' already exists.  Overriding.\")\n  end\n\n  self.tables[tableName] = tableContents\n  self.subscriptions[tableName] = {}\n\n  for k,v in pairs(pids) do\n    local pid = k\n    if type(v) == \"number\" then\n      pid = v\n    end\n    if pid >= 0 and pid < DOTA_MAX_TEAM_PLAYERS then\n      self.subscriptions[tableName][pid] = true\n      local player = PlayerResource:GetPlayer(pid)\n      if player then  \n        CustomGameEventManager:Send_ServerToPlayer(player, \"pt_fu\", {name=tableName, table=tableContents} )\n      end\n    else\n      print(\"[playertables.lua] Warning: Pid value '\" .. pid .. \"' is not an integer between [0,\" .. DOTA_MAX_TEAM_PLAYERS .. \"].  Ignoring.\")\n    end\n  end\nend\n\nfunction PlayerTables:DeleteTable(tableName)\n  if not self.tables[tableName] then\n    print(\"[playertables.lua] Warning: Table '\" .. tableName .. \"' does not exist.\")\n    return\n  end\n\n  local table = self.tables[tableName]\n  local pids = self.subscriptions[tableName]\n\n  for k,v in pairs(pids) do\n    local player = PlayerResource:GetPlayer(k)\n    if player then  \n      CustomGameEventManager:Send_ServerToPlayer(player, \"pt_fu\", {name=tableName, table=nil} )\n    end\n  end\n\n  self.tables[tableName] = nil\n  self.subscriptions[tableName] = nil  \nend\n\nfunction PlayerTables:TableExists(tableName)\n  return self.tables[tableName] ~= nil\nend\n\nfunction PlayerTables:SetPlayerSubscriptions(tableName, pids)\n  if not self.tables[tableName] then\n    print(\"[playertables.lua] Warning: Table '\" .. tableName .. \"' does not exist.\")\n    return\n  end\n\n  local table = self.tables[tableName]\n  local oldPids = self.subscriptions[tableName]\n  self.subscriptions[tableName] = {}\n\n  for k,v in pairs(pids) do\n    local pid = k\n    if type(v) == \"number\" then\n      pid = v\n    end\n    if pid >= 0 and pid < DOTA_MAX_TEAM_PLAYERS then\n      self.subscriptions[tableName][pid] = true\n      local player = PlayerResource:GetPlayer(pid)\n      if player and oldPids[pid] == nil then  \n        CustomGameEventManager:Send_ServerToPlayer(player, \"pt_fu\", {name=tableName, table=table} )\n      end\n    else\n      print(\"[playertables.lua] Warning: Pid value '\" .. pid .. \"' is not an integer between [0,\" .. DOTA_MAX_TEAM_PLAYERS .. \"].  Ignoring.\")\n    end\n  end\nend\n\nfunction PlayerTables:AddPlayerSubscription(tableName, pid)\n  if not self.tables[tableName] then\n    print(\"[playertables.lua] Warning: Table '\" .. tableName .. \"' does not exist.\")\n    return\n  end\n\n  local table = self.tables[tableName]\n  local oldPids = self.subscriptions[tableName]\n\n  if not oldPids[pid] then\n    if pid >= 0 and pid < DOTA_MAX_TEAM_PLAYERS then\n      self.subscriptions[tableName][pid] = true\n      local player = PlayerResource:GetPlayer(pid)\n      if player then  \n        CustomGameEventManager:Send_ServerToPlayer(player, \"pt_fu\", {name=tableName, table=table} )\n      end\n    else\n      print(\"[playertables.lua] Warning: Pid value '\" .. v .. \"' is not an integer between [0,\" .. DOTA_MAX_TEAM_PLAYERS .. \"].  Ignoring.\")\n    end\n  end\nend\n\nfunction PlayerTables:RemovePlayerSubscription(tableName, pid)\n  if not self.tables[tableName] then\n    print(\"[playertables.lua] Warning: Table '\" .. tableName .. \"' does not exist.\")\n    return\n  end\n\n  local table = self.tables[tableName]\n  local oldPids = self.subscriptions[tableName]\n  oldPids[pid] = nil\nend\n\nfunction PlayerTables:GetTableValue(tableName, key)\n  if not self.tables[tableName] then\n    print(\"[playertables.lua] Warning: Table '\" .. tableName .. \"' does not exist.\")\n    return\n  end\n\n  local ret = self.tables[tableName][key]\n  if type(ret) == \"table\" then\n    return self:copy(ret)\n  end\n  return ret\nend\n\nfunction PlayerTables:GetAllTableValues(tableName)\n  if not self.tables[tableName] then\n    print(\"[playertables.lua] Warning: Table '\" .. tableName .. \"' does not exist.\")\n    return\n  end\n\n  local ret = self.tables[tableName]\n  if type(ret) == \"table\" then\n    return self:copy(ret)\n  end\n  return ret\nend\n\nfunction PlayerTables:DeleteTableKey(tableName, key)\n  if not self.tables[tableName] then\n    print(\"[playertables.lua] Warning: Table '\" .. tableName .. \"' does not exist.\")\n    return\n  end\n\n  local table = self.tables[tableName]\n  local pids = self.subscriptions[tableName]\n\n  if table[key] ~= nil then\n    table[key] = nil\n    for pid,v in pairs(pids) do\n      local player = PlayerResource:GetPlayer(pid)\n      if player then  \n        CustomGameEventManager:Send_ServerToPlayer(player, \"pt_kd\", {name=tableName, keys={[key]=true}} )\n      end\n    end\n  end\nend\n\nfunction PlayerTables:DeleteTableKeys(tableName, keys)\n  if not self.tables[tableName] then\n    print(\"[playertables.lua] Warning: Table '\" .. tableName .. \"' does not exist.\")\n    return\n  end\n\n  local table = self.tables[tableName]\n  local pids = self.subscriptions[tableName]\n\n  local deletions = {}\n  local notempty = false\n\n  for k,v in pairs(keys) do\n    if type(k) == \"string\" then\n      if table[k] ~= nil then\n        deletions[k] = true\n        table[k] = nil\n        notempty = true\n      end\n    elseif type(v) == \"string\" then\n      if table[v] ~= nil then\n        deletions[v] = true\n        table[v] = nil\n        notempty = true\n      end\n    end\n  end\n\n  if notempty then\n    for pid,v in pairs(pids) do\n      local player = PlayerResource:GetPlayer(pid)\n      if player then  \n        CustomGameEventManager:Send_ServerToPlayer(player, \"pt_kd\", {name=tableName, keys=deletions} )\n      end\n    end\n  end\nend\n\nfunction PlayerTables:SetTableValue(tableName, key, value)\n  if value == nil then\n    self:DeleteTableKey(tableName, key)\n    return \n  end\n  if not self.tables[tableName] then\n    print(\"[playertables.lua] Warning: Table '\" .. tableName .. \"' does not exist.\")\n    return\n  end\n\n  local table = self.tables[tableName]\n  local pids = self.subscriptions[tableName]\n\n  if not self:equals(table[key], value) then\n    table[key] = value\n    for pid,v in pairs(pids) do\n      local player = PlayerResource:GetPlayer(pid)\n      if player then  \n        CustomGameEventManager:Send_ServerToPlayer(player, \"pt_uk\", {name=tableName, changes={[key]=value}} )\n      end\n    end\n  end\nend\n\nfunction PlayerTables:SetTableValues(tableName, changes)\n  if not self.tables[tableName] then\n    print(\"[playertables.lua] Warning: Table '\" .. tableName .. \"' does not exist.\")\n    return\n  end\n\n  local table = self.tables[tableName]\n  local pids = self.subscriptions[tableName]\n\n  for k,v in pairs(changes) do\n    if self:equals(table[k], v) then\n      changes[k] = nil\n    else\n      table[k] = v\n    end\n  end\n\n  local notempty, _ = next(changes, nil)\n\n  if notempty then\n    for pid,v in pairs(pids) do\n      local player = PlayerResource:GetPlayer(pid)\n      if player then  \n        CustomGameEventManager:Send_ServerToPlayer(player, \"pt_uk\", {name=tableName, changes=changes} )\n      end\n    end\n  end\nend\n\nif not PlayerTables.tables then PlayerTables:start() end"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/projectiles.lua",
    "content": "PROJECTILES_VERSION = \"1.00\"\n\nPROJECTILES_THINK = 0.01\n\nPROJECTILES_NOTHING = 0\nPROJECTILES_DESTROY = 1\nPROJECTILES_BOUNCE = 2\nPROJECTILES_FOLLOW = 3\n\nif Projectiles == nil then\n  print ( '[PROJECTILES] creating Projectiles' )\n  Projectiles = {}\n  Projectiles.__index = Projectiles\nend\n\nfunction Projectiles:start()\n  Projectiles = self\n\n  if self.thinkEnt == nil then\n    self.timers = {}\n    \n    -- = Entities:CreateByClassname(\"info_target\")\n    self.thinkEnt = SpawnEntityFromTableSynchronous(\"info_target\", {targetname=\"projectiles_lua_thinker\"})\n    --self.treeCutter = CreateUnitByName('npc_dummy_unit', Vector(0,0,0) , true, nil, nil, DOTA_TEAM_NOTEAM)\n    --self.treeCutter:FindAbilityByName(\"reflex_dummy_unit\"):SetLevel(1)\n    --self.treeCutter:AddAbility(\"tree_cutter\")\n    --self.treeCutter:FindAbilityByName(\"tree_cutter\"):SetLevel(1)\n    \n    self.thinkEnt:SetThink(\"Think\", self, \"projectiles\", PROJECTILES_THINK)\n  end\nend\n\nfunction Projectiles:Think()\n  if GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then\n    return\n  end\n\n  -- Track game time, since the dt passed in to think is actually wall-clock time not simulation time.\n  local now = GameRules:GetGameTime()\n  if Projectiles.t0 == nil then\n    Projectiles.t0 = now\n  end\n  local dt = now - Projectiles.t0\n  Projectiles.t0 = now\n\n  if dt > 0 then\n    -- Process timers\n    for k,v in pairs(Projectiles.timers) do\n      local bUseGameTime = true\n      -- Check if the timer has finished\n        \n      -- Run the callback\n      local status, nextCall = pcall(v.callback, Projectiles, v)\n\n      -- Make sure it worked\n      if status then\n        -- Check if it needs to loop\n        if nextCall then\n          -- Change it's end time\n          v.endTime = nextCall\n        else\n          Projectiles.timers[k] = nil\n        end\n      else\n        Projectiles.timers[k] = nil\n        print('[PROJECTILES] Timer error:' .. nextCall)\n      end\n    end  \n  end\n\n  return PROJECTILES_THINK\nend\n\nfunction Projectiles:CreateTimer(name, args)\n  if not args.endTime or not args.callback then\n    print(\"Invalid timer created: \"..name)\n    return\n  end\n\n  Projectiles.timers[name] = args\nend\n\nfunction Projectiles:RemoveTimer(name)\n  Projectiles.timers[name] = nil\nend\n\nfunction Projectiles:CalcSlope(pos, unit, dir)\n\n  dir = Vector(dir.x, dir.y, 0):Normalized()\n  local f = GetGroundPosition(pos + dir, unit)\n  local b = GetGroundPosition(pos - dir, unit)\n\n  return (f - b):Normalized() \nend\n\nfunction Projectiles:CalcNormal(pos, unit, scale)\n  scale = scale or 1\n  local nscale = -1 * scale\n  local zl = GetGroundPosition(pos + Vector(nscale,0,0), unit).z\n  local zr = GetGroundPosition(pos + Vector(scale,0,0), unit).z\n  local zu = GetGroundPosition(pos + Vector(0,scale,0), unit).z\n  local zd = GetGroundPosition(pos + Vector(0,nscale,0), unit).z\n  return Vector(zl - zr, zd - zu, 2*scale):Normalized()\nend\n\nfunction Projectiles:CreateProjectile(projectile)\n  -- set defaults\n  projectile.vVelocity = projectile.vVelocity or Vector(0,0,0)\n  projectile.fDistance = projectile.fDistance or 1000\n  projectile.fStartRadius = projectile.fStartRadius or 100\n  projectile.fEndRadius = projectile.fEndRadius or 100\n  projectile.iPositionCP = projectile.iPositionCP or 0\n  projectile.iVelocityCP = projectile.iVelocityCP or 1\n  projectile.fExpireTime = projectile.fExpireTime or 10\n  projectile.ControlPoints = projectile.ControlPoints or {}\n  projectile.UnitBehavior = projectile.UnitBehavior or PROJECTILES_DESTROY\n  if projectile.bIgnoreSource == nil then projectile.bIgnoreSource = true end\n  if projectile.bMultipleHits == nil then projectile.bMultipleHits = false end\n  if projectile.bRecreateOnChange == nil then projectile.bRecreateOnChange = true end\n  if projectile.bZCheck == nil then projectile.bZCheck = true end\n  projectile.fRehitDelay = projectile.fRehitDelay or 1\n  projectile.TreeBehavior = projectile.TreeBehavior or PROJECTILES_DESTROY\n  if projectile.bCutTrees == nil then projectile.bCutTrees = false end\n  if projectile.bDestroyImmediate == nil then projectile.bDestroyImmediate = true end\n  projectile.WallBehavior = projectile.WallBehavior or PROJECTILES_DESTROY\n  projectile.GroundBehavior = projectile.GroundBehavior or PROJECTILES_DESTROY\n  projectile.bGroundLock = projectile.bGroundLock or false\n  projectile.fGroundOffset = projectile.fGroundOffset or 40\n  projectile.nChangeMax = projectile.nChangeMax or 1\n  projectile.fChangeDelay = projectile.fChangeDelay or .1\n  projectile.UnitTest = projectile.UnitTest or function() return false end\n  projectile.OnUnitHit = projectile.OnUnitHit or function() return end\n  projectile.OnTreeHit = projectile.OnTreeHit or function() return end\n  projectile.OnWallHit = projectile.OnWallHit or function() return end\n  projectile.OnGroundHit = projectile.OnGroundHit or function() return end\n  projectile.OnFinish = projectile.OnFinish or nil\n\n  projectile.ControlPointForwards = projectile.ControlPointForwards or {}\n  projectile.ControlPointOrientations = projectile.ControlPointOrientations or {}\n  projectile.ControlPointEntityAttaches = projectile.ControlPointEntityAttaches or {}\n\n  if projectile.bTreeFullCollision == nil then projectile.bTreeFullCollision = false end\n  projectile.bProvidesVision = projectile.bProvidesVision or false\n  if projectile.bFlyingVision == nil then projectile.bFlyingVision = true end\n  projectile.iVisionRadius = projectile.iVisionRadius or 200\n  projectile.iVisionTeamNumber = projectile.iVisionTeamNumber or projectile.Source:GetTeam()\n  projectile.fVisionTickTime = projectile.fVisionTickTime or .1\n  if projectile.fVisionTickTime <= 0 then\n    projectile.fVisionTickTime = .1\n  end\n  projectile.fVisionLingerDuration = projectile.fVisionLingerDuration or projectile.fVisionTickTime\n  if projectile.fVisionLingerDuration < projectile.fVisionTickTime then\n    projectile.fVisionLingerDuration = projectile.fVisionTickTime\n  end\n\n\n  --[[if projectile.TreeBehavior == PROJECTILES_BOUNCE or projectile.WallBehavior == PROJECTILES_BOUNCE \n    or projectile.GroundBehavior == PROJECTILES_BOUNCE or projectile.GroundBehavior == PROJECTILES_FOLLOW then\n    projectile.bDynamic = true\n  elseif projectile.bDynamic == nil then\n    projectile.bDynamic = false\n  end]]\n\n  if projectile.vSpawnOrigin and projectile.vSpawnOrigin.unit then\n    local attach = projectile.vSpawnOrigin.unit:ScriptLookupAttachment(projectile.vSpawnOrigin.attach)\n    local attachPos = projectile.vSpawnOrigin.unit:GetAttachmentOrigin(attach)\n    projectile.vSpawnOrigin = attachPos + (projectile.vSpawnOrigin.offset or Vector(0,0,0))\n  else\n    projectile.vSpawnOrigin = projectile.vSpawnOrigin or Vector(0,0,0)\n  end\n\n  projectile.rehit = {}\n  projectile.pos = projectile.vSpawnOrigin\n  projectile.vel = projectile.vVelocity / 30\n  projectile.prevVel = projectile.vel\n  projectile.prevPos = projectile.vSpawnOrigin\n  projectile.radius = projectile.fStartRadius\n  projectile.changes = projectile.nChangeMax\n\n  projectile.spawnTime = GameRules:GetGameTime()\n  projectile.changeTime = projectile.spawnTime\n  projectile.distanceTraveled = 0\n\n  projectile.visionTick = math.ceil(projectile.fVisionTickTime * 30)\n  projectile.currentFrame = projectile.visionTick\n\n  if projectile.fRadiusStep then\n    projectile.radiusStep = projectile.fRadiusStep / 30\n  else\n    projectile.radiusStep = (projectile.fEndRadius - projectile.fStartRadius) / (projectile.fDistance / projectile.vel:Length())\n  end\n\n  projectile.id = ParticleManager:CreateParticle(projectile.EffectName, PATTACH_CUSTOMORIGIN, nil)\n  ParticleManager:SetParticleAlwaysSimulate(projectile.id)\n  for k,v in pairs(projectile.ControlPoints) do\n    ParticleManager:SetParticleControl(projectile.id, k, v)\n  end\n  for k,v in pairs(projectile.ControlPointForwards) do\n    ParticleManager:SetParticleControlForward(projectile.id, k, v)\n  end\n  for k,v in pairs(projectile.ControlPointOrientations) do\n    ParticleManager:SetParticleControlOrientation(projectile.id, k, v[1], v[2], v[3])\n  end\n  for k,v in pairs(projectile.ControlPointEntityAttaches) do\n    local unit = v.unit or projectile.Source\n    local pattach = v.pattach or PATTACH_CUSTOMORIGIN\n    local attachPoint = v.attachPoint\n    local origin = v.origin or projectile.vSpawnOrigin\n    ParticleManager:SetParticleControlEnt(projectile.id, k, unit, pattach, attachPoint, origin, true)\n  end\n\n  ParticleManager:SetParticleControl(projectile.id, projectile.iPositionCP, projectile.vSpawnOrigin)\n  if projectile.ControlPointForwards[1] == nil and projectile.ControlPointOrientations[1] == nil then\n    ParticleManager:SetParticleControlForward(projectile.id, projectile.iPositionCP, projectile.vel:Normalized())\n  end\n  --ParticleManager:SetParticleControlEnt(projectile.id, projectile.iPositionCP, projectile.Source, PATTACH_CUSTOMORIGIN, nil, projectile.vSpawnOrigin, true)\n  --ParticleManager:SetParticleControlForward(projectile.id, projectile.iPositionCP, projectile.Source:GetForwardVector())\n\n  if projectile.GroundBehavior == PROJECTILES_FOLLOW then\n    local future = projectile.pos + projectile.vel\n    local ground = GetGroundPosition(projectile.pos, projectile.Source) + Vector(0,0,projectile.fGroundOffset)\n    if ground.z > future.z then\n      local slope = Projectiles:CalcSlope(ground, projectile.Source, projectile.vel)\n      ParticleManager:SetParticleControl(projectile.id, projectile.iVelocityCP, projectile.vel:Length() * slope * 30)\n    else\n      ParticleManager:SetParticleControl(projectile.id, projectile.iVelocityCP, projectile.vel * 30)\n    end\n  --[[elseif projectile.GroundBehavior == PROJECTILES_BOUNCE then\n    local future = projectile.pos + projectile.vel\n    local ground = GetGroundPosition(projectile.pos, projectile.Source) + Vector(0,0,projectile.fGroundOffset)\n    if ground.z > future.z then\n      local normal = Projectiles:CalcNormal(ground, projectile.Source)\n      ParticleManager:SetParticleControl(projectile.id, projectile.iVelocityCP, ((-2 * projectile.vel:Dot(normal) * normal) + projectile.vel) * 30)\n    end]]\n  else\n    ParticleManager:SetParticleControl(projectile.id, projectile.iVelocityCP, projectile.vel * 30)\n  end\n\n  --[[if not projectile.bDynamic then\n    projectile.changes = 0\n    --ParticleManager:ReleaseParticleIndex(projectile.id)\n  end]]\n\n  function projectile:GetCreationTime()\n    return projectile.spawnTime\n  end\n  function projectile:GetDistanceTraveled()\n    return projectile.distanceTraveled\n  end\n  function projectile:GetPosition()\n    return projectile.pos\n  end\n  function projectile:GetVelocity()\n    return projectile.vel * 30\n  end\n  function projectile:SetVelocity(newVel, newPos)\n    if projectile.changes > 0 then\n      projectile.changes = projectile.changes - 1\n      projectile.vel = newVel / 30\n      projectile.changeTime = GameRules:GetGameTime() + projectile.fChangeDelay\n      --print ('setting CP' .. projectile.iVelocityCP .. 'to ' .. tostring(newVel))\n\n      if projectile.bRecreateOnChange then\n        ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate)\n        projectile.id = ParticleManager:CreateParticle(projectile.EffectName, PATTACH_CUSTOMORIGIN, nil)\n        ParticleManager:SetParticleAlwaysSimulate(projectile.id)\n        for k,v in pairs(projectile.ControlPoints) do\n          ParticleManager:SetParticleControl(projectile.id, k, v)\n        end\n        for k,v in pairs(projectile.ControlPointForwards) do\n          ParticleManager:SetParticleControlForward(projectile.id, k, v)\n        end\n        for k,v in pairs(projectile.ControlPointOrientations) do\n          ParticleManager:SetParticleControlOrientation(projectile.id, k, v[1], v[2], v[3])\n        end\n        for k,v in pairs(projectile.ControlPointEntityAttaches) do\n          local unit = v.unit or projectile.Source\n          local pattach = v.pattach or PATTACH_CUSTOMORIGIN\n          local attachPoint = v.attachPoint\n          local origin = v.origin or newPos or projectile.pos + projectile.vel\n          ParticleManager:SetParticleControlEnt(projectile.id, k, unit, pattach, attachPoint, origin, true)\n        end\n\n        ParticleManager:SetParticleControl(projectile.id, projectile.iPositionCP, newPos or projectile.pos + projectile.vel)\n        if projectile.ControlPointForwards[1] == nil and projectile.ControlPointOrientations[1] == nil then\n          ParticleManager:SetParticleControlForward(projectile.id, projectile.iPositionCP, projectile.vel:Normalized())\n        end\n      end\n      \n      ParticleManager:SetParticleControl(projectile.id, projectile.iVelocityCP, newVel)\n    end\n  end\n  function projectile:Destroy()\n    ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate)\n    Projectiles:RemoveTimer(projectile.ProjectileTimerName)\n  end\n\n  projectile.ProjectileTimerName = DoUniqueString('proj')\n  Projectiles:CreateTimer(projectile.ProjectileTimerName, {\n    endTime = GameRules:GetGameTime(),\n    useGameTime = true,\n    callback = function()\n      local curTime = GameRules:GetGameTime()\n      local vel = projectile.vel\n      local pos = projectile.pos\n\n      if projectile.bGroundLock then\n        pos.z = GetGroundPosition(pos, projectile.Source).z + projectile.fGroundOffset\n      end\n\n      -- checks\n      if curTime > projectile.spawnTime + projectile.fExpireTime or projectile.distanceTraveled > projectile.fDistance then\n        ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate)\n        if projectile.OnFinish then\n          local status, out = pcall(projectile.OnFinish, projectile, pos)\n          if not status then\n            print('[PROJECTILES] Collision UnitTest Failure!: ' .. out)\n          end\n        end\n        return\n      end\n      \n      -- update values\n      local radius = projectile.radius\n      local rad2 = radius * radius\n      \n      -- debug draw\n      if projectile.draw then\n        local alpha = 1\n        local color = Vector(200,0,0)\n        if type(projectile.draw) == \"table\" then\n          alpha = projectile.draw.alpha or alpha\n          color = projectile.draw.color or color\n        end\n        DebugDrawSphere(pos, color, alpha, radius, true, .01)\n      end\n\n      -- frame and sub-frame collision checks\n      local subpos = pos\n      local velLength = vel:Length()\n      local tot = math.max(1, math.ceil(velLength / 32)) -- lookahead number\n      local div = 1 / tot\n\n      -- unit detection prep\n      local framehalf = pos + (vel * div * (tot-1))/2\n      local framerad = (framehalf - pos):Length() + radius\n\n      --print(tostring(framehalf) .. ' -- ' .. tostring(pos) .. ' -- ' .. (framehalf-pos):Length() .. ' -- ' .. radius)\n      --DebugDrawSphere(framehalf, Vector(0,0,200), 0, framerad, true, .01)\n      --local ents = Entities:FindAllInSphere(framehalf, framerad)\n\n      --local ents = FindUnitsInRadius(0, framehalf, nil, framerad, DOTA_UNIT_TARGET_TEAM_BOTH, DOTA_UNIT_TARGET_ALL, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false)\n      local ents = nil\n      if projectile.filter then\n        if type(projectile.filter) == \"table\" then\n          ents = projectile.filter\n        else\n          local status = nil\n          status, ents = pcall(projectile.filter, projectile)\n          if not status then\n            print('[PROJECTILES] Projectile Filter Failure!: ' .. ents)\n          end\n        end\n      else\n        if projectile.bUseFindUnitsInRadius ~= nil then\n          if projectile.bUseFindUnitsInRadius then\n            ents = FindUnitsInRadius(0, framehalf, nil, framerad, DOTA_UNIT_TARGET_TEAM_BOTH, DOTA_UNIT_TARGET_ALL, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false)\n          else\n            ents = Entities:FindAllInSphere(framehalf, framerad)\n          end\n        else\n          if projectile.bZCheck then\n            ents = Entities:FindAllInSphere(framehalf, framerad)\n          else\n            ents = FindUnitsInRadius(0, framehalf, nil, framerad, DOTA_UNIT_TARGET_TEAM_BOTH, DOTA_UNIT_TARGET_ALL, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false)\n          end\n        end\n      end\n\n      --DebugDrawSphere(pos, Vector(100,100,0), 1, framerad, true, .01)\n\n      for index=1,tot do\n        -- unit check\n        for i=1,#ents do\n          local v = ents[i]\n\n          local zOffset = v.zOffset or 0\n          local height = (v.height or 150) + zOffset\n\n          local org = v:GetAbsOrigin()\n          local nozorg = Vector(org.x, org.y, 0)\n          local nozpos = Vector(subpos.x, subpos.y, 0)\n          local nozCheck = VectorDistanceSq(nozpos, nozorg) <= rad2\n\n          local zCheck = true\n          if projectile.bZCheck then\n            zCheck = subpos.z >= org.z + zOffset and subpos.z <= org.z + height\n          end\n\n          if IsValidEntity(v) and v.GetUnitName and v:IsAlive() and (not projectile.bIgnoreSource or (projectile.bIgnoreSource and v ~= projectile.Source)) and nozCheck and zCheck then\n            --VectorDistanceSq(nozpos, org) <= rad2 and subpos.z >= orgz + zOffset and subpos.z <= orgz + height then\n            local time = projectile.rehit[v:entindex()]\n            if time==nil or curTime > time then\n              local status, test = pcall(projectile.UnitTest, projectile, v)\n\n              if not status then\n                print('[PROJECTILES] Projectile UnitTest Failure!: ' .. test)\n              elseif test then\n                local status, action = pcall(projectile.OnUnitHit, projectile, v)\n                if not status then\n                  print('[PROJECTILES] Projectile OnUnitHit Failure!: ' .. action)\n                end\n\n                if projectile.UnitBehavior == PROJECTILES_DESTROY then\n                  ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate)\n                  if projectile.OnFinish then\n                    local status, out = pcall(projectile.OnFinish, projectile, subpos)\n                    if not status then\n                      print('[PROJECTILES] Projectile OnFinish Failure!: ' .. out)\n                    end\n                  end\n                  return\n                elseif projectile.UnitBehavior == PROJECTILES_BOUNCE then\n                  -- bounce math\n                end\n\n                if projectile.bMultipleHits then\n                  projectile.rehit[v:entindex()] = curTime + projectile.fRehitDelay\n                else\n                  projectile.rehit[v:entindex()] = curTime + 10000\n                end\n              end\n            end\n          end\n        end\n\n        local navConnect = not GridNav:IsTraversable(subpos) or GridNav:IsBlocked(subpos) -- GNV connect\n        local ground = GetGroundPosition(subpos, projectile.Source) + Vector(0,0,projectile.fGroundOffset)\n        --print(tostring(ground.z) .. ' -- ' .. tostring(pos.z))\n        local groundConnect = ground.z > pos.z -- ground\n        if navConnect then\n          if projectile.bCutTrees or projectile.TreeBehavior ~= PROJECTILES_NOTHING then\n            local ents = GridNav:GetAllTreesAroundPoint(subpos, projectile.radius, projectile.bTreeFullCollision)\n            --print('tree hit')\n            --local vec = Vector(GridNav:GridPosToWorldCenterX(GridNav:WorldToGridPosX(subpos.x)), GridNav:GridPosToWorldCenterY(GridNav:WorldToGridPosY(subpos.y)), ground.z - projectile.fGroundOffset)\n            --DebugDrawCircle(vec, Vector(200,200,200), 100, 10, true, .5)\n            --local ents = Entities:FindAllByClassnameWithin(\"ent_dota_tree\", vec, 70)\n            \n            for i=1,#ents do\n              local tree = ents[i]\n              if not projectile.bZCheck or (pos.z < ground.z + 280 + radius - projectile.fGroundOffset and pos.z + radius + projectile.fGroundOffset > ground.z) then\n                if projectile.bCutTrees then\n                  tree:CutDown(projectile.Source:GetTeamNumber())\n                  navConnect = not GridNav:IsTraversable(subpos) or GridNav:IsBlocked(subpos)\n                end\n\n                if projectile.bCutTrees or projectile.TreeBehavior ~= PROJECTILES_NOTHING then\n                  local status, action = pcall(projectile.OnTreeHit, projectile, tree)\n                  if not status then\n                    print('[PROJECTILES] Projectile OnTreeHit Failure!: ' .. action)\n                  end\n                end\n\n                if projectile.TreeBehavior == PROJECTILES_DESTROY then\n                  ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate)\n                  if projectile.OnFinish then\n                    local status, out = pcall(projectile.OnFinish, projectile, subpos)\n                    if not status then\n                      print('[PROJECTILES] Projectile OnFinish Failure!: ' .. out)\n                    end\n                  end\n                  return\n                elseif projectile.TreeBehavior == PROJECTILES_BOUNCE and projectile.changes > 0 and curTime >= projectile.changeTime then\n                  -- bounce calculation\n                end\n              end\n            end\n          end\n        end\n        if projectile.WallBehavior ~= PROJECTILES_NOTHING and groundConnect then--ground.z > projectile.prevPos.z then\n          local normal = Projectiles:CalcNormal(ground, projectile.Source, 32)\n          --print(normal)\n          if normal.z < .6 then\n            local vec = Vector(GridNav:GridPosToWorldCenterX(GridNav:WorldToGridPosX(subpos.x)), GridNav:GridPosToWorldCenterY(GridNav:WorldToGridPosY(subpos.y)), ground.z)\n            local status, action = pcall(projectile.OnWallHit, projectile, vec)\n            if not status then\n              print('[PROJECTILES] Projectile OnWallHit Failure!: ' .. action)\n            end\n\n            if projectile.WallBehavior == PROJECTILES_DESTROY then\n              ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate)\n              if projectile.OnFinish then\n                local status, out = pcall(projectile.OnFinish, projectile, subpos)\n                if not status then\n                  print('[PROJECTILES] Projectile OnFinish Failure!: ' .. out)\n                end\n              end\n              return\n            elseif projectile.WallBehavior == PROJECTILES_BOUNCE and projectile.changes > 0 and curTime >= projectile.changeTime then\n              -- bounce calculation\n              --local normal = Projectiles:CalcNormal(ground, projectile.Source)\n              --DebugDrawLine_vCol(subpos, subpos + normal * 200, Vector(255,255,255), true, 1)\n              -- remove z\n              normal.z = 0\n              normal = normal:Normalized()\n              --DebugDrawLine_vCol(subpos, subpos + normal * 200, Vector(0,255,0), true, 1)\n              projectile:SetVelocity(((-2 * vel:Dot(normal) * normal) + vel) * 30, subpos)\n              break\n            end\n          end\n        end\n        if projectile.GroundBehavior ~= PROJECTILES_NOTHING and groundConnect then\n            --print('groundConnect')\n            if projectile.GroundBehavior == PROJECTILES_DESTROY then\n              ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate)\n              local status, action = pcall(projectile.OnGroundHit, projectile, ground)\n              if not status then\n                print('[PROJECTILES] Projectile OnGroundHit Failure!: ' .. action)\n              end\n\n              if projectile.OnFinish then\n                local status, out = pcall(projectile.OnFinish, projectile, subpos)\n                if not status then\n                  print('[PROJECTILES] Projectile OnFinish Failure!: ' .. out)\n                end\n              end\n              return\n            elseif projectile.GroundBehavior == PROJECTILES_BOUNCE and projectile.changes > 0 and curTime >= projectile.changeTime then\n              -- bounce calculation\n              local status, action = pcall(projectile.OnGroundHit, projectile, ground)\n              if not status then\n                print('[PROJECTILES] Projectile OnGroundHit Failure!: ' .. action)\n              end\n\n              local normal = Projectiles:CalcNormal(ground, projectile.Source)\n              projectile:SetVelocity(((-2 * vel:Dot(normal) * normal) + vel) * 30, subpos)\n              --v:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30)\n              break\n\n            elseif projectile.GroundBehavior == PROJECTILES_FOLLOW and projectile.changes > 0 and curTime >= projectile.changeTime then\n              -- follow calculation\n              \n              local slope = Projectiles:CalcSlope(ground, projectile.Source, vel)\n              local dir = vel:Normalized()\n              --projectile.fGroundOffset = projectile.fGroundOffset - 10\n              --print('follow ' .. slope:Dot(vel:Normalized()) .. ' -- ' .. projectile.changes)\n              if dir.z < slope.z and slope:Dot(dir) < 1 then\n                local status, action = pcall(projectile.OnGroundHit, projectile, ground)\n                if not status then\n                  print('[PROJECTILES] Projectile OnGroundHit Failure!: ' .. action)\n                end\n                --projectile.fGroundOffset = projectile.fGroundOffset - 10\n                --print('follow under')\n                projectile:SetVelocity(velLength * 30 * slope, subpos)\n              end\n              break\n            end\n        end\n        --DebugDrawCircle(subpos, Vector(200,200,200), 100, 10, true, .01)\n        subpos = pos + vel * (div * index)\n\n        if projectile.distanceTraveled + (subpos-pos):Length() > projectile.fDistance then\n          ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate)\n          if projectile.OnFinish then\n            local status, out = pcall(projectile.OnFinish, projectile, subpos)\n            if not status then\n              print('[PROJECTILES] Projectile OnFinish Failure!: ' .. out)\n            end\n          end\n          return\n        end\n\n        if projectile.bGroundLock then\n          subpos.z = GetGroundPosition(subpos, projectile.Source).z + projectile.fGroundOffset\n        end\n      end\n\n      if projectile.bProvidesVision then\n        if projectile.currentFrame == projectile.visionTick then\n          AddFOWViewer(projectile.iVisionTeamNumber, projectile.pos, projectile.iVisionRadius, projectile.fVisionLingerDuration, not projectile.bFlyingVision)\n          projectile.currentFrame = 0\n        else\n          projectile.currentFrame = projectile.currentFrame + 1\n        end\n      end\n\n      projectile.radius = radius + projectile.radiusStep\n      projectile.prevPos = projectile.pos\n      projectile.distanceTraveled = projectile.distanceTraveled + velLength\n      projectile.pos = pos + vel\n\n\n      return curTime\n    end\n  })\n\n  return projectile\nend\n\nif not Projectiles.timers then Projectiles:start() end"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/selection.lua",
    "content": "SELECTION_VERSION = \"1.00\"\n\n--[[\n    Lua-controlled Selection Library by Noya\n    \n    Installation:\n    - \"require\" this file inside your code in order to add the new API functions to the PlayerResource global\n    - Additionally, ensure your game scripts custom_net_tables.txt has a \"selection\" entry\n    - Finally, ensure that you have the following files correctly added and included in your panorama content folder\n        selection.xml, and include line on custom_ui_manifest.xml, on layout/custom_game/ folder\n        selection folder containing selection.js and selection_filter.js, on /scripts/ folder\n\n    Usage:\n    - Functions with unit_args can recieve an Entity Index, a NPC Handle, or a table of each type.\n    - Functions with unit can recieve an Entity Index or NPC Handle\n\n    * Create a new selection for the player\n        PlayerResource:NewSelection(playerID, unit_args)\n\n    * Add units to the current selection of the player\n        PlayerResource:AddToSelection(playerID, unit_args)\n    \n    * Remove units by index from the player selection group\n        PlayerResource:RemoveFromSelection(playerID, unit_args)\n    \n    * Returns the list of units by entity index that are selected by the player\n        PlayerResource:GetSelectedEntities(playerID)\n\n    * Deselect everything, selecting the main hero (which can be redirected to another entity)\n        PlayerResource:ResetSelection(playerID)\n\n    * Get the index of the first selected unit of the player\n        PlayerResource:GetMainSelectedEntity(playerID)\n    \n    * Check if a unit is selected or not by a player, returns bool\n        PlayerResource:IsUnitSelected(playerID, unit_args)\n\n    * Force a refresh of the current selection on all players, useful after abilities are removed\n        PlayerResource:RefreshSelection()\n    \n    * Redirects the selection of the main hero to another entity of choice\n        PlayerResource:SetDefaultSelectionEntity(playerID, unit)\n    \n    * Redirects the selection of any entity to another entity of choice\n        hero:SetSelectionOverride(unit)\n\n    * Use -1 to reset to default\n        PlayerResource:SetDefaultSelectionEntity(playerID, -1)\n        hero:SetSelectionOverride(-1)\n\n    Notes:\n    - Enemy units that you don't control can't be added to the selection group of a player\n    - This library requires \"libraries/timers.lua\" to be present in your vscripts directory.\n\n--]]\n\nfunction CDOTA_PlayerResource:NewSelection(playerID, unit_args)\n    local player = self:GetPlayer(playerID)\n    if player then\n        local entities = Selection:GetEntIndexListFromTable(unit_args)\n        CustomGameEventManager:Send_ServerToPlayer(player, \"selection_new\", {entities = entities})\n    end\nend \n\nfunction CDOTA_PlayerResource:AddToSelection(playerID, unit_args)\n    local player = self:GetPlayer(playerID)\n    if player then\n        local entities = Selection:GetEntIndexListFromTable(unit_args)\n        CustomGameEventManager:Send_ServerToPlayer(player, \"selection_add\", {entities = entities})\n    end\nend\n\nfunction CDOTA_PlayerResource:RemoveFromSelection(playerID, unit_args)\n    local player = self:GetPlayer(playerID)\n    if player then\n        local entities = Selection:GetEntIndexListFromTable(unit_args)\n        CustomGameEventManager:Send_ServerToPlayer(player, \"selection_remove\", {entities = entities})\n    end\nend\n\nfunction CDOTA_PlayerResource:ResetSelection(playerID)\n    local player = self:GetPlayer(playerID)\n    if player then\n        CustomGameEventManager:Send_ServerToPlayer(player, \"selection_reset\", {})\n    end\nend\n\nfunction CDOTA_PlayerResource:GetSelectedEntities(playerID)\n    return Selection.entities[playerID] or {}\nend\n\nfunction CDOTA_PlayerResource:GetMainSelectedEntity(playerID)\n    local selectedEntities = self:GetSelectedEntities(playerID) \n    return selectedEntities and selectedEntities[\"0\"]\nend\n\nfunction CDOTA_PlayerResource:IsUnitSelected(playerID, unit)\n    if not unit then return false end\n    local entIndex = type(unit)==\"number\" and unit or IsValidEntity(unit) and unit:GetEntityIndex()\n    if not entIndex then return false end\n    \n    local selectedEntities = self:GetSelectedEntities(playerID)\n    for _,v in pairs(selectedEntities) do\n        if v==entIndex then\n            return true\n        end\n    end\n    return false\nend\n\nfunction CDOTA_PlayerResource:RefreshSelection()\n    Timers:CreateTimer(0.03, function()\n        FireGameEvent(\"dota_player_update_selected_unit\", {})\n    end)\nend\n\nfunction CDOTA_PlayerResource:SetDefaultSelectionEntity(playerID, unit)\n    if not unit then unit = -1 end\n    local entIndex = type(unit)==\"number\" and unit or unit:GetEntityIndex()\n    local hero = self:GetSelectedHeroEntity(playerID)\n    if hero then\n        hero:SetSelectionOverride(unit)\n    end\nend\n\nfunction CDOTA_BaseNPC:SetSelectionOverride(reselect_unit)\n    local unit = self\n    local reselectIndex = type(reselect_unit)==\"number\" and reselect_unit or reselect_unit:GetEntityIndex()\n\n    CustomNetTables:SetTableValue(\"selection\", tostring(unit:GetEntityIndex()), {entity = reselectIndex})\nend\n\n------------------------------------------------------------------------\n-- Internal\n------------------------------------------------------------------------\n\nrequire('libraries/timers')\n\nif not Selection then\n    Selection = class({})\nend\n\nfunction Selection:Init()\n    Selection.entities = {} --Stores the selected entities of each playerID\n    CustomGameEventManager:RegisterListener(\"selection_update\", Dynamic_Wrap(Selection, 'OnUpdate'))\nend\n\nfunction Selection:OnUpdate(event)\n    local playerID = event.PlayerID\n    Selection.entities[playerID] = event.entities\nend\n\n-- Internal function to build an entity index list out of various inputs\nfunction Selection:GetEntIndexListFromTable(unit_args)\n    local entities = {}\n    if type(unit_args)==\"number\" then\n        table.insert(entities, unit_args) -- Entity Index\n    -- Check contents of the table\n    elseif type(unit_args)==\"table\" then\n        if unit_args.IsCreature then\n            table.insert(entities, unit_args:GetEntityIndex()) -- NPC Handle\n        else\n            for _,arg in pairs(unit_args) do\n                -- Table of entity index values\n                if type(arg)==\"number\" then\n                    table.insert(entities, arg)\n                -- Table of npc handles\n                elseif type(arg)==\"table\" then\n                    if arg.IsCreature then\n                        table.insert(entities, arg:GetEntityIndex())\n                    end\n                end\n            end\n        end\n    end\n    return entities\nend\n\nif not Selection.entities then Selection:Init() end"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/timers.lua",
    "content": "TIMERS_VERSION = \"1.05\"\n\n--[[\n\n  -- A timer running every second that starts immediately on the next frame, respects pauses\n  Timers:CreateTimer(function()\n      print (\"Hello. I'm running immediately and then every second thereafter.\")\n      return 1.0\n    end\n  )\n\n  -- The same timer as above with a shorthand call \n  Timers(function()\n    print (\"Hello. I'm running immediately and then every second thereafter.\")\n    return 1.0\n  end)\n  \n\n  -- A timer which calls a function with a table context\n  Timers:CreateTimer(GameMode.someFunction, GameMode)\n\n  -- A timer running every second that starts 5 seconds in the future, respects pauses\n  Timers:CreateTimer(5, function()\n      print (\"Hello. I'm running 5 seconds after you called me and then every second thereafter.\")\n      return 1.0\n    end\n  )\n\n  -- 10 second delayed, run once using gametime (respect pauses)\n  Timers:CreateTimer({\n    endTime = 10, -- when this timer should first execute, you can omit this if you want it to run first on the next frame\n    callback = function()\n      print (\"Hello. I'm running 10 seconds after when I was started.\")\n    end\n  })\n\n  -- 10 second delayed, run once regardless of pauses\n  Timers:CreateTimer({\n    useGameTime = false,\n    endTime = 10, -- when this timer should first execute, you can omit this if you want it to run first on the next frame\n    callback = function()\n      print (\"Hello. I'm running 10 seconds after I was started even if someone paused the game.\")\n    end\n  })\n\n\n  -- A timer running every second that starts after 2 minutes regardless of pauses\n  Timers:CreateTimer(\"uniqueTimerString3\", {\n    useGameTime = false,\n    endTime = 120,\n    callback = function()\n      print (\"Hello. I'm running after 2 minutes and then every second thereafter.\")\n      return 1\n    end\n  })\n\n\n  -- A timer using the old style to repeat every second starting 5 seconds ahead\n  Timers:CreateTimer(\"uniqueTimerString3\", {\n    useOldStyle = true,\n    endTime = GameRules:GetGameTime() + 5,\n    callback = function()\n      print (\"Hello. I'm running after 5 seconds and then every second thereafter.\")\n      return GameRules:GetGameTime() + 1\n    end\n  })\n\n]]\n\n\n\nTIMERS_THINK = 0.01\n\nif Timers == nil then\n  print ( '[Timers] creating Timers' )\n  Timers = {}\n  setmetatable(Timers, {\n    __call = function(t, ...)\n      return t:CreateTimer(...)\n    end\n  })\n  --Timers.__index = Timers\nend\n\nfunction Timers:start()\n  Timers = self\n  self.timers = {}\n  \n  --local ent = Entities:CreateByClassname(\"info_target\") -- Entities:FindByClassname(nil, 'CWorld')\n  local ent = SpawnEntityFromTableSynchronous(\"info_target\", {targetname=\"timers_lua_thinker\"})\n  ent:SetThink(\"Think\", self, \"timers\", TIMERS_THINK)\nend\n\nfunction Timers:Think()\n  --if GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then\n    --return\n  --end\n\n  -- Track game time, since the dt passed in to think is actually wall-clock time not simulation time.\n  local now = GameRules:GetGameTime()\n\n  -- Process timers\n  for k,v in pairs(Timers.timers) do\n    local bUseGameTime = true\n    if v.useGameTime ~= nil and v.useGameTime == false then\n      bUseGameTime = false\n    end\n    local bOldStyle = false\n    if v.useOldStyle ~= nil and v.useOldStyle == true then\n      bOldStyle = true\n    end\n\n    local now = GameRules:GetGameTime()\n    if not bUseGameTime then\n      now = Time()\n    end\n\n    if v.endTime == nil then\n      v.endTime = now\n    end\n    -- Check if the timer has finished\n    if now >= v.endTime then\n      -- Remove from timers list\n      Timers.timers[k] = nil\n\n      Timers.runningTimer = k\n      Timers.removeSelf = false\n      \n      -- Run the callback\n      local status, nextCall\n      if v.context then\n        status, nextCall = xpcall(function() return v.callback(v.context, v) end, function (msg)\n                                    return msg..'\\n'..debug.traceback()..'\\n'\n                                  end)\n      else\n        status, nextCall = xpcall(function() return v.callback(v) end, function (msg)\n                                    return msg..'\\n'..debug.traceback()..'\\n'\n                                  end)\n      end\n\n      Timers.runningTimer = nil\n\n      -- Make sure it worked\n      if status then\n        -- Check if it needs to loop\n        if nextCall and not Timers.removeSelf then\n          -- Change its end time\n\n          if bOldStyle then\n            v.endTime = v.endTime + nextCall - now\n          else\n            v.endTime = v.endTime + nextCall\n          end\n\n          Timers.timers[k] = v\n        end\n\n        -- Update timer data\n        --self:UpdateTimerData()\n      else\n        -- Nope, handle the error\n        Timers:HandleEventError('Timer', k, nextCall)\n      end\n    end\n  end\n\n  return TIMERS_THINK\nend\n\nfunction Timers:HandleEventError(name, event, err)\n  print(err)\n\n  -- Ensure we have data\n  name = tostring(name or 'unknown')\n  event = tostring(event or 'unknown')\n  err = tostring(err or 'unknown')\n\n  -- Tell everyone there was an error\n  --Say(nil, name .. ' threw an error on event '..event, false)\n  --Say(nil, err, false)\n\n  -- Prevent loop arounds\n  if not self.errorHandled then\n    -- Store that we handled an error\n    self.errorHandled = true\n  end\nend\n\nfunction Timers:CreateTimer(name, args, context)\n  if type(name) == \"function\" then\n    if args ~= nil then\n      context = args\n    end\n    args = {callback = name}\n    name = DoUniqueString(\"timer\")\n  elseif type(name) == \"table\" then\n    args = name\n    name = DoUniqueString(\"timer\")\n  elseif type(name) == \"number\" then\n    args = {endTime = name, callback = args}\n    name = DoUniqueString(\"timer\")\n  end\n  if not args.callback then\n    print(\"Invalid timer created: \"..name)\n    return\n  end\n\n\n  local now = GameRules:GetGameTime()\n  if args.useGameTime ~= nil and args.useGameTime == false then\n    now = Time()\n  end\n\n  if args.endTime == nil then\n    args.endTime = now\n  elseif args.useOldStyle == nil or args.useOldStyle == false then\n    args.endTime = now + args.endTime\n  end\n\n  args.context = context\n\n  Timers.timers[name] = args \n\n  return name\nend\n\nfunction Timers:RemoveTimer(name)\n  Timers.timers[name] = nil\n  if Timers.runningTimer == name then\n    Timers.removeSelf = true\n  end\nend\n\nfunction Timers:RemoveTimers(killAll)\n  local timers = {}\n  Timers.removeSelf = true\n\n  if not killAll then\n    for k,v in pairs(Timers.timers) do\n      if v.persist then\n        timers[k] = v\n      end\n    end\n  end\n\n  Timers.timers = timers\nend\n\nif not Timers.timers then Timers:start() end\n\nGameRules.Timers = Timers"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/libraries/worldpanels.lua",
    "content": "WORLDPANELS_VERSION = \"0.81\"\n\n--[[\n  Lua-controlled Frankenstein WorldPanels Library by BMD\n\n  Installation\n  -\"require\" this file inside your code in order to make the WorldPanels API availble\n  -Ensure that this file is placed in the vscripts/libraries path along with timers.lua and playertables.lua\n  -Ensure that you have the barebones_worldpanels.xml in your panorama content layout folder.\n  -Ensure that you have the barebones_worldpanels.js in your panorama content scripts folder.\n  -Ensure that barebones_worldpanels.xml is included in your custom_ui_manifest.xml with\n    <CustomUIElement type=\"Hud\" layoutfile=\"file://{resources}/layout/custom_game/barebones_worldpanels.xml\" />\n\n  Library Usage\n  -WorldPanels are a means of displaying panorama layout files to individuals which act as though they are positioned at a specific point in the world\n    or on a specific entity.\n  -WorldPanels can be shared with an individual player, a whole team, or all clients at once via\n    WorldPanels:CreateWorldPanel(playerID, configTable) -- 1 player or array of playerIDs like {3,5,8}\n    WorldPanels:CreateWorldPanelForTeam(teamID, configTable) -- 1 team\n    WorldPanels:CreateWorldPanelForAll(configTable) -- All players\n  -WorldPanels are specified by a configuration table which has several potential parameters:\n    -layout: The panorama layout file to display in this worldpanel.\n    -position: Mutually exclusive with \"entity\".  Position is the world vector position to display the worldpanel at.\n    -entity: Mutually exclusive with \"position\".  Entity is the entity (hscript or index) which the worldpanel will track for its position.\n    -offsetX: An optional (default is 0) screen pixel offset to apply to the worldpanel (in the x direction)\n    -offsetY: An optional (default is 0) screen pixel offset to apply to the worldpanel (in the y direction)\n    -horizontalAlign: An optional (default is \"center\") alignment for the worldpanel to use when adjusting the panel size. \"center\", \"left\", \"right\" are valid options\n    -verticalAlign: An optional (default is \"bottom\") alignment for the worldpanel to use when adjusting the panel size. \"bottom\", \"center\", \"top\" are valid options\n    -entityHeight: An optional (default is 0) height offset to use for the entity world panel (see: \"HealthBarOffset\" in unit KV definition)\n    -edgePadding: An optional (default is to not lock to screen edge) padding percentage of the screen to limit the worldpanel to.\n    -duration: An optional (default is infinite) duration in GameTime seconds that the panel will exist for and then be automatically destroyed.\n    -data: An optional table of data which will be attached to the worldpanel so that valeus can be used in javascript through $.GetContextPanel().Data\n      This table should only contain numeric, string, or table values (no entities/hscripts)\n\n  -WorldPanels returned by the Create methods have the following methods:\n    wp:SetPosition(position)\n    wp:SetEntity(entity)\n    wp:SetHorizontalAlign(hAlign)\n    wp:SetVerticalAlign(vAlign)\n    wp:SetOffsetX(offsetX)\n    wp:SetOffsetY(offsetY)\n    wp:SetEdgePadding(edge)\n    wp:SetEntityHeight(entityHeight)\n    wp:SetData(data)\n    wp:Delete()\n\n  -See examples/worldpanelsExample.lua for usage examples.\n\n\n  Notes\n  -WorldPanel panorama performance can still be an issue (depending on layout).  Use sparingly.\n  -A WorldPanel attached to an entity will only show when the player has vision of that entity\n  -A WorldPanel is automatically deleted if the entity it is attached to dies (and is not a hero type unit)\n  -Edge tracking is currently inaccurate in certain sitautions due to a valve bug with Game.WorldToScreenX/Y\n  -The WorldPanel library provides a few helpful properties for use in your layout file's javascript.\n    $.GetContextPanel().WorldPanel      contains the WorldPanel configuration in the following table format:\n      {layout, offsetX, offsetY, position, entity, entityHeight, hAlign, vAlign, edge}\n    $.GetContextPanel().OnEdge          true if this worldpanel has edgelocking/padding and is touching the edge/padded edge of the screen.  false otherwise.  Updates every frame.\n    $.GetContextPanel().OffScreen       true if this worldpanel has no edgelocking/padding and is completely off screen.  false otherwise.  Updates every frame.\n    $.GetContextPanel().Data            the \"data\" object passed in to CreateWorldPanel.\n\n  Examples\n  -Create a special worldpanel for the hero entity of player 0, only visible to player 0. Adds 210 to the unit position for the height of the panel.\n    WorldPanels:CreateWorldPanel(0, \n      {layout = \"file://{resources}/layout/custom_game/worldpanels/healthbar.xml\",\n        entity = PlayerResource:GetSelectedHeroEntity(0),\n        entityHeight = 210,\n      })\n\n  -Create a worldpanel for all players that displays at 200 height above the ground at Vector(0,0,0) and locks to 5% of the dge of the screen \n    WorldPanels:CreateWorldPanelForAll(\n      {layout = \"file://{resources}/layout/custom_game/worldpanels/arrow.xml\",\n        position = GetGroundPosition(Vector(0,0,0), nil) + Vector(0,0,200),\n        edgePadding = 5,\n      })\n\n\n]]\n\nrequire('libraries/timers')\nrequire('libraries/playertables')\n\nlocal haStoI = {[0]=\"center\", [1]=\"left\", [2]=\"right\"}\nlocal haItoS = {center=0, left=1, right=2}\nlocal vaStoI = {bottom=0, center=1, top=2}\nlocal vaItoS = {[0]=\"bottom\", [1]=\"center\", [2]=\"top\"}\n\nif not WorldPanels then\n  WorldPanels = class({})\nend\n\nlocal UpdateTable = function(wp)\n  local idString = wp.idString\n  local pt = wp.pt\n  local pids = wp.pids\n  for i=1,#pids do\n    local pid = pids[i]\n    local ptName = \"worldpanels_\" .. pid\n\n    if not PlayerTables:TableExists(ptName) then\n      PlayerTables:CreateTable(ptName, {[idString]=pt}, {pid})\n    else\n      PlayerTables:SetTableValue(ptName, idString, pt)\n    end\n  end\nend\n\nfunction WorldPanels:start()\n  self.initialized = true\n\n  self.entToPanels = {}\n  self.worldPanels = {}\n  self.nextID = 0\n\n  --CustomGameEventManager:RegisterListener(\"Attachment_DoSphere\", Dynamic_Wrap(WorldPanels, \"Attachment_DoSphere\"))\n  ListenToGameEvent('entity_killed', Dynamic_Wrap(WorldPanels, 'OnEntityKilled'), self)\nend\n\nfunction WorldPanels:OnEntityKilled( keys )\n  --print( '[WorldPanels] OnEntityKilled Called' )\n  --PrintTable( keys )\n  \n\n  -- The Ent that was Killed\n  local killedEnt = EntIndexToHScript( keys.entindex_killed )\n\n  local panels = WorldPanels.entToPanels[killedEnt]\n\n  if not killedEnt.IsRealHero or not killedEnt:IsRealHero() then\n    if panels then\n      for i=1,#panels do\n        local panel = panels[i]\n        for j=1,#panel.pids do\n          local pid = panel.pids[j]\n          PlayerTables:DeleteTableKey(\"worldpanels_\" .. pid, panel.idString)\n        end\n      end\n    end\n  end\n\n  \nend\n\nfunction WorldPanels:CreateWorldPanelForAll(conf)\n  local pids = {}\n  for i=0,DOTA_MAX_TEAM_PLAYERS do\n    if PlayerResource:IsValidPlayer(i) then\n      pids[#pids+1] = i;\n    end\n  end\n\n  return WorldPanels:CreateWorldPanel(pids, conf)\nend\n\nfunction WorldPanels:CreateWorldPanelForTeam(team, conf)\n  local count = PlayerResource:GetPlayerCountForTeam(team)\n  local pids = {}\n  for i=1,count do\n    pids[#pids+1] = PlayerResource:GetNthPlayerIDOnTeam(team, i)\n  end\n\n  return WorldPanels:CreateWorldPanel(pids, conf)\nend\n\nfunction WorldPanels:CreateWorldPanel(pids, conf)\n  --{position, entity, offsetX, offsetY, hAlign, vAlign, entityHeight, edge, duration, data}\n  -- duration?\n  if type(pids) == \"number\" then\n    pids = {pids}\n  end\n\n  local ent = conf.entity\n  local ei = conf.entity\n  if ent and type(ent) == \"number\" then\n    ei = ent\n    ent = EntIndexToHScript(ent)\n  elseif ent and ent.GetEntityIndex then\n    ei = ent:GetEntityIndex() \n  end\n\n  local pt = {\n    layout =            conf.layout,\n    position =          conf.position,\n    entity =            ei,\n    offsetX =           conf.offsetX,\n    offsetX =           conf.offsetY,\n    entityHeight =      conf.entityHeight,\n    edge =              conf.edgePadding,\n    data =              conf.data,\n  }\n\n  if conf.horizontalAlign then pt.hAlign = haStoI[conf.horizontalAlign] end\n  if conf.verticalAlign   then pt.vAlign = vaStoI[conf.verticalAlign] end\n\n  local idString = tostring(self.nextID)\n\n  local wp = {\n    id =                self.nextID,\n    idString =          idString,\n    pids =              pids,\n    pt =                pt,\n  }\n\n  function wp:SetPosition(pos)\n    self.pt.entity = nil\n    self.pt.position = pos\n    UpdateTable(self)\n  end\n\n  function wp:SetEntity(entity)\n    local ei = entity\n    if entity and not type(entity) == \"number\" and entity.GetEntityIndex then\n      ei = entity:GetEntityIndex() \n    end\n\n    self.pt.entity = ei\n    self.pt.position = nil\n    UpdateTable(self)\n  end\n\n  function wp:SetHorizontalAlign(hAlign)\n    self.pt.hAlign = haStoI[hAlign]\n    UpdateTable(self)\n  end\n\n  function wp:SetVerticalAlign(vAlign)\n    self.pt.vAlign = vaStoI[vAlign]\n    UpdateTable(self)\n  end\n\n  function wp:SetOffsetX(offX)\n    self.pt.offsetX = offX\n    UpdateTable(self)\n  end\n\n  function wp:SetOffsetY(offY)\n    self.pt.offsetY = offY\n    UpdateTable(self)\n  end\n\n  function wp:SetEntityHeight(height)\n    self.pt.entityHeight = height\n    UpdateTable(self)\n  end\n\n  function wp:SetEdgePadding(edge)\n    self.pt.edge = edge\n    UpdateTable(self)\n  end\n\n  function wp:SetData(data)\n    self.pt.data = data\n    UpdateTable(self)\n  end\n\n  function wp:Delete()\n    for j=1,#self.pids do\n      local pid = self.pids[j]\n      PlayerTables:DeleteTableKey(\"worldpanels_\" .. pid, self.idString)\n    end\n  end\n\n  if conf.duration then\n    pt.endTime = GameRules:GetGameTime() + conf.duration\n    Timers:CreateTimer(conf.duration,function()\n      wp:Delete()\n    end)\n  end\n\n  UpdateTable(wp)\n\n  if ei then\n    self.entToPanels[ent] = self.entToPanels[ent] or {}\n    table.insert(self.entToPanels[ent], wp)\n  end\n\n  self.worldPanels[self.nextID] = wp\n  self.nextID = self.nextID + 1\n  return wp\nend\n\nif not WorldPanels.initialized then WorldPanels:start() end"
  },
  {
    "path": "game/dota_addons/barebones/scripts/vscripts/settings.lua",
    "content": "-- In this file you can set up all the properties and settings for your game mode.\n\n\nENABLE_HERO_RESPAWN = true              -- Should the heroes automatically respawn on a timer or stay dead until manually respawned\nUNIVERSAL_SHOP_MODE = false             -- Should the main shop contain Secret Shop items as well as regular items\nALLOW_SAME_HERO_SELECTION = true        -- Should we let people select the same hero as each other\n\nHERO_SELECTION_TIME = 30.0              -- How long should we let people select their hero?\nPRE_GAME_TIME = 5.0                    -- How long after people select their heroes should the horn blow and the game start?\nPOST_GAME_TIME = 60.0                   -- How long should we let people look at the scoreboard before closing the server automatically?\nTREE_REGROW_TIME = 60.0                 -- How long should it take individual trees to respawn after being cut down/destroyed?\n\nGOLD_PER_TICK = 100                     -- How much gold should players get per tick?\nGOLD_TICK_TIME = 5                      -- How long should we wait in seconds between gold ticks?\n\nRECOMMENDED_BUILDS_DISABLED = false     -- Should we disable the recommened builds for heroes\nCAMERA_DISTANCE_OVERRIDE = -1           -- How far out should we allow the camera to go?  Use -1 for the default (1134) while still allowing for panorama camera distance changes\n\nMINIMAP_ICON_SIZE = 1                   -- What icon size should we use for our heroes?\nMINIMAP_CREEP_ICON_SIZE = 1             -- What icon size should we use for creeps?\nMINIMAP_RUNE_ICON_SIZE = 1              -- What icon size should we use for runes?\n\nRUNE_SPAWN_TIME = 120                   -- How long in seconds should we wait between rune spawns?\nCUSTOM_BUYBACK_COST_ENABLED = true      -- Should we use a custom buyback cost setting?\nCUSTOM_BUYBACK_COOLDOWN_ENABLED = true  -- Should we use a custom buyback time?\nBUYBACK_ENABLED = false                 -- Should we allow people to buyback when they die?\n\nDISABLE_FOG_OF_WAR_ENTIRELY = false     -- Should we disable fog of war entirely for both teams?\nUSE_UNSEEN_FOG_OF_WAR = false           -- Should we make unseen and fogged areas of the map completely black until uncovered by each team? \n                                            -- Note: DISABLE_FOG_OF_WAR_ENTIRELY must be false for USE_UNSEEN_FOG_OF_WAR to work\nUSE_STANDARD_DOTA_BOT_THINKING = false  -- Should we have bots act like they would in Dota? (This requires 3 lanes, normal items, etc)\nUSE_STANDARD_HERO_GOLD_BOUNTY = true    -- Should we give gold for hero kills the same as in Dota, or allow those values to be changed?\n\nUSE_CUSTOM_TOP_BAR_VALUES = true        -- Should we do customized top bar values or use the default kill count per team?\nTOP_BAR_VISIBLE = true                  -- Should we display the top bar score/count at all?\nSHOW_KILLS_ON_TOPBAR = true             -- Should we display kills only on the top bar? (No denies, suicides, kills by neutrals)  Requires USE_CUSTOM_TOP_BAR_VALUES\n\nENABLE_TOWER_BACKDOOR_PROTECTION = false-- Should we enable backdoor protection for our towers?\nREMOVE_ILLUSIONS_ON_DEATH = false       -- Should we remove all illusions if the main hero dies?\nDISABLE_GOLD_SOUNDS = false             -- Should we disable the gold sound when players get gold?\n\nEND_GAME_ON_KILLS = true                -- Should the game end after a certain number of kills?\nKILLS_TO_END_GAME_FOR_TEAM = 50         -- How many kills for a team should signify an end of game?\n\nUSE_CUSTOM_HERO_LEVELS = true           -- Should we allow heroes to have custom levels?\nMAX_LEVEL = 50                          -- What level should we let heroes get to?\nUSE_CUSTOM_XP_VALUES = true             -- Should we use custom XP values to level up heroes, or the default Dota numbers?\n\n-- Fill this table up with the required XP per level if you want to change it\nXP_PER_LEVEL_TABLE = {}\nfor i=1,MAX_LEVEL do\n  XP_PER_LEVEL_TABLE[i] = (i-1) * 100\nend\n\nENABLE_FIRST_BLOOD = true               -- Should we enable first blood for the first kill in this game?\nHIDE_KILL_BANNERS = false               -- Should we hide the kill banners that show when a player is killed?\nLOSE_GOLD_ON_DEATH = true               -- Should we have players lose the normal amount of dota gold on death?\nSHOW_ONLY_PLAYER_INVENTORY = false      -- Should we only allow players to see their own inventory even when selecting other units?\nDISABLE_STASH_PURCHASING = false        -- Should we prevent players from being able to buy items into their stash when not at a shop?\nDISABLE_ANNOUNCER = false               -- Should we disable the announcer from working in the game?\nFORCE_PICKED_HERO = nil                 -- What hero should we force all players to spawn as? (e.g. \"npc_dota_hero_axe\").  Use nil to allow players to pick their own hero.\n\nFIXED_RESPAWN_TIME = -1                 -- What time should we use for a fixed respawn timer?  Use -1 to keep the default dota behavior.\nFOUNTAIN_CONSTANT_MANA_REGEN = -1       -- What should we use for the constant fountain mana regen?  Use -1 to keep the default dota behavior.\nFOUNTAIN_PERCENTAGE_MANA_REGEN = -1     -- What should we use for the percentage fountain mana regen?  Use -1 to keep the default dota behavior.\nFOUNTAIN_PERCENTAGE_HEALTH_REGEN = -1   -- What should we use for the percentage fountain health regen?  Use -1 to keep the default dota behavior.\nMAXIMUM_ATTACK_SPEED = 600              -- What should we use for the maximum attack speed?\nMINIMUM_ATTACK_SPEED = 20               -- What should we use for the minimum attack speed?\n\nGAME_END_DELAY = -1                     -- How long should we wait after the game winner is set to display the victory banner and End Screen?  Use -1 to keep the default (about 10 seconds)\nVICTORY_MESSAGE_DURATION = 3            -- How long should we wait after the victory message displays to show the End Screen?  Use \nSTARTING_GOLD = 500                     -- How much starting gold should we give to each player?\nDISABLE_DAY_NIGHT_CYCLE = false         -- Should we disable the day night cycle from naturally occurring? (Manual adjustment still possible)\nDISABLE_KILLING_SPREE_ANNOUNCER = false -- Shuold we disable the killing spree announcer?\nDISABLE_STICKY_ITEM = false             -- Should we disable the sticky item button in the quick buy area?\nSKIP_TEAM_SETUP = false                 -- Should we skip the team setup entirely?\nENABLE_AUTO_LAUNCH = true               -- Should we automatically have the game complete team setup after AUTO_LAUNCH_DELAY seconds?\nAUTO_LAUNCH_DELAY = 30                  -- How long should the default team selection launch timer be?  The default for custom games is 30.  Setting to 0 will skip team selection.\nLOCK_TEAM_SETUP = false                 -- Should we lock the teams initially?  Note that the host can still unlock the teams \n\n\n-- NOTE: You always need at least 2 non-bounty type runes to be able to spawn or your game will crash!\nENABLED_RUNES = {}                      -- Which runes should be enabled to spawn in our game mode?\nENABLED_RUNES[DOTA_RUNE_DOUBLEDAMAGE] = true\nENABLED_RUNES[DOTA_RUNE_HASTE] = true\nENABLED_RUNES[DOTA_RUNE_ILLUSION] = true\nENABLED_RUNES[DOTA_RUNE_INVISIBILITY] = true\nENABLED_RUNES[DOTA_RUNE_REGENERATION] = true\nENABLED_RUNES[DOTA_RUNE_BOUNTY] = true\nENABLED_RUNES[DOTA_RUNE_ARCANE] = true\n\n\nMAX_NUMBER_OF_TEAMS = 10                -- How many potential teams can be in this game mode?\nUSE_CUSTOM_TEAM_COLORS = true           -- Should we use custom team colors?\nUSE_CUSTOM_TEAM_COLORS_FOR_PLAYERS = true          -- Should we use custom team colors to color the players/minimap?\n\nTEAM_COLORS = {}                        -- If USE_CUSTOM_TEAM_COLORS is set, use these colors.\nTEAM_COLORS[DOTA_TEAM_GOODGUYS] = { 61, 210, 150 }  --    Teal\nTEAM_COLORS[DOTA_TEAM_BADGUYS]  = { 243, 201, 9 }   --    Yellow\nTEAM_COLORS[DOTA_TEAM_CUSTOM_1] = { 197, 77, 168 }  --    Pink\nTEAM_COLORS[DOTA_TEAM_CUSTOM_2] = { 255, 108, 0 }   --    Orange\nTEAM_COLORS[DOTA_TEAM_CUSTOM_3] = { 52, 85, 255 }   --    Blue\nTEAM_COLORS[DOTA_TEAM_CUSTOM_4] = { 101, 212, 19 }  --    Green\nTEAM_COLORS[DOTA_TEAM_CUSTOM_5] = { 129, 83, 54 }   --    Brown\nTEAM_COLORS[DOTA_TEAM_CUSTOM_6] = { 27, 192, 216 }  --    Cyan\nTEAM_COLORS[DOTA_TEAM_CUSTOM_7] = { 199, 228, 13 }  --    Olive\nTEAM_COLORS[DOTA_TEAM_CUSTOM_8] = { 140, 42, 244 }  --    Purple\n\n\nUSE_AUTOMATIC_PLAYERS_PER_TEAM = true   -- Should we set the number of players to 10 / MAX_NUMBER_OF_TEAMS?\n\nCUSTOM_TEAM_PLAYER_COUNT = {}           -- If we're not automatically setting the number of players per team, use this table\nCUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_GOODGUYS] = 1\nCUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_BADGUYS]  = 1\nCUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_1] = 1\nCUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_2] = 1\nCUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_3] = 1\nCUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_4] = 1\nCUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_5] = 1\nCUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_6] = 1\nCUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_7] = 1\nCUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_8] = 1"
  }
]