Repository: bmddota/barebones Branch: source2 Commit: 873bcb971c12 Files: 400 Total size: 1.8 MB Directory structure: gitextract_xun1b86s/ ├── .gitattributes ├── .gitignore ├── AnimationsChangeLog.md ├── AttachmentsChangeLog.md ├── ChangeLog.md ├── CollidersReadme.md ├── ContainersChangeLog.md ├── LICENSE ├── ModmakerChangeLog.md ├── NOTICE ├── NotificationsChangeLog.md ├── PathGraphChangeLog.md ├── PhysicsChangeLog.md ├── PhysicsReadme.md ├── PlayerTablesChangeLog.md ├── ProjectilesChangeLog.md ├── ProjectilesReadme.md ├── README.md ├── TimersChangeLog.md ├── WorldPanelsChangeLog.md ├── content/ │ └── dota_addons/ │ └── barebones/ │ ├── maps/ │ │ ├── playground.vmap │ │ └── template_map.vmap │ ├── materials/ │ │ ├── example/ │ │ │ ├── sand_path_example_color.tif │ │ │ ├── sand_path_example_normal.tif │ │ │ └── sand_path_example_refl.tif │ │ ├── overviews/ │ │ │ ├── playground.tga │ │ │ ├── playground.txt │ │ │ ├── playground.vmat │ │ │ ├── template_map.tga │ │ │ ├── template_map.txt │ │ │ └── template_map.vmat │ │ └── particle/ │ │ ├── basic_glow.tga │ │ ├── basic_glow.vtex │ │ ├── basic_rope.psd │ │ ├── basic_rope.vtex │ │ ├── basic_rope_energy.tga │ │ ├── basic_rope_energy.vtex │ │ ├── basic_smoke.tga │ │ ├── basic_smoke.vtex │ │ ├── basic_trail.tga │ │ └── basic_trail.vtex │ ├── panorama/ │ │ ├── layout/ │ │ │ └── custom_game/ │ │ │ ├── barebones_attachments.xml │ │ │ ├── barebones_notifications.xml │ │ │ ├── barebones_worldpanels.xml │ │ │ ├── containers/ │ │ │ │ ├── alt_container_example.xml │ │ │ │ ├── container.xml │ │ │ │ ├── container_base.xml │ │ │ │ ├── dota_inventory.xml │ │ │ │ ├── dota_inventory_context_menu.xml │ │ │ │ ├── dota_inventory_item.xml │ │ │ │ ├── inventory_context_menu.xml │ │ │ │ └── inventory_item.xml │ │ │ ├── custom_loading_screen.xml │ │ │ ├── custom_ui_manifest.xml │ │ │ ├── modmaker/ │ │ │ │ ├── modmaker.xml │ │ │ │ ├── modmaker_api_category.xml │ │ │ │ └── modmaker_api_property.xml │ │ │ ├── selection.xml │ │ │ └── worldpanels/ │ │ │ ├── arrow.xml │ │ │ └── healthbar.xml │ │ ├── scripts/ │ │ │ ├── barebones_attachments.js │ │ │ ├── barebones_notifications.js │ │ │ ├── barebones_worldpanels.js │ │ │ ├── containers/ │ │ │ │ ├── container.js │ │ │ │ ├── container_base.js │ │ │ │ ├── container_events.js │ │ │ │ ├── dota_inventory.js │ │ │ │ ├── dota_inventory_context_menu.js │ │ │ │ ├── dota_inventory_item.js │ │ │ │ ├── inventory_context_menu.js │ │ │ │ └── inventory_item.js │ │ │ ├── modmaker/ │ │ │ │ ├── modmaker.js │ │ │ │ ├── modmaker_api_category.js │ │ │ │ └── modmaker_api_property.js │ │ │ ├── playertables/ │ │ │ │ └── playertables_base.js │ │ │ ├── selection/ │ │ │ │ ├── selection.js │ │ │ │ └── selection_filter.js │ │ │ └── worldpanels/ │ │ │ ├── arrow.js │ │ │ └── healthbar.js │ │ └── styles/ │ │ ├── barebones_attachments.css │ │ ├── barebones_notifications.css │ │ ├── containers/ │ │ │ ├── container.css │ │ │ └── container_skins.css │ │ ├── custom_loading_screen.css │ │ ├── modmaker/ │ │ │ └── modmaker.css │ │ └── worldpanels/ │ │ ├── arrow.css │ │ └── healthbar.css │ ├── particles/ │ │ ├── basic_ambient/ │ │ │ ├── basic_ambient.vpcf │ │ │ └── basic_ambient_readme.txt │ │ ├── basic_explosion/ │ │ │ ├── basic_explosion.vpcf │ │ │ ├── basic_explosion_bits.vpcf │ │ │ ├── basic_explosion_burst.vpcf │ │ │ ├── basic_explosion_flash.vpcf │ │ │ └── basic_explosion_readme.txt │ │ ├── basic_projectile/ │ │ │ ├── basic_projectile.vpcf │ │ │ ├── basic_projectile_explosion.vpcf │ │ │ ├── basic_projectile_explosion_flash.vpcf │ │ │ ├── basic_projectile_launch.vpcf │ │ │ ├── basic_projectile_readme.txt │ │ │ └── basic_projectile_trail.vpcf │ │ ├── basic_rope/ │ │ │ ├── basic_rope.vpcf │ │ │ └── basic_rope_readme.txt │ │ ├── basic_trail/ │ │ │ └── basic_trail.vpcf │ │ ├── frostivus_gameplay/ │ │ │ ├── damage_flash_b_frostivus.vpcf │ │ │ ├── damage_flash_big_frostivus.vpcf │ │ │ ├── damage_flash_c_frostivus.vpcf │ │ │ ├── damage_flash_d_frostivus.vpcf │ │ │ ├── drow_base_attack_explosion.vpcf │ │ │ ├── drow_base_attack_explosion_flash.vpcf │ │ │ ├── drow_base_attack_explosion_flash_b.vpcf │ │ │ ├── drow_base_attack_launch.vpcf │ │ │ ├── drow_base_attack_trail.vpcf │ │ │ ├── drow_base_attack_trail_c.vpcf │ │ │ ├── drow_frost_arrow_explosion.vpcf │ │ │ ├── drow_frost_arrow_explosion_b.vpcf │ │ │ ├── drow_frost_arrow_explosion_c.vpcf │ │ │ ├── drow_frost_arrow_explosion_d.vpcf │ │ │ ├── drow_frost_arrow_explosion_e.vpcf │ │ │ ├── drow_frost_arrow_launch.vpcf │ │ │ ├── drow_frost_arrow_launch_b.vpcf │ │ │ ├── drow_frost_arrow_model.vpcf │ │ │ ├── drow_ice_trail.vpcf │ │ │ ├── drow_ice_trail_b.vpcf │ │ │ ├── drow_ice_trail_c.vpcf │ │ │ ├── drow_linear_arrow.vpcf │ │ │ ├── drow_linear_frost_arrow.vpcf │ │ │ ├── frostivus_death_creep.vpcf │ │ │ ├── frostivus_hero_light.vpcf │ │ │ ├── frostivus_hero_light_b.vpcf │ │ │ ├── frostivus_last_hit_effect.vpcf │ │ │ ├── frostivus_last_hit_effect_b.vpcf │ │ │ ├── frostivus_leshrac_split_earth.vpcf │ │ │ ├── frostivus_leshrac_split_earth_b.vpcf │ │ │ ├── frostivus_leshrac_split_earth_c.vpcf │ │ │ ├── frostivus_leshrac_split_earth_d.vpcf │ │ │ ├── frostivus_leshrac_split_flash.vpcf │ │ │ ├── frostivus_leshrac_split_projected.vpcf │ │ │ ├── frostivus_leshrac_split_projected_scortch.vpcf │ │ │ ├── frostivus_leshrac_split_pulse.vpcf │ │ │ ├── frostivus_leshrac_splitearth_groundflash_lines.vpcf │ │ │ ├── frostivus_leshrac_splitearth_lights.vpcf │ │ │ ├── frostivus_leshrac_splitearth_sparkles.vpcf │ │ │ ├── frostivus_lightbeam.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_ember.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_ember_b.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_explosion.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_explosion_b.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_explosion_c.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_explosion_d.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_explosion_e.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_explosion_f.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_explosion_light.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_launch.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_launch_b.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_launch_smoke.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_skull.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_sphere_glow.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_sphere_glow_b.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_trail_b.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_trail_d.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_trail_detail.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_trail_detail_b.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_trail_e.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_trail_f.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_trail_g.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_trail_h.vpcf │ │ │ ├── frostivus_skeletonking_hellfireblast_trail_i.vpcf │ │ │ ├── frostivus_spirit_trail.vpcf │ │ │ ├── frostivus_spirit_trail_b.vpcf │ │ │ ├── frostivus_spirit_trail_big.vpcf │ │ │ ├── frostivus_spirit_trail_c.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_b.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_beams_a.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_beams_b.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_beams_c.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_beams_f.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_beams_g.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_beams_h.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_beams_i.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_beams_j.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_c.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_c_b.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_d.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_e.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_endcap.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_f.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_g.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_h.vpcf │ │ │ ├── frostivus_throne_wraith_king_ambient_i.vpcf │ │ │ ├── frostivus_throne_wraith_king_explode.vpcf │ │ │ ├── frostivus_throne_wraith_king_spirit_trail.vpcf │ │ │ ├── frostivus_throne_wraith_king_spirit_trail_b.vpcf │ │ │ ├── frostivus_throne_wraith_king_spirits.vpcf │ │ │ ├── frostivus_wraithking_tombstone.vpcf │ │ │ ├── frostivus_wraithking_tombstone_ember.vpcf │ │ │ ├── frostivus_wraithking_tombstone_ember_b.vpcf │ │ │ ├── frostivus_wraithking_tombstone_explosion.vpcf │ │ │ ├── frostivus_wraithking_tombstone_explosion_b.vpcf │ │ │ ├── frostivus_wraithking_tombstone_explosion_c.vpcf │ │ │ ├── frostivus_wraithking_tombstone_explosion_d.vpcf │ │ │ ├── frostivus_wraithking_tombstone_explosion_e.vpcf │ │ │ ├── frostivus_wraithking_tombstone_explosion_f.vpcf │ │ │ ├── frostivus_wraithking_tombstone_explosion_light.vpcf │ │ │ ├── frostivus_wraithking_tombstone_launch.vpcf │ │ │ ├── frostivus_wraithking_tombstone_launch_b.vpcf │ │ │ ├── frostivus_wraithking_tombstone_launch_smoke.vpcf │ │ │ ├── frostivus_wraithking_tombstone_skull.vpcf │ │ │ ├── frostivus_wraithking_tombstone_sphere_glow.vpcf │ │ │ ├── frostivus_wraithking_tombstone_sphere_glow_b.vpcf │ │ │ ├── frostivus_wraithking_tombstone_trail_b.vpcf │ │ │ ├── frostivus_wraithking_tombstone_trail_d.vpcf │ │ │ ├── frostivus_wraithking_tombstone_trail_detail.vpcf │ │ │ ├── frostivus_wraithking_tombstone_trail_detail_b.vpcf │ │ │ ├── frostivus_wraithking_tombstone_trail_e.vpcf │ │ │ ├── frostivus_wraithking_tombstone_trail_f.vpcf │ │ │ ├── frostivus_wraithking_tombstone_trail_g.vpcf │ │ │ ├── frostivus_wraithking_tombstone_trail_h.vpcf │ │ │ ├── frostivus_wraithking_tombstone_trail_i.vpcf │ │ │ ├── frostivus_wraithking_tombstone_warmup.vpcf │ │ │ ├── frostivus_wraithking_tombstone_warmup_b.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_explode_b.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_explode_c.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_final.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_final_grid.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_final_grid_b.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_glow.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_glow_b.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_ice.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_ice_b.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_initial_explode.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_main.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_sphere.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_sphere_b.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_sphere_final_glow.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_sphere_final_glow_b.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_sphere_final_smoke.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_sphere_final_smoke_glow.vpcf │ │ │ ├── holdout_ancient_apparition_ice_blast_sphere_halo.vpcf │ │ │ ├── holdout_juggernaut_omnislash_burst.vpcf │ │ │ ├── holdout_juggernaut_omnislash_image.vpcf │ │ │ ├── holdout_juggernaut_omnislash_image_ember.vpcf │ │ │ ├── holdout_juggernaut_omnislash_image_flash.vpcf │ │ │ ├── holdout_omnislash_trail_glow.vpcf │ │ │ ├── holdout_omnislash_trail_glow_b.vpcf │ │ │ ├── legion_gladiators_rays.vpcf │ │ │ ├── legion_gladiators_ring.vpcf │ │ │ ├── legion_gladiators_ring_aura.vpcf │ │ │ ├── legion_gladiators_ring_dust.vpcf │ │ │ ├── legion_gladiators_ring_dust_detail.vpcf │ │ │ ├── legion_gladiators_start_endcap.vpcf │ │ │ ├── legion_gladiators_start_line.vpcf │ │ │ ├── legion_gladiators_start_line_light.vpcf │ │ │ ├── legion_gladiators_start_ring.vpcf │ │ │ ├── legion_gladiators_start_ring_banner_light.vpcf │ │ │ ├── legion_gladiators_start_ring_energy.vpcf │ │ │ ├── legion_gladiators_start_ring_flags.vpcf │ │ │ ├── legion_gladiators_start_ring_flash.vpcf │ │ │ ├── legion_gladiators_start_ring_outer_rope.vpcf │ │ │ ├── legion_gladiators_start_ring_rope.vpcf │ │ │ ├── witch_buff.vpcf │ │ │ ├── witch_buff_b.vpcf │ │ │ ├── witch_buff_c.vpcf │ │ │ ├── witch_buff_d.vpcf │ │ │ ├── wraith_king_heal.vpcf │ │ │ ├── wraith_king_heal_flash_b.vpcf │ │ │ ├── wraith_king_heal_flash_glow.vpcf │ │ │ ├── wraith_king_heal_rings.vpcf │ │ │ ├── wraith_king_heal_twinkle.vpcf │ │ │ ├── wraith_king_hellfire_eruption_e.vpcf │ │ │ ├── wraith_king_hellfire_eruption_ember.vpcf │ │ │ ├── wraith_king_hellfire_eruption_ember_b.vpcf │ │ │ ├── wraith_king_hellfire_eruption_explosion.vpcf │ │ │ ├── wraith_king_hellfire_eruption_explosion_c.vpcf │ │ │ ├── wraith_king_hellfire_eruption_explosion_d.vpcf │ │ │ ├── wraith_king_hellfire_eruption_light.vpcf │ │ │ ├── wraith_king_hellfire_eruption_tell.vpcf │ │ │ ├── wraith_king_hellfire_eruption_tell_b.vpcf │ │ │ ├── wraith_king_hellfire_eruption_tell_c.vpcf │ │ │ ├── wraith_king_hellfire_eruption_tell_d.vpcf │ │ │ ├── wraith_king_hellfire_eruption_tell_explode.vpcf │ │ │ ├── wraith_king_hellfire_eruption_tell_explode_b.vpcf │ │ │ ├── wraith_king_spirit_trail_c.vpcf │ │ │ ├── wraith_king_spirits_2.vpcf │ │ │ └── wraith_king_tombstone_tether.vpcf │ │ ├── frostivus_herofx/ │ │ │ ├── drow_base_attack_explosion.vpcf │ │ │ ├── drow_base_attack_explosion_flash.vpcf │ │ │ ├── drow_base_attack_explosion_flash_b.vpcf │ │ │ ├── drow_base_attack_launch.vpcf │ │ │ ├── drow_base_attack_trail.vpcf │ │ │ ├── drow_base_attack_trail_c.vpcf │ │ │ ├── drow_linear_arrow.vpcf │ │ │ ├── holdout_guardian_angel_wings.vpcf │ │ │ ├── juggernaut_fs_bladeswipe_flash.vpcf │ │ │ ├── juggernaut_fs_bladeswipe_rope.vpcf │ │ │ ├── juggernaut_fs_omnislash_attack_blur_3.vpcf │ │ │ ├── juggernaut_fs_omnislash_slashers.vpcf │ │ │ ├── juggernaut_fs_omnislash_tgt.vpcf │ │ │ ├── juggernaut_fsos_caster.vpcf │ │ │ ├── juggernaut_fsos_caster_grndhit.vpcf │ │ │ ├── juggernaut_fsos_caster_scortch.vpcf │ │ │ ├── juggernaut_fsos_flash.vpcf │ │ │ ├── juggernaut_fsos_flashbang.vpcf │ │ │ ├── juggernaut_fsos_flashbang_glow2.vpcf │ │ │ ├── juggernaut_fsos_flashbang_ray.vpcf │ │ │ ├── juggernaut_omnislash_ascension.vpcf │ │ │ ├── juggernaut_omnislash_ascension_sparkrays.vpcf │ │ │ ├── juggernaut_omnislash_ascension_sparks.vpcf │ │ │ ├── maiden_holdout_arcane_buff.vpcf │ │ │ ├── maiden_holdout_arcane_buff_caster.vpcf │ │ │ ├── maiden_holdout_arcane_buff_snow_c.vpcf │ │ │ ├── queen_shadow_strike_core_linear.vpcf │ │ │ ├── queen_shadow_strike_core_linear_flare.vpcf │ │ │ ├── queen_shadow_strike_core_linear_glow.vpcf │ │ │ ├── queen_shadow_strike_core_linear_light.vpcf │ │ │ ├── queen_shadow_strike_core_linear_ring.vpcf │ │ │ ├── queen_shadow_strike_explosion_flash_linear.vpcf │ │ │ ├── queen_shadow_strike_explosion_linear.vpcf │ │ │ ├── queen_shadow_strike_explosion_points_b_linear.vpcf │ │ │ ├── queen_shadow_strike_explosion_points_linear.vpcf │ │ │ ├── queen_shadow_strike_glow_linear.vpcf │ │ │ ├── queen_shadow_strike_linear.vpcf │ │ │ ├── queen_shadow_strike_linear_glow_core.vpcf │ │ │ ├── queen_shadow_strike_linear_parent.vpcf │ │ │ ├── queen_shadow_strike_trail_c_linear.vpcf │ │ │ └── queen_shadow_strike_trail_linear.vpcf │ │ ├── material_change.vpcf │ │ ├── test_particle/ │ │ │ ├── channel_field_1.vpcf │ │ │ ├── channel_field_2.vpcf │ │ │ ├── creature_spiked_carapace.vpcf │ │ │ ├── creature_spiked_carapace_b.vpcf │ │ │ ├── damage_immunity.vpcf │ │ │ ├── damage_immunity_b.vpcf │ │ │ ├── leshrac_splitearth_groundflash_lines.vpcf │ │ │ ├── leshrac_splitearth_sparkles.vpcf │ │ │ ├── ogre_melee_smash.vpcf │ │ │ ├── ogre_melee_smash_c.vpcf │ │ │ ├── ogre_melee_smash_flash.vpcf │ │ │ ├── ogre_melee_smash_projected.vpcf │ │ │ ├── ogre_melee_smash_pulse.vpcf │ │ │ └── ogre_melee_smash_scorch.vpcf │ │ └── test_shot.vpcf │ └── soundevents/ │ └── game_sounds_custom.vsndevts └── game/ └── dota_addons/ └── barebones/ ├── addoninfo.txt ├── network_measurement.txt ├── panorama/ │ └── localization/ │ └── addon_english.txt ├── panorama_debugger.cfg ├── resource/ │ ├── addon_english.txt │ ├── flash3/ │ │ └── custom_ui.txt │ └── overviews/ │ ├── dota_pvp.txt │ ├── playground.txt │ └── template_map.txt └── scripts/ ├── addon_hud_textures.txt ├── attachments.txt ├── custom_net_tables.txt ├── npc/ │ ├── herolist.txt │ ├── npc_abilities_custom.txt │ ├── npc_abilities_override.txt │ ├── npc_heroes_custom.txt │ ├── npc_items_custom.txt │ └── npc_units_custom.txt ├── shops.txt └── vscripts/ ├── addon_game_mode.lua ├── animation_example/ │ └── heroes/ │ ├── axe/ │ │ └── axe.lua │ └── legion_commander/ │ └── legion_commander.lua ├── events.lua ├── examples/ │ ├── colliders.lua │ ├── modifier_no_health.lua │ ├── notificationsExample.lua │ ├── playground.lua │ ├── projectile.lua │ └── worldpanelsExample.lua ├── gamemode.lua ├── internal/ │ ├── events.lua │ ├── eventtest.lua │ ├── gamemode.lua │ └── util.lua ├── libraries/ │ ├── abilities/ │ │ ├── containers_lua_targeting.lua │ │ ├── containers_lua_targeting_tree.lua │ │ └── item_containers_lua_pack.lua │ ├── animations.lua │ ├── attachments.lua │ ├── containers.lua │ ├── modifiers/ │ │ ├── modifier_animation.lua │ │ ├── modifier_animation_freeze.lua │ │ ├── modifier_animation_translate.lua │ │ ├── modifier_animation_translate_permanent.lua │ │ └── modifier_shopkeeper.lua │ ├── modmaker.lua │ ├── notifications.lua │ ├── pathgraph.lua │ ├── physics.lua │ ├── physics_old.lua │ ├── playertables.lua │ ├── projectiles.lua │ ├── selection.lua │ ├── timers.lua │ └── worldpanels.lua └── settings.lua ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ # Auto detect text files and perform LF normalization * text=auto # Custom for Visual Studio *.cs diff=csharp *.sln merge=union *.csproj merge=union *.vbproj merge=union *.fsproj merge=union *.dbproj merge=union # Standard to msysgit *.doc diff=astextplain *.DOC diff=astextplain *.docx diff=astextplain *.DOCX diff=astextplain *.dot diff=astextplain *.DOT diff=astextplain *.pdf diff=astextplain *.PDF diff=astextplain *.rtf diff=astextplain *.RTF diff=astextplain ================================================ FILE: .gitignore ================================================ ################# ## Eclipse ################# *.pydevproject .project .metadata bin/ tmp/ *.tmp *.bak *.swp *~.nib local.properties .classpath .settings/ .loadpath # External tool builders .externalToolBuilders/ # Locally stored "Eclipse launch configurations" *.launch # CDT-specific .cproject # PDT-specific .buildpath ################# ## Visual Studio ################# ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # User-specific files *.suo *.user *.sln.docstates # Build results [Dd]ebug/ [Rr]elease/ x64/ build/ [Bb]in/ [Oo]bj/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* *_i.c *_p.c *.ilk *.meta *.obj *.pch *.pdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.log *.vspscc *.vssscc .builds *.pidb *.log *.scc # Visual C++ cache files ipch/ *.aps *.ncb *.opensdf *.sdf *.cachefile # Visual Studio profiler *.psess *.vsp *.vspx # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # NCrunch *.ncrunch* .*crunch*.local.xml # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.Publish.xml *.pubxml # NuGet Packages Directory ## TODO: If you have NuGet Package Restore enabled, uncomment the next line #packages/ # Windows Azure Build Output csx *.build.csdef # Windows Store app package directory AppPackages/ # Others sql/ *.Cache ClientBin/ [Ss]tyle[Cc]op.* ~$* *~ *.dbmdl *.[Pp]ublish.xml *.pfx *.publishsettings # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file to a newer # Visual Studio version. Backup files are not needed, because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm # SQL Server files App_Data/*.mdf App_Data/*.ldf ############# ## Windows detritus ############# # Windows image file caches Thumbs.db ehthumbs.db # Folder config file Desktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Mac crap .DS_Store ############# ## Python ############# *.py[co] # Packages *.egg *.egg-info dist/ build/ eggs/ parts/ var/ sdist/ develop-eggs/ .installed.cfg # Installer logs pip-log.txt # Unit test / coverage reports .coverage .tox #Translations *.mo #Mr Developer .mr.developer.cfg ############# # DOTA 2 ############# *.vpk *.vpcf_c *.vsnd_c *.vsndevts_c *.vmat_c *.vtex_c *.bin *.vxml_c *.vcss_c *.vjs_c ================================================ FILE: AnimationsChangeLog.md ================================================ # animations.lua ChangeLog ### Version 1.00 - Updated version number to reflect Barebones 1.0 release ### Version 0.84 - Added FreezeAnimation function to allow for animations to be paused at any time - Added UnfreezeAnimation function to allow animations to be unpaused at any time ### Version 0.83 - Fixed an issue where perfectly sequential animations would not play - Added several missing translate activity modifiers - Added AddAnimationTranslate and RemoveAnimationTranslate commands to allow for easily adding/removing permanent translates like "injured"/"haste", etc ### Version 0.80 - Added animations.lua library ================================================ FILE: AttachmentsChangeLog.md ================================================ # attachments.lua ChangeLog ### Version 1.00 - Ensured that created attachment props have unique entity names. - Fixed a bug related to the "Particles" section of the attachment database breaking on AttachProp - Made it so that you don't have to enter the addon name when doing "attachment_configure" - Fixed GetCurrentAttachment not working in normal non-gui use ### Version 0.85 - Added the ability to attach multiple particles to a given prop. ### Version 0.84 - Added handling of Particle attachments to props via the attachments.txt database. - Added Particle example to example attachments.txt database. - 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. - 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. ### Version 0.83 - Fixed debug spheres appearing when using AttachProp from in game. - Fixed attachments.txt database scale not being used when scale is omitted from AttachProp call. ### Version 0.82 - Added the ability to press Enter in any TextEntry to submit changes in the Attachment Configuration GUI - Added the ability to scale the value of the + and - buttons for coarse and fine refinement - Added the ability to toggle on/off the Debug Spheres showing the attachment point and prop point - Removed the dependency on an external lua_modifier by internalizing the modifier definition to attachments.lua - Removed the stun particle effect when Freezing a unit ### Version 0.81 - Added the ability to set a prop to attach to "attach_origin" point, even if this attach string does not directly exist - Removed extra "model" and "attach" properties from being saved to the attachment database - Fixed up the model scale settings so that changing the scale of a model after attaching a prop will maintain prop proportions - Added Attachments:GetAttachmentDatabase() function - Adjusted the default scripts/attachments.txt database to contain correct values for a couple demonstration prop attaches ### Version 0.80 - Added attachments.lua library ================================================ FILE: ChangeLog.md ================================================ # Barebones ChangeLog ### Version 1.01c - Added example "REMOVE" lines to npc_abilities_override.txt for the new 6.87 items. ### Version 1.01b - [physics.lua] Fixed visual issue in physics.lua box drawing + CreateBox bug ### Version 1.01a - [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 - [worldpanels.lua] Fixed an issue with completely client-unknown entities immideately deleting their world panels on create. ### Version 1.01 - New Library: WorldPanels -- Containers allows for creating panorama layout panels that track the world position of an entity (or fixed world coordinate). ### Version 1.00 - New Library: Containers -- Containers allows for additional inventory/item containing objects and shops - New Library: (by Noya): Selection API. - New Library: PathGraph -- Constructs a full-edge graph of all "path_corner" objects. - New Library: Modmaker -- Offers a searchable version of the lua server vscript API through the "modmaker_api" console command (in tools mode) - Fixed HideWearables utility function. - Fixed OnItemPickedUp to work if a non-hero unit picks up an item. - Fixed a minor potential deficiency in the randomseed selection - Removed the need to call internal Barebones functions from the implementation events.lua - Re-enabled "barebones_spew" cvar to allow for adjusting the visibility of barebones debugging messages - Added new dota items to the commented out removal lines in npc_abilities_override.txt - Added several new settings to settings.lua. - Added an "animation_example" folder containing a demonstration of lua-scripted animation adjustments for models. - [attachments.lua] Ensured that created attachment props have unique entity names. - [attachments.lua] Fixed a bug related to the "Particles" section of the attachment database breaking on AttachProp - [attachments.lua] Made it so that you don't have to enter the addon name when doing "attachment_configure" - [attachments.lua] Fixed GetCurrentAttachment not working in normal non-gui use - [projectiles.lua] Added a bDestroyImmediate property to the projectile definition which determines whether the DestroyParticle call should perform an immediate destruction. - [projectiles.lua] Fixed a bug with changing velocity of certain projectiles. - [projectiles.lua] Fixed a bug with OnFinish on ground collision. - [projectiles.lua] Fixed an issue where projectile:Destroy() did not halt the particle simulation. - [projectiles.lua] Added projectile:GetCreationTime(), projectile:GetDistanceTraveled(), projectile:GetPosition(), projectile:GetVelocity() - [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. - [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. - [physics.lua] Fixed an issue where unit:StopPhysicsSimulation() did not halt the physics simulation. - [physics.lua] Calling Physics:Unit again now reinitializes the simulation in tools mode, but is ignored in live game mode. - [physics.lua] Added a flat friction in addition to the percentage friction already existing. - [physics.lua] Added static velocity setting/getting to manipulate individual force components separate from the combined force. - [physics.lua] Added the ability to have a physics unit cut trees as it moves. - [physics.lua] Added the ability for a unit to navigate according to the slope of the terrain itself for non-GNV navigation. - [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. - [timers.lua] Added a shorthand for Timers:CreateTimer(...) as Timers(...) - [timers.lua] Timers now continue to run after the game ends for post-game timing execution. - [timers.lua] Timers library is now accessible as GameRules.Timers for instances where the Timers global is out of scope (triggers, etc) - [timers.lua] Timers now allows a timer to successfully call Timers:RemoveTimer on itself from within the execution callback of the timer - [timers.lua] Timers now reports its thinker as "timers_lua_thinker" if the Entity System warns of timers running too long in console. ### Version 0.95c - Removed the RegisterConvar call from internal/gamemode.lua since Valve broke it and has yet to fix it. ### Version 0.95b - [attachments.lua] Added the ability to attach multiple particles to a given prop. ### Version 0.95 - [notifications.lua] Changed the names of the panorama files from barebones_hud_base.* to barebones_notifications.* - [projectiles.lua] Fixed 0-velocity projectiles producing a divide by 0 error ### Version 0.94d - Added HideWearables and ShowWearables global utility functions. - [attachments.lua] Added handling of Particle attachments to props via the attachments.txt database. - [attachments.lua] Added Particle example to example attachments.txt database. - [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. - [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. ### Version 0.94c - [attachments.lua] Fixed debug spheres appearing when using AttachProp from in game. - [attachments.lua] Fixed attachments.txt database scale not being used when scale is omitted from AttachProp call. ### Version 0.94b - [attachments.lua] Added the ability to press Enter in any TextEntry to submit changes in the Attachment Configuration GUI - [attachments.lua] Added the ability to scale the value of the + and - buttons for coarse and fine refinement - [attachments.lua] Added the ability to toggle on/off the Debug Spheres showing the attachment point and prop point - [attachments.lua] Removed the dependency on an external lua_modifier by internalizing the modifier definition to attachments.lua - [attachments.lua] Removed the stun particle effect when Freezing a unit ### Version 0.94a - [attachments.lua] Added the ability to set a prop to attach to "attach_origin" point, even if this attach string does not directly exist - [attachments.lua] Removed extra "model" and "attach" properties from being saved to the attachment database - [attachments.lua] Fixed up the model scale settings so that changing the scale of a model after attaching a prop will maintain prop proportions - [attachments.lua] Added Attachments:GetAttachmentDatabase() function - [attachments.lua] Adjusted the default scripts/attachments.txt database to contain correct values for a couple demonstration prop attaches ### Version 0.94 - Fixed the issue introduced due to Valve removing PlayerResource:HaveAllPlayersJoined() - Added attachments.lua library and associated panorama GUI for creating attachment profiles - Added missing hero references to herolist.txt - Added handling for 'player_chat' event and userID->Player Entity tracking to the events.lua and internal/events.lua files - [timers.lua] Added the ability to call a function with a table context - [timers.lua] Added the use of the lua 'xpcall' function to give full stack traces if a timer errors out during execution. - [animations.lua] Added FreezeAnimation function to allow for animations to be paused at any time - [animations.lua] Added UnfreezeAnimation function to allow animations to be unpaused at any time ### Version 0.93c - Added ability/item inflictor entity retrieval to OnEntityHurt and OnEntityKilled in events.lua ### Version 0.93b - [animations.lua] Fixed an issue where perfectly sequential animations would not play - [animations.lua] Added several missing translate activity modifiers - [animations.lua] Added AddAnimationTranslate and RemoveAnimationTranslate commands to allow for easily adding/removing permanent translates like "injured"/"haste", etc ### Version 0.93 - Added animations.lua library - Added USE_UNSEEN_FOG_OF_WAR to settings.lua to allow for turning on unseen fog of war behavior - Updated notifications subsystem to support deleting notifications on-demand - Added additional guards to better handle 'script_reload' for timers.lua - Added additional guards to better handle 'script_reload' for projectiles.lua - Added additional guards to better handle 'script_reload' for physics.lua ### Version 0.92c - Updated notifications subsystem to support DOTAItemImage panel type. ### Version 0.92b - Updated notifications subsystem to apply hittest="false" to all generated panels ### Version 0.92 - Updated notifications.lua to support DOTAAbilityImage and Image panel types. - Updated notifications.lua to use a table-based function call **NOTE: Older multi-parameter calls to notifications.lua WILL FAIL.** - Updated examples/notificationsExample.lua to reflect the new calls and table argument system. - Fixed a simulation-failure issue with tree-handling in projectiles.lua when bCutTrees is false. - Added changelog links for each library to Readme.md ### Version 0.91b - Added new property to projectiles.lua projectile tables, "fVisionTickTime" which controls how quickly the projectile vision updates while the projectile is in motion. ### Version 0.91 - Began version tracking of all libraries. - Fixed an issue where default projectiles.lua projectiles would not take on the correct velocity-oriented orientation automatically. - Fixed an issue with the parameters for certain notifications.lua functions not accepting the "continue" parameter ### Version 0.90 - Started tracking version updates - Updated projectiles.lua to allow for better orientation handling - Updated projectiles.lua with new properties for projectile vision-related - Updated ProjectilesReadme.md with new property information - Updated examples/projectile.lua with new properties - Fixed projectiles.lua tree detection to work with Reborn. ================================================ FILE: CollidersReadme.md ================================================ # **BMD's Lua Unit Colliders Library** -------------------------------- See [PhysicsReadme.md](https://github.com/bmddota/barebones/blob/source2/PhysicsReadme.md) for documentation and examples on using Physics/Motion controls. #### **How to install:** - Drop physics.lua in with your vscripts - Add require( 'physics' ) somewhere in your lua instantiation path #### **How to use:** - The colliders system can operate on regular units and Physics-units (though can only operate on Physics-units in some noted cases) - Colliders are constructed out of collider tables, of which several profiles are provided with this library (and more can be created) - Colliders are one of 3 primary types, COLLIDER_SPHERE, COLLIDER_BOX, or COLLIDER_AABOX - 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). - COLLIDER_BOX is a rectangular box collider which does not need to be aligned with the X/Y axes. - COLLIDER_AABOX is a rectangular box collider which must be aligned with the X/Y axes. These are generally far cheaper than COLLIDER_BOX. - Colliders can be expensive. Pay close attention to the .filter and .test properties of each collider in order to improve performance. - The easiest way to jump in with colliders is to check out the Collider Profiles and Examples sections **Colliders Library Functions** ============================= #### **Physics:AddCollider([name,] collider)** 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. #### **Physics:ColliderFromProfile(profileName[, collider])** 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. #### **Physics:CreateColliderProfile(profileName, profile)** 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. #### **Physics:RemoveCollider(name)** This function removes a collider by name from the Physics API so that it is no longer processed. **PhysicsUnit Functions** ============================= A unit which has been converted to a Physics Unit can have a collider attached to it and managed using the following functions: #### **AddCollider([name,] collider)** 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. #### **AddColliderFromProfile([name,] profile, [collider])** 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. #### **GetColliders()** Returns a table of all colliders attached to this unit in {name=colliderTable} format. #### **GetMass()** Returns the mass of this unit for use in "momentum" collider calculations. The default mass is set to 100. #### **RemoveCollider(name)** This function can be called to remove a collider by name from this unit. The collider will also be removed from the Physics API. #### **SetMass(mass)** Sets the mass of this unit for use in "momentum" collider calculations. **Collider Table Format** ============================= Colliders 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: ### **COLLIDER_SPHERE Type** | Property | Description | | :------------ | :-----| | draw | Whether to DebugDraw the collider for visual confirmation. Additionally, a table can be provided with color and alpha properties. | | 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.| | name | The unique string used as a registration reference for this collider | radius | The radius within which to detect and test entities for collision | | skipFrames | The number of frames to skip between tests. Each frame is 33 milliseconds delay. Defaults to 0 (30 checks per second) | | skipOffset | Advanced property used to space out colliders with skipFrames. Automatically set by Physics API. | | type | COLLIDER_SPHERE, COLLIDER_BOX, or COLLIDER_AABOX | | Functions | Parameters | Description | | :------------ | :---------| :-----| | 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. | | 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. | | 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. | | 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. | | 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. | ### **COLLIDER_BOX/COLLIDER_AABOX Type** | Property | Description | | :------------ | :-----| | 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().| | draw | Whether to DebugDraw the collider for visual confirmation. Additionally, a table can be provided with color and alpha properties. | | 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.| | name | The unique string used as a registration reference for this collider | | recollideTime | The amount of gametime to prevent a recollision with this collider by any given unit. Generally 0. | | skipFrames | The number of frames to skip between tests. Each frame is 33 milliseconds delay. Defaults to 0 (30 checks per second) | | skipOffset | Advanced property used to space out colliders with skipFrames. Automatically set by Physics API. | | type | COLLIDER_SPHERE, COLLIDER_BOX, or COLLIDER_AABOX | | Functions | Parameters | Description | | :------------ | :---------| :-----| | 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. | | 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. | | 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. | | 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. | | 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. | **Built-in Collider Profiles** ============================= ## **COLLIDER_SPHERE** ### **blocker** A blocker collider blocks out either the colliding unit or the collider-attached unit whenever a successful collision is found. Can affect non-Physics units. | Property | Description | | :------------ | :-----| | buffer | Additional distance beyond the collider radius to block units out that collide with this collider. Defaults to 0.| | findClearSpace | Whether to use FindClearSpaceForUnit to block the colliding unit out. Defaults to false. | | moveSelf | If set to true, this collider will move the attached unit instead of the colliding unit. Defaults to false.| ### **delete** A delete collider deletes the colliding unit or the collider-attached unit whenever a successful collision is found. Can affect non-Physics units. | Property | Description | | :------------ | :-----| | deleteSelf | If set to true, this collider will delete the attached unit instead of the colliding unit. Defaults to true.| | removeCollider | When this collider successfully collides with a unit, immediately remove it so as to prevent further collisions. Defaults to true. | ### **gravity** A gravity collider applies a force to any colliding unit attracting it towards the collider-attached unit with a given force and function. | Property | Description | | :------------ | :-----| | 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.| | 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. | | 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.| | 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.| ### **repel** A repel collider applies a force to any colliding unit repelling it away from the collider-attached unit with a given force and function. | Property | Description | | :------------ | :-----| | 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.| | 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. | | 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. | | 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.| ### **reflect** A 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. | Property | Description | | :------------ | :-----| | block | Whether this collider should also act as a blocker for units. Defaults to true.| | blockRadius | If blocking, the radius from the collider-attached unit from which to begin blocking units. Defaults to 100.| | buffer | If blocking, the additional distance beyond the collider radius to block units out that collide with this collider. Defaults to 0.| | findClearSpace | If blocking, whether to use FindClearSpaceForUnit to block the colliding unit out. Defaults to false. | | moveSelf | If blocking and set to true, this collider will move the attached unit instead of the colliding unit. Defaults to false.| | multiplier | The scalar multiplier to apply to the incident vector velocity to create the reflecting force. Defaults to 1.0| ### **momentum** A 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. | Property | Description | | :------------ | :-----| | block | Whether this collider should also act as a blocker for units. Defaults to true.| | blockRadius | If blocking, the radius from the collider-attached unit from which to begin blocking units. Defaults to 100.| | buffer | If blocking, the additional distance beyond the collider radius to block units out that collide with this collider. Defaults to 0.| | 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.| | findClearSpace | If blocking, whether to use FindClearSpaceForUnit to block the colliding unit out. Defaults to false. | | moveSelf | If blocking and set to true, this collider will move the attached unit instead of the colliding unit. Defaults to false.| ### **momentumFull** A 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. | Property | Description | | :------------ | :-----| | block | Whether this collider should also act as a blocker for units. Defaults to true.| | blockRadius | If blocking, the radius from the collider-attached unit from which to begin blocking units. Defaults to 100.| | buffer | If blocking, the additional distance beyond the collider radius to block units out that collide with this collider. Defaults to 0.| | 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.| | findClearSpace | If blocking, whether to use FindClearSpaceForUnit to block the colliding unit out. Defaults to false. | | moveSelf | If blocking and set to true, this collider will move the attached unit instead of the colliding unit. Defaults to false.| ----------------------------------- ## **COLLIDER_AABOX / COLLIDER_BOX** ### **aaboxblocker** / **boxblocker** A 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. | Property | Description | | :------------ | :-----| | buffer | The additional distance beyond the collider box definition to block units out that collide with this collider. Defaults to 0.| | findClearSpace | Whether to use FindClearSpaceForUnit to block the colliding unit out. Defaults to false. | | slide | Whether the colliding Physics Unit should slide along the edge of the box with which it collides. Defaults to true.| ### **aaboxreflect** / **boxreflect** A boxreflect collider blocks out the colliding unit whenever a successful collision is found. | Property | Description | | :------------ | :-----| | block | Whether this collider should also act as a blocker for units. Defaults to true.| | buffer | The additional distance beyond the collider box definition to block units out that collide with this collider. Defaults to 0.| | findClearSpace | Whether to use FindClearSpaceForUnit to block the colliding unit out. Defaults to false. | | multiplier | The scalar multiplier to apply to the incident vector velocity to create the reflecting force. Defaults to 1.0| **Examples:** ============================= See [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). ================================================ FILE: ContainersChangeLog.md ================================================ # containers.lua ChangeLog ### Version 0.80 - Added containers.lua library ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: ModmakerChangeLog.md ================================================ # modmaker.lua ChangeLog ### Version 0.80 - Added modmaker.lua library ================================================ FILE: NOTICE ================================================ Copyright 2014 BMD Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: NotificationsChangeLog.md ================================================ # notifications.lua ChangeLog ### Version 1.00 - Updated version to reflect the Barebones 1.0 release ### Version 0.89 - Changed the names of the panorama files from barebones_hud_base.* to barebones_notifications.* ### Version 0.88 - Updated notifications subsystem to support deleting notifications on-demand ### Version 0.87 - Updated notifications subsystem to support DOTAItemImage panel type. ### Version 0.86 - Updated notifications subsystem to apply hittest="false" to all generated panels ### Version 0.85 - Updated notifications.lua to support DOTAAbilityImage and Image panel types. - Updated notifications.lua to use a table-based function call **NOTE: Older multi-parameter calls to notifications.lua WILL FAIL.** - Updated examples/notificationsExample.lua to reflect the new calls and table argument system. ### Version 0.80 - Added global NOTIFICATIONS_VERSION - Started tracking version updates for notifications.lua ================================================ FILE: PathGraphChangeLog.md ================================================ # pathgraph.lua ChangeLog ### Version 0.80 - Added pathgraph.lua library ================================================ FILE: PhysicsChangeLog.md ================================================ # physics.lua ChangeLog ### Version 1.01 - Fixed visual issue in physics.lua box drawing + CreateBox bug ### Version 1.00 - 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. - Fixed an issue where unit:StopPhysicsSimulation() did not halt the physics simulation. - Calling Physics:Unit again now reinitializes the simulation in tools mode, but is ignored in live game mode. - Added a flat friction in addition to the percentage friction already existing. - Added static velocity setting/getting to manipulate individual force components separate from the combined force. - Added the ability to have a physics unit cut trees as it moves. - Added the ability for a unit to navigate according to the slope of the terrain itself for non-GNV navigation. - Physics now reports its thinker as "physics_lua_thinker" if the Entity System warns of the physics simulation running too long in console. ### Version 0.91 - Added additional guards to better handle 'script_reload' ### Version 0.90 - Added global PHYSICS_VERSION - Started tracking version updates for physics.lua ================================================ FILE: PhysicsReadme.md ================================================ # **BMD's Lua Unit Physics Library** -------------------------------- See [CollidersReadme.md](https://github.com/bmddota/barebones/blob/source2/CollidersReadme.md) for documentation and examples on using Colliders. #### **How to install:** - Drop physics.lua in with your vscripts - Add require( 'physics' ) somewhere in your lua instantiation path #### **How to use:** - To turn any dota unit into a Physics unit, run Physics:Unit(unitEntity) - This adds a bunch of new functions to the unit which allow for it to simulate physics - All velocity/acceleration vectors are in hammer units per second or hammer units per second squared **Physics Library Functions** ============================= #### **Physics:Unit (unit)** Makes a unit into a "physics" unit which can be manipulated using the PhysicsUnit functions #### **Physics:GenerateAngleGrid()** 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. #### **Physics:AngleGrid (anggrid, angoffsets)** 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. #### **IsPhysicsUnit (unit)** This global function returns true if the unit in question has been converted to a "physics" unit. **PhysicsUnit Functions:** ============================= #### **AdaptiveNavGridLookahead (boolean)** Whether this unit should use an adaptive navgrid lookahead system to more reliably detect GNV collisions at high speed #### **AddPhysicsAcceleration (accelerationVector)** Adds a new acceleration vector to the current internal acceleration vector. #### **AddPhysicsVelocity (velocityVector)** Adds a new velocity vector to the current internal velocity vector. This is effectively a force push on the unit. #### **AddStaticVelocity (name, velocityVector)** Adds a new velocity vector to the current internal static velocity vector of the given name. #### **ClearStaticVelocity ()** Clears all current static velocity vectors, effectively setting them to (0,0,0) #### **CutTrees (boolean)** Sets whether this unit should automatically cut trees when it collides with them or not. Default is false. #### **FollowNavMesh (boolean)** Whether this unit should respect the NavMesh when moving and exhibit NavCollisionType behavior when interacting with a NavGrid block #### **GetAutoUnstuck ()** 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. #### **GetBounceMultiplier ()** 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) #### **GetBoundOverride ()** 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)" #### **GetLastGoodPosition ()** Returns the vector position which was the last known position that the unit was in that was unblocked/pathable. #### **GetNavCollisionType ()** Returns the current GridNav Collision Type (PHYSICS_NAV_NOTHING, PHYSICS_NAV_HALT, PHYSICS_NAV_SLIDE, PHYSICS_NAV_BOUNCE, or PHYSICS_NAV_GROUND) #### **GetNavGridLookahead ()** Returns the current number of Navigation Grid lookahead points. See SetNavGridLookahead for more details. Default is 1 #### **GetNavGroundAngle ()** Returns the current terrain angle that will cause PHYSICS_NAV_GROUND based navigation to slide. #### **GetPhysicsAcceleration ()** Returns the current acceleration vector. Default is (0,0,0) #### **GetPhysicsBoundingRadius ()** Returns the current bounding radius used for navgrid collision. Default is the PaddedCollisionRadius of a unit. #### **GetPhysicsFlatFriction ()** Returns the current flat friction amount. Default is 0 #### **GetPhysicsFriction ()** Returns the current friction multiplier and flat friction amount. Default is .05, 0 #### **GetPhysicsVelocity ()** Returns the current velocity vector. Default is (0,0,0) #### **GetPhysicsVelocityMax ()** Returns the maximum velocity. Default is 0, representing an unlimited velocity #### **GetRebounceFrames ()** Returns the number of rebounce frames to wait between PHYSICS_NAV_BOUNCE collisions. Default is 2. #### **GetStaticVelocity (name)** Returns the current static velocity force for the given name. #### **GetStuckTimeout ()** Returns the number of frames necessary to determine if a unit is stuck in unpathable terrain and to activate AutoUnstuck #### **GetSlideMultiplier ()** Returns the slide multipler value. Default is 0.1 #### **GetTotalVelocity ()** 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. #### **GetVelocityClamp ()** Returns the current velocity clamp in hammer units per second. Default is 20 hammer units per second #### **Hibernate (boolean)** 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. #### **IsAdaptiveNavGridLookahead ()** Returns whether this unit will use an adaptive navgrid lookahead system to more reliably detect GNV collisions at high speed #### **IsCutTrees ()** Returns whether this unit is currently set to automatically cut trees it collides with. Default is false #### **IsFollowNavMesh ()** Returns whether this unit will respect the navigation mesh when moving the unit around. #### **IsHibernate ()** Returns whether this unit should hibernate when there are no physics calculations to be performed #### **IsInSimulation ()** Returns whether this unit is currently in an active physics simulation or not. #### **IsLockToGround ()** Returns whether this unit will lock the unit to the ground while performing position calculations. #### **IsPreventDI ()** Returns whether this unit will be prevented from influencing the direction of the physics calculations. #### **IsSlide ()** Returns whether this unit is currently sliding #### **OnBounce (function(unit, normal))** 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. #### **OnPreBounce (function(unit, normal))** 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. #### **OnHibernate (function(unit))** Set the callback function (with one parameter, the unit in question) to be executed in the event that this unit begins hibernating. #### **OnSlide (function(unit, normal))** 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. #### **OnPreSlide (function(unit, normal))** 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. #### **OnPhysicsFrame (function(unit))** 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. #### **PreventDI (boolean)** Whether to prevent this unit from influencing the direction of the simulation. The default is false #### **SetAutoUnstuck (boolean)** 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. #### **SetBounceMultiplier (bounceMultipler)** 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. #### **SetBoundOverride (bound)** 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. #### **SetGroundBehavior (groundBehavior)** - PHYSICS_GROUND_NOTHING: The unit will be able to pass through terrain and will not change its z-coordinate in any way concerning terrain - 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. - PHYSICS_GROUND_LOCK: The unit will remain attached to the ground regardless of z-coordinate position/velocity/acceleration #### **SetNavCollisionType (navCollisionType)** 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 - PHYSICS_NAV_NOTHING: The unit will continue normal velocity/position calculations, potentially bumping up against the nav mesh multiple times - PHYSICS_NAV_HALT: The unit will halt its velocity immediately in all directions - PHYSICS_NAV_SLIDE: The unit will halt its velocity in only the x or y direction depending on the collision direction with the GridNav - 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 - 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. #### **SetNavGridLookahead (lookaheadPoints)** 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. #### **SetNavGroundAngle (angle)** Sets the current terrain angle that will cause PHYSICS_NAV_GROUND based navigation to slide. #### **SetPhysicsAcceleration (accelerationVector)** Sets the internal acceleration vector to the given vector, eliminating any existing acceleration #### **SetPhysicsBoundingRadius (boundingRadius)** Sets the internal bounding radius used for navgrid collision. #### **SetPhysicsFlatFriction (flatFriction)** Sets the flat friction amount. The default is 0. #### **SetPhysicsFriction (frictionMultiplier[, flatFriction])** Sets the friction multiplier and/or flat friction amount. The default is .05 and 0. Not providing flatFriction will keep the current value. #### **SetPhysicsVelocity (velocityVector)** Sets the internal velocity vector to the given vector, eliminating any existing velocity #### **SetPhysicsVelocityMax (maxVelocity)** Sets the maximum velocity that the unit will clamp to during the simulation. Default is 0, which in unlimited #### **SetRebounceFrames (rebounceFrames)** 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) #### **SetSlideMultiplier (slideMultiplier)** Sets the slide multiplier. The default is 0.1 #### **SetStaticVelocity (name, velocityVector)** 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 #### **SetStuckTimeout (stuckFrames)** 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). #### **SetVelocityClamp (clamp)** Sets the velocity magnitude clamp for stopping physics calculations/hibernating. The default is 20 hammer units per second #### **SkipSlide (frames)** 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. #### **Slide (boolean)** Whether this unit should be sliding or not. Sliding units accelerate based on their direction of travel in addition to their normal movespeed motion. #### **StartPhysicsSimulation ()** Restart the physics simulation if it has been stopped by StopPhysicsSimulation #### **StopPhysicsSimulation ()** Stop the physics simulation from executing any more for this unit **Examples:** ============================= Give a unit sliding motion ----------------------------- Physics:Unit(hero) hero:Slide(true) Push a unit to the left ----------------------------- Physics:Unit(hero) hero:AddPhysicsVelocity(Vector(-1000, 0, 0)) Start an accelerating "tractor beam" pulling one unit towards another without their influence ----------------------------- Physics:Unit(target) target:SetPhysicsVelocityMax(500) target:PreventDI() local direction = source:GetAbsOrigin() - target:GetAbsOrigin() direction = direction:Normalized() target:SetPhysicsAcceleration(direction * 50) target:OnPhysicsFrame(function(unit) -- Retarget acceleration vector local distance = source:GetAbsOrigin() - target:GetAbsOrigin() local direction = distance:Normalized() target:SetPhysicsAcceleration(direction * 50) -- Stop if reached the unit if distance:Length() < 100 then target:SetPhysicsAcceleration(Vector(0,0,0)) target:SetPhysicsVelocity(Vector(0,0,0)) target:OnPhysicsFrame(nil) end end) ================================================ FILE: PlayerTablesChangeLog.md ================================================ # playertables.lua ChangeLog ### Version 0.90 - Added playertables.lua library ================================================ FILE: ProjectilesChangeLog.md ================================================ # projectiles.lua ChangeLog ### Version 1.00 - Added a bDestroyImmediate property to the projectile definition which determines whether the DestroyParticle call should perform an immediate destruction. - Fixed a bug with changing velocity of certain projectiles. - Fixed a bug with OnFinish on ground collision. - Fixed an issue where projectile:Destroy() did not halt the particle simulation. - Added projectile:GetCreationTime(), projectile:GetDistanceTraveled(), projectile:GetPosition(), projectile:GetVelocity() - Projectiles now reports its thinker as "projectiles_lua_thinker" if the Entity System warns of the projectiles simulation running too long in console. ### Version 0.84 - Fixed 0-velocity projectiles producing a divide by 0 error ### Version 0.83 - Added additional guards to better handle 'script_reload' ### Version 0.82 - Fixed a simulation-failure issue with tree-handling in when bCutTrees is false. ### Version 0.81 - Added new property to projectile tables, "fVisionTickTime" which controls how quickly the projectile vision updates while the projectile is in motion. ### Version 0.80 - Added global PROJECTILES_VERSION - Started tracking version updates for projectiles.lua ================================================ FILE: ProjectilesReadme.md ================================================ # **BMD's Lua Advanced Projectiles Library** -------------------------------- #### **How to install:** - Drop projectiles.lua in with your vscripts - Add require( 'projectiles' ) somewhere in your lua instantiation path #### **How to use:** - The projectiles library can be used to generate projectiles which are a combination of mathematical simulation and particle control. - 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. - 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(). - 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. **Projectiles Library Functions** ============================= #### **Projectiles:CreateProjectile(projectile)** 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. #### **Projectiles:CalcSlope(pos, unit, dir)** 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. #### **Projectiles:CalcNormal(pos, unit, scale)** 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. **Projectile Table Functions** ============================= A projectile table which has been fed to CreateProjectile will have the following functions: #### **projectile:GetVelocity()** This function can be called to get the current velocity vector of this projectile. #### **projectile:Destroy()** This function can be called to immediately destroy this projectile, triggering its OnFinish callback function if present. #### **projectile:SetVelocity(newVel[, newPos])** 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. #### **projectile:GetCreationTime()** This function reutnrs the creation time in GameTime of this projectile. #### **projectile:GetDistanceTraveled()** 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. #### **projectile:GetPosition()** This function returns the current world position of the projectile. **Projectiles Table Format** ============================= Projectiles 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: | Property | Default | Description | | :------------ | :--------| :-----| | bProvidesVision | false | If set to true, this projectile will provide vision around it as it travels. | | bCutTrees | false | If set to true, this projectile will cut any trees that it comes in contact with. | | bFlyingVision | true | If set to true and, this projectile will provide flying vision as it travels (if bProvidesVision is enabled) | | 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. | | bIgnoreSource | true | If set to true, this projectile will not affect source. | | bMultipleHits | false | If set to true, this projectile can hit units multiple times after a timeout specified by fRehitDelay. | | 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. | | 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. | | 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. | | 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)} | | ControlPointForwards | {} | A table of control points for which to set Forward orientations when creating/recreating the particle for this projectile. Ex: {[5]=unit:GetForwardVector()} | | 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()}} | | 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)}} | | 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. | | EffectName | <none> | The particle path+file to use for the projectile particle, or "" for no particle. | | fChangeDelay | .1 | A minimum delay in GameTime to wait between velocity/position changes. | | fDistance | 1000 | The maximum travel distance of this projectile at which point it will expire and call OnFinish if present. | | fEndRadius | 100 | The projectile collision radius to scale to at the end of this projectiles distance/expiration time. | | 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. | | fGroundOffset | 40 | The z-offset/height to use in Ground-based calculations or ground-locking | | fRadiusStep | <computed> | If specified, the radius step is the amount of increase/decrease to happen to the radius every second | | 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) | | fStartRadius | 100 | The projectile collision radius to start the projectile at | | fVisionTickTime | .1 | The time in seconds between projectile vision updates while in flight. Rounds up to the nearest frame-boundary (.0333,.06666,.1, etc) | | fVisionLingerDuration | .1 | The time in seconds that the vision should linger as the projectile moves. Defaults to the same value as fVisionTickTime. | | 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. | | iPositionCP | 0 | The control point to use for the position of the particle. | | iVelocityCP | 1 | The control point to use for the velocity of the particle. | | iVisionRadius | 200 | The vision radius for this projectile if enabled. | | iVisionTeamNumber | <Source unit's team> | The team for which to display this projectile's vision if enabled.| | nChangeMax | 1 | The maximum number of velocity/position changes this particle can undergo before it stops allowing changing position/velocity. | | Source | <none> | The source unit of this projectile | | 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.| | 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.| | 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)]}| | vVelocity | Vector(0,0,0) | The initial velocity of this projectile | | 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. | | Functions | Parameters | Description | | :------------ | :---------| :-----| | OnFinish | projectileTable, position | This function is called when the projectile is destroyed or expires for any reason other than Destroy() being called manually. | | OnGroundHit | projectileTable, groundPosition | This function is called whenever the projectile hits the ground. | | OnTreeHit | projectileTable, treeEntity | This function is called whenever the projectile hits a tree. | | OnUnitHit | projectileTable, unit | This function is called whenever the projectile hits a unit that passes the UnitTest function. | | OnWallHit | projectileTable, wallPosition | This function is called whenever the projectile hits a wall. | | 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. | **Examples:** ============================= See [examples/projectile.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/examples/projectile.lua) for a projectile example. ================================================ FILE: README.md ================================================ # Barebones Starter Mod Kit ### Version 1.01c ### [Change Log](https://github.com/bmddota/barebones/blob/source2/ChangeLog.md) ## Introduction Barebones 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. Barebones 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. Barebones currently provides limited examples for performing different tasks, and limited examples for unit/ability/item creation. Barebones divides scripts up into several sections: Core Files, Libraries, Examples and Internals. ## Installation Barebones 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 "\SteamApps\common\dota 2 beta\" folder. **Be sure you don't use the "dota_ugc" folder!** ## Core Files Core 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: #### settings.lua This file contains many special settings/properties created for barebones that allows you to define the high-level behavior of your game mode. You 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. #### gamemode.lua This is the primary barebones gamemode script and should be used to assist in initializing your game mode. This file contains helpful pseudo-event functions prepared for you for frequently needed initialization actions. #### events.lua This file contains a hooked version of almost every event that is currently known to fire in the DotA 2 Lua vscript code. You can drop your event handler functions in there to have your game mode react to events. #### addon_game_mode.lua This is the entry-point to your game mode and should be used primarily to precache models/particles/sounds/etc. ## Libraries I've included some helpful libraries with barebones that may prove useful in your game mode. #### timers.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/TimersChangeLog.md) This library allow for easily delayed/timed actions without the messiness of thinkers and dealing with pauses. #### physics.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/PhysicsChangeLog.md) This library can be used for advancted physics/motion/collision of units. See [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. #### projectiles.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/ProjectilesChangeLog.md) This library can be used for advanced 3D projectile systems. See [ProjectilesReadme.md](https://github.com/bmddota/barebones/blob/source2/ProjectilesReadme.md) for more information. #### notifications.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/NotificationsChangeLog.md) This library can be used to send panorama notifications to individuals/teams/everyone in your game. See [libraries/notifications.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/notifications.lua) for usage details and examples. #### animations.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/AnimationsChangeLog.md) This library can be used to start animations with customized animation rates, activities, and translations. See [libraries/animations.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/animations.lua) for usage details and examples. #### attachments.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/AttachmentsChangeLog.md) This library can be used to set up and put in place 'Frankenstein' attachments for attaching props to units. See [libraries/attachments.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/attachments.lua) for usage details and examples. #### playertables.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/PlayerTablesChangeLog.md) This library sets up tables that are shared between server (lua) and client (javascript) between specific (but changeable) clients. Similar to nettables. See [libraries/playertables.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/playertables.lua) for usage details and examples. #### containers.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/ContainersChangeLog.md) This library allows for additional inventory/item containing objects and shops to be used in your game mode. See [libraries/containers.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/containers.lua) for usage details. See [examples/playground.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/examples/playground.lua) for detailed examples. #### worldpanels.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/WorldPanelsChangeLog.md) This library allows for creating panorama layout panels that track the world position of an entity (or fixed world coordinate). See [libraries/worldpanels.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/worldpanels.lua) for usage details and examples. #### selection.lua [By Noya](https://github.com/MNoya) This 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. See [libraries/selection.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/selection.lua) for usage details and examples. #### pathgraph.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/PathGraphChangeLog.md) This library constructs a full-edge graph of all "path_corner" objects, allowing for the use of the path links via lua script. See [libraries/pathgraph.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/pathgraph.lua) for usage details and examples. #### modmaker.lua [Change Log](https://github.com/bmddota/barebones/blob/source2/ModmakerChangeLog.md) This library offers a searchable version of the lua server vscript API through the "modmaker_api" console command (in tools mode) See [libraries/modmaker.lua](https://github.com/bmddota/barebones/blob/source2/game/dota_addons/barebones/scripts/vscripts/libraries/modmaker.lua) for usage details and examples. ## Internals Barebones 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. These files are found in the internal directory. ## Debugging Barebones now only prints out (spams) debugging information when told to by setting the BAREBONES_DEBUG_SPEW value in gamemode.lua to true. Previously 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. ## Additional Information - Barebones also comes with a sample loading screen implementation in panorama which you can view and edit via the content panorama directory. - 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. - You can adjust the number of players allowed on each of your maps by editing addoninfo.txt. If you have any questions or concerns, leave an issue or mail me (bmddota@gmail.com). ================================================ FILE: TimersChangeLog.md ================================================ # timers.lua ChangeLog ### Version 1.05 - Added a shorthand for Timers:CreateTimer(...) as Timers(...) - Timers now continue to run after the game ends for post-game timing execution. - Timers library is now accessible as GameRules.Timers for instances where the Timers global is out of scope (triggers, etc) - Timers now allows a timer to successfully call Timers:RemoveTimer on itself from within the execution callback of the timer - Timers now reports its thinker as "timers_lua_thinker" if the Entity System warns of timers running too long in console. ### Version 1.03 - Added the ability to call a function with a table context - Added the use of the lua 'xpcall' function to give full stack traces if a timer errors out during execution. ### Version 1.01 - Added additional guards to better handle 'script_reload' ### Version 1.00 - Added global TIMERS_VERSION - Started tracking version updates for timers.lua ================================================ FILE: WorldPanelsChangeLog.md ================================================ # worldpanels.lua ChangeLog ### Version 0.81 - 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 - Fixed an issue with completely client-unknown entities immideately deleting their world panels on create. ### Version 0.80 - Added worldpanels.lua library ================================================ FILE: content/dota_addons/barebones/materials/overviews/playground.txt ================================================ "settings" { "clampu" "1" "clampv" "1" "nocompress" "1" "nomip" "1" } ================================================ FILE: content/dota_addons/barebones/materials/overviews/playground.vmat ================================================ "Layer0" { "Shader" "ui.vfx" "F_STENCIL_MASKING" "1" "F_TRANSLUCENT" "0" "Texture" "materials/overviews/playground.tga" } ================================================ FILE: content/dota_addons/barebones/materials/overviews/template_map.txt ================================================ "settings" { "clampu" "1" "clampv" "1" "nocompress" "1" "nomip" "1" } ================================================ FILE: content/dota_addons/barebones/materials/overviews/template_map.vmat ================================================ "Layer0" { "Shader" "ui.vfx" "F_STENCIL_MASKING" "1" "F_TRANSLUCENT" "0" "Texture" "materials/overviews/template_map.tga" } ================================================ FILE: content/dota_addons/barebones/materials/particle/basic_glow.vtex ================================================ "CDmeVtex" { "m_inputTextureArray" "element_array" [ "CDmeInputTexture" { "m_name" "string" "0" "m_fileName" "string" "materials/particle/basic_glow.tga" "m_colorSpace" "string" "srgb" "m_typeString" "string" "2D" } ] "m_outputTypeString" "string" "2D" "m_outputFormat" "string" "DXT5" "m_textureOutputChannelArray" "element_array" [ "CDmeTextureOutputChannel" { "m_inputTextureArray" "string_array" [ "0" ] "m_srcChannels" "string" "rgba" "m_dstChannels" "string" "rgba" "m_mipAlgorithm" "CDmeImageProcessor" { "m_algorithm" "string" "" "m_stringArg" "string" "" "m_vFloat4Arg" "vector4" "0 0 0 0" } "m_outputColorSpace" "string" "srgb" } ] } ================================================ FILE: content/dota_addons/barebones/materials/particle/basic_rope.vtex ================================================ "CDmeVtex" { "m_inputTextureArray" "element_array" [ "CDmeInputTexture" { "m_name" "string" "0" "m_fileName" "string" "materials/particle/basic_rope.psd" "m_colorSpace" "string" "srgb" "m_typeString" "string" "2D" } ] "m_outputTypeString" "string" "2D" "m_outputFormat" "string" "DXT5" "m_textureOutputChannelArray" "element_array" [ "CDmeTextureOutputChannel" { "m_inputTextureArray" "string_array" [ "0" ] "m_srcChannels" "string" "rgba" "m_dstChannels" "string" "rgba" "m_mipAlgorithm" "CDmeImageProcessor" { "m_algorithm" "string" "" "m_stringArg" "string" "" "m_vFloat4Arg" "vector4" "0 0 0 0" } "m_outputColorSpace" "string" "srgb" } ] } ================================================ FILE: content/dota_addons/barebones/materials/particle/basic_rope_energy.vtex ================================================ "CDmeVtex" { "m_inputTextureArray" "element_array" [ "CDmeInputTexture" { "m_name" "string" "0" "m_fileName" "string" "materials/particle/basic_rope_energy.tga" "m_colorSpace" "string" "srgb" "m_typeString" "string" "2D" } ] "m_outputTypeString" "string" "2D" "m_outputFormat" "string" "DXT5" "m_textureOutputChannelArray" "element_array" [ "CDmeTextureOutputChannel" { "m_inputTextureArray" "string_array" [ "0" ] "m_srcChannels" "string" "rgba" "m_dstChannels" "string" "rgba" "m_mipAlgorithm" "CDmeImageProcessor" { "m_algorithm" "string" "" "m_stringArg" "string" "" "m_vFloat4Arg" "vector4" "0 0 0 0" } "m_outputColorSpace" "string" "srgb" } ] } ================================================ FILE: content/dota_addons/barebones/materials/particle/basic_smoke.vtex ================================================ "CDmeVtex" { "m_inputTextureArray" "element_array" [ "CDmeInputTexture" { "m_name" "string" "0" "m_fileName" "string" "materials/particle/basic_smoke.tga" "m_colorSpace" "string" "srgb" "m_typeString" "string" "2D" } ] "m_outputTypeString" "string" "2D" "m_outputFormat" "string" "DXT5" "m_textureOutputChannelArray" "element_array" [ "CDmeTextureOutputChannel" { "m_inputTextureArray" "string_array" [ "0" ] "m_srcChannels" "string" "rgba" "m_dstChannels" "string" "rgba" "m_mipAlgorithm" "CDmeImageProcessor" { "m_algorithm" "string" "" "m_stringArg" "string" "" "m_vFloat4Arg" "vector4" "0 0 0 0" } "m_outputColorSpace" "string" "srgb" } ] } ================================================ FILE: content/dota_addons/barebones/materials/particle/basic_trail.vtex ================================================ "CDmeVtex" { "m_inputTextureArray" "element_array" [ "CDmeInputTexture" { "m_name" "string" "0" "m_fileName" "string" "materials/particle/basic_trail.tga" "m_colorSpace" "string" "srgb" "m_typeString" "string" "2D" } ] "m_outputTypeString" "string" "2D" "m_outputFormat" "string" "DXT5" "m_textureOutputChannelArray" "element_array" [ "CDmeTextureOutputChannel" { "m_inputTextureArray" "string_array" [ "0" ] "m_srcChannels" "string" "rgba" "m_dstChannels" "string" "rgba" "m_mipAlgorithm" "CDmeImageProcessor" { "m_algorithm" "string" "" "m_stringArg" "string" "" "m_vFloat4Arg" "vector4" "0 0 0 0" } "m_outputColorSpace" "string" "srgb" } ] } ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/barebones_attachments.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/barebones_notifications.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/barebones_worldpanels.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/containers/alt_container_example.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/containers/dota_inventory_item.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/containers/inventory_context_menu.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/containers/inventory_item.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/custom_loading_screen.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/custom_ui_manifest.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/modmaker/modmaker.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/selection.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/worldpanels/arrow.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/layout/custom_game/worldpanels/healthbar.xml ================================================ ================================================ FILE: content/dota_addons/barebones/panorama/scripts/barebones_attachments.js ================================================ var lastUnit = null; var activated = false; var showing = false; var pmscale = 1; function OnDragStart( panelId, dragCallbacks ) { var panel = $('#' + panelId); var toDragId = panel.toDragId; //$.Msg('OnDragStart -- ', toDragId, ' -- ', panelId, ' -- ', dragCallbacks); // hook up the display panel, and specify the panel offset from the cursor /*$.Msg('#' + panelId); var p = $('#' + panelId); $.Msg(p); $.Msg($.GetContextPanel()); if (panel === null && $('#' + panelId)) panel = $('#' + panelId); */ panel = $('#' + toDragId); dragCallbacks.displayPanel = panel;//panel; var cursor = GameUI.GetCursorPosition(); dragCallbacks.offsetX = cursor[0] - panel.actualxoffset;//250; dragCallbacks.offsetY = cursor[1] - panel.actualyoffset;//20; dragCallbacks.removePositionBeforeDrop = false; return false; } function OnDragEnd( panelId, draggedPanel ) { //$.Msg('OnDragEnd -- ', panelId, ' -- ', draggedPanel); draggedPanel.SetParent($.GetContextPanel()); return false; } function ValueChange(panel, amount) { //$.Msg(panel) var panel = $(panel); var defText = panel.GetChild(0); if (defText !== null && defText !== undefined){ defText = defText.text; defText = parseFloat(defText); } else{ defText = 0.0; } var text = panel.text; if (text === "") text = defText; else text = parseFloat(text); if (text === NaN) text = defText; text += amount * pmscale; if (panel.id == "Scale") panel.text = text.toFixed(2); else panel.text = text.toFixed(1); UpdateAttachment(); } function GetAttachmentTable() { var table = {}; table['model'] = $('#Model').text; table['attach'] =$('#Attach').text; table['scale'] = parseFloat($('#Scale').text) || 1.0; table['pitch'] = parseFloat($('#Pitch').text) || 0.0; table['yaw'] = parseFloat($('#Yaw').text) || 0.0; table['roll'] = parseFloat($('#Roll').text) || 0.0; table['XPos'] = parseFloat($('#XPos').text) || 0.0; table['YPos'] = parseFloat($('#YPos').text) || 0.0; table['ZPos'] = parseFloat($('#ZPos').text) || 0.0; return table; } function UpdateAttachment(a) { //$.Msg("UpdateAttachment "); var table = GetAttachmentTable(); GameEvents.SendCustomGameEventToServer( "Attachment_UpdateAttach", {index: lastUnit, properties:table} ); } function Freeze() { //$.Msg("Freeze"); var panel = $('#Freeze'); var label = panel.GetChild(0); var text = label.text; if (text === "Freeze") { label.text = "Unfreeze"; label.style.color = "#ffaaaa"; GameEvents.SendCustomGameEventToServer( "Attachment_Freeze", {index: lastUnit, freeze:true} ); } else { label.text = "Freeze"; label.style.color = "#aaaaff"; GameEvents.SendCustomGameEventToServer( "Attachment_Freeze", {index: lastUnit, freeze:false} ) } } function Save() { var table = GetAttachmentTable(); GameEvents.SendCustomGameEventToServer( "Attachment_SaveAttach", {index: lastUnit, properties:table} ) } function Load() { var table = GetAttachmentTable(); GameEvents.SendCustomGameEventToServer( "Attachment_LoadAttach", {index: lastUnit, properties:table} ) } function Hide() { var table = GetAttachmentTable(); GameEvents.SendCustomGameEventToServer( "Attachment_HideAttach", {index: lastUnit, properties:table} ) } function AttachCheckbox() { var panel = $('#AttachCheckbox'); var table = GetAttachmentTable(); GameEvents.SendCustomGameEventToServer( "Attachment_DoAttach", {index: lastUnit, properties:table, doAttach: panel.checked} ) } function SphereCheckbox() { var panel = $('#SphereCheckbox'); var table = GetAttachmentTable(); GameEvents.SendCustomGameEventToServer( "Attachment_DoSphere", {index: lastUnit, properties:table, doSphere: panel.checked} ) } function HideCosmetics() { var panel = $('#CosmeticsPanel'); if (panel.visible) panel.visible = false; else panel.visible = true; } function CloseCosmetics() { var panel = $('#CosmeticsPanel'); panel.visible = false; } function TopCamera() { GameUI.SetCameraPitchMax( 90 ); GameUI.SetCameraPitchMin( 90 ); GameUI.SetCameraYaw( 0 ); } function SideXCamera() { GameUI.SetCameraPitchMax( 1 ); GameUI.SetCameraPitchMin( 1 ); GameUI.SetCameraYaw( 0 ); } function SideYCamera() { GameUI.SetCameraPitchMax( 1 ); GameUI.SetCameraPitchMin( 1 ); GameUI.SetCameraYaw( 90 ); } function NormalCamera() { GameUI.SetCameraPitchMax( 60 ); GameUI.SetCameraPitchMin( 38 ); GameUI.SetCameraYaw( 0 ); } function SelectUnitUpdated() { //$.Msg('SelectUnitUpdated ', lastUnit, ' -- ', Players.GetLocalPlayerPortraitUnit()); var newUnit = Players.GetLocalPlayerPortraitUnit(); if (newUnit !== lastUnit) { $.Msg("new"); GameEvents.SendCustomGameEventToServer( "Attachment_UpdateUnit", {index: newUnit} ); } lastUnit = newUnit; } function PlusMinusScale() { $.Msg("PlusMinusScale"); var dropdown = $("#PlusMinusScale"); pmscale = parseFloat(dropdown.GetSelected().text); } function CosmeticListUpdated(msg) { //$.Msg("CosmeticListUpdated ", msg); // Remove old children var panel = $('#CosmeticsBody'); for (i=0;i 0 && panel.GetChildCount() > 0){ var start = panel.GetChildCount() - count; if (start < 0) start = 0; for (i=start;i sw || y < ph || y > sh) wp.panel.OffScreen = true; else wp.panel.OffScreen = false; } if (!isFinite(x) || isNaN(x) || !isFinite(y) || isNaN(y)) { x = -1000; y = -1000; wp.panel.visible = false; } else { wp.panel.visible = true; } wp.panel.style.position = x + "px " + y + "px 0px;"; //$.Msg(k, ' -- ', pw, ' -- ', ph); //var x = scale * Math.min(sw - panel.desiredlayoutwidth,Math.max(0, wx - panel.desiredlayoutwidth/2)); //var y = scale * Math.min(sh - panel.desiredlayoutheight,Math.max(0, wy - panel.desiredlayoutheight - 50)); } $.Schedule(1/200, PositionPanels); } function ScreenHeightWidth() { var panel = $.GetContextPanel(); GameUI.CustomUIConfig().screenwidth = panel.actuallayoutwidth; GameUI.CustomUIConfig().screenheight = panel.actuallayoutheight; $.Schedule(1/2, ScreenHeightWidth); } function UpdateEntities() { if (Object.keys(panels).length > 0) entities = Entities.GetAllEntities(); $.Schedule(1/10, UpdateEntities); } (function() { var pt = "worldpanels_" + Game.GetLocalPlayerID() ScreenHeightWidth(); PositionPanels(); UpdateEntities(); entities = Entities.GetAllEntities(); if ($.GetContextPanel().subscription !== undefined){ PlayerTables.UnsubscribeNetTableListener($.GetContextPanel().subscription); } subscription = PlayerTables.SubscribeNetTableListener(pt, WorldPanelChange); var tab = PlayerTables.GetAllTableValues(pt); for (var k in tab){ var change = {}; change[k] = tab[k]; WorldPanelChange(pt, change, {}); } $.GetContextPanel().subscription = subscription; })(); ================================================ FILE: content/dota_addons/barebones/panorama/scripts/containers/container.js ================================================ "use strict"; var Containers = GameUI.CustomUIConfig().Containers; var PlayerTables = GameUI.CustomUIConfig().PlayerTables; var contID = -1; var idString = ""; var subscription = -1; var isShop = false; var positionString = null; var oldSkins = {}; function GetID() { return contID; } function GetIDString() { return idString; } function ContainerChange(tableName, changes, del) { var panel = $.GetContextPanel(); //$.Msg('ContainerChange -- ', tableName, ' -- ', changes, ' -- ', del); if (!changes) return; if ("headerText" in del) SetHeaderText(""); if ("buttons" in del) SetButtons({}); if ("OnCloseClicked" in del) $("#CloseButton").visible = true; if ("position" in del) positionString = null; if ("skins" in changes) SetSkins(changes["skins"]); if ("headerText" in changes) SetHeaderText(changes["headerText"]); if ("layout" in changes) SetLayout(changes["layout"]); if ("buttons" in changes) SetButtons(changes["buttons"]); if ("draggable" in changes) panel.SetDraggable(changes["draggable"] !== 0); if ("position" in changes) SetPosition(changes["position"]); if ("shop" in changes) isShop = changes["shop"] == 1; if ("OnCloseClicked" in changes) $("#CloseButton").visible = changes["OnCloseClicked"] !== 0; } function SetSkins(skins) { var panel = $.GetContextPanel(); for (var key in skins){ //$.Msg("skin: ", key); panel.SetHasClass(key, true); delete oldSkins[key]; } for (var key in oldSkins){ //$.Msg("oldskin: ", key); panel.SetHasClass(key, false); } oldSkins = skins; } function SetHeaderText(text) { var label = $("#HeaderLabel"); label.text = $.Localize(text); } function SetLayout(layout) { var inner = $("#Inner"); inner.RemoveAndDeleteChildren(); var slot = 1; for (var key in layout){ var row = $.CreatePanel( "Panel", inner, "row" + key); row.AddClass('ItemRow'); //var queryUnit = Players.GetLocalPlayerPortraitUnit(); //var item = Entities.GetItemInSlot( queryUnit, i ); for (var j=0; j= 1 && (Entities.IsCreepHero(sel) || Entities.IsRealHero(sel))) { var shop = 0; shop += Entities.IsInRangeOfShop( sel, 0, true) ? 1 : 0; shop += Entities.IsInRangeOfShop( sel, 1, true) ? 2 : 0; shop += Entities.IsInRangeOfShop( sel, 2, true) ? 4 : 0; var oldShop = EntityShops[sel]; if (oldShop !== shop){ GameEvents.SendCustomGameEventToServer( "Containers_EntityShopRange", {unit:sel, shop:shop} ); } EntityShops[sel] = shop; } } function CheckShopSchedule() { CheckShop(); $.Schedule(1/10, CheckShopSchedule); } function CheckCouriers() { var cours = Entities.GetAllEntitiesByClassname("npc_dota_courier"); var info = Game.GetLocalPlayerInfo(); for (var i=0; i= 0 || (!bSellable && !bDisassemble && !bShowInShop && !bAlertable && !bMoveToStash )) { return true; } var contextMenu = $.CreatePanel( "ContextMenuScript", evt.itemPanel, "" ); contextMenu.AddClass( "ContextMenu_NoArrow" ); contextMenu.AddClass( "ContextMenu_NoBorder" ); contextMenu.GetContentsPanel().Item = m_Item; contextMenu.GetContentsPanel().Slot = evt.slot; contextMenu.GetContentsPanel().Container = evt.containerID; contextMenu.GetContentsPanel().SetHasClass( "bSellable", bSellable ); contextMenu.GetContentsPanel().SetHasClass( "bDisassemble", bDisassemble ); contextMenu.GetContentsPanel().SetHasClass( "bShowInShop", bShowInShop ); contextMenu.GetContentsPanel().SetHasClass( "bAlertable", bAlertable ); contextMenu.GetContentsPanel().SetHasClass( "bMoveToStash", false ); // TODO contextMenu.GetContentsPanel().BLoadLayout( "file://{resources}/layout/custom_game/containers/inventory_context_menu.xml", false, false ); return true; }); ================================================ FILE: content/dota_addons/barebones/panorama/scripts/containers/dota_inventory.js ================================================ "use strict"; var m_InventoryPanels = [] // Currently hardcoded: first 6 are inventory, next 6 are stash items var DOTA_ITEM_STASH_MIN = 6; var DOTA_ITEM_STASH_MAX = 12; function SetPosition() { var panel = $.GetContextPanel() var sw = panel.actuallayoutwidth; var sh = panel.actuallayoutheight; var flipped = Game.IsHUDFlipped(); var prop = flipped ? "margin-left" : "margin-right"; var stashPanel = $( "#stash_row" ); var invPanel = $( "#inventory_items" ); stashPanel.SetHasClass("Flipped", flipped); invPanel.SetHasClass("Flipped", flipped); /*if (flipped){ stashPanel.style.marginRight = "0px"; invPanel.style.marginRight = "0px"; } else{ stashPanel.style.marginLef t = "0px"; invPanel.style.marginLeft = "0px"; } invPanel[prop] = "235px";*/ $.Schedule(2, SetPosition); } function UpdateInventory() { var queryUnit = Players.GetLocalPlayerPortraitUnit(); for ( var i = 0; i < DOTA_ITEM_STASH_MAX; ++i ) { var inventoryPanel = m_InventoryPanels[i] var item = Entities.GetItemInSlot( queryUnit, i ); inventoryPanel.SetItem( queryUnit, item ); } } function CreateInventoryPanels() { var stashPanel = $( "#stash_row" ); var firstRowPanel = $( "#inventory_row_1" ); var secondRowPanel = $( "#inventory_row_2" ); if ( !stashPanel || !firstRowPanel || !secondRowPanel ) return; stashPanel.RemoveAndDeleteChildren(); firstRowPanel.RemoveAndDeleteChildren(); secondRowPanel.RemoveAndDeleteChildren(); m_InventoryPanels = []; for ( var i = 0; i < DOTA_ITEM_STASH_MAX; ++i ) { var parentPanel = firstRowPanel; if ( i >= DOTA_ITEM_STASH_MIN ) { parentPanel = stashPanel; } else if ( i > 2 ) { parentPanel = secondRowPanel; } var inventoryPanel = $.CreatePanel( "Panel", parentPanel, "" ); inventoryPanel.BLoadLayout( "file://{resources}/layout/custom_game/containers/dota_inventory_item.xml", false, false ); inventoryPanel.SetItemSlot( i ); m_InventoryPanels.push( inventoryPanel ); } } (function() { CreateInventoryPanels(); UpdateInventory(); SetPosition(); GameEvents.Subscribe( "dota_inventory_changed", UpdateInventory ); GameEvents.Subscribe( "dota_inventory_item_changed", UpdateInventory ); GameEvents.Subscribe( "m_event_dota_inventory_changed_query_unit", UpdateInventory ); GameEvents.Subscribe( "m_event_keybind_changed", UpdateInventory ); GameEvents.Subscribe( "dota_player_update_selected_unit", UpdateInventory ); GameEvents.Subscribe( "dota_player_update_query_unit", UpdateInventory ); })(); ================================================ FILE: content/dota_addons/barebones/panorama/scripts/containers/dota_inventory_context_menu.js ================================================ "use strict"; function DismissMenu() { $.DispatchEvent( "DismissAllContextMenus" ) } function OnSell() { Items.LocalPlayerSellItem( $.GetContextPanel().Item ); DismissMenu(); } function OnDisassemble() { Items.LocalPlayerDisassembleItem( $.GetContextPanel().Item ); DismissMenu(); } function OnShowInShop() { var itemName = Abilities.GetAbilityName( $.GetContextPanel().Item ); var itemClickedEvent = { "link": ( "dota.item." + itemName ), "shop": 0, "recipe": 0 }; GameEvents.SendEventClientSide( "dota_link_clicked", itemClickedEvent ); DismissMenu(); } function OnDropFromStash() { Items.LocalPlayerDropItemFromStash( $.GetContextPanel().Item ); DismissMenu(); } function OnMoveToStash() { Items.LocalPlayerMoveItemToStash( $.GetContextPanel().Item ); DismissMenu(); } function OnAlert() { Items.LocalPlayerItemAlertAllies( $.GetContextPanel().Item ); DismissMenu(); } ================================================ FILE: content/dota_addons/barebones/panorama/scripts/containers/dota_inventory_item.js ================================================ "use strict"; var m_Item = -1; var m_ItemSlot = -1; var m_QueryUnit = -1; function UpdateItem() { var panel = $.GetContextPanel(); var itemName = Abilities.GetAbilityName( m_Item ); var hotkey = Abilities.GetKeybind( m_Item, m_QueryUnit ); var isPassive = Abilities.IsPassive( m_Item ); var chargeCount = 0; var hasCharges = false; var altChargeCount = 0; var hasAltCharges = false; if (IsInStash()){ panel = panel.GetParent(); }else{ panel = panel.GetParent().GetParent(); } if (m_ItemSlot === 6 && panel.id === "stash_row"){ var show = false; for (var i=6; i<12; i++){ if (Entities.GetItemInSlot( m_QueryUnit, i ) !== -1){ show = true; break; } } panel.visible = show; } if (!panel.visible){ $.Schedule( 0.1, UpdateItem ); return; } if ( Items.ShowSecondaryCharges( m_Item ) ) { // Ward stacks display charges differently depending on their toggle state hasCharges = true; hasAltCharges = true; if ( Abilities.GetToggleState( m_Item ) ) { chargeCount = Items.GetCurrentCharges( m_Item ); altChargeCount = Items.GetSecondaryCharges( m_Item ); } else { altChargeCount = Items.GetCurrentCharges( m_Item ); chargeCount = Items.GetSecondaryCharges( m_Item ); } } else if ( Items.ShouldDisplayCharges( m_Item ) ) { hasCharges = true; chargeCount = Items.GetCurrentCharges( m_Item ); } $.GetContextPanel().SetHasClass( "no_item", (m_Item == -1) ); $.GetContextPanel().SetHasClass( "show_charges", hasCharges ); $.GetContextPanel().SetHasClass( "show_alt_charges", hasAltCharges ); $.GetContextPanel().SetHasClass( "is_passive", isPassive ); $.GetContextPanel().SetHasClass( "low_mana", ((m_QueryUnit !== -1) && Abilities.GetManaCost( m_Item ) > Entities.GetMana(m_QueryUnit))); //$.GetContextPanel().SetHasClass( "is_active", (Abilities.GetLocalPlayerActiveAbility() == m_Item)); $( "#HotkeyText" ).text = hotkey; $( "#ItemImage" ).itemname = itemName; $( "#ItemImage" ).contextEntityIndex = m_Item; $( "#ChargeCount" ).text = chargeCount; $( "#AltChargeCount" ).text = altChargeCount; if ( m_Item == -1 || Abilities.IsCooldownReady( m_Item ) ) { $.GetContextPanel().SetHasClass( "cooldown_ready", true ); $.GetContextPanel().SetHasClass( "in_cooldown", false ); } else { $.GetContextPanel().SetHasClass( "cooldown_ready", false ); $.GetContextPanel().SetHasClass( "in_cooldown", true ); var cooldownLength = Abilities.GetCooldownLength( m_Item ); var cooldownRemaining = Abilities.GetCooldownTimeRemaining( m_Item ); var cooldownPercent = Math.ceil( 100 * cooldownRemaining / cooldownLength ); $( "#CooldownTimer" ).text = Math.ceil( cooldownRemaining ); $( "#CooldownOverlay" ).style.width = cooldownPercent+"%"; } $.Schedule( 0.1, UpdateItem ); } function ItemShowTooltip() { if ( m_Item == -1 ) return; var itemName = Abilities.GetAbilityName( m_Item ); $.DispatchEvent( "DOTAShowAbilityTooltipForEntityIndex", $.GetContextPanel(), itemName, m_QueryUnit ); } function ItemHideTooltip() { $.DispatchEvent( "DOTAHideAbilityTooltip", $.GetContextPanel() ); } var lastClick = 1; // 1 right, 0 left function ActivateItem() { lastClick = 0; if ( m_Item == -1 ) return; // Items are abilities - just execute the ability Abilities.ExecuteAbility( m_Item, m_QueryUnit, false ); } function DoubleClickItem() { if (lastClick === 0) ActivateItem(); } var DOTA_ITEM_STASH_MIN = 6; function IsInStash() { return ( m_ItemSlot >= DOTA_ITEM_STASH_MIN ); } function RightClickItem() { lastClick = 1; ItemHideTooltip(); var bSlotInStash = IsInStash(); var bControllable = Entities.IsControllableByPlayer( m_QueryUnit, Game.GetLocalPlayerID() ); var bSellable = Items.IsSellable( m_Item ) && Items.CanBeSoldByLocalPlayer( m_Item ); var bDisassemble = Items.IsDisassemblable( m_Item ) && bControllable && !bSlotInStash; var bAlertable = Items.IsAlertableItem( m_Item ); var bShowInShop = Items.IsPurchasable( m_Item ); var bDropFromStash = bSlotInStash && bControllable; var bMoveToStash = Entities.IsInRangeOfShop(m_QueryUnit, 0, true); if ( !bSellable && !bDisassemble && !bShowInShop && !bDropFromStash && !bAlertable && !bMoveToStash ) { // don't show a menu if there's nothing to do return; } var contextMenu = $.CreatePanel( "ContextMenuScript", $.GetContextPanel(), "" ); contextMenu.AddClass( "ContextMenu_NoArrow" ); contextMenu.AddClass( "ContextMenu_NoBorder" ); contextMenu.GetContentsPanel().Item = m_Item; contextMenu.GetContentsPanel().SetHasClass( "bSellable", bSellable ); contextMenu.GetContentsPanel().SetHasClass( "bDisassemble", bDisassemble ); contextMenu.GetContentsPanel().SetHasClass( "bShowInShop", bShowInShop ); contextMenu.GetContentsPanel().SetHasClass( "bDropFromStash", bDropFromStash ); contextMenu.GetContentsPanel().SetHasClass( "bAlertable", bAlertable ); contextMenu.GetContentsPanel().SetHasClass( "bMoveToStash", bMoveToStash ); // TODO contextMenu.GetContentsPanel().BLoadLayout( "file://{resources}/layout/custom_game/containers/dota_inventory_context_menu.xml", false, false ); } function OnDragEnter( a, draggedPanel ) { var draggedItem = draggedPanel.m_DragItem; // only care about dragged items other than us if ( draggedItem === null || draggedItem == m_Item ) return true; // highlight this panel as a drop target $.GetContextPanel().AddClass( "potential_drop_target" ); return true; } function OnDragDrop( panelId, draggedPanel ) { var draggedItem = draggedPanel.m_DragItem; // only care about dragged items other than us if ( draggedItem === null ) return true; var dropTarget = $.GetContextPanel(); $.GetContextPanel().RemoveClass( "potential_drop_target" ); // executing a slot swap - don't drop on the world draggedPanel.m_DragCompleted = true; // item dropped on itself? don't acutally do the swap (but consider the drag completed) if ( draggedItem == m_Item ) return true; var fromCont = draggedPanel.m_contID; if (fromCont == -1){ // create the order var moveItemOrder = { OrderType: dotaunitorder_t.DOTA_UNIT_ORDER_MOVE_ITEM, TargetIndex: m_ItemSlot, AbilityIndex: draggedItem }; Game.PrepareUnitOrders( moveItemOrder ); } else{ GameEvents.SendCustomGameEventToServer( "Containers_OnDragFrom", {unit:Players.GetLocalPlayerPortraitUnit(), contID:fromCont, itemID:draggedItem, fromSlot:draggedPanel.m_OriginalPanel.GetSlot(), toContID:-1, toSlot:m_ItemSlot} ); } return true; } function OnDragLeave( panelId, draggedPanel ) { var draggedItem = draggedPanel.m_DragItem; if ( draggedItem === null || draggedItem == m_Item ) return false; // un-highlight this panel $.GetContextPanel().RemoveClass( "potential_drop_target" ); return true; } function OnDragStart( panelId, dragCallbacks ) { if ( m_Item == -1 ) { return true; } var itemName = Abilities.GetAbilityName( m_Item ); ItemHideTooltip(); // tooltip gets in the way // create a temp panel that will be dragged around var displayPanel = $.CreatePanel( "DOTAItemImage", $.GetContextPanel(), "dragImage" ); displayPanel.itemname = itemName; displayPanel.contextEntityIndex = m_Item; displayPanel.m_DragItem = m_Item; displayPanel.m_contID = -1; displayPanel.m_DragCompleted = false; // whether the drag was successful displayPanel.m_OriginalPanel = $.GetContextPanel(); displayPanel.m_QueryUnit = m_QueryUnit; // hook up the display panel, and specify the panel offset from the cursor dragCallbacks.displayPanel = displayPanel; dragCallbacks.offsetX = 0; dragCallbacks.offsetY = 0; // grey out the source panel while dragging $.GetContextPanel().AddClass( "dragging_from" ); return true; } function OnDragEnd( panelId, draggedPanel ) { if (!IsInStash() && !draggedPanel.m_DragCompleted){ var position = GameUI.GetScreenWorldPosition( GameUI.GetCursorPosition() ); var mouseEntities = GameUI.FindScreenEntities( GameUI.GetCursorPosition() ); var entity = null; if (mouseEntities.length !== 0){ for ( var e of mouseEntities ) { if ( e.accurateCollision ){ entity = e.entityIndex; break; } } } GameEvents.SendCustomGameEventToServer( "Containers_OnDragWorld", {unit:Players.GetLocalPlayerPortraitUnit(), contID:-1, itemID:m_Item, slot:m_ItemSlot, position:position, entity:entity} ); } // if the drag didn't already complete, then try dropping in the world //Game.DropItemAtCursor( m_QueryUnit, m_Item ); // kill the display panel draggedPanel.DeleteAsync( 0 ); // restore our look $.GetContextPanel().RemoveClass( "dragging_from" ); return true; } function SetItemSlot( itemSlot ) { m_ItemSlot = itemSlot; } function SetItem( queryUnit, iItem ) { m_Item = iItem; m_QueryUnit = queryUnit; } function GetSlot() { return m_ItemSlot; } (function() { $.GetContextPanel().SetItem = SetItem; $.GetContextPanel().SetItemSlot = SetItemSlot; $.GetContextPanel().GetSlot = GetSlot; // Drag and drop handlers ( also requires 'draggable="true"' in your XML, or calling panel.SetDraggable(true) ) $.RegisterEventHandler( 'DragEnter', $.GetContextPanel(), OnDragEnter ); $.RegisterEventHandler( 'DragDrop', $.GetContextPanel(), OnDragDrop ); $.RegisterEventHandler( 'DragLeave', $.GetContextPanel(), OnDragLeave ); $.RegisterEventHandler( 'DragStart', $.GetContextPanel(), OnDragStart ); $.RegisterEventHandler( 'DragEnd', $.GetContextPanel(), OnDragEnd ); UpdateItem(); // initial update of dynamic state })(); ================================================ FILE: content/dota_addons/barebones/panorama/scripts/containers/inventory_context_menu.js ================================================ "use strict"; function DismissMenu() { $.DispatchEvent( "DismissAllContextMenus" ) } function OnSell() { Items.LocalPlayerSellItem( $.GetContextPanel().Item ); GameEvents.SendCustomGameEventToServer( "Containers_OnSell", {unit:Players.GetLocalPlayerPortraitUnit(), contID:$.GetContextPanel().Container, itemID:$.GetContextPanel().Item, slot:$.GetContextPanel().Slot }); DismissMenu(); } function OnDisassemble() { Items.LocalPlayerDisassembleItem( $.GetContextPanel().Item ); DismissMenu(); } function OnShowInShop() { var itemName = Abilities.GetAbilityName( $.GetContextPanel().Item ); var itemClickedEvent = { "link": ( "dota.item." + itemName ), "shop": 0, "recipe": 0 }; GameEvents.SendEventClientSide( "dota_link_clicked", itemClickedEvent ); DismissMenu(); } function OnDropFromStash() { Items.LocalPlayerDropItemFromStash( $.GetContextPanel().Item ); DismissMenu(); } function OnMoveToStash() { Items.LocalPlayerMoveItemToStash( $.GetContextPanel().Item ); DismissMenu(); } function OnAlert() { Items.LocalPlayerItemAlertAllies( $.GetContextPanel().Item ); DismissMenu(); } ================================================ FILE: content/dota_addons/barebones/panorama/scripts/containers/inventory_item.js ================================================ "use strict"; var Containers = GameUI.CustomUIConfig().Containers; var PlayerTables = GameUI.CustomUIConfig().PlayerTables; var m_Item = -1; var m_ItemSlot = -1; var m_contID = -1; var m_contString = ""; var m_slot = -1; var m_QueryUnit = -1; var m_Container = null; var started = false; function UpdateItem() { m_Item = -1; if (m_contString !== ""){ m_Item = PlayerTables.GetTableValue(m_contString, "slot" + m_slot) || -1; m_QueryUnit = PlayerTables.GetTableValue(m_contString, "entity") || -1; var sel = Players.GetPlayerHeroEntityIndex( Players.GetLocalPlayer() ); if (!Entities.IsInventoryEnabled(m_QueryUnit) || !Entities.IsControllableByAnyPlayer(m_QueryUnit) || (Entities.GetTeamNumber(m_QueryUnit) != Entities.GetTeamNumber(sel))){ m_QueryUnit = -1; } } if (m_Container === null || m_Container.deleted){ return; } if (m_Container && !m_Container.visible){ $.Schedule( 0.1, UpdateItem ); return; } var itemName = Abilities.GetAbilityName( m_Item ); if (itemName == ""){ m_Item = -1; } var hotkey = Abilities.GetKeybind( m_Item, m_QueryUnit ); var isPassive = Abilities.IsPassive( m_Item ); var chargeCount = 0; var hasCharges = false; var altChargeCount = 0; var hasAltCharges = false; if ( Items.ShowSecondaryCharges( m_Item ) ) { // Ward stacks display charges differently depending on their toggle state hasCharges = true; hasAltCharges = true; if ( Abilities.GetToggleState( m_Item ) ) { chargeCount = Items.GetCurrentCharges( m_Item ); altChargeCount = Items.GetSecondaryCharges( m_Item ); } else { altChargeCount = Items.GetCurrentCharges( m_Item ); chargeCount = Items.GetSecondaryCharges( m_Item ); } } else if ( Items.ShouldDisplayCharges( m_Item ) ) { hasCharges = true; chargeCount = Items.GetCurrentCharges( m_Item ); } var isShop = m_Container && m_Container.IsShop(); var stock = -1; var price = -1; if (isShop && m_Item !== -1){ stock = PlayerTables.GetTableValue(m_contString, "stock" + m_Item); if (stock === null) stock = -1; price = PlayerTables.GetTableValue(m_contString, "price" + m_Item) || Items.GetCost(m_Item); } var gold = Players.GetGold(Players.GetLocalPlayer()); $.GetContextPanel().SetHasClass( "show_stock", stock >= 0 ); $.GetContextPanel().SetHasClass( "out_of_stock", stock === 0 ); $.GetContextPanel().SetHasClass( "show_price", price >= 0 ); $.GetContextPanel().SetHasClass( "high_price", gold < price ); $.GetContextPanel().SetHasClass( "no_item", (m_Item == -1) ); $.GetContextPanel().SetHasClass( "show_charges", hasCharges ); $.GetContextPanel().SetHasClass( "show_alt_charges", hasAltCharges ); $.GetContextPanel().SetHasClass( "is_passive", isPassive ); //$.GetContextPanel().SetHasClass( "no_mana_cost", (Abilities.GetManaCost( m_Item ) <= 0)); //$.Msg(m_QueryUnit, " -- ", m_Item, " -- ", Abilities.GetManaCost( m_Item ), " -- ", Entities.GetMana(m_QueryUnit)); $.GetContextPanel().SetHasClass( "low_mana", ((m_QueryUnit !== -1) && Abilities.GetManaCost( m_Item ) > Entities.GetMana(m_QueryUnit))); if (m_Container) $.GetContextPanel().SetHasClass( "is_active", (Abilities.GetLocalPlayerActiveAbility() == m_Item)); $( "#HotkeyText" ).text = hotkey; $( "#ItemImage" ).itemname = itemName; $( "#ItemImage" ).contextEntityIndex = m_Item; $( "#ChargeCount" ).text = chargeCount; $( "#AltChargeCount" ).text = altChargeCount; $( "#Price" ).text = price; $( "#Stock" ).text = "x" + stock; var manaCost = Abilities.GetManaCost( m_Item ); if (m_Container) $( "#ManaCost" ).text = Abilities.GetManaCost( m_Item ); if ( m_QueryUnit == -1 || m_Item == -1 || Items.GetPurchaser( m_Item ) == -1 || Abilities.IsCooldownReady( m_Item ) ) { $.GetContextPanel().SetHasClass( "cooldown_ready", true ); $.GetContextPanel().SetHasClass( "in_cooldown", false ); } else { $.GetContextPanel().SetHasClass( "cooldown_ready", false ); $.GetContextPanel().SetHasClass( "in_cooldown", true ); var cooldownLength = Abilities.GetCooldownLength( m_Item ); var cooldownRemaining = Abilities.GetCooldownTimeRemaining( m_Item ); var cooldownPercent = Math.ceil( 100 * cooldownRemaining / cooldownLength ); $( "#CooldownTimer" ).text = Math.ceil( cooldownRemaining ); $( "#CooldownOverlay" ).style.width = cooldownPercent+"%"; } $.Schedule( 0.1, UpdateItem ); } function ItemShowTooltip() { if ( m_Item == -1 ) return; var itemName = Abilities.GetAbilityName( m_Item ); $.DispatchEvent( "DOTAShowAbilityTooltipForEntityIndex", $.GetContextPanel(), itemName, m_QueryUnit ); } function ItemHideTooltip() { $.DispatchEvent( "DOTAHideAbilityTooltip", $.GetContextPanel() ); } function OnMouseOut() { var jsAction = PlayerTables.GetTableValue(m_contString, "OnMouseOutJS"); var pid = Game.GetLocalPlayerID(); var unit = Players.GetLocalPlayerPortraitUnit() unit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid); var handler = Containers.eventHandlers[jsAction] if (handler){ var ret = false; try{ ret = handler({unit:unit, containerID:m_contID, itemID:m_Item, slot:m_slot, containerPanel:m_Container, itemPanel:$.GetContextPanel()}); }catch(err){ $.Msg("[inventory_item.js] OnMouseOut callback error for '", jsAction, "': ", err.stack); } if (!ret) return; } ItemHideTooltip(); } function OnMouseOver() { var jsAction = PlayerTables.GetTableValue(m_contString, "OnMouseOverJS"); var pid = Game.GetLocalPlayerID(); var unit = Players.GetLocalPlayerPortraitUnit() unit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid); var handler = Containers.eventHandlers[jsAction] if (handler){ var ret = false; try{ ret = handler({unit:unit, containerID:m_contID, itemID:m_Item, slot:m_slot, containerPanel:m_Container, itemPanel:$.GetContextPanel()}); }catch(err){ $.Msg("[inventory_item.js] OnMouseOver callback error for '", jsAction, ": ", err.stack); } if (!ret) return; } ItemShowTooltip(); } var lastClick = 1; // 1 right, 0 left function ActivateItem(bypass) { lastClick = 0; var pid = Game.GetLocalPlayerID(); var unit = Players.GetLocalPlayerPortraitUnit() unit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid); if (!bypass){ var jsAction = PlayerTables.GetTableValue(m_contString, "OnLeftClickJS"); var handler = Containers.eventHandlers[jsAction] if (handler){ var ret = false; try{ ret = handler({unit:unit, containerID:m_contID, itemID:m_Item, slot:m_slot, containerPanel:m_Container, itemPanel:$.GetContextPanel()}); }catch(err){ $.Msg("[inventory_item.js] OnLeftClick callback error for '", jsAction, "': ", err.stack); } if (!ret) return; } } if ( m_Item == -1 ) return; var action = PlayerTables.GetTableValue(m_contString, "OnLeftClick"); if (action !== 0){ GameEvents.SendCustomGameEventToServer( "Containers_OnLeftClick", {unit:unit, contID:m_contID, itemID:m_Item, slot:m_slot} ); return; } //Abilities.ExecuteAbility( m_Item, m_QueryUnit, false ); } function DoubleClickItem() { var jsAction = PlayerTables.GetTableValue(m_contString, "OnDoubleClickJS"); var pid = Game.GetLocalPlayerID(); var unit = Players.GetLocalPlayerPortraitUnit() unit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid); var handler = Containers.eventHandlers[jsAction] if (handler){ var ret = false; try{ ret = handler({unit:unit, containerID:m_contID, itemID:m_Item, slot:m_slot, containerPanel:m_Container, itemPanel:$.GetContextPanel(), leftClick:lastClick === 0}); }catch(err){ $.Msg("[inventory_item.js] OnDoubleClick callback error for '", jsAction, "': ", err.stack); } if (!ret) return; } if (lastClick === 0) ActivateItem(true); } var DOTA_ITEM_STASH_MIN = 6; function IsInStash() { return ( m_ItemSlot >= DOTA_ITEM_STASH_MIN ); } function RightClickItem() { lastClick = 1; var jsAction = PlayerTables.GetTableValue(m_contString, "OnRightClickJS"); var action = PlayerTables.GetTableValue(m_contString, "OnRightClick"); var pid = Game.GetLocalPlayerID(); var unit = Players.GetLocalPlayerPortraitUnit() unit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid); var handler = Containers.eventHandlers[jsAction] if (handler){ var ret = false; try{ ret = handler({unit:unit, containerID:m_contID, itemID:m_Item, slot:m_slot, containerPanel:m_Container, itemPanel:$.GetContextPanel()}); }catch(err){ $.Msg("[inventory_item.js] RightClick callback error for '", jsAction, "': ", err.stack); } if (!ret) return; } if (action === 1){ GameEvents.SendCustomGameEventToServer( "Containers_OnRightClick", {unit:unit, contID:m_contID, itemID:m_Item, slot:m_slot} ); return; } } function OnDragEnter( a, draggedPanel ) { var draggedItem = draggedPanel.m_DragItem; // only care about dragged items other than us if ( draggedItem === null || draggedItem == m_Item ) return true; // highlight this panel as a drop target $.GetContextPanel().AddClass( "potential_drop_target" ); return true; } function OnDragDrop( panelId, draggedPanel ) { var draggedItem = draggedPanel.m_DragItem; // only care about dragged items other than us if ( draggedItem === null ) return true; var dropTarget = $.GetContextPanel(); $.GetContextPanel().RemoveClass( "potential_drop_target" ); // executing a slot swap - don't drop on the world draggedPanel.m_DragCompleted = true; // item dropped on itself? don't acutally do the swap (but consider the drag completed) if ( draggedItem == m_Item ) return true; var pid = Game.GetLocalPlayerID(); var unit = Players.GetLocalPlayerPortraitUnit() unit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid); var action = PlayerTables.GetTableValue(m_contString, "OnDragTo"); if (action !== 0){ GameEvents.SendCustomGameEventToServer( "Containers_OnDragFrom", {unit:unit, contID:draggedPanel.m_contID, itemID:draggedItem, fromSlot:draggedPanel.m_OriginalPanel.GetSlot(), toContID:m_contID, toSlot:m_slot} ); } /*if (m_Container || container) { if (m_Container && container) { draggedPanel.m_OriginalPanel.SetItem(m_QueryUnit, m_Item, container); SetItem(draggedPanel.m_QueryUnit, draggedItem, m_Container); } } else { // create the order var moveItemOrder = { OrderType: dotaunitorder_t.DOTA_UNIT_ORDER_MOVE_ITEM, TargetIndex: m_ItemSlot, AbilityIndex: draggedItem }; Game.PrepareUnitOrders( moveItemOrder ); }*/ return true; } function OnDragLeave( panelId, draggedPanel ) { var draggedItem = draggedPanel.m_DragItem; if ( draggedItem === null || draggedItem == m_Item ) return false; // un-highlight this panel $.GetContextPanel().RemoveClass( "potential_drop_target" ); return true; } function OnDragStart( panelId, dragCallbacks ) { if ( m_Item == -1 ) { return true; } var action = PlayerTables.GetTableValue(m_contString, "OnDragDrop"); var action2 = PlayerTables.GetTableValue(m_contString, "OnDragWorld"); if (action === 0 && action2 === 0){ return true; } var itemName = Abilities.GetAbilityName( m_Item ); ItemHideTooltip(); // tooltip gets in the way // create a temp panel that will be dragged around var displayPanel = $.CreatePanel( "DOTAItemImage", $.GetContextPanel(), "dragImage" ); displayPanel.itemname = itemName; displayPanel.contextEntityIndex = m_Item; displayPanel.m_DragItem = m_Item; displayPanel.m_contID = m_contID; displayPanel.m_DragCompleted = false; // whether the drag was successful displayPanel.m_OriginalPanel = $.GetContextPanel(); displayPanel.m_QueryUnit = m_QueryUnit; // hook up the display panel, and specify the panel offset from the cursor dragCallbacks.displayPanel = displayPanel; dragCallbacks.offsetX = 0; dragCallbacks.offsetY = 0; // grey out the source panel while dragging $.GetContextPanel().AddClass( "dragging_from" ); return true; } function OnDragEnd( panelId, draggedPanel ) { var action = PlayerTables.GetTableValue(m_contString, "OnDragWorld"); if (!draggedPanel.m_DragCompleted && action === 1){ var position = GameUI.GetScreenWorldPosition( GameUI.GetCursorPosition() ); var mouseEntities = GameUI.FindScreenEntities( GameUI.GetCursorPosition() ); var entity = null; var pid = Game.GetLocalPlayerID(); var unit = Players.GetLocalPlayerPortraitUnit() unit = Entities.IsControllableByPlayer( unit, pid ) ? unit : Players.GetPlayerHeroEntityIndex(pid); if (mouseEntities.length !== 0){ for ( var e of mouseEntities ) { if ( e.accurateCollision ){ entity = e.entityIndex; break; } } } GameEvents.SendCustomGameEventToServer( "Containers_OnDragWorld", {unit:unit, contID:m_contID, itemID:m_Item, slot:m_slot, position:position, entity:entity} ); } // if the drag didn't already complete, then try dropping in the world //Game.DropItemAtCursor( m_QueryUnit, m_Item ); // kill the display panel draggedPanel.DeleteAsync( 0 ); // restore our look $.GetContextPanel().RemoveClass( "dragging_from" ); return true; } function SetItemSlot( itemSlot ) { m_ItemSlot = itemSlot; } function SetItem( queryUnit, contID, slot, container ) { m_contID = contID; m_contString = "cont_" + contID; m_slot = slot; //m_Item = iItem; //m_QueryUnit = queryUnit; m_Container = container; if (!started){ UpdateItem(); // initial update of dynamic state } started = true; } function GetSlot() { return m_slot; } (function() { $.GetContextPanel().SetItem = SetItem; $.GetContextPanel().SetItemSlot = SetItemSlot; $.GetContextPanel().GetSlot = GetSlot; // Drag and drop handlers ( also requires 'draggable="true"' in your XML, or calling panel.SetDraggable(true) ) $.RegisterEventHandler( 'DragEnter', $.GetContextPanel(), OnDragEnter ); $.RegisterEventHandler( 'DragDrop', $.GetContextPanel(), OnDragDrop ); $.RegisterEventHandler( 'DragLeave', $.GetContextPanel(), OnDragLeave ); $.RegisterEventHandler( 'DragStart', $.GetContextPanel(), OnDragStart ); $.RegisterEventHandler( 'DragEnd', $.GetContextPanel(), OnDragEnd ); })(); ================================================ FILE: content/dota_addons/barebones/panorama/scripts/modmaker/modmaker.js ================================================ var files = {} var lua = null; var luaCategories = null; var properties = {} var categoryPanels = {} function DumpObjectIndented(obj, indent) { var result = ""; if (indent == null) indent = ""; for (var property in obj) { var value = obj[property]; if (typeof value == 'string') value = "'" + value + "'"; else if (typeof value == 'object') { if (value instanceof Array) { // Just let JS convert the Array to a string! value = "[ " + value + " ]"; } else { // Recursive dump // (replace " " by "\t" or something else if you prefer) var od = DumpObjectIndented(value, indent + " "); // If you like { on the same line as the key //value = "{\n" + od + "\n" + indent + "}"; // If you prefer { and } to be aligned value = "\n" + indent + "{\n" + od + "\n" + indent + "}"; } } result += indent + "'" + property + "' : " + value + ",\n"; } return result.replace(/,\n$/, ""); } //var a = DumpObjectIndented(this).split('\n') //for (var i=0; i', false, false) var label = $.CreatePanel( "Label", panel, "test"); label.AddClass("FileLine"); label.text = a[i]; label.SetAcceptsFocus(true); $.Msg(Object.keys(label).toString().replace(/,/g, "\n")); $.Msg(label.inputnamespace); break; } //var label = $.CreatePanel( "Label", panel, ""); //label.AddClass("FileLine"); //label.style.width = "100%"; //label.style.height = "fit-children"; //$.Msg(Object.keys(label)); //label.text = files[msg.name]; }*/ var panel = $("#FileWindow"); panel.RemoveAndDeleteChildren(); var keys = Object.keys(msg.t).sort(); for (var i in keys){ var s = keys[i]; //$.Msg(i); var t = msg.t[s]; var label = $.CreatePanel( "Label", panel, "test"); label.AddClass("FileLine"); label.text = s; label.SetAcceptsFocus(true); //$.Msg(t); var keys2 = Object.keys(t).sort(); for (j in keys2){ var s2 = keys2[j]; label = $.CreatePanel( "Label", panel, "test"); label.AddClass("FileLine"); label.text = ' ' + s2 + ':'; label.SetAcceptsFocus(true); label = $.CreatePanel( "Label", panel, "test"); label.AddClass("FileLine"); label.text = ' ' + t[s2].f; label.SetAcceptsFocus(true); label = $.CreatePanel( "Label", panel, "test"); label.AddClass("FileLine"); label.text = ' ' + t[s2].d + '\n'; label.SetAcceptsFocus(true); } label = $.CreatePanel( "Label", panel, "test"); label.AddClass("FileLine"); label.text = '\n'; label.SetAcceptsFocus(true); } } function CloseClicked() { $("#APIWindow").visible = false; } (function(){ GameEvents.Subscribe( "modmaker_lua_api", LuaAPI); GameEvents.Subscribe( "modmaker_send_file", SendFile); var api = $("#APIWindow"); var close = $("#CloseButton"); })(); ================================================ FILE: content/dota_addons/barebones/panorama/scripts/modmaker/modmaker_api_category.js ================================================ var loaded = false; var name = null; var cat = null; var properties = null; var propertyPanels = {} var showing = false; function Show() { showing = true; $("#PlusMinus").text = "-"; $("#Properties").visible = true; if (!loaded){ // load properties var panel = $("#Properties"); for (var i in properties){ var s = properties[i]; var prop = cat[s]; var propertyPanel = $.CreatePanel( "Panel", panel, s); propertyPanel.BLoadLayout("file://{resources}/layout/custom_game/modmaker/modmaker_api_property.xml", false, false); propertyPanels[s] = propertyPanel; propertyPanel.New(s, prop); } loaded = true; } } function Hide() { showing = false; $("#PlusMinus").text = "+"; $("#Properties").visible = false; } function Clicked() { if (showing) Hide(); else Show(); } function Filter(search, clear) { $.GetContextPanel().visible = true; if (clear){ Hide(); for (var prop in propertyPanels){ var panel = propertyPanels[prop]; panel.Show(); } return; } if (search.test(name)){ Show(); } else{ var show = {}; for (var prop in properties){ var p = properties[prop] if (search.test(p) || search.test(cat[p].d) || search.test(cat[p].f)){ show[p] = true; } } if (Object.keys(show).length !== 0){ Show(); for (var prop in properties){ var p = properties[prop] if (show[p]) propertyPanels[p].Show(); else propertyPanels[p].Hide(); } } else{ $.GetContextPanel().visible = false; } } } function New(n, t, p) { $("#PlusMinus").text = "+"; $("#CategoryName").text = n; name = n; cat = t; properties = p; } (function(){ $.GetContextPanel().Show = Show; $.GetContextPanel().Hide = Hide; $.GetContextPanel().New = New; $.GetContextPanel().Filter = Filter; $("#Properties").visible = false; })(); ================================================ FILE: content/dota_addons/barebones/panorama/scripts/modmaker/modmaker_api_property.js ================================================ var name = null; var prop = null; function Show() { $.GetContextPanel().visible = true; } function Hide() { $.GetContextPanel().visible = false; } function OpenGitHub() { $.Msg("OpenGitHub"); GameEvents.SendCustomGameEventToServer( "ModMaker_OpenGithub", {search:name, language:"lua"}); } function FuncClicked() { var panel = $.GetContextPanel(); $("#PropertyFunction").visible = false; var textEntry = $.CreatePanel( "TextEntry", panel, ""); panel.MoveChildBefore(textEntry, $("#PropertyDescription")); textEntry.text = $("#PropertyFunction").text textEntry.style.marginLeft = "40px;"; textEntry.style.width = "700px"; textEntry.SetPanelEvent('onblur', function(){ $("#PropertyFunction").visible = true; textEntry.DeleteAsync(0); }); textEntry.SetPanelEvent('oncancel', function(){ $("#PropertyFunction").visible = true; textEntry.DeleteAsync(0); }); textEntry.SelectAll(); textEntry.SetFocus(true); } function New(n, p) { $("#PropertyName").text = n; //$("#PropertyName").SetAcceptsFocus(true); $("#PropertyFunction").text = p.f; //$("#PropertyFunction").SetAcceptsFocus(true); $("#PropertyDescription").text = p.d; $("#PropertyDescription").SetAcceptsFocus(true); $("#PropertyDescription").visible = p.d !== ""; name = n; prop = p; } (function(){ $.GetContextPanel().Show = Show; $.GetContextPanel().Hide = Hide; $.GetContextPanel().New = New; })(); ================================================ FILE: content/dota_addons/barebones/panorama/scripts/playertables/playertables_base.js ================================================ var reload = true; var count = 0; var PT = { listeners: {}, tableListeners: {}, nextListener: 0, tables: {}, subs: [] }; $.Msg("[playertables_base.js] Loaded"); var PlayerTables = {}; PlayerTables.GetAllTableValues = function(tableName) { var table = PT.tables[tableName]; if (table) return JSON.parse(JSON.stringify(table)); return null; }; PlayerTables.GetTableValue = function(tableName, keyName) { var table = PT.tables[tableName]; if (!table) return null; var val = table[keyName]; if (typeof val === 'object') return JSON.parse(JSON.stringify(val)); return val; }; PlayerTables.SubscribeNetTableListener = function(tableName, callback) { var listeners = PT.tableListeners[tableName]; if (!listeners){ listeners = {}; PT.tableListeners[tableName] = listeners; } var ID = PT.nextListener; PT.nextListener++; listeners[ID] = callback; PT.listeners[ID] = tableName; return ID; }; PlayerTables.UnsubscribeNetTableListener = function(callbackID) { var tableName = PT.listeners[callbackID]; if (tableName){ if (PT.tableListeners[tableName]){ var listener = PT.tableListeners[tableName][callbackID]; if (listener){ delete PT.tableListeners[tableName][callbackID]; } } delete PT.listeners[callbackID]; } return; }; function isEquivalent(a, b) { var aProps = Object.getOwnPropertyNames(a); var bProps = Object.getOwnPropertyNames(b); if (aProps.length != bProps.length) { return false; } for (var i = 0; i < aProps.length; i++) { var propName = aProps[i]; if (a[propName] !== b[propName]) { return false; } } return true; } function ProcessTable(newTable, oldTable, changes, dels) { for (var k in newTable) { var n = newTable[k]; var old = oldTable[k]; if (typeof(n) == typeof(old) && typeof(n) == "object"){ if (!isEquivalent(n, old)){ changes[k] = n; } delete oldTable[k]; } else if (n !== old){ changes[k] = n; delete oldTable[k]; } else if (n === old){ delete oldTable[k]; } } for (var k in oldTable) { dels[k] = true; } } function SendPID() { var pid = Players.GetLocalPlayer(); var spec = Players.IsSpectator(pid); //$.Msg(pid, ' -- ', spec); if (pid == -1 && !spec){ $.Schedule(1/30, SendPID); return; } GameEvents.SendCustomGameEventToServer( "PlayerTables_Connected", {pid:pid} ); } function TableFullUpdate(msg) { //$.Msg('TableFullUpdate -- ', msg); //msg.table = UnprocessTable(msg.table); var newTable = msg.table; var oldTable = PT.tables[msg.name]; if (!newTable) delete PT.tables[msg.name]; else PT.tables[msg.name] = newTable; var listeners = PT.tableListeners[msg.name] || {}; var len = Object.keys(listeners).length; var changes = null; var dels = null; if (len > -1 && newTable){ if (!oldTable){ changes = newTable; dels = {}; } else { changes = {}; dels = {}; ProcessTable(newTable, oldTable, changes, dels); } } for (var k in listeners){ try{ listeners[k](msg.name, changes, dels);} catch(err){$.Msg("PlayerTables.TableFullUpdate callback error for '", msg.name, " -- ", newTable, "': ", err.stack);}; } }; function UpdateTable(msg) { //$.Msg('UpdateTable -- ', msg); //msg.changes = UnprocessTable(msg.changes); var table = PT.tables[msg.name]; if (!table) { $.Msg("PlayerTables.UpdateTable invoked on nonexistent playertable."); return; } var t = {}; for (var k in msg.changes){ var value = msg.changes[k]; table[k] = value; if (typeof value === 'object') t[k] = JSON.parse(JSON.stringify(value)); else t[k] = value; } var listeners = PT.tableListeners[msg.name] || {}; for (var k in listeners){ if (listeners[k]){ try{ listeners[k](msg.name, t, {});} catch(err){$.Msg("PlayerTables.UpdateTable callback error for '", msg.name, " -- ", t, "': ", err.stack);} } } } function DeleteTableKeys(msg) { //$.Msg('DeleteTableKeys -- ', msg); var table = PT.tables[msg.name]; if (!table) { $.Msg("PlayerTables.DeleteTableKey invoked on nonexistent playertable."); return; } var t = {}; for (var k in msg.keys){ var value = msg.keys[k]; delete table[k]; } var listeners = PT.tableListeners[msg.name] || {}; for (var k in listeners){ if (listeners[k]){ try{ listeners[k](msg.name, {}, msg.keys);} catch(err){$.Msg("PlayerTables.DeleteTableKeys callback error for '", msg.name, " -- ", msg.keys, "': ", err.stack);} } } } (function(){ GameUI.CustomUIConfig().PlayerTables = PlayerTables; SendPID(); GameEvents.Subscribe( "pt_fu", TableFullUpdate); GameEvents.Subscribe( "pt_uk", UpdateTable); GameEvents.Subscribe( "pt_kd", DeleteTableKeys); })() ================================================ FILE: content/dota_addons/barebones/panorama/scripts/selection/selection.js ================================================ "use strict"; var skip = false // Recieves a list of entities to replace the current selection function Selection_New(msg) { var entities = msg.entities //$.Msg("Selection_New ", entities) for (var i in entities) { if (i==1) GameUI.SelectUnit(entities[i], false) //New else GameUI.SelectUnit(entities[i], true) //Add }; OnUpdateSelectedUnit() } // Recieves a list of entities to add to the current selection function Selection_Add(msg) { var entities = msg.entities //$.Msg("Selection_Add ", entities) for (var i in entities) { GameUI.SelectUnit(entities[i], true) }; OnUpdateSelectedUnit() } // Removes a list of entities from the current selection function Selection_Remove(msg) { var remove_entities = msg.entities //$.Msg("Selection_Remove ", remove_entities) var selected_entities = GetSelectedEntities(); for (var i in remove_entities) { var index = selected_entities.indexOf(remove_entities[i]) if (index > -1) selected_entities.splice(index, 1) }; if (selected_entities.length == 0) { Selection_Reset() return } for (var i in selected_entities) { if (i==0) GameUI.SelectUnit(selected_entities[i], false) //New else GameUI.SelectUnit(selected_entities[i], true) //Add }; OnUpdateSelectedUnit() } // Fall back to the default selection function Selection_Reset(msg) { var playerID = Players.GetLocalPlayer() var heroIndex = Players.GetPlayerHeroEntityIndex(playerID) GameUI.SelectUnit(heroIndex, false) OnUpdateSelectedUnit() } // Filter & Sending function OnUpdateSelectedUnit() { //$.Msg( "OnUpdateSelectedUnit ", Players.GetLocalPlayerPortraitUnit() ); if (skip == true){ skip = false; return } // Skips units from the selected group SelectionFilter(GetSelectedEntities()) $.Schedule(0.03, SendSelectedEntities); } // Updates the list of selected entities on server for this player function SendSelectedEntities() { GameEvents.SendCustomGameEventToServer("selection_update", {entities: GetSelectedEntities()}) } // Local player shortcut function GetSelectedEntities() { return Players.GetSelectedEntities(Players.GetLocalPlayer()); } // Returns an index of an override defined on lua with npcHandle:SetSelectionOverride(reselect_unit) function GetSelectionOverride(entityIndex) { var table = CustomNetTables.GetTableValue("selection", entityIndex) return table ? table.entity : -1 } function OnUpdateQueryUnit() { //$.Msg( "OnUpdateQueryUnit ", Players.GetQueryUnit(Players.GetLocalPlayer())); } (function () { // Custom event listeners GameEvents.Subscribe( "selection_new", Selection_New); GameEvents.Subscribe( "selection_add", Selection_Add); GameEvents.Subscribe( "selection_remove", Selection_Remove); GameEvents.Subscribe( "selection_reset", Selection_Reset); // Built-In Dota client events GameEvents.Subscribe( "dota_player_update_selected_unit", OnUpdateSelectedUnit ); GameEvents.Subscribe( "dota_player_update_query_unit", OnUpdateQueryUnit ); })(); ================================================ FILE: content/dota_addons/barebones/panorama/scripts/selection/selection_filter.js ================================================ // Defines scripts to set selection redirects var DESELECT_BUILDINGS = false; // Get only the units when units&buildings are on the same list var SELECT_ONLY_BUILDINGS = true; // Get only the buildings when units&buildings are on the same list var DISPLAY_RANGE_PARTICLE = true; // Uses the main selected entity to update a particle showing attack range var rangedParticle function SelectionFilter( entityList ) { if (DESELECT_BUILDINGS) { if (entityList.length > 1 && IsMixedBuildingSelectionGroup(entityList) ){ $.Schedule(1/60, DeselectBuildings) } } else if (SELECT_ONLY_BUILDINGS) { if (entityList.length > 1 && IsMixedBuildingSelectionGroup(entityList) ){ $.Schedule(1/60, SelectOnlyBuildings) } } if (DISPLAY_RANGE_PARTICLE) { var mainSelected = Players.GetLocalPlayerPortraitUnit(); // Remove old particle if (rangedParticle) Particles.DestroyParticleEffect(rangedParticle, true) // Create range display on the selected ranged attacker if (IsCustomBuilding(mainSelected) && Entities.HasAttackCapability(mainSelected)) { var range = Entities.GetAttackRange(mainSelected) rangedParticle = Particles.CreateParticle("particles/ui_mouseactions/range_display.vpcf", ParticleAttachment_t.PATTACH_CUSTOMORIGIN, mainSelected) var position = Entities.GetAbsOrigin(mainSelected) position[2] = 380 //Offset Particles.SetParticleControl(rangedParticle, 0, position) Particles.SetParticleControl(rangedParticle, 1, [range, 0, 0]) } } for (var i = 0; i < entityList.length; i++) { var overrideEntityIndex = GetSelectionOverride(entityList[i]) if (overrideEntityIndex != -1) { GameUI.SelectUnit(overrideEntityIndex, false); } }; } function DeselectBuildings() { var iPlayerID = Players.GetLocalPlayer(); var selectedEntities = Players.GetSelectedEntities( iPlayerID ); skip = true; var first = FirstNonBuildingEntityFromSelection(selectedEntities) GameUI.SelectUnit(first, false); // Overrides the selection group for (var unit of selectedEntities) { skip = true; // Makes it skip an update if (!IsCustomBuilding(unit) && unit != first){ GameUI.SelectUnit(unit, true); } } } function FirstNonBuildingEntityFromSelection( entityList ){ for (var i = 0; i < entityList.length; i++) { if (!IsCustomBuilding(entityList[i])){ return entityList[i] } } return 0 } function GetFirstUnitFromSelectionSkipUnit ( entityList, entIndex ) { for (var i = 0; i < entityList.length; i++) { if ((entityList[i]) != entIndex){ return entityList[i] } } return 0 } // Returns whether the selection group contains both buildings and non-building units function IsMixedBuildingSelectionGroup ( entityList ) { var buildings = 0 var nonBuildings = 0 for (var i = 0; i < entityList.length; i++) { if (IsCustomBuilding(entityList[i])){ buildings++ } else { nonBuildings++ } } return (buildings>0 && nonBuildings>0) } function SelectOnlyBuildings() { var iPlayerID = Players.GetLocalPlayer(); var selectedEntities = Players.GetSelectedEntities( iPlayerID ); skip = true; var first = FirstBuildingEntityFromSelection(selectedEntities) GameUI.SelectUnit(first, false); // Overrides the selection group for (var unit of selectedEntities) { skip = true; // Makes it skip an update if (IsCustomBuilding(unit) && unit != first){ GameUI.SelectUnit(unit, true); } } } function FirstBuildingEntityFromSelection( entityList ){ for (var i = 0; i < entityList.length; i++) { if (IsCustomBuilding(entityList[i])){ return entityList[i] } } return 0 } function IsCustomBuilding( entityIndex ){ var ability_building = Entities.GetAbilityByName( entityIndex, "ability_building") var ability_tower = Entities.GetAbilityByName( entityIndex, "ability_tower") return (ability_building != -1 || ability_tower != -1) } function IsMechanical( entityIndex ) { var ability_siege = Entities.GetAbilityByName( entityIndex, "ability_siege") return (ability_siege != -1) } function IsCityCenter( entityIndex ){ return (Entities.GetUnitLabel( entityIndex ) == "city_center") } ================================================ FILE: content/dota_addons/barebones/panorama/scripts/worldpanels/arrow.js ================================================ $.Msg("arrow"); function ArrowCheck() { var wp = $.GetContextPanel().WorldPanel var onEdge = $.GetContextPanel().OnEdge; if (wp){ if (onEdge){ var sw = GameUI.CustomUIConfig().screenwidth; var sh = GameUI.CustomUIConfig().screenheight; var ang = -1 * Math.atan2($.GetContextPanel().actualxoffset - sw/2, $.GetContextPanel().actualyoffset - sh/2) * 180 / Math.PI; //$.Msg($.GetContextPanel().actualxoffset, $.GetContextPanel().actualyoffset); $("#arrow").style.transform = "rotateZ(" + ang.toFixed(1) + "deg);"; // } else{ $("#arrow").style.transform = "rotateZ(0deg);"; // } } $.Schedule(1/30, ArrowCheck); } (function() { ArrowCheck(); })(); ================================================ FILE: content/dota_addons/barebones/panorama/scripts/worldpanels/healthbar.js ================================================ $.Msg("healthbar"); var teamColors = GameUI.CustomUIConfig().team_colors; if (!teamColors) { GameUI.CustomUIConfig().team_colors = {} GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_GOODGUYS] = "#3dd296;"; GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_BADGUYS ] = "#F3C909;"; GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_1] = "#c54da8;"; GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_2] = "#FF6C00;"; GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_3] = "#3455FF;"; GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_4] = "#65d413;"; GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_5] = "#815336;"; GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_6] = "#1bc0d8;"; GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_7] = "#c7e40d;"; GameUI.CustomUIConfig().team_colors[DOTATeam_t.DOTA_TEAM_CUSTOM_8] = "#8c2af4;"; teamColors = GameUI.CustomUIConfig().team_colors; } teamColors[DOTATeam_t.DOTA_TEAM_NEUTRALS] = teamColors[DOTATeam_t.DOTA_TEAM_NEUTRALS] || "#aaaaaa;"; teamColors[DOTATeam_t.DOTA_TEAM_NOTEAM] = teamColors[DOTATeam_t.DOTA_TEAM_NOTEAM] || "#aaaaaa;"; function HealthCheck() { var wp = $.GetContextPanel().WorldPanel var offScreen = $.GetContextPanel().OffScreen; if (!offScreen && wp){ var ent = wp.entity; if (ent){ if (!Entities.IsAlive(ent)){ $.GetContextPanel().style.opacity = "0"; $.Schedule(1/30, HealthCheck); return; } //var pTeam = Players.GetTeam(Game.GetLocalPlayerID()); var team = Entities.GetTeamNumber(ent); // Color by friendly/enemy /*if (team == pTeam) $.GetContextPanel().SetHasClass("Friendly", true); else $.GetContextPanel().SetHasClass("Friendly", false);*/ $.GetContextPanel().style.opacity = "1"; var hp = Entities.GetHealth(ent); var hpMax = Entities.GetMaxHealth(ent); var hpPer = (hp * 100 / hpMax).toFixed(0); for (var i=1; i<=5; i++){ var pan = $("#HP" + i); var perc = Math.min(Math.max(0, hpPer), 20) * 5; pan.style.width = perc + "%;"; pan.style.backgroundColor = teamColors[team]; hpPer -= 20; } } } $.Schedule(1/30, HealthCheck); } (function() { HealthCheck(); })(); ================================================ FILE: content/dota_addons/barebones/panorama/styles/barebones_attachments.css ================================================ .ButtonRow { flow-children:right; align:center bottom; margin-top:10px; } .LineEntry { align:center center; vertical-align: center; width:95%; height:30px; margin-bottom: 10px; font-size: 14; font-weight: normal; } .LineLabel { align:center top; font-weight: bold; width:95%; } .ThreeEntry { flow-children:right; align:center top; margin-bottom: 0px; } .LabelEntry { width: 100px; flow-children:down; margin:5px 20px 5px 20px; } .LabelEntry Label { align: center top; font-weight: bold; } .LabelEntry TextEntry Label { align: left center; } .NumEntry { width:80px; } .PlusMinus { flow-children:down; } .PlusMinus Button { width:18px; height:18px; margin-bottom: 0px; padding: 0px; border: 1px solid #555555; } .PlusMinus Button Label { margin-top: -3px; margin-left: 3px; } .SButton { width: 100px; align: center top; margin-bottom: 0px; padding: 2px; margin:5px 20px 5px 20px; border: 1px solid #555555; } .CosmeticRow { flow-children:right; width:98%; height:20px; margin-bottom: 1px; border: 1px solid #555555; align: center top; } .CosmeticLabel { font-size: 12; font-weight: normal; align: left center; overflow: squish squish; color:white; } .CosmeticButton { width: 50px; align: right center; margin-bottom: 0px; border: 1px solid #555555; height: 20px; padding: 1px; } .CosmeticButton Label { margin-top: 0px; font-size: 12; font-weight: bold; align: center center; color: #ff3333; } .CameraButton { width: 50px; align: center bottom; padding: 2px; margin:5px 10px 15px 10px; border: 1px solid #555555; } .CameraButton Label { margin-top: 0px; font-size: 14; font-weight: bold; align: center center; color: #aaffaa; } #CosmeticsPanel { position: 1200px 50px 0px; flow-children: down; width: 700px; border: 2px solid #555555; } #CosmeticsHeader { background-color: #000000; width: 100%; height: 40px; align: center top; } #CosmeticsHeader Label { align: center center; font-weight: bold; font-size: 25; } #CloseButton { align: right top; } #CosmeticsBody { background-color: #333333; width: 100%; min-height: 100px; padding:5px; flow-children: down; } #AttachmentsPanel { position: 20px 50px 0px; flow-children: down; width: 500px; border: 2px solid #555555; } #AttachmentsHeader { background-color: #000000; width: 100%; height: 40px; flow-children:none; } #AttachmentsHeader Label { align: center center; font-weight: bold; font-size: 25; } #AttachmentsBody { background-color: #333333; width: 100%; flow-children: down; } #AttachmentsFooter { background-color: #000000; width: 100%; height: 20px; } #HideCosmetics Label { align: center top; font-weight: bold; color: #ffaaff; } #Freeze Label { align: center top; font-weight: bold; color: #aaaaff; } #Load Label { align: center top; font-weight: bold; color: #ffaaaa; } #Hide Label { align: center top; font-weight: bold; color: #111111; } #Save Label { align: center top; font-weight: bold; color: #aaffaa; } #PlusMinusScaleDropDownMenu { width:150px; } ================================================ FILE: content/dota_addons/barebones/panorama/styles/barebones_notifications.css ================================================ .BarebonesBaseHud { width: 100%; height: 100%; } .BarebonesTopNotifications { width: 100%; height: 100%; flow-children: down; } .BarebonesBottomNotifications { width: 100%; height: 100%; flow-children: down; } .NotificationLine { margin-top: 15px; flow-children: right; horizontal-align: center; vertical-align: middle; animation-name: scalein; animation-duration: .5s; animation-timing-function: linear; } #TopNotifications { flow-children: down; horizontal-align: center; width:100%; opacity: 1; margin-top: 64px; visibility: visible; border: 0px solid blue; } #BottomNotifications { flow-children: down; horizontal-align: center; vertical-align: bottom; width: 100%; opacity: 1; margin-bottom: 375px; visibility: visible; border: 0px solid blue; } .NotificationMessage { color: white; vertical-align: center; horizontal-align: center; text-shadow: 4px 4px 4px #121212; font-size: 36px; font-weight: bold; text-align: center; } .HeroImage { vertical-align: center; horizontal-align: center; } @keyframes 'scalein' { from { opacity:0; transform: scaleX(2) scaleY(2); } to { opacity:1; transform: scaleX(1) scaleY(1); } } ================================================ FILE: content/dota_addons/barebones/panorama/styles/containers/container.css ================================================ .ContainersBase { width:100%; height:100%; } .Outer { flow-children: down; border: 1px solid #555555; background-color: #000000; } #Inner { margin:0px 10px 10px 10px; flow-children: down; border: 1px solid #555555; align: center center; background-color: #333333; } #Header { background-color: #000000; width: 100%; height: 40px; align: center top; } #CloseButton { align: right top; } #HeaderLabel { align: center center; font-weight: bold; font-size: 25; } #Footer { margin-bottom: 8px; align: center center; flow-children: right; //visibility: collapse; } .ButtonBevel { margin-right: 2px; margin-left: 2px; min-height: 0px; min-width: 0px; vertical-align: middle; horizontal-align: center; padding-top: 2px; padding-bottom: 2px; padding-right: 6px; padding-left: 6px; } .ButtonBevel Label { font-size: 16px; margin-top: 2px; } .InventoryOverlayRoot { horizontal-align: right; vertical-align: bottom; margin-bottom: 28px; margin-right: 10px; flow-children: down; } .AspectRatio5x4 #inventory_items.Flipped { margin-right: 0px; margin-left: 80px; } .AspectRatio5x4 #inventory_items { margin-bottom: 26px; margin-right: 80px; } .AspectRatio4x3 #inventory_items.Flipped { margin-right: 0px; margin-left: 100px; } .AspectRatio4x3 #inventory_items { margin-bottom: 30px; margin-right: 100px; } .AspectRatio16x9 #inventory_items.Flipped { margin-right: 0px; margin-left: 230px; } .AspectRatio16x9 #inventory_items { margin-bottom: 27px; margin-right: 230px; } .AspectRatio16x10 #inventory_items.Flipped { margin-right: 0px; margin-left: 230px; } .AspectRatio16x10 #inventory_items { margin-bottom: 30px; margin-right: 230px; } #inventory_items.Flipped { horizontal-align: left; } #inventory_items { flow-children: down; border: 2px solid black; horizontal-align: right; vertical-align: bottom; margin-bottom: 235px; } .AspectRatio5x4 #stash_row { margin-bottom: 235px; transform: scale3d(.75, .75, 1); } .AspectRatio4x3 #stash_row { margin-bottom: 255px; } .AspectRatio16x9 #stash_row { margin-bottom: 235px; } .AspectRatio16x10 #stash_row { margin-bottom: 225px; } #stash_row.Flipped { horizontal-align: left; transform-origin: 0% 50%; } #stash_row { transform-origin: 100% 50%; transform: scale3d(.8, .8, 1); flow-children: right; background-color: #222222; border: 2px solid black; horizontal-align: right; vertical-align: bottom; } #inventory_row_1 { flow-children: right; background-color: #222222; } #inventory_row_2 { flow-children: right; background-color: #222222; } .ItemRow { margin-top: 4px; margin-bottom: 4px; margin-left: 4px; margin-right: 4px; flow-children: right; background-color: #222222; align: center center; } .ItemPanel { width: 66px; height: 48px; box-shadow: #000000ff 1px 1px 2px 2px; margin-top: 4px; margin-bottom: 4px; margin-left: 4px; margin-right: 4px; align: center center; } #ItemButton { align: center center; width: 100%; height: 100%; } #ItemImage { align: center center; width: 100%; height: 100%; } .Charges { font-size: 18px; text-shadow: 0px 0px 6px 6 #000000; } #ChargeCount { visibility: collapse; vertical-align: bottom; horizontal-align: right; margin-right: 4px; margin-bottom: -6px; } #AltChargeCount { font-size: 14px; visibility: collapse; vertical-align: bottom; horizontal-align: left; margin-left: 4px; margin-bottom: -2px; } .show_charges #ChargeCount { visibility: visible; } .show_alt_charges #AltChargeCount { visibility: visible; } .no_hotkey #Hotkey { visibility: collapse; } .ItemMenu { flow-children: down; } .dragging_from { saturation: 0.5; wash-color: #808080; } .is_active { saturation: 1.5; } #DropTargetHighlight { width: 100%; height: 100%; background-color: gradient( radial, 50% -20%, 0% 0%, 80% 80%, from( #FFFFFF ), to( #FFFFFF00 ) ); opacity: 0; } .potential_drop_target #DropTargetHighlight { opacity: 0.3; } #Contents { padding: 0px; margin: 0px; } .ItemMenuButton { visibility: collapse; width: 200px; height: 40px; border: 1px solid black; padding: 4px; padding-left: 8px; background-color: #291818; } .ItemMenuButton:hover { background-color: #443837; } .ItemMenuButton Label { font-size: 16px; vertical-align: center; color: #acaaaa; } .ItemMenuButton:hover Label { color: #eae9e9; } .bSellable #Sell { visibility: visible; } .bDisassemble #Disassemble { visibility: visible; } .bShowInShop #ShowInShop { visibility: visible; } .bDropFromStash #DropFromStash { visibility: visible; } .bAlertable #Alert { visibility: visible; } .bMoveToStash #MoveToStash { visibility: visible; } #CooldownOverlay { height: 100%; background-color: #000000DD; } #CooldownTimer { color: white; font-size: 24px; text-shadow: 0px 0px 6px 6 #000000; horizontal-align: center; vertical-align: center; } #Cooldown { width: 100%; height: 100%; visibility: collapse; } .in_cooldown #Cooldown { visibility: visible; } #Price { color: #FFD700; font-size: 14px; font-weight: bold; text-shadow: 0px 0px 6px 3 #846722; margin-right: -2px; margin-bottom: -4px; vertical-align: top; horizontal-align: left; visibility: collapse; } .show_price #Price { visibility: visible; } .high_price #ItemImage { wash-color: #404040; } .high_price #Price { color: #cc0000; text-shadow: 0px 0px 6px 3 #660000; } #Stock { color: #a020a0; font-size: 14px; font-weight: bold; text-shadow: 0px 0px 6px 3 #400040; margin-right: -2px; margin-bottom: -4px; vertical-align: top; horizontal-align: right; visibility: collapse; } .show_stock #Stock { visibility: visible; } .out_of_stock #Stock { color: #999999; text-shadow: 0px 0px 6px 3 #444444; } .out_of_stock #ItemImage { wash-color: #404040; } #ManaCost { color: #c0e8fb; font-size: 14px; font-weight: bold; text-shadow: 0px 0px 6px 8 #245191; margin-right: -2px; margin-bottom: -4px; vertical-align: bottom; horizontal-align: right; visibility: collapse; } .no_mana_cost #ManaCost { visibility: collapse; } .low_mana #ItemImage { wash-color: #8080ff; } #ActiveAbility { width: 100%; height: 100%; background-color: gradient( radial, 50% -20%, 0% 0%, 80% 80%, from( #FFFFFF ), to( #FFFFFF00 ) ); border: 4px solid #FFFFFF40; opacity: 0; } .is_active #ActiveAbility { opacity: 1; } #Hotkey { margin-left: -4px; vertical-align: top; horizontal-align: left; min-width: 18px; } #HotkeyBlock { vertical-align: top; horizontal-align: left; min-width: 18px; min-height: 17px; width: 18px; clip: rect(0%, 200%, 200%, 0%); background-color: gradient( linear, 0% 0%, 0% 100%, from( #393939 ), to( #414849 ) ); border: 1px solid #ffffff05; box-shadow: fill black 1px 1px 2px 2px; } #HotkeyText { color: #bba995; text-shadow: 1px 1px 2px 2 #000000; font-size: 13px; font-weight: bold; vertical-align: center; text-align: center; min-width: 18px; text-overflow: clip; } .Outer #Hotkey, .no_level #Hotkey, .no_item #Hotkey, .is_passive #Hotkey, #stash_row #Hotkey, .no_hotkey #Hotkey { visibility: collapse; } ================================================ FILE: content/dota_addons/barebones/panorama/styles/containers/container_skins.css ================================================ .Hourglass.Outer { background-color: #ADD8E622; } .Hourglass #Header { background-color: #55222288; } .Hourglass #Footer { } .Hourglass #HeaderLabel { color: #ffffff; } .Hourglass #Inner { background-color: #ADD8E6; } .Hourglass .ItemRow { margin-top: 2px; margin-bottom: 2px; background-color: #aa8833; } .Hourglass .ItemPanel { width:66px; height:48px; } .Hourglass #row1 { clip: rect(-100%, 200%, 200%, -100%); background-color: #ccaa44; } .Hourglass #row2 { background-color: #aa8833; } .Hourglass #row3 { background-color: #776622; } .Hourglass #slot1 { border: 8px solid red; box-shadow: fill black 1px 1px 2px 2px; pre-transform-scale2d: 1.0; animation-name: goleft; //animation-delay: 0s; animation-duration: 2s; animation-timing-function: ease-in-out; animation-iteration-count: infinite; } .Hourglass #slot2 { border: 5px solid green; box-shadow: fill black 1px 1px 2px 2px; animation-name: goright; //animation-delay: 0s; animation-duration: 2s; animation-timing-function: ease-in-out; animation-iteration-count: infinite; } @keyframes 'goleft' { 0% {transform: translateX( 0px ) translateY( 0px );} 50% {transform: translateX( -25px ) translateY( 0px );} 100% {transform: translateX( 0px ) translateY( 0px );} } @keyframes 'goright' { 0% {transform: translateX( 0px ) translateY( 0px );} 50% {transform: translateX( 25px ) translateY( 0px );} 100% {transform: translateX( 0px ) translateY( 0px );} } .SmallItems .ItemPanel { width:33px; height:24px; margin:1px; } .SmallItems .ItemRow { margin-top: 1px; margin-bottom: 1px; } ================================================ FILE: content/dota_addons/barebones/panorama/styles/custom_loading_screen.css ================================================ @define TotalLength: 40s; @define TimingFunc: linear; @define IterationCount: 1; @define AnimationDelay: 0s; .AddonLoadingRoot { width: 100%; height: 100%; background-color: black; overflow: clip; } #TitlePanel { horizontal-align: left; vertical-align: bottom; margin-bottom: 150px; margin-left: 100px; flow-children: right; } #AddonTitle { margin-bottom: -15px; vertical-align: center; text-transform: uppercase; font-size: 80px; color: #cccccc; text-shadow: 2px 2px 2px #000000; } .SeqImg { background-repeat: no-repeat; background-position: 50% 50%; background-size: 100% 100%; } #CustomBg { margin-top: 350px; overflow: clip; pre-transform-scale2d: 1.0; animation-name: gamemode_anim; animation-delay: AnimationDelay; animation-duration: TotalLength; animation-timing-function: TimingFunc; animation-iteration-count: IterationCount; } #gamemode { margin-left: 160px; /*margin-bottom: 0px;*/ } @keyframes 'gamemode_anim' { 0% { transform: translateX( 0px ) translateY( 0px ); pre-transform-scale2d: .8; } 100% { transform: translateX( 0px ) translateY( -200px ); } } ================================================ FILE: content/dota_addons/barebones/panorama/styles/modmaker/modmaker.css ================================================ .ModmakerBase { width:100%; height:100%; } #APIWindow { align: center center; min-width:800px; min-height:800px; flow-children: down; visibility: collapse; } #TitleSearch { height:50px; background-color: #222222; width:100%; flow-children:right; } #Title { vertical-align: center; font-size: 40px; font-weight: bold; color: white; margin-left: 20px; } #Search { align: center center; margin-left: 50px; margin-right:10px; margin-bottom: 2px; width: 450px; } #Search Label { padding-top: 3px; } #SearchButton { margin-top:-1px; margin-bottom: 0px; margin-right: 15px; padding-left: 15px; padding-right: 15px; padding-top: 0px; padding-bottom: 0px; vertical-align: center; width: fit-children; horizontal-align: right; } #SearchButton Label { font-size: 26px; font-weight: bold; margin: 0px; padding: 0px; color: lightblue; align: center center; } #API { height:750px; border: 1px solid black; overflow: scroll scroll; background-color: #000000FE; min-width: 800px; flow-children: down; } .FileLine { font-size: 16px; font-weight: thin; height: 16px; } .CategoryRoot { flow-children: down; } .CategoryBase { background-color: #11006666; margin-left: 5px; margin-right: 5px; border: 1px solid black; border-radius: 15px; transition: background-color 0.1s ease-in-out 0.0s; } .CategoryBase:hover { background-color: #110066FF; flow-children: down; } .CategoryBase:hover #CategoryName { color: white; } .Category { margin-left: 10px; flow-children: right; //background-color: gradient( linear, 0% 0%, 100% 100%, from( #110066AA ), to( #11006600 ) ); border-radius: 3px; min-width: 800px; padding-left: 10px; padding-top:1px; padding-bottom:-20px; } #PlusMinus { margin-right: 15px; margin-top: -3px; font-size: 32px; font-weight: bold; vertical-align: center; color: gold; } #CategoryName { font-size: 18px; vertical-align: center; } #Properties { flow-children: down; } .Property { flow-children: down; margin-left: 20px; width: 800px; } .PropNameLink { flow-children:right; width:100%; background-color: #111111; margin-right:20px; } #PropertyName { font-size: 18px; color: #CCCCCC; font-weight: bold; margin-left: 20px; horizontal-align: left; vertical-align: center; min-width:500px; } #Github { margin-bottom: 0px; padding-left: 35px; padding-right: 35px; padding-top: 0px; padding-bottom: 0px; width: fit-children; margin-left: 50px; vertical-align: center; background-color: gradient( linear, 0% 0%, 0% 100%, from( #434b4b55 ), to( #636f6f55 ) ); transition-property: background-color, opacity; transition-duration: 0.2s; } #Github:hover { background-color: gradient( linear, 0% 0%, 0% 100%, from( #434b4b ), to( #636f6f ) ); } #Github Label { font-size: 14px; font-weight: bold; margin: 0px; padding: 0px; color: lightblue; align: center center; } #PropertyFunction { font-size: 14px; color: red; margin-left: 40px; transition: color 0.1s ease-in-out 0.0s; } #PropertyFunction:hover { color: pink; } #PropertyDescription { font-size: 14px; margin-left: 40px; } ================================================ FILE: content/dota_addons/barebones/panorama/styles/worldpanels/arrow.css ================================================ .ArrowPanel { wash-color: gold; animation-name: oscillate; //animation-delay: 0s; animation-duration: 1s; animation-timing-function: ease-in-out; animation-iteration-count: infinite; pre-transform-scale2d: .5; } @keyframes 'oscillate' { 0% {transform: translateX( 0px ) translateY( 0px );} 50% {transform: translateX( 0px ) translateY( 25px );} 100% {transform: translateX( 0px ) translateY( 0px );} } ================================================ FILE: content/dota_addons/barebones/panorama/styles/worldpanels/healthbar.css ================================================ .HealthBar { background-color: #000000; padding:2px; border-radius: 5px; flow-children:right; border: 1px solid #555555; } .Bubble { border-radius: 3px; border: 1px solid #aaaaaa; width: 20px; height: 10px; margin-right: 1px; margin-left: 1px; vertical-align: center; } .HP { background-color: red; width: 100%; height: 100%; align: left center; } .Friendly .HP { background-color: #00ff00; } ================================================ FILE: content/dota_addons/barebones/particles/basic_ambient/basic_ambient.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 190, 190, 190, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 90.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 1.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 128 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_SpinUpdate_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRotation_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRotationSpeed_0, &C_INIT_RandomRadius_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ &C_OP_RandomForce_0, &C_OP_TurbulenceForce_0 ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.150000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.750000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 ) float m_fDrag = 0.020000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.000000 float m_flEndTime = 1.000000 float m_flStartScale = 0.250000 float m_flEndScale = 1.000000 bool m_bEaseInAndOut = false float m_flBias = 0.500000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_nSequenceOverride = -1 int m_nOrientationType = 0 int m_nOrientationControlPoint = -1 float m_flMinSize = 0.000000 float m_flMaxSize = 5000.000000 float m_flStartFadeSize = 100000000.000000 float m_flEndFadeSize = 200000000.000000 float m_flStartFadeDot = 1.000000 float m_flEndFadeDot = 2.000000 float m_flDepthBias = 0.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 float m_flCenterXOffset = 0.000000 float m_flCenterYOffset = 0.000000 float m_flZoomAmount0 = 1.000000 float m_flZoomAmount1 = 1.000000 bool m_bDistanceAlpha = false bool m_bSoftEdges = false float m_flEdgeSoftnessStart = 0.600000 float m_flEdgeSoftnessEnd = 0.500000 bool m_bOutline = false uint(4) m_OutlineColor = ( 255, 255, 255, 255 ) int m_nOutlineAlpha = 255 float m_flOutlineStart0 = 0.500000 float m_flOutlineStart1 = 0.600000 float m_flOutlineEnd0 = 0.700000 float m_flOutlineEnd1 = 0.800000 float m_flAnimationRate = 1.000000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = false float m_flSelfIllumAmount = 0.000000 float m_flDiffuseAmount = 1.000000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = false bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials/particle/basic_smoke.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 16.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 0 int m_nScaleCP = -1 float m_fSpeedMin = 0.000000 float m_fSpeedMax = 20.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 3.000000 float m_fLifetimeMax = 7.000000 float m_fLifetimeRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { float m_flPercent = 0.500000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMin = 0.000000 float m_flDegreesMax = 360.000000 float m_flDegrees = 0.000000 int m_nFieldOutput = 4 float m_flRotationRandExponent = 1.000000 bool m_bRandomlyFlipDirection = true bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nFieldOutput = 7 int m_nAlphaMin = 120 int m_nAlphaMax = 160 float m_flAlphaRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0 { float m_flDegreesMin = 0.000000 float m_flDegreesMax = 10.000000 float m_flDegrees = 0.000000 int m_nFieldOutput = 4 float m_flRotationRandExponent = 1.000000 bool m_bRandomlyFlipDirection = true bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 70.000000 float m_flRadiusMax = 110.000000 float m_flRadiusRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 0.000000 float m_flStartTime = 0.000000 float m_flEmitRate = 16.000000 float m_flEmissionScale = 0.000000 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 bool m_bScalePerParticle = false bool m_bInitFromKilledParentParticles = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RandomForce C_OP_RandomForce_0 { float(3) m_MinForce = ( -10.000000, 10.000000, 20.000000 ) float(3) m_MaxForce = ( -10.000000, 10.000000, 40.000000 ) bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_TurbulenceForce C_OP_TurbulenceForce_0 { float m_flNoiseCoordScale0 = 0.950000 float m_flNoiseCoordScale1 = 0.700000 float m_flNoiseCoordScale2 = 0.500000 float m_flNoiseCoordScale3 = 0.200000 float(3) m_vecNoiseAmount0 = ( 15.000000, 15.000000, 5.000000 ) float(3) m_vecNoiseAmount1 = ( -30.000000, -25.000000, -3.000000 ) float(3) m_vecNoiseAmount2 = ( 40.000000, -50.000000, 2.500000 ) float(3) m_vecNoiseAmount3 = ( -30.000000, 30.000000, -4.000000 ) bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/basic_ambient/basic_ambient_readme.txt ================================================ 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. This is a very simple effect with just one component and no children. It does have a number of influences on its motion, though: *A small initial velocity via its Position Within Sphere Random *Drag in its Movement Basic *A random force Force Generator which applies the broad motion necessary to get the column *A turbulent force Force Generator which adds hand-tunable noise to the particles' motion At 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. ================================================ FILE: content/dota_addons/barebones/particles/basic_explosion/basic_explosion.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 5.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 1.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 4 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ ] CParticleOperatorInstance*[] m_Renderers = [ ] CParticleOperatorInstance*[] m_Initializers = [ ] CParticleOperatorInstance*[] m_Emitters = [ ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/basic_explosion/basic_explosion_burst.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/basic_explosion/basic_explosion_bits.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/basic_explosion/basic_explosion_flash.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false } ] bool m_bShouldSort = true bool m_bShouldBatch = false } ================================================ FILE: content/dota_addons/barebones/particles/basic_explosion/basic_explosion_bits.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 10.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 0.100000 int m_nConstantSequenceNumber = 7 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 64 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomTrailLength_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -600.000000 ) float m_fDrag = 0.120000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.000000 float m_flEndTime = 1.000000 float m_flStartScale = 1.000000 float m_flEndScale = 0.100000 bool m_bEaseInAndOut = false float m_flBias = 0.750000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_nOrientationType = 0 int m_nOrientationControlPoint = -1 float m_flMinSize = 0.000000 float m_flMaxSize = 5000.000000 float m_flStartFadeSize = 100000000.000000 float m_flEndFadeSize = 200000000.000000 float m_flMaxLength = 2000.000000 float m_flMinLength = 0.000000 bool m_bIgnoreDT = false float m_flConstrainRadiusToLengthRatio = 1.000000 float m_flLengthScale = 1.500000 float m_flRadiusTaper = 1.000000 float m_flLengthFadeInTime = 0.000000 float(4) m_vEndTrailTintFactor = ( 1.000000, 1.000000, 1.000000, 1.000000 ) int m_nHorizCropField = 19 int m_nVertCropField = 19 float m_flRadiusScale = 1.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 float m_flAnimationRate = 0.100000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = false float m_flSelfIllumAmount = 0.500000 float m_flDiffuseAmount = 0.500000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = true bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials/particle/sparks/sparks.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 0.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 0 int m_nScaleCP = -1 float m_fSpeedMin = 600.000000 float m_fSpeedMax = 900.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 50.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { uint(4) m_ColorMin = ( 242, 140, 0, 255 ) uint(4) m_ColorMax = ( 195, 33, 33, 255 ) uint(4) m_TintMin = ( 0, 0, 0, 0 ) uint(4) m_TintMax = ( 255, 255, 255, 255 ) float m_flTintPerc = 0.000000 float m_flUpdateThreshold = 32.000000 int m_nTintCP = 0 int m_nFieldOutput = 6 symbol m_nTintBlendMode = 0 float m_flLightAmplification = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.800000 float m_fLifetimeMax = 1.600000 float m_fLifetimeRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMinLength = 0.040000 float m_flMaxLength = 0.060000 float m_flLengthRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 32 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/basic_explosion/basic_explosion_burst.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 10.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 0.200000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 4 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderSprites_0, &C_OP_RenderDeferredLight_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_CreateWithinBox_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomLifeTime_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 ) float m_fDrag = 0.000000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.000000 float m_flEndTime = 1.000000 float m_flStartScale = 0.200000 float m_flEndScale = 1.000000 bool m_bEaseInAndOut = false float m_flBias = 0.600000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.800000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_nSequenceOverride = -1 int m_nOrientationType = 0 int m_nOrientationControlPoint = -1 float m_flMinSize = 0.000000 float m_flMaxSize = 5000.000000 float m_flStartFadeSize = 100000000.000000 float m_flEndFadeSize = 200000000.000000 float m_flStartFadeDot = 1.000000 float m_flEndFadeDot = 2.000000 float m_flDepthBias = 0.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 float m_flCenterXOffset = 0.000000 float m_flCenterYOffset = 0.000000 float m_flZoomAmount0 = 1.000000 float m_flZoomAmount1 = 1.000000 bool m_bDistanceAlpha = false bool m_bSoftEdges = false float m_flEdgeSoftnessStart = 0.600000 float m_flEdgeSoftnessEnd = 0.500000 bool m_bOutline = false uint(4) m_OutlineColor = ( 255, 255, 255, 255 ) int m_nOutlineAlpha = 255 float m_flOutlineStart0 = 0.500000 float m_flOutlineStart1 = 0.600000 float m_flOutlineEnd0 = 0.700000 float m_flOutlineEnd1 = 0.800000 float m_flAnimationRate = 0.100000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = false float m_flSelfIllumAmount = 0.750000 float m_flDiffuseAmount = 0.500000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = true bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials/particle/particle_ring_wave_8.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { bool m_bUseAlphaTestWindow = false bool m_bUseTexture = false float m_flRadiusScale = 2.000000 float m_flAlphaScale = 4.000000 float m_flLightDistance = 0.000000 float m_flStartFalloff = 0.500000 float m_flDistanceFalloff = 0.000000 float m_flSpotFoV = 60.000000 uint(4) m_ColorScale = ( 255, 215, 45, 255 ) int m_nAlphaTestPointField = 13 int m_nAlphaTestRangeField = 23 int m_nAlphaTestSharpnessField = 18 string m_hTexture = "materials/particle/particle_ring_wave_8.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinBox C_INIT_CreateWithinBox_0 { float(3) m_vecMin = ( -8.000000, -8.000000, 0.000000 ) float(3) m_vecMax = ( 8.000000, 8.000000, 8.000000 ) int m_nControlPointNumber = 0 bool m_bLocalSpace = false bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { uint(4) m_ColorMin = ( 248, 205, 23, 255 ) uint(4) m_ColorMax = ( 249, 117, 35, 255 ) uint(4) m_TintMin = ( 0, 0, 0, 0 ) uint(4) m_TintMax = ( 255, 255, 255, 255 ) float m_flTintPerc = 0.000000 float m_flUpdateThreshold = 32.000000 int m_nTintCP = 0 int m_nFieldOutput = 6 symbol m_nTintBlendMode = 0 float m_flLightAmplification = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMin = 0.000000 float m_flDegreesMax = 360.000000 float m_flDegrees = 0.000000 int m_nFieldOutput = 4 float m_flRotationRandExponent = 1.000000 bool m_bRandomlyFlipDirection = true bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { float m_flPercent = 0.500000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 40.000000 float m_flRadiusMax = 120.000000 float m_flRadiusRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nFieldOutput = 7 int m_nAlphaMin = 40 int m_nAlphaMax = 80 float m_flAlphaRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.180000 float m_fLifetimeMax = 0.240000 float m_fLifetimeRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/basic_explosion/basic_explosion_flash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 160.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 0.120000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 4 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 ) float m_fDrag = 0.000000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.000000 float m_flEndTime = 1.000000 float m_flStartScale = 0.500000 float m_flEndScale = 1.000000 bool m_bEaseInAndOut = false float m_flBias = 0.500000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.900000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_nSequenceOverride = -1 int m_nOrientationType = 0 int m_nOrientationControlPoint = -1 float m_flMinSize = 0.000000 float m_flMaxSize = 5000.000000 float m_flStartFadeSize = 100000000.000000 float m_flEndFadeSize = 200000000.000000 float m_flStartFadeDot = 1.000000 float m_flEndFadeDot = 2.000000 float m_flDepthBias = 0.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 float m_flCenterXOffset = 0.000000 float m_flCenterYOffset = 0.000000 float m_flZoomAmount0 = 1.000000 float m_flZoomAmount1 = 1.000000 bool m_bDistanceAlpha = false bool m_bSoftEdges = false float m_flEdgeSoftnessStart = 0.600000 float m_flEdgeSoftnessEnd = 0.500000 bool m_bOutline = false uint(4) m_OutlineColor = ( 255, 255, 255, 255 ) int m_nOutlineAlpha = 255 float m_flOutlineStart0 = 0.500000 float m_flOutlineStart1 = 0.600000 float m_flOutlineEnd0 = 0.700000 float m_flOutlineEnd1 = 0.800000 float m_flAnimationRate = 0.100000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = false float m_flSelfIllumAmount = 0.000000 float m_flDiffuseAmount = 1.000000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = false bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials/particle/basic_glow.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { uint(4) m_ColorMin = ( 255, 236, 147, 255 ) uint(4) m_ColorMax = ( 255, 178, 85, 255 ) uint(4) m_TintMin = ( 0, 0, 0, 0 ) uint(4) m_TintMax = ( 255, 255, 255, 255 ) float m_flTintPerc = 0.000000 float m_flUpdateThreshold = 32.000000 int m_nTintCP = 0 int m_nFieldOutput = 6 symbol m_nTintBlendMode = 0 float m_flLightAmplification = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 0.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 0 int m_nScaleCP = -1 float m_fSpeedMin = 0.000000 float m_fSpeedMax = 0.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/basic_explosion/basic_explosion_readme.txt ================================================ basic_explosion should serve as a good starting point for effects that emit instantaneously and disappear after a short time (including explosions.) The effect hierarchy looks like this: basic_explosion (actually just a container for the child effects) -basic_explosion_bits (small trails that fly away from the core and then fall from gravity) -basic_explosion_burst (a turbulent wave of energy) -basic_explosion_flash (a simple, fast flash of light to lend some extra visual punch) Unlike 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. The 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. Note 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.) ================================================ FILE: content/dota_addons/barebones/particles/basic_projectile/basic_projectile.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 48.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 0.000000 int m_nConstantSequenceNumber = 6 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 4 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_MaxVelocity_0, &C_OP_Decay_0, &C_OP_SetChildControlPoints_0 ] CParticleOperatorInstance*[] m_Renderers = [ ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/basic_projectile/basic_projectile_explosion.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = true bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/basic_projectile/basic_projectile_trail.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/basic_projectile/basic_projectile_launch.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false } ] bool m_bShouldSort = false bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 ) float m_fDrag = 0.000000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_MaxVelocity C_OP_MaxVelocity_0 { float m_flMaxVelocity = 600.000000 int m_nOverrideCP = 2 int m_nOverrideCPField = 0 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string 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!" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = 1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_SetChildControlPoints C_OP_SetChildControlPoints_0 { int m_nChildGroupID = 0 int m_nFirstControlPoint = 3 int m_nNumControlPoints = 1 int m_nFirstSourcePoint = 0 bool m_bSetOrientation = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "Sets up control points for the child effects below. IMPORTANT: It\'s best not to modify this op for custom effects!" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 0.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 0 int m_nScaleCP = -1 float m_fSpeedMin = 0.000000 float m_fSpeedMax = 0.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "Emits a single \"master\" particle for the projectile. IMPORTANT: It\'s best not to modify this op for custom effects!" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { float(3) m_vecComponentScale = ( 1.000000, 1.000000, 1.000000 ) float m_fForceAmount = 1000000.000000 float m_fFalloffPower = 0.000000 int m_nControlPointNumber = 1 int m_nScaleCP = -1 int m_nScaleCPField = 0 bool m_bScaleLocal = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string 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!" } ================================================ FILE: content/dota_addons/barebones/particles/basic_projectile/basic_projectile_explosion.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 5.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 1.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 32 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/basic_projectile/basic_projectile_explosion_flash.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false } ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) float m_fDrag = 0.000000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.000000 float m_flEndTime = 1.000000 float m_flStartScale = 1.000000 float m_flEndScale = 0.000000 bool m_bEaseInAndOut = false float m_flBias = 0.400000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_nSequenceOverride = -1 int m_nOrientationType = 0 int m_nOrientationControlPoint = -1 float m_flMinSize = 0.000000 float m_flMaxSize = 5000.000000 float m_flStartFadeSize = 100000000.000000 float m_flEndFadeSize = 200000000.000000 float m_flStartFadeDot = 1.000000 float m_flEndFadeDot = 2.000000 float m_flDepthBias = 0.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 float m_flCenterXOffset = 0.000000 float m_flCenterYOffset = 0.000000 float m_flZoomAmount0 = 1.000000 float m_flZoomAmount1 = 1.000000 bool m_bDistanceAlpha = false bool m_bSoftEdges = false float m_flEdgeSoftnessStart = 0.600000 float m_flEdgeSoftnessEnd = 0.500000 bool m_bOutline = false uint(4) m_OutlineColor = ( 255, 255, 255, 255 ) int m_nOutlineAlpha = 255 float m_flOutlineStart0 = 0.500000 float m_flOutlineStart1 = 0.600000 float m_flOutlineEnd0 = 0.700000 float m_flOutlineEnd1 = 0.800000 float m_flAnimationRate = 0.100000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = true float m_flSelfIllumAmount = 0.900000 float m_flDiffuseAmount = 0.100000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = true bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials/particle/basic_glow.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 0.800000 float m_fLifetimeRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 0.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 3 int m_nScaleCP = -1 float m_fSpeedMin = 60.000000 float m_fSpeedMax = 90.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 32.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 64.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 2.500000 float m_flRadiusMax = 4.000000 float m_flRadiusRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { uint(4) m_ColorMin = ( 255, 196, 0, 255 ) uint(4) m_ColorMax = ( 193, 115, 10, 255 ) uint(4) m_TintMin = ( 0, 0, 0, 0 ) uint(4) m_TintMax = ( 255, 255, 255, 255 ) float m_flTintPerc = 0.000000 float m_flUpdateThreshold = 32.000000 int m_nTintCP = 0 int m_nFieldOutput = 6 symbol m_nTintBlendMode = 0 float m_flLightAmplification = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 32 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/basic_projectile/basic_projectile_explosion_flash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 70.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 1.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 4 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 ) float m_fDrag = 0.000000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.000000 float m_flEndTime = 1.000000 float m_flStartScale = 0.250000 float m_flEndScale = 1.000000 bool m_bEaseInAndOut = false float m_flBias = 0.500000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.800000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_nSequenceOverride = -1 int m_nOrientationType = 0 int m_nOrientationControlPoint = -1 float m_flMinSize = 0.000000 float m_flMaxSize = 5000.000000 float m_flStartFadeSize = 100000000.000000 float m_flEndFadeSize = 200000000.000000 float m_flStartFadeDot = 1.000000 float m_flEndFadeDot = 2.000000 float m_flDepthBias = 0.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 float m_flCenterXOffset = 0.000000 float m_flCenterYOffset = 0.000000 float m_flZoomAmount0 = 1.000000 float m_flZoomAmount1 = 1.000000 bool m_bDistanceAlpha = false bool m_bSoftEdges = false float m_flEdgeSoftnessStart = 0.600000 float m_flEdgeSoftnessEnd = 0.500000 bool m_bOutline = false uint(4) m_OutlineColor = ( 255, 255, 255, 255 ) int m_nOutlineAlpha = 255 float m_flOutlineStart0 = 0.500000 float m_flOutlineStart1 = 0.600000 float m_flOutlineEnd0 = 0.700000 float m_flOutlineEnd1 = 0.800000 float m_flAnimationRate = 0.100000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = false float m_flSelfIllumAmount = 0.000000 float m_flDiffuseAmount = 1.000000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = true bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials/particle/basic_glow.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.100000 float m_fLifetimeMax = 0.150000 float m_fLifetimeRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 0.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 3 int m_nScaleCP = -1 float m_fSpeedMin = 0.000000 float m_fSpeedMax = 0.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { uint(4) m_ColorMin = ( 255, 236, 0, 255 ) uint(4) m_ColorMax = ( 253, 244, 134, 255 ) uint(4) m_TintMin = ( 0, 0, 0, 0 ) uint(4) m_TintMax = ( 255, 255, 255, 255 ) float m_flTintPerc = 0.000000 float m_flUpdateThreshold = 32.000000 int m_nTintCP = 0 int m_nFieldOutput = 6 symbol m_nTintBlendMode = 0 float m_flLightAmplification = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/basic_projectile/basic_projectile_launch.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 16 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 5.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 1.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 16 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_OscillateVector_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 ) float m_fDrag = 0.050000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.000000 float m_flEndTime = 1.000000 float m_flStartScale = 1.000000 float m_flEndScale = 0.000000 bool m_bEaseInAndOut = false float m_flBias = 0.500000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 ) float(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMin = ( 1.000000, 1.000000, 1.000000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) int m_nField = 0 bool m_bProportional = true bool m_bProportionalOp = true bool m_bOffset = false float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 float m_flEndTime_min = 1.000000 float m_flEndTime_max = 1.000000 float m_flOscMult = 2.000000 float m_flOscAdd = 0.500000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.300000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_nSequenceOverride = -1 int m_nOrientationType = 0 int m_nOrientationControlPoint = -1 float m_flMinSize = 0.000000 float m_flMaxSize = 5000.000000 float m_flStartFadeSize = 100000000.000000 float m_flEndFadeSize = 200000000.000000 float m_flStartFadeDot = 1.000000 float m_flEndFadeDot = 2.000000 float m_flDepthBias = 0.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 float m_flCenterXOffset = 0.000000 float m_flCenterYOffset = 0.000000 float m_flZoomAmount0 = 1.000000 float m_flZoomAmount1 = 1.000000 bool m_bDistanceAlpha = false bool m_bSoftEdges = false float m_flEdgeSoftnessStart = 0.600000 float m_flEdgeSoftnessEnd = 0.500000 bool m_bOutline = false uint(4) m_OutlineColor = ( 255, 255, 255, 255 ) int m_nOutlineAlpha = 255 float m_flOutlineStart0 = 0.500000 float m_flOutlineStart1 = 0.600000 float m_flOutlineEnd0 = 0.700000 float m_flOutlineEnd1 = 0.800000 float m_flAnimationRate = 0.100000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = false float m_flSelfIllumAmount = 0.900000 float m_flDiffuseAmount = 0.100000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = true bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials/particle/basic_glow.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 0.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 9 int m_nScaleCP = -1 float m_fSpeedMin = 24.000000 float m_fSpeedMax = 96.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.250000 float m_fLifetimeMax = 0.500000 float m_fLifetimeRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 8.000000 float m_flRadiusMax = 14.000000 float m_flRadiusRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { uint(4) m_ColorMin = ( 244, 232, 90, 255 ) uint(4) m_ColorMax = ( 255, 196, 0, 255 ) uint(4) m_TintMin = ( 0, 0, 0, 0 ) uint(4) m_TintMax = ( 255, 255, 255, 255 ) float m_flTintPerc = 0.000000 float m_flUpdateThreshold = 32.000000 int m_nTintCP = 0 int m_nFieldOutput = 6 symbol m_nTintBlendMode = 0 float m_flLightAmplification = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 8 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { float(3) m_vecComponentScale = ( 1.000000, 1.000000, 1.000000 ) float m_fForceAmount = 1000.000000 float m_fFalloffPower = 0.000000 int m_nControlPointNumber = 1 int m_nScaleCP = -1 int m_nScaleCPField = 0 bool m_bScaleLocal = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.250000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/basic_projectile/basic_projectile_readme.txt ================================================ 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. The effect hierarchy looks like this: basic_projectile (master projectile) -basic_projectile_launch (burst that plays when the projectile is first shot) -basic_projectile_trail (visuals for the projectile while in flight) -basic_projectile_explosion (burst that plays on the target when the projectile hits) -basic_projectile_explosion_flash (a little extra flourish for the explosion) This 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. Projectile 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". CP1 is the projectile's target, and the effect gets its speed from CP2. This 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. The ops that shouldn't be changed are all in the base_projectile file: *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. *Set child control points from particle positions: Creates control points from which the child effects will emit. *emit_instantaneously: Emits a single master particle. *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. The 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. In most situations, the only things you'll want to change when using basic_projectile as a projectile effect template are the child effects. That 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. ================================================ FILE: content/dota_addons/barebones/particles/basic_projectile/basic_projectile_trail.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 5.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 1.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 32 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomColor_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 ) float m_fDrag = 0.000000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.000000 float m_flEndTime = 1.000000 float m_flStartScale = 1.000000 float m_flEndScale = 0.100000 bool m_bEaseInAndOut = false float m_flBias = 0.500000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 float m_flStartTime_exp = 1.000000 float m_flEndTime_min = 0.100000 float m_flEndTime_max = 0.600000 float m_flEndTime_exp = 1.000000 float m_flRange = 0.000000 float m_flJumpThreshold = 512.000000 float m_flPrevPosScale = 1.000000 bool m_bLockRot = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.200000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.200000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_nSequenceOverride = -1 int m_nOrientationType = 0 int m_nOrientationControlPoint = -1 float m_flMinSize = 0.000000 float m_flMaxSize = 5000.000000 float m_flStartFadeSize = 100000000.000000 float m_flEndFadeSize = 200000000.000000 float m_flStartFadeDot = 1.000000 float m_flEndFadeDot = 2.000000 float m_flDepthBias = 0.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 float m_flCenterXOffset = 0.000000 float m_flCenterYOffset = 0.000000 float m_flZoomAmount0 = 1.000000 float m_flZoomAmount1 = 1.000000 bool m_bDistanceAlpha = false bool m_bSoftEdges = false float m_flEdgeSoftnessStart = 0.600000 float m_flEdgeSoftnessEnd = 0.500000 bool m_bOutline = false uint(4) m_OutlineColor = ( 255, 255, 255, 255 ) int m_nOutlineAlpha = 255 float m_flOutlineStart0 = 0.500000 float m_flOutlineStart1 = 0.600000 float m_flOutlineEnd0 = 0.700000 float m_flOutlineEnd1 = 0.800000 float m_flAnimationRate = 0.100000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = false float m_flSelfIllumAmount = 0.900000 float m_flDiffuseAmount = 0.000000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = true bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials/particle/basic_glow.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.150000 float m_fLifetimeMax = 0.350000 float m_fLifetimeRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 3.000000 float m_flRadiusMax = 8.000000 float m_flRadiusRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 0.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 3 int m_nScaleCP = -1 float m_fSpeedMin = 0.000000 float m_fSpeedMax = 2.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecAbsVal = ( 0.000000, 0.000000, 0.000000 ) float(3) m_vecAbsValInv = ( 0.000000, 0.000000, 0.000000 ) float(3) m_vecOffsetLoc = ( 0.000000, 0.000000, 0.000000 ) float m_flOffset = 0.000000 float(3) m_vecOutputMin = ( -34.000000, -34.000000, -34.000000 ) float(3) m_vecOutputMax = ( 34.000000, 34.000000, 34.000000 ) float m_flNoiseScale = 3.000000 float m_flNoiseScaleLoc = 4.000000 int m_nControlPointNumber = 0 bool m_bLocalSpace = false bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { uint(4) m_ColorMin = ( 193, 115, 10, 255 ) uint(4) m_ColorMax = ( 255, 196, 0, 255 ) uint(4) m_TintMin = ( 0, 0, 0, 0 ) uint(4) m_TintMax = ( 255, 255, 255, 255 ) float m_flTintPerc = 0.000000 float m_flUpdateThreshold = 32.000000 int m_nTintCP = 0 int m_nFieldOutput = 6 symbol m_nTintBlendMode = 0 float m_flLightAmplification = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 0.000000 float m_flStartTime = 0.000000 float m_flEmitRate = 64.000000 float m_flEmissionScale = 0.000000 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 bool m_bScalePerParticle = false bool m_bInitFromKilledParentParticles = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/basic_rope/basic_rope.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -32.000000, -32.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 32.000000, 32.000000, 256.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 64.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 8.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 32 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_SetSingleControlPointPosition_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_CreateSequentialPath_0, &C_INIT_RandomRadius_2, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RemapParticleCountToScalar_8, &C_INIT_RemapParticleCountToScalar_22 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0 { bool m_bUseWorldLocation = false bool m_bSetOnce = false int m_nCP1 = 1 float(3) m_vecCP1Pos = ( 0.000000, 0.000000, 512.000000 ) int m_nHeadLocation = 0 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flRadiusTaper = 1.000000 int m_nMinTesselation = 1 int m_nMaxTesselation = 128 float m_flTessScale = 1.000000 float m_flTextureVWorldSize = 200.000000 float m_flTextureVScrollRate = 800.000000 float m_flTextureVOffset = 0.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 int m_nOrientationType = 0 int m_nScaleCP1 = -1 int m_nScaleCP2 = -1 float m_flScaleVSizeByControlPointDistance = 0.000000 float m_flScaleVScrollByControlPointDistance = 0.000000 float m_flScaleVOffsetByControlPointDistance = 0.000000 bool m_bDrawAsOpaque = false bool m_bGenerateNormals = false bool m_bReverseOrder = false float m_flRadiusScale = 1.000000 float m_flAnimationRate = 0.100000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = false float m_flSelfIllumAmount = 0.800000 float m_flDiffuseAmount = 0.200000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = true bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials/particle/basic_rope_energy.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0 { float m_fMaxDistance = 0.000000 float m_flNumToAssign = 16.000000 bool m_bLoop = true bool m_bCPPairs = false bool m_bSaveOffset = false CPathParameters m_PathParams = CPathParameters { int m_nStartControlPointNumber = 0 int m_nEndControlPointNumber = 1 int m_nBulgeControl = 0 float m_flBulge = 0.000000 float m_flMidPoint = 0.500000 } bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_2 { float m_flRadiusMin = 55.000000 float m_flRadiusMax = 70.000000 float m_flRadiusRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { int m_nFieldOutput = 7 int m_nInputMin = 0 int m_nInputMax = 3 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 float m_flOutputMin = 0.000000 float m_flOutputMax = 1.000000 bool m_bScaleInitialRange = false bool m_bActiveRange = true bool m_bInvert = false bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_8 { int m_nFieldOutput = 7 int m_nInputMin = 4 int m_nInputMax = 11 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 float m_flOutputMin = 1.000000 float m_flOutputMax = 1.000000 bool m_bScaleInitialRange = false bool m_bActiveRange = true bool m_bInvert = false bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_22 { int m_nFieldOutput = 7 int m_nInputMin = 12 int m_nInputMax = 15 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 float m_flOutputMin = 1.000000 float m_flOutputMax = 0.000000 bool m_bScaleInitialRange = false bool m_bActiveRange = true bool m_bInvert = false bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 16 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/basic_rope/basic_rope_readme.txt ================================================ basic_rope demonstrates a single non-decaying static rope effect whose texture scrolls rapidly to suggest turbulent energy. It has no child effects. The 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. In "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. The 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. There 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. In 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. That means that with our three Remap inits, we're telling: 1. Particles 0-3 to interpolate from alpha 0 to alpha 1.0. 2. Particles 4-11 to interpolate from alpha 1.0 to alpha 1.0 (that is, to be full alpha within this range.) 3. Particles 12-15 to interpolate from alpha 1.0 back down to 0. If 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". ================================================ FILE: content/dota_addons/barebones/particles/basic_trail/basic_trail.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 2.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 2.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false bool m_bDrawThroughLeafSystem = true float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 64 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_ColorInterpolate_0, &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -400.000000 ) float m_fDrag = 0.030000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { uint(4) m_ColorFade = ( 255, 0, 0, 255 ) float m_flFadeStartTime = 0.250000 float m_flFadeEndTime = 1.000000 int m_nFieldOutput = 6 bool m_bEaseInOut = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.400000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_nOrientationType = 0 int m_nOrientationControlPoint = -1 float m_flMinSize = 0.000000 float m_flMaxSize = 5000.000000 float m_flStartFadeSize = 100000000.000000 float m_flEndFadeSize = 200000000.000000 float m_flMaxLength = 2000.000000 float m_flMinLength = 0.000000 bool m_bIgnoreDT = false float m_flConstrainRadiusToLengthRatio = 1.000000 float m_flLengthScale = 1.000000 float m_flRadiusTaper = 1.000000 float m_flLengthFadeInTime = 0.000000 float(4) m_vEndTrailTintFactor = ( 1.000000, 1.000000, 1.000000, 1.000000 ) int m_nHorizCropField = 19 int m_nVertCropField = 19 float m_flRadiusScale = 1.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 float m_flAnimationRate = 0.100000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = false float m_flSelfIllumAmount = 1.000000 float m_flDiffuseAmount = 0.000000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = true bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials/particle/basic_trail.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 8.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 0 int m_nScaleCP = -1 float m_fSpeedMin = 260.000000 float m_fSpeedMax = 310.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 20.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { uint(4) m_ColorMin = ( 255, 217, 0, 255 ) uint(4) m_ColorMax = ( 255, 243, 65, 255 ) uint(4) m_TintMin = ( 0, 0, 0, 0 ) uint(4) m_TintMax = ( 255, 255, 255, 255 ) float m_flTintPerc = 0.000000 float m_flUpdateThreshold = 32.000000 int m_nTintCP = 0 int m_nFieldOutput = 6 symbol m_nTintBlendMode = 0 float m_flLightAmplification = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 100 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/damage_flash_b_frostivus.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 2.000000 float m_flStartScale = 0.500000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.150000 float m_fLifetimeMin = 0.100000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fSpeedMin = 24.000000 float m_fSpeedMax = 48.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 32.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 64.000000 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 160.000000 float m_flRadiusMax = 134.000000 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 100.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 3 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/damage_flash_big_frostivus.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 8 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( -50.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 50.000000, 300.000000, 1000.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 254, 255, 143, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomSequence_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomColor_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/damage_flash_b_frostivus.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/damage_flash_c_frostivus.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/damage_flash_d_frostivus.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 float m_flStartFadeSize = 0.475000 float m_flEndFadeSize = 0.550000 float m_flMaxSize = 0.650000 string m_hTexture = "materials\\particle\\water_splash\\water_splash.vtex" string m_Notes = "" float m_flAnimationRate = 3.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 3.000000 float m_flEndScale = 0.250000 float m_flBias = 0.240000 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" float m_flEndTime_max = 0.200000 float m_flEndTime_min = 0.100000 float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 176, 178, 126, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.175000 float m_fLifetimeMax = 0.350000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 20.000000 float m_flRadiusMax = 22.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fRadiusMax = 12.000000 float m_fSpeedMax = 350.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 20.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 0.000000 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float(3) m_vecOutputMax = ( 34.000000, 34.000000, 34.000000 ) float(3) m_vecOutputMin = ( -34.000000, -34.000000, -34.000000 ) float m_flNoiseScaleLoc = 4.000000 float m_flNoiseScale = 3.000000 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 8 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 229, 206, 50, 255 ) int(4) m_ColorMax = ( 205, 178, 0, 255 ) int m_nFieldOutput = 22 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 100.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 8 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/damage_flash_c_frostivus.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 1 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\anam_white.vtex" string m_Notes = "" } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { string m_Notes = "" float m_flRadiusScale = 0.750000 float m_flAlphaScale = 4.000000 string m_hTexture = "materials\\particle\\particle_flares\\anam_white.vtex" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.000000 float m_flEndScale = 4.000000 float m_flBias = 0.750000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 255, 241, 143, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.170000 float m_fLifetimeMax = 0.175000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 64.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 32.000000 ) float m_fSpeedMax = 48.000000 float m_fSpeedMin = 24.000000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 122.000000 float m_flRadiusMin = 104.000000 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 100.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/damage_flash_d_frostivus.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 1 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 254, 255, 143, 200 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\particle_ring_pulled.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.850000 float m_flEndScale = 2.000000 float m_flStartScale = 0.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.175000 float m_fLifetimeMin = 0.170000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fSpeedMin = 24.000000 float m_fSpeedMax = 48.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 32.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 64.000000 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 32.000000 float m_flRadiusMax = 75.000000 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 100.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_explosion.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 2.000000 int(4) m_ConstantColor = ( 0, 0, 0, 255 ) int m_nConstantSequenceNumber = 3 CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomAlpha_0, &C_INIT_OffsetVectorToVector_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 0 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" string m_Notes = "" float m_flMaxLength = 128.000000 bool m_bIgnoreDT = true int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flBias = 0.250000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.100000 float m_fLifetimeMin = 0.100000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 0.000000 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 24.000000 float m_flRadiusMin = 8.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { string m_Notes = "" int m_nFieldOutput = 2 float(3) m_vecOutputMin = ( -700.000000, -700.000000, -700.000000 ) float(3) m_vecOutputMax = ( 700.000000, 700.000000, 700.000000 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 32 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" float m_fForceAmount = 700.000000 float m_fFalloffPower = 0.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_explosion_flash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 127, 223, 254, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_base_attack_explosion_flash_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_base_attack_explosion.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.500000 float m_flEndScale = 3.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.850000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.100000 float m_fLifetimeMax = 0.150000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( 330.000000, 0.000000, 64.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 130.000000, 0.000000, 32.000000 ) float m_fSpeedMax = 48.000000 float m_fSpeedMin = 24.000000 int m_nControlPointNumber = 3 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 90.000000 float m_flRadiusMin = 80.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 3 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_explosion_flash_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { bool m_bMod2X = true bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_modulate_03.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 1.800000 float m_flStartScale = 0.500000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.850000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.200000 float m_fLifetimeMin = 0.180000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_fSpeedMin = 24.000000 float m_fSpeedMax = 48.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 32.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 64.000000 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 20.000000 float m_flRadiusMax = 24.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 3 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_launch.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 int m_nInitialParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeAndKill_0, &C_OP_InterpolateRadius_0, &C_OP_OscillateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { bool m_bMod2X = true bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_modulate_02.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 } C_OP_FadeAndKill C_OP_FadeAndKill_0 { string m_Notes = "" float m_flEndFadeInTime = 0.125000 float m_flStartFadeOutTime = 0.750000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flStartScale = 2.000000 } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" float(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 ) float(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fSpeedMin = 24.000000 float m_fSpeedMax = 96.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.250000 float m_fLifetimeMax = 0.500000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 8.000000 float m_flRadiusMin = 4.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 0, 130, 173, 255 ) int(4) m_ColorMin = ( 0, 50, 67, 255 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 32 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" int m_nControlPointNumber = 1 float m_fFalloffPower = 0.000000 float m_fForceAmount = 1000.000000 float m_flOpEndFadeOutTime = 0.250000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_trail.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 0, 47, 90, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InheritVelocity_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { string m_hTexture = "materials\\particle\\beam_smoke_01.vtex" string m_Notes = "" float m_flTextureVWorldSize = 999.999939 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.250000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flStartTime = 0.500000 float m_flBias = 0.750000 int m_nOpEndCapState = 0 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" float m_flEndTime_max = 0.100000 int m_nControlPointNumber = 5 float m_flEndTime_min = 0.100000 float m_flStartTime_max = 0.050000 float m_flStartTime_min = 0.050000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.400000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" int m_nOpEndCapState = 1 float m_Rate = -12.000000 float m_flEndTime = 99999.000000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 0, 0, 0, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.350000 float m_fLifetimeMax = 0.350000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 14.000000 float m_flRadiusMax = 14.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 5 } C_INIT_InheritVelocity C_INIT_InheritVelocity_0 { string m_Notes = "" int m_nControlPointNumber = 5 float m_flVelocityScale = 0.010000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMax = 148 int m_nAlphaMin = 148 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 32.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_base_attack_trail_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 99, 166, 250, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_DistanceToCP_0, &C_OP_SetControlPointPositions_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InheritVelocity_0, &C_INIT_RandomAlpha_0, &C_INIT_RemapScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_base_attack_trail.vpcf" } ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 2.000000 string m_hTexture = "materials\\particle\\beam_smoke_01.vtex" string m_Notes = "" float m_flTextureVWorldSize = 999.999939 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.250000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" int m_nOpEndCapState = 0 float m_flBias = 0.750000 float m_flStartTime = 0.500000 float m_flEndScale = 0.000000 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" float m_flStartTime_min = 0.050000 float m_flStartTime_max = 0.050000 float m_flEndTime_min = 0.100000 int m_nControlPointNumber = 5 float m_flEndTime_max = 0.100000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.900000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" float m_flEndTime = 99999.000000 float m_Rate = -12.000000 int m_nOpEndCapState = 1 } C_OP_DistanceToCP C_OP_DistanceToCP_0 { string m_Notes = "" int m_nOpEndCapState = 1 float m_flInputMin = 12.000000 float m_flInputMax = 48.000000 int m_nFieldOutput = 16 int m_nStartCP = 5 } C_OP_SetControlPointPositions C_OP_SetControlPointPositions_0 { string m_Notes = "" int m_nHeadLocation = 3 float(3) m_vecCP4Pos = ( -32.000000, 0.000000, 0.000000 ) int m_nCP4 = 6 float(3) m_vecCP3Pos = ( -24.000000, 0.000000, 0.000000 ) int m_nCP3 = 6 float(3) m_vecCP2Pos = ( -24.000000, 0.000000, 0.000000 ) int m_nCP2 = 6 float(3) m_vecCP1Pos = ( -40.000000, 0.000000, 0.000000 ) int m_nCP1 = 5 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.300000 float m_fLifetimeMin = 0.300000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 21.000000 float m_flRadiusMin = 21.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 5 } C_INIT_InheritVelocity C_INIT_InheritVelocity_0 { string m_Notes = "" float m_flVelocityScale = 0.010000 int m_nControlPointNumber = 5 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 24 int m_nAlphaMax = 24 } C_INIT_RemapScalar C_INIT_RemapScalar_0 { string m_Notes = "" float m_flStartTime = 0.000000 float m_flEndTime = 0.100000 float m_flInputMax = 0.100000 bool m_bScaleInitialRange = true } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 32.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_explosion.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 2.000000 int m_nConstantSequenceNumber = 3 CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_Decay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomAlpha_0, &C_INIT_OffsetVectorToVector_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_frost_arrow_explosion_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_frost_arrow_explosion_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_frost_arrow_explosion_d.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_frost_arrow_explosion_e.vpcf" } ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 0 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" string m_Notes = "" bool m_bIgnoreDT = true float m_flMaxLength = 100.000000 float m_flLengthFadeInTime = 0.200000 int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.250000 float m_flEndScale = 0.000000 float m_flStartTime = 0.500000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.200000 float m_fLifetimeMax = 0.200000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float(3) m_LocalCoordinateSystemSpeedMin = ( 440.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 220.000000, 0.000000, 0.000000 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 8.000000 float m_flRadiusMax = 48.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { string m_Notes = "" float(3) m_vecOutputMax = ( 700.000000, 700.000000, 700.000000 ) float(3) m_vecOutputMin = ( -700.000000, -700.000000, -700.000000 ) int m_nFieldOutput = 2 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 32 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" float m_fFalloffPower = 0.000000 float m_fForceAmount = 700.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_explosion_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 256 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_OscillateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomColor_2, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue.vtex" string m_Notes = "" float m_flAnimationRate2 = 0.100000 float m_flAnimationRate = 1.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.100000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.750000 float m_flEndScale = 0.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.250000 float m_fLifetimeMin = 0.200000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 78.000000 float m_flRadiusMin = 40.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_fRadiusMax = 4.000000 float m_fSpeedMax = 1000.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 240.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 330.000000, 0.000000, 0.000000 ) } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 105, 165, 255, 255 ) int(4) m_ColorMax = ( 209, 238, 255, 255 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScale = 3.000000 float(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 ) float(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 ) float m_flNoiseScaleLoc = 5.000000 } C_INIT_RandomColor C_INIT_RandomColor_2 { string m_Notes = "" int m_nFieldOutput = 22 int(4) m_ColorMax = ( 150, 236, 255, 255 ) int(4) m_ColorMin = ( 50, 84, 183, 255 ) } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmissionDuration = 0.100000 float m_flEmitRate = 400.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_explosion_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 256 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_OscillateVector_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomColor_2, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYaw_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 float m_flMinSize = 0.000750 float m_flMaxSize = 0.002500 string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" string m_Notes = "" float m_flAnimationRate2 = 0.100000 float m_flAnimationRate = 1.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.250000 float(3) m_Gravity = ( 0.000000, 0.000000, -800.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.600000 float m_flEndScale = 0.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 ) } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 float m_flEndTime_min = 0.500000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeRandExponent = 15.000000 float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.100000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 4.000000 float m_flRadiusMin = 0.250000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_fRadiusMax = 4.000000 float m_fSpeedMin = 500.000000 float m_fSpeedMax = 900.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 320.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 430.000000, 0.000000, 0.000000 ) } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 105, 165, 255, 255 ) int(4) m_ColorMax = ( 209, 238, 255, 255 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScale = 3.000000 float(3) m_vecOutputMax = ( 632.000000, 632.000000, 632.000000 ) float(3) m_vecOutputMin = ( -632.000000, -632.000000, -632.000000 ) float m_flNoiseScaleLoc = 0.100000 } C_INIT_RandomColor C_INIT_RandomColor_2 { string m_Notes = "" int m_nFieldOutput = 22 int(4) m_ColorMax = ( 150, 236, 255, 255 ) int(4) m_ColorMin = ( 50, 84, 183, 255 ) } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 63 } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_explosion_d.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 256 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_RampScalarSpline_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomSequence_0, &C_INIT_RandomColor_2, &C_INIT_RandomColor_4 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ &C_OP_ConstrainDistance_0 ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 float m_flAnimationRate2 = 0.100000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -800.000000 ) float m_fDrag = 0.100000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.500000 float m_flBias = 0.350000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" float(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 ) float(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) } C_OP_RampScalarSpline C_OP_RampScalarSpline_0 { string m_Notes = "" float m_flBias = 0.250000 bool m_bEaseOut = true float m_flEndTime_max = 2.000000 float m_flEndTime_min = 2.000000 float m_RateMax = 24.000000 float m_RateMin = -24.000000 int m_nField = 4 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.100000 float m_fLifetimeMax = 0.600000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusRandExponent = 3.000000 float m_flRadiusMin = 0.250000 float m_flRadiusMax = 6.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( 372.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 232.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 190.000000 float m_fRadiusMax = 3.000000 int m_nControlPointNumber = 3 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 228, 245, 255, 255 ) int(4) m_ColorMin = ( 80, 150, 255, 255 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScaleLoc = 5.000000 float(3) m_vecOutputMin = ( 512.000000, 512.000000, 512.000000 ) float(3) m_vecOutputMax = ( -512.000000, -512.000000, -512.000000 ) float m_flNoiseScale = 3.000000 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 63 } C_INIT_RandomColor C_INIT_RandomColor_2 { string m_Notes = "" int(4) m_ColorMin = ( 97, 122, 194, 255 ) int(4) m_ColorMax = ( 150, 236, 255, 255 ) int m_nFieldOutput = 22 } C_INIT_RandomColor C_INIT_RandomColor_4 { string m_Notes = "" int(4) m_ColorMax = ( 122, 211, 248, 255 ) } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmissionDuration = 0.100000 float m_flEmitRate = 800.000000 } C_OP_ConstrainDistance C_OP_ConstrainDistance_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_fMaxDistance = 32.000000 float m_flOpEndFadeOutTime = 0.100000 float m_flOpStartFadeOutTime = 0.100000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_explosion_e.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_MaxVelocity_0, &C_OP_ColorInterpolate_0, &C_OP_OscillateVector_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_RampScalarSpline_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0, &C_INIT_RandomSequence_0, &C_INIT_RandomSecondSequence_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomAlpha_0, &C_INIT_RingWave_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 float m_flSelfIllumAmount = 1.000000 float m_flZoomRate1 = 2.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true string m_hTexture = "materials\\particle\\vistasmokev1\\vistasmokev1.vtex" string m_Notes = "" float m_flAnimationRate = 2.000000 float m_flAnimationRate2 = 0.500000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 800.000000 ) float m_fDrag = 0.250000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 3.000000 float m_flBias = 0.400000 } C_OP_MaxVelocity C_OP_MaxVelocity_0 { string m_Notes = "" float m_flMaxVelocity = 764.000000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" float m_flFadeEndTime = 0.700000 int(4) m_ColorFade = ( 136, 186, 191, 255 ) } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" float(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 ) float(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 ) float(3) m_FrequencyMin = ( 0.250000, 0.250000, 0.250000 ) float(3) m_FrequencyMax = ( 2.000000, 2.000000, 2.000000 ) float m_flStartTime_min = 1.000000 float m_flStartTime_max = 1.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_OP_RampScalarSpline C_OP_RampScalarSpline_0 { string m_Notes = "" int m_nField = 4 float m_RateMin = -3.000000 float m_RateMax = 3.000000 bool m_bEaseOut = true float m_flBias = 0.750000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.300000 float m_fLifetimeMin = 0.200000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 22.000000 float m_flRadiusMin = 10.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 0, 130, 173, 255 ) int(4) m_ColorMin = ( 177, 236, 255, 255 ) } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 1 } C_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0 { string m_Notes = "" int m_nSequenceMin = 49 int m_nSequenceMax = 59 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 24 int m_nAlphaMax = 40 } C_INIT_RingWave C_INIT_RingWave_0 { string m_Notes = "" bool m_bXYVelocityOnly = false int m_nControlPointNumber = 3 float m_flInitialRadius = 2.000000 float m_flInitialSpeedMin = 628.000000 float m_flInitialSpeedMax = 892.000000 bool m_bEvenDistribution = true } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 32 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" float m_fForceAmount = -700.000000 float m_fFalloffPower = 0.500000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_launch.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 256 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_RampScalarLinear_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_InheritVelocity_0, &C_INIT_RandomSequence_0, &C_INIT_RandomColor_2 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_frost_arrow_launch_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" string m_Notes = "" float m_flAnimationRate2 = 0.100000 float m_flAnimationRate = 1.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.250000 float m_flEndScale = 0.500000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 ) } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { string m_Notes = "" float m_RateMax = 32.000000 float m_RateMin = -32.000000 int m_nField = 4 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.300000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 8.000000 float m_flRadiusMin = 0.250000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fSpeedMax = 90.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 32.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 72.000000, 0.000000, 0.000000 ) } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 80, 150, 255, 255 ) int(4) m_ColorMax = ( 228, 245, 255, 255 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScale = 3.000000 float(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 ) float(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 ) float m_flNoiseScaleLoc = 5.000000 } C_INIT_InheritVelocity C_INIT_InheritVelocity_0 { string m_Notes = "" float m_flVelocityScale = 0.100000 int m_nControlPointNumber = 3 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 63 } C_INIT_RandomColor C_INIT_RandomColor_2 { string m_Notes = "" int m_nFieldOutput = 22 int(4) m_ColorMax = ( 150, 236, 255, 255 ) int(4) m_ColorMin = ( 50, 84, 183, 255 ) } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 300.000000 float m_flEmissionDuration = 0.100000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_launch_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 256 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_OscillateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomColor_2, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 float m_flAnimationRate2 = 0.100000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flBias = 0.650000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" float(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 ) float(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.153000 float m_fLifetimeMax = 0.200000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 64.000000 float m_flRadiusMax = 128.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fSpeedMax = 400.000000 float m_fRadiusMax = 4.000000 int m_nControlPointNumber = 3 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 209, 238, 255, 255 ) int(4) m_ColorMin = ( 105, 165, 255, 255 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScaleLoc = 5.000000 float(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 ) float(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 ) float m_flNoiseScale = 3.000000 } C_INIT_RandomColor C_INIT_RandomColor_2 { string m_Notes = "" int(4) m_ColorMin = ( 50, 84, 183, 255 ) int(4) m_ColorMax = ( 150, 236, 255, 255 ) int m_nFieldOutput = 22 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 12 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_frost_arrow_model.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 0.800000 int(4) m_ConstantColor = ( 217, 246, 255, 255 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_InheritFromParentParticles_0, &C_OP_PositionLock_0, &C_OP_RampScalarLinearSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderModels C_OP_RenderModels_0 { string m_EconSlotName = "" string m_Notes = "" string m_ActivityName = "" string m_hOverrideMaterial = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/projectiles/drow_arrow.vmdl" } ] bool m_bAnimated = true } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.200000 } C_OP_InheritFromParentParticles C_OP_InheritFromParentParticles_0 { string m_Notes = "" int m_nFieldOutput = 21 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" int m_nField = 4 float m_Rate = 14.000000 float m_flEndTime = 10000000000.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.100000 float m_fLifetimeMin = 0.100000 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" int m_nControlPointNumber = 3 float(3) m_OffsetMin = ( -40.000000, 0.000000, 0.000000 ) float(3) m_OffsetMax = ( -40.000000, 0.000000, 0.000000 ) bool m_bLocalCoords = true } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_ice_trail.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 256 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int m_nConstantSequenceNumber = 2 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_PositionOffset_0, &C_INIT_RandomColor_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_InheritVelocity_0, &C_INIT_RandomSequence_0, &C_INIT_RandomColor_2 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_ice_trail_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_ice_trail_c.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 float m_flMinSize = 0.000750 float m_flMaxSize = 0.002500 string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 float m_flAnimationRate2 = 0.100000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.500000 float m_flBias = 0.250000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" float(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 ) float(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.300000 float m_fLifetimeMax = 1.000000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 0.200000 float m_flRadiusMax = 0.200000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" bool m_bProportional = true float(3) m_OffsetMax = ( 0.000000, 0.000000, 1.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 1.000000 ) } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 74, 189, 255, 255 ) int(4) m_ColorMin = ( 12, 109, 255, 255 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScaleLoc = 5.000000 float(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 ) float(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 ) float m_flNoiseScale = 3.000000 } C_INIT_InheritVelocity C_INIT_InheritVelocity_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_flVelocityScale = 0.100000 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 63 } C_INIT_RandomColor C_INIT_RandomColor_2 { string m_Notes = "" int(4) m_ColorMin = ( 50, 84, 183, 255 ) int(4) m_ColorMax = ( 150, 236, 255, 255 ) int m_nFieldOutput = 22 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 300.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_ice_trail_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 256 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_OscillateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomColor_2, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue.vtex" string m_Notes = "" float m_flAnimationRate2 = 0.100000 float m_flAnimationRate = 1.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.650000 float m_flEndScale = 0.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.200000 float m_fLifetimeMin = 0.153000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 48.000000 float m_flRadiusMin = 32.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 105, 165, 255, 255 ) int(4) m_ColorMax = ( 209, 238, 255, 255 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScale = 3.000000 float(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 ) float(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 ) float m_flNoiseScaleLoc = 5.000000 } C_INIT_RandomColor C_INIT_RandomColor_2 { string m_Notes = "" int m_nFieldOutput = 22 int(4) m_ColorMax = ( 150, 236, 255, 255 ) int(4) m_ColorMin = ( 50, 84, 183, 255 ) } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 300.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_ice_trail_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 256 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_OscillateVector_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomColor_2, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYaw_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 float m_flAnimationRate2 = 0.100000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -400.000000 ) float m_fDrag = 0.050000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flBias = 0.600000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" float(3) m_RateMin = ( -4.000000, -4.000000, -4.000000 ) float(3) m_RateMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" float m_flEndTime_min = 0.500000 float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 int m_nControlPointNumber = 3 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.153000 float m_fLifetimeMax = 0.600000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 5.000000 float m_flRadiusMax = 9.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fRadiusMax = 2.500000 int m_nControlPointNumber = 3 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 209, 238, 255, 255 ) int(4) m_ColorMin = ( 105, 165, 255, 255 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScaleLoc = 3.000000 float(3) m_vecOutputMin = ( -132.000000, -132.000000, -132.000000 ) float(3) m_vecOutputMax = ( 132.000000, 132.000000, 132.000000 ) float m_flNoiseScale = 3.000000 } C_INIT_RandomColor C_INIT_RandomColor_2 { string m_Notes = "" int(4) m_ColorMin = ( 50, 84, 183, 255 ) int(4) m_ColorMax = ( 150, 236, 255, 255 ) int m_nFieldOutput = 22 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 63 } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_linear_arrow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 1.000000 bool m_bShouldSort = false float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_SetControlPointsToParticle_0, &C_OP_RampScalarLinear_0, &C_OP_FadeInSimple_0, &C_OP_MovementPlaceOnGround_0, &C_OP_RemapVelocityToVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_NormalAlignToCP_0, &C_INIT_VelocityFromCP_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_base_attack_launch.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_base_attack_trail_c.vpcf" }, ParticleChildrenInfo_t { bool m_bEndCap = true string m_ChildRef = "particles/frostivus_gameplay/drow_base_attack_explosion_flash.vpcf" } ] } C_OP_RenderModels C_OP_RenderModels_0 { string m_hOverrideMaterial = "" string m_EconSlotName = "" string m_Notes = "" string m_ActivityName = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/projectiles/drow_arrow.vmdl" } ] bool m_bAnimated = true } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0 { string m_Notes = "" int m_nFirstControlPoint = 3 bool m_bSetOrientation = true } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { string m_Notes = "" int m_nField = 4 float m_RateMin = 1.000000 float m_RateMax = 2.000000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 1.000000 } C_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0 { string m_Notes = "" int m_nLerpCP = 3 float m_flTolerance = 96.000000 float m_flOffset = 70.000000 bool m_bIncludeWater = true float m_flMaxTraceLength = 1024.000000 float m_flTraceOffset = 256.000000 string m_CollisionGroupName = "DEBRIS" int m_nRefCP1 = 3 } C_OP_RemapVelocityToVector C_OP_RemapVelocityToVector_0 { string m_Notes = "" bool m_bNormalize = true int m_nFieldOutput = 21 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.200000 float m_fLifetimeMin = 0.200000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 213, 240, 246, 255 ) int(4) m_ColorMin = ( 213, 240, 246, 255 ) } C_INIT_NormalAlignToCP C_INIT_NormalAlignToCP_0 { string m_Notes = "" } C_INIT_VelocityFromCP C_INIT_VelocityFromCP_0 { string m_Notes = "" int m_nControlPoint = 1 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/drow_linear_frost_arrow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 240.000000 int(4) m_ConstantColor = ( 207, 237, 255, 255 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_RemapVelocityToVector_0, &C_OP_MovementPlaceOnGround_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinear_0, &C_OP_SetControlPointsToParticle_0, &C_OP_Decay_0, &C_OP_BasicMovement_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_VelocityFromCP_0, &C_INIT_NormalAlignToCP_0, &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_frost_arrow_model.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_ice_trail.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/drow_frost_arrow_launch.vpcf" }, ParticleChildrenInfo_t { bool m_bEndCap = true string m_ChildRef = "particles/frostivus_gameplay/drow_frost_arrow_explosion.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue2.vtex" string m_Notes = "" } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { float m_flAlphaScale = 4.000000 string m_Notes = "" string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue2.vtex" } C_OP_RemapVelocityToVector C_OP_RemapVelocityToVector_0 { int m_nFieldOutput = 21 bool m_bNormalize = true string m_Notes = "" } C_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0 { int m_nRefCP1 = 3 string m_CollisionGroupName = "DEBRIS" float m_flTraceOffset = 256.000000 float m_flMaxTraceLength = 1024.000000 bool m_bIncludeWater = true float m_flOffset = 70.000000 float m_flTolerance = 96.000000 int m_nLerpCP = 3 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 1.000000 string m_Notes = "" } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { float m_RateMax = 2.000000 float m_RateMin = 1.000000 int m_nField = 4 string m_Notes = "" } C_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0 { bool m_bSetOrientation = true int m_nFirstControlPoint = 3 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_INIT_VelocityFromCP C_INIT_VelocityFromCP_0 { int m_nControlPoint = 1 string m_Notes = "" } C_INIT_NormalAlignToCP C_INIT_NormalAlignToCP_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 213, 240, 246, 255 ) int(4) m_ColorMax = ( 213, 240, 246, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.200000 float m_fLifetimeMax = 0.200000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_death_creep.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 76, 203, 121, 200 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_LockToBone_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_LerpScalar_0, &C_OP_ColorInterpolate_0, &C_OP_BasicMovement_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_CreateOnModel_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomTrailLength_0, &C_INIT_RandomScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\beam_smoke_03.vtex" int m_nVertCropField = 18 string m_Notes = "" float m_flLengthFadeInTime = 1.200000 int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_LockToBone C_OP_LockToBone_0 { float m_flLifeTimeFadeEnd = 0.125000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.750000 float m_flStartScale = 2.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_OP_LerpScalar C_OP_LerpScalar_0 { bool m_bDisableOperator = true float m_flStartTime = 0.500000 string m_Notes = "" int m_nFieldOutput = 10 float m_flOutput = 0.000000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 130, 203, 76, 255 ) string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.250000 float m_fLifetimeMax = 0.750000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { int m_nFieldOutput = 20 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 18.000000 float m_flRadiusMax = 38.000000 } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { float m_flHitBoxScale = 0.700000 string m_Notes = "" float(3) m_vecDirectionBias = ( 0.000000, 0.000000, 1.000000 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float(3) m_vecOutputMax = ( 0.000000, 0.000000, 300.000000 ) float(3) m_vecOutputMin = ( 0.000000, 0.000000, 300.000000 ) } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { string m_Notes = "" float m_flMinLength = 0.500000 float m_flMaxLength = 0.700000 } C_INIT_RandomScalar C_INIT_RandomScalar_0 { int m_nFieldOutput = 18 float m_flMax = 2.000000 float m_flMin = 0.250000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 32 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_hero_light.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 3 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( -384.000000, -384.000000, -384.000000 ) float(3) m_BoundingBoxMax = ( 384.000000, 384.000000, 384.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 550.000000 float m_flConstantLifespan = 2.000000 int(4) m_ConstantColor = ( 120, 166, 254, 200 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_SetToCP_0, &C_OP_FadeInSimple_0, &C_OP_LerpEndCapScalar_0, &C_OP_EndCapTimedDecay_0, &C_OP_OscillateScalar_0, &C_OP_ClampScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_hero_light_b.vpcf" } ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { bool m_bUseTexture = true float m_flStartFalloff = 0.050000 string m_Notes = "" float m_flAlphaScale = 1.200000 string m_hTexture = "materials\\particle\\particle_light_mask_tower_good.vtex" } C_OP_SetToCP C_OP_SetToCP_0 { bool m_bOffsetLocal = true float(3) m_vecOffset = ( 0.000000, 0.000000, 170.000000 ) string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 7 float m_flLerpTime = 0.500000 string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { float m_flDecayTime = 0.500000 string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_0 { float m_FrequencyMin = 0.250000 float m_RateMax = 1.000000 float m_RateMin = -1.000000 int m_nField = 16 string m_Notes = "" bool m_bDisableOperator = true } C_OP_ClampScalar C_OP_ClampScalar_0 { float m_flOutputMin = 0.500000 int m_nFieldOutput = 16 string m_Notes = "" bool m_bDisableOperator = true } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_hero_light_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 3 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( -384.000000, -384.000000, -384.000000 ) float(3) m_BoundingBoxMax = ( 384.000000, 384.000000, 384.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 150.000000 float m_flConstantLifespan = 2.000000 int(4) m_ConstantColor = ( 120, 166, 254, 200 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_SetToCP_0, &C_OP_FadeInSimple_0, &C_OP_LerpEndCapScalar_0, &C_OP_EndCapTimedDecay_0, &C_OP_OscillateScalar_0, &C_OP_ClampScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { float m_flAlphaScale = 2.000000 string m_Notes = "" float m_flStartFalloff = 0.100000 string m_hTexture = "materials\\particle\\particle_light_mask_tower_good.vtex" } C_OP_SetToCP C_OP_SetToCP_0 { string m_Notes = "" float(3) m_vecOffset = ( 20.000000, 0.000000, 200.000000 ) bool m_bOffsetLocal = true } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.500000 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { string m_Notes = "" float m_flLerpTime = 0.500000 int m_nFieldOutput = 7 float m_flOutput = 0.000000 } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" float m_flDecayTime = 0.500000 } C_OP_OscillateScalar C_OP_OscillateScalar_0 { bool m_bDisableOperator = true string m_Notes = "" int m_nField = 16 float m_RateMin = -1.000000 float m_RateMax = 1.000000 float m_FrequencyMin = 0.250000 } C_OP_ClampScalar C_OP_ClampScalar_0 { bool m_bDisableOperator = true string m_Notes = "" int m_nFieldOutput = 16 float m_flOutputMin = 0.500000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_last_hit_effect.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 76, 203, 121, 100 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_LockToBone_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_LerpScalar_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_CreateOnModel_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomTrailLength_0, &C_INIT_OffsetVectorToVector_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_last_hit_effect_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_spirit_trail.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/damage_flash_big_frostivus.vpcf" } ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\beam_smoke_03.vtex" float m_flLengthFadeInTime = 0.100000 string m_Notes = "" bool m_bIgnoreDT = true int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.000000 float m_flStartScale = 2.000000 float m_flBias = 0.750000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_OP_LerpScalar C_OP_LerpScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 10 string m_Notes = "" float m_flStartTime = 0.500000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 130, 203, 76, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.250000 float m_fLifetimeMin = 0.125000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 38.000000 float m_flRadiusMin = 18.000000 string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { float(3) m_vecDirectionBias = ( 0.000000, 0.000000, 1.000000 ) string m_Notes = "" float m_flHitBoxScale = 0.700000 } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMin = ( 0.000000, 0.000000, 300.000000 ) float(3) m_vecOutputMax = ( 0.000000, 0.000000, 300.000000 ) string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMaxLength = 1.000000 float m_flMinLength = 1.000000 string m_Notes = "" } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { string m_Notes = "" int m_nFieldOutput = 2 float(3) m_vecOutputMin = ( 0.000000, 0.000000, 230.000000 ) float(3) m_vecOutputMax = ( 0.000000, 0.000000, 400.000000 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 32 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_last_hit_effect_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 76, 203, 121, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_LerpScalar_0, &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0, &C_OP_FadeInSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_CreateOnModel_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomTrailLength_0, &C_INIT_RandomRotation_2, &C_INIT_RandomScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\beam_smoke_03.vtex" int m_nVertCropField = 18 float m_flLengthFadeInTime = 0.200000 string m_Notes = "" int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 1800.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 } C_OP_LerpScalar C_OP_LerpScalar_0 { string m_Notes = "" int m_nFieldOutput = 10 float m_flOutput = 0.000000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { bool m_bEaseInOut = false int(4) m_ColorFade = ( 18, 32, 8, 255 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.500000 float m_flEndScale = 1.100000 float m_flBias = 0.750000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.250000 float m_fLifetimeMax = 0.750000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 18.000000 float m_flRadiusMax = 38.000000 } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { float m_flHitBoxScale = 0.700000 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float m_flNoiseScaleLoc = 1.000000 string m_Notes = "" float(3) m_vecOutputMax = ( 128.000000, 128.000000, 1600.000000 ) float(3) m_vecOutputMin = ( -128.000000, -128.000000, 528.000000 ) } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { string m_Notes = "" float m_flMinLength = 0.200000 float m_flMaxLength = 1.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_2 { int m_nFieldOutput = 20 string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { int m_nFieldOutput = 18 float m_flMax = 2.000000 float m_flMin = 0.250000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 64 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_earth.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_PositionOffset_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RemapCPtoScalar_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_leshrac_split_projected.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_leshrac_split_earth_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_leshrac_splitearth_lights.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { bool m_bRefract = true float m_flRefractAmount = -0.040000 string m_hTexture = "materials\\particle\\warp_ripple4_normal.vtex" bool m_bFitCycleToLifetime = true float m_flAnimationRate = 1.500000 int m_nOrientationType = 2 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { float m_flOpStartFadeInTime = 3.000000 float m_flOpEndFadeInTime = 3.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.750000 float m_flBias = 0.850000 float m_flStartScale = 0.350000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.750000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.500000 float m_fLifetimeMin = 0.500000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 64.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 64.000000 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMax = 90.000000 float m_flDegreesMin = -90.000000 string m_Notes = "" } C_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0 { float m_flOutputMax = 5000.000000 float m_flInputMax = 2500.000000 int m_nCPInput = 1 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_earth_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 2 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 192, 190, 190, 255 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_PositionOffset_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RemapCPtoScalar_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_leshrac_split_earth_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_leshrac_split_earth_d.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { bool m_bMod2X = true bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_modulate_02.vtex" int m_nOrientationType = 2 float m_flAnimationRate = 1.500000 bool m_bFitCycleToLifetime = true string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 0.000000 float m_flBias = 0.850000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.750000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.250000 float m_fLifetimeMax = 0.250000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMin = ( 0.000000, 0.000000, 8.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 8.000000 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0 { int m_nCPInput = 1 float m_flInputMax = 5000.000000 float m_flOutputMax = 5000.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMin = 64 int m_nAlphaMax = 64 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_earth_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 80 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( 300.000000, 300.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( -300.000000, -300.000000, 10.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_RemapSpeed_0, &C_OP_SpinUpdate_0, &C_OP_InterpolateRadius_0, &C_OP_MaxVelocity_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomYawFlip_0, &C_INIT_CreationNoise_0, &C_INIT_RingWave_0, &C_INIT_RemapScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks.vtex" bool m_bFitCycleToLifetime = true float m_flAnimationRate = 1.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.020007 float(3) m_Gravity = ( 0.000000, 0.000000, -800.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_RemapSpeed C_OP_RemapSpeed_0 { float m_flOutputMin = 1.000000 float m_flInputMax = 10.000000 int m_nFieldOutput = 5 bool m_bScaleInitialRange = true string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { float m_flOpEndFadeOutTime = 1.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.750000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_MaxVelocity C_OP_MaxVelocity_0 { float m_flMaxVelocity = 450.000000 bool m_bDisableOperator = true string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 130, 151, 91, 255 ) int(4) m_ColorMin = ( 153, 127, 79, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.250000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 10.000000 float m_flRadiusMin = 3.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 63 int m_nSequenceMin = 50 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float m_flNoiseScale = 2.000000 float m_flNoiseScaleLoc = 2.000000 float(3) m_vecOutputMin = ( -36.000000, -36.000000, 150.000000 ) float(3) m_vecOutputMax = ( 36.000000, 36.000000, 600.000000 ) bool m_bLocalSpace = true string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flNoiseScale = 3.000000 float m_flNoiseScaleLoc = 1.000000 int m_nFieldOutput = 5 float m_flOutputMin = -15.000000 float m_flOutputMax = 15.000000 string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { float m_flThickness = 0.500000 int m_nOverrideCP = 1 float m_flInitialSpeedMax = 1.500000 float m_flInitialSpeedMin = 0.250000 float m_flInitialRadius = 0.750000 string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { bool m_bScaleInitialRange = true float m_flOutputMin = 1.000000 float m_flInputMax = 0.250000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 220 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_earth_d.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 5 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( 40.000000, 40.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( -40.000000, -40.000000, 10.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantLifespan = 2.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_Orient2DRelToCP_0, &C_OP_InterpolateRadius_2, &C_OP_SetSingleControlPointPosition_0, &C_OP_SetChildControlPoints_0, &C_OP_ColorInterpolate_0, &C_OP_RemapScalarOnceTimed_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreationNoise_0, &C_INIT_RandomRadius_0, &C_INIT_RandomYaw_0, &C_INIT_RandomRotation_0, &C_INIT_RandomLifeTime_0, &C_INIT_CreationNoise_2, &C_INIT_CreatePhyllotaxis_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RandomTrailLength_0, &C_INIT_RandomSecondSequence_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_RandomForce_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_leshrac_splitearth_groundflash_lines.vpcf" } ] } C_OP_RenderModels C_OP_RenderModels_0 { string m_hOverrideMaterial = "" string m_EconSlotName = "" float m_flAnimationRate = 60.000000 bool m_bOrientZ = true string m_ActivityName = "" bool m_bScaleAnimationRate = true string m_Notes = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/props_destruction/rockyspikes_dynamic.vmdl" } ] bool m_bAnimated = true } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.250000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.125000 float m_flBias = 0.350000 string m_Notes = "" } C_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0 { int m_nFieldOutput = 12 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_2 { float m_flEndTime = 0.125000 float m_flStartScale = 0.000000 float m_flBias = 0.850000 string m_Notes = "" } C_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0 { int m_nCP1 = 2 float(3) m_vecCP1Pos = ( 0.000000, 0.000000, -128.000000 ) string m_Notes = "" } C_OP_SetChildControlPoints C_OP_SetChildControlPoints_0 { string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 179, 255, 192, 255 ) float m_flFadeEndTime = 0.000000 string m_Notes = "" } C_OP_RemapScalarOnceTimed C_OP_RemapScalarOnceTimed_0 { float m_flRemapTime = 1.330000 int m_nFieldInput = 13 float m_flInputMin = 1.000000 float m_flInputMax = 5.000000 int m_nFieldOutput = 13 float m_flOutputMin = 6.000000 float m_flOutputMax = 10.000000 string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 15.000000 float m_flOutputMin = -15.000000 int m_nFieldOutput = 5 float m_flNoiseScaleLoc = 1.000000 float m_flNoiseScale = 3.000000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 1.500000 float m_flRadiusMax = 2.250000 string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 0.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMax = 0.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.700000 float m_fLifetimeMin = 1.700000 string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_2 { float m_flNoiseScale = 1.000000 float m_flNoiseScaleLoc = 0.100000 int m_nFieldOutput = 20 float m_flOutputMax = 0.000000 string m_Notes = "" } C_INIT_CreatePhyllotaxis C_INIT_CreatePhyllotaxis_0 { int m_nScaleCP = 1 float m_fsizeOverall = 1.000000 float m_fRadPerPointTo = 0.500000 float m_fMinRad = 1.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMin = ( 0.000000, 0.000000, 256.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 256.000000 ) string m_Notes = "" } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { bool m_bSetNormal = true float m_flMaxTraceLength = 512.000000 string m_CollisionGroupName = "DEBRIS" float m_flOffset = 5.000000 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { bool m_bDisableOperator = true int m_nInputMax = 100 int m_nFieldOutput = 12 float m_flOutputMax = 13750.700195 string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMinLength = 0.850000 float m_flMaxLength = 1.500000 string m_Notes = "" } C_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0 { int m_nSequenceMax = 5 int m_nSequenceMin = 1 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 5 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 35 string m_Notes = "" } C_OP_RandomForce C_OP_RandomForce_0 { float(3) m_MaxForce = ( 0.000000, 0.000000, -100.000000 ) float(3) m_MinForce = ( 0.000000, 0.000000, -50.000000 ) float m_flOpEndFadeOutTime = 3.000000 float m_flOpStartFadeOutTime = 2.000000 float m_flOpEndFadeInTime = 1.000000 float m_flOpStartFadeInTime = 1.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_flash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 8 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int m_nConstantSequenceNumber = 1 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_InterpolateRadius_2, &C_OP_LerpScalar_0, &C_OP_OscillateScalar_0, &C_OP_BasicMovement_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomSequence_0, &C_INIT_RemapScalar_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomYaw_0, &C_INIT_RandomRotation_0, &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinBox_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\lens_flare\\lens_flare.vtex" float m_flAnimationRate = 4.000000 int m_nOrientationType = 2 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 1.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 float m_flStartScale = 0.100000 float m_flStartTime = 0.850000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_2 { float m_flBias = 0.850000 float m_flEndScale = 2.000000 float m_flEndTime = 0.850000 float m_flStartTime = 0.100000 float m_flStartScale = 0.200000 string m_Notes = "" } C_OP_LerpScalar C_OP_LerpScalar_0 { float m_flOutput = 1.570796 int m_nFieldOutput = 12 string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_0 { int m_nField = 4 float m_RateMin = -11.000000 float m_RateMax = 11.000000 float m_FrequencyMin = 0.125000 float m_FrequencyMax = 0.500000 float m_flOscAdd = 0.100000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 ) float m_flOpStartFadeInTime = 0.100000 float m_flOpEndFadeInTime = 0.150000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeEndTime = 0.000000 float m_flFadeStartTime = 1.000000 int(4) m_ColorFade = ( 252, 255, 0, 255 ) string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { bool m_bRunForParentApplyKillList = false int m_nSequenceMax = 1 string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { float m_flOutputMax = 5.000000 bool m_bScaleInitialRange = true float m_flOutputMin = 5.000000 int m_nFieldInput = 9 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 90.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 246, 77, 252, 255 ) int(4) m_ColorMin = ( 148, 153, 255, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.200000 float m_fLifetimeMin = 0.100000 string m_Notes = "" } C_INIT_CreateWithinBox C_INIT_CreateWithinBox_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 105.000000 float m_flRadiusMin = 45.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 15 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_projected.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 1.500000 int(4) m_ConstantColor = ( 0, 0, 0, 255 ) int m_nConstantSequenceNumber1 = 1 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderProjected_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_BasicMovement_0, &C_OP_RampScalarSpline_0, &C_OP_RampScalarSpline_2, &C_OP_Decay_2, &C_OP_FadeOut_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRotation_0, &C_INIT_RandomScalar_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomAlpha_0, &C_INIT_RemapCPtoScalar_0, &C_INIT_RandomRadius_0, &C_INIT_DistanceToCPInit_0, &C_INIT_CreateWithinSphere_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_leshrac_split_projected_scortch.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_lightbeam.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_leshrac_split_pulse.vpcf" } ] } C_OP_RenderProjected C_OP_RenderProjected_0 { string m_Notes = "" string m_hProjectedMaterial = "materials\\particle\\projected_cracks.vmat" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { bool m_bDisableOperator = true float m_fDrag = 0.100000 string m_Notes = "" } C_OP_RampScalarSpline C_OP_RampScalarSpline_0 { float m_flStartTime_max = 0.700000 float m_flStartTime_min = 0.600000 int m_nField = 13 float m_RateMin = 2.000000 float m_RateMax = 3.000000 float m_flEndTime_min = 0.900000 string m_Notes = "" } C_OP_RampScalarSpline C_OP_RampScalarSpline_2 { bool m_bEaseOut = true float m_RateMax = -1.800000 float m_RateMin = -1.000000 int m_nField = 13 float m_flEndTime_min = 0.095000 float m_flEndTime_max = 0.220000 string m_Notes = "" } C_OP_Decay C_OP_Decay_2 { string m_Notes = "" } C_OP_FadeOut C_OP_FadeOut_0 { bool m_bEaseInAndOut = false bool m_bProportional = false float m_flFadeOutTimeMax = 1.000000 float m_flFadeOutTimeMin = 1.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMax = 0.000000 string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { int m_nFieldOutput = 13 float m_flMax = 1.310000 float m_flMin = 1.310000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 4.500000 float m_fLifetimeMin = 4.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0 { float m_flOutputMax = 900.000000 float m_flOutputMin = 100.000000 float m_flInputMax = 900.000000 float m_flInputMin = 100.000000 int m_nCPInput = 1 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" } C_INIT_DistanceToCPInit C_INIT_DistanceToCPInit_0 { float m_flOutputMin = 1.000000 float m_flInputMax = 450.000000 float m_flInputMin = 1.000000 bool m_bScaleInitialRange = true string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_projected_scortch.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 2 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 1.500000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderProjected_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_BasicMovement_0, &C_OP_RampScalarSpline_0, &C_OP_RampScalarSpline_2, &C_OP_FadeAndKill_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRotation_0, &C_INIT_RandomScalar_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomAlpha_0, &C_INIT_RemapCPtoScalar_0, &C_INIT_RandomRadius_0, &C_INIT_DistanceToCPInit_0, &C_INIT_CreateWithinSphere_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderProjected C_OP_RenderProjected_0 { bool m_bProjectWater = false string m_Notes = "" string m_hProjectedMaterial = "materials\\particle\\frost_projected_mod.vmat" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.100000 string m_Notes = "" } C_OP_RampScalarSpline C_OP_RampScalarSpline_0 { float m_flEndTime_min = 0.900000 float m_RateMax = 12.000000 float m_RateMin = 8.000000 int m_nField = 13 float m_flStartTime_min = 0.600000 float m_flStartTime_max = 0.700000 bool m_bDisableOperator = true string m_Notes = "" } C_OP_RampScalarSpline C_OP_RampScalarSpline_2 { float m_flEndTime_max = 0.220000 float m_flEndTime_min = 0.095000 int m_nField = 13 float m_RateMin = -0.350000 float m_RateMax = -0.100000 bool m_bEaseOut = true bool m_bDisableOperator = true string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flStartFadeOutTime = 0.800000 float m_flEndFadeInTime = 0.800000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeEndTime = 0.250000 int(4) m_ColorFade = ( 0, 0, 0, 255 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { bool m_bRandomlyFlipDirection = false string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { float m_flMin = 1.300000 float m_flMax = 1.310000 int m_nFieldOutput = 13 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 4.500000 float m_fLifetimeMax = 5.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0 { int m_nCPInput = 1 float m_flInputMin = 100.000000 float m_flInputMax = 900.000000 float m_flOutputMin = 100.000000 float m_flOutputMax = 900.000000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" } C_INIT_DistanceToCPInit C_INIT_DistanceToCPInit_0 { bool m_bScaleInitialRange = true float m_flInputMin = 1.000000 float m_flInputMax = 450.000000 float m_flOutputMin = 1.000000 float m_flOutputMax = 1.500000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_split_pulse.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int m_nConstantSequenceNumber = 1 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_InterpolateRadius_2, &C_OP_LerpScalar_0, &C_OP_OscillateScalar_0, &C_OP_BasicMovement_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomSequence_0, &C_INIT_RemapScalar_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomYaw_0, &C_INIT_RandomRotation_0, &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinBox_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_leshrac_split_flash.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\lens_flare\\lens_flare.vtex" float m_flAnimationRate = 4.000000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 1.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.850000 float m_flStartScale = 0.100000 float m_flEndScale = 2.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_2 { float m_flStartScale = 0.200000 float m_flStartTime = 0.100000 float m_flEndTime = 0.850000 float m_flEndScale = 2.000000 float m_flBias = 0.850000 string m_Notes = "" } C_OP_LerpScalar C_OP_LerpScalar_0 { int m_nFieldOutput = 12 float m_flOutput = 1.570796 string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_0 { float m_flOscAdd = 0.100000 float m_FrequencyMax = 0.500000 float m_FrequencyMin = 0.125000 float m_RateMax = 11.000000 float m_RateMin = -11.000000 int m_nField = 4 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_flOpEndFadeInTime = 0.150000 float m_flOpStartFadeInTime = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 ) string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 252, 255, 0, 255 ) float m_flFadeStartTime = 1.000000 float m_flFadeEndTime = 0.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 1 bool m_bRunForParentApplyKillList = false string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { int m_nFieldInput = 9 float m_flOutputMin = 0.500000 bool m_bScaleInitialRange = true float m_flOutputMax = 3.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 90.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 148, 153, 255, 255 ) int(4) m_ColorMax = ( 246, 77, 252, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.100000 float m_fLifetimeMax = 0.500000 string m_Notes = "" } C_INIT_CreateWithinBox C_INIT_CreateWithinBox_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 45.000000 float m_flRadiusMax = 105.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 50 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_splitearth_groundflash_lines.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 20 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( 20.000000, 20.000000, 0.000000 ) float(3) m_BoundingBoxMax = ( -20.000000, -20.000000, 0.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_InterpolateRadius_2, &C_OP_FadeAndKill_0, &C_OP_BasicMovement_0, &C_OP_SpinUpdate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_RandomLifeTime_0, &C_INIT_CreateFromParentParticles_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RemapScalar_0, &C_INIT_RandomAlpha_0, &C_INIT_PositionOffset_2 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_leshrac_splitearth_sparkles.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 int m_nOrientationType = 3 bool m_bDisableZBuffering = false string m_hTexture = "materials\\particle\\particle_flares\\particle_flare_001.vtex" string m_Notes = "" } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { float m_flRadiusScale = 2.500000 int(4) m_ColorScale = ( 241, 13, 13, 255 ) string m_Notes = "" string m_hTexture = "materials\\particle\\particle_flares\\particle_flare_001.vtex" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 0.100000 float m_flEndTime = 0.150000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_2 { float m_flEndTime = 0.800000 float m_flBias = 0.200000 float m_flEndScale = 0.300000 float m_flStartTime = 0.600000 string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 100.000000 float m_flRadiusMin = 60.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 83, 15, 47, 255 ) int(4) m_ColorMin = ( 166, 20, 20, 255 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.500000 float m_fLifetimeMin = 1.000000 string m_Notes = "" } C_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0 { bool m_bRandomDistribution = true string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 50.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { bool m_bSetNormal = true string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { float m_flOutputMax = 7.000000 float m_flOutputMin = 3.000000 int m_nFieldOutput = 9 float m_flInputMin = 0.500000 int m_nFieldInput = 1 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 140 int m_nAlphaMin = 30 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_2 { float(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 70 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_splitearth_lights.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 146, 146, 240, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomAlpha_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0, &C_INIT_RemapCPtoScalar_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { string m_Notes = "" string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.200000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.600000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 2.000000 float m_fLifetimeMax = 2.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" } C_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0 { int m_nCPInput = 1 float m_flInputMax = 900.000000 float m_flOutputMax = 1200.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMin = ( 0.000000, 0.000000, 60.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 60.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_leshrac_splitearth_sparkles.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 20 int m_nInitialParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 214, 45, 45, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_OscillateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomYawFlip_0, &C_INIT_AgeNoise_0, &C_INIT_CreateFromParentParticles_0, &C_INIT_PositionOffset_0, &C_INIT_InitialVelocityNoise_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue2.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 600.000000 ) float m_fDrag = 0.200000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.150000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 99999.000000 float m_Rate = -30.000000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float m_flOscMult = 1.000000 float m_flStartTime_max = 0.500000 float m_flStartTime_min = 0.250000 float(3) m_FrequencyMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_RateMax = ( 8.000000, 8.000000, 8.000000 ) float(3) m_RateMin = ( -8.000000, -8.000000, -8.000000 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 0.500000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusRandExponent = 0.800000 float m_flRadiusMin = 7.000000 float m_flRadiusMax = 25.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_AgeNoise C_INIT_AgeNoise_0 { float m_flAgeMax = 0.200000 float m_flAgeMin = 0.200000 string m_Notes = "" } C_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMin = ( -50.000000, -50.000000, -50.000000 ) float(3) m_OffsetMax = ( 50.000000, 50.000000, 50.000000 ) string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 1.000000, 1.000000, 900.000000 ) string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 0.250000 float m_flEmitRate = 203.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_lightbeam.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 7 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 250, 92, 92, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeAndKill_0, &C_OP_BasicMovement_0, &C_OP_SetSingleControlPointPosition_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomAlpha_0, &C_INIT_RandomLifeTime_0, &C_INIT_RemapCPtoScalar_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_CreateSequentialPath_0, &C_INIT_RemapParticleCountToScalar_2, &C_INIT_RandomRotation_0, &C_INIT_RemapParticleCountToScalar_4 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_AVERAGE bool m_bMod2X = true string m_hTexture = "materials\\particle\\groundcracks_light.vtex" float m_flAnimationRate = 0.000000 int m_nOrientationType = 2 string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flEndFadeInTime = 0.050000 float m_flStartAlpha = 0.100000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.500000 string m_Notes = "" } C_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0 { float(3) m_vecCP1Pos = ( 0.000000, 0.000000, 40.000000 ) int m_nCP1 = 2 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 2.000000 string m_Notes = "" } C_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0 { int m_nCPInput = 1 float m_flInputMin = 100.000000 float m_flInputMax = 900.000000 float m_flOutputMin = 100.000000 float m_flOutputMax = 900.000000 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { float m_flOutputMax = 0.000000 float m_flOutputMin = 1.000000 int m_nFieldOutput = 7 int m_nInputMax = 25 string m_Notes = "" } C_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0 { float m_flNumToAssign = 25.000000 string m_Notes = "" CPathParameters m_PathParams = CPathParameters { int m_nEndControlPointNumber = 2 } } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2 { bool m_bScaleInitialRange = true float m_flOutputMin = 1.000000 int m_nInputMax = 25 float m_flOutputMax = 1.100000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { bool m_bRandomlyFlipDirection = false float m_flDegreesMax = 90.000000 float m_flDegreesMin = 90.000000 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_4 { float m_flOutputMax = 0.500000 float m_flOutputMin = 1.000000 int m_nFieldOutput = 1 int m_nInputMax = 25 bool m_bScaleInitialRange = true string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 15 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 50, 239, 134, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 110.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 1.000000 int m_nConstantSequenceNumber = 4 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 16 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_SetChildControlPoints_0, &C_OP_MovementPlaceOnGround_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderTrails_0, &C_OP_RenderDeferredLight_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_VelocityFromCP_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_skull.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_i.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_f.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_e.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = true bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_h.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_b.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_g.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_sphere_glow.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_d.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_detail.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_spirits_2.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_sphere_glow_b.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false } ] bool m_bShouldSort = false bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 ) float m_fDrag = 0.000000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = 1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_SetChildControlPoints C_OP_SetChildControlPoints_0 { int m_nChildGroupID = 0 int m_nFirstControlPoint = 3 int m_nNumControlPoints = 1 int m_nFirstSourcePoint = 0 bool m_bSetOrientation = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0 { float m_flOffset = 0.000000 float m_flMaxTraceLength = 128.000000 float m_flTolerance = 32.000000 float m_flTraceOffset = 64.000000 float m_flLerpRate = 0.000000 string m_CollisionGroupName = "DEBRIS" int m_nRefCP1 = -1 int m_nRefCP2 = -1 int m_nLerpCP = -1 bool m_bKill = false bool m_bIncludeWater = false bool m_bSetNormal = false bool m_bScaleOffset = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_nOrientationType = 0 int m_nOrientationControlPoint = -1 float m_flMinSize = 0.000000 float m_flMaxSize = 5000.000000 float m_flStartFadeSize = 100000000.000000 float m_flEndFadeSize = 200000000.000000 float m_flMaxLength = 100.000000 float m_flMinLength = 64.000000 bool m_bIgnoreDT = false float m_flConstrainRadiusToLengthRatio = 1.000000 float m_flLengthScale = 1.000000 float m_flRadiusTaper = 1.000000 float m_flLengthFadeInTime = 0.100000 float(4) m_vEndTrailTintFactor = ( 1.000000, 1.000000, 1.000000, 1.000000 ) int m_nHorizCropField = 19 int m_nVertCropField = 19 float m_flRadiusScale = 1.000000 float m_flFinalTextureScaleU = 1.000000 float m_flFinalTextureScaleV = 1.000000 float m_flFinalTextureOffsetU = 0.000000 float m_flFinalTextureOffsetV = 0.000000 float m_flAnimationRate = 0.100000 bool m_bFitCycleToLifetime = false bool m_bAnimateInFPS = false bool m_bPerVertexLighting = false float m_flSelfIllumAmount = 2.000000 float m_flDiffuseAmount = 1.000000 float m_flSourceAlphaValueToMapToZero = 0.000000 float m_flSourceAlphaValueToMapToOne = 1.000000 bool m_bGammaCorrectVertexColors = true symbol m_nSequenceCombineMode = 0 float m_flAnimationRate2 = 0.000000 float m_flSequence0RGBWeight = 0.500000 float m_flSequence0AlphaWeight = 0.500000 float m_flSequence1RGBWeight = 0.500000 float m_flSequence1AlphaWeight = 0.500000 float m_flAddSelfAmount = 0.000000 bool m_bAdditive = false bool m_bMod2X = false bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = false bool m_bRefract = false float m_flRefractAmount = 1.000000 int m_nRefractBlurRadius = 0 symbol m_nRefractBlurType = 0 string m_stencilTestID = "" string m_stencilWriteID = "" bool m_bWriteStencilOnDepthPass = true bool m_bWriteStencilOnDepthFail = false bool m_bReverseZBuffering = false bool m_bDisableZBuffering = false bool m_bParticleFeathering = false float m_flFeatheringMinDist = 0.000000 float m_flFeatheringMaxDist = 15.000000 float m_flOverbrightFactor = 1.000000 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { bool m_bUseAlphaTestWindow = false bool m_bUseTexture = false float m_flRadiusScale = 3.000000 float m_flAlphaScale = 6.000000 float m_flLightDistance = 0.000000 float m_flStartFalloff = 0.100000 float m_flDistanceFalloff = 0.000000 float m_flSpotFoV = 60.000000 uint(4) m_ColorScale = ( 50, 239, 174, 255 ) int m_nAlphaTestPointField = 13 int m_nAlphaTestRangeField = 23 int m_nAlphaTestSharpnessField = 18 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 0.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 0 int m_nScaleCP = -1 float m_fSpeedMin = 0.000000 float m_fSpeedMax = 0.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.000000 float m_fLifetimeMax = 0.000000 float m_fLifetimeRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_VelocityFromCP C_INIT_VelocityFromCP_0 { int m_nControlPoint = 1 int m_nControlPointCompare = -1 int m_nControlPointLocal = -1 float m_flVelocityScale = 1.000000 bool m_bDirectionOnly = false bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_ember.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0, &C_OP_VectorNoise_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0, &C_OP_AttractToControlPoint_2 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\yellowflare.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.090000 float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.500000 float m_flBias = 0.750000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { bool m_bAdditive = true float(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 ) float(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.200000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 12, 50, 38, 255 ) string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 50, 239, 174, 255 ) int(4) m_ColorMin = ( 33, 255, 122, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.500000 float m_fLifetimeMin = 0.750000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 7.000000 float m_flRadiusMin = 3.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMin = 200 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMax = 16.000000 float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 ) float m_fSpeedMin = 100.000000 float m_fSpeedMax = 350.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { bool m_bLocalSpace = true float(3) m_vecOutputMax = ( 600.000000, 400.000000, 400.000000 ) float(3) m_vecOutputMin = ( -200.000000, -400.000000, -400.000000 ) float m_flNoiseScaleLoc = 0.250000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 5 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 0.400000 float m_flEmitRate = 500.000000 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { float m_fForceAmount = -2000.000000 float m_fFalloffPower = 0.000000 float m_flOpEndFadeOutTime = 0.200000 int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_2 { float m_flOpEndFadeOutTime = 0.200000 float m_fFalloffPower = 0.100000 float m_fForceAmount = -4000.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_ember_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 0, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0, &C_OP_AttractToControlPoint_2 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -255.000000 ) float m_fDrag = 0.125000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.250000 float m_flEndScale = 0.000000 } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.300003 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 ) float(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 ) bool m_bAdditive = true } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 12, 50, 38, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.750000 float m_fLifetimeMax = 1.500000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 3.000000 float m_flRadiusMax = 7.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_fSpeedMax = 950.000000 float m_fSpeedMin = 600.000000 float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 ) float m_fRadiusMax = 16.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.250000 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScaleLoc = 0.250000 float(3) m_vecOutputMin = ( -400.000000, -400.000000, -400.000000 ) float(3) m_vecOutputMax = ( 400.000000, 400.000000, 400.000000 ) } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 63 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_flOpEndFadeOutTime = 0.200000 float m_fFalloffPower = 0.000000 float m_fForceAmount = -2000.000000 bool m_bDisableOperator = true } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_2 { string m_Notes = "" float m_fForceAmount = -4000.000000 float m_fFalloffPower = 0.100000 float m_flOpEndFadeOutTime = 0.200000 bool m_bDisableOperator = true } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 50, 239, 174, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeAndKill_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_ember_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_d.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_e.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_light.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_f.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_ember.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 float m_flStartFadeSize = 0.200000 float m_flEndFadeSize = 0.250000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\smoke\\maya_wispy\\wispy_v2.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) float m_fDrag = 0.100000 string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flStartAlpha = 0.000000 float m_flEndFadeInTime = 0.150000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.700000 float m_flEndScale = 3.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 0.400000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( -240.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( -230.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 100.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 22.000000 float m_flRadiusMin = 18.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 255, 255, 155 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flStartFadeSize = 0.400000 float m_flEndFadeSize = 0.650000 string m_hTexture = "materials\\particle\\smoke3\\smoke3.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 100.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 0.000000 float m_flEndScale = 3.000000 float m_flBias = 0.700000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.400000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fSpeedMax = 100.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( -230.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( -240.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 44.000000 float m_flRadiusMax = 72.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int m_nFieldOutput = 22 int(4) m_ColorMax = ( 14, 0, 0, 255 ) int(4) m_ColorMin = ( 36, 14, 0, 255 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 8 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 4 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 86, 251, 152, 225 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 4.000000 float m_flBias = 0.800000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.200000 float m_fLifetimeMin = 0.200000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fSpeedMax = 100.000000 float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 80.000000 float m_flRadiusMax = 80.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_d.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 200, 0, 0, 175 ) int m_nConstantSequenceNumber = 4 CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomTrailLength_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { float m_flSelfIllumAmount = 2.000000 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" float m_flLengthFadeInTime = 0.200000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -300.000000 ) float m_fDrag = 0.150000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.200000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 93, 20, 0, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.100000 float m_fLifetimeMax = 1.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( -140.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 800.000000 int m_nControlPointNumber = 3 float m_fSpeedMin = 500.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 140.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 12.000000 float m_flRadiusMin = 8.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMaxLength = 0.200000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 94, 255, 208, 255 ) int(4) m_ColorMin = ( 8, 192, 190, 255 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 256 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_e.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 50, 239, 174, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 float m_flStartFadeSize = 0.200000 float m_flEndFadeSize = 0.250000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\smoke\\maya_wispy\\wispy_v2.vtex" float m_flAnimationRate = 1.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) float m_fDrag = 0.100000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.800000 float m_flEndScale = 4.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.750000 float m_fLifetimeMax = 1.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 400.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 40.000000 float m_flRadiusMin = 30.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 4 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_f.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 40, 177, 108, 245 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0, &C_INIT_RandomRotationSpeed_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 int m_bAdditive = 1 float m_flZoomRate1 = 4.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true string m_hTexture = "materials\\particle\\smoke3\\smoke3b.vtex" float m_flAnimationRate = 1.250000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 5.000000 float m_flBias = 0.680000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.800000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 42, 105, 73, 255 ) float m_flFadeStartTime = 0.250000 float m_flFadeEndTime = 0.750000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.500000 float m_fLifetimeMin = 1.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fSpeedMax = 400.000000 float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 30.000000 float m_flRadiusMax = 40.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 8 string m_Notes = "" } C_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0 { float m_flDegreesMax = 50.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 4 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_explosion_light.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 120.000000 int(4) m_ConstantColor = ( 95, 251, 161, 225 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0, &C_OP_RenderScreenShake_0, &C_OP_RenderScreenShake_2 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { int(4) m_ColorScale = ( 32, 215, 131, 255 ) float m_flStartFalloff = 0.100000 float m_flAlphaScale = 6.000000 string m_Notes = "" string m_hTexture = "materials\\particle\\fire_particle_2\\fire_particle_2.vtex" } C_OP_RenderScreenShake C_OP_RenderScreenShake_0 { float m_flDurationScale = 0.350000 float m_flRadiusScale = 2000.000000 float m_flFrequencyScale = 3.000000 float m_flAmplitudeScale = 12.000000 int m_nFilterCP = 9 string m_Notes = "" } C_OP_RenderScreenShake C_OP_RenderScreenShake_2 { string m_Notes = "" int m_nFilterCP = 1 float m_flAmplitudeScale = 12.000000 float m_flFrequencyScale = 3.000000 float m_flRadiusScale = 2000.000000 float m_flDurationScale = 0.350000 } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 5.000000 float m_flBias = 0.800000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 1 float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 44, 248, 149, 155 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0, &C_INIT_VelocityRandom_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch_smoke.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 int m_bAdditive = 1 float m_flZoomRate1 = 4.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true string m_hTexture = "materials\\particle\\smoke3\\smoke3b.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 100.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.700000 float m_flStartScale = 0.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 63, 38, 38, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 1.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fSpeedMax = 100.000000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 72.000000 float m_flRadiusMin = 44.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 8 string m_Notes = "" } C_INIT_VelocityRandom C_INIT_VelocityRandom_0 { int m_nControlPointNumber = 3 float(3) m_LocalCoordinateSystemSpeedMin = ( 200.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 230.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 4 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 146, 255, 195, 215 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) float m_fDrag = 0.100000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.800000 float m_flEndScale = 4.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.200000 float m_fLifetimeMax = 0.200000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 100.000000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 50.000000 float m_flRadiusMin = 50.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_launch_smoke.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 int m_nInitialParticles = 2 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 15 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 int m_bAdditive = 1 float m_flZoomRate1 = 4.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true string m_hTexture = "materials\\particle\\smoke3\\smoke3b.vtex" float m_flAnimationRate = 1.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 60.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.900000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 130.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 float m_flBias = 0.350000 float m_flStartScale = 0.500000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flEndTime_max = 0.200000 float m_flEndTime_min = 0.200000 float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 int m_nControlPointNumber = 9 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeEndTime = 0.500000 string m_Notes = "" int(4) m_ColorFade = ( 17, 169, 103, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 1.500000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 0, 255, 180, 255 ) int(4) m_ColorMin = ( 0, 255, 126, 255 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fSpeedMax = 35.000000 int m_nControlPointNumber = 9 float m_fRadiusMax = 1.000000 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) bool m_bLocalSpace = true string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 48.000000 float m_flOutputMin = 32.000000 float m_flNoiseScale = 2.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 8 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 2.000000 float m_flOpEndFadeOutTime = 2.000000 float m_flOpStartFadeOutTime = 0.500000 float m_flEmitRate = 38.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_skull.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 1 string m_pszSnapshotName = "" string m_hLowViolenceDef = "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_skull_lv.vpcf" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 2.000000 float m_flConstantLifespan = 0.250000 int(4) m_ConstantColor = ( 87, 187, 143, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Orient2DRelToCP_0, &C_OP_EndCapTimedDecay_0, &C_OP_SetToCP_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomSecondSequence_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderModels C_OP_RenderModels_0 { int m_nManualFrameField = 18 float m_flAnimationRate = 0.000000 string m_hOverrideMaterial = "" string m_ActivityName = "" bool m_bOrientZ = true string m_Notes = "" string m_EconSlotName = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/heroes/necrolyte/necrolyte_skull.vmdl" } ] bool m_bAnimated = true } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0 { int m_nCP = 1 float m_flRotOffset = 270.000000 int m_nFieldOutput = 12 string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" } C_OP_SetToCP C_OP_SetToCP_0 { bool m_bOffsetLocal = true float(3) m_vecOffset = ( -2.000000, 0.000000, -8.000000 ) int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0 { int m_nSequenceMax = 2 int m_nSequenceMin = 2 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { bool m_bRandomlyFlipDirection = false int m_nFieldOutput = 20 float m_flDegreesMax = -10.000000 float m_flDegreesMin = -10.000000 float m_flDegrees = -10.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_sphere_glow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 8 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 250.000000 int(4) m_ConstantColor = ( 55, 255, 182, 100 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_PositionLock_0, &C_OP_RampScalarLinear_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.125000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { int m_nField = 4 float m_RateMin = -5.000000 float m_RateMax = 5.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.400000 float m_fLifetimeMin = 0.400000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 9.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_sphere_glow_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 8 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 250.000000 float m_flConstantLifespan = 0.250000 int(4) m_ConstantColor = ( 55, 255, 182, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_PositionLock_0, &C_OP_RampScalarLinear_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" float m_flAnimationRate = 2.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_OP_PositionLock C_OP_PositionLock_0 { float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 string m_Notes = "" int m_nControlPointNumber = 3 } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { string m_Notes = "" float m_RateMax = 5.000000 float m_RateMin = -5.000000 int m_nField = 4 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.750000 float m_flEndScale = 0.000000 float m_flStartScale = 2.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 160 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 60 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_Noise_2, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomColor_2, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RemapParticleCountToScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 float m_flStartFadeSize = 0.575000 float m_flEndFadeSize = 0.650000 float m_flMaxSize = 0.750000 string m_hTexture = "materials\\particle\\water_splash\\water_splash.vtex" float m_flAnimationRate = 1.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 130.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_Noise C_OP_Noise_2 { bool m_bAdditive = true float m_flOutputMax = 90.000000 int m_nFieldOutput = 12 float m_fl4NoiseScale = 0.001100 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 float m_flBias = 0.750000 float m_flStartScale = 0.250000 float m_flEndTime = 0.140000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 float m_flEndTime_min = 0.300000 float m_flEndTime_max = 0.500000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 0, 0, 0, 255 ) float m_flFadeStartTime = 0.500000 int m_nFieldOutput = 22 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 int m_nFieldOutput = 23 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.750000 float m_fLifetimeMin = 0.450000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 0, 178, 134, 255 ) int(4) m_ColorMin = ( 222, 255, 244, 255 ) string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_2 { int m_nFieldOutput = 22 int(4) m_ColorMax = ( 6, 47, 40, 255 ) int(4) m_ColorMin = ( 4, 28, 18, 255 ) bool m_bRunForParentApplyKillList = false string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fRadiusMax = 1.000000 float m_fSpeedMax = 64.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) bool m_bLocalSpace = true string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 18.000000 float m_flOutputMin = 14.000000 float m_flNoiseScale = 2.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { int m_nInputMax = 4 bool m_bScaleInitialRange = true bool m_bActiveRange = true string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 128.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_d.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 40.000000 int(4) m_ConstantColor = ( 0, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_DistanceToCP_0, &C_OP_VectorNoise_0, &C_OP_FadeInSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 14.000000 string m_hTexture = "materials\\particle\\beam_plasma_03.vtex" float m_flTextureVScrollRate = -1.500000 string m_Notes = "" float m_flTextureVWorldSize = 249.999985 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.700000 float m_flEndScale = 0.000000 float m_flStartScale = 2.000000 string m_Notes = "" } C_OP_DistanceToCP C_OP_DistanceToCP_0 { int m_nStartCP = 3 int m_nFieldOutput = 16 float m_flInputMax = 256.000000 float m_flInputMin = 64.000000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { float m_fl4NoiseScale = 0.050000 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -1.000000, -1.000000, 0.000000 ) float(3) m_vecOutputMax = ( 1.000000, 1.000000, 0.000000 ) bool m_bAdditive = true string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 1.000000 float m_fLifetimeMax = 1.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = -50.000000 float m_flRadiusMax = 50.000000 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 40.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_detail.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_Noise_2, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_detail_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\smoke\\static\\static_smoke.vtex" float m_flAnimationRate = 1.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.400000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.125000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { bool m_bAdditive = true float m_flOutputMax = 130.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 string m_Notes = "" } C_OP_Noise C_OP_Noise_2 { float m_fl4NoiseScale = 0.001100 int m_nFieldOutput = 12 float m_flOutputMax = 90.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndTime = 0.140000 float m_flStartScale = 0.250000 float m_flBias = 0.750000 float m_flEndScale = 4.000000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 9999.000000 float m_Rate = 100.000000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { float m_flEndTime = 99999.000000 float m_Rate = -2.000000 int m_nField = 16 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 57, 185, 135, 255 ) string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flEndTime_max = 0.100000 float m_flEndTime_min = 0.100000 float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.150000 float m_fLifetimeMax = 0.180000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 222, 255, 245, 255 ) int(4) m_ColorMax = ( 50, 255, 156, 255 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 64.000000 float m_fRadiusMax = 1.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { bool m_bLocalSpace = true float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMin = -4.000000 float m_flDegreesMax = 4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 9.000000 float m_flRadiusMax = 15.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 256.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_detail_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_Noise_2, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRadius_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 int m_nOrientationType = 3 float m_flMaxSize = 0.400000 string m_hTexture = "materials\\particle\\lava_blasts\\lava_glow.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.900000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 130.000000 bool m_bAdditive = true } C_OP_Noise C_OP_Noise_2 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 90.000000 int m_nFieldOutput = 12 float m_fl4NoiseScale = 0.001100 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 4.000000 float m_flBias = 0.750000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" int m_nOpEndCapState = 1 float m_Rate = 100.000000 float m_flEndTime = 9999.000000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { string m_Notes = "" int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -2.000000 float m_flEndTime = 99999.000000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 0, 255, 108, 255 ) } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 float m_flEndTime_min = 0.100000 float m_flEndTime_max = 0.100000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.180000 float m_fLifetimeMin = 0.150000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 50, 255, 156, 255 ) int(4) m_ColorMin = ( 222, 255, 245, 255 ) } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_fRadiusMax = 1.000000 float m_fSpeedMax = 64.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) bool m_bLocalSpace = true } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 12.000000 float m_flRadiusMin = 6.000000 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 3 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 256.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_e.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 32.000000 int(4) m_ConstantColor = ( 12, 245, 116, 125 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0, &C_OP_DistanceToCP_0, &C_OP_FadeInSimple_0, &C_OP_VectorNoise_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RemapParticleCountToScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\bendibeam2.vtex" float m_flTextureVScrollRate = -0.100000 string m_Notes = "" float m_flTextureVWorldSize = 806.451599 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { bool m_bEaseInOut = false float m_flFadeEndTime = 0.600000 int(4) m_ColorFade = ( 0, 88, 46, 255 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 3.000000 float m_flEndScale = 0.000000 float m_flBias = 0.800000 string m_Notes = "" } C_OP_DistanceToCP C_OP_DistanceToCP_0 { int m_nOpEndCapState = 1 float m_flInputMin = 64.000000 float m_flInputMax = 256.000000 int m_nFieldOutput = 16 int m_nStartCP = 3 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.125000 string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { float m_fl4NoiseScale = 0.050000 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -1.000000, -1.000000, 0.000000 ) float(3) m_vecOutputMax = ( 1.000000, 1.000000, 0.000000 ) bool m_bAdditive = true string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.400000 float m_fLifetimeMin = 0.400000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { int m_nInputMax = 2 float m_flOutputMax = 48.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 40.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_f.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 int m_nInitialParticles = 2 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 20 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 int m_bAdditive = 1 float m_flZoomRate1 = 4.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true string m_hTexture = "materials\\particle\\smoke3\\smoke3b.vtex" float m_flAnimationRate = 1.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 30.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.900000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { bool m_bAdditive = true float m_flOutputMax = 130.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndTime = 0.140000 float m_flStartScale = 0.250000 float m_flBias = 0.750000 float m_flEndScale = 2.000000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 9999.000000 float m_Rate = 150.000000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { float m_flEndTime = 99999.000000 float m_Rate = -1.000000 int m_nField = 16 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 float m_flEndTime_min = 0.200000 float m_flEndTime_max = 0.200000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 152, 240, 214, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 1.500000 float m_fLifetimeMax = 2.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 50, 239, 174, 255 ) int(4) m_ColorMax = ( 50, 239, 174, 255 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMax = 1.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { bool m_bLocalSpace = true float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flNoiseScale = 2.000000 float m_flOutputMin = 12.000000 float m_flOutputMax = 16.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMin = -4.000000 float m_flDegreesMax = 4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 8 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 38.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_g.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 512 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_ColorInterpolate_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomColor_2, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RemapParticleCountToScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\yellowflare.vtex" string m_Notes = "" float m_flAnimationRate = 1.500000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 130.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int m_nFieldOutput = 22 float m_flFadeStartTime = 0.500000 int(4) m_ColorFade = ( 0, 0, 0, 255 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { int m_nFieldOutput = 23 float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flBias = 0.250000 } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.500000 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -4.000000, -4.000000, -4.000000 ) float(3) m_vecOutputMax = ( 4.000000, 4.000000, 4.000000 ) bool m_bAdditive = true } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.450000 float m_fLifetimeMax = 2.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 222, 255, 244, 255 ) int(4) m_ColorMax = ( 0, 178, 134, 255 ) } C_INIT_RandomColor C_INIT_RandomColor_2 { string m_Notes = "" bool m_bRunForParentApplyKillList = false int(4) m_ColorMin = ( 4, 28, 18, 255 ) int(4) m_ColorMax = ( 6, 47, 40, 255 ) int m_nFieldOutput = 22 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 64.000000 float m_fRadiusMax = 16.000000 int m_nControlPointNumber = 3 } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" bool m_bLocalSpace = true float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) } C_INIT_CreationNoise C_INIT_CreationNoise_0 { string m_Notes = "" float m_flNoiseScale = 2.000000 float m_flOutputMin = 2.000000 float m_flOutputMax = 6.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMin = -4.000000 float m_flDegreesMax = 4.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { string m_Notes = "" bool m_bActiveRange = true bool m_bScaleInitialRange = true int m_nInputMax = 4 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 256.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_h.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 512 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 0, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" float m_flAnimationRate = 1.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 130.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.250000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { bool m_bAdditive = true float(3) m_vecOutputMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_vecOutputMin = ( -4.000000, -4.000000, -4.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.500000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 0.450000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fRadiusMax = 16.000000 float m_fSpeedMax = 64.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) bool m_bLocalSpace = true string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 4.000000 float m_flOutputMin = 2.000000 float m_flNoiseScale = 2.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { int m_nInputMax = 4 bool m_bScaleInitialRange = true bool m_bActiveRange = true string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 63 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 256.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_skeletonking_hellfireblast_trail_i.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 512 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 20.000000 int(4) m_ConstantColor = ( 255, 255, 255, 155 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0, &C_INIT_Orient2DRelToCP_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\smoke\\steam\\steam.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.100000 string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.350000 float m_flEndScale = 2.000000 } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.500000 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -55.000000, -55.000000, -55.000000 ) float(3) m_vecOutputMax = ( 55.000000, 55.000000, 55.000000 ) bool m_bAdditive = true bool m_bOffset = true } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.250000 float m_fLifetimeMax = 2.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 0, 43, 29, 255 ) int(4) m_ColorMax = ( 0, 0, 0, 255 ) } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fSpeedMax = 320.000000 float m_fRadiusMax = 2.000000 int m_nControlPointNumber = 3 } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" bool m_bLocalSpace = true float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMin = -4.000000 float m_flDegreesMax = 4.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 1 } C_INIT_Orient2DRelToCP C_INIT_Orient2DRelToCP_0 { string m_Notes = "" float m_flRotOffset = 180.000000 int m_nCP = 3 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 256.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_spirit_trail.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 3 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( -30.000000, -30.000000, -30.000000 ) float(3) m_BoundingBoxMax = ( 30.000000, 30.000000, 30.000000 ) float m_flCullRadius = -1.000000 string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 250.000000 float m_flConstantLifespan = 1.250000 int(4) m_ConstantColor = ( 0, 248, 163, 255 ) int m_nConstantSequenceNumber1 = 1 float m_flMaxDrawDistance = 400000.000000 float m_flNoDrawTimeToGoToSleep = 5.000000 bool m_bShouldSort = false int m_nMinCPULevel = 1 float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_VectorNoise_0, &C_OP_BasicMovement_0, &C_OP_SetPerChildControlPoint_0, &C_OP_OscillateVector_0, &C_OP_Spin_0, &C_OP_FadeOutSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_InitialVelocityNoise_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_TurbulenceForce_0, &C_OP_TwistAroundAxis_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_spirit_trail_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { float m_flAlphaScale = 2.000000 string m_Notes = "" float m_flStartFalloff = 0.100000 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { bool m_bOffset = true string m_Notes = "" bool m_bAdditive = true float(3) m_vecOutputMin = ( -540.000000, -540.000000, -1.000000 ) int m_nFieldOutput = 0 float(3) m_vecOutputMax = ( 540.000000, 540.000000, 1.000000 ) float m_fl4NoiseScale = 0.050000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.080000 float(3) m_Gravity = ( 0.000000, 0.000000, 7000.000000 ) } C_OP_SetPerChildControlPoint C_OP_SetPerChildControlPoint_0 { string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float m_flEndTime_max = 99999998430674944.000000 float m_flEndTime_min = 99999998430674944.000000 bool m_bProportional = false float(3) m_FrequencyMax = ( 2.000000, 2.000000, 2.000000 ) float(3) m_RateMax = ( 400.000000, 400.000000, 20.000000 ) float(3) m_RateMin = ( -400.000000, -400.000000, -20.000000 ) bool m_bOffset = true string m_Notes = "" float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) } C_OP_Spin C_OP_Spin_0 { int m_nSpinRateDegrees = 12 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeEndTime = 0.500000 int(4) m_ColorFade = ( 0, 0, 0, 255 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_vecDistanceBias = ( 0.010000, 0.010000, 0.000000 ) float m_fRadiusMax = 48.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float(3) m_vecOutputMax = ( 100.000000, 100.000000, 1500.000000 ) float(3) m_vecOutputMin = ( -100.000000, -100.000000, 1400.000000 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } C_OP_TurbulenceForce C_OP_TurbulenceForce_0 { bool m_bDisableOperator = true string m_Notes = "" float(3) m_vecNoiseAmount3 = ( -1300.000000, -1300.000000, -1300.000000 ) float m_flNoiseCoordScale3 = 5.000000 float(3) m_vecNoiseAmount2 = ( 1100.000000, 1100.000000, 1100.000000 ) float m_flNoiseCoordScale2 = 3.000000 float(3) m_vecNoiseAmount1 = ( -1510.000000, -1510.000000, -1510.000000 ) float m_flNoiseCoordScale1 = 0.100000 float(3) m_vecNoiseAmount0 = ( 1450.000000, 1450.000000, 1450.000000 ) } C_OP_TwistAroundAxis C_OP_TwistAroundAxis_0 { string m_Notes = "" float m_fForceAmount = -150.000000 float(3) m_TwistAxis = ( 0.100000, 0.000000, 1.000000 ) } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_spirit_trail_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 36.000000 float m_flConstantLifespan = 0.400000 int(4) m_ConstantColor = ( 124, 250, 207, 155 ) float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_VectorNoise_0, &C_OP_RemapParticleCountOnScalarEndCap_0, &C_OP_RemapParticleCountOnScalarEndCap_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_CreationNoise_0, &C_INIT_RemapCPtoVector_0, &C_INIT_RemapScalar_0, &C_INIT_RemapParticleCountToScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_spirit_trail_c.vpcf" } ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 1.000000 string m_hTexture = "materials\\particle\\beam_plasma_05.vtex" float m_flTextureVScrollRate = -1.250000 string m_Notes = "" float m_flTextureVWorldSize = 1428.571533 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.750000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.100000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flStartTime_max = -10.000000 float m_flStartTime_min = -10.000000 string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { bool m_bAdditive = true float(3) m_vecOutputMax = ( 16.000000, 16.000000, 16.000000 ) float(3) m_vecOutputMin = ( -16.000000, -16.000000, -16.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.080000 string m_Notes = "" } C_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_0 { int m_nFieldOutput = 16 int m_nInputMax = 10 bool m_bBackwards = true string m_Notes = "" } C_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_2 { bool m_bScaleCurrent = true int m_nInputMax = 25 bool m_bBackwards = true string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 0.400000 int m_nFieldOutput = 7 string m_Notes = "" } C_INIT_RemapCPtoVector C_INIT_RemapCPtoVector_0 { int m_nOpScaleCP = 16 string m_Notes = "" int m_nCPInput = 15 float(3) m_vInputMax = ( 255.000000, 255.000000, 255.000000 ) int m_nFieldOutput = 6 float(3) m_vOutputMax = ( 1.000000, 1.000000, 1.000000 ) } C_INIT_RemapScalar C_INIT_RemapScalar_0 { float m_flOutputMax = 0.000000 float m_flOutputMin = 1.000000 int m_nFieldOutput = 16 float m_flInputMax = 0.350000 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { bool m_bActiveRange = true bool m_bScaleInitialRange = true int m_nFieldOutput = 7 int m_nInputMax = 3 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 0.350000 float m_flEmitRate = 32.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_spirit_trail_big.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 160 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 64.000000 int(4) m_ConstantColor = ( 15, 196, 122, 100 ) int m_nConstantSequenceNumber = 1 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_EndCapTimedDecay_0, &C_OP_Spin_0, &C_OP_LerpEndCapScalar_0, &C_OP_LerpScalar_0, &C_OP_Decay_0, &C_OP_PercentageBetweenCPs_0, &C_OP_FadeOutSimple_0, &C_OP_SetSingleControlPointPosition_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RemapParticleCountToScalar_2, &C_INIT_RemapParticleCountToScalar_4, &C_INIT_RemapParticleCountToScalar_6, &C_INIT_RemapParticleCountToScalar_8, &C_INIT_RandomTrailLength_0, &C_INIT_RemapParticleCountToScalar_10 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ &C_OP_ConstrainDistanceToPath_0 ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\wisp\\particle_swirl.vtex" float m_flAnimationRate = 0.750000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { float m_flDecayTime = 3.000000 string m_Notes = "" } C_OP_Spin C_OP_Spin_0 { int m_nSpinRateDegrees = -21 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { bool m_bDisableOperator = true string m_Notes = "" int m_nFieldOutput = 7 float m_flOutput = 0.000000 } C_OP_LerpScalar C_OP_LerpScalar_0 { float m_flEndTime = 1.500000 string m_Notes = "" float m_flStartTime = 0.400000 int m_nFieldOutput = 18 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_0 { bool m_bScaleInitialRange = true int m_nEndCP = 11 float m_flInputMax = 0.400000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0 { string m_Notes = "" int m_nCP1 = 11 float(3) m_vecCP1Pos = ( 0.000000, 0.000000, 1250.000000 ) } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fSpeedMax = 100.000000 float m_fSpeedMin = 100.000000 float m_fRadiusMax = 30.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 2.000000 } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { int m_nFieldOutput = 18 int m_nInputMax = 160 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2 { float m_flOutputMax = 12.000000 int m_nFieldOutput = 4 int m_nInputMax = 160 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_4 { bool m_bScaleInitialRange = true float m_flOutputMax = 0.350000 float m_flOutputMin = 1.000000 int m_nInputMax = 160 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_6 { string m_Notes = "" int m_nInputMax = 32 int m_nFieldOutput = 16 bool m_bActiveRange = true } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_8 { string m_Notes = "" int m_nInputMin = 30 int m_nInputMax = 160 int m_nFieldOutput = 16 float m_flOutputMin = 1.000000 float m_flOutputMax = 0.000000 bool m_bActiveRange = true } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMaxLength = 0.400000 float m_flMinLength = 0.400000 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_10 { bool m_bScaleInitialRange = true float m_flOutputMin = 0.800000 int m_nFieldOutput = 1 int m_nInputMax = 160 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 300.000000 float m_flEmissionDuration = 0.500000 string m_Notes = "" float m_flOpEndFadeInTime = 0.500000 } C_OP_ConstrainDistanceToPath C_OP_ConstrainDistanceToPath_0 { int m_nManualTField = 18 string m_Notes = "" float m_flMaxDistance0 = 0.000000 float m_flTravelTime = 1.000000 CPathParameters m_PathParameters = CPathParameters { float m_flMidPoint = 0.600000 float m_flBulge = 650.000000 int m_nEndControlPointNumber = 11 } } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_spirit_trail_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 48.000000 float m_flConstantLifespan = 0.500000 int(4) m_ConstantColor = ( 91, 241, 158, 155 ) float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_FadeInSimple_0, &C_OP_VectorNoise_0, &C_OP_RemapParticleCountOnScalarEndCap_0, &C_OP_RemapParticleCountOnScalarEndCap_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RemapScalar_0, &C_INIT_RemapParticleCountToScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 1.000000 string m_hTexture = "materials\\particle\\beam_plasma_06.vtex" float m_flTextureVScrollRate = -0.700000 string m_Notes = "" float m_flTextureVWorldSize = 1000.000061 int m_nMaxTesselation = 2 int m_nMinTesselation = 2 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.750000 string m_Notes = "" float m_flEndScale = 0.000000 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" float m_flStartTime_min = -10.000000 float m_flStartTime_max = -10.000000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.080000 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -16.000000, -16.000000, -16.000000 ) float(3) m_vecOutputMax = ( 16.000000, 16.000000, 16.000000 ) bool m_bAdditive = true } C_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_0 { int m_nFieldOutput = 16 int m_nInputMax = 10 bool m_bBackwards = true string m_Notes = "" } C_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_2 { bool m_bScaleCurrent = true int m_nInputMax = 25 bool m_bBackwards = true string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { float m_flOutputMax = 0.000000 float m_flOutputMin = 1.000000 int m_nFieldOutput = 16 float m_flInputMax = 0.350000 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { bool m_bActiveRange = true bool m_bScaleInitialRange = true int m_nFieldOutput = 7 int m_nInputMax = 3 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 0.350000 string m_Notes = "" float m_flEmitRate = 32.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 200 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_LockToBone_0, &C_OP_SetRandomControlPointPosition_0, &C_OP_SetRandomControlPointPosition_2, &C_OP_SetParentControlPointsToChildCP_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_CreateOnModel_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_spirits.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_spirits.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_d.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_e.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_a.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_f.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_g.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_f.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_g.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_h.vpcf" }, ParticleChildrenInfo_t { bool m_bEndCap = true string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_endcap.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_i.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_j.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_h.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 float m_flStartFadeSize = 0.200000 float m_flEndFadeSize = 0.250000 float m_flMaxSize = 0.250000 string m_hTexture = "materials\\particle\\smoke\\maya_wispy\\wispy_small.vtex" float m_flAnimationRate = 0.500000 string m_Notes = "" } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { bool m_bDisableOperator = true string m_Notes = "" float m_flRadiusScale = 22.000000 float m_flStartFalloff = 0.100000 int(4) m_ColorScale = ( 122, 233, 164, 255 ) float m_flAlphaScale = 18.000000 string m_hTexture = "materials\\particle\\smoke\\maya_wispy\\wispy_small.vtex" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 10.000000 ) string m_Notes = "" float m_fDrag = 0.100000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.400000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 5.000000 bool m_bAdditive = true string m_Notes = "" float m_flOutputMin = -5.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 1.250000 float m_flBias = 0.750000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 float m_Rate = 150.000000 float m_flEndTime = 9999.000000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -2.000000 float m_flEndTime = 99999.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeStartTime = 0.200000 int(4) m_ColorFade = ( 0, 76, 41, 255 ) string m_Notes = "" } C_OP_LockToBone C_OP_LockToBone_0 { string m_HitboxSetName = "head" string m_Notes = "" int m_nOpEndCapState = 0 } C_OP_SetRandomControlPointPosition C_OP_SetRandomControlPointPosition_0 { float(3) m_vecCPMinPos = ( 0.200000, 0.200000, 0.200000 ) string m_Notes = "" int m_nCP1 = 6 float(3) m_vecCPMaxPos = ( 2.000000, 2.000000, 2.000000 ) bool m_bUseWorldLocation = true } C_OP_SetRandomControlPointPosition C_OP_SetRandomControlPointPosition_2 { float(3) m_vecCPMinPos = ( 0.200000, 0.200000, 0.200000 ) string m_Notes = "" int m_nCP1 = 7 float(3) m_vecCPMaxPos = ( 2.000000, 2.000000, 2.000000 ) bool m_bUseWorldLocation = true } C_OP_SetParentControlPointsToChildCP C_OP_SetParentControlPointsToChildCP_0 { string m_Notes = "" int m_nChildControlPoint = 6 int m_nNumControlPoints = 2 int m_nFirstSourcePoint = 6 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { string m_Notes = "" float m_flLerpTime = 0.200000 int m_nFieldOutput = 16 float m_flOutput = 0.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 1.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 3, 142, 85, 255 ) int(4) m_ColorMin = ( 232, 251, 244, 255 ) string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 64.000000, 64.000000, 64.000000 ) float(3) m_vecOutputMin = ( -64.000000, -64.000000, -64.000000 ) bool m_bLocalSpace = true string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 16.000000 float m_flOutputMin = 11.000000 float m_flNoiseScale = 2.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_HitboxSetName = "head" float m_flHitBoxScale = 0.800000 string m_Notes = "" bool m_bLocalCoords = true } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" bool m_bDisableOperator = true float(3) m_OffsetMin = ( 8.000000, 0.000000, 0.000000 ) float(3) m_OffsetMax = ( 12.000000, 0.000000, 0.000000 ) bool m_bLocalCoords = true } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 3.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 240 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_LockToBone_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 float m_flStartFadeSize = 0.200000 float m_flEndFadeSize = 0.250000 float m_flMaxSize = 0.250000 string m_hTexture = "materials\\particle\\smoke\\maya_wispy\\wispy_small.vtex" string m_Notes = "" float m_flAnimationRate = 0.500000 } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { string m_Notes = "" float m_flRadiusScale = 2.500000 float m_flAlphaScale = 2.000000 float m_flStartFalloff = 0.100000 int(4) m_ColorScale = ( 122, 233, 164, 255 ) string m_hTexture = "materials\\particle\\smoke\\maya_wispy\\wispy_small.vtex" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -8.000000 ) float m_fDrag = 0.100000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.400000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 5.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 float m_flOutputMin = -5.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.250000 float m_flBias = 0.750000 float m_flEndScale = 3.000000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" float m_flEndTime = 9999.000000 float m_Rate = 150.000000 int m_nOpEndCapState = 1 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { string m_Notes = "" float m_flEndTime = 99999.000000 float m_Rate = -2.000000 int m_nField = 16 int m_nOpEndCapState = 1 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 0, 76, 41, 255 ) float m_flFadeStartTime = 0.200000 } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" float m_flLifeTimeFadeEnd = 3.000000 string m_HitboxSetName = "hands" int m_nOpEndCapState = 0 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.000000 float m_fLifetimeMax = 2.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 232, 251, 244, 255 ) int(4) m_ColorMax = ( 3, 142, 85, 255 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" bool m_bLocalSpace = true float(3) m_vecOutputMin = ( -64.000000, -64.000000, -64.000000 ) float(3) m_vecOutputMax = ( 64.000000, 64.000000, 64.000000 ) } C_INIT_CreationNoise C_INIT_CreationNoise_0 { string m_Notes = "" float m_flNoiseScale = 2.000000 float m_flOutputMin = 11.000000 float m_flOutputMax = 18.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMin = -4.000000 float m_flDegreesMax = 4.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_Notes = "" float m_flHitBoxScale = 0.800000 string m_HitboxSetName = "hands" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 11 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 8.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_a.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 60 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 76, 203, 121, 100 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_LockToBone_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomTrailLength_0, &C_INIT_OffsetVectorToVector_0, &C_INIT_PositionOffset_0, &C_INIT_RandomLifeTime_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_glow_02.vtex" bool m_bIgnoreDT = true string m_Notes = "" float m_flLengthFadeInTime = 0.500000 int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" string m_HitboxSetName = "head" int m_nOpEndCapState = 0 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.750000 float m_flEndScale = 0.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.600000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.400000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 10.000000 float m_flRadiusMax = 38.000000 } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { float m_flHitBoxScale = 0.800000 string m_Notes = "" float(3) m_vecDirectionBias = ( 0.500000, 0.000000, 1.000000 ) bool m_bLocalCoords = true string m_HitboxSetName = "head" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMinLength = 1.000000 string m_Notes = "" float m_flMaxLength = 1.000000 } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { float(3) m_vecOutputMax = ( 0.000000, 0.000000, 85.000000 ) float(3) m_vecOutputMin = ( 0.000000, 0.000000, 40.000000 ) int m_nFieldOutput = 2 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, -2.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, -2.000000 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 1.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 10.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 60 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 76, 203, 121, 140 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_LockToBone_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomTrailLength_0, &C_INIT_OffsetVectorToVector_0, &C_INIT_PositionOffset_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\smoke\\steam\\steam.vtex" float m_flLengthFadeInTime = 0.500000 float m_flAnimationRate = 1.000000 string m_Notes = "" bool m_bIgnoreDT = true int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_LockToBone C_OP_LockToBone_0 { float m_flPrevPosScale = 0.900000 string m_HitboxSetName = "head" string m_Notes = "" int m_nOpEndCapState = 0 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.000000 float m_flBias = 0.750000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.600000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.400000 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 38.000000 float m_flRadiusMin = 10.000000 string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_HitboxSetName = "head" bool m_bLocalCoords = true float(3) m_vecDirectionBias = ( 0.500000, 0.000000, 1.000000 ) string m_Notes = "" float m_flHitBoxScale = 0.800000 } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMaxLength = 1.000000 string m_Notes = "" float m_flMinLength = 1.000000 } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { string m_Notes = "" int m_nFieldOutput = 2 float(3) m_vecOutputMin = ( 0.000000, 0.000000, 90.000000 ) float(3) m_vecOutputMax = ( 0.000000, 0.000000, 140.000000 ) } C_INIT_PositionOffset C_INIT_PositionOffset_0 { bool m_bLocalCoords = true string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, -2.000000 ) float(3) m_OffsetMax = ( 2.000000, 0.000000, -2.000000 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.000000 float m_fLifetimeMax = 2.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 1 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 10.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 60 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 76, 203, 121, 100 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_LockToBone_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomTrailLength_0, &C_INIT_OffsetVectorToVector_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\smoke\\steam\\steam.vtex" bool m_bIgnoreDT = true string m_Notes = "" float m_flAnimationRate = 1.000000 int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" string m_HitboxSetName = "hands" float m_flPrevPosScale = 0.850000 int m_nOpEndCapState = 0 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.750000 float m_flEndScale = 0.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.600000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.400000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 10.000000 float m_flRadiusMax = 48.000000 } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { float m_flHitBoxScale = 0.800000 string m_Notes = "" float(3) m_vecDirectionBias = ( 0.500000, 0.000000, 1.000000 ) bool m_bLocalCoords = true string m_HitboxSetName = "hands" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMinLength = 0.750000 string m_Notes = "" float m_flMaxLength = 1.100000 } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { float(3) m_vecOutputMax = ( 0.000000, 0.000000, 150.000000 ) float(3) m_vecOutputMin = ( 0.000000, 0.000000, 90.000000 ) int m_nFieldOutput = 2 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 1.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 1 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 10.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_f.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 68, 199, 114, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_LockToBone_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinear_0, &C_OP_InterpolateRadius_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomTrailLength_0, &C_INIT_OffsetVectorToVector_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomScalar_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRotation_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { float m_flSelfIllumAmount = 4.000000 string m_hTexture = "materials\\particle\\beam_jagged_01.vtex" bool m_bIgnoreDT = true string m_Notes = "" float m_flLengthFadeInTime = 2.000000 int m_nVertCropField = 18 int(4) m_trailTint = ( 0, 128, 0, 255 ) float m_flTrailEndAlpha = -0.000000 } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" int m_nOpEndCapState = 0 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.750000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { string m_Notes = "" int m_nField = 18 float m_RateMin = -1.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flBias = 0.650000 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 20.000000 float m_flRadiusMax = 68.000000 } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { float m_flHitBoxScale = 0.700000 string m_Notes = "" float(3) m_vecDirectionBias = ( 0.000000, 0.000000, 0.180000 ) bool m_bLocalCoords = true } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMinLength = 1.000000 string m_Notes = "" float m_flMaxLength = 2.000000 } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { float(3) m_vecOutputMax = ( 0.000000, 0.000000, 345.000000 ) float(3) m_vecOutputMin = ( 0.000000, 0.000000, 220.000000 ) int m_nFieldOutput = 2 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 1.250000 string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { string m_Notes = "" float m_flMax = 2.000000 int m_nFieldOutput = 18 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" int m_nFieldOutput = 20 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 35 int m_nAlphaMax = 90 float m_flAlphaRandExponent = 2.500000 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 80.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_g.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 68, 199, 114, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_LockToBone_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinear_0, &C_OP_InterpolateRadius_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomTrailLength_0, &C_INIT_OffsetVectorToVector_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomScalar_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRotation_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { float m_flSelfIllumAmount = 4.000000 string m_hTexture = "materials\\particle\\beam_jagged_01.vtex" int m_nVertCropField = 18 float m_flLengthFadeInTime = 2.000000 string m_Notes = "" bool m_bIgnoreDT = true int(4) m_trailTint = ( 0, 128, 0, 255 ) float m_flTrailEndAlpha = -0.000000 } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" int m_nOpEndCapState = 0 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { float m_RateMin = -1.000000 int m_nField = 18 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.650000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 98.000000 float m_flRadiusMin = 50.000000 string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { bool m_bLocalCoords = true float(3) m_vecDirectionBias = ( 0.000000, 0.000000, 0.180000 ) string m_Notes = "" float m_flHitBoxScale = 0.700000 } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMaxLength = 3.000000 string m_Notes = "" float m_flMinLength = 1.000000 } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { string m_Notes = "" int m_nFieldOutput = 2 float(3) m_vecOutputMin = ( 0.000000, 0.000000, 420.000000 ) float(3) m_vecOutputMax = ( 0.000000, 0.000000, 545.000000 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.250000 float m_fLifetimeMax = 2.000000 } C_INIT_RandomScalar C_INIT_RandomScalar_0 { int m_nFieldOutput = 18 float m_flMax = 2.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { int m_nFieldOutput = 20 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { float m_flAlphaRandExponent = 2.500000 int m_nAlphaMax = 30 int m_nAlphaMin = 5 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 80.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_h.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 60 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 76, 203, 121, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomTrailLength_0, &C_INIT_OffsetVectorToVector_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0, &C_INIT_CreateWithinSphere_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\smoke\\steam\\steam.vtex" float m_flAnimationRate = 1.000000 string m_Notes = "" bool m_bIgnoreDT = true int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.000000 float m_flBias = 0.750000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.600000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.400000 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { string m_Notes = "" float m_flLerpTime = 0.200000 int m_nFieldOutput = 16 float m_flOutput = 0.000000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 68.000000 float m_flRadiusMin = 40.000000 string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMaxLength = 1.100000 string m_Notes = "" float m_flMinLength = 0.750000 } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { string m_Notes = "" int m_nFieldOutput = 2 float(3) m_vecOutputMin = ( -20.000000, -20.000000, 390.000000 ) float(3) m_vecOutputMax = ( 20.000000, 20.000000, 250.000000 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.000000 float m_fLifetimeMax = 2.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fRadiusMin = 8.000000 float m_fRadiusMax = 10.000000 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 92.000000, 0.000000, 0.000000 ) float(3) m_OffsetMax = ( 96.000000, 0.000000, 0.000000 ) bool m_bLocalCoords = true } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 10.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_i.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 60 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 95.000000 int(4) m_ConstantColor = ( 54, 176, 97, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomSequence_0, &C_INIT_PositionOffset_0, &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\groundcracks_light_2.vtex" int m_nOrientationType = 2 float m_flAnimationRate = 0.500000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.750000 float m_flEndScale = 0.000000 bool m_bDisableOperator = true } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.400000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 1.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 1 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { bool m_bLocalCoords = true float(3) m_OffsetMax = ( 92.000000, 0.000000, 20.000000 ) float(3) m_OffsetMin = ( 92.000000, 0.000000, 20.000000 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.000000 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_beams_j.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 60 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 120.000000 int(4) m_ConstantColor = ( 79, 240, 136, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_PositionOffset_0, &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_glow_05.vtex" string m_Notes = "" float m_flAnimationRate = 0.500000 int m_nOrientationType = 2 } C_OP_Decay C_OP_Decay_0 { int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.400000 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { string m_Notes = "" float m_flLerpTime = 0.200000 int m_nFieldOutput = 16 float m_flOutput = 0.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.000000 float m_fLifetimeMax = 2.000000 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 82.000000, -3.000000, 20.000000 ) float(3) m_OffsetMax = ( 82.000000, -3.000000, 20.000000 ) bool m_bLocalCoords = true } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 54 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_LockToBone_0, &C_OP_Spin_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_c_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\smoke\\steam\\steam.vtex" float m_flAnimationRate = 0.400000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.500000 } C_OP_Noise C_OP_Noise_0 { bool m_bDisableOperator = true string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 130.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" float m_flEndTime = 9999.000000 float m_Rate = 150.000000 int m_nOpEndCapState = 1 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { string m_Notes = "" float m_flEndTime = 99999.000000 float m_Rate = -8.000000 int m_nField = 16 int m_nOpEndCapState = 1 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { bool m_bEaseInOut = false string m_Notes = "" int(4) m_ColorFade = ( 98, 221, 164, 255 ) float m_flFadeStartTime = 0.200000 } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" string m_HitboxSetName = "head" int m_nOpEndCapState = 0 } C_OP_Spin C_OP_Spin_0 { int m_nSpinRateDegrees = 2 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 2.000000 float m_fLifetimeMax = 3.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 0, 152, 96, 255 ) int(4) m_ColorMax = ( 1, 79, 47, 255 ) } C_INIT_CreationNoise C_INIT_CreationNoise_0 { string m_Notes = "" float m_flNoiseScale = 2.000000 float m_flOutputMin = 12.000000 float m_flOutputMax = 22.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMin = -84.000000 float m_flDegreesMax = 84.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { bool m_bLocalCoords = true float(3) m_vecDirectionBias = ( 4.000000, 0.000000, 0.000000 ) string m_Notes = "" float m_flHitBoxScale = 0.700000 string m_HitboxSetName = "head" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 1 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 2.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_c_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 34 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_LockToBone_0, &C_OP_InterpolateRadius_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_glow_04.vtex" string m_Notes = "" float m_flAnimationRate = 0.300000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 130.000000 bool m_bAdditive = true string m_Notes = "" bool m_bDisableOperator = true } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 float m_Rate = 150.000000 float m_flEndTime = 9999.000000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -8.000000 float m_flEndTime = 99999.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeStartTime = 0.200000 int(4) m_ColorFade = ( 0, 76, 41, 255 ) string m_Notes = "" bool m_bDisableOperator = true } C_OP_LockToBone C_OP_LockToBone_0 { string m_HitboxSetName = "head" string m_Notes = "" int m_nOpEndCapState = 0 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 3.000000 float m_fLifetimeMin = 2.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 3, 142, 85, 255 ) int(4) m_ColorMin = ( 0, 152, 96, 255 ) string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 22.000000 float m_flOutputMin = 12.000000 float m_flNoiseScale = 2.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 64.000000 float m_flDegreesMin = -64.000000 string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_HitboxSetName = "head" float m_flHitBoxScale = 0.700000 string m_Notes = "" float(3) m_vecDirectionBias = ( 4.000000, 0.000000, 0.000000 ) bool m_bLocalCoords = true } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 1 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 2.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_d.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 12 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_LockToBone_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\burst01.vtex" string m_Notes = "" bool m_bDisableOperator = true } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 13.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 3.000000 float m_flBias = 0.750000 float m_flStartScale = 0.250000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 float m_Rate = 150.000000 float m_flEndTime = 9999.000000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -8.000000 float m_flEndTime = 99999.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeStartTime = 0.200000 int(4) m_ColorFade = ( 0, 76, 41, 255 ) string m_Notes = "" } C_OP_LockToBone C_OP_LockToBone_0 { string m_HitboxSetName = "hands" string m_Notes = "" int m_nOpEndCapState = 0 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 3.000000 float m_fLifetimeMin = 2.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 0, 158, 93, 255 ) int(4) m_ColorMin = ( 0, 191, 121, 255 ) string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 12.000000 float m_flOutputMin = 8.000000 float m_flNoiseScale = 2.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_HitboxSetName = "hands" float m_flHitBoxScale = 0.800000 string m_Notes = "" bool m_bLocalCoords = true } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 40 int m_nAlphaMax = 80 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 5.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_e.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 120 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_LockToBone_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\burst01.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.500000 } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 13.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.250000 float m_flBias = 0.750000 float m_flEndScale = 3.000000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" float m_flEndTime = 9999.000000 float m_Rate = 150.000000 int m_nOpEndCapState = 1 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { string m_Notes = "" float m_flEndTime = 99999.000000 float m_Rate = -8.000000 int m_nField = 16 int m_nOpEndCapState = 1 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 0, 76, 41, 255 ) float m_flFadeStartTime = 0.200000 } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" int m_nOpEndCapState = 0 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 int m_nFieldOutput = 16 float m_flLerpTime = 0.200000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 2.000000 float m_fLifetimeMax = 3.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 0, 191, 121, 255 ) int(4) m_ColorMax = ( 0, 158, 93, 255 ) } C_INIT_CreationNoise C_INIT_CreationNoise_0 { string m_Notes = "" float m_flNoiseScale = 2.000000 float m_flOutputMin = 8.000000 float m_flOutputMax = 12.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMin = -4.000000 float m_flDegreesMax = 4.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { bool m_bLocalCoords = true string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 120 int m_nAlphaMin = 40 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 50.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_endcap.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 120 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 32.000000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0, &C_OP_OscillateVector_0, &C_OP_BasicMovement_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomRadius_0, &C_INIT_InitialVelocityNoise_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_explode.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\yellowflare2.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 13.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 4.000000 float m_flBias = 0.750000 float m_flEndScale = 0.000000 } C_OP_VectorNoise C_OP_VectorNoise_0 { bool m_bOffset = true bool m_bAdditive = true float(3) m_vecOutputMax = ( 128.000000, 128.000000, 128.000000 ) float(3) m_vecOutputMin = ( -128.000000, -128.000000, -128.000000 ) int m_nFieldOutput = 0 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_FrequencyMax = ( 2.000000, 2.000000, 2.000000 ) float(3) m_FrequencyMin = ( 0.200000, 0.200000, 0.200000 ) float(3) m_RateMax = ( 64.000000, 64.000000, 64.000000 ) float(3) m_RateMin = ( -64.000000, -64.000000, -64.000000 ) bool m_bOffset = true string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.500000 float m_fLifetimeMax = 0.750000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 80, 227, 173, 255 ) int(4) m_ColorMax = ( 120, 255, 199, 255 ) } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_Notes = "" float m_flHitBoxScale = 0.900000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 64.000000 float m_flRadiusMin = 32.000000 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 64.000000, 64.000000, 64.000000 ) float(3) m_vecOutputMin = ( -64.000000, -64.000000, -64.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_f.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 120 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 180 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_LockToBone_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_CreateOnModel_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\softglow.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 13.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { int m_nOpEndCapState = 0 float m_flEndScale = 3.000000 float m_flBias = 0.750000 float m_flStartScale = 0.250000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 float m_Rate = 200.000000 float m_flEndTime = 9999.000000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -2.000000 float m_flEndTime = 99999.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { bool m_bDisableOperator = true float m_flFadeStartTime = 0.200000 int(4) m_ColorFade = ( 0, 76, 41, 255 ) string m_Notes = "" } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" int m_nOpEndCapState = 0 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.500000 float m_fLifetimeMin = 1.250000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 0, 158, 93, 255 ) int(4) m_ColorMin = ( 0, 191, 121, 255 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { float m_flHitBoxScale = 0.900000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 50.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_g.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 220.000000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0, &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_LockToBone_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_CreateWithinSphere_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_i.vpcf" } ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { string m_Notes = "" float m_flAlphaScale = 18.000000 float m_flStartFalloff = 0.450000 int(4) m_ColorScale = ( 0, 158, 93, 255 ) string m_hTexture = "materials\\particle\\particle_glow_04.vtex" } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\particle_glow_04.vtex" bool m_bDisableOperator = true string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.500000 } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 13.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.750000 float m_flEndScale = 1.250000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" float m_flEndTime = 9999.000000 float m_Rate = 150.000000 int m_nOpEndCapState = 1 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { string m_Notes = "" float m_flEndTime = 99999.000000 float m_Rate = -8.000000 int m_nField = 16 int m_nOpEndCapState = 1 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 0, 76, 41, 255 ) float m_flFadeStartTime = 0.200000 bool m_bDisableOperator = true } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.500000 float m_fLifetimeMax = 1.500000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 0, 191, 121, 255 ) int(4) m_ColorMax = ( 0, 158, 93, 255 ) } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 280.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 280.000000 ) bool m_bLocalCoords = true } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 3.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_h.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 8 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_LockToBone_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_CreateOnModel_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { bool m_bDisableOperator = true string m_Notes = "" float m_flRadiusScale = 3.000000 float m_flAlphaScale = 5.000000 float m_flStartFalloff = 0.300000 int(4) m_ColorScale = ( 0, 158, 93, 255 ) string m_hTexture = "materials\\particle\\softglow.vtex" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.500000 } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 13.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.250000 float m_flBias = 0.750000 float m_flEndScale = 3.000000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" float m_flEndTime = 9999.000000 float m_Rate = 150.000000 int m_nOpEndCapState = 1 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { string m_Notes = "" float m_flEndTime = 99999.000000 float m_Rate = -8.000000 int m_nField = 16 int m_nOpEndCapState = 1 } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.250000 float m_fLifetimeMax = 1.500000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 0, 191, 121, 255 ) int(4) m_ColorMax = ( 0, 158, 93, 255 ) } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 64.000000, 0.000000, 50.000000 ) float(3) m_OffsetMax = ( 64.000000, 0.000000, 50.000000 ) bool m_bLocalCoords = true } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 5.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_ambient_i.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" float(3) m_BoundingBoxMax = ( 64.000000, 64.000000, 64.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 520.000000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0, &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_CreateWithinSphere_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { int(4) m_ColorScale = ( 0, 158, 93, 255 ) float m_flStartFalloff = 0.100000 string m_Notes = "" string m_hTexture = "materials\\particle\\particle_glow_04.vtex" } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\particle_glow_04.vtex" string m_Notes = "" bool m_bDisableOperator = true } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 13.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 1.250000 float m_flBias = 0.750000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 float m_Rate = 150.000000 float m_flEndTime = 9999.000000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -8.000000 float m_flEndTime = 99999.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { bool m_bDisableOperator = true float m_flFadeStartTime = 0.200000 int(4) m_ColorFade = ( 0, 76, 41, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.500000 float m_fLifetimeMin = 1.500000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 0, 158, 93, 255 ) int(4) m_ColorMin = ( 0, 191, 121, 255 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { bool m_bLocalCoords = true float(3) m_OffsetMax = ( 80.000000, 0.000000, 200.000000 ) float(3) m_OffsetMin = ( 80.000000, 0.000000, 200.000000 ) string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 3.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_explode.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 0 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "particles/units/heroes/hero_skeletonking/wraith_king_reincarnate_explode.vpcf" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ ] CParticleOperator*[] m_Operators = [ ] CParticleOperator*[] m_Initializers = [ ] CParticleOperator*[] m_Emitters = [ ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 32.000000 float m_flConstantLifespan = 0.650000 int(4) m_ConstantColor = ( 54, 245, 139, 255 ) float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_RemapParticleCountOnScalarEndCap_0, &C_OP_RemapParticleCountOnScalarEndCap_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_CreationNoise_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\beam_smoke_03.vtex" string m_Notes = "" float m_flTextureVScrollRate = -0.200000 float m_flTextureVWorldSize = 1428.571533 int m_nMaxTesselation = 2 int m_nMinTesselation = 2 } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { int(4) m_ColorScale = ( 54, 245, 139, 255 ) string m_Notes = "" float m_flRadiusScale = 3.500000 float m_flAlphaScale = 10.000000 float m_flStartFalloff = 0.500000 string m_hTexture = "materials\\particle\\beam_smoke_03.vtex" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.180000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.600000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { bool m_bDisableOperator = true string m_Notes = "" float m_flEndScale = 0.100000 } C_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_0 { string m_Notes = "" bool m_bBackwards = true int m_nInputMax = 10 int m_nFieldOutput = 16 } C_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_2 { string m_Notes = "" bool m_bBackwards = true int m_nInputMax = 25 bool m_bScaleCurrent = true } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { string m_Notes = "" int m_nFieldOutput = 7 float m_flOutputMax = 0.400000 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 24.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 48.000000 int(4) m_ConstantColor = ( 91, 241, 158, 15 ) float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_FadeInSimple_0, &C_OP_RemapParticleCountOnScalarEndCap_0, &C_OP_RemapParticleCountOnScalarEndCap_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 1.000000 string m_hTexture = "materials\\particle\\beam_plasma_06.vtex" string m_Notes = "" float m_flTextureVScrollRate = -0.170000 float m_flTextureVWorldSize = 250.000015 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.000000 string m_Notes = "" float m_flBias = 0.750000 } C_OP_PositionLock C_OP_PositionLock_0 { float m_flStartTime_max = -10.000000 float m_flStartTime_min = -10.000000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_0 { string m_Notes = "" bool m_bBackwards = true int m_nInputMax = 10 int m_nFieldOutput = 16 } C_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_2 { string m_Notes = "" bool m_bBackwards = true int m_nInputMax = 25 bool m_bScaleCurrent = true } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 32.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_throne_wraith_king_spirits.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 6 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( -30.000000, -30.000000, -30.000000 ) float(3) m_BoundingBoxMax = ( 30.000000, 30.000000, 30.000000 ) float m_flCullRadius = -1.000000 string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 8.000000 int(4) m_ConstantColor = ( 0, 248, 163, 255 ) int m_nConstantSequenceNumber1 = 1 float m_flMaxDrawDistance = 4000.000000 float m_flNoDrawTimeToGoToSleep = 0.100000 bool m_bShouldSort = false int m_nMinCPULevel = 1 float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_SetControlPointToCenter_0, &C_OP_VelocityMatchingForce_0, &C_OP_VectorNoise_0, &C_OP_BasicMovement_0, &C_OP_MaxVelocity_0, &C_OP_SetPerChildControlPoint_0, &C_OP_OscillateVector_0, &C_OP_EndCapTimedDecay_0, &C_OP_LerpEndCapScalar_0, &C_OP_MovementRotateParticleAroundAxis_0, &C_OP_SetControlPointOrientation_0, &C_OP_SetControlPointRotation_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomSequence_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_NormalOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0, &C_OP_TurbulenceForce_0, &C_OP_TwistAroundAxis_0, &C_OP_AttractToControlPoint_2, &C_OP_AttractToControlPoint_4, &C_OP_AttractToControlPoint_6, &C_OP_LocalAccelerationForce_0, &C_OP_AttractToControlPoint_8 ] CParticleOperator*[] m_Constraints = [ &C_OP_PlanarConstraint_0, &C_OP_ConstrainDistance_0 ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_spirit_trail.vpcf" } ] } C_OP_Decay C_OP_Decay_0 { int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_SetControlPointToCenter C_OP_SetControlPointToCenter_0 { int m_nCP1 = 2 float(3) m_vecCP1Pos = ( 0.000000, 0.000000, 32.000000 ) string m_Notes = "" } C_OP_VelocityMatchingForce C_OP_VelocityMatchingForce_0 { float m_flDirScale = 0.003313 float m_flSpdScale = 0.002500 string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { float(3) m_vecOutputMax = ( 410.000000, 410.000000, 410.000000 ) int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -410.000000, -410.000000, -410.000000 ) bool m_bAdditive = true string m_Notes = "" float m_fl4NoiseScale = 0.010000 bool m_bOffset = true } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 10.000000 ) float m_fDrag = 0.090000 string m_Notes = "" } C_OP_MaxVelocity C_OP_MaxVelocity_0 { bool m_bDisableOperator = true float m_flMaxVelocity = 1750.000000 string m_Notes = "" } C_OP_SetPerChildControlPoint C_OP_SetPerChildControlPoint_0 { string m_Notes = "" int m_nNumControlPoints = 6 } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_FrequencyMin = ( 0.250000, 0.250000, 0.250000 ) string m_Notes = "" bool m_bOffset = true float(3) m_RateMin = ( -100.000000, -100.000000, -100.000000 ) float(3) m_RateMax = ( 100.000000, 100.000000, 100.000000 ) float(3) m_FrequencyMax = ( 0.500000, 0.500000, 0.500000 ) bool m_bProportional = false float m_flEndTime_min = 99999998430674944.000000 float m_flEndTime_max = 99999998430674944.000000 } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" float m_flDecayTime = 0.250000 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { string m_Notes = "" float m_flLerpTime = 0.250000 float m_flOutput = 0.000000 } C_OP_MovementRotateParticleAroundAxis C_OP_MovementRotateParticleAroundAxis_0 { string m_Notes = "" float m_flRotRate = 32.000000 } C_OP_SetControlPointOrientation C_OP_SetControlPointOrientation_0 { string m_Notes = "" int m_nCP = 5 float(3) m_vecRotationB = ( 360.000000, 360.000000, 360.000000 ) bool m_bRandomize = true bool m_bUseWorldLocation = true bool m_bSetOnce = true } C_OP_SetControlPointRotation C_OP_SetControlPointRotation_0 { string m_Notes = "" float(3) m_vecRotAxis = ( -0.500000, 0.700000, 1.200000 ) float m_flRotRate = 87.000000 int m_nCP = 5 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMax = 448.000000 float(3) m_vecDistanceBias = ( 0.010000, 0.010000, 0.000000 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 8.000000 float m_fLifetimeMax = 22.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 5 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMin = -5.000000 float m_flDegreesMax = 5.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMin = ( -100.000000, -100.000000, 0.000000 ) float(3) m_vecOutputMax = ( 100.000000, 100.000000, 0.000000 ) string m_Notes = "" } C_INIT_NormalOffset C_INIT_NormalOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( -1.000000, -1.000000, -1.000000 ) float(3) m_OffsetMax = ( 1.000000, 1.000000, 1.000000 ) bool m_bNormalize = true } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 10.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 6 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { float m_fForceAmount = 25.000000 float m_fFalloffPower = -0.700000 float(3) m_vecComponentScale = ( 1.000000, 1.000000, 0.150000 ) string m_Notes = "" } C_OP_TurbulenceForce C_OP_TurbulenceForce_0 { float(3) m_vecNoiseAmount0 = ( 1450.000000, 1450.000000, 450.000000 ) float m_flNoiseCoordScale1 = 0.100000 float(3) m_vecNoiseAmount1 = ( -1510.000000, -1510.000000, -110.000000 ) float m_flNoiseCoordScale2 = 0.335000 float(3) m_vecNoiseAmount2 = ( 1100.000000, 1100.000000, 100.000000 ) float m_flNoiseCoordScale3 = 0.220000 float(3) m_vecNoiseAmount3 = ( -1300.000000, -1300.000000, -300.000000 ) string m_Notes = "" float m_flNoiseCoordScale0 = 0.155000 } C_OP_TwistAroundAxis C_OP_TwistAroundAxis_0 { float(3) m_TwistAxis = ( 0.100000, -0.115000, 1.000000 ) bool m_bLocalSpace = true float m_fForceAmount = -1350.000000 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_2 { bool m_bDisableOperator = true int m_nControlPointNumber = 2 float m_fFalloffPower = 0.500000 float m_fForceAmount = -500.000000 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_4 { int m_nControlPointNumber = 2 float m_fFalloffPower = -0.010000 float m_fForceAmount = -150.000000 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_6 { float m_flOpEndFadeInTime = 0.200000 float m_flOpStartFadeOutTime = 0.200000 float m_flOpEndFadeOutTime = 0.400000 float m_flOpFadeOscillatePeriod = 3.000000 string m_Notes = "" float m_fForceAmount = 50.000000 float m_fFalloffPower = -0.500000 float(3) m_vecComponentScale = ( 0.750000, 1.300000, 0.190000 ) int m_nScaleCP = 6 int m_nScaleCPField = 2 } C_OP_LocalAccelerationForce C_OP_LocalAccelerationForce_0 { string m_Notes = "" int m_nCP = 5 float(3) m_vecAccel = ( 250.000000, -100.000000, 50.000000 ) int m_nScaleCP = 6 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_8 { float m_flOpEndFadeOutTime = 0.700000 float m_flOpFadeOscillatePeriod = 8.000000 string m_Notes = "" float m_fForceAmount = 950.000000 float m_fFalloffPower = 0.000000 float(3) m_vecComponentScale = ( 1.000000, 1.000000, 0.000000 ) int m_nScaleCP = 6 int m_nScaleCPField = 1 } C_OP_PlanarConstraint C_OP_PlanarConstraint_0 { bool m_bGlobalNormal = true float(3) m_PointOnPlane = ( 0.000000, 0.000000, 300.000000 ) string m_Notes = "" } C_OP_ConstrainDistance C_OP_ConstrainDistance_0 { float m_fMinDistance = 190.000000 float(3) m_CenterOffset = ( 0.000000, 0.000000, 400.000000 ) float m_fMaxDistance = 360.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 110.000000 int(4) m_ConstantColor = ( 50, 239, 134, 255 ) int m_nConstantSequenceNumber = 4 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_SetChildControlPoints_0, &C_OP_SetControlPointOrientation_0, &C_OP_StopAfterCPDuration_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ &C_OP_ConstrainDistanceToPath_0 ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_skull.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_i.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_f.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_e.vpcf" }, ParticleChildrenInfo_t { bool m_bEndCap = true string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_h.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_g.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_sphere_glow.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_d.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_detail.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_sphere_glow_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_warmup.vpcf" } ] } C_OP_RenderTrails C_OP_RenderTrails_0 { float m_flSelfIllumAmount = 2.000000 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" float m_flMinLength = 64.000000 string m_Notes = "" float m_flLengthFadeInTime = 0.100000 float m_flMaxLength = 100.000000 } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { string m_Notes = "" int(4) m_ColorScale = ( 50, 239, 174, 255 ) float m_flStartFalloff = 0.100000 float m_flAlphaScale = 6.000000 float m_flRadiusScale = 3.000000 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_SetChildControlPoints C_OP_SetChildControlPoints_0 { string m_Notes = "" bool m_bSetOrientation = true int m_nFirstControlPoint = 3 } C_OP_SetControlPointOrientation C_OP_SetControlPointOrientation_0 { string m_Notes = "" float(3) m_vecRotation = ( -90.000000, 0.000000, 0.000000 ) float(3) m_vecRotationB = ( -90.000000, 0.000000, 0.000000 ) bool m_bUseWorldLocation = true } C_OP_StopAfterCPDuration C_OP_StopAfterCPDuration_0 { string m_Notes = "" float m_flDuration = 1.250000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } C_OP_ConstrainDistanceToPath C_OP_ConstrainDistanceToPath_0 { string m_Notes = "" float m_flMaxDistance0 = 0.000000 float m_flTravelTime = 1.250000 CPathParameters m_PathParameters = CPathParameters { float m_flBulge = 0.500000 int m_nEndControlPointNumber = 1 int m_nBulgeControl = 2 } } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_ember.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0, &C_OP_VectorNoise_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0, &C_OP_AttractToControlPoint_2 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\yellowflare.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) float m_fDrag = 0.090000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.750000 float m_flEndScale = 0.500000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.200000 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 ) float(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 ) bool m_bAdditive = true } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 12, 50, 38, 255 ) } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 33, 255, 122, 255 ) int(4) m_ColorMax = ( 50, 239, 174, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.750000 float m_fLifetimeMax = 1.500000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 3.000000 float m_flRadiusMax = 7.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 200 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_fSpeedMax = 350.000000 float m_fSpeedMin = 100.000000 float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 ) float m_fRadiusMax = 16.000000 } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScaleLoc = 0.250000 float(3) m_vecOutputMin = ( -200.000000, -400.000000, -400.000000 ) float(3) m_vecOutputMax = ( 600.000000, 400.000000, 400.000000 ) bool m_bLocalSpace = true } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 5 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 500.000000 float m_flEmissionDuration = 0.400000 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_flOpEndFadeOutTime = 0.200000 float m_fFalloffPower = 0.000000 float m_fForceAmount = -2000.000000 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_2 { string m_Notes = "" float m_fForceAmount = -4000.000000 float m_fFalloffPower = 0.100000 float m_flOpEndFadeOutTime = 0.200000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_ember_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 0, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0, &C_OP_AttractToControlPoint_2 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.125000 float(3) m_Gravity = ( 0.000000, 0.000000, -255.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.000000 float m_flBias = 0.250000 string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { bool m_bAdditive = true float(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 ) float(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.300003 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 12, 50, 38, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.500000 float m_fLifetimeMin = 0.750000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 7.000000 float m_flRadiusMin = 3.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.250000 ) float m_fRadiusMax = 16.000000 float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 ) float m_fSpeedMin = 600.000000 float m_fSpeedMax = 950.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 400.000000, 400.000000, 400.000000 ) float(3) m_vecOutputMin = ( -400.000000, -400.000000, -400.000000 ) float m_flNoiseScaleLoc = 0.250000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 63 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { bool m_bDisableOperator = true float m_fForceAmount = -2000.000000 float m_fFalloffPower = 0.000000 float m_flOpEndFadeOutTime = 0.200000 int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_2 { bool m_bDisableOperator = true float m_flOpEndFadeOutTime = 0.200000 float m_fFalloffPower = 0.100000 float m_fForceAmount = -4000.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 50, 239, 174, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeAndKill_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_ember_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_d.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_e.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_light.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_f.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_ember.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 float m_flStartFadeSize = 0.200000 float m_flEndFadeSize = 0.250000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\smoke\\maya_wispy\\wispy_v2.vtex" string m_Notes = "" float m_flAnimationRate = 2.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) } C_OP_FadeAndKill C_OP_FadeAndKill_0 { string m_Notes = "" float m_flEndFadeInTime = 0.150000 float m_flStartAlpha = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 3.000000 float m_flBias = 0.700000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.400000 float m_fLifetimeMin = 0.400000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 1 float m_fSpeedMax = 100.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( -230.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( -240.000000, 0.000000, 0.000000 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 18.000000 float m_flRadiusMax = 22.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 3 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 255, 255, 155 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flStartFadeSize = 0.400000 float m_flEndFadeSize = 0.650000 string m_hTexture = "materials\\particle\\smoke3\\smoke3.vtex" string m_Notes = "" float m_flAnimationRate = 2.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 100.000000 ) float m_fDrag = 0.050000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.700000 float m_flEndScale = 3.000000 float m_flStartScale = 0.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 1.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( -240.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( -230.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 100.000000 int m_nControlPointNumber = 1 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 72.000000 float m_flRadiusMin = 44.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 36, 14, 0, 255 ) int(4) m_ColorMax = ( 14, 0, 0, 255 ) int m_nFieldOutput = 22 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 8 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 4 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 86, 251, 152, 225 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" float m_flAnimationRate = 2.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) float m_fDrag = 0.100000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.800000 float m_flEndScale = 4.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.200000 float m_fLifetimeMax = 0.200000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 100.000000 int m_nControlPointNumber = 1 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 80.000000 float m_flRadiusMin = 80.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 3 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_d.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 200, 0, 0, 175 ) int m_nConstantSequenceNumber = 4 CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomTrailLength_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { float m_flSelfIllumAmount = 2.000000 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" string m_Notes = "" float m_flLengthFadeInTime = 0.200000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.150000 float(3) m_Gravity = ( 0.000000, 0.000000, -300.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.200000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 93, 20, 0, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.100000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMin = ( 140.000000, 0.000000, 0.000000 ) float m_fSpeedMin = 500.000000 int m_nControlPointNumber = 1 float m_fSpeedMax = 800.000000 float(3) m_LocalCoordinateSystemSpeedMax = ( -140.000000, 0.000000, 0.000000 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 8.000000 float m_flRadiusMax = 12.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { string m_Notes = "" float m_flMaxLength = 0.200000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 8, 192, 190, 255 ) int(4) m_ColorMax = ( 94, 255, 208, 255 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 256 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_e.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 50, 239, 174, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 float m_flStartFadeSize = 0.200000 float m_flEndFadeSize = 0.250000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\smoke\\maya_wispy\\wispy_v2.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 4.000000 float m_flBias = 0.800000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.750000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 1 float m_fSpeedMax = 400.000000 float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 30.000000 float m_flRadiusMax = 40.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 4 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_f.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 40, 177, 108, 245 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0, &C_INIT_RandomRotationSpeed_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 int m_bAdditive = 1 float m_flZoomRate1 = 4.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true string m_hTexture = "materials\\particle\\smoke3\\smoke3b.vtex" string m_Notes = "" float m_flAnimationRate = 1.250000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) float m_fDrag = 0.100000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.680000 float m_flEndScale = 5.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.800000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" float m_flFadeEndTime = 0.750000 float m_flFadeStartTime = 0.250000 int(4) m_ColorFade = ( 42, 105, 73, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.000000 float m_fLifetimeMax = 1.500000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 400.000000 int m_nControlPointNumber = 1 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 40.000000 float m_flRadiusMin = 30.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 8 } C_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0 { string m_Notes = "" float m_flDegreesMax = 50.000000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 4 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_explosion_light.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 120.000000 int(4) m_ConstantColor = ( 95, 251, 161, 225 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0, &C_OP_RenderScreenShake_0, &C_OP_RenderScreenShake_2 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { string m_Notes = "" float m_flAlphaScale = 6.000000 float m_flStartFalloff = 0.100000 int(4) m_ColorScale = ( 32, 215, 131, 255 ) string m_hTexture = "materials\\particle\\fire_particle_2\\fire_particle_2.vtex" } C_OP_RenderScreenShake C_OP_RenderScreenShake_0 { string m_Notes = "" int m_nFilterCP = 9 float m_flAmplitudeScale = 12.000000 float m_flFrequencyScale = 3.000000 float m_flRadiusScale = 2000.000000 float m_flDurationScale = 0.350000 } C_OP_RenderScreenShake C_OP_RenderScreenShake_2 { float m_flDurationScale = 0.350000 float m_flRadiusScale = 2000.000000 float m_flFrequencyScale = 3.000000 float m_flAmplitudeScale = 12.000000 int m_nFilterCP = 1 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 ) float m_fDrag = 0.100000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.800000 float m_flEndScale = 5.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 1 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 44, 248, 149, 155 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0, &C_INIT_VelocityRandom_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch_smoke.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 int m_bAdditive = 1 float m_flZoomRate1 = 4.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true string m_hTexture = "materials\\particle\\smoke3\\smoke3b.vtex" string m_Notes = "" float m_flAnimationRate = 2.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 100.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.000000 float m_flBias = 0.700000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 63, 38, 38, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.400000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fSpeedMax = 100.000000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 44.000000 float m_flRadiusMax = 72.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 8 } C_INIT_VelocityRandom C_INIT_VelocityRandom_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( 230.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 200.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 3 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 4 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 146, 255, 195, 215 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" float m_flAnimationRate = 2.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 4.000000 float m_flBias = 0.800000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.200000 float m_fLifetimeMin = 0.200000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fSpeedMax = 100.000000 float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 50.000000 float m_flRadiusMax = 50.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 3 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_launch_smoke.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 int m_nInitialParticles = 2 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 15 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 int m_bAdditive = 1 float m_flZoomRate1 = 4.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true string m_hTexture = "materials\\particle\\smoke3\\smoke3b.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 60.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.900000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 130.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.500000 float m_flBias = 0.350000 float m_flEndScale = 2.000000 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" int m_nControlPointNumber = 9 float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 float m_flEndTime_min = 0.200000 float m_flEndTime_max = 0.200000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 17, 169, 103, 255 ) string m_Notes = "" float m_flFadeEndTime = 0.500000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.500000 float m_fLifetimeMax = 2.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 0, 255, 126, 255 ) int(4) m_ColorMax = ( 0, 255, 180, 255 ) } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fRadiusMax = 1.000000 int m_nControlPointNumber = 9 float m_fSpeedMax = 35.000000 } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" bool m_bLocalSpace = true float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) } C_INIT_CreationNoise C_INIT_CreationNoise_0 { string m_Notes = "" float m_flNoiseScale = 2.000000 float m_flOutputMin = 32.000000 float m_flOutputMax = 48.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMin = -4.000000 float m_flDegreesMax = 4.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 8 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 38.000000 float m_flOpStartFadeOutTime = 0.500000 float m_flOpEndFadeOutTime = 2.000000 float m_flEmissionDuration = 2.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_skull.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 1 string m_pszSnapshotName = "" string m_hLowViolenceDef = "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_skull_lv.vpcf" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 2.000000 float m_flConstantLifespan = 0.250000 int(4) m_ConstantColor = ( 87, 187, 143, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Orient2DRelToCP_0, &C_OP_EndCapTimedDecay_0, &C_OP_SetToCP_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomSecondSequence_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderModels C_OP_RenderModels_0 { string m_EconSlotName = "" string m_Notes = "" bool m_bOrientZ = true string m_ActivityName = "" string m_hOverrideMaterial = "" float m_flAnimationRate = 0.000000 int m_nManualFrameField = 18 ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/heroes/necrolyte/necrolyte_skull.vmdl" } ] bool m_bAnimated = true } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0 { string m_Notes = "" int m_nFieldOutput = 12 float m_flRotOffset = 270.000000 int m_nCP = 1 } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" } C_OP_SetToCP C_OP_SetToCP_0 { string m_Notes = "" int m_nControlPointNumber = 3 float(3) m_vecOffset = ( -2.000000, 0.000000, -8.000000 ) bool m_bOffsetLocal = true } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0 { string m_Notes = "" int m_nSequenceMin = 2 int m_nSequenceMax = 2 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" float m_flDegrees = -10.000000 float m_flDegreesMin = -10.000000 float m_flDegreesMax = -10.000000 int m_nFieldOutput = 20 bool m_bRandomlyFlipDirection = false } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_sphere_glow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 8 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 250.000000 int(4) m_ConstantColor = ( 55, 255, 182, 100 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_PositionLock_0, &C_OP_RampScalarLinear_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" float m_flAnimationRate = 2.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.125000 } C_OP_PositionLock C_OP_PositionLock_0 { float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 string m_Notes = "" int m_nControlPointNumber = 3 } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { string m_Notes = "" float m_RateMax = 5.000000 float m_RateMin = -5.000000 int m_nField = 4 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 0.400000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 9.000000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_sphere_glow_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 8 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 250.000000 float m_flConstantLifespan = 0.250000 int(4) m_ConstantColor = ( 55, 255, 182, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_PositionLock_0, &C_OP_RampScalarLinear_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { int m_nField = 4 float m_RateMin = -5.000000 float m_RateMax = 5.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 2.000000 float m_flEndScale = 0.000000 float m_flBias = 0.750000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 256 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 60 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_Noise_2, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomColor_2, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RemapParticleCountToScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 float m_flStartFadeSize = 0.575000 float m_flEndFadeSize = 0.650000 float m_flMaxSize = 0.750000 string m_hTexture = "materials\\particle\\water_splash\\water_splash.vtex" string m_Notes = "" float m_flAnimationRate = 1.500000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 130.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 } C_OP_Noise C_OP_Noise_2 { string m_Notes = "" float m_fl4NoiseScale = 0.001100 int m_nFieldOutput = 12 float m_flOutputMax = 90.000000 bool m_bAdditive = true } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndTime = 0.140000 float m_flStartScale = 0.250000 float m_flBias = 0.750000 float m_flEndScale = 2.000000 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" float m_flEndTime_max = 0.150000 float m_flEndTime_min = 0.130000 float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 int m_nControlPointNumber = 3 float m_flJumpThreshold = 1512.000000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int m_nFieldOutput = 22 float m_flFadeStartTime = 0.500000 int(4) m_ColorFade = ( 0, 0, 0, 255 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { int m_nFieldOutput = 23 float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.450000 float m_fLifetimeMax = 0.750000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 222, 255, 244, 255 ) int(4) m_ColorMax = ( 0, 178, 134, 255 ) } C_INIT_RandomColor C_INIT_RandomColor_2 { string m_Notes = "" bool m_bRunForParentApplyKillList = false int(4) m_ColorMin = ( 4, 28, 18, 255 ) int(4) m_ColorMax = ( 6, 47, 40, 255 ) int m_nFieldOutput = 22 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 64.000000 float m_fRadiusMax = 1.000000 int m_nControlPointNumber = 3 } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" bool m_bLocalSpace = true float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) } C_INIT_CreationNoise C_INIT_CreationNoise_0 { string m_Notes = "" float m_flNoiseScale = 2.000000 float m_flOutputMin = 14.000000 float m_flOutputMax = 18.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMin = -4.000000 float m_flDegreesMax = 4.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { string m_Notes = "" bool m_bActiveRange = true bool m_bScaleInitialRange = true int m_nInputMax = 4 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 328.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_d.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 40.000000 int(4) m_ConstantColor = ( 0, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_DistanceToCP_0, &C_OP_VectorNoise_0, &C_OP_FadeInSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 14.000000 string m_hTexture = "materials\\particle\\beam_plasma_03.vtex" string m_Notes = "" float m_flTextureVScrollRate = -1.500000 float m_flTextureVWorldSize = 249.999985 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) float m_fDrag = 0.050000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 2.000000 float m_flEndScale = 0.000000 float m_flBias = 0.700000 } C_OP_DistanceToCP C_OP_DistanceToCP_0 { string m_Notes = "" int m_nOpEndCapState = 1 float m_flInputMin = 64.000000 float m_flInputMax = 256.000000 int m_nFieldOutput = 16 int m_nStartCP = 3 } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" bool m_bAdditive = true float(3) m_vecOutputMax = ( 1.000000, 1.000000, 0.000000 ) float(3) m_vecOutputMin = ( -1.000000, -1.000000, 0.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.050000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 1.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 50.000000 float m_flRadiusMin = -50.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 40.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_detail.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_Noise_2, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_detail_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\smoke\\static\\static_smoke.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.400000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.125000 } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 130.000000 bool m_bAdditive = true } C_OP_Noise C_OP_Noise_2 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 90.000000 int m_nFieldOutput = 12 float m_fl4NoiseScale = 0.001100 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 4.000000 float m_flBias = 0.750000 float m_flStartScale = 0.250000 float m_flEndTime = 0.140000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" int m_nOpEndCapState = 1 float m_Rate = 100.000000 float m_flEndTime = 9999.000000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { string m_Notes = "" int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -2.000000 float m_flEndTime = 99999.000000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 57, 185, 135, 255 ) } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 float m_flEndTime_min = 0.100000 float m_flEndTime_max = 0.100000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.180000 float m_fLifetimeMin = 0.150000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 50, 255, 156, 255 ) int(4) m_ColorMin = ( 222, 255, 245, 255 ) } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_fRadiusMax = 1.000000 float m_fSpeedMax = 64.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) bool m_bLocalSpace = true } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 15.000000 float m_flRadiusMin = 9.000000 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 256.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_detail_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_Noise_2, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_ColorInterpolate_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRadius_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 int m_nOrientationType = 3 float m_flMaxSize = 0.400000 string m_hTexture = "materials\\particle\\lava_blasts\\lava_glow.vtex" float m_flAnimationRate = 1.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.900000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { bool m_bAdditive = true float m_flOutputMax = 130.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 string m_Notes = "" } C_OP_Noise C_OP_Noise_2 { float m_fl4NoiseScale = 0.001100 int m_nFieldOutput = 12 float m_flOutputMax = 90.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.750000 float m_flEndScale = 4.000000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 9999.000000 float m_Rate = 100.000000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { float m_flEndTime = 99999.000000 float m_Rate = -2.000000 int m_nField = 16 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 0, 255, 108, 255 ) string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flEndTime_max = 0.100000 float m_flEndTime_min = 0.100000 float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.150000 float m_fLifetimeMax = 0.180000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 222, 255, 245, 255 ) int(4) m_ColorMax = ( 50, 255, 156, 255 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 64.000000 float m_fRadiusMax = 1.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { bool m_bLocalSpace = true float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMin = -4.000000 float m_flDegreesMax = 4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 6.000000 float m_flRadiusMax = 12.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 3 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 256.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_e.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 32.000000 int(4) m_ConstantColor = ( 12, 245, 116, 125 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0, &C_OP_DistanceToCP_0, &C_OP_FadeInSimple_0, &C_OP_VectorNoise_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RemapParticleCountToScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\bendibeam2.vtex" string m_Notes = "" float m_flTextureVScrollRate = -0.100000 float m_flTextureVWorldSize = 806.451599 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 0, 88, 46, 255 ) float m_flFadeEndTime = 0.600000 bool m_bEaseInOut = false } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.800000 float m_flEndScale = 0.000000 float m_flStartScale = 3.000000 } C_OP_DistanceToCP C_OP_DistanceToCP_0 { string m_Notes = "" int m_nStartCP = 3 int m_nFieldOutput = 16 float m_flInputMax = 256.000000 float m_flInputMin = 64.000000 int m_nOpEndCapState = 1 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.125000 } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" bool m_bAdditive = true float(3) m_vecOutputMax = ( 1.000000, 1.000000, 0.000000 ) float(3) m_vecOutputMin = ( -1.000000, -1.000000, 0.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.050000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 0.400000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { string m_Notes = "" float m_flOutputMax = 48.000000 int m_nInputMax = 2 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 40.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_f.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 int m_nInitialParticles = 2 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 20 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 int m_bAdditive = 1 float m_flZoomRate1 = 4.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true string m_hTexture = "materials\\particle\\smoke3\\smoke3b.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 30.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.900000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 130.000000 bool m_bAdditive = true } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 2.000000 float m_flBias = 0.750000 float m_flStartScale = 0.250000 float m_flEndTime = 0.140000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" int m_nOpEndCapState = 1 float m_Rate = 150.000000 float m_flEndTime = 9999.000000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { string m_Notes = "" int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -1.000000 float m_flEndTime = 99999.000000 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" float m_flEndTime_max = 0.200000 float m_flEndTime_min = 0.200000 float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 int m_nControlPointNumber = 3 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 152, 240, 214, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 1.500000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 50, 239, 174, 255 ) int(4) m_ColorMin = ( 50, 239, 174, 255 ) } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_fRadiusMax = 1.000000 } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) bool m_bLocalSpace = true } C_INIT_CreationNoise C_INIT_CreationNoise_0 { string m_Notes = "" float m_flOutputMax = 16.000000 float m_flOutputMin = 12.000000 float m_flNoiseScale = 2.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 8 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 38.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_g.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 512 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_ColorInterpolate_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomColor_2, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RemapParticleCountToScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\yellowflare.vtex" float m_flAnimationRate = 1.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 130.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 0, 0, 0, 255 ) float m_flFadeStartTime = 0.500000 int m_nFieldOutput = 22 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 int m_nFieldOutput = 23 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.250000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { bool m_bAdditive = true float(3) m_vecOutputMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_vecOutputMin = ( -4.000000, -4.000000, -4.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.500000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 0.450000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 0, 178, 134, 255 ) int(4) m_ColorMin = ( 222, 255, 244, 255 ) string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_2 { int m_nFieldOutput = 22 int(4) m_ColorMax = ( 6, 47, 40, 255 ) int(4) m_ColorMin = ( 4, 28, 18, 255 ) bool m_bRunForParentApplyKillList = false string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fRadiusMax = 16.000000 float m_fSpeedMax = 64.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) bool m_bLocalSpace = true string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 6.000000 float m_flOutputMin = 2.000000 float m_flNoiseScale = 2.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { int m_nInputMax = 4 bool m_bScaleInitialRange = true bool m_bActiveRange = true string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 256.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_h.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 512 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 0, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_Noise_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" string m_Notes = "" float m_flAnimationRate = 1.500000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { string m_Notes = "" bool m_bAdditive = true float m_flOutputMax = 130.000000 int m_nFieldOutput = 4 float m_fl4NoiseScale = 0.001310 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flBias = 0.250000 } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.500000 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -4.000000, -4.000000, -4.000000 ) float(3) m_vecOutputMax = ( 4.000000, 4.000000, 4.000000 ) bool m_bAdditive = true } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.450000 float m_fLifetimeMax = 2.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 64.000000 float m_fRadiusMax = 16.000000 int m_nControlPointNumber = 3 } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" bool m_bLocalSpace = true float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) } C_INIT_CreationNoise C_INIT_CreationNoise_0 { string m_Notes = "" float m_flNoiseScale = 2.000000 float m_flOutputMin = 2.000000 float m_flOutputMax = 4.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" float m_flDegreesMin = -4.000000 float m_flDegreesMax = 4.000000 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { string m_Notes = "" bool m_bActiveRange = true bool m_bScaleInitialRange = true int m_nInputMax = 4 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 63 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 256.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_trail_i.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 512 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 20.000000 int(4) m_ConstantColor = ( 255, 255, 255, 155 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomSequence_0, &C_INIT_Orient2DRelToCP_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\smoke\\steam\\steam.vtex" float m_flAnimationRate = 1.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) string m_Notes = "" float m_fDrag = 0.100000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 float m_flBias = 0.350000 string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { bool m_bOffset = true bool m_bAdditive = true float(3) m_vecOutputMax = ( 55.000000, 55.000000, 55.000000 ) float(3) m_vecOutputMin = ( -55.000000, -55.000000, -55.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.500000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 0.250000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 0, 0, 0, 255 ) int(4) m_ColorMin = ( 0, 43, 29, 255 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fRadiusMax = 2.000000 float m_fSpeedMax = 320.000000 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) bool m_bLocalSpace = true string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 1 string m_Notes = "" } C_INIT_Orient2DRelToCP C_INIT_Orient2DRelToCP_0 { int m_nCP = 3 float m_flRotOffset = 180.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 256.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_warmup.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 160 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 60 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_Noise_2, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomColor_2, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone_warmup_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 float m_flStartFadeSize = 0.575000 float m_flEndFadeSize = 0.650000 float m_flMaxSize = 0.750000 string m_hTexture = "materials\\particle\\water_splash\\water_splash.vtex" float m_flAnimationRate = 1.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 130.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_Noise C_OP_Noise_2 { bool m_bAdditive = true float m_flOutputMax = 90.000000 int m_nFieldOutput = 12 float m_fl4NoiseScale = 0.001100 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 float m_flBias = 0.750000 float m_flStartScale = 0.250000 float m_flEndTime = 0.140000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 0, 0, 0, 255 ) float m_flFadeStartTime = 0.500000 int m_nFieldOutput = 22 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 int m_nFieldOutput = 23 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.750000 float m_fLifetimeMin = 0.450000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 0, 178, 134, 255 ) int(4) m_ColorMin = ( 222, 255, 244, 255 ) string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_2 { int m_nFieldOutput = 22 int(4) m_ColorMax = ( 6, 47, 40, 255 ) int(4) m_ColorMin = ( 4, 28, 18, 255 ) bool m_bRunForParentApplyKillList = false string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 ) int m_nControlPointNumber = 1 float m_fRadiusMax = 32.000000 float m_fSpeedMax = 64.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 50.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 40.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 24.000000, 24.000000, 24.000000 ) float(3) m_vecOutputMin = ( -24.000000, -24.000000, -24.000000 ) bool m_bLocalSpace = true string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 32.000000 float m_flOutputMin = 24.000000 float m_flNoiseScale = 2.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { int m_nInputMax = 4 bool m_bScaleInitialRange = true bool m_bActiveRange = true string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMax = ( 0.000000, 0.000000, 128.000000 ) } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 128.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/frostivus_wraithking_tombstone_warmup_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 8 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 350.000000 int(4) m_ConstantColor = ( 55, 255, 182, 100 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinear_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.125000 string m_Notes = "" } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { int m_nField = 4 float m_RateMin = -5.000000 float m_RateMax = 5.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.400000 float m_fLifetimeMin = 0.400000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 1 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 128.000000 ) string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 24.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_explode_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_OscillateVector_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RingWave_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 4.000000 string m_hTexture = "materials\\particle\\impact\\fleks4.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.300000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 ) float(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.300000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_2 { float(3) m_RateMin = ( -15.000000, -15.000000, -15.000000 ) float(3) m_RateMax = ( 15.000000, 15.000000, 15.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) bool m_bProportional = false string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.050000 float m_fLifetimeMax = 0.800000 string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { bool m_bEvenDistribution = true float m_flInitialSpeedMax = 1200.000000 float m_flInitialSpeedMin = 200.000000 float m_flInitialRadius = 96.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 8.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 63 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_explode_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 10 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 296.000000 int m_nConstantSequenceNumber = 5 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue2.vtex" string m_Notes = "" } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { float m_flStartFalloff = 0.650000 int(4) m_ColorScale = ( 97, 136, 224, 255 ) string m_Notes = "" string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue2.vtex" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 ) float(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.200000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 float m_flBias = 0.750000 float m_flStartScale = 0.250000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.100000 float m_fLifetimeMax = 0.100000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 2 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_final.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( -510.000000, -510.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 510.000000, 510.000000, 10.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 200.000000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_SetControlPointsToParticle_0, &C_OP_MovementPlaceOnGround_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_NormalAlignToCP_0, &C_INIT_VelocityFromCP_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_final_grid_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_smoke.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_ice_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_main.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_ice.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_initial_explode.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_glow_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_smoke_glow.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_final_grid.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_glow.vpcf" } ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { int(4) m_ColorScale = ( 11, 75, 219, 255 ) float m_flStartFalloff = 0.650000 float m_flAlphaScale = 3.000000 float m_flRadiusScale = 2.250000 string m_Notes = "" string m_hTexture = "materials\\models\\heroes\\mirana\\javelin_color.vtex" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0 { int m_nFirstControlPoint = 3 string m_Notes = "" } C_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0 { int m_nRefCP1 = 3 string m_CollisionGroupName = "DEBRIS" float m_flTraceOffset = 256.000000 float m_flMaxTraceLength = 1024.000000 bool m_bIncludeWater = true float m_flOffset = 120.000000 float m_flTolerance = 96.000000 int m_nLerpCP = 3 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.200000 float m_fLifetimeMax = 0.200000 string m_Notes = "" } C_INIT_NormalAlignToCP C_INIT_NormalAlignToCP_0 { string m_Notes = "" } C_INIT_VelocityFromCP C_INIT_VelocityFromCP_0 { int m_nControlPoint = 1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_final_grid.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 9.000000 int(4) m_ConstantColor = ( 255, 182, 40, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_PositionLock_0, &C_OP_EndCapTimedDecay_0, &C_OP_LerpEndCapScalar_0, &C_OP_BasicMovement_0, &C_OP_MovementRotateParticleAroundAxis_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateSpiralSphere_0, &C_INIT_RemapInitialDirectionToCPToVector_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { bool m_bMod2X = true int m_nOrientationType = 3 string m_hTexture = "materials\\particle\\particle_modulate_04.vtex" string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { float m_flDecayTime = 1.000000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_MovementRotateParticleAroundAxis C_OP_MovementRotateParticleAroundAxis_0 { int m_nCP = 3 float(3) m_vecRotAxis = ( 1.000000, 1.000000, 1.000000 ) float m_flRotRate = -180.000000 string m_Notes = "" } C_INIT_CreateSpiralSphere C_INIT_CreateSpiralSphere_0 { int m_nControlPointNumber = 3 float m_flInitialRadius = 64.000000 int m_nDensity = 1 bool m_bUseParticleCount = true string m_Notes = "" } C_INIT_RemapInitialDirectionToCPToVector C_INIT_RemapInitialDirectionToCPToVector_0 { float m_flScale = 3.000000 int m_nCP = 3 int m_nFieldOutput = 21 bool m_bNormalize = true string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 128 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { int m_nOpEndCapState = 1 float m_fForceAmount = -800.000000 float m_fFalloffPower = 0.000000 int m_nControlPointNumber = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_final_grid_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 19.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_PositionLock_0, &C_OP_EndCapTimedDecay_0, &C_OP_LerpEndCapScalar_0, &C_OP_BasicMovement_0, &C_OP_MovementRotateParticleAroundAxis_0, &C_OP_RampScalarLinear_0, &C_OP_BasicMovement_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateSpiralSphere_0, &C_INIT_RemapInitialDirectionToCPToVector_0, &C_INIT_RandomSequence_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0, &C_OP_RandomForce_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 string m_hTexture = "materials\\particle\\crystal\\crystal.vtex" string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { float m_flDecayTime = 1.000000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { int m_nOpEndCapState = 0 string m_Notes = "" } C_OP_MovementRotateParticleAroundAxis C_OP_MovementRotateParticleAroundAxis_0 { int m_nCP = 3 float m_flRotRate = -180.000000 float(3) m_vecRotAxis = ( 1.000000, -1.000000, 1.000000 ) int m_nOpEndCapState = 0 string m_Notes = "" } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { float m_flEndTime_max = 10000000000.000000 float m_flEndTime_min = 10000000000.000000 float m_RateMax = 4.000000 float m_RateMin = -4.000000 int m_nField = 4 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_2 { int m_nOpEndCapState = 1 float(3) m_Gravity = ( 0.000000, 0.000000, -1500.000000 ) float m_fDrag = 0.320000 string m_Notes = "" } C_INIT_CreateSpiralSphere C_INIT_CreateSpiralSphere_0 { bool m_bUseParticleCount = true int m_nDensity = 1 float m_flInitialRadius = 68.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RemapInitialDirectionToCPToVector C_INIT_RemapInitialDirectionToCPToVector_0 { bool m_bNormalize = true int m_nFieldOutput = 21 int m_nCP = 3 float m_flScale = 3.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 12 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 29.000000 float m_flRadiusMin = 19.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 128 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { int m_nControlPointNumber = 3 float m_fFalloffPower = 0.550000 float m_fForceAmount = -149800.000000 int m_nOpEndCapState = 1 float(3) m_vecComponentScale = ( 1.000000, 1.000000, 0.000000 ) string m_Notes = "" } C_OP_RandomForce C_OP_RandomForce_0 { int m_nOpEndCapState = 1 float(3) m_MinForce = ( -5000.000000, -5000.000000, -5000.000000 ) float(3) m_MaxForce = ( 5000.000000, 5000.000000, 5000.000000 ) string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_glow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 56.000000 int m_nConstantSequenceNumber = 5 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomColor_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\yellowflare2.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 ) float(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.800000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 94, 62, 199, 255 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.750000 float m_flStartScale = 2.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.150000 float m_fLifetimeMax = 0.400000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 160, 249, 255, 255 ) int(4) m_ColorMax = ( 46, 118, 238, 255 ) string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 155 int m_nAlphaMin = 55 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 1 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 64.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_glow_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 256.000000 int m_nConstantSequenceNumber = 5 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomColor_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\particle_flare_007b.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.800000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 94, 62, 199, 255 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 2.000000 float m_flBias = 0.750000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.400000 float m_fLifetimeMin = 0.150000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 18, 83, 203, 255 ) int(4) m_ColorMin = ( 0, 57, 221, 255 ) string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 24.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_ice.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_OscillateVector_2, &C_OP_OscillateScalar_0, &C_OP_OscillateScalar_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 4.000000 string m_hTexture = "materials\\particle\\impact\\fleks4.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.300000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { bool m_bOffset = true float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMax = ( 30.000000, 30.000000, 30.000000 ) float(3) m_RateMin = ( -30.000000, -30.000000, -30.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.300000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, -450.000000 ) string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_2 { bool m_bOffset = true bool m_bProportional = false float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_RateMax = ( 150.000000, 150.000000, 150.000000 ) float(3) m_RateMin = ( -150.000000, -150.000000, -150.000000 ) string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_0 { float m_FrequencyMin = 0.100000 float m_RateMax = 12.000000 float m_RateMin = -12.000000 int m_nField = 4 string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_2 { float m_FrequencyMin = 0.200000 float m_RateMax = 12.000000 float m_RateMin = -12.000000 int m_nField = 12 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.800000 float m_fLifetimeMin = 0.050000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 8.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fRadiusMin = 24.000000 float m_fRadiusMax = 32.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 63 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 255.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_ice_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_OscillateVector_2, &C_OP_OscillateScalar_0, &C_OP_OscillateScalar_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 string m_hTexture = "materials\\particle\\crystal\\crystal.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.300000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_RateMin = ( -30.000000, -30.000000, -30.000000 ) float(3) m_RateMax = ( 30.000000, 30.000000, 30.000000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) bool m_bOffset = true string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.300000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -450.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_2 { float(3) m_RateMin = ( -50.000000, -50.000000, -50.000000 ) float(3) m_RateMax = ( 50.000000, 50.000000, 50.000000 ) float(3) m_FrequencyMin = ( 0.500000, 0.500000, 0.500000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) bool m_bProportional = false bool m_bOffset = true string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_0 { int m_nField = 4 float m_RateMin = -12.000000 float m_RateMax = 12.000000 float m_FrequencyMin = 0.100000 string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_2 { int m_nField = 12 float m_RateMin = -12.000000 float m_RateMax = 12.000000 float m_FrequencyMin = 0.200000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.050000 float m_fLifetimeMax = 0.800000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 12.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMax = 32.000000 float m_fRadiusMin = 24.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 12 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 255.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_initial_explode.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 10 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 96.000000 int m_nConstantSequenceNumber = 5 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomColor_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_explode_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_explode_c.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\lens_flare\\lens_flare.vtex" bool m_bDisableOperator = true string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.800000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flStartTime_max = 0.000000 float m_flStartTime_min = 0.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 94, 62, 199, 255 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 0.250000 float m_flBias = 0.750000 float m_flEndScale = 2.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.400000 float m_fLifetimeMin = 0.150000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 160, 249, 255, 255 ) int(4) m_ColorMin = ( 160, 249, 255, 255 ) string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 4 int m_nSequenceMin = 2 bool m_bShuffle = true string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 10 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_main.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 96.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomColor_0, &C_INIT_RandomYaw_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_glow.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_glow_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue2.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.800000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 94, 62, 199, 255 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 3.000000 float m_flBias = 0.750000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.400000 float m_fLifetimeMin = 0.150000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 160, 249, 255, 255 ) int(4) m_ColorMin = ( 160, 249, 255, 255 ) string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 80.000000 float m_flRadiusMin = 80.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 90.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 32.000000 int(4) m_ConstantColor = ( 255, 255, 255, 155 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_halo.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 2.000000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_sphere.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 ) float(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.300000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.050000 float m_fLifetimeMax = 0.200000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 32.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 4.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_OscillateScalar_0, &C_OP_OscillateScalar_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomColor_0, &C_INIT_RandomScalar_0, &C_INIT_RandomScalar_2 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderModels C_OP_RenderModels_0 { string m_ActivityName = "" int m_nSkin = 7 string m_Notes = "" string m_EconSlotName = "" string m_hOverrideMaterial = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/particle/sphere.vmdl" } ] bool m_bAnimated = true } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.300000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_0 { float m_FrequencyMin = 0.250000 float m_RateMax = 25.000000 float m_RateMin = -25.000000 int m_nField = 4 string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_2 { float m_RateMax = 25.000000 float m_RateMin = -25.000000 int m_nField = 20 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.200000 float m_fLifetimeMin = 0.050000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 55, 159, 160, 255 ) int(4) m_ColorMin = ( 42, 60, 238, 255 ) string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { int m_nFieldOutput = 12 float m_flMax = 1.000000 string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_2 { int m_nFieldOutput = 20 float m_flMax = 1.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 32.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_glow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 210.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) int m_nConstantSequenceNumber = 2 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_glow_05.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 ) float(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.250000 float m_flEndScale = 3.000000 float m_flStartScale = 0.100000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 59, 131, 187, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.225000 float m_fLifetimeMax = 0.450000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 188.000000 float m_flRadiusMin = 180.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMin = 1 int m_nSequenceMax = 2 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 28.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_glow_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 210.000000 int(4) m_ConstantColor = ( 25, 25, 220, 255 ) int m_nConstantSequenceNumber = 8 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 string m_hTexture = "materials\\particle\\juggernaut\\juggernaut_blade_fury.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 ) float(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 3.000000 float m_flEndScale = 0.000000 float m_flBias = 0.750000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeEndTime = 0.500000 int(4) m_ColorFade = ( 107, 190, 255, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.450000 float m_fLifetimeMin = 0.225000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 60.000000 float m_flRadiusMax = 100.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 18.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_smoke.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 48 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 210.000000 int(4) m_ConstantColor = ( 108, 108, 255, 25 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 float m_flZoomRate1 = 4.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true float m_flStartFadeSize = 1.000000 float m_flEndFadeSize = 1.400000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\smoke3\\smoke3b.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 ) float(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) float m_fDrag = 0.050000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 float m_flStartTime_min = -1.000000 float m_flStartTime_max = -1.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.350000 float m_flEndScale = 0.000000 float m_flStartScale = 2.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 167, 215, 253, 255 ) float m_flFadeEndTime = 0.500000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.800000 float m_fLifetimeMax = 1.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 140.000000 float m_flRadiusMin = 100.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 8 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 38.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 2 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_final_smoke_glow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 48 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 210.000000 int(4) m_ConstantColor = ( 12, 56, 89, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_glow_03.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.125000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 ) float(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flStartTime_max = -1.000000 float m_flStartTime_min = -1.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 6.000000 float m_flEndScale = 3.000000 float m_flBias = 0.350000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.800000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 100.000000 float m_flRadiusMax = 140.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 8 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 38.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 2 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_ancient_apparition_ice_blast_sphere_halo.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 96 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 110.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) int m_nConstantSequenceNumber = 2 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_OscillateVector_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_ring_wavy4.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMax = ( 13.000000, 13.000000, 13.000000 ) float(3) m_RateMin = ( -13.000000, -13.000000, -13.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 0.100000 float m_flEndScale = 1.500000 float m_flBias = 0.250000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 59, 131, 187, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.450000 float m_fLifetimeMin = 0.225000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 80.000000 float m_flRadiusMax = 88.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 2 int m_nSequenceMin = 1 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 28.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_juggernaut_omnislash_burst.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 255, 255, 30 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Noise_0, &C_OP_Noise_2, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_ColorInterpolate_0, &C_OP_RampScalarLinearSimple_2, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreationNoise_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0, &C_INIT_RandomYawFlip_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\smoke\\curls\\smoke_curls.vtex" float m_flAnimationRate = 1.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.800000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.200000 string m_Notes = "" } C_OP_Noise C_OP_Noise_0 { float m_fl4NoiseScale = 0.001310 int m_nFieldOutput = 4 float m_flOutputMax = 130.000000 bool m_bAdditive = true string m_Notes = "" } C_OP_Noise C_OP_Noise_2 { bool m_bAdditive = true float m_flOutputMax = 90.000000 int m_nFieldOutput = 12 float m_fl4NoiseScale = 0.001100 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 9.000000 float m_flBias = 0.850000 float m_flStartScale = 5.000000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 float m_Rate = 100.000000 float m_flEndTime = 9999.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 39, 0, 0, 255 ) string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -2.000000 float m_flEndTime = 99999.000000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flStartTime_min = 0.200000 float m_flStartTime_max = 0.300000 float m_flEndTime_min = 0.400000 float m_flEndTime_max = 0.700000 string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.650000 float m_fLifetimeMin = 0.450000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 247, 255, 22, 255 ) int(4) m_ColorMin = ( 205, 124, 37, 255 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMax = 25.000000 float m_fSpeedMax = 64.000000 string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 54.000000, 54.000000, 54.000000 ) float(3) m_vecOutputMin = ( -54.000000, -54.000000, -54.000000 ) bool m_bLocalSpace = true string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flOutputMax = 32.000000 float m_flOutputMin = 24.000000 float m_flNoiseScale = 2.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 4.000000 float m_flDegreesMin = -4.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 40.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 120.000000 ) } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 64.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 32 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_juggernaut_omnislash_image.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 1.000000 bool m_bShouldSort = false float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_SetControlPointsToParticle_0, &C_OP_InterpolateRadius_0, &C_OP_MovementPlaceOnGround_0, &C_OP_OrientTo2dDirection_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_VelocityFromCP_0, &C_INIT_RadiusFromCPObject_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_juggernaut_omnislash_image_ember.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_juggernaut_omnislash_image_flash.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_omnislash_trail_glow.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_omnislash_trail_glow_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/holdout_juggernaut_omnislash_burst.vpcf" } ] } C_OP_RenderModels C_OP_RenderModels_0 { string m_hOverrideMaterial = "" string m_EconSlotName = "" string m_ActivityName = "ACT_DOTA_RUN" bool m_bIgnoreNormal = true string m_Notes = "" int m_nModelCP = 0 ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/heroes/juggernaut/juggernaut.vmdl" } ] bool m_bAnimated = true } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0 { string m_Notes = "" bool m_bSetOrientation = true int m_nFirstControlPoint = 3 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 1.100000 string m_Notes = "" float m_flBias = 0.750000 float m_flEndTime = 0.500000 float m_flStartScale = 0.000000 } C_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0 { string m_Notes = "" string m_CollisionGroupName = "DEBRIS" float m_flTraceOffset = 256.000000 float m_flMaxTraceLength = 1024.000000 float m_flTolerance = 0.000000 } C_OP_OrientTo2dDirection C_OP_OrientTo2dDirection_0 { int m_nFieldOutput = 12 float m_flRotOffset = 180.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.200000 float m_fLifetimeMax = 0.200000 } C_INIT_VelocityFromCP C_INIT_VelocityFromCP_0 { string m_Notes = "" int m_nControlPoint = 1 } C_INIT_RadiusFromCPObject C_INIT_RadiusFromCPObject_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { bool m_bLocalCoords = true float(3) m_OffsetMax = ( -32.000000, 0.000000, 0.000000 ) float(3) m_OffsetMin = ( -32.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_juggernaut_omnislash_image_ember.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinear_0, &C_OP_ColorInterpolate_0, &C_OP_VectorNoise_0, &C_OP_OscillateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomRotation_0, &C_INIT_PositionOffset_0, &C_INIT_CreateFromParentParticles_0, &C_INIT_RandomSequence_0, &C_INIT_RandomTrailLength_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_TwistAroundAxis_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { float m_flSelfIllumAmount = 2.000000 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 400.000000 ) float m_fDrag = 0.075000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.250000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { string m_Notes = "" float m_RateMax = 40.000000 float m_RateMin = -40.000000 int m_nField = 4 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 64, 0, 0, 255 ) string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { float m_fl4NoiseScale = 0.300000 bool m_bAdditive = true float(3) m_vecOutputMax = ( 16.000000, 16.000000, 8.000000 ) float(3) m_vecOutputMin = ( -16.000000, -16.000000, -8.000000 ) int m_nFieldOutput = 0 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_FrequencyMax = ( 2.000000, 2.000000, 2.000000 ) float(3) m_FrequencyMin = ( 0.100000, 0.100000, 0.100000 ) float(3) m_RateMax = ( 44.000000, 44.000000, 44.000000 ) float(3) m_RateMin = ( -44.000000, -44.000000, -44.000000 ) bool m_bOffset = true string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.250000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 2.000000 string m_Notes = "" float m_flRadiusMax = 9.000000 } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float m_flNoiseScale = 0.250000 string m_Notes = "" float(3) m_vecOutputMin = ( -214.000000, -214.000000, 0.000000 ) float(3) m_vecOutputMax = ( 214.000000, 214.000000, 200.000000 ) float m_flNoiseScaleLoc = 3.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMax = ( 32.000000, -42.000000, 128.000000 ) float(3) m_OffsetMin = ( -32.000000, -12.000000, 40.000000 ) bool m_bLocalCoords = true } C_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 7 int m_nSequenceMin = 4 string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMinLength = 0.050000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 236, 183, 20, 255 ) int(4) m_ColorMax = ( 255, 65, 14, 255 ) } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 264.000000 } C_OP_TwistAroundAxis C_OP_TwistAroundAxis_0 { float m_fForceAmount = 140.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_juggernaut_omnislash_image_flash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_CreateWithinSphere_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 float m_flStartFadeSize = 0.800000 float m_flEndFadeSize = 1.000000 float m_flMaxSize = 0.400000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_glow_04.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.640000 float m_flStartScale = 2.000000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.150000 float m_fLifetimeMin = 0.100000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 255, 65, 14, 255 ) int(4) m_ColorMin = ( 236, 183, 20, 255 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 80.000000 float m_flRadiusMin = 50.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMax = 32.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 16 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_omnislash_trail_glow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeOut_0, &C_OP_Decay_0, &C_OP_ColorInterpolate_0, &C_OP_PercentageBetweenCPs_0, &C_OP_PercentageBetweenCPs_2, &C_OP_RampScalarSplineSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRadius_0, &C_INIT_PositionOffset_0, &C_INIT_CreateSequentialPath_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_glow_04.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_FadeOut C_OP_FadeOut_0 { float m_flFadeOutTimeMin = 1.000000 float m_flFadeOutTimeMax = 1.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { float m_flOpStartFadeInTime = 3.000000 float m_flOpEndFadeInTime = 3.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 229, 221, 149, 255 ) string m_Notes = "" } C_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_0 { float m_flOutputMax = 0.000000 float m_flOutputMin = 1.000000 int m_nFieldOutput = 16 float m_flInputMin = 0.875000 string m_Notes = "" } C_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_2 { bool m_bRadialCheck = false bool m_bActiveRange = true int m_nFieldOutput = 16 float m_flInputMax = 0.750000 string m_Notes = "" } C_OP_RampScalarSplineSimple C_OP_RampScalarSplineSimple_0 { bool m_bEaseOut = true float m_Rate = -50.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.500000 float m_fLifetimeMin = 1.500000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 206, 98, 39, 255 ) int(4) m_ColorMin = ( 163, 61, 61, 255 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 150.000000 float m_flRadiusMax = 150.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 96.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 96.000000 ) string m_Notes = "" } C_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0 { float m_flNumToAssign = 25.000000 string m_Notes = "" CPathParameters m_PathParams = CPathParameters { float m_flMidPoint = 0.150000 int m_nBulgeControl = 1 float m_flBulge = 0.150000 } } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMin = 64 int m_nAlphaMax = 64 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 0.050000 float m_flEmitRate = 500.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/holdout_omnislash_trail_glow_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int m_nConstantSequenceNumber = 8 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_ColorInterpolate_0, &C_OP_PercentageBetweenCPs_0, &C_OP_PercentageBetweenCPs_2, &C_OP_PercentageBetweenCPs_4, &C_OP_RampScalarSplineSimple_0, &C_OP_RampScalarSplineSimple_2, &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRadius_0, &C_INIT_PositionOffset_0, &C_INIT_CreateSequentialPath_0, &C_INIT_RandomAlpha_0, &C_INIT_RemapScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_swirl_04c.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 89, 76, 53, 255 ) string m_Notes = "" } C_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_0 { float m_flInputMin = 0.875000 int m_nFieldOutput = 16 float m_flOutputMin = 1.000000 float m_flOutputMax = 0.000000 string m_Notes = "" } C_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_2 { float m_flInputMax = 0.750000 int m_nFieldOutput = 16 bool m_bActiveRange = true bool m_bRadialCheck = false string m_Notes = "" } C_OP_PercentageBetweenCPs C_OP_PercentageBetweenCPs_4 { bool m_bScaleInitialRange = true float m_flOutputMax = 4.000000 float m_flOutputMin = 1.000000 float m_flOpEndFadeOutTime = 0.060000 float m_flOpStartFadeOutTime = 0.060000 string m_Notes = "" } C_OP_RampScalarSplineSimple C_OP_RampScalarSplineSimple_0 { float m_Rate = 70.000000 bool m_bEaseOut = true string m_Notes = "" } C_OP_RampScalarSplineSimple C_OP_RampScalarSplineSimple_2 { bool m_bEaseOut = true float m_flEndTime = 0.350000 float m_Rate = 7.000000 int m_nField = 4 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.750000 float m_fLifetimeMax = 0.750000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 206, 98, 39, 255 ) int(4) m_ColorMax = ( 206, 98, 39, 255 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 24.000000 float m_flRadiusMin = 24.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMin = ( 0.000000, 0.000000, 96.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 96.000000 ) string m_Notes = "" } C_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0 { string m_Notes = "" CPathParameters m_PathParams = CPathParameters { float m_flBulge = 0.150000 int m_nBulgeControl = 1 float m_flMidPoint = 0.150000 } } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMin = 92 string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { float m_flOutputMax = 12.000000 float m_flOutputMin = 8.000000 int m_nFieldOutput = 4 float m_flInputMax = 0.050000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 2000.000000 float m_flEmissionDuration = 0.050000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_rays.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 100.000000 int(4) m_ConstantColor = ( 216, 239, 255, 150 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_ColorInterpolate_0, &C_OP_FadeOutSimple_0, &C_OP_RampScalarLinear_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RampScalarLinearSimple_2, &C_OP_InterpolateRadius_0, &C_OP_InterpolateRadius_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_PositionOffset_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomRadius_0, &C_INIT_RandomTrailLength_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_cone_gradient_2.vtex" bool m_bIgnoreDT = true string m_Notes = "" float m_flAnimationRate = 30.000000 float m_flLengthFadeInTime = 2.000000 int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeStartTime = 0.500000 int(4) m_ColorFade = ( 255, 181, 108, 255 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { float m_flStartTime_max = 0.350000 float m_flStartTime_min = 0.250000 string m_Notes = "" int m_nField = 10 float m_RateMin = -0.500000 float m_RateMax = -1.000000 float m_flEndTime_min = 999999.000000 float m_flEndTime_max = 999999.000000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" int m_nField = 12 float m_Rate = 5.000000 float m_flEndTime = 100000000.000000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { int m_nOpEndCapState = 1 string m_Notes = "" int m_nField = 7 float m_Rate = -1.000000 float m_flEndTime = 999999.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndTime = 0.500000 float m_flEndScale = 2.000000 string m_Notes = "" float m_flStartScale = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_2 { string m_Notes = "" float m_flStartTime = 0.600000 float m_flStartScale = 2.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 4.000000 float m_fLifetimeMin = 3.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 1000.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 1000.000000 ) bool m_bLocalCoords = true } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float(3) m_vecOutputMin = ( 0.000000, 0.000000, 800.000000 ) float(3) m_vecOutputMax = ( 0.000000, 0.000000, 1000.000000 ) bool m_bLocalSpace = true } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 100.000000 float m_flRadiusMax = 625.000000 } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMaxLength = 80.000000 string m_Notes = "" float m_flMinLength = 60.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fRadiusMax = -25.000000 int m_nControlPointNumber = 7 float m_fSpeedMin = 100.000000 float m_fSpeedMax = 150.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 25 int m_nAlphaMax = 50 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 255, 248, 208, 255 ) int(4) m_ColorMax = ( 255, 209, 137, 255 ) } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 4.000000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 5 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_ring.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ ] CParticleOperator*[] m_Operators = [ &C_OP_SetSingleControlPointPosition_0 ] CParticleOperator*[] m_Initializers = [ ] CParticleOperator*[] m_Emitters = [ ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_start_ring.vpcf" }, ParticleChildrenInfo_t { bool m_bEndCap = true string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_start_endcap.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_ring_aura.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_rays.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_ring_dust.vpcf" } ] } C_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0 { string m_Notes = "" int m_nCP1 = 7 float(3) m_vecCP1Pos = ( 75.000000, 0.000000, 0.000000 ) } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_ring_aura.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 243, 216, 70 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_AlphaDecay_0, &C_OP_BasicMovement_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RingWave_0, &C_INIT_RandomRadius_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { int m_bAdditive = 1 float m_flSelfIllumAmount = 2.000000 string m_hTexture = "materials\\particle\\beam_arc.vtex" string m_Notes = "" float m_flTextureVWorldSize = 1999.999878 int m_nMaxTesselation = 2 int m_nMinTesselation = 2 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 20.000000 float m_flStartScale = 0.000000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 string m_Notes = "" int m_nField = 7 float m_Rate = -2.000000 float m_flEndTime = 999999.000000 } C_OP_AlphaDecay C_OP_AlphaDecay_0 { string m_Notes = "" float m_flMinAlpha = 0.001000 } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 35.000000 ) string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 140, 100, 36, 255 ) string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { string m_Notes = "" float m_flInitialRadius = 625.000000 bool m_bEvenDistribution = true float m_flParticlesPerOrbit = 10.000000 float m_flInitialSpeedMax = 20.000000 int m_nControlPointNumber = 7 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 10.000000 float m_flRadiusMax = 10.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 2.500000 float m_fLifetimeMax = 2.500000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 50 int m_nAlphaMax = 50 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 15.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_ring_dust.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 0.900000 int(4) m_ConstantColor = ( 195, 223, 255, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_RampScalarLinearSimple_0, &C_OP_InterpolateRadius_0, &C_OP_FadeInSimple_0, &C_OP_BasicMovement_0, &C_OP_SpinUpdate_0, &C_OP_RampScalarLinearSimple_2, &C_OP_FadeOutSimple_0, &C_OP_Decay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RingWave_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRotationSpeed_0, &C_INIT_RandomColor_0, &C_INIT_RandomSequence_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_ring_dust_detail.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\smoke1\\smoke1.vtex" float m_flAnimationRate = 0.200000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 9999999.000000 float m_Rate = -2.000000 string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 1.500000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.030000 float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { int m_nOpEndCapState = 1 string m_Notes = "" int m_nField = 16 float m_Rate = -1.500000 float m_flEndTime = 999999.000000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 3.500000 float m_fLifetimeMin = 3.000000 string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { int m_nControlPointNumber = 7 float m_flInitialSpeedMin = 10.000000 string m_Notes = "" float m_flInitialRadius = 625.000000 float m_flInitialSpeedMax = 100.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 75.000000 float m_flRadiusMax = 100.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 70 int m_nAlphaMin = 35 string m_Notes = "" } C_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0 { string m_Notes = "" float m_flDegreesMax = 30.000000 float m_flDegreesMin = 15.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 223, 200, 159, 255 ) string m_Notes = "" int(4) m_ColorMax = ( 147, 124, 97, 255 ) } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 15 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 50.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 ) } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 20.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 20 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_ring_dust_detail.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 0.900000 int(4) m_ConstantColor = ( 195, 223, 255, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_RampScalarLinearSimple_0, &C_OP_InterpolateRadius_0, &C_OP_FadeInSimple_0, &C_OP_BasicMovement_0, &C_OP_SpinUpdate_0, &C_OP_RampScalarLinearSimple_2, &C_OP_FadeOutSimple_0, &C_OP_Decay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RingWave_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRotationSpeed_0, &C_INIT_RandomColor_0, &C_INIT_RandomSequence_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\smoke\\static\\static_smoke.vtex" string m_Notes = "" float m_flAnimationRate = 0.200000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 string m_Notes = "" float m_Rate = -2.000000 float m_flEndTime = 9999999.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 1.500000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.500000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 50.000000 ) float m_fDrag = 0.030000 } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_2 { float m_flEndTime = 999999.000000 float m_Rate = -1.500000 int m_nField = 16 string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.750000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 3.000000 float m_fLifetimeMax = 3.500000 } C_INIT_RingWave C_INIT_RingWave_0 { float m_flInitialSpeedMax = 50.000000 float m_flInitialRadius = 625.000000 string m_Notes = "" float m_flInitialSpeedMin = 10.000000 int m_nControlPointNumber = 7 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 75.000000 float m_flRadiusMin = 50.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 50 int m_nAlphaMax = 100 } C_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0 { float m_flDegreesMin = 15.000000 float m_flDegreesMax = 30.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 222, 213, 190, 255 ) string m_Notes = "" int(4) m_ColorMin = ( 237, 219, 188, 255 ) } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 4 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 100.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 10.000000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 10 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_endcap.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 256 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 216, 155, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_BasicMovement_0, &C_OP_ColorInterpolate_0, &C_OP_VectorNoise_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RingWave_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_PositionOffset_0, &C_INIT_InitialVelocityNoise_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 float m_flStartFadeSize = 0.800000 float m_flEndFadeSize = 1.000000 float m_flMaxSize = 0.400000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_glow_04.vtex" string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flStartScale = 20.000000 float m_flBias = 0.950000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.010000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 201, 85, 22, 255 ) } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -5.000000, -5.000000, 0.000000 ) float(3) m_vecOutputMax = ( 5.000000, 5.000000, 5.000000 ) bool m_bAdditive = true } C_INIT_RingWave C_INIT_RingWave_0 { string m_Notes = "" float m_flInitialRadius = 625.000000 bool m_bEvenDistribution = true float m_flParticlesPerOrbit = 200.000000 float m_flInitialSpeedMin = 100.000000 float m_flInitialSpeedMax = 100.000000 int m_nControlPointNumber = 7 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.350000 float m_fLifetimeMax = 1.000000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 10.000000 float m_flRadiusMax = 10.000000 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 ) bool m_bLocalCoords = true } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScaleLoc = 0.250000 float(3) m_vecOutputMin = ( -50.000000, -50.000000, 50.000000 ) float(3) m_vecOutputMax = ( 50.000000, 50.000000, 100.000000 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 200 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_line.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 238, 181, 255 ) int m_nConstantSequenceNumber = 4 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_SetControlPointPositions_0, &C_OP_RampScalarLinearSimple_0, &C_OP_AlphaDecay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_CreateSequentialPath_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RemapParticleCountToScalar_2, &C_INIT_RandomLifeTime_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" int m_nOrientationType = 2 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 1.500000 } C_OP_SetControlPointPositions C_OP_SetControlPointPositions_0 { int m_nCP4 = 9 int m_nCP3 = 9 float(3) m_vecCP2Pos = ( 0.000000, 200.000000, 0.000000 ) int m_nCP2 = 6 float(3) m_vecCP1Pos = ( 0.000000, -200.000000, 0.000000 ) int m_nCP1 = 5 string m_Notes = "" bool m_bSetOnce = true } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 9999999827968.000000 float m_Rate = -2.000000 int m_nField = 7 string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_AlphaDecay C_OP_AlphaDecay_0 { float m_flMinAlpha = 0.001000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 100.000000 float m_flRadiusMax = 100.000000 } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { string m_Notes = "" float m_flOffset = 5.000000 bool m_bIncludeWater = true } C_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0 { string m_Notes = "" float m_flNumToAssign = 75.000000 CPathParameters m_PathParams = CPathParameters { int m_nEndControlPointNumber = 6 int m_nStartControlPointNumber = 5 } } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { bool m_bScaleInitialRange = true int m_nInputMax = 30 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2 { bool m_bScaleInitialRange = true float m_flOutputMax = 0.000000 float m_flOutputMin = 1.000000 int m_nInputMax = 75 int m_nInputMin = 35 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 6.000000 float m_fLifetimeMin = 6.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 75.000000, 0.000000, 0.000000 ) float(3) m_OffsetMax = ( 75.000000, 0.000000, 0.000000 ) bool m_bLocalCoords = true } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 75 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_line_light.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 206, 129, 255 ) int m_nConstantSequenceNumber = 4 CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_AlphaDecay_0, &C_OP_SetControlPointPositions_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_PositionOffset_0, &C_INIT_CreateSequentialPath_0, &C_INIT_RandomLifeTime_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { string m_Notes = "" float m_flRadiusScale = 1.500000 float m_flAlphaScale = 15.000000 float m_flStartFalloff = 0.100000 int(4) m_ColorScale = ( 255, 210, 140, 255 ) string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 1.500000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 9999999827968.000000 float m_Rate = -3.000000 int m_nField = 7 string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_AlphaDecay C_OP_AlphaDecay_0 { float m_flMinAlpha = 0.001000 string m_Notes = "" } C_OP_SetControlPointPositions C_OP_SetControlPointPositions_0 { float(3) m_vecCP4Pos = ( 0.000000, -50.000000, 0.000000 ) string m_Notes = "" int m_nCP1 = 5 float(3) m_vecCP1Pos = ( 0.000000, -50.000000, 0.000000 ) int m_nCP2 = 6 float(3) m_vecCP2Pos = ( 0.000000, 50.000000, 0.000000 ) int m_nCP3 = 9 int m_nCP4 = 9 bool m_bOrient = true } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 100.000000 float m_flRadiusMin = 100.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 75.000000, 0.000000, 50.000000 ) float(3) m_OffsetMax = ( 75.000000, 0.000000, 50.000000 ) bool m_bLocalCoords = true } C_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0 { float m_flNumToAssign = 3.000000 string m_Notes = "" CPathParameters m_PathParams = CPathParameters { int m_nStartControlPointNumber = 5 int m_nEndControlPointNumber = 6 } } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 6.000000 float m_fLifetimeMin = 6.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 250 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int m_nConstantSequenceNumber = 4 CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_AlphaDecay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RingWave_0, &C_INIT_VelocityRandom_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomTrailLength_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RemapParticleCountToScalar_2, &C_INIT_PositionPlaceOnGround_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_start_ring_flash.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_start_line.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_start_line_light.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_start_ring_rope.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_start_ring_banner_light.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_start_ring_flags.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_start_ring_outer_rope.vpcf" } ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\spark_02.vtex" string m_Notes = "" float m_flLengthFadeInTime = 0.200000 float m_flMaxLength = 500.000000 bool m_bIgnoreDT = true int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flStartTime = 0.500000 float m_Rate = -1.000000 int m_nField = 10 string m_Notes = "" } C_OP_AlphaDecay C_OP_AlphaDecay_0 { float m_flMinAlpha = 0.001000 string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { string m_Notes = "" float m_flInitialRadius = 625.000000 bool m_bEvenDistribution = true float m_flParticlesPerOrbit = 200.000000 int m_nControlPointNumber = 7 } C_INIT_VelocityRandom C_INIT_VelocityRandom_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, -7000.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, -10000.000000 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.600000 float m_fLifetimeMax = 0.650000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 75.000000 float m_flRadiusMax = 100.000000 } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { string m_Notes = "" float m_flMinLength = 1.500000 float m_flMaxLength = 1.500000 } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { string m_Notes = "" int m_nInputMax = 100 int m_nFieldOutput = 10 bool m_bScaleInitialRange = true } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2 { string m_Notes = "" int m_nInputMin = 200 int m_nInputMax = 250 int m_nFieldOutput = 10 float m_flOutputMin = 1.000000 float m_flOutputMax = 0.000000 bool m_bScaleInitialRange = true } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { bool m_bIncludeWater = true float m_flOffset = -10.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 1500.000000 float m_flEmissionDuration = 0.250000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_banner_light.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 250 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 150.000000 int(4) m_ConstantColor = ( 255, 255, 255, 150 ) int m_nConstantSequenceNumber1 = 1 CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Orient2DRelToCP_0, &C_OP_InterpolateRadius_0, &C_OP_LerpEndCapScalar_0, &C_OP_EndCapTimedDecay_0, &C_OP_OscillateScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RingWave_0, &C_INIT_RandomLifeTime_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RandomScalar_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { string m_Notes = "" float m_flRadiusScale = 1.500000 float m_flAlphaScale = 25.000000 float m_flStartFalloff = 0.100000 string m_hTexture = "materials\\particle\\legion\\legion_banner.vtex" } C_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0 { int m_nFieldOutput = 12 string m_Notes = "" int m_nCP = 7 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 0.000000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 float m_flLerpTime = 0.250000 string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { float m_flDecayTime = 0.500000 string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_0 { float m_flEndTime_max = 9999999.000000 float m_FrequencyMax = 0.500000 float m_FrequencyMin = 0.250000 float m_RateMax = 1.000000 float m_RateMin = 0.500000 string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { string m_Notes = "" float m_flInitialRadius = 200.000000 bool m_bEvenDistribution = true float m_flParticlesPerOrbit = 6.000000 int m_nControlPointNumber = 7 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.500000 float m_fLifetimeMax = 0.500000 } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { bool m_bIncludeWater = true float m_flOffset = 200.000000 string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { int m_nFieldOutput = 18 float m_flMax = 20.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 255, 182, 88, 255 ) int(4) m_ColorMin = ( 255, 234, 160, 255 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { int m_nFieldOutput = 12 float m_flDegreesMax = 0.000000 float m_flDegrees = 90.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 6 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_energy.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 207, 181, 168, 255 ) float m_flNoDrawTimeToGoToSleep = 0.100000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0, &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_RampScalarLinearSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_SequenceLifeTime_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYawFlip_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomColor_0, &C_INIT_RingWave_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\smoke\\steam\\steam.vtex" string m_Notes = "" bool m_bAnimateInFPS = true float m_flAnimationRate = 10.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" bool m_bEaseInAndOut = true float m_flBias = 0.860000 float m_flEndScale = 1.500000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" float m_flFadeStartTime = 0.350000 int(4) m_ColorFade = ( 255, 203, 79, 255 ) } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.350000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 ) float m_fDrag = 0.050000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 string m_Notes = "" int m_nField = 7 float m_Rate = -5.000000 float m_flEndTime = 1000000000.000000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 35.000000 float m_flRadiusMax = 50.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 200 } C_INIT_SequenceLifeTime C_INIT_SequenceLifeTime_0 { string m_Notes = "" float m_flFramerate = 24.000000 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 10 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { bool m_bDisableOperator = true string m_Notes = "" float(3) m_vecOutputMax = ( 26.000000, 26.000000, 34.000000 ) float(3) m_vecOutputMin = ( -26.000000, -26.000000, -16.000000 ) float m_flNoiseScaleLoc = 0.050000 float m_flNoiseScale = 0.100000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 255, 250, 218, 255 ) int(4) m_ColorMax = ( 255, 238, 188, 255 ) } C_INIT_RingWave C_INIT_RingWave_0 { float m_flInitialRadius = 625.000000 string m_Notes = "" int m_nControlPointNumber = 7 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 20.000000 ) } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 15.000000 float m_flEmitRate = 150.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_flags.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 250 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 0.500000 int(4) m_ConstantColor = ( 255, 206, 89, 255 ) int m_nConstantSequenceNumber1 = 1 CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Orient2DRelToCP_0, &C_OP_InterpolateRadius_0, &C_OP_LerpEndCapScalar_0, &C_OP_EndCapTimedDecay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RingWave_0, &C_INIT_VelocityRandom_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomTrailLength_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RandomSecondSequence_0, &C_INIT_RandomScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderModels C_OP_RenderModels_0 { float m_flAnimationRate = 60.000000 string m_Notes = "" bool m_bIgnoreNormal = true string m_ActivityName = "" int m_nManualFrameField = 18 string m_EconSlotName = "" string m_hOverrideMaterial = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/particle/legion_duel_banner.vmdl" } ] bool m_bAnimated = true } C_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0 { string m_Notes = "" int m_nFieldOutput = 12 int m_nCP = 7 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.000000 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { string m_Notes = "" float m_flLerpTime = 0.250000 float m_flOutput = 0.000000 } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" float m_flDecayTime = 0.500000 } C_INIT_RingWave C_INIT_RingWave_0 { float m_flParticlesPerOrbit = 6.000000 bool m_bEvenDistribution = true float m_flInitialRadius = 625.000000 string m_Notes = "" int m_nControlPointNumber = 7 } C_INIT_VelocityRandom C_INIT_VelocityRandom_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, -10000.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, -7000.000000 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.500000 float m_fLifetimeMin = 0.500000 string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMaxLength = 1.500000 float m_flMinLength = 1.500000 string m_Notes = "" } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { string m_Notes = "" float m_flOffset = -10.000000 bool m_bIncludeWater = true } C_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0 { int m_nSequenceMax = 2 int m_nSequenceMin = 1 string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { string m_Notes = "" float m_flMax = 100.000000 int m_nFieldOutput = 18 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 6 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_flash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 245, 129, 255 ) int m_nConstantSequenceNumber = 4 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_AlphaDecay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RingWave_0, &C_INIT_RandomRadius_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RandomLifeTime_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" int m_nOrientationType = 2 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 1.500000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 999999.000000 float m_Rate = -2.000000 int m_nField = 7 string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_AlphaDecay C_OP_AlphaDecay_0 { float m_flMinAlpha = 0.001000 string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { float m_flParticlesPerOrbit = 100.000000 bool m_bEvenDistribution = true float m_flInitialRadius = 625.000000 string m_Notes = "" int m_nControlPointNumber = 7 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 50.000000 float m_flRadiusMin = 50.000000 string m_Notes = "" } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { bool m_bIncludeWater = true float m_flOffset = 5.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 15.000000 float m_fLifetimeMin = 15.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_outer_rope.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 75 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 161, 184, 201, 255 ) int m_nConstantSequenceNumber = 4 CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_AlphaDecay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RingWave_0, &C_INIT_RandomRadius_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RemapParticleCountToScalar_2, &C_INIT_RandomLifeTime_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { bool m_bMod2X = true int m_nOrientationType = 3 string m_hTexture = "materials\\particle\\beam_crack_03.vtex" string m_Notes = "" float m_flTextureVWorldSize = 499.999969 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.150000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 string m_Notes = "" int m_nField = 7 float m_Rate = -2.000000 float m_flEndTime = 1000000000.000000 } C_OP_AlphaDecay C_OP_AlphaDecay_0 { string m_Notes = "" float m_flMinAlpha = 0.001000 } C_INIT_RingWave C_INIT_RingWave_0 { float m_flPitch = 180.000000 int m_nControlPointNumber = 7 float m_flParticlesPerOrbit = 11.000000 bool m_bEvenDistribution = true float m_flInitialRadius = 635.000000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 300.000000 float m_flRadiusMin = 150.000000 string m_Notes = "" } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { bool m_bIncludeWater = true float m_flOffset = 5.000000 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { bool m_bScaleInitialRange = true float m_flOutputMax = 0.000000 float m_flOutputMin = 1.000000 int m_nFieldOutput = 7 int m_nInputMax = 14 int m_nInputMin = 12 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2 { bool m_bScaleInitialRange = true int m_nFieldOutput = 7 int m_nInputMax = 5 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 15.000000 float m_fLifetimeMax = 15.000000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 15 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/legion_gladiators_start_ring_rope.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 75 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 253, 223, 255 ) int m_nConstantSequenceNumber = 4 CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_AlphaDecay_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RingWave_0, &C_INIT_RandomRadius_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RemapParticleCountToScalar_2, &C_INIT_RandomLifeTime_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/legion_gladiators_start_ring_energy.vpcf" } ] } C_OP_RenderRopes C_OP_RenderRopes_0 { int m_bAdditive = 1 int m_nOrientationType = 3 string m_hTexture = "materials\\particle\\beam_crack_02.vtex" string m_Notes = "" float m_flTextureVWorldSize = 333.333344 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 1.500000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 1000000000.000000 float m_Rate = -2.000000 int m_nField = 7 string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_AlphaDecay C_OP_AlphaDecay_0 { float m_flMinAlpha = 0.001000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 255, 219, 143, 255 ) float m_flFadeStartTime = 0.750000 } C_INIT_RingWave C_INIT_RingWave_0 { string m_Notes = "" float m_flInitialRadius = 625.000000 bool m_bEvenDistribution = true float m_flParticlesPerOrbit = 28.000000 int m_nControlPointNumber = 7 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 50.000000 float m_flRadiusMax = 50.000000 } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { string m_Notes = "" float m_flOffset = 5.000000 bool m_bIncludeWater = true } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { string m_Notes = "" int m_nInputMin = 28 int m_nInputMax = 34 int m_nFieldOutput = 7 float m_flOutputMin = 1.000000 float m_flOutputMax = 0.000000 bool m_bScaleInitialRange = true } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2 { string m_Notes = "" int m_nInputMax = 5 int m_nFieldOutput = 7 bool m_bScaleInitialRange = true } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 15.000000 float m_fLifetimeMin = 15.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 35 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/witch_buff.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 24 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 237, 89, 17, 155 ) float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_LockToBone_0, &C_OP_RemapCPtoVector_0, &C_OP_EndCapTimedDecay_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomTrailLength_0, &C_INIT_RandomColor_0, &C_INIT_RemapCPtoVector_0, &C_INIT_RandomScalar_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/witch_buff_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/witch_buff_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/witch_buff_d.vpcf" } ] } C_OP_RenderTrails C_OP_RenderTrails_0 { float m_flSelfIllumAmount = 4.000000 string m_hTexture = "materials\\particle\\beam_jagged_01.vtex" float m_flAnimationRate = 0.600000 int m_nVertCropField = 18 float m_flLengthFadeInTime = 0.500000 string m_Notes = "" bool m_bIgnoreDT = true int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.750000 float m_flStartScale = 0.000000 string m_Notes = "" } C_OP_LockToBone C_OP_LockToBone_0 { string m_HitboxSetName = "hands" string m_Notes = "" float m_flPrevPosScale = 0.000000 } C_OP_RemapCPtoVector C_OP_RemapCPtoVector_0 { float(3) m_vOutputMax = ( 1000000.000000, 1000000.000000, 1000000.000000 ) float(3) m_vOutputMin = ( -1000000.000000, -1000000.000000, -1000000.000000 ) int m_nFieldOutput = 2 float(3) m_vInputMax = ( 1000000.000000, 1000000.000000, 1000000.000000 ) float(3) m_vInputMin = ( -1000000.000000, -1000000.000000, -1000000.000000 ) int m_nCPInput = 1 string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 25.000000 float m_flRadiusMin = 15.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 15 int m_nAlphaMax = 25 } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_HitboxSetName = "hands" string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.500000 float m_fLifetimeMax = 0.750000 } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { string m_Notes = "" float m_flMaxLength = 1.000000 float m_flMinLength = 1.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 0, 191, 121, 255 ) int(4) m_ColorMin = ( 47, 241, 170, 255 ) } C_INIT_RemapCPtoVector C_INIT_RemapCPtoVector_0 { float(3) m_vOutputMax = ( 1000000.000000, 1000000.000000, 1000000.000000 ) float(3) m_vOutputMin = ( -1000000.000000, -1000000.000000, -1000000.000000 ) int m_nFieldOutput = 2 float(3) m_vInputMax = ( 1000000.000000, 1000000.000000, 1000000.000000 ) float(3) m_vInputMin = ( -1000000.000000, -1000000.000000, -1000000.000000 ) int m_nCPInput = 1 string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { int m_nFieldOutput = 18 float m_flMax = 2.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { int m_nFieldOutput = 12 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 20.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/witch_buff_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 200 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 237, 89, 17, 55 ) float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeAndKill_0, &C_OP_InterpolateRadius_0, &C_OP_LockToBone_0, &C_OP_EndCapTimedDecay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\smoke\\steam\\steam.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flStartFadeOutTime = 0.600000 float m_flEndFadeInTime = 0.200000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" } C_OP_LockToBone C_OP_LockToBone_0 { float m_flJumpThreshold = 1.000000 string m_HitboxSetName = "hands" int m_nControlPointNumber = 1 string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 20.000000 float m_flRadiusMax = 40.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 155 int m_nAlphaMin = 55 string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_Notes = "" int m_nControlPointNumber = 1 float m_flHitBoxScale = 0.500000 string m_HitboxSetName = "hands" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.750000 float m_fLifetimeMin = 0.500000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 47, 241, 170, 255 ) int(4) m_ColorMax = ( 0, 191, 121, 255 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 1 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 20.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/witch_buff_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 60 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 237, 89, 17, 100 ) float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeAndKill_0, &C_OP_InterpolateRadius_0, &C_OP_EndCapTimedDecay_0, &C_OP_LockToBone_0, &C_OP_BasicMovement_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\wisp\\particle_swirl.vtex" string m_Notes = "" float m_flAnimationRate = 0.500000 } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flStartAlpha = 0.000000 string m_Notes = "" float m_flEndFadeInTime = 0.200000 float m_flStartFadeOutTime = 0.600000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.650000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" } C_OP_LockToBone C_OP_LockToBone_0 { string m_HitboxSetName = "hands" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 40.000000 float m_flRadiusMin = 20.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.600000 float m_fLifetimeMax = 1.600000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 11, 233, 209, 255 ) int(4) m_ColorMin = ( 47, 241, 170, 255 ) } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 2 } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_HitboxSetName = "hands" string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 50.000000 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { int m_nControlPointNumber = 1 float m_fFalloffPower = 0.000000 float m_fForceAmount = 100.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/witch_buff_d.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 237, 89, 17, 100 ) float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeAndKill_0, &C_OP_InterpolateRadius_0, &C_OP_EndCapTimedDecay_0, &C_OP_LockToBone_0, &C_OP_BasicMovement_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_glow_04.vtex" float m_flAnimationRate = 0.500000 string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flStartFadeOutTime = 0.600000 float m_flEndFadeInTime = 0.400000 string m_Notes = "" float m_flStartAlpha = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flBias = 0.650000 } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" string m_HitboxSetName = "hands" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 40.000000 float m_flRadiusMax = 60.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.600000 float m_fLifetimeMin = 0.500000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 47, 241, 170, 255 ) int(4) m_ColorMax = ( 11, 233, 209, 255 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 2 string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_Notes = "" float m_flHitBoxScale = 0.600000 string m_HitboxSetName = "hands" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 15.000000 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" float m_fForceAmount = 100.000000 float m_fFalloffPower = 0.000000 int m_nControlPointNumber = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_heal.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ ] CParticleOperator*[] m_Operators = [ ] CParticleOperator*[] m_Initializers = [ ] CParticleOperator*[] m_Emitters = [ ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_heal_flash_glow.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_heal_flash_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_heal_twinkle.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_heal_rings.vpcf" } ] } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_heal_flash_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 248, 241, 124, 200 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\particle_flare_006.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.750000 float m_flEndScale = 15.000000 float m_flStartScale = 0.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.175000 float m_fLifetimeMin = 0.170000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 20.000000 float m_flRadiusMax = 30.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_heal_flash_glow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 204, 255, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 8.000000 float m_flStartScale = 0.500000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.150000 float m_fLifetimeMin = 0.130000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fSpeedMin = 24.000000 float m_fSpeedMax = 48.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 32.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 64.000000 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 40.000000 float m_flRadiusMax = 120.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 100 int m_nAlphaMin = 150 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 130, 255, 109, 255 ) int(4) m_ColorMax = ( 187, 255, 126, 255 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 6 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_heal_rings.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 255, 255, 55 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_SpinUpdate_0, &C_OP_SpinYaw_0, &C_OP_InterpolateRadius_0, &C_OP_FadeAndKill_0, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRotationSpeed_0, &C_INIT_RandomYaw_0, &C_INIT_RandomColor_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\particle_ring_pulled.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_OP_SpinYaw C_OP_SpinYaw_0 { int m_nSpinRateDegrees = 20 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 9.000000 float m_flStartScale = 0.000000 string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flEndFadeInTime = 0.250000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeStartTime = 0.250000 int(4) m_ColorFade = ( 47, 92, 17, 255 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 10.000000 float m_flRadiusMin = 30.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.750000 float m_fLifetimeMin = 0.300000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0 { float m_flDegreesMax = 120.000000 float m_flDegreesMin = 100.000000 string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 255, 252, 158, 255 ) int(4) m_ColorMin = ( 255, 233, 50, 255 ) string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMin = 200 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 12 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_heal_twinkle.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeAndKill_0, &C_OP_InterpolateRadius_0, &C_OP_SpinUpdate_0, &C_OP_SpinYaw_0, &C_OP_PositionLock_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRotationSpeed_0, &C_INIT_RemapSpeedToScalar_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYaw_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 int m_nOrientationType = 3 string m_hTexture = "materials\\particle\\particle_flares\\particle_flare_002.vtex" float m_flAnimationRate = 0.750000 float m_flAnimationRate2 = 0.100000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.090000 float(3) m_Gravity = ( 0.000000, 0.000000, 100.000000 ) string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flEndFadeInTime = 0.200000 float m_flStartFadeOutTime = 0.400000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.865000 float m_flEndScale = 25.000000 string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_OP_SpinYaw C_OP_SpinYaw_0 { int m_nSpinRateDegrees = 40 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 104, 136, 27, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.400012 float m_fLifetimeMax = 0.600000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 6.000000 float m_flRadiusMin = 3.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 255, 253, 196, 255 ) int(4) m_ColorMin = ( 255, 226, 109, 255 ) string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMin = 25 int m_nAlphaMax = 150 string m_Notes = "" } C_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0 { float m_flDegreesMax = 180.000000 string m_Notes = "" } C_INIT_RemapSpeedToScalar C_INIT_RemapSpeedToScalar_0 { float m_flOutputMax = 0.500000 int m_nFieldOutput = 5 float m_flInputMax = 10.000000 bool m_bPerParticle = true int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMin = 90.000000 float m_flDegreesMax = 90.000000 string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_e.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 50, 239, 174, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 float m_flStartFadeSize = 0.200000 float m_flEndFadeSize = 0.250000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\smoke\\maya_wispy\\wispy_v2.vtex" float m_flAnimationRate = 1.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) float m_fDrag = 0.100000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.800000 float m_flEndScale = 4.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.500000 float m_fLifetimeMax = 0.750000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 400.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 130.000000 float m_flRadiusMin = 110.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 4 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_ember.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0, &C_OP_VectorNoise_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0, &C_OP_AttractToControlPoint_2 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\yellowflare.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.090000 float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.500000 float m_flBias = 0.750000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { bool m_bAdditive = true float(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 ) float(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.200000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 12, 50, 38, 255 ) string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 50, 239, 174, 255 ) int(4) m_ColorMin = ( 33, 255, 122, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.200000 float m_fLifetimeMin = 0.500000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 15.000000 float m_flRadiusMin = 8.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMin = 200 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMax = 300.000000 float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 ) float m_fSpeedMin = 300.000000 float m_fSpeedMax = 350.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 400.000000, 400.000000, 400.000000 ) float(3) m_vecOutputMin = ( -400.000000, -400.000000, -400.000000 ) float m_flNoiseScaleLoc = 0.250000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 5 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 0.400000 float m_flEmitRate = 500.000000 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { float m_fForceAmount = -2000.000000 float m_fFalloffPower = 0.000000 float m_flOpEndFadeOutTime = 0.200000 int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_2 { float m_flOpEndFadeOutTime = 0.200000 float m_fFalloffPower = 0.100000 float m_fForceAmount = -4000.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_ember_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 0, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0, &C_OP_AttractToControlPoint_2 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -255.000000 ) float m_fDrag = 0.125000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.250000 float m_flEndScale = 0.000000 } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.300003 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -15.000000, -15.000000, -15.000000 ) float(3) m_vecOutputMax = ( 15.000000, 15.000000, 15.000000 ) bool m_bAdditive = true } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 12, 50, 38, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.750000 float m_fLifetimeMax = 1.500000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 3.000000 float m_flRadiusMax = 7.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_fSpeedMax = 1350.000000 float m_fSpeedMin = 900.000000 float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 1.000000 ) float m_fRadiusMax = 60.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.250000 ) } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { string m_Notes = "" float m_flNoiseScaleLoc = 0.250000 float(3) m_vecOutputMin = ( -400.000000, -400.000000, -400.000000 ) float(3) m_vecOutputMax = ( 400.000000, 400.000000, 400.000000 ) } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 63 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" int m_nControlPointNumber = 3 float m_flOpEndFadeOutTime = 0.200000 float m_fFalloffPower = 0.000000 float m_fForceAmount = -2000.000000 bool m_bDisableOperator = true } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_2 { string m_Notes = "" float m_fForceAmount = -4000.000000 float m_fFalloffPower = 0.100000 float m_flOpEndFadeOutTime = 0.200000 bool m_bDisableOperator = true } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_explosion.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 50, 239, 174, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeAndKill_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_explosion_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_ember_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_explosion_d.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_e.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_light.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_ember.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { float m_flSelfIllumAmount = 1.000000 float m_flStartFadeSize = 0.200000 float m_flEndFadeSize = 0.250000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\smoke\\maya_wispy\\wispy_v2.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) float m_fDrag = 0.100000 string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flStartAlpha = 0.000000 float m_flEndFadeInTime = 0.150000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.700000 float m_flEndScale = 3.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 0.400000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( -240.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( -230.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 100.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 220.000000 float m_flRadiusMin = 180.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_explosion_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 86, 251, 152, 225 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 4.000000 float m_flBias = 0.800000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.200000 float m_fLifetimeMin = 0.200000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fSpeedMax = 200.000000 float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 460.000000 float m_flRadiusMax = 460.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_explosion_d.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 200, 0, 0, 175 ) int m_nConstantSequenceNumber = 4 CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomTrailLength_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { float m_flSelfIllumAmount = 2.000000 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" float m_flLengthFadeInTime = 0.200000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -300.000000 ) float m_fDrag = 0.150000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.200000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 93, 20, 0, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.100000 float m_fLifetimeMax = 1.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMax = 200.000000 float(3) m_LocalCoordinateSystemSpeedMax = ( -140.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 1500.000000 int m_nControlPointNumber = 3 float m_fSpeedMin = 900.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 140.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 25.000000 float m_flRadiusMin = 15.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMaxLength = 0.200000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 94, 255, 208, 255 ) int(4) m_ColorMin = ( 8, 192, 190, 255 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 256 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_light.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 251, 152, 152, 225 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { int(4) m_ColorScale = ( 32, 215, 131, 255 ) float m_flStartFalloff = 0.100000 float m_flAlphaScale = 6.000000 float m_flRadiusScale = 2.500000 string m_Notes = "" string m_hTexture = "materials\\particle\\fire_particle_2\\fire_particle_2.vtex" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 5.000000 float m_flBias = 0.800000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 1.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.750000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fSpeedMax = 400.000000 float(3) m_LocalCoordinateSystemSpeedMax = ( -40.000000, 0.000000, 0.000000 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 120.000000 float m_flRadiusMax = 150.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 4 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 68, 199, 114, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinear_0, &C_OP_InterpolateRadius_0, &C_OP_LerpEndCapScalar_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomTrailLength_0, &C_INIT_OffsetVectorToVector_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomScalar_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRotation_0, &C_INIT_RandomAlpha_0, &C_INIT_RingWave_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_d.vpcf" }, ParticleChildrenInfo_t { bool m_bEndCap = true string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_explode.vpcf" } ] } C_OP_RenderTrails C_OP_RenderTrails_0 { float m_flSelfIllumAmount = 4.000000 string m_hTexture = "materials\\particle\\beam_jagged_01.vtex" int m_nVertCropField = 18 float m_flLengthFadeInTime = 2.000000 string m_Notes = "" bool m_bIgnoreDT = true int(4) m_trailTint = ( 0, 128, 0, 255 ) float m_flTrailEndAlpha = -10.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { float m_RateMin = -1.000000 int m_nField = 18 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.650000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { string m_Notes = "" float m_flLerpTime = 0.200000 float m_flOutput = 0.000000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 140.000000 float m_flRadiusMin = 80.000000 string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMaxLength = 3.500000 string m_Notes = "" float m_flMinLength = 5.500000 } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { string m_Notes = "" int m_nFieldOutput = 2 float(3) m_vecOutputMin = ( 0.000000, 0.000000, 120.000000 ) float(3) m_vecOutputMax = ( 0.000000, 0.000000, 145.000000 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.250000 float m_fLifetimeMax = 2.000000 } C_INIT_RandomScalar C_INIT_RandomScalar_0 { int m_nFieldOutput = 18 float m_flMax = 2.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { int m_nFieldOutput = 20 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { float m_flAlphaRandExponent = 2.500000 int m_nAlphaMax = 90 int m_nAlphaMin = 35 string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { string m_Notes = "" float m_flInitialRadius = 650.000000 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 512.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 512.000000 ) } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { string m_Notes = "" float m_flMaxTraceLength = 2048.000000 string m_CollisionGroupName = "DEBRIS" float m_flOffset = 24.000000 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 80.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 68, 199, 114, 25 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeInSimple_0, &C_OP_EndCapTimedDecay_0, &C_OP_LerpEndCapScalar_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RingWave_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RemapParticleCountToScalar_2, &C_INIT_RandomLifeTime_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 14.000000 int m_nOrientationType = 3 string m_hTexture = "materials\\particle\\beam_jagged_01.vtex" string m_Notes = "" float m_flTextureVScrollRate = 0.300000 float m_flTextureVWorldSize = 2000.000122 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" float m_flDecayTime = 0.200000 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { string m_Notes = "" float m_flLerpTime = 0.200000 float m_flOutput = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { int m_nOpEndCapState = 0 string m_Notes = "" float m_flStartScale = 0.000000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 120.000000 float m_flRadiusMax = 128.000000 } C_INIT_RingWave C_INIT_RingWave_0 { float m_flParticlesPerOrbit = 46.000000 bool m_bEvenDistribution = true float m_flInitialRadius = 650.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 512.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 512.000000 ) string m_Notes = "" } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { string m_CollisionGroupName = "DEBRIS" float m_flMaxTraceLength = 2048.000000 string m_Notes = "" float m_flOffset = 24.000000 } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { string m_Notes = "" int m_nInputMax = 1 int m_nFieldOutput = 16 bool m_bActiveRange = true } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2 { string m_Notes = "" int m_nInputMax = 1 int m_nFieldOutput = 16 float m_flOutputMin = 1.000000 float m_flOutputMax = 0.000000 bool m_bActiveRange = true bool m_bInvert = true } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 1.000000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 48 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 350.000000 int(4) m_ConstantColor = ( 86, 252, 144, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeInSimple_0, &C_OP_EndCapTimedDecay_0, &C_OP_LerpEndCapScalar_0, &C_OP_InterpolateRadius_0, &C_OP_LerpEndCapScalar_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RingWave_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RemapParticleCountToScalar_2, &C_INIT_RandomLifeTime_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { int m_bAdditive = 1 int m_nOrientationType = 3 bool m_bDisableZBuffering = false string m_hTexture = "materials\\particle\\beam_hotwhite.vtex" float m_flTextureVScrollRate = 1.000000 string m_Notes = "" float m_flTextureVWorldSize = 2000.000122 int m_nMaxTesselation = 2 int m_nMinTesselation = 2 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" int m_nOpEndCapState = 0 } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { float m_flDecayTime = 0.200000 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 float m_flLerpTime = 0.200000 string m_Notes = "" int m_nFieldOutput = 7 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 0.000000 string m_Notes = "" int m_nOpEndCapState = 0 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_2 { string m_Notes = "" float m_flLerpTime = 0.100000 float m_flOutput = 550.000000 } C_INIT_RingWave C_INIT_RingWave_0 { string m_Notes = "" float m_flInitialRadius = 650.000000 bool m_bEvenDistribution = true float m_flParticlesPerOrbit = 46.000000 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 512.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 512.000000 ) } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { string m_Notes = "" float m_flMaxTraceLength = 2048.000000 string m_CollisionGroupName = "DEBRIS" float m_flOffset = 24.000000 } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { bool m_bActiveRange = true int m_nFieldOutput = 16 int m_nInputMax = 1 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2 { bool m_bInvert = true bool m_bActiveRange = true float m_flOutputMax = 0.000000 float m_flOutputMin = 1.000000 int m_nFieldOutput = 16 int m_nInputMax = 1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.300000 float m_fLifetimeMax = 1.000000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 48 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_d.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 260.000000 int(4) m_ConstantColor = ( 86, 252, 144, 5 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeInSimple_0, &C_OP_EndCapTimedDecay_0, &C_OP_LerpEndCapScalar_0, &C_OP_InterpolateRadius_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RingWave_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RandomLifeTime_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_glow_04.vtex" string m_Notes = "" int m_nOrientationType = 2 } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { string m_Notes = "" float m_flRadiusScale = 2.000000 float m_flAlphaScale = 8.000000 float m_flStartFalloff = 0.100000 string m_hTexture = "materials\\particle\\particle_glow_04.vtex" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" float m_flDecayTime = 0.200000 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { string m_Notes = "" float m_flLerpTime = 0.200000 float m_flOutput = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { int m_nOpEndCapState = 0 string m_Notes = "" float m_flStartScale = 0.000000 } C_INIT_RingWave C_INIT_RingWave_0 { float m_flParticlesPerOrbit = 16.000000 bool m_bEvenDistribution = true float m_flInitialRadius = 650.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 512.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 512.000000 ) string m_Notes = "" } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { float m_flOffset = 128.000000 string m_CollisionGroupName = "DEBRIS" float m_flMaxTraceLength = 2048.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.100000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 16 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_explode.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 128 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantLifespan = 0.200000 int(4) m_ConstantColor = ( 68, 199, 114, 25 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_BasicMovement_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RingWave_0, &C_INIT_PositionOffset_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RemapParticleCountToScalar_2 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_explode_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_throne_wraith_king_explode.vpcf" } ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 14.000000 string m_hTexture = "materials\\particle\\beam_jagged_01.vtex" string m_Notes = "" float m_flTextureVWorldSize = 2000.000122 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 4.000000 float m_flStartScale = 0.000000 string m_Notes = "" int m_nOpEndCapState = 0 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.250000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 128.000000 float m_flRadiusMin = 120.000000 string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { float m_flInitialSpeedMax = 7550.000000 float m_flInitialSpeedMin = 7550.000000 string m_Notes = "" float m_flInitialRadius = 50.000000 bool m_bEvenDistribution = true float m_flParticlesPerOrbit = 46.000000 } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 64.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 64.000000 ) } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { bool m_bActiveRange = true int m_nFieldOutput = 16 int m_nInputMax = 1 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2 { bool m_bInvert = true bool m_bActiveRange = true float m_flOutputMax = 0.000000 float m_flOutputMin = 1.000000 int m_nFieldOutput = 16 int m_nInputMax = 1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 48 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_hellfire_eruption_tell_explode_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 90.000000 int(4) m_ConstantColor = ( 99, 255, 190, 155 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0, &C_OP_RotateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderModels C_OP_RenderModels_0 { string m_hOverrideMaterial = "" string m_EconSlotName = "" string m_ActivityName = "" int m_nSkin = 10 string m_Notes = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/particle/sphere.vmdl" } ] bool m_bAnimated = true } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.850000 float m_flStartScale = 0.000000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 1.000000 } C_OP_RotateVector C_OP_RotateVector_0 { float m_flRotRateMax = 380.000000 float m_flRotRateMin = -380.000000 float(3) m_vecRotAxisMax = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecRotAxisMin = ( -1.000000, -1.000000, -1.000000 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.500000 float m_fLifetimeMin = 0.500000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_spirit_trail_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 24.000000 float m_flConstantLifespan = 0.800000 int(4) m_ConstantColor = ( 23, 217, 119, 155 ) float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_VectorNoise_0, &C_OP_RemapParticleCountOnScalarEndCap_0, &C_OP_RemapParticleCountOnScalarEndCap_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_CreationNoise_0, &C_INIT_RemapCPtoVector_0, &C_INIT_RemapParticleCountToScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 14.000000 string m_hTexture = "materials\\particle\\beam_plasma_03.vtex" float m_flTextureVOffset = 0.300000 string m_Notes = "" float m_flTextureVScrollRate = -1.250000 float m_flTextureVWorldSize = 142.857132 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.100000 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" float m_flStartTime_min = -10.000000 float m_flStartTime_max = -10.000000 } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.080000 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -16.000000, -16.000000, -16.000000 ) float(3) m_vecOutputMax = ( 16.000000, 16.000000, 16.000000 ) bool m_bAdditive = true } C_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_0 { string m_Notes = "" bool m_bBackwards = true int m_nInputMax = 4 int m_nFieldOutput = 16 } C_OP_RemapParticleCountOnScalarEndCap C_OP_RemapParticleCountOnScalarEndCap_2 { string m_Notes = "" bool m_bBackwards = true int m_nInputMax = 4 bool m_bScaleCurrent = true } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { string m_Notes = "" int m_nFieldOutput = 7 float m_flOutputMax = 0.200000 float m_flNoiseScaleLoc = 0.100000 } C_INIT_RemapCPtoVector C_INIT_RemapCPtoVector_0 { float(3) m_vOutputMax = ( 1.000000, 1.000000, 1.000000 ) int m_nFieldOutput = 6 float(3) m_vInputMax = ( 255.000000, 255.000000, 255.000000 ) int m_nCPInput = 15 string m_Notes = "" int m_nOpScaleCP = 16 } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { bool m_bActiveRange = true bool m_bScaleInitialRange = true int m_nInputMax = 2 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 32.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_spirits_2.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 3 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( -30.000000, -30.000000, -30.000000 ) float(3) m_BoundingBoxMax = ( 30.000000, 30.000000, 30.000000 ) float m_flCullRadius = -1.000000 string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 0.750000 int(4) m_ConstantColor = ( 0, 248, 146, 255 ) int m_nConstantSequenceNumber1 = 1 float m_flMaxDrawDistance = 4000.000000 float m_flNoDrawTimeToGoToSleep = 0.100000 bool m_bShouldSort = false int m_nMinCPULevel = 1 float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0, &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_VelocityMatchingForce_0, &C_OP_SetControlPointToCenter_0, &C_OP_VectorNoise_0, &C_OP_BasicMovement_0, &C_OP_MaxVelocity_0, &C_OP_SetPerChildControlPoint_0, &C_OP_OscillateVector_0, &C_OP_RemapSpeed_0, &C_OP_Spin_0, &C_OP_SpinYaw_0, &C_OP_EndCapTimedDecay_0, &C_OP_LerpEndCapScalar_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomSequence_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomTrailLength_0, &C_INIT_NormalOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0, &C_OP_TurbulenceForce_0, &C_OP_TwistAroundAxis_0, &C_OP_AttractToControlPoint_2, &C_OP_AttractToControlPoint_4 ] CParticleOperator*[] m_Constraints = [ &C_OP_ConstrainDistance_0 ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_spirit_trail_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_spirit_trail_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/wraith_king_spirit_trail_c.vpcf" } ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { float m_flStartFalloff = 0.100000 string m_Notes = "" float m_flRadiusScale = 3.000000 float m_flAlphaScale = 4.000000 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_yellow.vtex" } C_OP_RenderModels C_OP_RenderModels_0 { bool m_bOrientZ = true string m_Notes = "" int m_nSkin = 1 string m_ActivityName = "" string m_EconSlotName = "" string m_hOverrideMaterial = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/particle/sphere3.vmdl" } ] bool m_bAnimated = true } C_OP_Decay C_OP_Decay_0 { int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_VelocityMatchingForce C_OP_VelocityMatchingForce_0 { float m_flDirScale = 0.013129 float m_flSpdScale = 0.002500 string m_Notes = "" } C_OP_SetControlPointToCenter C_OP_SetControlPointToCenter_0 { int m_nCP1 = 5 float(3) m_vecCP1Pos = ( 0.000000, 0.000000, 32.000000 ) string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { float(3) m_vecOutputMax = ( 10.000000, 10.000000, 10.000000 ) int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -10.000000, -10.000000, -10.000000 ) bool m_bAdditive = true string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 300.000000 ) float m_fDrag = 0.080000 string m_Notes = "" } C_OP_MaxVelocity C_OP_MaxVelocity_0 { float m_flMaxVelocity = 1750.000000 string m_Notes = "" } C_OP_SetPerChildControlPoint C_OP_SetPerChildControlPoint_0 { string m_Notes = "" int m_nNumControlPoints = 3 } C_OP_OscillateVector C_OP_OscillateVector_0 { string m_Notes = "" bool m_bOffset = true float(3) m_RateMin = ( -200.000000, -200.000000, -200.000000 ) float(3) m_RateMax = ( 200.000000, 200.000000, 200.000000 ) float(3) m_FrequencyMax = ( 2.000000, 2.000000, 2.000000 ) bool m_bProportional = false float m_flEndTime_min = 99999998430674944.000000 float m_flEndTime_max = 99999998430674944.000000 } C_OP_RemapSpeed C_OP_RemapSpeed_0 { bool m_bScaleInitialRange = true float m_flOutputMax = 1.500000 float m_flOutputMin = 0.750000 float m_flInputMax = 1500.000000 string m_Notes = "" } C_OP_Spin C_OP_Spin_0 { string m_Notes = "" int m_nSpinRateDegrees = 12 } C_OP_SpinYaw C_OP_SpinYaw_0 { string m_Notes = "" int m_nSpinRateDegrees = 100 } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { string m_Notes = "" float m_flDecayTime = 0.250000 } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { string m_Notes = "" float m_flLerpTime = 0.250000 float m_flOutput = 0.000000 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" float m_flPrevPosScale = 3.000000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 25.000000 float m_fRadiusMax = 25.000000 float(3) m_vecDistanceBias = ( 0.010000, 0.010000, 0.000000 ) string m_Notes = "" float m_fSpeedMax = 100.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 8.000000 float m_fLifetimeMax = 22.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 5 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMin = -5.000000 float m_flDegreesMax = 5.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMin = ( -100.000000, -100.000000, 0.000000 ) float(3) m_vecOutputMax = ( 100.000000, 100.000000, 0.000000 ) string m_Notes = "" } C_INIT_RandomTrailLength C_INIT_RandomTrailLength_0 { float m_flMinLength = 0.500000 float m_flMaxLength = 1.000000 string m_Notes = "" } C_INIT_NormalOffset C_INIT_NormalOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( -1.000000, -1.000000, -1.000000 ) float(3) m_OffsetMax = ( 1.000000, 1.000000, 1.000000 ) bool m_bNormalize = true } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 10.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 3 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { float m_fForceAmount = 80.000000 float m_fFalloffPower = -0.625000 float(3) m_vecComponentScale = ( 1.000000, 1.000000, 0.500000 ) string m_Notes = "" int m_nControlPointNumber = 3 } C_OP_TurbulenceForce C_OP_TurbulenceForce_0 { float(3) m_vecNoiseAmount0 = ( 450.000000, 450.000000, 450.000000 ) float m_flNoiseCoordScale1 = 0.100000 float(3) m_vecNoiseAmount1 = ( -510.000000, -510.000000, -510.000000 ) float m_flNoiseCoordScale2 = 3.000000 float(3) m_vecNoiseAmount2 = ( 100.000000, 100.000000, 100.000000 ) float m_flNoiseCoordScale3 = 5.000000 float(3) m_vecNoiseAmount3 = ( -300.000000, -300.000000, -300.000000 ) string m_Notes = "" } C_OP_TwistAroundAxis C_OP_TwistAroundAxis_0 { float(3) m_TwistAxis = ( 0.100000, 0.000000, 1.000000 ) bool m_bLocalSpace = true float m_fForceAmount = -150.000000 string m_Notes = "" int m_nControlPointNumber = 3 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_2 { int m_nControlPointNumber = 5 float m_fFalloffPower = -0.010000 float m_fForceAmount = -150.000000 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_4 { int m_nControlPointNumber = 5 float m_fFalloffPower = 0.500000 float m_fForceAmount = -500.000000 string m_Notes = "" } C_OP_ConstrainDistance C_OP_ConstrainDistance_0 { float m_fMaxDistance = 56.000000 string m_Notes = "" float m_fMinDistance = 15.000000 int m_nControlPointNumber = 3 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_gameplay/wraith_king_tombstone_tether.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 15 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 135, 198, 0, 255 ) CParticleOperator*[] m_Renderers = [ ] CParticleOperator*[] m_Operators = [ ] CParticleOperator*[] m_Initializers = [ ] CParticleOperator*[] m_Emitters = [ ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_gameplay/frostivus_wraithking_tombstone.vpcf" } ] } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_explosion.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 2.000000 int(4) m_ConstantColor = ( 0, 0, 0, 255 ) int m_nConstantSequenceNumber = 3 CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomAlpha_0, &C_INIT_OffsetVectorToVector_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 0 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" bool m_bIgnoreDT = true float m_flMaxLength = 128.000000 string m_Notes = "" int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.250000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.100000 float m_fLifetimeMax = 0.100000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 8.000000 float m_flRadiusMax = 24.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { float(3) m_vecOutputMax = ( 700.000000, 700.000000, 700.000000 ) float(3) m_vecOutputMin = ( -700.000000, -700.000000, -700.000000 ) int m_nFieldOutput = 2 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 32 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { float m_fFalloffPower = 0.000000 float m_fForceAmount = 700.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_explosion_flash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 127, 223, 254, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/drow_base_attack_explosion_flash_b.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/drow_base_attack_explosion.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 3.000000 float m_flStartScale = 0.500000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.850000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.150000 float m_fLifetimeMin = 0.100000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fSpeedMin = 24.000000 float m_fSpeedMax = 48.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 130.000000, 0.000000, 32.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 330.000000, 0.000000, 64.000000 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 80.000000 float m_flRadiusMax = 90.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_explosion_flash_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { bool m_bMod2X = true bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_modulate_03.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 0.500000 float m_flEndScale = 1.800000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.850000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.180000 float m_fLifetimeMax = 0.200000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 64.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 32.000000 ) float m_fSpeedMax = 48.000000 float m_fSpeedMin = 24.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 24.000000 float m_flRadiusMin = 20.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_launch.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 int m_nInitialParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeAndKill_0, &C_OP_InterpolateRadius_0, &C_OP_OscillateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { bool m_bMod2X = true bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_modulate_02.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flStartFadeOutTime = 0.750000 float m_flEndFadeInTime = 0.125000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 2.000000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMax = ( 3.000000, 3.000000, 3.000000 ) float(3) m_RateMin = ( -3.000000, -3.000000, -3.000000 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fSpeedMax = 96.000000 float m_fSpeedMin = 24.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.500000 float m_fLifetimeMin = 0.250000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 4.000000 float m_flRadiusMax = 8.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 0, 50, 67, 255 ) int(4) m_ColorMax = ( 0, 130, 173, 255 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 32 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { float m_flOpEndFadeOutTime = 0.250000 float m_fForceAmount = 1000.000000 float m_fFalloffPower = 0.000000 int m_nControlPointNumber = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_trail.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 0, 47, 90, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InheritVelocity_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { string m_hTexture = "materials\\particle\\beam_smoke_01.vtex" string m_Notes = "" float m_flTextureVWorldSize = 999.999939 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.250000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { int m_nOpEndCapState = 0 float m_flBias = 0.750000 float m_flStartTime = 0.500000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flStartTime_min = 0.050000 float m_flStartTime_max = 0.050000 float m_flEndTime_min = 0.100000 int m_nControlPointNumber = 5 float m_flEndTime_max = 0.100000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.400000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 99999.000000 float m_Rate = -12.000000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 0, 0, 0, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.350000 float m_fLifetimeMin = 0.350000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 14.000000 float m_flRadiusMin = 14.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 5 string m_Notes = "" } C_INIT_InheritVelocity C_INIT_InheritVelocity_0 { float m_flVelocityScale = 0.010000 int m_nControlPointNumber = 5 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMin = 148 int m_nAlphaMax = 148 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 32.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/drow_base_attack_trail_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 99, 166, 250, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_DistanceToCP_0, &C_OP_SetControlPointPositions_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InheritVelocity_0, &C_INIT_RandomAlpha_0, &C_INIT_RemapScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/drow_base_attack_trail.vpcf" } ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 2.000000 string m_hTexture = "materials\\particle\\beam_smoke_01.vtex" string m_Notes = "" float m_flTextureVWorldSize = 999.999939 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.250000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.000000 float m_flStartTime = 0.500000 float m_flBias = 0.750000 int m_nOpEndCapState = 0 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flEndTime_max = 0.100000 int m_nControlPointNumber = 5 float m_flEndTime_min = 0.100000 float m_flStartTime_max = 0.050000 float m_flStartTime_min = 0.050000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.900000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 float m_Rate = -12.000000 float m_flEndTime = 99999.000000 string m_Notes = "" } C_OP_DistanceToCP C_OP_DistanceToCP_0 { int m_nStartCP = 5 int m_nFieldOutput = 16 float m_flInputMax = 48.000000 float m_flInputMin = 12.000000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_SetControlPointPositions C_OP_SetControlPointPositions_0 { int m_nCP1 = 5 float(3) m_vecCP1Pos = ( -40.000000, 0.000000, 0.000000 ) int m_nCP2 = 6 float(3) m_vecCP2Pos = ( -24.000000, 0.000000, 0.000000 ) int m_nCP3 = 6 float(3) m_vecCP3Pos = ( -24.000000, 0.000000, 0.000000 ) int m_nCP4 = 6 float(3) m_vecCP4Pos = ( -32.000000, 0.000000, 0.000000 ) int m_nHeadLocation = 3 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.300000 float m_fLifetimeMax = 0.300000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 21.000000 float m_flRadiusMax = 21.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 5 string m_Notes = "" } C_INIT_InheritVelocity C_INIT_InheritVelocity_0 { int m_nControlPointNumber = 5 float m_flVelocityScale = 0.010000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 24 int m_nAlphaMin = 24 string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { bool m_bScaleInitialRange = true float m_flInputMax = 0.100000 float m_flEndTime = 0.100000 float m_flStartTime = 0.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 32.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/drow_linear_arrow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 1.000000 bool m_bShouldSort = false float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_SetControlPointsToParticle_0, &C_OP_RampScalarLinear_0, &C_OP_FadeInSimple_0, &C_OP_MovementPlaceOnGround_0, &C_OP_RemapVelocityToVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_NormalAlignToCP_0, &C_INIT_VelocityFromCP_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderModels C_OP_RenderModels_0 { string m_ActivityName = "" string m_Notes = "" string m_EconSlotName = "" string m_hOverrideMaterial = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/projectiles/drow_arrow.vmdl" } ] bool m_bAnimated = true } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0 { bool m_bSetOrientation = true int m_nFirstControlPoint = 3 string m_Notes = "" } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { float m_RateMax = 2.000000 float m_RateMin = 1.000000 int m_nField = 4 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 1.000000 string m_Notes = "" } C_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0 { int m_nRefCP1 = 3 string m_CollisionGroupName = "DEBRIS" float m_flTraceOffset = 256.000000 float m_flMaxTraceLength = 1024.000000 bool m_bIncludeWater = true float m_flOffset = 70.000000 float m_flTolerance = 96.000000 int m_nLerpCP = 3 string m_Notes = "" } C_OP_RemapVelocityToVector C_OP_RemapVelocityToVector_0 { int m_nFieldOutput = 21 bool m_bNormalize = true string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.200000 float m_fLifetimeMax = 0.200000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 213, 240, 246, 255 ) int(4) m_ColorMax = ( 213, 240, 246, 255 ) string m_Notes = "" } C_INIT_NormalAlignToCP C_INIT_NormalAlignToCP_0 { string m_Notes = "" } C_INIT_VelocityFromCP C_INIT_VelocityFromCP_0 { int m_nControlPoint = 1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/holdout_guardian_angel_wings.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 1 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 0.650000 int m_nConstantSequenceNumber1 = 1 CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_EndCapTimedDecay_0, &C_OP_RemapScalarOnceTimed_0, &C_OP_ReinitializeScalarEndCap_0, &C_OP_LerpEndCapScalar_0, &C_OP_LerpEndCapScalar_2, &C_OP_PositionLock_0, &C_OP_Orient2DRelToCP_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderModels C_OP_RenderModels_0 { bool m_bOrientZ = true bool m_bResetAnimOnStop = true string m_ActivityName = "" string m_Notes = "" string m_EconSlotName = "" string m_hOverrideMaterial = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/heroes/omniknight/omniknightwings.vmdl" } ] bool m_bAnimated = true } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { float m_flDecayTime = 0.250000 string m_Notes = "" } C_OP_RemapScalarOnceTimed C_OP_RemapScalarOnceTimed_0 { float m_flOutputMax = 2.000000 float m_flOutputMin = 2.000000 int m_nFieldOutput = 13 float m_flInputMax = 10.000000 int m_nFieldInput = 13 float m_flRemapTime = 1.800000 int m_nOpEndCapState = 0 string m_Notes = "" } C_OP_ReinitializeScalarEndCap C_OP_ReinitializeScalarEndCap_0 { float m_flOutputMax = 4.000000 float m_flOutputMin = 4.000000 int m_nFieldOutput = 13 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_0 { float m_flOutput = 0.000000 float m_flLerpTime = 0.250000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_LerpEndCapScalar C_OP_LerpEndCapScalar_2 { float m_flOutput = 0.000000 int m_nFieldOutput = 7 float m_flLerpTime = 0.250000 int m_nOpEndCapState = 1 bool m_bDisableOperator = true string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { bool m_bLockRot = true string m_Notes = "" } C_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0 { float m_flRotOffset = -90.000000 int m_nFieldOutput = 12 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 7.000000 float m_fLifetimeMax = 7.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMin = ( -2.000000, 0.000000, 0.000000 ) float(3) m_OffsetMax = ( -2.000000, 0.000000, 0.000000 ) bool m_bLocalCoords = true string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fs_bladeswipe_flash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_ColorInterpolate_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RemapScalar_0, &C_INIT_CreateFromParentParticles_0, &C_INIT_RemapParticleCountToScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flBias = 0.400000 float m_flEndScale = 0.000000 float m_flStartScale = 2.000000 int m_nOpEndCapState = 1 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 int m_nOpEndCapState = 1 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.050000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 98, 76, 62, 255 ) float m_flFadeEndTime = 0.600000 int m_nOpEndCapState = 1 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 1.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMax = ( 255, 139, 14, 255 ) int(4) m_ColorMin = ( 255, 235, 235, 255 ) } C_INIT_RemapScalar C_INIT_RemapScalar_0 { string m_Notes = "" float m_flOutputMax = 0.000000 float m_flOutputMin = 1.000000 int m_nFieldOutput = 7 float m_flInputMax = 0.100000 float m_flInputMin = 0.090000 } C_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0 { string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { float m_flOutputMax = 10.000000 float m_flOutputMin = 1.000000 int m_nInputMax = 60 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmissionDuration = 0.075000 float m_flEmitRate = 805.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fs_bladeswipe_rope.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_ColorInterpolate_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRadius_0, &C_INIT_CreateSequentialPath_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fs_bladeswipe_flash.vpcf" } ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 2.000000 string m_hTexture = "materials\\particle\\beam_streak_01.vtex" string m_Notes = "" float m_flTextureVOffset = 0.100000 float m_flTextureVScrollRate = -0.150000 float m_flTextureVWorldSize = 999.999939 int m_nMaxTesselation = 2 int m_nMinTesselation = 2 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 12.000000 float m_flEndScale = 0.000000 float m_flBias = 0.600000 int m_nOpEndCapState = 1 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 int m_nOpEndCapState = 1 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.050000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" float m_flFadeEndTime = 0.600000 int(4) m_ColorFade = ( 105, 64, 36, 255 ) int m_nOpEndCapState = 1 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.600000 float m_fLifetimeMax = 0.600000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 255, 235, 235, 255 ) int(4) m_ColorMax = ( 255, 133, 60, 255 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 8.000000 float m_flRadiusMax = 8.000000 } C_INIT_CreateSequentialPath C_INIT_CreateSequentialPath_0 { string m_Notes = "" float m_flNumToAssign = 60.000000 CPathParameters m_PathParams = CPathParameters { int m_nEndControlPointNumber = 3 int m_nStartControlPointNumber = 2 } } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { int m_nInputMax = 60 string m_Notes = "" float m_flOutputMin = 0.100000 float m_flOutputMax = 10.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 805.000000 float m_flEmissionDuration = 0.075000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fs_omnislash_attack_blur_3.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 9 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 300.000000 int(4) m_ConstantColor = ( 255, 198, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RemapDirectionToCPToVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RemapParticleCountToScalar_0, &C_INIT_RemapParticleCountToScalar_2, &C_INIT_RemapParticleCountToScalar_4, &C_INIT_RemapParticleCountToScalar_6, &C_INIT_PositionOffset_0, &C_INIT_RingWave_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fs_bladeswipe_flash.vpcf" } ] } C_OP_RenderRopes C_OP_RenderRopes_0 { float m_flSelfIllumAmount = 1.000000 int m_nOrientationType = 3 string m_hTexture = "materials\\particle\\beam_plasma_06.vtex" float m_flTextureVScrollRate = -1.000000 string m_Notes = "" float m_flTextureVWorldSize = 666.666687 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { float m_flOpEndFadeInTime = 0.500000 float m_flOpStartFadeInTime = 0.500000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.350000 float m_flEndScale = 0.000000 string m_Notes = "" float m_flStartScale = 0.500000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.650000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.200000 string m_Notes = "" } C_OP_RemapDirectionToCPToVector C_OP_RemapDirectionToCPToVector_0 { int m_nFieldOutput = 21 bool m_bNormalize = true float(3) m_vecOffsetAxis = ( 0.000000, 0.000000, 1.000000 ) float m_flOffsetRot = -70.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.180000 float m_fLifetimeMin = 0.180000 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_0 { int m_nInputMax = 8 float m_flOutputMax = 300.000000 float m_flOutputMin = 100.000000 string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_2 { int m_nInputMax = 5 int m_nFieldOutput = 7 float m_flOutputMax = 0.250000 bool m_bActiveRange = true string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_4 { int m_nInputMin = 6 int m_nInputMax = 8 int m_nFieldOutput = 7 float m_flOutputMin = 0.250000 float m_flOutputMax = 0.000000 bool m_bActiveRange = true string m_Notes = "" } C_INIT_RemapParticleCountToScalar C_INIT_RemapParticleCountToScalar_6 { float m_flOutputMin = 0.075000 int m_nInputMax = 8 int m_nFieldOutput = 1 float m_flOutputMax = 0.150000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMin = ( 20.000000, 0.000000, 80.000000 ) float(3) m_OffsetMax = ( 20.000000, 0.000000, 80.000000 ) bool m_bLocalCoords = true string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RingWave C_INIT_RingWave_0 { float m_flInitialRadius = 150.000000 bool m_bEvenDistribution = true float m_flParticlesPerOrbit = 15.000000 float m_flYaw = 160.000000 string m_Notes = "" int m_nControlPointNumber = 3 float m_flRoll = -35.000000 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 60.000000 float m_flEmissionDuration = 0.180000 string m_Notes = "" float m_flStartTime = 0.350000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fs_omnislash_slashers.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 10 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 0.800000 int m_nConstantSequenceNumber = 6 float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_Orient2DRelToCP_0, &C_OP_StopAfterCPDuration_0, &C_OP_EndCapTimedDecay_0, &C_OP_RampScalarSplineSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_SetPerChildControlPoint_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomAlpha_0, &C_INIT_RandomRadius_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RandomSecondSequence_0, &C_INIT_RandomColor_0, &C_INIT_RandomScalar_0, &C_INIT_CreateWithinSphere_0, &C_INIT_VelocityRandom_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fs_omnislash_attack_blur_3.vpcf" } ] } C_OP_RenderModels C_OP_RenderModels_0 { int m_nModelCP = 0 bool m_bOrientZ = true string m_ActivityName = "" string m_Notes = "" string m_EconSlotName = "" string m_hOverrideMaterial = "models\\heroes\\ember_spirit\\ember_spirit_remnant_2_Add.vmt" bool m_bManualAnimFrame = true int m_nManualFrameField = 18 ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/heroes/juggernaut/juggernaut.vmdl" } ] bool m_bAnimated = true } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.150000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { bool m_bDisableOperator = true float m_flFadeInTime = 0.125000 string m_Notes = "" } C_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0 { int m_nFieldOutput = 12 float m_flRotOffset = 90.000000 string m_Notes = "" } C_OP_StopAfterCPDuration C_OP_StopAfterCPDuration_0 { bool m_bDestroyImmediately = true bool m_bPlayEndCap = false string m_Notes = "" } C_OP_EndCapTimedDecay C_OP_EndCapTimedDecay_0 { float m_flDecayTime = 0.125000 string m_Notes = "" } C_OP_RampScalarSplineSimple C_OP_RampScalarSplineSimple_0 { string m_Notes = "" int m_nField = 18 float m_Rate = 16.000000 bool m_bEaseOut = true } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" int m_nField = 18 float m_Rate = 5.000000 } C_OP_SetPerChildControlPoint C_OP_SetPerChildControlPoint_0 { string m_Notes = "" int m_nFirstControlPoint = 3 int m_nNumControlPoints = 6 bool m_bSetOrientation = true bool m_bNumBasedOnParticleCount = true } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusRandExponent = 0.800000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( -20.000000, -20.000000, 200.000000 ) float(3) m_OffsetMax = ( 20.000000, 20.000000, 200.000000 ) } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { float m_flMaxTraceLength = 512.000000 string m_CollisionGroupName = "DEBRIS" string m_Notes = "" } C_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0 { int m_nSequenceMax = 35 int m_nSequenceMin = 35 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 24, 255, 0, 255 ) int(4) m_ColorMax = ( 24, 255, 0, 255 ) } C_INIT_RandomScalar C_INIT_RandomScalar_0 { string m_Notes = "" float m_flMin = 6.000000 float m_flMax = 6.000000 int m_nFieldOutput = 18 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 1 string m_Notes = "" } C_INIT_VelocityRandom C_INIT_VelocityRandom_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( 600.000000, 600.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( -600.000000, -600.000000, 0.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fs_omnislash_tgt.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ ] CParticleOperator*[] m_Operators = [ &C_OP_SetChildControlPoints_0, &C_OP_PositionLock_0, &C_OP_Decay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fs_bladeswipe_rope.vpcf" } ] } C_OP_SetChildControlPoints C_OP_SetChildControlPoints_0 { string m_Notes = "" bool m_bSetOrientation = true int m_nNumControlPoints = 2 int m_nFirstControlPoint = 2 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fRadiusMax = 70.000000 float m_fRadiusMin = 60.000000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 2 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_caster.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 204, 0, 255 ) float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_BasicMovement_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_RemapScalar_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_CreateOnModel_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fsos_flashbang.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fsos_flash.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fsos_caster_grndhit.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fsos_caster_scortch.vpcf" } ] } C_OP_RenderRopes C_OP_RenderRopes_0 { int m_bAdditive = 1 int m_nOrientationType = 3 string m_hTexture = "materials\\particle\\beam_edge_03.vtex" string m_Notes = "" float m_flTextureVWorldSize = 999.999939 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" float m_flFadeStartTime = 0.250000 float m_flFadeEndTime = 0.600000 int(4) m_ColorFade = ( 72, 32, 0, 255 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 4.000000 float m_flBias = 0.600000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 2.000000 float m_flRadiusMax = 2.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 255, 186, 69, 255 ) int(4) m_ColorMax = ( 255, 186, 69, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.600000 float m_fLifetimeMax = 0.600000 } C_INIT_RemapScalar C_INIT_RemapScalar_0 { string m_Notes = "" float m_flInputMin = 0.100000 float m_flInputMax = 0.185000 float m_flOutputMin = 1.000000 float m_flOutputMax = 0.000000 bool m_bScaleInitialRange = true } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMax = ( -5.000000, 0.000000, 125.000000 ) float(3) m_OffsetMin = ( -5.000000, 0.000000, 125.000000 ) int m_nControlPointNumber = 1 } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { string m_Notes = "" float m_flOffset = 5.000000 } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_Notes = "" string m_HitboxSetName = "low" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmissionDuration = 0.100000 float m_flEmitRate = 200.000000 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" float m_fForceAmount = -100.000000 float m_fFalloffPower = 0.000000 int m_nControlPointNumber = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_caster_grndhit.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeAndKill_0, &C_OP_InterpolateRadius_0, &C_OP_SpinUpdate_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RandomColor_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_ring_wave_10.vtex" string m_Notes = "" int m_nOrientationType = 2 float m_flAnimationRate = 0.300000 float m_flAnimationRate2 = 0.100000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.020000 } C_OP_FadeAndKill C_OP_FadeAndKill_0 { string m_Notes = "" float m_flEndFadeInTime = 0.200000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 80.000000 } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 175, 155, 156, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.350000 float m_fLifetimeMax = 0.500000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 1.500000 float m_flRadiusMin = 0.500000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 250 int m_nAlphaMax = 200 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 1 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 163, 154, 103, 255 ) int(4) m_ColorMax = ( 200, 68, 42, 255 ) } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( -5.000000, 0.000000, 125.000000 ) float(3) m_OffsetMax = ( -5.000000, 0.000000, 125.000000 ) } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { string m_Notes = "" float m_flOffset = 5.000000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 12 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_caster_scortch.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 1 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 0.350000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_FadeOutSimple_0, &C_OP_RemapScalarOnceTimed_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomSequence_0, &C_INIT_CreateWithinSphere_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderModels C_OP_RenderModels_0 { string m_hOverrideMaterial = "" string m_EconSlotName = "" string m_Notes = "" int m_nBodyGroupField = 13 int m_nAnimationField = 9 string m_ActivityName = "" bool m_bOrientZ = true float m_flAnimationRate = 60.000000 ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/particle/crater.vmdl" } ] bool m_bAnimated = true } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { string m_Notes = "" float m_flRadiusScale = 300.000000 float m_flAlphaScale = 10.000000 int(4) m_ColorScale = ( 255, 114, 0, 255 ) string m_hTexture = "materials\\models\\particle\\crater_color.vtex" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 float m_flOpEndFadeInTime = 5.000000 float m_flOpStartFadeInTime = 4.000000 float(3) m_Gravity = ( 0.000000, 0.000000, -10.000000 ) } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.100000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.450000 } C_OP_RemapScalarOnceTimed C_OP_RemapScalarOnceTimed_0 { string m_Notes = "" float m_flOutputMax = 2.000000 float m_flOutputMin = 2.000000 int m_nFieldOutput = 9 float m_flInputMin = 1.000000 int m_nFieldInput = 9 float m_flRemapTime = 0.235000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 3.000000 float m_fLifetimeMax = 3.000000 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 1 int m_nSequenceMin = 1 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMin = ( 0.000000, 0.000000, 128.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 128.000000 ) } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { string m_Notes = "" float m_flOffset = 4.000000 bool m_bSetNormal = true float m_flMaxTraceLength = 512.000000 string m_CollisionGroupName = "DEBRIS" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" int m_nFieldOutput = 12 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 0.300000 float m_flRadiusMax = 0.450000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" float m_flStartTime = 0.150000 int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_flash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 100 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 15.000000 int(4) m_ConstantColor = ( 255, 0, 0, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomColor_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRotation_0, &C_INIT_RemapScalar_0, &C_INIT_CreateFromParentParticles_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\yellowflare2.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.000000 float m_flBias = 0.400000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" float m_flFadeEndTime = 0.600000 int(4) m_ColorFade = ( 98, 96, 62, 255 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.250000 float m_fLifetimeMax = 0.250000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 255, 235, 235, 255 ) int(4) m_ColorMax = ( 255, 20, 14, 255 ) } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 80.000000 float m_flRadiusMax = 80.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMin = 50 int m_nAlphaMax = 100 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { string m_Notes = "" float m_flInputMin = 0.100000 float m_flInputMax = 0.200000 float m_flOutputMin = 1.000000 float m_flOutputMax = 3.000000 bool m_bScaleInitialRange = true } C_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { string m_Notes = "" float(3) m_OffsetMax = ( 15.000000, 0.000000, 0.000000 ) bool m_bLocalCoords = true float(3) m_OffsetMin = ( 15.000000, 0.000000, 0.000000 ) } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 350.000000 float m_flEmissionDuration = 0.150000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_flashbang.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 2 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 600.000000 int(4) m_ConstantColor = ( 0, 234, 255, 155 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_2 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fsos_flashbang_glow2.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fsos_flashbang_ray.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\anam_white.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndTime = 0.900000 float m_flBias = 0.800000 float m_flStartScale = 3.000000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 243, 209, 126, 255 ) float m_flFadeEndTime = 0.500000 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_2 { string m_Notes = "" float m_flBias = 0.250000 float m_flEndScale = 0.000000 float m_flStartTime = 0.900000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.500000 float m_fLifetimeMax = 0.500000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 1 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" float m_flDegrees = 90.000000 float m_flDegreesMax = 0.000000 bool m_bRandomlyFlipDirection = false } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 6 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_flashbang_glow2.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 20.000000 int(4) m_ConstantColor = ( 204, 255, 0, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomColor_0, &C_INIT_CreateFromParentParticles_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 4.000000 float m_flStartScale = 0.500000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.150000 float m_fLifetimeMin = 0.130000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 40.000000 float m_flRadiusMax = 120.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMax = 100 int m_nAlphaMin = 150 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 236, 255, 109, 255 ) int(4) m_ColorMax = ( 187, 255, 126, 255 ) } C_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 6 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_fsos_flashbang_ray.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 20.000000 int(4) m_ConstantColor = ( 255, 240, 77, 100 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateFromParentParticles_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\particle_flare_006.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.000000 float m_flEndScale = 5.000000 float m_flBias = 0.750000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.170000 float m_fLifetimeMax = 0.175000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 98.000000 float m_flRadiusMin = 24.000000 } C_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 5 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_omnislash_ascension.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 60 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 210, 239, 159, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_ColorInterpolate_0, &C_OP_Decay_0, &C_OP_FadeInSimple_0, &C_OP_PositionLock_0, &C_OP_RampScalarLinearSimple_0, &C_OP_FadeOutSimple_0, &C_OP_SetSingleControlPointPosition_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_PositionOffset_0, &C_INIT_RandomColor_0, &C_INIT_RingWave_0, &C_INIT_RemapScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_omnislash_ascension_sparks.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_fsos_flashbang.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_ring_wavy4.vtex" float m_flAnimationRate2 = 0.100000 float m_flAnimationRate = 1.000000 int m_nOrientationType = 2 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 1.500000 int m_nOpEndCapState = 0 float m_flBias = 0.900000 string m_Notes = "" float m_flEndScale = 0.000000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 255, 216, 0, 255 ) float m_flFadeStartTime = 0.100000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.400000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_Rate = -3.000000 int m_nField = 16 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0 { float(3) m_vecCP1Pos = ( 0.000000, 0.000000, 20.000000 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.750000 float m_fLifetimeMin = 0.850000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 175.000000 float m_flRadiusMin = 175.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float m_flNoiseScale = 3.000000 float(3) m_vecOutputMax = ( 32.000000, 32.000000, 132.000000 ) float(3) m_vecOutputMin = ( -32.000000, -32.000000, -32.000000 ) float m_flNoiseScaleLoc = 5.000000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 20.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 10.000000 ) string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 255, 143, 0, 255 ) int(4) m_ColorMax = ( 210, 239, 159, 255 ) string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { bool m_bEvenDistribution = true string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { string m_Notes = "" float m_flInputMin = 0.600000 int m_nFieldOutput = 7 float m_flOutputMin = 1.000000 float m_flOutputMax = 0.000000 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 1.000000 string m_Notes = "" float m_flEmitRate = 60.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_omnislash_ascension_sparkrays.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 150 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOut_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0, &C_OP_DistanceToCP_0, &C_OP_BasicMovement_0, &C_OP_FadeInSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomAlpha_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomSequence_0, &C_INIT_RandomRotation_0, &C_INIT_CreateFromParentParticles_0, &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white.vtex" string m_Notes = "" } C_OP_FadeOut C_OP_FadeOut_0 { string m_Notes = "" float m_flFadeOutTimeMax = 1.000000 float m_flFadeOutTimeMin = 0.400000 float m_flFadeBias = 0.800000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 0.500000 float m_flStartScale = 2.000000 } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" bool m_bAdditive = true float(3) m_vecOutputMax = ( 40.000000, 40.000000, 40.000000 ) float(3) m_vecOutputMin = ( -40.000000, -40.000000, -40.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.800000 } C_OP_DistanceToCP C_OP_DistanceToCP_0 { string m_Notes = "" int m_nStartCP = 10 float m_flInputMin = 150.000000 float m_flInputMax = 1600.000000 int m_nFieldOutput = 10 float m_flOutputMin = 0.250000 float m_flOutputMax = 0.050000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.100000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.500000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.500000 float m_fLifetimeMax = 0.600000 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0 { string m_Notes = "" float m_flVelocityScale = 1.000000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 25.000000 float m_flRadiusMin = 16.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 255, 228, 0, 255 ) int(4) m_ColorMax = ( 252, 255, 0, 255 ) } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" bool m_bInitFromKilledParentParticles = true float m_flEmitRate = 2000.000000 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" float m_fFalloffPower = 0.100000 float m_fForceAmount = 8000.000000 int m_nControlPointNumber = 10 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/juggernaut_omnislash_ascension_sparks.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 150 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_VectorNoise_0, &C_OP_SetSingleControlPointPosition_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomSequence_0, &C_INIT_RandomRotation_0, &C_INIT_RandomColor_0, &C_INIT_VelocityRandom_0, &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/juggernaut_omnislash_ascension_sparkrays.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\yellowflare.vtex" string m_Notes = "" float m_flAnimationRate = 1.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.200000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 2.000000 float m_flEndScale = 0.500000 float m_flEndTime = 0.800000 } C_OP_VectorNoise C_OP_VectorNoise_0 { string m_Notes = "" float m_fl4NoiseScale = 0.800000 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -40.000000, -40.000000, -40.000000 ) float(3) m_vecOutputMax = ( 40.000000, 40.000000, 40.000000 ) bool m_bAdditive = true } C_OP_SetSingleControlPointPosition C_OP_SetSingleControlPointPosition_0 { string m_Notes = "" float(3) m_vecCP1Pos = ( 0.000000, 0.000000, 0.000000 ) int m_nCP1 = 10 } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 20.000000 float m_flRadiusMin = 15.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.350000 float m_fLifetimeMin = 0.800000 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 255, 204, 0, 255 ) int(4) m_ColorMax = ( 218, 232, 64, 255 ) } C_INIT_VelocityRandom C_INIT_VelocityRandom_0 { string m_Notes = "" float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 500.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 100.000000 ) } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fSpeedMax = 1500.000000 float m_fSpeedMin = 500.000000 int m_nControlPointNumber = 10 float m_fRadiusMax = 160.000000 float m_fRadiusMin = 160.000000 } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 200 } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { string m_Notes = "" float m_fForceAmount = 8000.000000 float m_fFalloffPower = 0.100000 int m_nControlPointNumber = 10 float m_flOpStartFadeInTime = 0.350000 float m_flOpEndFadeInTime = 0.600000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/maiden_holdout_arcane_buff.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 512 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flNoDrawTimeToGoToSleep = 12.000000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Decay_0, &C_OP_OscillateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_PositionOffset_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RingWave_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ &C_OP_PlanarConstraint_0 ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/maiden_holdout_arcane_buff_snow_c.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/maiden_holdout_arcane_buff_caster.vpcf" } ] } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.001000 float(3) m_Gravity = ( 0.000000, 0.000000, -100.000000 ) string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float(3) m_RateMin = ( -2.000000, -2.000000, -1.000000 ) float(3) m_RateMax = ( 2.000000, 2.000000, 1.000000 ) float(3) m_FrequencyMax = ( 3.000000, 3.000000, 3.000000 ) float m_flEndTime_min = 0.700000 float m_flEndTime_max = 0.700000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 117, 175, 241, 255 ) int(4) m_ColorMin = ( 155, 214, 245, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 1.000000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 3.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 24.000000, 24.000000, 824.000000 ) float(3) m_OffsetMin = ( -24.000000, -24.000000, 634.000000 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 63 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float m_flNoiseScaleLoc = 0.100000 float(3) m_vecOutputMin = ( -64.000000, -64.000000, -64.000000 ) float(3) m_vecOutputMax = ( 64.000000, 64.000000, 64.000000 ) string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { float m_flInitialRadius = 0.600000 float m_flThickness = 0.600000 float m_flInitialSpeedMax = 0.200000 int m_nOverrideCP = 1 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 400.000000 string m_Notes = "" } C_OP_PlanarConstraint C_OP_PlanarConstraint_0 { string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/maiden_holdout_arcane_buff_caster.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 200 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flNoDrawTimeToGoToSleep = 12.000000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Decay_0, &C_OP_MovementRotateParticleAroundAxis_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_PositionOffset_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_CreateWithinSphere_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks3.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.010000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.150000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_MovementRotateParticleAroundAxis C_OP_MovementRotateParticleAroundAxis_0 { float m_flRotRate = -75.000000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 117, 175, 241, 255 ) int(4) m_ColorMin = ( 155, 214, 245, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 10.000000 float m_fLifetimeMin = 8.000000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 2.000000 float m_flRadiusMax = 4.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 155 int m_nAlphaMin = 55 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 50.000000, 0.000000, 50.000000 ) float(3) m_OffsetMin = ( 40.000000, 0.000000, 32.000000 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMin = -360.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 63 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float m_flNoiseScale = 0.500000 float m_flNoiseScaleLoc = 0.000000 float(3) m_vecOutputMin = ( -16.000000, -16.000000, 0.000000 ) float(3) m_vecOutputMax = ( 16.000000, 16.000000, 45.000000 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMax = 52.000000 float m_fSpeedMin = -82.000000 float m_fSpeedMax = -12.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 6.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/maiden_holdout_arcane_buff_snow_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flNoDrawTimeToGoToSleep = 12.000000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_FadeInSimple_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_SpinUpdate_0, &C_OP_FadeOutSimple_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_RandomSecondSequence_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotationSpeed_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0, &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { symbol m_nSequenceCombineMode = SEQUENCE_COMBINE_MODE_ALPHA_FROM0_RGB_FROM_1 float m_flZoomRate1 = 4.000000 bool m_bMaxLuminanceBlendingSequence0 = false bool m_bMaxLuminanceBlendingSequence1 = true float m_flStartFadeSize = 1.000000 float m_flEndFadeSize = 1.400000 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\smoke3\\smoke3b.vtex" int m_nOrientationType = 2 float m_flAnimationRate = 0.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 25.000000 ) float m_fDrag = 0.001000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 3.000000 float m_flEndScale = 1.500000 float m_flBias = 0.750000 string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.750000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 29, 155, 221, 255 ) int(4) m_ColorMax = ( 117, 175, 241, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 2.000000 float m_fLifetimeMax = 2.250000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 50.000000 float m_flRadiusMax = 75.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 10 int m_nAlphaMin = 5 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 5 string m_Notes = "" } C_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0 { int m_nSequenceMin = 9 int m_nSequenceMax = 10 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.500000 float m_fRadiusMax = 1.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 0.000000 ) int m_nScaleCP = 1 string m_Notes = "" } C_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0 { float m_flDegreesMin = 14.000000 float m_flDegreesMax = 24.000000 bool m_bRandomlyFlipDirection = false string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 30.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 12 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_core_linear.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 55 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 25.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 1.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 32 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_SetControlPointsToParticle_0, &C_OP_MovementPlaceOnGround_0 ] CParticleOperatorInstance*[] m_Renderers = [ ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomColor_0, &C_INIT_VelocityFromCP_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_core_linear_glow.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_core_linear_light.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false } ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 ) float m_fDrag = 0.000000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = 1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 int m_nFieldOutput = 7 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.000000 float m_flEndTime = 1.000000 float m_flStartScale = 1.000000 float m_flEndScale = 2.000000 bool m_bEaseInAndOut = false float m_flBias = 0.500000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0 { int m_nChildGroupID = 0 int m_nFirstControlPoint = 3 int m_nNumControlPoints = 1 int m_nFirstSourcePoint = 0 bool m_bSetOrientation = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0 { float m_flOffset = 0.000000 float m_flMaxTraceLength = 128.000000 float m_flTolerance = 32.000000 float m_flTraceOffset = 64.000000 float m_flLerpRate = 0.000000 string m_CollisionGroupName = "NONE" int m_nRefCP1 = -1 int m_nRefCP2 = -1 int m_nLerpCP = -1 bool m_bKill = false bool m_bIncludeWater = false bool m_bSetNormal = false bool m_bScaleOffset = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 0.600000 float m_fLifetimeRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 0.000000 float(3) m_vecDistanceBias = ( 1.000000, 1.000000, 1.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 0 int m_nScaleCP = -1 float m_fSpeedMin = 0.000000 float m_fSpeedMax = 0.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nFieldOutput = 7 int m_nAlphaMin = 25 int m_nAlphaMax = 50 float m_flAlphaRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 30.000000 float m_flRadiusMax = 50.000000 float m_flRadiusRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMin = 0.000000 float m_flDegreesMax = 360.000000 float m_flDegrees = 0.000000 int m_nFieldOutput = 4 float m_flRotationRandExponent = 1.000000 bool m_bRandomlyFlipDirection = true bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMin = 0 int m_nSequenceMax = 2 bool m_bShuffle = false bool m_bLinear = false bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { float m_flPercent = 0.500000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { uint(4) m_ColorMin = ( 234, 89, 106, 255 ) uint(4) m_ColorMax = ( 162, 9, 9, 255 ) uint(4) m_TintMin = ( 0, 0, 0, 0 ) uint(4) m_TintMax = ( 255, 255, 255, 255 ) float m_flTintPerc = 0.000000 float m_flUpdateThreshold = 32.000000 int m_nTintCP = 0 int m_nFieldOutput = 6 symbol m_nTintBlendMode = 0 float m_flLightAmplification = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_VelocityFromCP C_INIT_VelocityFromCP_0 { int m_nControlPoint = 1 int m_nControlPointCompare = -1 int m_nControlPointLocal = -1 float m_flVelocityScale = 1.000000 bool m_bDirectionOnly = false bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 0.000000 float m_flStartTime = 0.000000 float m_flEmitRate = 100.000000 float m_flEmissionScale = 0.000000 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 bool m_bScalePerParticle = false bool m_bInitFromKilledParentParticles = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_core_linear_flare.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 25.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_SpinUpdate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotationSpeed_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_white_v2.vtex" int m_nOrientationType = 2 string m_Notes = "" float m_flAnimationRate = 0.750000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 3.000000 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 0.600000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 50.000000 float m_flRadiusMin = 50.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { bool m_bRandomlyFlipDirection = false string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 234, 89, 106, 255 ) int(4) m_ColorMax = ( 255, 159, 159, 255 ) } C_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0 { float m_flDegreesMax = 40.000000 float m_flDegreesMin = 40.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 15.000000 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_core_linear_glow.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 25.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_core_linear_flare.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_glow_01.vtex" float m_flAnimationRate = 0.750000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 3.000000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.600000 float m_fLifetimeMin = 0.400000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMin = 25 int m_nAlphaMax = 50 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 100.000000 float m_flRadiusMax = 125.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 2 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 162, 9, 9, 255 ) int(4) m_ColorMin = ( 234, 89, 106, 255 ) string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 15.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_core_linear_light.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 25.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { float m_flStartFalloff = 0.100000 float m_flAlphaScale = 5.000000 float m_flRadiusScale = 3.000000 string m_Notes = "" string m_hTexture = "materials\\particle\\particle_glow_01.vtex" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 3.000000 } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 0.600000 } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" int m_nControlPointNumber = 3 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 125.000000 float m_flRadiusMin = 100.000000 } C_INIT_RandomColor C_INIT_RandomColor_0 { string m_Notes = "" int(4) m_ColorMin = ( 234, 89, 106, 255 ) int(4) m_ColorMax = ( 162, 9, 9, 255 ) } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_core_linear_ring.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 25.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_SpinUpdate_0, &C_OP_FadeInSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotationSpeed_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_ring_wave_8.vtex" float m_flAnimationRate = 0.750000 string m_Notes = "" int m_nOrientationType = 2 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 3.000000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 157, 0, 0, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.600000 float m_fLifetimeMin = 0.400000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 100.000000 float m_flRadiusMax = 100.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" bool m_bRandomlyFlipDirection = false } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 255, 159, 159, 255 ) int(4) m_ColorMin = ( 251, 133, 147, 255 ) string m_Notes = "" } C_INIT_RandomRotationSpeed C_INIT_RandomRotationSpeed_0 { string m_Notes = "" float m_flDegreesMin = 90.000000 float m_flDegreesMax = 90.000000 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 10.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_explosion_flash_linear.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_glow_05.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 0.500000 float m_flEndScale = 1.800000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.850000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 251, 171, 171, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.180000 float m_fLifetimeMax = 0.200000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fSpeedMax = 48.000000 float m_fSpeedMin = 24.000000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 124.000000 float m_flRadiusMin = 20.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_explosion_linear.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 162, 162, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_explosion_points_linear.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_explosion_points_b_linear.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_explosion_flash_linear.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, -200.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 3.000000 float m_flStartScale = 0.500000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.850000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.250000 float m_fLifetimeMin = 0.200000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float m_fSpeedMin = 24.000000 float m_fSpeedMax = 48.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 130.000000, 0.000000, 32.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 330.000000, 0.000000, 64.000000 ) string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 80.000000 float m_flRadiusMax = 90.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_explosion_points_b_linear.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 2.000000 int(4) m_ConstantColor = ( 226, 202, 255, 255 ) int m_nConstantSequenceNumber = 6 CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_BasicMovement_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 0 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" float m_flLengthFadeInTime = 0.100000 string m_Notes = "" int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.000000 float m_flBias = 0.250000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, -800.000000 ) string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 149, 0, 10, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.500000 float m_fLifetimeMin = 0.200000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 float(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 0.000000 ) float m_fSpeedMax = 1200.000000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 24.000000 float m_flRadiusMin = 8.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 64 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_explosion_points_linear.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 2.000000 int(4) m_ConstantColor = ( 226, 208, 249, 255 ) int m_nConstantSequenceNumber = 3 CParticleOperator*[] m_Renderers = [ &C_OP_RenderTrails_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_LerpScalar_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRadius_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomAlpha_0, &C_INIT_OffsetVectorToVector_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderTrails C_OP_RenderTrails_0 { int m_bAdditive = 0 string m_hTexture = "materials\\particle\\sparks\\sparks.vtex" float m_flLengthFadeInTime = 1.000000 bool m_bIgnoreDT = true float m_flMaxLength = 128.000000 string m_Notes = "" int(4) m_trailTint = ( 255, 255, 255, 255 ) float m_flTrailEndAlpha = 0.000000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.250000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_LerpScalar C_OP_LerpScalar_0 { float m_flOutput = 2.000000 int m_nFieldOutput = 10 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeStartTime = 0.200000 int(4) m_ColorFade = ( 0, 0, 0, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.200000 float m_fLifetimeMax = 0.200000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float(3) m_LocalCoordinateSystemSpeedMax = ( 130.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMin = ( 330.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 8.000000 float m_flRadiusMax = 24.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_OffsetVectorToVector C_INIT_OffsetVectorToVector_0 { float(3) m_vecOutputMax = ( 700.000000, 700.000000, 700.000000 ) float(3) m_vecOutputMin = ( -700.000000, -700.000000, -700.000000 ) int m_nFieldOutput = 2 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 32 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { float m_fFalloffPower = 0.000000 float m_fForceAmount = 700.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_glow_linear.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 25.000000 int(4) m_ConstantColor = ( 255, 255, 255, 55 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomAlpha_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomColor_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_glow_01.vtex" float m_flAnimationRate = 0.750000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flEndTime_max = 0.600000 float m_flEndTime_min = 0.500000 float m_flStartTime_max = 0.250000 float m_flStartTime_min = 0.150000 int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.600000 float m_fLifetimeMin = 0.400000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 3 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMin = 25 int m_nAlphaMax = 50 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 30.000000 float m_flRadiusMax = 50.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 2 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 162, 9, 9, 255 ) int(4) m_ColorMin = ( 234, 89, 106, 255 ) string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 25.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_linear.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = -1.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 1.650000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 1.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 4 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_SetControlPointsToParticle_0, &C_OP_CPOffsetToPercentageBetweenCPs_0, &C_OP_RampScalarLinear_0, &C_OP_SpinUpdate_0, &C_OP_MovementPlaceOnGround_0 ] CParticleOperatorInstance*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomSecondSequence_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRotation_0, &C_INIT_VelocityFromCP_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_explosion_linear.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_trail_linear.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_trail_c_linear.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_glow_linear.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false } ] bool m_bShouldSort = false bool m_bShouldBatch = false } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 0.000000 ) float m_fDrag = 0.000000 int m_nMaxConstraintPasses = 3 bool m_bLockULCorner = false bool m_bLockURCorner = false bool m_bLockLLCorner = false bool m_bLockLRCorner = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = 1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.000000 float m_flEndTime = 1.000000 float m_flStartScale = 0.500000 float m_flEndScale = 1.000000 bool m_bEaseInAndOut = false float m_flBias = 0.500000 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0 { int m_nChildGroupID = 0 int m_nFirstControlPoint = 3 int m_nNumControlPoints = 1 int m_nFirstSourcePoint = 0 bool m_bSetOrientation = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_CPOffsetToPercentageBetweenCPs C_OP_CPOffsetToPercentageBetweenCPs_0 { float m_flInputMin = 1.000000 float m_flInputMax = 0.000000 float m_flInputBias = 0.125000 int m_nStartCP = 0 int m_nEndCP = 1 int m_nOffsetCP = 1 int m_nOuputCP = 4 int m_nInputCP = 3 bool m_bRadialCheck = true bool m_bScaleOffset = true float(3) m_vecOffset = ( 0.000000, 0.000000, 0.150000 ) bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { float m_RateMin = 30.000000 float m_RateMax = 30.000000 float m_flStartTime_min = 0.000000 float m_flStartTime_max = 0.000000 float m_flEndTime_min = 1.000000 float m_flEndTime_max = 1.000000 int m_nField = 12 bool m_bProportionalOp = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_MovementPlaceOnGround C_OP_MovementPlaceOnGround_0 { float m_flOffset = 0.000000 float m_flMaxTraceLength = 128.000000 float m_flTolerance = 32.000000 float m_flTraceOffset = 64.000000 float m_flLerpRate = 0.000000 string m_CollisionGroupName = "NONE" int m_nRefCP1 = -1 int m_nRefCP2 = -1 int m_nLerpCP = -1 bool m_bKill = false bool m_bIncludeWater = false bool m_bSetNormal = false bool m_bScaleOffset = false bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_RenderModels C_OP_RenderModels_0 { string m_ActivityName = "" string m_EconSlotName = "" ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/heroes/queenofpain/queenofpain_weapon.vmdl" float m_flRelativeProbabilityOfSpawn = 1.000000 } ] bool m_bIgnoreNormal = false bool m_bOrientZ = true bool m_bScaleAnimationRate = false bool m_bResetAnimOnStop = false bool m_bManualAnimFrame = false int m_nAnimationScaleField = 10 int m_nSkin = 0 int m_nBodyGroupField = 9 int m_nSubModelField = 18 int m_nAnimationField = 13 int m_nManualFrameField = 8 string m_hOverrideMaterial = "" int m_nSkinCP = -1 int m_nModelCP = -1 float m_flAnimationRate = 30.000000 bool m_bAnimated = true bool m_bForceDrawInterlevedWithSiblings = false CParticleVisibilityInputs VisibilityInputs = CParticleVisibilityInputs { float m_flCameraBias = 0.000000 float m_flInputMin = 0.000000 float m_flInputMax = 0.000000 float m_flAlphaScaleMin = 0.000000 float m_flAlphaScaleMax = 1.000000 float m_flRadiusScaleMin = 1.000000 float m_flRadiusScaleMax = 1.000000 float m_flRadiusScaleFOVBase = 0.000000 float m_flProxyRadius = 1.000000 float m_flDistanceInputMin = 0.000000 float m_flDistanceInputMax = 0.000000 float m_flDotInputMin = 0.000000 float m_flDotInputMax = 0.000000 float m_flNoPixelVisibilityFallback = 1.000000 int m_nCPin = -1 } bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMin = 0.000000 float m_fRadiusMax = 0.000000 float(3) m_vecDistanceBias = ( 0.000000, 0.000000, 0.000000 ) float(3) m_vecDistanceBiasAbs = ( 0.000000, 0.000000, 0.000000 ) int m_nControlPointNumber = 0 int m_nScaleCP = -1 float m_fSpeedMin = 0.000000 float m_fSpeedMax = 0.000000 float m_fSpeedRandExp = 1.000000 bool m_bLocalCoords = false bool m_bUseHighestEndCP = false float m_flEndCPGrowthTime = 0.000000 float(3) m_LocalCoordinateSystemSpeedMin = ( 0.000000, 0.000000, 0.000000 ) float(3) m_LocalCoordinateSystemSpeedMax = ( 0.000000, 0.000000, 0.000000 ) bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.100000 float m_fLifetimeMax = 0.100000 float m_fLifetimeRandExponent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0 { int m_nSequenceMin = 1 int m_nSequenceMax = 1 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { float m_flPercent = 1.000000 bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = true float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMin = 0.000000 float m_flDegreesMax = 0.000000 float m_flDegrees = 90.000000 int m_nFieldOutput = 4 float m_flRotationRandExponent = 1.000000 bool m_bRandomlyFlipDirection = true bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_VelocityFromCP C_INIT_VelocityFromCP_0 { int m_nControlPoint = 1 int m_nControlPointCompare = -1 int m_nControlPointLocal = -1 float m_flVelocityScale = 1.000000 bool m_bDirectionOnly = false bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_linear_glow_core.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 1.650000 bool m_bShouldSort = false float m_flMaxRecreationTime = -1.000000 CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_SetControlPointsToParticle_0, &C_OP_CPOffsetToPercentageBetweenCPs_0, &C_OP_RampScalarLinear_0, &C_OP_SpinUpdate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_CreateWithinSphere_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomSecondSequence_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomRotation_0, &C_INIT_VelocityFromCP_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_explosion_linear.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_trail_linear.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_trail_c_linear.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_glow_linear.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\models\\heroes\\queenofpain\\queenofpain_weapon.vtex" string m_Notes = "" float m_flAnimationRate = 0.750000 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" int m_nOpEndCapState = 1 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 string m_Notes = "" float m_flStartScale = 0.500000 } C_OP_SetControlPointsToParticle C_OP_SetControlPointsToParticle_0 { string m_Notes = "" int m_nFirstControlPoint = 3 bool m_bSetOrientation = true } C_OP_CPOffsetToPercentageBetweenCPs C_OP_CPOffsetToPercentageBetweenCPs_0 { string m_Notes = "" float m_flInputMin = 1.000000 float m_flInputMax = 0.000000 int m_nOffsetCP = 1 float(3) m_vecOffset = ( 0.000000, 0.000000, 0.150000 ) float m_flInputBias = 0.125000 bool m_bScaleOffset = true } C_OP_RampScalarLinear C_OP_RampScalarLinear_0 { string m_Notes = "" int m_nField = 12 float m_RateMin = 30.000000 float m_RateMax = 30.000000 } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" float m_fRadiusMax = 85.000000 float(3) m_vecDistanceBias = ( 0.050000, 1.000000, 0.000000 ) } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.100000 float m_fLifetimeMin = 0.100000 } C_INIT_RandomSecondSequence C_INIT_RandomSecondSequence_0 { string m_Notes = "" int m_nSequenceMin = 1 int m_nSequenceMax = 1 } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" bool m_bDisableOperator = true float m_flPercent = 1.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" float m_flDegrees = 90.000000 float m_flDegreesMax = 0.000000 } C_INIT_VelocityFromCP C_INIT_VelocityFromCP_0 { int m_nControlPoint = 1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { string m_Notes = "" int m_nParticlesToEmit = 1 } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_linear_parent.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { int m_nInitialParticles = 0 float(3) m_BoundingBoxMin = ( -10.000000, -10.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( 10.000000, 10.000000, 10.000000 ) int m_nSnapshotControlPoint = 0 string m_pszSnapshotName = "" string m_pszTargetLayerID = "" string m_hReferenceReplacement = "" string m_pszCullReplacementName = "" float m_flCullRadius = 0.000000 float m_flCullFillCost = 1.000000 int m_nCullControlPoint = 0 float m_flMaxRecreationTime = 0.000000 string m_hFallback = "" int m_nFallbackMaxCount = -1 string m_hLowViolenceDef = "" uint(4) m_ConstantColor = ( 255, 255, 255, 255 ) float(3) m_ConstantNormal = ( 0.000000, 0.000000, 1.000000 ) float m_flConstantRadius = 5.000000 float m_flConstantRotation = 0.000000 float m_flConstantRotationSpeed = 0.000000 float m_flConstantLifespan = 1.000000 int m_nConstantSequenceNumber = 0 int m_nConstantSequenceNumber1 = 0 int m_nGroupID = 0 float m_flMaximumTimeStep = 0.100000 float m_flMaximumSimTime = 0.000000 float m_flMinimumSimTime = 0.000000 float m_flMinimumTimeStep = 0.000000 int m_nMinimumFrames = 0 int m_nMinCPULevel = 0 int m_nMinGPULevel = 0 bool m_bViewModelEffect = false bool m_bScreenSpaceEffect = false float m_flMaxDrawDistance = 100000.000000 float m_flStartFadeDistance = 200000.000000 float m_flNoDrawTimeToGoToSleep = 8.000000 int m_nMaxParticles = 1000 int m_nSkipRenderControlPoint = -1 int m_nAllowRenderControlPoint = -1 int m_nAggregationMinAvailableParticles = 0 float m_flAggregateRadius = 0.000000 float m_flStopSimulationAfterTime = 1000000000.000000 float(3) m_vControlPoint1DefaultOffsetRelativeToControlPoint0 = ( 0.000000, 0.000000, 0.000000 ) string m_Name = "" CParticleOperatorInstance*[] m_Operators = [ &C_OP_SetPerChildControlPoint_0 ] CParticleOperatorInstance*[] m_Renderers = [ ] CParticleOperatorInstance*[] m_Initializers = [ &C_INIT_RingWave_0 ] CParticleOperatorInstance*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperatorInstance*[] m_ForceGenerators = [ ] CParticleOperatorInstance*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_linear.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_linear.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_linear.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_linear.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_linear.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false }, ParticleChildrenInfo_t { string m_ChildRef = "particles/frostivus_herofx/queen_shadow_strike_core_linear.vpcf" bool m_bPreventNameBasedLookup = false float m_flDelay = 0.000000 bool m_bEndCap = false bool m_bDisableChild = false } ] bool m_bShouldSort = true bool m_bShouldBatch = false } C_OP_SetPerChildControlPoint C_OP_SetPerChildControlPoint_0 { int m_nChildGroupID = 0 int m_nFirstControlPoint = 0 int m_nNumControlPoints = 3 int m_nFirstSourcePoint = 0 bool m_bSetOrientation = false bool m_bNumBasedOnParticleCount = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { int m_nControlPointNumber = 0 int m_nOverrideCP = -1 int m_nOverrideCP2 = -1 float m_flParticlesPerOrbit = 5.000000 float m_flInitialRadius = 75.000000 float m_flThickness = 0.000000 float m_flInitialSpeedMin = 0.000000 float m_flInitialSpeedMax = 0.000000 float m_flRoll = 0.000000 float m_flPitch = 0.000000 float m_flYaw = 0.000000 bool m_bEvenDistribution = true bool m_bXYVelocityOnly = true bool m_bRunForParentApplyKillList = true bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 5 int m_nMinParticlesToEmit = -1 float m_flStartTime = 0.000000 float m_flStartTimeMax = -1.000000 float m_flInitFromKilledParentParticles = 0.000000 int m_nMaxEmittedPerFrame = -1 int m_nScaleControlPoint = -1 int m_nScaleControlPointField = 0 int m_nSnapshotControlPoint = -1 bool m_bDisableOperator = false float m_flOpStartFadeInTime = 0.000000 float m_flOpEndFadeInTime = 0.000000 float m_flOpStartFadeOutTime = 0.000000 float m_flOpEndFadeOutTime = 0.000000 float m_flOpFadeOscillatePeriod = 0.000000 float m_flOpTimeOffsetMin = 0.000000 float m_flOpTimeOffsetMax = 0.000000 int m_nOpTimeOffsetSeed = 0 int m_nOpStrengthScaleSeed = 0 float m_flOpStrengthMinScale = 1.000000 float m_flOpStrengthMaxScale = 1.000000 int m_nOpTimeScaleSeed = 0 float m_flOpTimeScaleMin = 1.000000 float m_flOpTimeScaleMax = 1.000000 int m_nOpEndCapState = -1 int m_nOpScaleCP = -1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_trail_c_linear.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 107, 107, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_SetControlPointPositions_0, &C_OP_DistanceToCP_0, &C_OP_VectorNoise_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InheritVelocity_0, &C_INIT_RandomAlpha_0, &C_INIT_RemapScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\beam_generic_2.vtex" string m_Notes = "" float m_flTextureVWorldSize = 999.999939 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.250000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { int m_nOpEndCapState = 0 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flStartTime_min = 0.050000 float m_flStartTime_max = 0.050000 float m_flEndTime_min = 0.100000 int m_nControlPointNumber = 5 float m_flEndTime_max = 0.100000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.900000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 99999.000000 float m_Rate = -12.000000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_SetControlPointPositions C_OP_SetControlPointPositions_0 { int m_nHeadLocation = 3 float(3) m_vecCP4Pos = ( 0.000000, 0.000000, 0.000000 ) int m_nCP4 = 6 float(3) m_vecCP3Pos = ( 0.000000, 0.000000, 0.000000 ) int m_nCP3 = 6 float(3) m_vecCP2Pos = ( 0.000000, 0.000000, 0.000000 ) int m_nCP2 = 6 float(3) m_vecCP1Pos = ( 0.000000, 0.000000, 0.000000 ) int m_nCP1 = 5 string m_Notes = "" } C_OP_DistanceToCP C_OP_DistanceToCP_0 { int m_nOpEndCapState = 1 float m_flInputMin = 12.000000 float m_flInputMax = 48.000000 int m_nFieldOutput = 16 int m_nStartCP = 5 string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { float m_fl4NoiseScale = 0.900000 int m_nFieldOutput = 0 float(3) m_vecOutputMin = ( -2.000000, -2.000000, -2.000000 ) float(3) m_vecOutputMax = ( 2.000000, 2.000000, 2.000000 ) bool m_bAdditive = true string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 129, 0, 0, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.900000 float m_fLifetimeMin = 0.900000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 4.000000 float m_flRadiusMin = 4.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { int m_nControlPointNumber = 5 float m_fRadiusMin = 20.000000 float m_fRadiusMax = 20.000000 string m_Notes = "" } C_INIT_InheritVelocity C_INIT_InheritVelocity_0 { float m_flVelocityScale = 0.010000 int m_nControlPointNumber = 5 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { float m_flStartTime = 0.000000 float m_flEndTime = 0.100000 float m_flInputMax = 0.100000 bool m_bScaleInitialRange = true string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 32.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/frostivus_herofx/queen_shadow_strike_trail_linear.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 107, 107, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderRopes_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_SetControlPointPositions_0, &C_OP_DistanceToCP_0, &C_OP_VectorNoise_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateWithinSphere_0, &C_INIT_InheritVelocity_0, &C_INIT_RandomAlpha_0, &C_INIT_RemapScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderRopes C_OP_RenderRopes_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\beam_generic_2.vtex" string m_Notes = "" float m_flTextureVWorldSize = 999.999939 int m_nMaxTesselation = 3 int m_nMinTesselation = 3 } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.250000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.000000 int m_nOpEndCapState = 0 string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { float m_flEndTime_max = 0.100000 int m_nControlPointNumber = 5 float m_flEndTime_min = 0.100000 float m_flStartTime_max = 0.050000 float m_flStartTime_min = 0.050000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.900000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.100000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 float m_Rate = -12.000000 float m_flEndTime = 99999.000000 string m_Notes = "" } C_OP_SetControlPointPositions C_OP_SetControlPointPositions_0 { int m_nCP1 = 5 float(3) m_vecCP1Pos = ( 0.000000, 0.000000, 0.000000 ) int m_nCP2 = 6 float(3) m_vecCP2Pos = ( 0.000000, 0.000000, 0.000000 ) int m_nCP3 = 6 float(3) m_vecCP3Pos = ( 0.000000, 0.000000, 0.000000 ) int m_nCP4 = 6 float(3) m_vecCP4Pos = ( 0.000000, 0.000000, 0.000000 ) int m_nHeadLocation = 3 string m_Notes = "" } C_OP_DistanceToCP C_OP_DistanceToCP_0 { int m_nStartCP = 5 int m_nFieldOutput = 16 float m_flInputMax = 48.000000 float m_flInputMin = 12.000000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_VectorNoise C_OP_VectorNoise_0 { bool m_bAdditive = true float(3) m_vecOutputMax = ( 2.000000, 2.000000, 2.000000 ) float(3) m_vecOutputMin = ( -2.000000, -2.000000, -2.000000 ) int m_nFieldOutput = 0 float m_fl4NoiseScale = 0.900000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 129, 0, 0, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.750000 float m_fLifetimeMax = 0.750000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 8.000000 float m_flRadiusMax = 8.000000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { float m_fRadiusMax = 10.000000 float m_fRadiusMin = 10.000000 int m_nControlPointNumber = 5 string m_Notes = "" } C_INIT_InheritVelocity C_INIT_InheritVelocity_0 { int m_nControlPointNumber = 5 float m_flVelocityScale = 0.010000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { bool m_bScaleInitialRange = true float m_flInputMax = 0.100000 float m_flEndTime = 0.100000 float m_flStartTime = 0.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 32.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/material_change.vpcf ================================================ { _class = "CParticleSystemDefinition" m_bShouldHitboxesFallbackToRenderBounds = false m_nMaxParticles = 1 m_flConstantRadius = 1.000000 m_ConstantColor = [ 0, 0, 0, 255, ] m_nConstantSequenceNumber1 = 18 m_bShouldSort = false m_Renderers = [ { _class = "C_OP_RenderModels" m_nManualFrameField = 18 m_nSubModelField = 19 m_nBodyGroupField = 19 m_bManualAnimFrame = true m_bOrientZ = true m_nSkin = 1 m_nModelCP = 0 m_hOverrideMaterial = resource:"materials/models/blob/pedestal_ice_surface.vmat" m_bSuppressTint = true m_ModelList = [ { m_model = resource:"models/heroes/storm_spirit/storm_spirit.vmdl" }, ] m_bAnimated = true m_bForceDrawInterlevedWithSiblings = true m_nLOD = 1 m_bIgnoreNormal = true m_nAnimationScaleField = 18 }, ] m_Operators = [ { _class = "C_OP_BasicMovement" }, { _class = "C_OP_PositionLock" }, { _class = "C_OP_Orient2DRelToCP" m_nFieldOutput = 12 m_flRotOffset = 90.000000 m_flOpStartFadeOutTime = 0.100000 m_flOpEndFadeOutTime = 0.100000 m_bDisableOperator = true }, { _class = "C_OP_RemapCPtoScalar" m_flOutputMax = 10.000000 m_flInputMax = 10.000000 m_nCPInput = 2 m_nField = 1 }, { _class = "C_OP_OscillateScalarSimple" m_nField = 3 m_Rate = 1.000000 m_Frequency = 255.000000 m_bDisableOperator = true }, { _class = "C_OP_EndCapTimedDecay" }, { _class = "C_OP_RampScalarLinearSimple" m_flEndTime = 0.500000 m_Rate = 30.000000 m_nField = 18 m_bDisableOperator = true }, { _class = "C_OP_OscillateScalarSimple" m_Rate = 15.000000 m_Frequency = 0.500000 m_nField = 18 m_flOscMult = 1.000000 m_flOscAdd = 0.000000 m_bDisableOperator = true }, { _class = "C_OP_RemapCPOrientationToRotations" }, { _class = "C_OP_SequenceFromModel" m_nFieldOutput = 13 m_nFieldOutputAnim = 18 m_flInputMax = 4000.000000 m_flOutputMax = 4000.000000 }, { _class = "C_OP_RemapScalar" m_nFieldInput = 18 m_nFieldOutput = 18 m_flInputMax = 100.000000 m_flOutputMax = 3000.000000 }, ] m_Initializers = [ { _class = "C_INIT_RandomLifeTime" m_fLifetimeMin = 1.000000 m_fLifetimeMax = 1.000000 }, { _class = "C_INIT_CreateWithinSphere" }, { _class = "C_INIT_PositionOffset" m_OffsetMin = [ 2.000000, 0.000000, 0.000000, ] m_OffsetMax = [ 2.000000, 0.000000, 0.000000, ] m_bLocalCoords = true m_bDisableOperator = true }, { _class = "C_INIT_RandomAlphaWindowThreshold" m_flMin = 18.000000 m_flMax = 18.000000 m_bDisableOperator = true }, { _class = "C_INIT_RemapCPtoScalar" m_nCPInput = 2 m_flInputMax = 1000.000000 m_nFieldOutput = 13 m_flOutputMax = 1000.000000 }, ] m_Emitters = [ { _class = "C_OP_InstantaneousEmitter" m_nParticlesToEmit = 1 }, ] } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/channel_field_1.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 110 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 249, 242, 161, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0, &C_OP_Orient2DRelToCP_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomSequence_0, &C_INIT_CreateInEpitrochoid_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_swirl_04b.vtex" string m_Notes = "" int m_nOrientationType = 2 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.500000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" float m_flFadeInTime = 0.500000 } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { string m_Notes = "" int(4) m_ColorFade = ( 96, 176, 251, 255 ) float m_flFadeStartTime = 0.500000 } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 8.000000 float m_flEndScale = 0.000000 float m_flBias = 0.750000 } C_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0 { string m_Notes = "" float m_flRotOffset = 315.000000 } C_INIT_RandomSequence C_INIT_RandomSequence_0 { string m_Notes = "" int m_nSequenceMax = 3 } C_INIT_CreateInEpitrochoid C_INIT_CreateInEpitrochoid_0 { string m_Notes = "" bool m_bUseCount = true float m_flParticleDensity = 4.000000 float m_flOffset = 92.000008 float m_flRadius2 = -41.000000 float m_flRadius1 = 62.000000 int m_nComponent2 = 0 int m_nComponent1 = 1 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.600000 float m_fLifetimeMin = 0.600000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 16.000000 float m_flRadiusMin = 16.000000 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 200.000000 } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/channel_field_2.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 110 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 90, 196, 236, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0, &C_OP_Orient2DRelToCP_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomSequence_0, &C_INIT_CreateInEpitrochoid_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 string m_hTexture = "materials\\particle\\particle_swirl_04b.vtex" int m_nOrientationType = 2 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 500.000000 ) string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeStartTime = 0.500000 int(4) m_ColorFade = ( 96, 176, 251, 255 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.750000 float m_flEndScale = 0.000000 float m_flStartScale = 8.000000 string m_Notes = "" } C_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0 { float m_flRotOffset = 315.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 3 string m_Notes = "" } C_INIT_CreateInEpitrochoid C_INIT_CreateInEpitrochoid_0 { int m_nComponent1 = 1 int m_nComponent2 = 0 float m_flRadius1 = 62.000000 float m_flRadius2 = -41.000000 float m_flOffset = 92.000008 float m_flParticleDensity = 4.000000 bool m_bUseCount = true string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.600000 float m_fLifetimeMax = 0.600000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 16.000000 float m_flRadiusMax = 16.000000 string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 200.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/creature_spiked_carapace.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 82, 102, 128, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_LockToBone_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinearSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_CreateOnModel_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/test_particle/creature_spiked_carapace_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { bool m_bMod2X = true bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_modulate_01.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 150.000000 ) } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flEndScale = 1.250000 float m_flBias = 0.750000 } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" float m_flLifeTimeFadeStart = 1.000000 float m_flLifeTimeFadeEnd = 1.000000 } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" float m_flFadeOutTime = 0.750000 } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -6.000000 float m_flEndTime = 99999.000000 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMin = 1.000000 float m_fLifetimeMax = 1.500000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMin = 32.000000 float m_flRadiusMax = 48.000000 } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" int m_nAlphaMax = 80 int m_nAlphaMin = 60 } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_Notes = "" float m_flHitBoxScale = 0.800000 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmitRate = 50.000000 } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/creature_spiked_carapace_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 75 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 230, 241, 255, 255 ) bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderModels_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0, &C_OP_RemapDirectionToCPToVector_0, &C_OP_BasicMovement_0, &C_OP_LockToBone_0, &C_OP_RadiusDecay_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateOnModel_0, &C_INIT_RandomYaw_0, &C_INIT_RandomScalar_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRotation_2 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderModels C_OP_RenderModels_0 { string m_hOverrideMaterial = "" string m_EconSlotName = "" string m_Notes = "" string m_ActivityName = "" bool m_bOrientZ = true ModelReference_t[] m_ModelList = [ ModelReference_t { string m_model = "models/particle/quill.vmdl" } ] bool m_bAnimated = true } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { string m_Notes = "" float m_flStartScale = 0.000000 float m_flBias = 0.900000 float m_flEndTime = 0.500000 } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { string m_Notes = "" float m_flEndTime = 99999.000000 float m_Rate = -2.000000 int m_nOpEndCapState = 1 } C_OP_RemapDirectionToCPToVector C_OP_RemapDirectionToCPToVector_0 { string m_Notes = "" float m_flOffsetRot = 30.000000 float(3) m_vecOffsetAxis = ( 1.000000, 0.000000, 0.000000 ) bool m_bNormalize = true int m_nFieldOutput = 21 } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_LockToBone C_OP_LockToBone_0 { string m_Notes = "" } C_OP_RadiusDecay C_OP_RadiusDecay_0 { string m_Notes = "" float m_flMinRadius = 0.010000 int m_nOpEndCapState = 1 } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { string m_Notes = "" float m_fLifetimeMax = 0.500000 float m_fLifetimeMin = 0.400000 } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" float m_flRadiusMax = 1.150000 float m_flRadiusMin = 0.850000 } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { string m_Notes = "" bool m_bLocalCoords = true float(3) m_vecDirectionBias = ( -0.250000, 0.000000, 0.500000 ) float m_flHitBoxScale = 0.850000 } C_INIT_RandomYaw C_INIT_RandomYaw_0 { string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { string m_Notes = "" int m_nFieldOutput = 20 float m_flMax = 1.000000 float m_flMin = -1.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" float m_flDegreesMax = 45.000000 float m_flDegreesMin = -45.000000 } C_INIT_RandomRotation C_INIT_RandomRotation_2 { string m_Notes = "" int m_nFieldOutput = 12 } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { string m_Notes = "" float m_flEmissionDuration = 0.500000 float m_flEmitRate = 250.000000 } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/damage_immunity.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 110 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 249, 242, 161, 120 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_PositionLock_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Orient2DRelToCP_0, &C_OP_ColorInterpolate_0, &C_OP_InterpolateRadius_0, &C_OP_RampScalarLinearSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomSequence_0, &C_INIT_CreateInEpitrochoid_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_CreateInEpitrochoid_2, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/test_particle/damage_immunity_b.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 0 string m_hTexture = "materials\\particle\\particle_swirl_04c.vtex" int m_nOrientationType = 2 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_PositionLock C_OP_PositionLock_0 { string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.500000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 0.500000 string m_Notes = "" } C_OP_Orient2DRelToCP C_OP_Orient2DRelToCP_0 { float m_flRotOffset = 100.000000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeStartTime = 0.500000 int(4) m_ColorFade = ( 243, 240, 190, 255 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flBias = 0.750000 float m_flEndScale = 3.000000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 999999.000000 float m_Rate = -6.000000 int m_nField = 16 int m_nOpEndCapState = 1 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 3 string m_Notes = "" } C_INIT_CreateInEpitrochoid C_INIT_CreateInEpitrochoid_0 { float m_flRadius1 = 62.000000 float m_flRadius2 = -41.000000 float m_flOffset = 92.000008 float m_flParticleDensity = 8.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.500000 float m_fLifetimeMax = 0.500000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 46.000000 float m_flRadiusMax = 46.000000 string m_Notes = "" } C_INIT_CreateInEpitrochoid C_INIT_CreateInEpitrochoid_2 { bool m_bOffsetExistingPos = true float m_flOffset = 44.000000 float m_flRadius2 = -34.000000 float m_flRadius1 = 19.000000 int m_nComponent2 = 2 int m_nComponent1 = -1 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 90.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 90.000000 ) string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 120.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/damage_immunity_b.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 512 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 255, 250, 195, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_InterpolateRadius_0, &C_OP_LockToBone_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_RampScalarLinearSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomAlpha_0, &C_INIT_CreateOnModel_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ &C_OP_AttractToControlPoint_0 ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { bool m_bMod2X = true bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_modulate_01.vtex" string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 float(3) m_Gravity = ( 0.000000, 0.000000, 150.000000 ) string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 float m_flBias = 0.750000 string m_Notes = "" } C_OP_LockToBone C_OP_LockToBone_0 { float m_flLifeTimeFadeStart = 1.000000 float m_flLifeTimeFadeEnd = 1.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.750000 string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { int m_nOpEndCapState = 1 int m_nField = 16 float m_Rate = -6.000000 float m_flEndTime = 99999.000000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.400000 float m_fLifetimeMax = 0.500000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 16.000000 float m_flRadiusMax = 30.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 30 int m_nAlphaMin = 30 string m_Notes = "" } C_INIT_CreateOnModel C_INIT_CreateOnModel_0 { float m_flHitBoxScale = 0.800000 float(3) m_vecDirectionBias = ( 0.000000, 0.000000, 1.000000 ) string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmitRate = 150.000000 string m_Notes = "" } C_OP_AttractToControlPoint C_OP_AttractToControlPoint_0 { float m_fForceAmount = -500.000000 float m_fFalloffPower = 0.000000 int m_nControlPointNumber = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/leshrac_splitearth_groundflash_lines.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 70 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( 20.000000, 20.000000, 0.000000 ) float(3) m_BoundingBoxMax = ( -20.000000, -20.000000, 0.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0, &C_OP_RenderDeferredLight_0 ] CParticleOperator*[] m_Operators = [ &C_OP_InterpolateRadius_0, &C_OP_InterpolateRadius_2, &C_OP_FadeAndKill_0, &C_OP_BasicMovement_0, &C_OP_SpinUpdate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRadius_0, &C_INIT_RandomColor_0, &C_INIT_RandomRotation_0, &C_INIT_RandomLifeTime_0, &C_INIT_CreateFromParentParticles_0, &C_INIT_PositionOffset_0, &C_INIT_PositionPlaceOnGround_0, &C_INIT_RemapScalar_0, &C_INIT_RandomAlpha_0, &C_INIT_PositionOffset_2 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/test_particle/leshrac_splitearth_sparkles.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 int m_nOrientationType = 3 bool m_bDisableZBuffering = false string m_hTexture = "materials\\particle\\particle_flares\\particle_flare_001.vtex" string m_Notes = "" } C_OP_RenderDeferredLight C_OP_RenderDeferredLight_0 { float m_flRadiusScale = 2.500000 int(4) m_ColorScale = ( 241, 13, 13, 255 ) string m_Notes = "" string m_hTexture = "materials\\particle\\particle_flares\\particle_flare_001.vtex" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartScale = 0.100000 float m_flEndTime = 0.150000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_2 { float m_flEndTime = 0.800000 float m_flBias = 0.200000 float m_flEndScale = 0.300000 float m_flStartTime = 0.600000 string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 100.000000 float m_flRadiusMin = 60.000000 string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 83, 15, 47, 255 ) int(4) m_ColorMin = ( 166, 20, 20, 255 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.500000 float m_fLifetimeMin = 1.000000 string m_Notes = "" } C_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0 { bool m_bRandomDistribution = true string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 50.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 50.000000 ) string m_Notes = "" } C_INIT_PositionPlaceOnGround C_INIT_PositionPlaceOnGround_0 { bool m_bSetNormal = true string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { float m_flOutputMax = 7.000000 float m_flOutputMin = 3.000000 int m_nFieldOutput = 9 float m_flInputMin = 0.500000 int m_nFieldInput = 1 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { int m_nAlphaMax = 140 int m_nAlphaMin = 30 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_2 { float(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 70 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/leshrac_splitearth_sparkles.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 60 int m_nInitialParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int(4) m_ConstantColor = ( 214, 45, 45, 255 ) CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_FadeOutSimple_0, &C_OP_RampScalarLinearSimple_0, &C_OP_OscillateVector_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_RandomRotation_0, &C_INIT_RandomRadius_0, &C_INIT_RandomYawFlip_0, &C_INIT_AgeNoise_0, &C_INIT_CreateFromParentParticles_0, &C_INIT_PositionOffset_0, &C_INIT_InitialVelocityNoise_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_ContinuousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\particle_flares\\aircraft_blue2.vtex" float m_flAnimationRate = 2.000000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 600.000000 ) float m_fDrag = 0.200000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.150000 string m_Notes = "" } C_OP_RampScalarLinearSimple C_OP_RampScalarLinearSimple_0 { float m_flEndTime = 99999.000000 float m_Rate = -30.000000 int m_nOpEndCapState = 1 string m_Notes = "" } C_OP_OscillateVector C_OP_OscillateVector_0 { float m_flOscMult = 1.000000 float m_flStartTime_max = 0.500000 float m_flStartTime_min = 0.250000 float(3) m_FrequencyMax = ( 4.000000, 4.000000, 4.000000 ) float(3) m_RateMax = ( 8.000000, 8.000000, 8.000000 ) float(3) m_RateMin = ( -8.000000, -8.000000, -8.000000 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 2.000000 float m_fLifetimeMin = 0.500000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusRandExponent = 0.800000 float m_flRadiusMin = 7.000000 float m_flRadiusMax = 25.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_AgeNoise C_INIT_AgeNoise_0 { float m_flAgeMax = 0.200000 float m_flAgeMin = 0.200000 string m_Notes = "" } C_INIT_CreateFromParentParticles C_INIT_CreateFromParentParticles_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMin = ( -50.000000, -50.000000, -50.000000 ) float(3) m_OffsetMax = ( 50.000000, 50.000000, 50.000000 ) string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float(3) m_vecOutputMax = ( 1.000000, 1.000000, 900.000000 ) string m_Notes = "" } C_OP_ContinuousEmitter C_OP_ContinuousEmitter_0 { float m_flEmissionDuration = 0.250000 float m_flEmitRate = 203.000000 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/ogre_melee_smash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 32 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_FadeOutSimple_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomLifeTime_0, &C_INIT_PositionOffset_0, &C_INIT_CreateWithinSphere_0, &C_INIT_RandomRotation_0, &C_INIT_RemapCPtoScalar_0, &C_INIT_RandomAlpha_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/test_particle/ogre_melee_smash_projected.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { bool m_bRefract = true float m_flRefractAmount = -0.040000 string m_hTexture = "materials\\particle\\warp_ripple4_normal.vtex" bool m_bFitCycleToLifetime = true float m_flAnimationRate = 1.500000 int m_nOrientationType = 2 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.050000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { float m_flOpStartFadeInTime = 3.000000 float m_flOpEndFadeInTime = 3.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 0.750000 float m_flBias = 0.850000 float m_flStartScale = 0.350000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { float m_flFadeOutTime = 0.750000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.500000 float m_fLifetimeMin = 0.500000 string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 64.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 64.000000 ) string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMax = 90.000000 float m_flDegreesMin = -90.000000 string m_Notes = "" } C_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0 { float m_flOutputMax = 5000.000000 float m_flInputMax = 2500.000000 int m_nCPInput = 1 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/ogre_melee_smash_c.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 220 string m_pszSnapshotName = "" float(3) m_BoundingBoxMin = ( 300.000000, 300.000000, -10.000000 ) float(3) m_BoundingBoxMax = ( -300.000000, -300.000000, 10.000000 ) string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_BasicMovement_0, &C_OP_Decay_0, &C_OP_RemapSpeed_0, &C_OP_SpinUpdate_0, &C_OP_InterpolateRadius_0, &C_OP_MaxVelocity_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomRadius_0, &C_INIT_RandomRotation_0, &C_INIT_RandomSequence_0, &C_INIT_InitialVelocityNoise_0, &C_INIT_RandomYawFlip_0, &C_INIT_CreationNoise_0, &C_INIT_RingWave_0, &C_INIT_RemapScalar_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { string m_hTexture = "materials\\particle\\impact\\fleks.vtex" bool m_bFitCycleToLifetime = true float m_flAnimationRate = 1.500000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.020007 float(3) m_Gravity = ( 0.000000, 0.000000, -800.000000 ) string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_RemapSpeed C_OP_RemapSpeed_0 { float m_flOutputMin = 1.000000 float m_flInputMax = 10.000000 int m_nFieldOutput = 5 bool m_bScaleInitialRange = true string m_Notes = "" } C_OP_SpinUpdate C_OP_SpinUpdate_0 { float m_flOpEndFadeOutTime = 1.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.750000 float m_flEndScale = 0.000000 string m_Notes = "" } C_OP_MaxVelocity C_OP_MaxVelocity_0 { float m_flMaxVelocity = 450.000000 bool m_bDisableOperator = true string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 130, 151, 91, 255 ) int(4) m_ColorMin = ( 153, 127, 79, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 1.000000 float m_fLifetimeMin = 0.250000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 10.000000 float m_flRadiusMin = 3.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 63 int m_nSequenceMin = 50 string m_Notes = "" } C_INIT_InitialVelocityNoise C_INIT_InitialVelocityNoise_0 { float m_flNoiseScale = 2.000000 float m_flNoiseScaleLoc = 2.000000 float(3) m_vecOutputMin = ( -36.000000, -36.000000, 150.000000 ) float(3) m_vecOutputMax = ( 36.000000, 36.000000, 600.000000 ) bool m_bLocalSpace = true string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_CreationNoise C_INIT_CreationNoise_0 { float m_flNoiseScale = 3.000000 float m_flNoiseScaleLoc = 1.000000 int m_nFieldOutput = 5 float m_flOutputMin = -15.000000 float m_flOutputMax = 15.000000 string m_Notes = "" } C_INIT_RingWave C_INIT_RingWave_0 { float m_flThickness = 0.500000 int m_nOverrideCP = 1 float m_flInitialSpeedMax = 1.500000 float m_flInitialSpeedMin = 0.250000 float m_flInitialRadius = 0.750000 string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { bool m_bScaleInitialRange = true float m_flOutputMin = 1.000000 float m_flInputMax = 0.250000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 220 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/ogre_melee_smash_flash.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 16 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int m_nConstantSequenceNumber = 1 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_InterpolateRadius_2, &C_OP_LerpScalar_0, &C_OP_OscillateScalar_0, &C_OP_BasicMovement_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomSequence_0, &C_INIT_RemapScalar_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomYaw_0, &C_INIT_RandomRotation_0, &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinBox_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\lens_flare\\lens_flare.vtex" float m_flAnimationRate = 4.000000 int m_nOrientationType = 2 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 1.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flEndScale = 2.000000 float m_flStartScale = 0.100000 float m_flStartTime = 0.850000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_2 { float m_flBias = 0.850000 float m_flEndScale = 2.000000 float m_flEndTime = 0.850000 float m_flStartTime = 0.100000 float m_flStartScale = 0.200000 string m_Notes = "" } C_OP_LerpScalar C_OP_LerpScalar_0 { float m_flOutput = 1.570796 int m_nFieldOutput = 12 string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_0 { int m_nField = 4 float m_RateMin = -11.000000 float m_RateMax = 11.000000 float m_FrequencyMin = 0.125000 float m_FrequencyMax = 0.500000 float m_flOscAdd = 0.100000 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 ) float m_flOpStartFadeInTime = 0.100000 float m_flOpEndFadeInTime = 0.150000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeEndTime = 0.000000 float m_flFadeStartTime = 1.000000 int(4) m_ColorFade = ( 252, 255, 0, 255 ) string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { bool m_bRunForParentApplyKillList = false int m_nSequenceMax = 1 string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { float m_flOutputMax = 5.000000 bool m_bScaleInitialRange = true float m_flOutputMin = 5.000000 int m_nFieldInput = 9 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 90.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMax = ( 246, 77, 252, 255 ) int(4) m_ColorMin = ( 148, 153, 255, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 0.200000 float m_fLifetimeMin = 0.100000 string m_Notes = "" } C_INIT_CreateWithinBox C_INIT_CreateWithinBox_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMax = 105.000000 float m_flRadiusMin = 45.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 15 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/ogre_melee_smash_projected.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 1.500000 int(4) m_ConstantColor = ( 0, 0, 0, 255 ) int m_nConstantSequenceNumber1 = 1 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderProjected_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_BasicMovement_0, &C_OP_RampScalarSpline_0, &C_OP_RampScalarSpline_2, &C_OP_Decay_2, &C_OP_FadeOut_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRotation_0, &C_INIT_RandomScalar_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomAlpha_0, &C_INIT_RemapCPtoScalar_0, &C_INIT_RandomRadius_0, &C_INIT_DistanceToCPInit_0, &C_INIT_CreateWithinSphere_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/test_particle/ogre_melee_smash_scorch.vpcf" }, ParticleChildrenInfo_t { string m_ChildRef = "particles/test_particle/ogre_melee_smash_pulse.vpcf" } ] } C_OP_RenderProjected C_OP_RenderProjected_0 { string m_Notes = "" string m_hProjectedMaterial = "materials\\particle\\projected_cracks.vmat" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { bool m_bDisableOperator = true float m_fDrag = 0.100000 string m_Notes = "" } C_OP_RampScalarSpline C_OP_RampScalarSpline_0 { float m_flStartTime_max = 0.700000 float m_flStartTime_min = 0.600000 int m_nField = 13 float m_RateMin = 2.000000 float m_RateMax = 3.000000 float m_flEndTime_min = 0.900000 string m_Notes = "" } C_OP_RampScalarSpline C_OP_RampScalarSpline_2 { bool m_bEaseOut = true float m_RateMax = -1.800000 float m_RateMin = -1.000000 int m_nField = 13 float m_flEndTime_min = 0.095000 float m_flEndTime_max = 0.220000 string m_Notes = "" } C_OP_Decay C_OP_Decay_2 { string m_Notes = "" } C_OP_FadeOut C_OP_FadeOut_0 { bool m_bEaseInAndOut = false bool m_bProportional = false float m_flFadeOutTimeMax = 1.000000 float m_flFadeOutTimeMin = 1.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { float m_flDegreesMax = 0.000000 string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { int m_nFieldOutput = 13 float m_flMax = 1.310000 float m_flMin = 1.310000 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMax = 4.500000 float m_fLifetimeMin = 4.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0 { float m_flOutputMax = 900.000000 float m_flOutputMin = 100.000000 float m_flInputMax = 900.000000 float m_flInputMin = 100.000000 int m_nCPInput = 1 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" } C_INIT_DistanceToCPInit C_INIT_DistanceToCPInit_0 { float m_flOutputMin = 1.000000 float m_flInputMax = 450.000000 float m_flInputMin = 1.000000 bool m_bScaleInitialRange = true string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 ) float(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 3 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/ogre_melee_smash_pulse.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 64 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" int m_nConstantSequenceNumber = 1 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderSprites_0 ] CParticleOperator*[] m_Operators = [ &C_OP_FadeOutSimple_0, &C_OP_FadeInSimple_0, &C_OP_Decay_0, &C_OP_InterpolateRadius_0, &C_OP_InterpolateRadius_2, &C_OP_LerpScalar_0, &C_OP_OscillateScalar_0, &C_OP_BasicMovement_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomSequence_0, &C_INIT_RemapScalar_0, &C_INIT_RandomYawFlip_0, &C_INIT_RandomYaw_0, &C_INIT_RandomRotation_0, &C_INIT_RandomColor_0, &C_INIT_RandomLifeTime_0, &C_INIT_CreateWithinBox_0, &C_INIT_RandomRadius_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ParticleChildrenInfo_t { string m_ChildRef = "particles/test_particle/ogre_melee_smash_flash.vpcf" } ] } C_OP_RenderSprites C_OP_RenderSprites_0 { int m_bAdditive = 1 bool m_bDisableZBuffering = true string m_hTexture = "materials\\particle\\lens_flare\\lens_flare.vtex" float m_flAnimationRate = 4.000000 string m_Notes = "" } C_OP_FadeOutSimple C_OP_FadeOutSimple_0 { string m_Notes = "" } C_OP_FadeInSimple C_OP_FadeInSimple_0 { float m_flFadeInTime = 1.000000 string m_Notes = "" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_0 { float m_flStartTime = 0.850000 float m_flStartScale = 0.100000 float m_flEndScale = 2.000000 string m_Notes = "" } C_OP_InterpolateRadius C_OP_InterpolateRadius_2 { float m_flStartScale = 0.200000 float m_flStartTime = 0.100000 float m_flEndTime = 0.850000 float m_flEndScale = 2.000000 float m_flBias = 0.850000 string m_Notes = "" } C_OP_LerpScalar C_OP_LerpScalar_0 { int m_nFieldOutput = 12 float m_flOutput = 1.570796 string m_Notes = "" } C_OP_OscillateScalar C_OP_OscillateScalar_0 { float m_flOscAdd = 0.100000 float m_FrequencyMax = 0.500000 float m_FrequencyMin = 0.125000 float m_RateMax = 11.000000 float m_RateMin = -11.000000 int m_nField = 4 string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_flOpEndFadeInTime = 0.150000 float m_flOpStartFadeInTime = 0.100000 float(3) m_Gravity = ( 0.000000, 0.000000, 200.000000 ) string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { int(4) m_ColorFade = ( 252, 255, 0, 255 ) float m_flFadeStartTime = 1.000000 float m_flFadeEndTime = 0.000000 string m_Notes = "" } C_INIT_RandomSequence C_INIT_RandomSequence_0 { int m_nSequenceMax = 1 bool m_bRunForParentApplyKillList = false string m_Notes = "" } C_INIT_RemapScalar C_INIT_RemapScalar_0 { int m_nFieldInput = 9 float m_flOutputMin = 0.500000 bool m_bScaleInitialRange = true float m_flOutputMax = 3.000000 string m_Notes = "" } C_INIT_RandomYawFlip C_INIT_RandomYawFlip_0 { string m_Notes = "" } C_INIT_RandomYaw C_INIT_RandomYaw_0 { float m_flDegreesMax = 90.000000 string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { string m_Notes = "" } C_INIT_RandomColor C_INIT_RandomColor_0 { int(4) m_ColorMin = ( 148, 153, 255, 255 ) int(4) m_ColorMax = ( 246, 77, 252, 255 ) string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 0.100000 float m_fLifetimeMax = 0.500000 string m_Notes = "" } C_INIT_CreateWithinBox C_INIT_CreateWithinBox_0 { string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { float m_flRadiusMin = 45.000000 float m_flRadiusMax = 105.000000 string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 50 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_particle/ogre_melee_smash_scorch.vpcf ================================================ CParticleSystemDefinition CParticleSystemDefinition_0 { bool m_bPreventNameBasedLookup = false int m_nMaxParticles = 4 string m_pszSnapshotName = "" string m_hLowViolenceDef = "" string m_hReferenceReplacement = "" string m_hFallback = "" float m_flConstantRadius = 1.500000 bool m_bShouldSort = false CParticleOperator*[] m_Renderers = [ &C_OP_RenderProjected_0 ] CParticleOperator*[] m_Operators = [ &C_OP_Decay_0, &C_OP_BasicMovement_0, &C_OP_RampScalarSpline_0, &C_OP_RampScalarSpline_2, &C_OP_FadeAndKill_0, &C_OP_ColorInterpolate_0 ] CParticleOperator*[] m_Initializers = [ &C_INIT_RandomRotation_0, &C_INIT_RandomScalar_0, &C_INIT_RandomLifeTime_0, &C_INIT_RandomAlpha_0, &C_INIT_RemapCPtoScalar_0, &C_INIT_RandomRadius_0, &C_INIT_DistanceToCPInit_0, &C_INIT_CreateWithinSphere_0, &C_INIT_PositionOffset_0 ] CParticleOperator*[] m_Emitters = [ &C_OP_InstantaneousEmitter_0 ] CParticleOperator*[] m_ForceGenerators = [ ] CParticleOperator*[] m_Constraints = [ ] ParticleChildrenInfo_t[] m_Children = [ ] } C_OP_RenderProjected C_OP_RenderProjected_0 { bool m_bProjectWater = false string m_Notes = "" string m_hProjectedMaterial = "materials\\particle\\frost_projected_mod.vmat" } C_OP_Decay C_OP_Decay_0 { string m_Notes = "" } C_OP_BasicMovement C_OP_BasicMovement_0 { float m_fDrag = 0.100000 string m_Notes = "" } C_OP_RampScalarSpline C_OP_RampScalarSpline_0 { float m_flEndTime_min = 0.900000 float m_RateMax = 12.000000 float m_RateMin = 8.000000 int m_nField = 13 float m_flStartTime_min = 0.600000 float m_flStartTime_max = 0.700000 bool m_bDisableOperator = true string m_Notes = "" } C_OP_RampScalarSpline C_OP_RampScalarSpline_2 { float m_flEndTime_max = 0.220000 float m_flEndTime_min = 0.095000 int m_nField = 13 float m_RateMin = -0.350000 float m_RateMax = -0.100000 bool m_bEaseOut = true bool m_bDisableOperator = true string m_Notes = "" } C_OP_FadeAndKill C_OP_FadeAndKill_0 { float m_flStartFadeOutTime = 0.800000 float m_flEndFadeInTime = 0.800000 string m_Notes = "" } C_OP_ColorInterpolate C_OP_ColorInterpolate_0 { float m_flFadeEndTime = 0.250000 int(4) m_ColorFade = ( 0, 0, 0, 255 ) string m_Notes = "" } C_INIT_RandomRotation C_INIT_RandomRotation_0 { bool m_bRandomlyFlipDirection = false string m_Notes = "" } C_INIT_RandomScalar C_INIT_RandomScalar_0 { float m_flMin = 1.300000 float m_flMax = 1.310000 int m_nFieldOutput = 13 string m_Notes = "" } C_INIT_RandomLifeTime C_INIT_RandomLifeTime_0 { float m_fLifetimeMin = 4.500000 float m_fLifetimeMax = 5.000000 string m_Notes = "" } C_INIT_RandomAlpha C_INIT_RandomAlpha_0 { string m_Notes = "" } C_INIT_RemapCPtoScalar C_INIT_RemapCPtoScalar_0 { int m_nCPInput = 1 float m_flInputMin = 100.000000 float m_flInputMax = 900.000000 float m_flOutputMin = 100.000000 float m_flOutputMax = 900.000000 string m_Notes = "" } C_INIT_RandomRadius C_INIT_RandomRadius_0 { string m_Notes = "" } C_INIT_DistanceToCPInit C_INIT_DistanceToCPInit_0 { bool m_bScaleInitialRange = true float m_flInputMin = 1.000000 float m_flInputMax = 450.000000 float m_flOutputMin = 1.000000 float m_flOutputMax = 1.500000 string m_Notes = "" } C_INIT_CreateWithinSphere C_INIT_CreateWithinSphere_0 { string m_Notes = "" } C_INIT_PositionOffset C_INIT_PositionOffset_0 { float(3) m_OffsetMin = ( 0.000000, 0.000000, 5.000000 ) float(3) m_OffsetMax = ( 0.000000, 0.000000, 5.000000 ) string m_Notes = "" } C_OP_InstantaneousEmitter C_OP_InstantaneousEmitter_0 { int m_nParticlesToEmit = 1 string m_Notes = "" } ================================================ FILE: content/dota_addons/barebones/particles/test_shot.vpcf ================================================ { _class = "CParticleSystemDefinition" m_bShouldHitboxesFallbackToRenderBounds = false m_nMaxParticles = 16 m_flConstantRadius = 25.000000 m_bShouldSort = false m_Renderers = [ { _class = "C_OP_RenderSprites" m_nOrientationType = 2 }, ] m_Operators = [ { _class = "C_OP_BasicMovement" }, { _class = "C_OP_SetControlPointsToParticle" m_nFirstControlPoint = 3 m_bSetOrientation = true }, { _class = "C_OP_MovementPlaceOnGround" m_nLerpCP = 3 m_flTolerance = 96.000000 m_flOffset = 120.000000 m_bIncludeWater = true m_flMaxTraceLength = 1024.000000 m_flTraceOffset = 256.000000 m_CollisionGroupName = "DEBRIS" m_nRefCP1 = 3 m_bDisableOperator = true }, { _class = "C_OP_LagCompensation" m_nLatencyCP = 10 m_nDesiredVelocityCP = 1 m_bDisableOperator = true }, { _class = "C_OP_Decay" }, { _class = "C_OP_RemapCPtoVelocity" m_nCPInput = 1 }, ] m_Initializers = [ { _class = "C_INIT_CreateWithinSphere" }, { _class = "C_INIT_RandomLifeTime" m_fLifetimeMax = 3.000000 m_fLifetimeMin = 3.000000 }, { _class = "C_INIT_NormalAlignToCP" }, { _class = "C_INIT_VelocityFromCP" m_nControlPoint = 1 }, { _class = "C_INIT_PositionOffset" m_OffsetMin = [ 0.000000, 0.000000, 80.000000, ] m_OffsetMax = [ 0.000000, 0.000000, 80.000000, ] }, { _class = "C_INIT_RemapCPtoVector" m_nCPInput = 4 m_nFieldOutput = 6 m_vInputMax = [ 255.000000, 255.000000, 255.000000, ] m_vOutputMax = [ 1.000000, 1.000000, 1.000000, ] }, ] m_Emitters = [ { _class = "C_OP_InstantaneousEmitter" m_nParticlesToEmit = 1 }, ] } ================================================ FILE: content/dota_addons/barebones/soundevents/game_sounds_custom.vsndevts ================================================ "Creature.FireBreath.Cast" { "operator_stacks" { "update_stack" { "reference_operator" { "operator" "sos_reference_stack" "reference_stack" "dota_update_default" "operator_variables" { "vsnd_files" { "value" { "value0" "sounds/mini_rosh_firebreath.vsnd" } } "volume_min" { "value" "1.000000" } "volume_max" { "value" "1.000000" } "pitch_min" { "value" "0.950000" } "pitch_max" { "value" "1.050000" } "chan_type" { "value" "6" } "memory_type" { "value" "0" } "soundlevel_min" { "value" "90.000000" } "soundlevel_max" { "value" "90.000000" } } } } } } "Reflex.Midnight_Pulse" { "operator_stacks" { "update_stack" { "reference_operator" { "operator" "sos_reference_stack" "reference_stack" "dota_update_default" "operator_variables" { "vsnd_files" { "value" { "value0" "sounds/weapons/hero/enigma/midnight_pulse.vsnd" } } "volume_min" { "value" "1.000000" } "volume_max" { "value" "1.000000" } "pitch_min" { "value" "1.000000" } "pitch_max" { "value" "1.000000" } "chan_type" { "value" "6" } "memory_type" { "value" "0" } "soundlevel_min" { "value" "81.000000" } "soundlevel_max" { "value" "81.000000" } "mixgroup" { "value" "Weapons" } "spread_radius" { "value" "600.000000" } } } } } } "Start" { "operator_stacks" { "update_stack" { "update_operator" { "operator" "sos_reference_stack" "reference_stack" "src1_3d" "operator_variables" { "vsnd_files" { "value" { "value0" "sounds/start.vsnd" } } "volume_min" { "value" "1.000000" } "volume_max" { "value" "1.000000" } "pitch_min" { "value" "0.950000" } "pitch_max" { "value" "1.050000" } "chan_type" { "value" "6" } "memory_type" { "value" "0" } "soundlevel_min" { "value" "90.000000" } "soundlevel_max" { "value" "90.000000" } } } } } } ================================================ FILE: game/dota_addons/barebones/addoninfo.txt ================================================ "AddonInfo" { "TeamCount" "10" "maps" "template_map playground" "IsPlayable" "1" "template_map" { "MaxPlayers" "10" } "playground" { "MaxPlayers" "10" } // "desert_duo" // { // "MaxPlayers" "10" // } // "forest_solo" // { // "MaxPlayers" "10" // } } ================================================ FILE: game/dota_addons/barebones/network_measurement.txt ================================================ "measurement" { "version" "1" "timestamp" "1443744715" "upload" "0x000000000013A19C" } ================================================ FILE: game/dota_addons/barebones/panorama/localization/addon_english.txt ================================================ "addon" { "Unassigned" "Unassigned Team" "Spectator" "Spectator Team" "Neutrals" "Neutral Team" "NoTeam" "No Team" "DOTA_GoodGuys" "Teal Tiger" "DOTA_BadGuys" "Yellow Monkey" "DOTA_Custom1" "Pink Dragon" "DOTA_Custom2" "Orange Dog" "DOTA_Custom3" "Blue Rooster" "DOTA_Custom4" "Green Ram" "DOTA_Custom5" "Brown Rat" "DOTA_Custom6" "Cyan Boar" "DOTA_Custom7" "Olive Snake" "DOTA_Custom8" "Purple Horse" "addonname" "Barebones" } ================================================ FILE: game/dota_addons/barebones/resource/flash3/custom_ui.txt ================================================ "CustomUI" { // swf files should be published into the same folder as this file // Add a numbered block for each swf file to load when your addon starts //"1" //{ // "File" "Example" // "Depth" "50" //} } // ============================================= // Depths of base Dota UI elements // ============================================= // hud_chat: 8, // error_msg: 10, // voicechat: 11, // shop: 12, // tutorial: 13, // herodisplay: 14, // actionpanel: 15, // inventory: 16, // channelbar: 17, // gameend: 19, // chat_wheel: 20, // survey: 21, // quests: 22, // questlog: 23, // ti_onstage_side: 30, // last_hit_challenge: 35, // waitingforplayers: 36, // highlight_reel: 37, // stats_dropdown: 38, // halloween: 39, // killcam: 40, // and inspect // scoreboard: 41, // quickstats: 42, // shared_units: 43, // shared_content: 44, // holdout: 50, // spectator_items: 145, // spectator_graph: 146, // spectator_harvest: 147, // spectator_player: 148, // spectator_fantasy: 149, // heroselection: 250, // spectate_heroselection: 251, // shared_heroselectorandloadout : 252, // broadcaster: 364, // spectate: 365, // coach: 366, // combat_log: 367, // guide_panel: 368, // loadgame: 380, // report_dialogue : 381, // popups : 382, // matchmaking_ready : 383, // ti_onstage_pods: 500, // overlay: 1000 // ============================================= ================================================ FILE: game/dota_addons/barebones/resource/overviews/dota_pvp.txt ================================================ dota_pvp { material materials/overviews/dota_pvp.vmat pos_x -7072 pos_y 7898 scale 14.531 } ================================================ FILE: game/dota_addons/barebones/resource/overviews/playground.txt ================================================ playground { material materials/overviews/playground.vmat pos_x -2048 pos_y 2048 scale 4.000 } ================================================ FILE: game/dota_addons/barebones/resource/overviews/template_map.txt ================================================ template_map { material materials/overviews/template_map.vmat pos_x -8192 pos_y 8192 scale 16.000 } ================================================ FILE: game/dota_addons/barebones/scripts/addon_hud_textures.txt ================================================ "" { "TextureData" { // "minimap_treasure_chest" // { // "file" "materials/vgui/hud/minimap_treasure_chest.vmat" // "x" "0" // "y" "0" // "width" "64" // "height" "64" // } } } ================================================ FILE: game/dota_addons/barebones/scripts/attachments.txt ================================================ "Attachments" { "models/heroes/juggernaut/juggernaut.vmdl" { "attach_hitloc" { "models/items/furion/hat_holiday_1.vmdl" { "scale" "1" "pitch" "20" "roll" "105" "ZPos" "-159" "YPos" "-10" "yaw" "-35" "XPos" "19" } } } "models/heroes/mirana/mirana.vmdl" { "attach_hitloc" { "models/items/furion/hat_holiday_1.vmdl" { "scale" "0.89999997615814" "pitch" "-105" "roll" "-35" "ZPos" "-146" "YPos" "-6" "yaw" "0" "XPos" "14" } } } "models/heroes/antimage/antimage.vmdl" { "attach_hitloc" { "models/props_gameplay/red_box.vmdl" { "scale" "1.1000000238419" "pitch" "-70" "roll" "0" "yaw" "-135" "YPos" "-17" "ZPos" "0" "XPos" "-13" } "models/particle/snowball.vmdl" { "scale" "0.30000001192093" "pitch" "-113" "roll" "131" "yaw" "45" "YPos" "-27" "ZPos" "112" "XPos" "-65" } } "attach_h2" { "models/particle/snowball.vmdl" { "scale" "0.30000001192093" "pitch" "105" "roll" "-90" "yaw" "-90" "YPos" "-50" "ZPos" "-19" "XPos" "-80" } } "attach_h1" { "models/particle/snowball.vmdl" { "scale" "0.30000001192093" "pitch" "-113" "roll" "0" "yaw" "0" "YPos" "97" "ZPos" "-19" "XPos" "60" } } } "models/heroes/dragon_knight/dragon_knight.vmdl" { "attach_attack1" { "models/items/faceless_void/battlefury/battlefury.vmdl" { "scale" "1.7999999523163" "pitch" "180" "roll" "10" "yaw" "190" "YPos" "120" "ZPos" "-90" "XPos" "0" } } } "models/heroes/axe/axe.vmdl" { "attach_weapon" { "models/items/wraith_king/winterblight_weapon/winterblight_weapon.vmdl" { "scale" "2.2999999523163" "YPos" "0" "pitch" "-140" "yaw" "180" "roll" "30" "ZPos" "0" "XPos" "70" } "models/items/faceless_void/battlefury/battlefury.vmdl" { "scale" "2" "pitch" "-50" "roll" "28" "yaw" "0" "YPos" "111" "ZPos" "-63" "XPos" "0" } } "attach_hitloc" { "models/props_gameplay/red_box.vmdl" { "scale" "1.2999999523163" "pitch" "-70" "roll" "0" "ZPos" "0" "YPos" "0" "yaw" "-135" "XPos" "-13" } "models/heroes/tiny_04/tiny04_deathsim.vmdl" { "Animation" "tiny04_deathsim_anim" "scale" "1" "pitch" "0" "roll" "0" "yaw" "0" "YPos" "0" "ZPos" "0" "XPos" "0" } } "attach_origin" { "models/props_gameplay/red_box.vmdl" { "scale" "2" "pitch" "0" "roll" "0" "ZPos" "0" "YPos" "0" "yaw" "0" "XPos" "0" } } } "models/heroes/sniper/sniper.vmdl" { "attach_hitloc" { "models/items/furion/hat_holiday_1.vmdl" { "scale" "0.89999997615814" "pitch" "-165" "roll" "169" "ZPos" "-159" "YPos" "5" "yaw" "186" "XPos" "39" } } } "models/heroes/windrunner/windrunner.vmdl" { "attach_hitloc" { "models/items/furion/hat_holiday_1.vmdl" { "scale" "0.89999997615814" "pitch" "-111" "roll" "-6" "ZPos" "-144" "YPos" "-5" "yaw" "-19" "XPos" "9" } } } "models/heroes/shadow_fiend/shadow_fiend_arcana.vmdl" { "attach_hitloc" { "models/items/furion/hat_holiday_1.vmdl" { "scale" "0.89999997615814" "pitch" "-165" "roll" "169" "ZPos" "-99" "YPos" "5" "yaw" "186" "XPos" "39" } } "attach_head" { "models/items/furion/hat_holiday_1.vmdl" { "scale" "1.2000000476837" "pitch" "-95" "roll" "-90" "ZPos" "-174" "YPos" "0" "yaw" "0" "XPos" "14" } } } "Particles" { "models/items/wraith_king/winterblight_weapon/winterblight_weapon.vmdl" { "particles/econ/items/wraith_king/wraith_king_winterblight_weapon/wraith_king_winterblight_ambient.vpcf" { "2" "attach_mouth" "1" "attach_eye_l" "0" "attach_eye_r" } } } "ExtraKeys" "Can Be Added Wherever" } ================================================ FILE: game/dota_addons/barebones/scripts/custom_net_tables.txt ================================================ { custom_net_tables = [ "containers_lua", "selection", ] } ================================================ FILE: game/dota_addons/barebones/scripts/npc/herolist.txt ================================================ // // // Hero currently on/off, will be # of instances (-1 = infinite) // "CustomHeroList" { "npc_dota_hero_ancient_apparition" "1" "npc_dota_hero_antimage" "1" "npc_dota_hero_axe" "1" "npc_dota_hero_bane" "1" "npc_dota_hero_beastmaster" "1" "npc_dota_hero_bloodseeker" "1" "npc_dota_hero_chen" "1" "npc_dota_hero_crystal_maiden" "1" "npc_dota_hero_dark_seer" "1" "npc_dota_hero_dazzle" "1" "npc_dota_hero_dragon_knight" "1" "npc_dota_hero_doom_bringer" "1" "npc_dota_hero_drow_ranger" "1" "npc_dota_hero_earthshaker" "1" "npc_dota_hero_enchantress" "1" "npc_dota_hero_enigma" "1" "npc_dota_hero_faceless_void" "1" "npc_dota_hero_furion" "1" "npc_dota_hero_juggernaut" "1" "npc_dota_hero_kunkka" "1" "npc_dota_hero_leshrac" "1" "npc_dota_hero_lich" "1" "npc_dota_hero_life_stealer" "1" "npc_dota_hero_lina" "1" "npc_dota_hero_lion" "1" "npc_dota_hero_mirana" "1" "npc_dota_hero_morphling" "1" "npc_dota_hero_necrolyte" "1" "npc_dota_hero_nevermore" "1" "npc_dota_hero_night_stalker" "1" "npc_dota_hero_omniknight" "1" "npc_dota_hero_puck" "1" "npc_dota_hero_pudge" "1" "npc_dota_hero_pugna" "1" "npc_dota_hero_rattletrap" "1" "npc_dota_hero_razor" "1" "npc_dota_hero_riki" "1" "npc_dota_hero_sand_king" "1" "npc_dota_hero_shadow_shaman" "1" "npc_dota_hero_slardar" "1" "npc_dota_hero_sniper" "1" "npc_dota_hero_spectre" "1" "npc_dota_hero_storm_spirit" "1" "npc_dota_hero_sven" "1" "npc_dota_hero_tidehunter" "1" "npc_dota_hero_tinker" "1" "npc_dota_hero_tiny" "1" "npc_dota_hero_vengefulspirit" "1" "npc_dota_hero_venomancer" "1" "npc_dota_hero_viper" "1" "npc_dota_hero_weaver" "1" "npc_dota_hero_windrunner" "1" "npc_dota_hero_witch_doctor" "1" "npc_dota_hero_zuus" "1" "npc_dota_hero_broodmother" "1" "npc_dota_hero_skeleton_king" "1" "npc_dota_hero_queenofpain" "1" "npc_dota_hero_huskar" "1" "npc_dota_hero_jakiro" "1" "npc_dota_hero_batrider" "1" "npc_dota_hero_warlock" "1" "npc_dota_hero_alchemist" "1" "npc_dota_hero_death_prophet" "1" "npc_dota_hero_ursa" "1" "npc_dota_hero_bounty_hunter" "1" "npc_dota_hero_silencer" "1" "npc_dota_hero_spirit_breaker" "1" "npc_dota_hero_invoker" "1" "npc_dota_hero_clinkz" "1" "npc_dota_hero_obsidian_destroyer" "1" "npc_dota_hero_shadow_demon" "1" "npc_dota_hero_lycan" "1" "npc_dota_hero_lone_druid" "1" "npc_dota_hero_brewmaster" "1" "npc_dota_hero_phantom_lancer" "1" "npc_dota_hero_treant" "1" "npc_dota_hero_ogre_magi" "1" "npc_dota_hero_chaos_knight" "1" "npc_dota_hero_phantom_assassin" "1" "npc_dota_hero_gyrocopter" "1" "npc_dota_hero_rubick" "1" "npc_dota_hero_luna" "1" "npc_dota_hero_wisp" "1" "npc_dota_hero_disruptor" "1" "npc_dota_hero_undying" "1" "npc_dota_hero_templar_assassin" "1" "npc_dota_hero_naga_siren" "1" "npc_dota_hero_nyx_assassin" "1" "npc_dota_hero_keeper_of_the_light" "1" "npc_dota_hero_visage" "1" "npc_dota_hero_meepo" "1" "npc_dota_hero_magnataur" "1" "npc_dota_hero_centaur" "1" "npc_dota_hero_slark" "1" "npc_dota_hero_shredder" "1" "npc_dota_hero_medusa" "1" "npc_dota_hero_troll_warlord" "1" "npc_dota_hero_tusk" "1" "npc_dota_hero_bristleback" "1" "npc_dota_hero_skywrath_mage" "1" "npc_dota_hero_elder_titan" "1" "npc_dota_hero_abaddon" "1" "npc_dota_hero_earth_spirit" "1" "npc_dota_hero_ember_spirit" "1" "npc_dota_hero_legion_commander" "1" "npc_dota_hero_phoenix" "1" "npc_dota_hero_terrorblade" "1" "npc_dota_hero_techies" "1" "npc_dota_hero_oracle" "1" "npc_dota_hero_winter_wyvern" "1" "npc_dota_hero_abyssal_underlord" "0" } ================================================ FILE: game/dota_addons/barebones/scripts/npc/npc_abilities_custom.txt ================================================ // Dota Abilities Override File "DOTAAbilities" { "Version" "1" "containers_lua_targeting" { // General //------------------------------------------------------------------------------------------------------------- "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" //"AbilityUnitTargetType" "DOTA_UNIT_TARGET_ALL" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_ALL" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "BaseClass" "ability_lua" "AbilityTextureName" "rubick_empty1" "ScriptFile" "libraries/abilities/containers_lua_targeting" "MaxLevel" "1" "IsCastableWhileHidden" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0 0 0 0" } "containers_lua_targeting_tree" { // General //------------------------------------------------------------------------------------------------------------- "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" //"AbilityUnitTargetType" "DOTA_UNIT_TARGET_ALL" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_ALL | DOTA_UNIT_TARGET_TREE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "BaseClass" "ability_lua" "AbilityTextureName" "rubick_empty1" "ScriptFile" "libraries/abilities/containers_lua_targeting_tree" "MaxLevel" "1" "IsCastableWhileHidden" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0 0 0 0" } "example_ability" { "ID" "1852" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "BaseClass" "ability_datadriven" "AbilityTextureName" "holdout_blade_fury" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.0" "AbilityCooldown" "10.0" "AbilityChannelTime" "2.0 1.8 1.6 1.5" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "AbilityCastAnimation" "ACT_DOTA_DISABLED" "AbilityDamage" "400 600 800 1000" "precache" { "particle" "particles/econ/generic/generic_aoe_explosion_sphere_1/generic_aoe_explosion_sphere_1.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_gyrocopter.vsndevts" } // Item Info //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "300" "SideShop" "1" "OnSpellStart" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_channel_start" } "FireSound" { "EffectName" "Hero_Gyrocopter.CallDown.Fire" "Target" "CASTER" } } "OnChannelSucceeded" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_channel_start" } "AttachEffect" { "EffectName" "particles/econ/generic/generic_aoe_explosion_sphere_1/generic_aoe_explosion_sphere_1.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" "EffectDurationScale" "1" "EffectLifeDurationScale" "1" "EffectColorA" "255 0 0" "EffectColorB" "255 0 0" "Target" "CASTER" } "Damage" { "Type" "DAMAGE_TYPE_PURE" "Damage" "%damage" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } } "Knockback" { "Center" "CASTER" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } "Duration" "%duration" "Distance" "%distance" "Height" "%height" } "FireSound" { "EffectName" "Hero_Gyrocopter.CallDown.Damage" "Target" "CASTER" } } "OnChannelFinish" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_channel_start" } } "OnChannelInterrupted" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_channel_start" } } "Modifiers" { "modifier_channel_start" { "OnCreated" { "AttachEffect" { "IsHidden" "1" "EffectName" "particles/test_particle/channel_field_2.vpcf"//"gyro_calldown_marker_c"//"gyrocopter_call_down" "EffectAttachType" "follow_origin" "Target" "CASTER" "EffectRadius" "%radius" "EffectColorA" "255 0 0" "EffectColorB" "255 0 0" "ControlPoints" { "00" "50 100 5" } } } } } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "0.5" } "02" { "var_type" "FIELD_INTEGER" "damage" "400 600 800 1000" } "03" { "var_type" "FIELD_INTEGER" "radius" "550 550 600 650" } "04" { "var_type" "FIELD_INTEGER" "distance" "400 500 600 700" } "05" { "var_type" "FIELD_INTEGER" "height" "100 200 300 400" } } } //------------------- // Dummy stuff //------------------- "dummy_unit" { "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "BaseClass" "ability_datadriven" "AbilityTextureName" "rubick_empty1" "MaxLevel" "1" "Modifiers" { "dummy_unit" { "Passive" "1" "IsHidden" "1" "States" { "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } } } } "barebones_empty1" { // General //------------------------------------------------------------------------------------------------------------- //"ID" "5343" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats. "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" "BaseClass" "ability_datadriven" "AbilityTextureName" "rubick_empty1" } "barebones_empty2" { // General //------------------------------------------------------------------------------------------------------------- //"ID" "5343" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats. "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" "BaseClass" "ability_datadriven" "AbilityTextureName" "rubick_empty1" } "barebones_empty3" { // General //------------------------------------------------------------------------------------------------------------- //"ID" "5343" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats. "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" "BaseClass" "ability_datadriven" "AbilityTextureName" "rubick_empty1" } "barebones_empty4" { // General //------------------------------------------------------------------------------------------------------------- //"ID" "5343" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats. "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" "BaseClass" "ability_datadriven" "AbilityTextureName" "rubick_empty1" } "barebones_empty5" { // General //------------------------------------------------------------------------------------------------------------- //"ID" "5343" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats. "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" "BaseClass" "ability_datadriven" "AbilityTextureName" "rubick_empty1" } "barebones_empty6" { // General //------------------------------------------------------------------------------------------------------------- //"ID" "5343" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats. "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" "BaseClass" "ability_datadriven" "AbilityTextureName" "rubick_empty1" } } ================================================ FILE: game/dota_addons/barebones/scripts/npc/npc_abilities_override.txt ================================================ // Dota Abilities Override File "DOTAAbilities" { "Version" "1" // ----------------------------------------------------------- // - UNCOMMENT ANY ITEM YOU DON'T WANT TO APPEAR IN THE SHOP - // ----------------------------------------------------------- //"item_blink" "REMOVE" //"item_blades_of_attack" "REMOVE" //"item_broadsword" "REMOVE" //"item_chainmail" "REMOVE" //"item_claymore" "REMOVE" //"item_helm_of_iron_will" "REMOVE" //"item_javelin" "REMOVE" //"item_mithril_hammer" "REMOVE" //"item_platemail" "REMOVE" //"item_quarterstaff" "REMOVE" //"item_quelling_blade" "REMOVE" //"item_ring_of_protection" "REMOVE" //"item_stout_shield" "REMOVE" //"item_gauntlets" "REMOVE" //"item_slippers" "REMOVE" //"item_mantle" "REMOVE" //"item_branches" "REMOVE" //"item_belt_of_strength" "REMOVE" //"item_boots_of_elves" "REMOVE" //"item_robe" "REMOVE" //"item_circlet" "REMOVE" //"item_ogre_axe" "REMOVE" //"item_blade_of_alacrity" "REMOVE" //"item_staff_of_wizardry" "REMOVE" //"item_ultimate_orb" "REMOVE" //"item_gloves" "REMOVE" //"item_lifesteal" "REMOVE" //"item_ring_of_regen" "REMOVE" //"item_sobi_mask" "REMOVE" //"item_boots" "REMOVE" //"item_gem" "REMOVE" //"item_cloak" "REMOVE" //"item_talisman_of_evasion" "REMOVE" //"item_cheese" "REMOVE" //"item_magic_stick" "REMOVE" //"item_recipe_magic_wand" "REMOVE" //"item_magic_wand" "REMOVE" //"item_ghost" "REMOVE" //"item_clarity" "REMOVE" //"item_flask" "REMOVE" //"item_dust" "REMOVE" //"item_bottle" "REMOVE" //"item_ward_observer" "REMOVE" //"item_ward_sentry" "REMOVE" //"item_tango" "REMOVE" //"item_tango_single" "REMOVE" //"item_courier" "REMOVE" //"item_tpscroll" "REMOVE" //"item_recipe_travel_boots" "REMOVE" //"item_travel_boots" "REMOVE" //"item_recipe_phase_boots" "REMOVE" //"item_phase_boots" "REMOVE" //"item_demon_edge" "REMOVE" //"item_eagle" "REMOVE" //"item_reaver" "REMOVE" //"item_relic" "REMOVE" //"item_hyperstone" "REMOVE" //"item_ring_of_health" "REMOVE" //"item_void_stone" "REMOVE" //"item_mystic_staff" "REMOVE" //"item_energy_booster" "REMOVE" //"item_point_booster" "REMOVE" //"item_vitality_booster" "REMOVE" //"item_recipe_power_treads" "REMOVE" //"item_power_treads" "REMOVE" //"item_recipe_hand_of_midas" "REMOVE" //"item_hand_of_midas" "REMOVE" //"item_recipe_oblivion_staff" "REMOVE" //"item_oblivion_staff" "REMOVE" //"item_recipe_pers" "REMOVE" //"item_pers" "REMOVE" //"item_recipe_poor_mans_shield" "REMOVE" //"item_poor_mans_shield" "REMOVE" //"item_recipe_bracer" "REMOVE" //"item_bracer" "REMOVE" //"item_recipe_wraith_band" "REMOVE" //"item_wraith_band" "REMOVE" //"item_recipe_null_talisman" "REMOVE" //"item_null_talisman" "REMOVE" //"item_recipe_mekansm" "REMOVE" //"item_mekansm" "REMOVE" //"item_recipe_vladmir" "REMOVE" //"item_vladmir" "REMOVE" //"item_flying_courier" "REMOVE" //"item_recipe_buckler" "REMOVE" //"item_buckler" "REMOVE" //"item_recipe_ring_of_basilius" "REMOVE" //"item_ring_of_basilius" "REMOVE" //"item_recipe_pipe" "REMOVE" //"item_pipe" "REMOVE" //"item_recipe_urn_of_shadows" "REMOVE" //"item_urn_of_shadows" "REMOVE" //"item_recipe_headdress" "REMOVE" //"item_headdress" "REMOVE" //"item_recipe_sheepstick" "REMOVE" //"item_sheepstick" "REMOVE" //"item_recipe_orchid" "REMOVE" //"item_orchid" "REMOVE" //"item_recipe_cyclone" "REMOVE" //"item_cyclone" "REMOVE" //"item_recipe_force_staff" "REMOVE" //"item_force_staff" "REMOVE" //"item_recipe_dagon" "REMOVE" //"item_recipe_dagon_2" "REMOVE" //"item_recipe_dagon_3" "REMOVE" //"item_recipe_dagon_4" "REMOVE" //"item_recipe_dagon_5" "REMOVE" //"item_dagon" "REMOVE" //"item_dagon_2" "REMOVE" //"item_dagon_3" "REMOVE" //"item_dagon_4" "REMOVE" //"item_dagon_5" "REMOVE" //"item_recipe_necronomicon" "REMOVE" //"item_recipe_necronomicon_2" "REMOVE" //"item_recipe_necronomicon_3" "REMOVE" //"item_necronomicon" "REMOVE" //"item_necronomicon_2" "REMOVE" //"item_necronomicon_3" "REMOVE" //"item_recipe_ultimate_scepter" "REMOVE" //"item_ultimate_scepter" "REMOVE" //"item_recipe_refresher" "REMOVE" //"item_refresher" "REMOVE" //"item_recipe_assault" "REMOVE" //"item_assault" "REMOVE" //"item_recipe_heart" "REMOVE" //"item_heart" "REMOVE" //"item_recipe_black_king_bar" "REMOVE" //"item_black_king_bar" "REMOVE" //"item_aegis" "REMOVE" //"item_recipe_shivas_guard" "REMOVE" //"item_shivas_guard" "REMOVE" //"item_recipe_bloodstone" "REMOVE" //"item_bloodstone" "REMOVE" //"item_recipe_sphere" "REMOVE" //"item_sphere" "REMOVE" //"item_recipe_reflex_energy_regen_booster" "REMOVE" //"item_vanguard" "REMOVE" //"item_recipe_blade_mail" "REMOVE" //"item_blade_mail" "REMOVE" //"item_recipe_soul_booster" "REMOVE" //"item_soul_booster" "REMOVE" //"item_recipe_hood_of_defiance" "REMOVE" //"item_hood_of_defiance" "REMOVE" //"item_recipe_rapier" "REMOVE" //"item_rapier" "REMOVE" //"item_recipe_monkey_king_bar" "REMOVE" //"item_monkey_king_bar" "REMOVE" //"item_recipe_radiance" "REMOVE" //"item_radiance" "REMOVE" //"item_recipe_butterfly" "REMOVE" //"item_butterfly" "REMOVE" //"item_recipe_greater_crit" "REMOVE" //"item_greater_crit" "REMOVE" //"item_recipe_basher" "REMOVE" //"item_basher" "REMOVE" //"item_recipe_bfury" "REMOVE" //"item_bfury" "REMOVE" //"item_recipe_manta" "REMOVE" //"item_manta" "REMOVE" //"item_recipe_lesser_crit" "REMOVE" //"item_lesser_crit" "REMOVE" //"item_recipe_armlet" "REMOVE" //"item_armlet" "REMOVE" //"item_recipe_invis_sword" "REMOVE" //"item_invis_sword" "REMOVE" //"item_recipe_sange_and_yasha" "REMOVE" //"item_sange_and_yasha" "REMOVE" //"item_recipe_satanic" "REMOVE" //"item_satanic" "REMOVE" //"item_recipe_mjollnir" "REMOVE" //"item_mjollnir" "REMOVE" //"item_recipe_skadi" "REMOVE" //"item_skadi" "REMOVE" //"item_recipe_sange" "REMOVE" //"item_sange" "REMOVE" //"item_recipe_helm_of_the_dominator" "REMOVE" //"item_helm_of_the_dominator" "REMOVE" //"item_recipe_maelstrom" "REMOVE" //"item_maelstrom" "REMOVE" //"item_recipe_desolator" "REMOVE" //"item_desolator" "REMOVE" //"item_recipe_yasha" "REMOVE" //"item_yasha" "REMOVE" //"item_recipe_mask_of_madness" "REMOVE" //"item_mask_of_madness" "REMOVE" //"item_recipe_diffusal_blade" "REMOVE" //"item_recipe_diffusal_blade_2" "REMOVE" //"item_diffusal_blade" "REMOVE" //"item_diffusal_blade_2" "REMOVE" //"item_recipe_ethereal_blade" "REMOVE" //"item_ethereal_blade" "REMOVE" //"item_recipe_soul_ring" "REMOVE" //"item_soul_ring" "REMOVE" //"item_recipe_arcane_boots" "REMOVE" //"item_arcane_boots" "REMOVE" //"item_orb_of_venom" "REMOVE" //"item_recipe_ancient_janggo" "REMOVE" //"item_ancient_janggo" "REMOVE" //"item_recipe_medallion_of_courage" "REMOVE" //"item_medallion_of_courage" "REMOVE" //"item_smoke_of_deceit" "REMOVE" //"item_recipe_veil_of_discord" "REMOVE" //"item_veil_of_discord" "REMOVE" //"item_recipe_rod_of_atos" "REMOVE" //"item_rod_of_atos" "REMOVE" //"item_recipe_abyssal_blade" "REMOVE" //"item_abyssal_blade" "REMOVE" //"item_recipe_heavens_halberd" "REMOVE" //"item_heavens_halberd" "REMOVE" //"item_recipe_ring_of_aquila" "REMOVE" //"item_ring_of_aquila" "REMOVE" //"item_recipe_tranquil_boots" "REMOVE" //"item_tranquil_boots" "REMOVE" //"item_shadow_amulet" "REMOVE" //"item_halloween_candy_corn" "REMOVE" //"item_mystery_hook" "REMOVE" //"item_mystery_arrow" "REMOVE" //"item_mystery_missile" "REMOVE" //"item_mystery_toss" "REMOVE" //"item_mystery_vacuum" "REMOVE" //"item_halloween_rapier" "REMOVE" //"item_greevil_whistle" "REMOVE" //"item_greevil_whistle_toggle" "REMOVE" //"item_present" "REMOVE" //"item_winter_stocking" "REMOVE" //"item_winter_skates" "REMOVE" //"item_winter_cake" "REMOVE" //"item_winter_cookie" "REMOVE" //"item_winter_coco" "REMOVE" //"item_winter_ham" "REMOVE" //"item_winter_kringle" "REMOVE" //"item_winter_mushroom" "REMOVE" //"item_winter_greevil_treat" "REMOVE" //"item_winter_greevil_garbage" "REMOVE" //"item_winter_greevil_chewy" "REMOVE" //"item_recipe_moon_shard" "REMOVE" //"item_moon_shard" "REMOVE" //"item_enchanted_mango" "REMOVE" //"item_recipe_travel_boots_2" "REMOVE" //"item_travel_boots_2" "REMOVE" //"item_recipe_lotus_orb" "REMOVE" //"item_lotus_orb" "REMOVE" //"item_recipe_crimson_guard" "REMOVE" //"item_crimson_guard" "REMOVE" //"item_recipe_silver_edge" "REMOVE" //"item_silver_edge" "REMOVE" //"item_recipe_octarine_core" "REMOVE" //"item_octarine_core" "REMOVE" //"item_recipe_solar_crest" "REMOVE" //"item_solar_crest" "REMOVE" //"item_recipe_guardian_greaves" "REMOVE" //"item_guardian_greaves" "REMOVE" //"item_recipe_glimmer_cape" "REMOVE" //"item_glimmer_cape" "REMOVE" //"item_faerie_fire" "REMOVE" //"item_recipe_aether_lens" "REMOVE" //"item_aether_lens" "REMOVE" //"item_recipe_dragon_lance" "REMOVE" //"item_dragon_lance" "REMOVE" //"item_recipe_iron_talon" "REMOVE" //"item_iron_talon" "REMOVE" //"item_recipe_bloodthorn" "REMOVE" //"item_bloodthorn" "REMOVE" //"item_wind_lace" "REMOVE" //"item_infused_raindrop" "REMOVE" //"item_blight_stone" "REMOVE" //"item_recipe_echo_sabre" "REMOVE" //"item_echo_sabre" "REMOVE" //"item_tome_of_knowledge" "REMOVE" //"item_recipe_hurricane_pike" "REMOVE" //"item_hurricane_pike" "REMOVE" //"item_banana" "REMOVE" } ================================================ FILE: game/dota_addons/barebones/scripts/npc/npc_heroes_custom.txt ================================================ "DOTAHeroes" { "npc_dota_hero_ancient_apparition_barebones" { "AbilityLayout" "6" "override_hero" "npc_dota_hero_ancient_apparition" "SoundSet" "0" "Ability1" "example_ability" "Ability2" "barebones_empty2" "Ability3" "barebones_empty3" "Ability4" "barebones_empty4" "Ability5" "barebones_empty5" "Ability6" "barebones_empty6" "Ability7" "" "Ability8" "" "Ability9" "" "Ability10" "" "Ability11" "" "Ability12" "" "Ability13" "" "Ability14" "" "Ability15" "" "Ability16" "" "ArmorPhysical" "0" // Physical protection. "MagicalResistance" "0" // Magical protection (percentage). "AttackCapabilities" "DOTA_UNIT_CAP_NO_ATTACK" "AttackDamageMin" "1" // Damage range min. "AttackDamageMax" "1" // Damage range max. //"AttributePrimary" "DOTA_ATTRIBUTE_STRENGTH" "AttributeBaseStrength" "0" // Base strength "AttributeStrengthGain" "0" // Strength bonus per level. "AttributeBaseIntelligence" "0" // Base intelligence "AttributeIntelligenceGain" "0" // Intelligence bonus per level. "AttributeBaseAgility" "0" // Base agility "AttributeAgilityGain" "0" // Agility bonus per level. "BountyXP" "0" // Experience earn. "BountyGoldMin" "0" // Gold earned min. "BountyGoldMax" "0" // Gold earned max. //"BoundsHullName" "DOTA_HULL_SIZE_HERO" //"RingRadius" "70" "MovementCapabilities" "DOTA_UNIT_CAP_MOVE_GROUND" "MovementSpeed" "360" // Speed. "MovementTurnRate" "1.0" // Turning rate. "StatusHealth" "1000" // Base health. "StatusHealthRegen" "0.0" // Health regeneration rate. "StatusMana" "400" // Base mana. "StatusManaRegen" "100.0" // Mana regeneration rate. "VisionDaytimeRange" "1800" // Range of vision at night time. "VisionNighttimeRange" "1800" // Range of vision at night time. } } ================================================ FILE: game/dota_addons/barebones/scripts/npc/npc_items_custom.txt ================================================ "DOTAAbilities" { "item_containers_lua_pack" { // General //------------------------------------------------------------------------------------------------------------- "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "ID" "1835" "BaseClass" "item_lua" "AbilityTextureName" "item_present" "ScriptFile" "libraries/abilities/item_containers_lua_pack.lua" "MaxLevel" "1" "ItemCost" "0" "ItemPurchasable" "0" "ItemKillable" "0" "ItemDroppable" "0" "ItemSellable" "0" "ItemCanChangeContainer" "0" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0 0 0 0" } //Shield "item_example_item" { "ID" "1836" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "BaseClass" "item_datadriven" "AbilityCastAnimation" "ACT_DOTA_DISABLED" "AbilityTextureName" "item_example_item" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" "AbilityCastPoint" "0.2" "AbilityCooldown" "13.0" // Item Info //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100" "ItemCost" "750" "ItemInitialCharges" "0" "ItemDroppable" "1" "ItemSellable" "1" "ItemRequiresCharges" "0" "ItemShareability" "ITEM_NOT_SHAREABLE" "ItemDeclarations" "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_TO_SPECTATORS" "MaxUpgradeLevel" "1" "ItemBaseLevel" "1" "precache" { "particle" "particles/frostivus_herofx/queen_shadow_strike_linear_parent.vpcf" "particle_folder" "particles/test_particle" "soundfile" "soundevents/game_sounds_heroes/game_sounds_abaddon.vsndevts" } "OnSpellStart" { "LinearProjectile" { "EffectName" "particles/frostivus_herofx/queen_shadow_strike_linear_parent.vpcf" "MoveSpeed" "%speed" //"StartPosition" "attach_attack1" "FixedDistance" "%distance" "StartRadius" "%radius" "EndRadius" "%radius" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_HERO" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_NONE" "HasFrontalCone" "0" "ProvidesVision" "0" "VisionRadius" "0" } "FireSound" { "EffectName" "Hero_Abaddon.AphoticShield.Cast" "Target" "CASTER" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_item_shield" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PURE" "Damage" "%damage" } } "Modifiers" { "modifier_item_shield" { "EffectName" "particles/test_particle/damage_immunity.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "Duration" "%duration" "TextureName" "abaddon_aphotic_shield" "Properties" { "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "%damage_reduction" } } "modifier_item_ex" { "Passive" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "33" } } "modifier_item_ex2" { "Passive" "1" "Properties" { "MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "3" } } } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "4.0" } "02" { "var_type" "FIELD_INTEGER" "damage_reduction" "-50" } "03" { "var_type" "FIELD_INTEGER" "radius" "150" } "04" { "var_type" "FIELD_INTEGER" "speed" "1800" } "05" { "var_type" "FIELD_FLOAT" "distance" "900" } "06" { "var_type" "FIELD_INTEGER" "damage" "125" } } } } ================================================ FILE: game/dota_addons/barebones/scripts/npc/npc_units_custom.txt ================================================ // Dota Units File "DOTAUnits" { "Version" "1" "npc_dummy_unit" { // General // "BaseClass" "npc_dota_base_additive" // Class of entity of link to. "Model" "models/development/invisiblebox.vmdl" // Model. "SoundSet" "Creep_Good_Range" // Name of sound set. "Level" "0" "UnitLabel" "healing_ward" // Abilities //---------------------------------------------------------------- "Ability1" "dummy_unit" // Ability 1. "Ability2" "" // Ability 2. "Ability3" "" // Ability 3. "Ability4" "" // Ability 4. "Ability5" "" // Ability 5. "Ability6" "" // Ability 6 - Extra. "Ability7" "" // Ability 7 - Extra. "Ability8" "" // Ability 8 - Extra. // Armor //---------------------------------------------------------------- "ArmorPhysical" "0" // Physical protection. "MagicalResistance" "0" // Magical protection. // Attack //---------------------------------------------------------------- "AttackCapabilities" "DOTA_UNIT_CAP_NO_ATTACK" // Type of attack - melee, ranged, etc. "AttackDamageMin" "0" // Damage range min. "AttackDamageMax" "0" // Damage range max. "AttackDamageType" "DAMAGE_TYPE_ArmorPhysical" "AttackRate" "1" // Speed of attack. "AttackAnimationPoint" "0.5" // Normalized time in animation cycle to attack. "AttackAcquisitionRange" "800" // Range within a target can be acquired. "AttackRange" "500" // Range within a target can be attacked. "ProjectileModel" "" // Particle system model for projectile. "ProjectileSpeed" "900" // Speed of projectile. // Attributes //---------------------------------------------------------------- "AttributePrimary" "DOTA_ATTRIBUTE_STRENGTH" "AttributeBaseStrength" "0" // Base strength "AttributeStrengthGain" "0" // Strength bonus per level. "AttributeBaseIntelligence" "0" // Base intelligence "AttributeIntelligenceGain" "0" // Intelligence bonus per level. "AttributeBaseAgility" "0" // Base agility "AttributeAgilityGain" "0" // Agility bonus per level. // Bounty //---------------------------------------------------------------- "BountyXP" "0" // Experience earn. "BountyGoldMin" "0" // Gold earned min. "BountyGoldMax" "0" // Gold earned max. // Bounds //---------------------------------------------------------------- "BoundsHullName" "DOTA_HULL_SIZE_SMALL" // Hull type used for navigation/locomotion. // Movement //---------------------------------------------------------------- "MovementCapabilities" "DOTA_UNIT_CAP_MOVE_GROUND" // Type of locomotion - ground, air "MovementSpeed" "450" // Speed "MovementTurnRate" "1.0" // Turning rate. "FollowRange" "250" // Distance to keep when following // Status //---------------------------------------------------------------- "StatusHealth" "1" // Base health. "StatusHealthRegen" "0" // Health regeneration rate. "StatusMana" "0" // Base mana. "StatusManaRegen" "0" // Mana regeneration rate. // Team //---------------------------------------------------------------- "TeamName" "DOTA_TEAM_GOODGUYS" // Team name. "CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_PIERCE" "CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_SOFT" "UnitRelationshipClass" "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_WARD" // Vision //---------------------------------------------------------------- "VisionDaytimeRange" "0" // Range of vision during day light. "VisionNighttimeRange" "0" // Range of vision at night time. // Bots //---------------------------------------------------------------- "AttackDesire" "1.5" // How much bots want to attack them vs other non-hero things } } ================================================ FILE: game/dota_addons/barebones/scripts/shops.txt ================================================ "dota_shops" { "consumables" { "item" "item_clarity" "item" "item_enchanted_mango" "item" "item_tango" "item" "item_flask" "item" "item_smoke_of_deceit" //"item" "item_blinders" "item" "item_tpscroll" //"item" "item_red_mist" //"item" "item_bounty_pact" "item" "item_dust" "item" "item_courier" "item" "item_flying_courier" "item" "item_ward_observer" "item" "item_ward_sentry" "item" "item_bottle" } "attributes" { "item" "item_branches" "item" "item_gauntlets" "item" "item_slippers" "item" "item_mantle" "item" "item_circlet" "item" "item_belt_of_strength" "item" "item_boots_of_elves" "item" "item_robe" "item" "item_ogre_axe" "item" "item_blade_of_alacrity" "item" "item_staff_of_wizardry" } "weapons_armor" { "item" "item_ring_of_protection" "item" "item_quelling_blade" "item" "item_orb_of_venom" "item" "item_stout_shield" "item" "item_blades_of_attack" "item" "item_chainmail" "item" "item_helm_of_iron_will" "item" "item_broadsword" "item" "item_quarterstaff" "item" "item_claymore" "item" "item_javelin" "item" "item_mithril_hammer" } "misc" { "item" "item_magic_stick" "item" "item_sobi_mask" "item" "item_ring_of_regen" //"item" "item_ward_dispenser" "item" "item_boots" //"item" "item_whip" //"item" "item_telescope" "item" "item_gloves" "item" "item_cloak" "item" "item_gem" "item" "item_lifesteal" "item" "item_ghost" "item" "item_blink" "item" "item_shadow_amulet" "item" "item_ring_of_health" "item" "item_void_stone" } // Level 1 - Green Recipes "basics" { "item" "item_wraith_band" "item" "item_null_talisman" "item" "item_magic_wand" "item" "item_bracer" "item" "item_poor_mans_shield" "item" "item_soul_ring" "item" "item_phase_boots" "item" "item_power_treads" "item" "item_oblivion_staff" "item" "item_pers" "item" "item_hand_of_midas" "item" "item_travel_boots" "item" "item_moon_shard" } // Level 2 - Blue Recipes "support" { "item" "item_ring_of_basilius" "item" "item_headdress" "item" "item_buckler" "item" "item_urn_of_shadows" //"item" "item_natures_mend" "item" "item_ring_of_aquila" //"item" "item_iron_talon" "item" "item_tranquil_boots" //"item" "item_nightfall_striders" "item" "item_guardian_greaves" "item" "item_medallion_of_courage" "item" "item_arcane_boots" //"item" "item_arcane_boots2" "item" "item_ancient_janggo" "item" "item_vladmir" "item" "item_mekansm" "item" "item_pipe" } "magics" { "item" "item_force_staff" "item" "item_necronomicon" "item" "item_cyclone" "item" "item_dagon" "item" "item_veil_of_discord" "item" "item_rod_of_atos" "item" "item_ultimate_scepter" "item" "item_octarine_core" "item" "item_solar_crest" //"item" "item_rune_breaker" //"item" "item_aether_staff" "item" "item_orchid" "item" "item_refresher" "item" "item_sheepstick" "item" "item_glimmer_cape" } // Level 3 - Purple Recipes "defense" { "item" "item_hood_of_defiance" "item" "item_blade_mail" "item" "item_vanguard" "item" "item_soul_booster" "item" "item_black_king_bar" "item" "item_shivas_guard" "item" "item_manta" "item" "item_bloodstone" "item" "item_sphere" "item" "item_assault" "item" "item_heart" "item" "item_crimson_guard" "item" "item_lotus_orb" } "weapons" { "item" "item_lesser_crit" "item" "item_armlet" "item" "item_basher" "item" "item_invis_sword" "item" "item_bfury" "item" "item_silver_edge" "item" "item_ethereal_blade" "item" "item_radiance" "item" "item_monkey_king_bar" "item" "item_greater_crit" "item" "item_butterfly" "item" "item_rapier" "item" "item_abyssal_blade" } // Level 4 - Orange / Orb / Artifacts "artifacts" { //"item" "item_venomous_shield" "item" "item_helm_of_the_dominator" "item" "item_mask_of_madness" "item" "item_sange" "item" "item_yasha" "item" "item_maelstrom" "item" "item_diffusal_blade" "item" "item_desolator" "item" "item_heavens_halberd" "item" "item_sange_and_yasha" "item" "item_mjollnir" "item" "item_skadi" "item" "item_satanic" } "sideshop1" { "item" "item_tpscroll" "item" "item_magic_stick" "item" "item_sobi_mask" "item" "item_ring_of_regen" "item" "item_orb_of_venom" "item" "item_boots" "item" "item_cloak" "item" "item_ring_of_health" "item" "item_void_stone" "item" "item_lifesteal" "item" "item_helm_of_iron_will" "item" "item_energy_booster" "item" "item_broadsword" } "sideshop2" { "item" "item_slippers" "item" "item_mantle" "item" "item_quelling_blade" "item" "item_stout_shield" "item" "item_boots_of_elves" "item" "item_belt_of_strength" "item" "item_robe" "item" "item_blades_of_attack" "item" "item_gloves" "item" "item_chainmail" "item" "item_quarterstaff" "item" "item_ultimate_orb" "item" "item_blink" } "secretshop" { "item" "item_energy_booster" "item" "item_vitality_booster" "item" "item_point_booster" "item" "item_platemail" "item" "item_talisman_of_evasion" "item" "item_hyperstone" "item" "item_ultimate_orb" "item" "item_demon_edge" "item" "item_mystic_staff" "item" "item_reaver" "item" "item_eagle" "item" "item_relic" } } ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/addon_game_mode.lua ================================================ -- This is the entry-point to your game mode and should be used primarily to precache models/particles/sounds/etc require('internal/util') require('gamemode') function Precache( context ) --[[ This function is used to precache resources/units/items/abilities that will be needed for sure in your game and that will not be precached by hero selection. When a hero is selected from the hero selection screen, the game will precache that hero's assets, any equipped cosmetics, and perform the data-driven precaching defined in that hero's precache{} block, as well as the precache{} block for any equipped abilities. See GameMode:PostLoadPrecache() in gamemode.lua for more information ]] DebugPrint("[BAREBONES] Performing pre-load precache") -- Particles can be precached individually or by folder -- It it likely that precaching a single particle system will precache all of its children, but this may not be guaranteed PrecacheResource("particle", "particles/econ/generic/generic_aoe_explosion_sphere_1/generic_aoe_explosion_sphere_1.vpcf", context) PrecacheResource("particle_folder", "particles/test_particle", context) -- Models can also be precached by folder or individually -- PrecacheModel should generally used over PrecacheResource for individual models PrecacheResource("model_folder", "particles/heroes/antimage", context) PrecacheResource("model", "particles/heroes/viper/viper.vmdl", context) PrecacheModel("models/heroes/viper/viper.vmdl", context) --PrecacheModel("models/props_gameplay/treasure_chest001.vmdl", context) --PrecacheModel("models/props_debris/merchant_debris_chest001.vmdl", context) --PrecacheModel("models/props_debris/merchant_debris_chest002.vmdl", context) -- Sounds can precached here like anything else PrecacheResource("soundfile", "soundevents/game_sounds_heroes/game_sounds_gyrocopter.vsndevts", context) -- Entire items can be precached by name -- Abilities can also be precached in this way despite the name PrecacheItemByNameSync("example_ability", context) PrecacheItemByNameSync("item_example_item", context) -- Entire heroes (sound effects/voice/models/particles) can be precached with PrecacheUnitByNameSync -- Custom units from npc_units_custom.txt can also have all of their abilities and precache{} blocks precached in this way PrecacheUnitByNameSync("npc_dota_hero_ancient_apparition", context) PrecacheUnitByNameSync("npc_dota_hero_enigma", context) end -- Create the game mode when we activate function Activate() GameRules.GameMode = GameMode() GameRules.GameMode:_InitGameMode() end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/animation_example/heroes/axe/axe.lua ================================================ --============ Copyright (c) Valve Corporation, All rights reserved. ========== -- -- source1import auto-generated animation script -- local changes will be overwritten if source1import if run again on this asset -- -- mdl: models\heroes\axe\axe.mdl -- --============================================================================= --To Activate these scripted animation overrides, rename the "animation_example" folder to "animation" model:CreateWeightlist( "upperBody", { { "thigh_L", 0 }, { "thigh_R", 0 }, { "root", 0.25 }, { "spine1", 1 } } ) --This is an example of a script-added weight list which effectively disables an animation from playing on any bones besides the right-arm model:CreateWeightlist( "testWeights", { { "thigh_L", 0 }, { "thigh_R", 0 }, { "root", 0 }, { "spine1", 0 }, { "spine2", 0 }, { "spine3", 0 }, { "neck1", 0 }, { "clavicle_L", 0 }, { "clavicle_R", 0 }, { "bicep_R", 1 } } ) --This is an example of "overriding" the default ACT_DOTA_SPAWN activity animation with a different animation ("death") by heavily weighting this --script animation so that it is played 100000 out of every 100001 spawn activity model:CreateSequence( { name = "new_spawn", sequences = { { "death" } }, weightlist = "upperBody", activities = { { name = "ACT_DOTA_SPAWN", weight = 100000 } } } ) --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 --to the ACT_DOTA_ATTACK2 activity, which is unused on axe's model (currently). --axeUnit:StartGesture(ACT_DOTA_ATTACK2) will play this single-arm scripted animation. model:CreateSequence( { name = "test_weight", sequences = { { "@attack" } }, weightlist = "testWeights", activities = { { name = "ACT_DOTA_ATTACK2", weight = 1 } } } ) model:CreateSequence( { name = "berserkers_call", sequences = { { "@berserkers_call" } }, weightlist = "upperBody", activities = { { name = "ACT_DOTA_OVERRIDE_ABILITY_1", weight = 1 } } } ) model:CreateSequence( { name = "rampant_berserkers_call", sequences = { { "@rampant_berserkers_call" } }, weightlist = "upperBody", activities = { { name = "ACT_DOTA_OVERRIDE_ABILITY_1", weight = 1 }, { name = "rampant", weight = 1 } } } ) model:CreateSequence( { name = "battle_hunger", sequences = { { "@battle_hunger" } }, weightlist = "upperBody", activities = { { name = "ACT_DOTA_OVERRIDE_ABILITY_2", weight = 1 } } } ) model:CreateSequence( { name = "counter_helix", framerangesequence = "@counter_helix", cmds = { { cmd = "sequence", sequence = "@counter_helix", dst = 1 }, { cmd = "fetchframe", sequence = "@counter_helix", frame = 0, dst = 2 }, { cmd = "subtract", dst = 1, src = 2 }, { cmd = "add", dst = 0, src = 1 } }, activities = { { name = "ACT_DOTA_CAST_ABILITY_3", weight = 1 } } } ) model:CreateSequence( { name = "counter_helix_blood_chaser", framerangesequence = "@counter_helix_blood_chaser", cmds = { { cmd = "sequence", sequence = "@counter_helix_blood_chaser", dst = 1 }, { cmd = "fetchframe", sequence = "@counter_helix_blood_chaser", frame = 0, dst = 2 }, { cmd = "subtract", dst = 1, src = 2 }, { cmd = "add", dst = 0, src = 1 } }, activities = { { name = "ACT_DOTA_CAST_ABILITY_3", weight = 1 }, { name = "blood_chaser", weight = 1 } } } ) ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/animation_example/heroes/legion_commander/legion_commander.lua ================================================ --============ Copyright (c) Valve Corporation, All rights reserved. ========== -- -- source1import auto-generated animation script -- local changes will be overwritten if source1import if run again on this asset -- -- mdl: models\heroes\legion_commander\legion_commander.mdl -- --============================================================================= -- AsLookLayer model:CreateSequence( { name = "@turns_lookFrame_0", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@turns", frame = 0, dst = 0 }, { cmd = "fetchframe", sequence = "@turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "@turns_lookFrame_1", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@turns", frame = 1, dst = 0 }, { cmd = "fetchframe", sequence = "@turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "@turns_lookFrame_2", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@turns", frame = 2, dst = 0 }, { cmd = "fetchframe", sequence = "@turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "turns", delta = true, poseParamX = model:CreatePoseParameter( "turn", -1, 1, 0, false ), sequences = { { "@turns_lookFrame_0", "@turns_lookFrame_1", "@turns_lookFrame_2" } } } ) -- AsTurningRun model:CreateSequence( { name = "legion_commander_run", sequences = { { "@legion_commander_run" } }, addlayer = { "turns" }, activities = { { name = "ACT_DOTA_RUN", weight = 1 } } } ) -- AsLookLayer model:CreateSequence( { name = "@run_haste_turns_lookFrame_0", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@run_haste_turns", frame = 0, dst = 0 }, { cmd = "fetchframe", sequence = "@run_haste_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "@run_haste_turns_lookFrame_1", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@run_haste_turns", frame = 1, dst = 0 }, { cmd = "fetchframe", sequence = "@run_haste_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "@run_haste_turns_lookFrame_2", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@run_haste_turns", frame = 2, dst = 0 }, { cmd = "fetchframe", sequence = "@run_haste_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "run_haste_turns", delta = true, poseParamX = model:CreatePoseParameter( "turn", -1, 1, 0, false ), sequences = { { "@run_haste_turns_lookFrame_0", "@run_haste_turns_lookFrame_1", "@run_haste_turns_lookFrame_2" } } } ) -- AsTurningRun model:CreateSequence( { name = "legion_commander_run_haste", sequences = { { "@legion_commander_run_haste" } }, addlayer = { "run_haste_turns" }, activities = { { name = "ACT_DOTA_RUN", weight = 1 }, { name = "haste", weight = 1 } } } ) -- AsTurningRun model:CreateSequence( { name = "legion_commander_run_overwhelmingodds", sequences = { { "@legion_commander_run_overwhelmingodds" } }, addlayer = { "run_haste_turns" }, activities = { { name = "ACT_DOTA_RUN", weight = 1 }, { name = "overwhelmingodds", weight = 1 } } } ) -- AsLookLayer model:CreateSequence( { name = "@run_injured_turns_lookFrame_0", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@run_injured_turns", frame = 0, dst = 0 }, { cmd = "fetchframe", sequence = "@run_injured_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "@run_injured_turns_lookFrame_1", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@run_injured_turns", frame = 1, dst = 0 }, { cmd = "fetchframe", sequence = "@run_injured_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "@run_injured_turns_lookFrame_2", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@run_injured_turns", frame = 2, dst = 0 }, { cmd = "fetchframe", sequence = "@run_injured_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "run_injured_turns", delta = true, poseParamX = model:CreatePoseParameter( "turn", -1, 1, 0, false ), sequences = { { "@run_injured_turns_lookFrame_0", "@run_injured_turns_lookFrame_1", "@run_injured_turns_lookFrame_2" } } } ) -- AsTurningRun model:CreateSequence( { name = "legion_commander_run_injured", sequences = { { "@legion_commander_run_injured" } }, addlayer = { "run_injured_turns" }, activities = { { name = "ACT_DOTA_RUN", weight = 1 }, { name = "injured", weight = 1 } } } ) -- AsTurningRun model:CreateSequence( { name = "dualwield_legion_commander_run", sequences = { { "@dualwield_legion_commander_run" } }, addlayer = { "turns" }, activities = { { name = "ACT_DOTA_RUN", weight = 1 }, { name = "dualwield", weight = 1 } } } ) -- AsLookLayer model:CreateSequence( { name = "@dualwield_run_haste_turns_lookFrame_0", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@dualwield_run_haste_turns", frame = 0, dst = 0 }, { cmd = "fetchframe", sequence = "@dualwield_run_haste_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "@dualwield_run_haste_turns_lookFrame_1", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@dualwield_run_haste_turns", frame = 1, dst = 0 }, { cmd = "fetchframe", sequence = "@dualwield_run_haste_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "@dualwield_run_haste_turns_lookFrame_2", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@dualwield_run_haste_turns", frame = 2, dst = 0 }, { cmd = "fetchframe", sequence = "@dualwield_run_haste_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "dualwield_run_haste_turns", delta = true, poseParamX = model:CreatePoseParameter( "turn", -1, 1, 0, false ), sequences = { { "@dualwield_run_haste_turns_lookFrame_0", "@dualwield_run_haste_turns_lookFrame_1", "@dualwield_run_haste_turns_lookFrame_2" } } } ) -- AsTurningRun model:CreateSequence( { name = "dualwield_legion_commander_run_haste", sequences = { { "@dualwield_legion_commander_run_haste" } }, addlayer = { "dualwield_run_haste_turns" }, activities = { { name = "ACT_DOTA_RUN", weight = 1 }, { name = "dualwield", weight = 1 }, { name = "haste", weight = 1 } } } ) -- AsTurningRun model:CreateSequence( { name = "dualwield_legion_commander_run_overwhelmingodds", sequences = { { "@dualwield_legion_commander_run_overwhelmingodds" } }, addlayer = { "dualwield_run_haste_turns" }, activities = { { name = "ACT_DOTA_RUN", weight = 1 }, { name = "dualwield", weight = 1 }, { name = "overwhelmingodds", weight = 1 } } } ) -- AsLookLayer model:CreateSequence( { name = "@dualwield_run_injured_turns_lookFrame_0", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@dualwield_run_injured_turns", frame = 0, dst = 0 }, { cmd = "fetchframe", sequence = "@dualwield_run_injured_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "@dualwield_run_injured_turns_lookFrame_1", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@dualwield_run_injured_turns", frame = 1, dst = 0 }, { cmd = "fetchframe", sequence = "@dualwield_run_injured_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "@dualwield_run_injured_turns_lookFrame_2", snap = true, delta = true, hidden = true, cmds = { { cmd = "fetchframe", sequence = "@dualwield_run_injured_turns", frame = 2, dst = 0 }, { cmd = "fetchframe", sequence = "@dualwield_run_injured_turns", frame = 1, dst = 1 }, { cmd = "subtract", dst = 0, src = 1 } } } ) model:CreateSequence( { name = "dualwield_run_injured_turns", delta = true, poseParamX = model:CreatePoseParameter( "turn", -1, 1, 0, false ), sequences = { { "@dualwield_run_injured_turns_lookFrame_0", "@dualwield_run_injured_turns_lookFrame_1", "@dualwield_run_injured_turns_lookFrame_2" } } } ) -- AsTurningRun model:CreateSequence( { name = "dualwield_legion_commander_run_injured", sequences = { { "@dualwield_legion_commander_run_injured" } }, addlayer = { "dualwield_run_injured_turns" }, activities = { { name = "ACT_DOTA_RUN", weight = 1 }, { name = "dualwield", weight = 1 }, { name = "injured", weight = 1 } } } ) model:CreateSequence( { name = "new_dualweild_moc", sequences = { { "dualwield_legion_commander_momentofcourage" } }, --addlayer = { --"turns" --}, activities = { { name = "ACT_DOTA_CAST_ABILITY_3", weight = 1 }, { name = "dualwield", weight = 1 } } } ) ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/events.lua ================================================ -- This file contains all barebones-registered events and has already set up the passed-in parameters for your use. -- Cleanup a player when they leave function GameMode:OnDisconnect(keys) DebugPrint('[BAREBONES] Player Disconnected ' .. tostring(keys.userid)) DebugPrintTable(keys) local name = keys.name local networkid = keys.networkid local reason = keys.reason local userid = keys.userid end -- The overall game state has changed function GameMode:OnGameRulesStateChange(keys) DebugPrint("[BAREBONES] GameRules State Changed") DebugPrintTable(keys) local newState = GameRules:State_Get() end -- An NPC has spawned somewhere in game. This includes heroes function GameMode:OnNPCSpawned(keys) DebugPrint("[BAREBONES] NPC Spawned") DebugPrintTable(keys) local npc = EntIndexToHScript(keys.entindex) end -- An entity somewhere has been hurt. This event fires very often with many units so don't do too many expensive -- operations here function GameMode:OnEntityHurt(keys) --DebugPrint("[BAREBONES] Entity Hurt") --DebugPrintTable(keys) local damagebits = keys.damagebits -- This might always be 0 and therefore useless if keys.entindex_attacker ~= nil and keys.entindex_killed ~= nil then local entCause = EntIndexToHScript(keys.entindex_attacker) local entVictim = EntIndexToHScript(keys.entindex_killed) -- The ability/item used to damage, or nil if not damaged by an item/ability local damagingAbility = nil if keys.entindex_inflictor ~= nil then damagingAbility = EntIndexToHScript( keys.entindex_inflictor ) end end end -- An item was picked up off the ground function GameMode:OnItemPickedUp(keys) DebugPrint( '[BAREBONES] OnItemPickedUp' ) DebugPrintTable(keys) local unitEntity = nil if keys.UnitEntitIndex then unitEntity = EntIndexToHScript(keys.UnitEntitIndex) elseif keys.HeroEntityIndex then unitEntity = EntIndexToHScript(keys.HeroEntityIndex) end local itemEntity = EntIndexToHScript(keys.ItemEntityIndex) local player = PlayerResource:GetPlayer(keys.PlayerID) local itemname = keys.itemname end -- A player has reconnected to the game. This function can be used to repaint Player-based particles or change -- state as necessary function GameMode:OnPlayerReconnect(keys) DebugPrint( '[BAREBONES] OnPlayerReconnect' ) DebugPrintTable(keys) end -- An item was purchased by a player function GameMode:OnItemPurchased( keys ) DebugPrint( '[BAREBONES] OnItemPurchased' ) DebugPrintTable(keys) -- The playerID of the hero who is buying something local plyID = keys.PlayerID if not plyID then return end -- The name of the item purchased local itemName = keys.itemname -- The cost of the item purchased local itemcost = keys.itemcost end -- An ability was used by a player function GameMode:OnAbilityUsed(keys) DebugPrint('[BAREBONES] AbilityUsed') DebugPrintTable(keys) local player = PlayerResource:GetPlayer(keys.PlayerID) local abilityname = keys.abilityname end -- A non-player entity (necro-book, chen creep, etc) used an ability function GameMode:OnNonPlayerUsedAbility(keys) DebugPrint('[BAREBONES] OnNonPlayerUsedAbility') DebugPrintTable(keys) local abilityname= keys.abilityname end -- A player changed their name function GameMode:OnPlayerChangedName(keys) DebugPrint('[BAREBONES] OnPlayerChangedName') DebugPrintTable(keys) local newName = keys.newname local oldName = keys.oldName end -- A player leveled up an ability function GameMode:OnPlayerLearnedAbility( keys) DebugPrint('[BAREBONES] OnPlayerLearnedAbility') DebugPrintTable(keys) local player = EntIndexToHScript(keys.player) local abilityname = keys.abilityname end -- A channelled ability finished by either completing or being interrupted function GameMode:OnAbilityChannelFinished(keys) DebugPrint('[BAREBONES] OnAbilityChannelFinished') DebugPrintTable(keys) local abilityname = keys.abilityname local interrupted = keys.interrupted == 1 end -- A player leveled up function GameMode:OnPlayerLevelUp(keys) DebugPrint('[BAREBONES] OnPlayerLevelUp') DebugPrintTable(keys) local player = EntIndexToHScript(keys.player) local level = keys.level end -- A player last hit a creep, a tower, or a hero function GameMode:OnLastHit(keys) DebugPrint('[BAREBONES] OnLastHit') DebugPrintTable(keys) local isFirstBlood = keys.FirstBlood == 1 local isHeroKill = keys.HeroKill == 1 local isTowerKill = keys.TowerKill == 1 local player = PlayerResource:GetPlayer(keys.PlayerID) local killedEnt = EntIndexToHScript(keys.EntKilled) end -- A tree was cut down by tango, quelling blade, etc function GameMode:OnTreeCut(keys) DebugPrint('[BAREBONES] OnTreeCut') DebugPrintTable(keys) local treeX = keys.tree_x local treeY = keys.tree_y end -- A rune was activated by a player function GameMode:OnRuneActivated (keys) DebugPrint('[BAREBONES] OnRuneActivated') DebugPrintTable(keys) local player = PlayerResource:GetPlayer(keys.PlayerID) local rune = keys.rune --[[ Rune Can be one of the following types DOTA_RUNE_DOUBLEDAMAGE DOTA_RUNE_HASTE DOTA_RUNE_HAUNTED DOTA_RUNE_ILLUSION DOTA_RUNE_INVISIBILITY DOTA_RUNE_BOUNTY DOTA_RUNE_MYSTERY DOTA_RUNE_RAPIER DOTA_RUNE_REGENERATION DOTA_RUNE_SPOOKY DOTA_RUNE_TURBO ]] end -- A player took damage from a tower function GameMode:OnPlayerTakeTowerDamage(keys) DebugPrint('[BAREBONES] OnPlayerTakeTowerDamage') DebugPrintTable(keys) local player = PlayerResource:GetPlayer(keys.PlayerID) local damage = keys.damage end -- A player picked a hero function GameMode:OnPlayerPickHero(keys) DebugPrint('[BAREBONES] OnPlayerPickHero') DebugPrintTable(keys) local heroClass = keys.hero local heroEntity = EntIndexToHScript(keys.heroindex) local player = EntIndexToHScript(keys.player) end -- A player killed another player in a multi-team context function GameMode:OnTeamKillCredit(keys) DebugPrint('[BAREBONES] OnTeamKillCredit') DebugPrintTable(keys) local killerPlayer = PlayerResource:GetPlayer(keys.killer_userid) local victimPlayer = PlayerResource:GetPlayer(keys.victim_userid) local numKills = keys.herokills local killerTeamNumber = keys.teamnumber end -- An entity died function GameMode:OnEntityKilled( keys ) DebugPrint( '[BAREBONES] OnEntityKilled Called' ) DebugPrintTable( keys ) -- The Unit that was Killed local killedUnit = EntIndexToHScript( keys.entindex_killed ) -- The Killing entity local killerEntity = nil if keys.entindex_attacker ~= nil then killerEntity = EntIndexToHScript( keys.entindex_attacker ) end -- The ability/item used to kill, or nil if not killed by an item/ability local killerAbility = nil if keys.entindex_inflictor ~= nil then killerAbility = EntIndexToHScript( keys.entindex_inflictor ) end local damagebits = keys.damagebits -- This might always be 0 and therefore useless -- Put code here to handle when an entity gets killed end -- This function is called 1 to 2 times as the player connects initially but before they -- have completely connected function GameMode:PlayerConnect(keys) DebugPrint('[BAREBONES] PlayerConnect') DebugPrintTable(keys) end -- This function is called once when the player fully connects and becomes "Ready" during Loading function GameMode:OnConnectFull(keys) DebugPrint('[BAREBONES] OnConnectFull') DebugPrintTable(keys) local entIndex = keys.index+1 -- The Player entity of the joining user local ply = EntIndexToHScript(entIndex) -- The Player ID of the joining player local playerID = ply:GetPlayerID() end -- This function is called whenever illusions are created and tells you which was/is the original entity function GameMode:OnIllusionsCreated(keys) DebugPrint('[BAREBONES] OnIllusionsCreated') DebugPrintTable(keys) local originalEntity = EntIndexToHScript(keys.original_entindex) end -- This function is called whenever an item is combined to create a new item function GameMode:OnItemCombined(keys) DebugPrint('[BAREBONES] OnItemCombined') DebugPrintTable(keys) -- The playerID of the hero who is buying something local plyID = keys.PlayerID if not plyID then return end local player = PlayerResource:GetPlayer(plyID) -- The name of the item purchased local itemName = keys.itemname -- The cost of the item purchased local itemcost = keys.itemcost end -- This function is called whenever an ability begins its PhaseStart phase (but before it is actually cast) function GameMode:OnAbilityCastBegins(keys) DebugPrint('[BAREBONES] OnAbilityCastBegins') DebugPrintTable(keys) local player = PlayerResource:GetPlayer(keys.PlayerID) local abilityName = keys.abilityname end -- This function is called whenever a tower is killed function GameMode:OnTowerKill(keys) DebugPrint('[BAREBONES] OnTowerKill') DebugPrintTable(keys) local gold = keys.gold local killerPlayer = PlayerResource:GetPlayer(keys.killer_userid) local team = keys.teamnumber end -- This function is called whenever a player changes there custom team selection during Game Setup function GameMode:OnPlayerSelectedCustomTeam(keys) DebugPrint('[BAREBONES] OnPlayerSelectedCustomTeam') DebugPrintTable(keys) local player = PlayerResource:GetPlayer(keys.player_id) local success = (keys.success == 1) local team = keys.team_id end -- This function is called whenever an NPC reaches its goal position/target function GameMode:OnNPCGoalReached(keys) DebugPrint('[BAREBONES] OnNPCGoalReached') DebugPrintTable(keys) local goalEntity = EntIndexToHScript(keys.goal_entindex) local nextGoalEntity = EntIndexToHScript(keys.next_goal_entindex) local npc = EntIndexToHScript(keys.npc_entindex) end -- This function is called whenever any player sends a chat message to team or All function GameMode:OnPlayerChat(keys) local teamonly = keys.teamonly local userID = keys.userid local playerID = self.vUserIds[userID]:GetPlayerID() local text = keys.text end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/examples/colliders.lua ================================================ if hero == nil then hero = PlayerResource:GetPlayer(0):GetAssignedHero() Physics:Unit(hero) end --[[if true then boxcollider4 = Physics:AddCollider("aabox2", Physics:ColliderFromProfile("aaboxreflect")) boxcollider4.box = {Vector(-400,-800,0), Vector(-200,-200,500)} boxcollider4.draw = true boxcollider4.test = function(self, unit) return IsPhysicsUnit(unit) end return end]] if testCount == nil then if not enigma then enigma = CreateUnitByName('npc_dummy_unit', Vector(0,0,0), true, hero, hero, hero:GetTeamNumber()) enigma:FindAbilityByName("reflex_dummy_unit"):SetLevel(1) enigma:SetModel('models/heroes/enigma/enigma.vmdl') enigma:SetOriginalModel('models/heroes/enigma/enigma.vmdl') Physics:Unit(enigma) planet1 = CreateUnitByName('npc_dummy_unit', Vector(0,0,0), true, hero, hero, hero:GetTeamNumber()) planet1:FindAbilityByName("reflex_dummy_unit"):SetLevel(1) planet1:SetModel('models/props_gameplay/rune_doubledamage01.vmdl') planet1:SetOriginalModel('models/props_gameplay/rune_doubledamage01.vmdl') Physics:Unit(planet1) planet2 = CreateUnitByName('npc_dummy_unit', Vector(0,0,0), true, hero, hero, hero:GetTeamNumber()) planet2:FindAbilityByName("reflex_dummy_unit"):SetLevel(1) planet2:SetModel('models/props_gameplay/rune_haste01.vmdl') planet2:SetOriginalModel('models/props_gameplay/rune_haste01.vmdl') Physics:Unit(planet2) planet3 = CreateUnitByName('npc_dummy_unit', Vector(0,0,0), true, hero, hero, hero:GetTeamNumber()) planet3:FindAbilityByName("reflex_dummy_unit"):SetLevel(1) planet3:SetModel('models/props_gameplay/rune_illusion01.vmdl') planet3:SetOriginalModel('models/props_gameplay/rune_illusion01.vmdl') Physics:Unit(planet3) end Timers:CreateTimer(function() enigma:SetAbsOrigin(Vector(0,0,400)) enigma:RemoveCollider() collider = enigma:AddColliderFromProfile("gravity") collider.radius = 1000 collider.fullRadius = 0 collider.force = 5000 collider.linear = false collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) and collided.GetUnitName and collided:GetUnitName() == "npc_dummy_unit" end planet1:SetAbsOrigin(Vector(-500,0,400)) planet2:SetAbsOrigin(Vector(300,0,400)) planet3:SetAbsOrigin(Vector(0,100,400)) planet1:SetPhysicsVelocity(Vector(0,600,0)) planet2:SetPhysicsVelocity(Vector(0,0,1000)) planet3:SetPhysicsVelocity(Vector(1,0,1):Normalized() * 1200) planet1:SetPhysicsFriction(0) planet2:SetPhysicsFriction(0) planet3:SetPhysicsFriction(0) end) testCount = -1 end -- Default block others if testCount == 0 then enigma:RemoveSelf() planet1:RemoveSelf() planet2:RemoveSelf() planet3:RemoveSelf() if testUnit == nil then --PrecacheUnitByNameAsync("npc_dota_hero_slark", function(...) end) testUnit = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber()) testUnit:SetModel('models/heroes/viper/viper.vmdl') testUnit:SetOriginalModel('models/heroes/viper/viper.vmdl') testUnit:SetControllableByPlayer(0, true) Physics:Unit(testUnit) ring = nil ring2 = nil ring3 = nil ring4 = nil ring5 = nil ring6 = nil box1 = nil box2 = nil box3 = nil mass = 100 end if testUnit2 == nil then --PrecacheUnitByNameAsync("npc_dota_hero_slark", function(...) end) testUnit2 = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber()) --testUnit2:SetModel('models/heroes/viper/viper.vmdl') --testUnit2:SetOriginalModel('models/heroes/viper/viper.vmdl') testUnit2:SetModel('models/heroes/abaddon/abaddon.vmdl') testUnit2:SetOriginalModel('models/heroes/abaddon/abaddon.vmdl') testUnit2:SetControllableByPlayer(0, true) testUnit2:SetRenderColor(200,0,0) Physics:Unit(testUnit2) end collider = hero:AddColliderFromProfile("blocker") collider.radius = 400 collider.draw = {color = Vector(200,200,200), alpha = 5} ring = {unit = hero, radius = 400, alpha = 0, rgb = Vector(200,50,50)} collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end collider.postaction = function(self, collider, collided) print("post: " .. collided:GetName() .. " -- " .. VectorDistance(collider:GetAbsOrigin(), collided:GetAbsOrigin())) end collider.preaction = function(self, collider, collided) print("pre: " .. collided:GetName() .. " -- " .. VectorDistance(collider:GetAbsOrigin(), collided:GetAbsOrigin())) end Physics:RemoveCollider("testbox") boxcollider = Physics:AddCollider("testbox", Physics:ColliderFromProfile("boxblocker")) boxcollider.box = {Vector(-200,0,0), Vector(0,0,0), Vector(-200,1000,500)} boxcollider.test = function(self, unit) return IsPhysicsUnit(unit) end boxcollider.draw = {color = Vector(50,200,50), alpha = 5} units = {} --[[for i=1,4 do units[i] = CreateUnitByName('npc_dummy_unit', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber()) --units[i]:FindAbilityByName("reflex_dummy_unit"):SetLevel(1) units[i]:SetModel("models/props_gameplay/rune_doubledamage01.vmdl") units[i]:SetOriginalModel("models/props_gameplay/rune_doubledamage01.vmdl") units[i]:AddNewModifier(units[i], nil, "modifier_phased", {}) end]] Physics:RemoveCollider("testbox2") boxcollider2 = Physics:AddCollider("testbox2", Physics:ColliderFromProfile("boxreflect")) boxcollider2.box = {Vector(-100,700,0), Vector(1000,700,0), Vector(-100,900,500)} boxcollider2.test = function(self, unit) return IsPhysicsUnit(unit) end boxcollider2.draw = {color = Vector(200,50,200), alpha = 5} end -- Self-blocker if testCount == 1 then collider.moveSelf = true end -- Half radius if testCount == 2 then collider.radius = 200 end --testCount = 3 -- Remove collider, new collider if testCount == 3 then hero:RemoveCollider() Timers:CreateTimer("timer", { callback = function() local unit = CreateUnitByName('npc_dummy_unit', hero:GetAbsOrigin() + hero:GetForwardVector() * 100, true, hero, hero, hero:GetTeamNumber()) unit:FindAbilityByName("reflex_dummy_unit"):SetLevel(1) unit:SetModel("models/props_gameplay/rune_doubledamage01.vmdl") unit:SetOriginalModel("models/props_gameplay/rune_doubledamage01.vmdl") unit:AddNewModifier(unit, nil, "modifier_phased", {}) Physics:Unit(unit) unit:SetMass(mass) local projCollider = unit:AddColliderFromProfile("delete") projCollider.draw = {color=Vector(50,50,200), alpha=0} projCollider.radius = 100 projCollider.test = function(self, collider, collided) return IsPhysicsUnit(collided) and collided.GetUnitName ~= nil and collided:GetUnitName() == "npc_dummy_blank" end --unit:SetPhysicsVelocityMax(1000) unit:SetFriction(0) unit:AddPhysicsVelocity(hero:GetForwardVector() * 3000) unit:OnPhysicsFrame(function(unit) local dir = testUnit:GetAbsOrigin() - unit:GetAbsOrigin() dir = dir:Normalized() unit:SetPhysicsAcceleration(dir * 3000) end) return 1 end }) end if testCount == 4 then Physics:RemoveCollider("testbox") boxcollider = Physics:AddCollider("testbox", Physics:ColliderFromProfile("boxreflect")) boxcollider.box = {Vector(-100,550,0), RotatePosition(Vector(-100,550,0), QAngle(0,-15,0), Vector(-100,350,0)), RotatePosition(Vector(-100,550,0), QAngle(0,-15,0), Vector(1000,550,0)) + Vector(0,0,500)} boxcollider.test = function(self, unit) return IsPhysicsUnit(unit) end boxcollider.draw = {color = Vector(200,200,200), alpha = 5} end if testCount == 5 then collider = hero:AddColliderFromProfile("blocker") collider.radius = 400 collider.draw = {color = Vector(200,50,50), alpha = 0} collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end if testCount == 6 then hero:RemoveCollider() collider = hero:AddColliderFromProfile("gravity") collider.draw = {color = Vector(200,50,200), alpha = 0} collider.radius = 1000 collider.force = 1000 collider.linear = false collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end if testCount == 7 then hero:RemoveCollider() collider = hero:AddColliderFromProfile("gravity") collider.draw = {color = Vector(100,50,200), alpha = 0} collider.radius = 1000 collider.fullRadius = 500 collider.force = 1000 collider.linear = true collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end if testCount == 8 then hero:RemoveCollider() collider = hero:AddColliderFromProfile("gravity") collider.draw = {color = Vector(50,200,50), alpha = 0} collider.radius = 1500 collider.fullRadius = 1000 collider.minRadius = 750 collider.force = 1000 collider.linear = true collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end if testCount == 9 then hero:RemoveCollider() collider = hero:AddColliderFromProfile("repel") collider.draw = {color = Vector(200,200,50), alpha = 0} collider.radius = 1000 collider.force = 1000 collider.linear = false collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end if testCount == 10 then hero:RemoveCollider() collider = hero:AddColliderFromProfile("reflect") collider.draw = {color = Vector(200,200,200), alpha = 0} collider.radius = 200 collider.multiplier = 1 collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end if testCount == 11 then hero:RemoveCollider() collider = hero:AddColliderFromProfile("momentum") collider.draw = {color = Vector(0,0,0), alpha = 0} collider.radius = 200 collider.blockRadius = 100 collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end if testCount == 12 then hero:RemoveCollider() collider = hero:AddColliderFromProfile("momentum") collider.draw = {color = Vector(0,0,0), alpha = 0} collider.radius = 200 collider.blockRadius = 200 collider.test = function(self, collider, collided) mass = 5 return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end if testCount == 13 then hero:RemoveCollider() collider = hero:AddColliderFromProfile("momentum") collider.draw = {color = Vector(0,0,0), alpha = 0} collider.radius = 200 collider.blockRadius = 200 collider.elasticity = 0 collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end if testCount == 14 then hero:RemoveCollider() collider = hero:AddColliderFromProfile("momentum") collider.draw = {color = Vector(50,200,50), alpha = 0} collider.radius = 200 collider.blockRadius = 0 collider.elasticity = 0 collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end if testCount == 15 then hero:RemoveCollider() collider = hero:AddColliderFromProfile("gravity") collider.draw = {color = Vector(50,200,50), alpha = 0} collider.radius = 1500 collider.fullRadius = 1000 collider.minRadius = 750 collider.force = 1000 collider.linear = true collider.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end collider2 = hero:AddColliderFromProfile("blocker") collider.draw = {color = Vector(200,200,50), alpha = 0} collider2.radius = 400 collider2.test = function(self, collider, collided) return IsPhysicsUnit(collided) or (collided.IsRealHero and collided:IsRealHero()) end end print(testCount) testCount = testCount + 1 --PrintTable(Physics.Colliders) print('0----0') --print(testUnit:GetModelRadius()) --print(testUnit:BoundingRadius2D()) --print(testUnit:GetHullRadius()) --print(testUnit:GetPaddedCollisionRadius()) PrintTable(Physics.Colliders) print('0----0') hero:Hibernate(false) ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/examples/modifier_no_health.lua ================================================ modifier_no_health = class({}) function modifier_no_health:CheckState() local state = { [MODIFIER_STATE_NO_HEALTH_BAR] = true, } return state end function modifier_no_health:IsHidden() return true end function modifier_no_health:GetAttributes() return MODIFIER_ATTRIBUTE_PERMANENT end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/examples/notificationsExample.lua ================================================ -- Send a notification to all players that displays up top for 5 seconds Notifications:TopToAll({text="Top Notification for 5 seconds ", duration=5.0}) -- 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 Notifications:Top(0, {text="GREEEENNNN", duration=9, style={color="green"}, continue=true}) -- Display 3 styles of hero icons on the same line for 5 seconds. Notifications:TopToAll({hero="npc_dota_hero_axe", duration=5.0}) Notifications:TopToAll({hero="npc_dota_hero_axe", imagestyle="landscape", continue=true}) Notifications:TopToAll({hero="npc_dota_hero_axe", imagestyle="portrait", continue=true}) -- Display a generic image and then 2 ability icons and an item on the same line for 5 seconds Notifications:TopToAll({image="file://{images}/status_icons/dota_generic.psd", duration=5.0}) Notifications:TopToAll({ability="nyx_assassin_mana_burn", continue=true}) Notifications:TopToAll({ability="lina_fiery_soul", continue=true}) Notifications:TopToAll({item="item_force_staff", continue=true}) -- 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 Notifications:BottomToTeam(DOTA_TEAM_GOODGUYS, {text="AAAAAAAAAAAAAA", duration=10, class="NotificationMessage"}) -- Send a notification to player 0 which will display near the bottom a large red notification with a solid blue border for 5 seconds Notifications:Bottom(PlayerResource:GetPlayer(0), {text="Super Size Red", duration=5, style={color="red", ["font-size"]="110px", border="10px solid blue"}}) -- Remove 1 bottom and 2 top notifications 2 seconds later Timers:CreateTimer(2,function() Notifications:RemoveTop(0, 2) Notifications:RemoveBottomFromTeam(DOTA_TEAM_GOODGUYS, 1) -- Add 1 more notification to the bottom Notifications:BottomToAll({text="GREEEENNNN again", duration=9, style={color="green"}}) end) -- Clear all notifications from the bottom Timers:CreateTimer(7, function() Notifications:ClearBottomFromAll() end) ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/examples/playground.lua ================================================ --[[ This file is an example scenario showing a number of ways to make use of the containers.lua library. It works based on the "playground" map provided with barebones. This code creates several containers: 1) A backpack container for every hero in the game. This container has an item within their normal inventory which when used/cast opens/closes the corresponding container. 2) An equipment container for every hero in the game. This container has an item within their normal inventory which when used/cast opens/closes the corresponding container. There are 3 item slots in this container: a helmet slot, a chest armor slot, and a boots slot. Putting valid items into the correct slot will equip them and apply the passive associated with them (similar to the standard dota inventory). 3) Loot Boxes which are 2x2 boxes that spawn on the map and can be looted by each player. 4) Private Bank containers for each player, represented by a stone chest in the game world. Opening this container by right clicking it shows the private bank of the player that clicked it. 5) Shared Bank container represented by a wooden treasure chest. Opening and using this container is shared among all players. 6) Item-based Shop container represented by a golden treasure chest. This shop is availble to all players. 7) Team-based Unit-based shops. There is one team-shop for radiant (Ancient Apparition) and one for dire (Enigma). These shops can be inspected by left clicking them to select them from any distance. 8) Crafting Materials container represented by a wooden crate. 9) Crafting Station container represented by a workbench/table which allows for crafting things in a Minecraft-style. The only recipe built-in is branch+claymore+broadsword makes a battlefury (when properly oriented) ]] if GetMapName() == "playground" then if not PlayGround then PlayGround = {} end function RandomItem(owner) local id = RandomInt(1,29) local name = Containers.itemIDs[id] return CreateItem(name, owner, owner) end function CreateLootBox(loc) local phys = CreateItemOnPositionSync(loc:GetAbsOrigin(), nil) phys:SetForwardVector(Vector(0,-1,0)) phys:SetModelScale(1.5) local items = {} local slots = {1,2,3,4} for i=1,RandomInt(1,3) do items[table.remove(slots, RandomInt(1,#slots))] = RandomItem() end local cont = Containers:CreateContainer({ layout = {2,2}, --skins = {"Hourglass"}, headerText = "Loot Box", buttons = {"Take All"}, position = "entity", --"mouse",--"900px 200px 0px", OnClose = function(playerID, container) print("Closed") if next(container:GetAllOpen()) == nil and #container:GetAllItems() == 0 then container:GetEntity():RemoveSelf() container:Delete() loc.container = nil Timers:CreateTimer(7, function() CreateLootBox(loc) end) end end, OnOpen = function(playerID, container) print("Loot box opened") end, closeOnOrder= true, items = items, entity = phys, range = 150, --OnButtonPressedJS = "ExampleButtonPressed", OnButtonPressed = function(playerID, container, unit, button, buttonName) if button == 1 then local items = container:GetAllItems() for _,item in ipairs(items) do container:RemoveItem(item) Containers:AddItemToUnit(unit,item) end container:Close(playerID) end end, OnEntityOrder = function(playerID, container, unit, target) print("ORDER ACTION loot box: ", playerID) container:Open(playerID) unit:Stop() end }) loc.container = cont loc.phys = phys end function CreateShop(ii) local sItems = {} local prices = {} local stocks = {} for _,i in ipairs(ii) do item = CreateItem(i[1], unit, unit) local index = item:GetEntityIndex() sItems[#sItems+1] = item if i[2] ~= nil then prices[index] = i[2] end if i[3] ~= nil then stocks[index] = i[3] end end return sItems, prices, stocks end function PlayGround:OnFirstPlayerLoaded() 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 Containers:UsePanoramaInventory(true) -- create initial stuff lootSpawns = Entities:FindAllByName("loot_spawn") itemDrops = Entities:FindAllByName("item_drops") contShopRadEnt = Entities:FindByName(nil, "container_shop_radiant") contShopDireEnt = Entities:FindByName(nil, "container_shop_dire") privateBankEnt = Entities:FindByName(nil, "private_bank") sharedBankEnt = Entities:FindByName(nil, "shared_bank") itemShopEnt = Entities:FindByName(nil, "item_shop") craftingEnt = Entities:FindByName(nil, "crafting_station") craftingMatsEnt = Entities:FindByName(nil, "crafting_mats") privateBankEnt = CreateItemOnPositionSync(privateBankEnt:GetAbsOrigin(), nil) privateBankEnt:SetModel("models/props_debris/merchant_debris_chest002.vmdl") privateBankEnt:SetModelScale(1.8) privateBankEnt:SetForwardVector(Vector(-1,0,0)) craftingEnt = CreateItemOnPositionSync(craftingEnt:GetAbsOrigin(), nil) craftingEnt:SetModel("models/props_structures/bad_base_shop002.vmdl") craftingEnt:SetForwardVector(Vector(-1,0,0)) craftingMatsEnt = CreateItemOnPositionSync(craftingMatsEnt:GetAbsOrigin(), nil) craftingMatsEnt:SetModel("models/props_debris/shop_set_cage001.vmdl") craftingMatsEnt:SetForwardVector(Vector(1,0,0)) local all = {} for i=0,23 do all[#all+1] = i end sharedBankEnt = CreateItemOnPositionSync(sharedBankEnt:GetAbsOrigin(), nil) sharedBankEnt:SetModel("models/props_debris/merchant_debris_chest001.vmdl") sharedBankEnt:SetModelScale(2.3) sharedBankEnt:SetForwardVector(Vector(-1,0,0)) sharedBank = Containers:CreateContainer({ layout = {6,4,4,6}, headerText = "Shared Bank", pids = all, position = "entity", --"600px 400px 0px", entity = sharedBankEnt, closeOnOrder= true, range = 230, OnEntityOrder=function(playerID, container, unit, target) print("ORDER ACTION shared bank: ", playerID) container:Open(playerID) unit:Stop() end, OnEntityDrag= function(playerID, container, unit, target, fromContainer, item) print("Drag ACTION shared bank: ", playerID, unit, target, fromContainer, item) if IsValidEntity(target) and fromContainer:ContainsItem(item) then fromContainer:RemoveItem(item) if not container:AddItem(item) then CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(10), item) end end unit:Stop() end }) itemShopEnt = CreateItemOnPositionSync(itemShopEnt:GetAbsOrigin(), nil) itemShopEnt:SetModel("models/props_gameplay/treasure_chest001.vmdl") itemShopEnt:SetModelScale(2.7) itemShopEnt:SetForwardVector(Vector(-1,0,0)) local ii = {} for i=0,RandomInt(4,8) do local inner = {Containers.itemIDs[RandomInt(1,29)], RandomInt(8,200)*10} if RandomInt(0,1) == 1 then inner[3] = RandomInt(3,15) end table.insert(ii, inner) end local sItems,prices,stocks = CreateShop(ii) itemShop = Containers:CreateShop({ layout = {3,3,3}, skins = {}, headerText = "Item Shop", pids = {}, position = "entity", --"1000px 300px 0px", entity = itemShopEnt, items = sItems, prices = prices, stocks = stocks, closeOnOrder= true, range = 230, OnEntityOrder=function(playerID, container, unit, target) print("ORDER ACTION item shop", playerID) container:Open(playerID) unit:Stop() end, }) contShopRadEnt = CreateUnitByName("npc_dummy_unit", contShopRadEnt:GetAbsOrigin(), false, nil, nil, DOTA_TEAM_GOODGUYS) contShopRadEnt:AddNewModifier(viper, nil, "modifier_shopkeeper", {}) contShopRadEnt:SetModel("models/heroes/ancient_apparition/ancient_apparition.vmdl") contShopRadEnt:SetOriginalModel("models/heroes/ancient_apparition/ancient_apparition.vmdl") contShopRadEnt:StartGesture(ACT_DOTA_IDLE) contShopRadEnt:SetForwardVector(Vector(1,0,0)) sItems,prices,stocks = CreateShop({ {"item_quelling_blade", 150, 3}, {"item_quelling_blade"}, {"item_clarity"}, {"item_bfury", 9000}, }) sItems[3]:SetCurrentCharges(2) contRadiantShop = Containers:CreateShop({ layout = {2,2,2,2,2}, skins = {}, headerText = "Radiant Shop", pids = {}, position = "entity", --"1000px 300px 0px", entity = contShopRadEnt, items = sItems, prices = prices, stocks = stocks, closeOnOrder= true, range = 300, --OnCloseClickedJS = "ExampleCloseClicked", OnSelect = function(playerID, container, selected) print("Selected", selected:GetUnitName()) if PlayerResource:GetTeam(playerID) == DOTA_TEAM_GOODGUYS then container:Open(playerID) end end, OnDeselect = function(playerID, container, deselected) print("Deselected", deselected:GetUnitName()) if PlayerResource:GetTeam(playerID) == DOTA_TEAM_GOODGUYS then container:Close(playerID) end end, OnEntityOrder=function(playerID, container, unit, target) print("ORDER ACTION radiant shop", playerID) if PlayerResource:GetTeam(playerID) == DOTA_TEAM_GOODGUYS then container:Open(playerID) unit:Stop() else Containers:DisplayError(playerID, "#dota_hud_error_unit_command_restricted") end end, }) contShopDireEnt = CreateUnitByName("npc_dummy_unit", contShopDireEnt:GetAbsOrigin(), false, nil, nil, DOTA_TEAM_BADGUYS) contShopDireEnt:AddNewModifier(viper, nil, "modifier_shopkeeper", {}) contShopDireEnt:SetModel("models/heroes/enigma/enigma.vmdl") contShopDireEnt:SetOriginalModel("models/heroes/enigma/enigma.vmdl") contShopDireEnt:StartGesture(ACT_DOTA_IDLE) contShopDireEnt:SetForwardVector(Vector(-1,0,0)) sItems,prices,stocks = CreateShop({ {"item_quelling_blade", 150, 3}, {"item_quelling_blade"}, {"item_clarity"}, {"item_bfury", 9000}, }) sItems[3]:SetCurrentCharges(2) contShopDire = Containers:CreateShop({ layout = {2,2,2,2,2}, skins = {}, headerText = "Dire Shop", pids = {}, position = "entity", --"1000px 300px 0px", entity = contShopDireEnt, items = sItems, prices = prices, stocks = stocks, closeOnOrder= true, range = 300, OnSelect = function(playerID, container, selected) print("Selected", selected:GetUnitName()) if PlayerResource:GetTeam(playerID) == DOTA_TEAM_BADGUYS then container:Open(playerID) end end, OnDeselect = function(playerID, container, deselected) print("Deselected", deselected:GetUnitName()) if PlayerResource:GetTeam(playerID) == DOTA_TEAM_BADGUYS then container:Close(playerID) end end, OnEntityOrder=function(playerID, container, unit, target) print("ORDER ACTION dire shop", playerID) if PlayerResource:GetTeam(playerID) == DOTA_TEAM_BADGUYS then container:Open(playerID) unit:Stop() else Containers:DisplayError(playerID, "#dota_hud_error_unit_command_restricted") end end, }) crafting = Containers:CreateContainer({ layout = {3,3,3}, skins = {}, headerText = "Crafting Station", pids = {}, position = "entity", --"1000px 300px 0px", entity = craftingEnt, closeOnOrder= true, range = 200, buttons = {"Craft"}, OnEntityOrder=function(playerID, container, unit, target) print("ORDER ACTION crafting station", playerID) container:Open(playerID) unit:Stop() end, OnButtonPressed = function(playerID, container, unit, button, buttonName) if button == 1 then local all = container:GetAllItems() local branches = container:GetItemsByName("item_branches") local broadswords = container:GetItemsByName("item_broadsword") local claymores = container:GetItemsByName("item_claymore") print(#all, #branches, #broadswords, #claymores) if #all == 3 and #branches == 1 and #broadswords == 1 and #claymores == 1 then local row,col = container:GetRowColumnForItem(branches[1]) local row2,col2 = container:GetRowColumnForItem(broadswords[1]) local row3,col3 = container:GetRowColumnForItem(claymores[1]) print(row,col) print(row2,col2) print(row3,col3) if row == 3 and row2+row3 == 3 and col == col2 and col == col3 then for _,item in ipairs(all) do container:RemoveItem(item) end container:AddItem(CreateItem("item_bfury",unit,unit), 2, 2) end end end end, }) craftingMats = Containers:CreateContainer({ layout = {3,3,3}, skins = {}, headerText = "Materials", pids = {}, position = "entity", --"1000px 300px 0px", entity = craftingMatsEnt, closeOnOrder= true, range = 200, buttons = {}, OnEntityOrder=function(playerID, container, unit, target) print("ORDER ACTION crafting mats", playerID) container:Open(playerID) unit:Stop() end, }) item = CreateItem("item_branches", nil, nil) craftingMats:AddItem(item) item = CreateItem("item_branches", nil, nil) craftingMats:AddItem(item) item = CreateItem("item_broadsword", nil, nil) craftingMats:AddItem(item) item = CreateItem("item_branches", nil, nil) craftingMats:AddItem(item) item = CreateItem("item_claymore", nil, nil) craftingMats:AddItem(item) item = CreateItem("item_claymore", nil, nil) craftingMats:AddItem(item) item = CreateItem("item_branches", nil, nil) craftingMats:AddItem(item) for _,loc in ipairs(lootSpawns) do CreateLootBox(loc) end for _,loc in ipairs(itemDrops) do local phys = CreateItemOnPositionSync(loc:GetAbsOrigin(), RandomItem()) phys:SetForwardVector(Vector(0,-1,0)) loc.phys = phys end Timers:CreateTimer(.1, function() GameRules:GetGameModeEntity():SetCameraDistanceOverride( 1500 ) end) Timers:CreateTimer(function() for _,loc in ipairs(itemDrops) do if not IsValidEntity(loc.phys) then local phys = CreateItemOnPositionSync(loc:GetAbsOrigin(), RandomItem()) phys:SetForwardVector(Vector(0,-1,0)) loc.phys = phys end end return 15 end) end function PlayGround:OnHeroInGame(hero) -- create inventory print(pid, hero:GetName()) local pid = hero:GetPlayerID() local validItemsBySlot = { [1] = --helm {item_helm_of_iron_will= true, item_veil_of_discord= true}, [2] = --chest {item_chainmail= true, item_blade_mail= true}, [3] = --boots {item_boots= true, item_phase_boots= true}, } local c = Containers:CreateContainer({ layout = {3,4,4}, skins = {}, headerText = "Backpack", pids = {pid}, entity = hero, closeOnOrder =false, position = "75% 25%", OnDragWorld = true, OnRightClickJS = "SpecialContextMenu", OnRightClick = function(playerID, container, unit, item, slot) print("RIGHT CLICK") local armor = pidEquipment[playerID] for i,valid in pairs(validItemsBySlot) do for itemname,_ in pairs(valid) do if itemname == item:GetAbilityName() then Containers:OnDragFrom(playerID, container, unit, item, slot, armor, i) end end end end }) pidInventory[pid] = c local item = CreateItem("item_tango", hero, hero) c:AddItem(item, 4) item = CreateItem("item_tango", hero, hero) c:AddItem(item, 6) item = CreateItem("item_ring_of_basilius", hero, hero) c:AddItem(item, 8) item = CreateItem("item_phase_boots", hero, hero) c:AddItem(item, 9) item = CreateItem("item_force_staff", hero, hero) c:AddItem(item) item = CreateItem("item_blade_mail", hero, hero) c:AddItem(item) item = CreateItem("item_veil_of_discord", hero, hero) c:AddItem(item) privateBank[pid] = Containers:CreateContainer({ layout = {4,4,4,4}, headerText = "Private Bank", pids = {pid}, position = "entity", --"200px 200px 0px", entity = privateBankEnt, closeOnOrder= true, forceOwner = hero, forcePurchaser=hero, range = 250, OnEntityOrder =function(playerID, container, unit, target) print("ORDER ACTION private bank: ", playerID) if privateBank[playerID] then privateBank[playerID]:Open(playerID) end unit:Stop() end, }) defaultInventory[pid] = true Containers:SetDefaultInventory(hero, c) local pack = CreateItem("item_containers_lua_pack", hero, hero) pack.container = c hero:AddItem(pack) c = Containers:CreateContainer({ layout = {1,1,1}, skins = {"Hourglass"}, headerText = "Armor", pids = {pid}, entity = hero, closeOnOrder =false, position = "200px 500px 0px", equipment = true, layoutFile = "file://{resources}/layout/custom_game/containers/alt_container_example.xml", OnDragWithin = false, OnRightClickJS = "ExampleRightClick", OnMouseOverJS = "ExampleMouseOver", AddItemFilter = function(container, item, slot) print("Armor, AddItemFilter: ", container, item, slot) if slot ~= -1 and validItemsBySlot[slot][item:GetAbilityName()] then return true end return false end, }) pidEquipment[pid] = c item = CreateItem("item_helm_of_iron_will", hero, hero) c:AddItem(item, 1) item = CreateItem("item_chainmail", hero, hero) c:AddItem(item, 2) item = CreateItem("item_boots", hero, hero) c:AddItem(item, 3) pack = CreateItem("item_containers_lua_pack", hero, hero) pack.container = c hero:AddItem(pack) end function PlayGround:OnNPCSpawned(keys) local npc = EntIndexToHScript(keys.entindex) if npc:IsRealHero() and npc.bFirstSpawnedPG == nil then npc.bFirstSpawnedPG = true PlayGround:OnHeroInGame(npc) end end function PlayGround:OnConnectFull(keys) if OFPL then PlayGround:OnFirstPlayerLoaded() OFPL = false end end if LOADED then return end LOADED = true OFPL = true MAX_NUMBER_OF_TEAMS = 2 USE_AUTOMATIC_PLAYERS_PER_TEAM = true ListenToGameEvent('npc_spawned', Dynamic_Wrap(PlayGround, 'OnNPCSpawned'), PlayGround) ListenToGameEvent('player_connect_full', Dynamic_Wrap(PlayGround, 'OnConnectFull'), PlayGround) pidInventory = {} pidEquipment = {} lootSpawns = nil itemDrops = nil privateBankEnt = nil sharedBankEnt = nil contShopRadEnt = nil contShopDireEnt = nil itemShopEnt = nil craftingEnt = nil craftingMatsEnt = nil crafting = nil craftingMats = nil contShopRad = nil contShopDire = nil itemShop = nil sharedBank = nil privateBank = {} defaultInventory = {} end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/examples/projectile.lua ================================================ require('libraries/projectiles') local player = PlayerResource:GetPlayer(0) local hero = player:GetAssignedHero() local projectile = { --EffectName = "particles/test_particle/ranged_tower_good.vpcf", --EffectName = "particles/units/heroes/hero_lina/lina_spell_dragon_slave.vpcf", EffectName = "particles/units/heroes/hero_mirana/mirana_spell_arrow.vpcf", --EeffectName = "", --vSpawnOrigin = hero:GetAbsOrigin(), vSpawnOrigin = hero:GetAbsOrigin() + Vector(0,0,80),--{unit=hero, attach="attach_attack1", offset=Vector(0,0,0)}, fDistance = 3000, fStartRadius = 100, fEndRadius = 100, Source = hero, fExpireTime = 8.0, vVelocity = hero:GetForwardVector() * 900, -- RandomVector(1000), UnitBehavior = PROJECTILES_DESTROY, bMultipleHits = false, bIgnoreSource = true, TreeBehavior = PROJECTILES_NOTHING, bCutTrees = true, bTreeFullCollision = false, WallBehavior = PROJECTILES_NOTHING, GroundBehavior = PROJECTILES_NOTHING, fGroundOffset = 80, nChangeMax = 1, bRecreateOnChange = true, bZCheck = false, bGroundLock = true, bProvidesVision = true, iVisionRadius = 350, iVisionTeamNumber = hero:GetTeam(), bFlyingVision = false, fVisionTickTime = .1, fVisionLingerDuration = 1, draw = true,-- draw = {alpha=1, color=Vector(200,0,0)}, --iPositionCP = 0, --iVelocityCP = 1, --ControlPoints = {[5]=Vector(100,0,0), [10]=Vector(0,0,1)}, --ControlPointForwards = {[4]=hero:GetForwardVector() * -1}, --ControlPointOrientations = {[1]={hero:GetForwardVector() * -1, hero:GetForwardVector() * -1, hero:GetForwardVector() * -1}}, --[[ControlPointEntityAttaches = {[0]={ unit = hero, pattach = PATTACH_ABSORIGIN_FOLLOW, attachPoint = "attach_attack1", -- nil origin = Vector(0,0,0) }},]] --fRehitDelay = .3, --fChangeDelay = 1, --fRadiusStep = 10, --bUseFindUnitsInRadius = false, UnitTest = function(self, unit) return unit:GetUnitName() ~= "npc_dummy_unit" and unit:GetTeamNumber() ~= hero:GetTeamNumber() end, OnUnitHit = function(self, unit) print ('HIT UNIT: ' .. unit:GetUnitName()) end, --OnTreeHit = function(self, tree) ... end, --OnWallHit = function(self, gnvPos) ... end, --OnGroundHit = function(self, groundPos) ... end, --OnFinish = function(self, pos) ... end, } Projectiles:CreateProjectile(projectile) ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/examples/worldpanelsExample.lua ================================================ require("libraries/worldpanels") if not WorldPanelExample then WorldPanelExample = class({}) end function WorldPanelExample:OnNPCSpawned(keys) --Apply a worldpanel health bar to every spawned hero unit local npc = EntIndexToHScript(keys.entindex) if npc.IsRealHero and npc:IsRealHero() and not npc.worldPanel then npc:AddNewModifier(npc, nil, "modifier_no_health", {}) -- entityHeight could be loaded from the npc_heroes.txt "HealthBarOffset" npc.worldPanel = WorldPanels:CreateWorldPanelForAll( {layout = "file://{resources}/layout/custom_game/worldpanels/healthbar.xml", entity = npc:GetEntityIndex(), entityHeight = 210, }) end end if not WorldPanelExample.initialized then LinkLuaModifier("modifier_no_health", "examples/modifier_no_health", LUA_MODIFIER_MOTION_NONE) Timers:CreateTimer(1, function() WorldPanels:CreateWorldPanelForAll( {layout = "file://{resources}/layout/custom_game/worldpanels/arrow.xml", position = GetGroundPosition(Vector(0,0,0), nil) + Vector(0,0,200), edgePadding = 5, }) end) ListenToGameEvent('npc_spawned', Dynamic_Wrap(WorldPanelExample, 'OnNPCSpawned'), WorldPanelExample) WorldPanelExample.initialized = true end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/gamemode.lua ================================================ -- This is the primary barebones gamemode script and should be used to assist in initializing your game mode BAREBONES_VERSION = "1.00" -- Set this to true if you want to see a complete debug output of all events/processes done by barebones -- You can also change the cvar 'barebones_spew' at any time to 1 or 0 for output/no output BAREBONES_DEBUG_SPEW = false if GameMode == nil then DebugPrint( '[BAREBONES] creating barebones game mode' ) _G.GameMode = class({}) end -- This library allow for easily delayed/timed actions require('libraries/timers') -- This library can be used for advancted physics/motion/collision of units. See PhysicsReadme.txt for more information. require('libraries/physics') -- This library can be used for advanced 3D projectile systems. require('libraries/projectiles') -- This library can be used for sending panorama notifications to the UIs of players/teams/everyone require('libraries/notifications') -- This library can be used for starting customized animations on units from lua require('libraries/animations') -- This library can be used for performing "Frankenstein" attachments on units require('libraries/attachments') -- This library can be used to synchronize client-server data via player/client-specific nettables require('libraries/playertables') -- This library can be used to create container inventories or container shops require('libraries/containers') -- This library provides a searchable, automatically updating lua API in the tools-mode via "modmaker_api" console command require('libraries/modmaker') -- This library provides an automatic graph construction of path_corner entities within the map require('libraries/pathgraph') -- This library (by Noya) provides player selection inspection and management from server lua require('libraries/selection') -- These internal libraries set up barebones's events and processes. Feel free to inspect them/change them if you need to. require('internal/gamemode') require('internal/events') -- settings.lua is where you can specify many different properties for your game mode and is one of the core barebones files. require('settings') -- events.lua is where you can specify the actions to be taken when any event occurs and is one of the core barebones files. require('events') -- This is a detailed example of many of the containers.lua possibilities, but only activates if you use the provided "playground" map if GetMapName() == "playground" then require("examples/playground") end --require("examples/worldpanelsExample") --[[ This function should be used to set up Async precache calls at the beginning of the gameplay. In this function, place all of your PrecacheItemByNameAsync and PrecacheUnitByNameAsync. These calls will be made after all players have loaded in, but before they have selected their heroes. PrecacheItemByNameAsync can also be used to precache dynamically-added datadriven abilities instead of items. PrecacheUnitByNameAsync will precache the precache{} block statement of the unit and all precache{} block statements for every Ability# defined on the unit. This function should only be called once. If you want to/need to precache more items/abilities/units at a later time, you can call the functions individually (for example if you want to precache units in a new wave of holdout). This function should generally only be used if the Precache() function in addon_game_mode.lua is not working. ]] function GameMode:PostLoadPrecache() DebugPrint("[BAREBONES] Performing Post-Load precache") --PrecacheItemByNameAsync("item_example_item", function(...) end) --PrecacheItemByNameAsync("example_ability", function(...) end) --PrecacheUnitByNameAsync("npc_dota_hero_viper", function(...) end) --PrecacheUnitByNameAsync("npc_dota_hero_enigma", function(...) end) end --[[ 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. It can be used to initialize state that isn't initializeable in InitGameMode() but needs to be done before everyone loads in. ]] function GameMode:OnFirstPlayerLoaded() DebugPrint("[BAREBONES] First Player has loaded") end --[[ This function is called once and only once after all players have loaded into the game, right as the hero selection time begins. It can be used to initialize non-hero player state or adjust the hero selection (i.e. force random etc) ]] function GameMode:OnAllPlayersLoaded() DebugPrint("[BAREBONES] All Players have loaded into the game") end --[[ 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 if the player's hero is replaced with a new hero for any reason. This function is useful for initializing heroes, such as adding levels, changing the starting gold, removing/adding abilities, adding physics, etc. The hero parameter is the hero entity that just spawned in ]] function GameMode:OnHeroInGame(hero) DebugPrint("[BAREBONES] Hero spawned in game for first time -- " .. hero:GetUnitName()) -- This line for example will set the starting gold of every hero to 500 unreliable gold --hero:SetGold(500, false) -- These lines will create an item and add it to the player, effectively ensuring they start with the item local item = CreateItem("item_example_item", hero, hero) hero:AddItem(item) --[[ --These lines if uncommented will replace the W ability of any hero that loads into the game --with the "example_ability" ability local abil = hero:GetAbilityByIndex(1) hero:RemoveAbility(abil:GetAbilityName()) hero:AddAbility("example_ability")]] end --[[ This function is called once and only once when the game completely begins (about 0:00 on the clock). At this point, gold will begin to go up in ticks if configured, creeps will spawn, towers will become damageable etc. This function is useful for starting any game logic timers/thinkers, beginning the first round, etc. ]] function GameMode:OnGameInProgress() DebugPrint("[BAREBONES] The game has officially begun") Timers:CreateTimer(30, -- Start this timer 30 game-time seconds later function() DebugPrint("This function is called 30 seconds after the game begins, and every 30 seconds thereafter") return 30.0 -- Rerun this timer every 30 game-time seconds end) end -- This function initializes the game mode and is called before anyone loads into the game -- It can be used to pre-initialize any values/tables that will be needed later function GameMode:InitGameMode() GameMode = self DebugPrint('[BAREBONES] Starting to load Barebones gamemode...') -- Commands can be registered for debugging purposes or as functions that can be called by the custom Scaleform UI Convars:RegisterCommand( "command_example", Dynamic_Wrap(GameMode, 'ExampleConsoleCommand'), "A console command example", FCVAR_CHEAT ) DebugPrint('[BAREBONES] Done loading Barebones gamemode!\n\n') end -- This is an example console command function GameMode:ExampleConsoleCommand() print( '******* Example Console Command ***************' ) local cmdPlayer = Convars:GetCommandClient() if cmdPlayer then local playerID = cmdPlayer:GetPlayerID() if playerID ~= nil and playerID ~= -1 then -- Do something here for the player who called this command PlayerResource:ReplaceHeroWith(playerID, "npc_dota_hero_viper", 1000, 1000) end end print( '*********************************************' ) end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/internal/events.lua ================================================ -- The overall game state has changed function GameMode:_OnGameRulesStateChange(keys) if GameMode._reentrantCheck then return end local newState = GameRules:State_Get() if newState == DOTA_GAMERULES_STATE_WAIT_FOR_PLAYERS_TO_LOAD then self.bSeenWaitForPlayers = true elseif newState == DOTA_GAMERULES_STATE_INIT then --Timers:RemoveTimer("alljointimer") elseif newState == DOTA_GAMERULES_STATE_HERO_SELECTION then GameMode:PostLoadPrecache() GameMode:OnAllPlayersLoaded() if USE_CUSTOM_TEAM_COLORS_FOR_PLAYERS then for i=0,9 do if PlayerResource:IsValidPlayer(i) then local color = TEAM_COLORS[PlayerResource:GetTeam(i)] PlayerResource:SetCustomPlayerColor(i, color[1], color[2], color[3]) end end end elseif newState == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then GameMode:OnGameInProgress() end GameMode._reentrantCheck = true GameMode:OnGameRulesStateChange(keys) GameMode._reentrantCheck = false end -- An NPC has spawned somewhere in game. This includes heroes function GameMode:_OnNPCSpawned(keys) if GameMode._reentrantCheck then return end local npc = EntIndexToHScript(keys.entindex) if npc:IsRealHero() and npc.bFirstSpawned == nil then npc.bFirstSpawned = true GameMode:OnHeroInGame(npc) end GameMode._reentrantCheck = true GameMode:OnNPCSpawned(keys) GameMode._reentrantCheck = false end -- An entity died function GameMode:_OnEntityKilled( keys ) if GameMode._reentrantCheck then return end -- The Unit that was Killed local killedUnit = EntIndexToHScript( keys.entindex_killed ) -- The Killing entity local killerEntity = nil if keys.entindex_attacker ~= nil then killerEntity = EntIndexToHScript( keys.entindex_attacker ) end if killedUnit:IsRealHero() then DebugPrint("KILLED, KILLER: " .. killedUnit:GetName() .. " -- " .. killerEntity:GetName()) if END_GAME_ON_KILLS and GetTeamHeroKills(killerEntity:GetTeam()) >= KILLS_TO_END_GAME_FOR_TEAM then GameRules:SetSafeToLeave( true ) GameRules:SetGameWinner( killerEntity:GetTeam() ) end --PlayerResource:GetTeamKills if SHOW_KILLS_ON_TOPBAR then GameRules:GetGameModeEntity():SetTopBarTeamValue ( DOTA_TEAM_BADGUYS, GetTeamHeroKills(DOTA_TEAM_BADGUYS) ) GameRules:GetGameModeEntity():SetTopBarTeamValue ( DOTA_TEAM_GOODGUYS, GetTeamHeroKills(DOTA_TEAM_GOODGUYS) ) end end GameMode._reentrantCheck = true GameMode:OnEntityKilled( keys ) GameMode._reentrantCheck = false end -- This function is called once when the player fully connects and becomes "Ready" during Loading function GameMode:_OnConnectFull(keys) if GameMode._reentrantCheck then return end GameMode:_CaptureGameMode() local entIndex = keys.index+1 -- The Player entity of the joining user local ply = EntIndexToHScript(entIndex) local userID = keys.userid self.vUserIds = self.vUserIds or {} self.vUserIds[userID] = ply GameMode._reentrantCheck = true GameMode:OnConnectFull( keys ) GameMode._reentrantCheck = false end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/internal/eventtest.lua ================================================ function GameMode:StartEventTest() ListenToGameEvent("team_info", Dynamic_Wrap(GameMode, 'On_team_info'), self) ListenToGameEvent("team_score", Dynamic_Wrap(GameMode, 'On_team_score'), self) ListenToGameEvent("teamplay_broadcast_audio", Dynamic_Wrap(GameMode, 'On_teamplay_broadcast_audio'), self) ListenToGameEvent("player_team", Dynamic_Wrap(GameMode, 'On_player_team'), self) ListenToGameEvent("player_class", Dynamic_Wrap(GameMode, 'On_player_class'), self) ListenToGameEvent("player_death", Dynamic_Wrap(GameMode, 'On_player_death '), self) ListenToGameEvent("player_hurt", Dynamic_Wrap(GameMode, 'On_player_hurt '), self) ListenToGameEvent("player_chat", Dynamic_Wrap(GameMode, 'On_player_chat '), self) ListenToGameEvent("player_score", Dynamic_Wrap(GameMode, 'On_player_score'), self) ListenToGameEvent("player_spawn", Dynamic_Wrap(GameMode, 'On_player_spawn'), self) ListenToGameEvent("player_shoot", Dynamic_Wrap(GameMode, 'On_player_shoot'), self) ListenToGameEvent("player_use", Dynamic_Wrap(GameMode, 'On_player_use'), self) ListenToGameEvent("player_changename", Dynamic_Wrap(GameMode, 'On_player_changename'), self) ListenToGameEvent("player_hintmessage", Dynamic_Wrap(GameMode, 'On_player_hintmessage'), self) ListenToGameEvent("player_reconnected", Dynamic_Wrap(GameMode, 'On_player_reconnected '), self) ListenToGameEvent("game_init", Dynamic_Wrap(GameMode, 'On_game_init'), self) ListenToGameEvent("game_newmap", Dynamic_Wrap(GameMode, 'On_game_newmap'), self) ListenToGameEvent("game_start", Dynamic_Wrap(GameMode, 'On_game_start'), self) ListenToGameEvent("game_end", Dynamic_Wrap(GameMode, 'On_game_end'), self) ListenToGameEvent("round_start", Dynamic_Wrap(GameMode, 'On_round_start'), self) ListenToGameEvent("round_end", Dynamic_Wrap(GameMode, 'On_round_end'), self) ListenToGameEvent("round_start_pre_entity", Dynamic_Wrap(GameMode, 'On_round_start_pre_entity'), self) ListenToGameEvent("teamplay_round_start", Dynamic_Wrap(GameMode, 'On_teamplay_round_start'), self) ListenToGameEvent("hostname_changed", Dynamic_Wrap(GameMode, 'On_hostname_changed'), self) ListenToGameEvent("difficulty_changed", Dynamic_Wrap(GameMode, 'On_difficulty_changed'), self) ListenToGameEvent("finale_start", Dynamic_Wrap(GameMode, 'On_finale_start'), self) ListenToGameEvent("game_message", Dynamic_Wrap(GameMode, 'On_game_message'), self) ListenToGameEvent("break_breakable", Dynamic_Wrap(GameMode, 'On_break_breakable'), self) ListenToGameEvent("break_prop", Dynamic_Wrap(GameMode, 'On_break_prop'), self) --ListenToGameEvent("npc_spawned", Dynamic_Wrap(GameMode, 'On_npc_spawned'), self) ListenToGameEvent("npc_replaced", Dynamic_Wrap(GameMode, 'On_npc_replaced'), self) --ListenToGameEvent("entity_killed", Dynamic_Wrap(GameMode, 'On_entity_killed'), self) --ListenToGameEvent("entity_hurt", Dynamic_Wrap(GameMode, 'On_entity_hurt'), self) ListenToGameEvent("bonus_updated", Dynamic_Wrap(GameMode, 'On_bonus_updated'), self) ListenToGameEvent("player_stats_updated", Dynamic_Wrap(GameMode, 'On_player_stats_updated'), self) ListenToGameEvent("achievement_event", Dynamic_Wrap(GameMode, 'On_achievement_event'), self) ListenToGameEvent("achievement_earned", Dynamic_Wrap(GameMode, 'On_achievement_earned'), self) ListenToGameEvent("achievement_write_failed", Dynamic_Wrap(GameMode, 'On_achievement_write_failed'), self) ListenToGameEvent("physgun_pickup", Dynamic_Wrap(GameMode, 'On_physgun_pickup'), self) ListenToGameEvent("flare_ignite_npc", Dynamic_Wrap(GameMode, 'On_flare_ignite_npc'), self) ListenToGameEvent("helicopter_grenade_punt_miss", Dynamic_Wrap(GameMode, 'On_helicopter_grenade_punt_miss'), self) ListenToGameEvent("user_data_downloaded", Dynamic_Wrap(GameMode, 'On_user_data_downloaded'), self) ListenToGameEvent("ragdoll_dissolved", Dynamic_Wrap(GameMode, 'On_ragdoll_dissolved'), self) ListenToGameEvent("gameinstructor_draw", Dynamic_Wrap(GameMode, 'On_gameinstructor_draw'), self) ListenToGameEvent("gameinstructor_nodraw", Dynamic_Wrap(GameMode, 'On_gameinstructor_nodraw'), self) ListenToGameEvent("map_transition", Dynamic_Wrap(GameMode, 'On_map_transition'), self) ListenToGameEvent("instructor_server_hint_create", Dynamic_Wrap(GameMode, 'On_instructor_server_hint_create'), self) ListenToGameEvent("instructor_server_hint_stop", Dynamic_Wrap(GameMode, 'On_instructor_server_hint_stop'), self) ListenToGameEvent("chat_new_message", Dynamic_Wrap(GameMode, 'On_chat_new_message'), self) ListenToGameEvent("chat_members_changed", Dynamic_Wrap(GameMode, 'On_chat_members_changed'), self) ListenToGameEvent("game_rules_state_change", Dynamic_Wrap(GameMode, 'On_game_rules_state_change'), self) ListenToGameEvent("inventory_updated", Dynamic_Wrap(GameMode, 'On_inventory_updated'), self) ListenToGameEvent("cart_updated", Dynamic_Wrap(GameMode, 'On_cart_updated'), self) ListenToGameEvent("store_pricesheet_updated", Dynamic_Wrap(GameMode, 'On_store_pricesheet_updated'), self) ListenToGameEvent("gc_connected", Dynamic_Wrap(GameMode, 'On_gc_connected'), self) ListenToGameEvent("item_schema_initialized", Dynamic_Wrap(GameMode, 'On_item_schema_initialized'), self) ListenToGameEvent("drop_rate_modified", Dynamic_Wrap(GameMode, 'On_drop_rate_modified'), self) ListenToGameEvent("event_ticket_modified", Dynamic_Wrap(GameMode, 'On_event_ticket_modified'), self) ListenToGameEvent("modifier_event", Dynamic_Wrap(GameMode, 'On_modifier_event'), self) ListenToGameEvent("dota_player_kill", Dynamic_Wrap(GameMode, 'On_dota_player_kill'), self) ListenToGameEvent("dota_player_deny", Dynamic_Wrap(GameMode, 'On_dota_player_deny'), self) ListenToGameEvent("dota_barracks_kill", Dynamic_Wrap(GameMode, 'On_dota_barracks_kill'), self) ListenToGameEvent("dota_tower_kill", Dynamic_Wrap(GameMode, 'On_dota_tower_kill'), self) ListenToGameEvent("dota_roshan_kill", Dynamic_Wrap(GameMode, 'On_dota_roshan_kill'), self) ListenToGameEvent("dota_courier_lost", Dynamic_Wrap(GameMode, 'On_dota_courier_lost'), self) ListenToGameEvent("dota_courier_respawned", Dynamic_Wrap(GameMode, 'On_dota_courier_respawned'), self) ListenToGameEvent("dota_glyph_used", Dynamic_Wrap(GameMode, 'On_dota_glyph_used'), self) ListenToGameEvent("dota_super_creeps", Dynamic_Wrap(GameMode, 'On_dota_super_creeps'), self) ListenToGameEvent("dota_item_purchase", Dynamic_Wrap(GameMode, 'On_dota_item_purchase'), self) ListenToGameEvent("dota_item_gifted", Dynamic_Wrap(GameMode, 'On_dota_item_gifted'), self) ListenToGameEvent("dota_rune_pickup", Dynamic_Wrap(GameMode, 'On_dota_rune_pickup'), self) ListenToGameEvent("dota_rune_spotted", Dynamic_Wrap(GameMode, 'On_dota_rune_spotted'), self) ListenToGameEvent("dota_item_spotted", Dynamic_Wrap(GameMode, 'On_dota_item_spotted'), self) ListenToGameEvent("dota_no_battle_points", Dynamic_Wrap(GameMode, 'On_dota_no_battle_points'), self) ListenToGameEvent("dota_chat_informational", Dynamic_Wrap(GameMode, 'On_dota_chat_informational'), self) ListenToGameEvent("dota_action_item", Dynamic_Wrap(GameMode, 'On_dota_action_item'), self) ListenToGameEvent("dota_chat_ban_notification", Dynamic_Wrap(GameMode, 'On_dota_chat_ban_notification'), self) ListenToGameEvent("dota_chat_event", Dynamic_Wrap(GameMode, 'On_dota_chat_event'), self) ListenToGameEvent("dota_chat_timed_reward", Dynamic_Wrap(GameMode, 'On_dota_chat_timed_reward'), self) ListenToGameEvent("dota_pause_event", Dynamic_Wrap(GameMode, 'On_dota_pause_event'), self) ListenToGameEvent("dota_chat_kill_streak", Dynamic_Wrap(GameMode, 'On_dota_chat_kill_streak'), self) ListenToGameEvent("dota_chat_first_blood", Dynamic_Wrap(GameMode, 'On_dota_chat_first_blood'), self) ListenToGameEvent("dota_player_update_hero_selection", Dynamic_Wrap(GameMode, 'On_dota_player_update_hero_selection'), self) ListenToGameEvent("dota_player_update_selected_unit", Dynamic_Wrap(GameMode, 'On_dota_player_update_selected_unit'), self) ListenToGameEvent("dota_player_update_query_unit", Dynamic_Wrap(GameMode, 'On_dota_player_update_query_unit'), self) ListenToGameEvent("dota_player_update_killcam_unit", Dynamic_Wrap(GameMode, 'On_dota_player_update_killcam_unit'), self) ListenToGameEvent("dota_player_take_tower_damage", Dynamic_Wrap(GameMode, 'On_dota_player_take_tower_damage'), self) ListenToGameEvent("dota_hud_error_message", Dynamic_Wrap(GameMode, 'On_dota_hud_error_message'), self) ListenToGameEvent("dota_action_success", Dynamic_Wrap(GameMode, 'On_dota_action_success'), self) ListenToGameEvent("dota_starting_position_changed", Dynamic_Wrap(GameMode, 'On_dota_starting_position_changed'), self) ListenToGameEvent("dota_money_changed", Dynamic_Wrap(GameMode, 'On_dota_money_changed'), self) ListenToGameEvent("dota_enemy_money_changed", Dynamic_Wrap(GameMode, 'On_dota_enemy_money_changed'), self) ListenToGameEvent("dota_portrait_unit_stats_changed", Dynamic_Wrap(GameMode, 'On_dota_portrait_unit_stats_changed'), self) ListenToGameEvent("dota_portrait_unit_modifiers_changed", Dynamic_Wrap(GameMode, 'On_dota_portrait_unit_modifiers_changed'), self) ListenToGameEvent("dota_force_portrait_update", Dynamic_Wrap(GameMode, 'On_dota_force_portrait_update'), self) ListenToGameEvent("dota_inventory_changed", Dynamic_Wrap(GameMode, 'On_dota_inventory_changed'), self) ListenToGameEvent("dota_item_picked_up", Dynamic_Wrap(GameMode, 'On_dota_item_picked_up'), self) ListenToGameEvent("dota_inventory_item_changed", Dynamic_Wrap(GameMode, 'On_dota_inventory_item_changed'), self) ListenToGameEvent("dota_ability_changed", Dynamic_Wrap(GameMode, 'On_dota_ability_changed'), self) ListenToGameEvent("dota_portrait_ability_layout_changed", Dynamic_Wrap(GameMode, 'On_dota_portrait_ability_layout_changed'), self) ListenToGameEvent("dota_inventory_item_added", Dynamic_Wrap(GameMode, 'On_dota_inventory_item_added'), self) ListenToGameEvent("dota_inventory_changed_query_unit", Dynamic_Wrap(GameMode, 'On_dota_inventory_changed_query_unit'), self) ListenToGameEvent("dota_link_clicked", Dynamic_Wrap(GameMode, 'On_dota_link_clicked'), self) ListenToGameEvent("dota_set_quick_buy", Dynamic_Wrap(GameMode, 'On_dota_set_quick_buy'), self) ListenToGameEvent("dota_quick_buy_changed", Dynamic_Wrap(GameMode, 'On_dota_quick_buy_changed'), self) ListenToGameEvent("dota_player_shop_changed", Dynamic_Wrap(GameMode, 'On_dota_player_shop_changed'), self) ListenToGameEvent("dota_player_show_killcam", Dynamic_Wrap(GameMode, 'On_dota_player_show_killcam'), self) ListenToGameEvent("dota_player_show_minikillcam", Dynamic_Wrap(GameMode, 'On_dota_player_show_minikillcam'), self) ListenToGameEvent("gc_user_session_created", Dynamic_Wrap(GameMode, 'On_gc_user_session_created'), self) ListenToGameEvent("team_data_updated", Dynamic_Wrap(GameMode, 'On_team_data_updated'), self) ListenToGameEvent("guild_data_updated", Dynamic_Wrap(GameMode, 'On_guild_data_updated'), self) ListenToGameEvent("guild_open_parties_updated", Dynamic_Wrap(GameMode, 'On_guild_open_parties_updated'), self) ListenToGameEvent("fantasy_updated", Dynamic_Wrap(GameMode, 'On_fantasy_updated'), self) ListenToGameEvent("fantasy_league_changed", Dynamic_Wrap(GameMode, 'On_fantasy_league_changed'), self) ListenToGameEvent("fantasy_score_info_changed", Dynamic_Wrap(GameMode, 'On_fantasy_score_info_changed'), self) ListenToGameEvent("player_info_updated", Dynamic_Wrap(GameMode, 'On_player_info_updated'), self) ListenToGameEvent("game_rules_state_change", Dynamic_Wrap(GameMode, 'On_game_rules_state_change'), self) ListenToGameEvent("match_history_updated", Dynamic_Wrap(GameMode, 'On_match_history_updated'), self) ListenToGameEvent("match_details_updated", Dynamic_Wrap(GameMode, 'On_match_details_updated'), self) ListenToGameEvent("live_games_updated", Dynamic_Wrap(GameMode, 'On_live_games_updated'), self) ListenToGameEvent("recent_matches_updated", Dynamic_Wrap(GameMode, 'On_recent_matches_updated'), self) ListenToGameEvent("news_updated", Dynamic_Wrap(GameMode, 'On_news_updated'), self) ListenToGameEvent("persona_updated", Dynamic_Wrap(GameMode, 'On_persona_updated'), self) ListenToGameEvent("tournament_state_updated", Dynamic_Wrap(GameMode, 'On_tournament_state_updated'), self) ListenToGameEvent("party_updated", Dynamic_Wrap(GameMode, 'On_party_updated'), self) ListenToGameEvent("lobby_updated", Dynamic_Wrap(GameMode, 'On_lobby_updated'), self) ListenToGameEvent("dashboard_caches_cleared", Dynamic_Wrap(GameMode, 'On_dashboard_caches_cleared'), self) ListenToGameEvent("last_hit", Dynamic_Wrap(GameMode, 'On_last_hit'), self) ListenToGameEvent("player_completed_game", Dynamic_Wrap(GameMode, 'On_player_completed_game'), self) --ListenToGameEvent("dota_combatlog", Dynamic_Wrap(GameMode, 'On_dota_combatlog'), self) ListenToGameEvent("player_reconnected", Dynamic_Wrap(GameMode, 'On_player_reconnected'), self) ListenToGameEvent("nommed_tree", Dynamic_Wrap(GameMode, 'On_nommed_tree'), self) ListenToGameEvent("dota_rune_activated_server", Dynamic_Wrap(GameMode, 'On_dota_rune_activated_server'), self) ListenToGameEvent("dota_player_gained_level", Dynamic_Wrap(GameMode, 'On_dota_player_gained_level'), self) ListenToGameEvent("dota_player_pick_hero", Dynamic_Wrap(GameMode, 'On_dota_player_pick_hero'), self) ListenToGameEvent("dota_player_learned_ability", Dynamic_Wrap(GameMode, 'On_dota_player_learned_ability'), self) ListenToGameEvent("dota_player_used_ability", Dynamic_Wrap(GameMode, 'On_dota_player_used_ability'), self) ListenToGameEvent("dota_non_player_used_ability", Dynamic_Wrap(GameMode, 'On_dota_non_player_used_ability'), self) ListenToGameEvent("dota_ability_channel_finished", Dynamic_Wrap(GameMode, 'On_dota_ability_channel_finished'), self) ListenToGameEvent("dota_holdout_revive_complete", Dynamic_Wrap(GameMode, 'On_dota_holdout_revive_complete'), self) ListenToGameEvent("dota_player_killed", Dynamic_Wrap(GameMode, 'On_dota_player_killed'), self) ListenToGameEvent("bindpanel_open", Dynamic_Wrap(GameMode, 'On_bindpanel_open'), self) ListenToGameEvent("bindpanel_close", Dynamic_Wrap(GameMode, 'On_bindpanel_close'), self) ListenToGameEvent("keybind_changed", Dynamic_Wrap(GameMode, 'On_keybind_changed'), self) ListenToGameEvent("dota_item_drag_begin", Dynamic_Wrap(GameMode, 'On_dota_item_drag_begin'), self) ListenToGameEvent("dota_item_drag_end", Dynamic_Wrap(GameMode, 'On_dota_item_drag_end'), self) ListenToGameEvent("dota_shop_item_drag_begin", Dynamic_Wrap(GameMode, 'On_dota_shop_item_drag_begin'), self) ListenToGameEvent("dota_shop_item_drag_end", Dynamic_Wrap(GameMode, 'On_dota_shop_item_drag_end'), self) ListenToGameEvent("dota_item_purchased", Dynamic_Wrap(GameMode, 'On_dota_item_purchased'), self) ListenToGameEvent("dota_item_used", Dynamic_Wrap(GameMode, 'On_dota_item_used'), self) ListenToGameEvent("dota_item_auto_purchase", Dynamic_Wrap(GameMode, 'On_dota_item_auto_purchase'), self) ListenToGameEvent("dota_unit_event", Dynamic_Wrap(GameMode, 'On_dota_unit_event'), self) ListenToGameEvent("dota_quest_started", Dynamic_Wrap(GameMode, 'On_dota_quest_started'), self) ListenToGameEvent("dota_quest_completed", Dynamic_Wrap(GameMode, 'On_dota_quest_completed'), self) ListenToGameEvent("gameui_activated", Dynamic_Wrap(GameMode, 'On_gameui_activated'), self) ListenToGameEvent("gameui_hidden", Dynamic_Wrap(GameMode, 'On_gameui_hidden'), self) ListenToGameEvent("player_fullyjoined", Dynamic_Wrap(GameMode, 'On_player_fullyjoined'), self) ListenToGameEvent("dota_spectate_hero", Dynamic_Wrap(GameMode, 'On_dota_spectate_hero'), self) ListenToGameEvent("dota_match_done", Dynamic_Wrap(GameMode, 'On_dota_match_done'), self) ListenToGameEvent("dota_match_done_client", Dynamic_Wrap(GameMode, 'On_dota_match_done_client'), self) ListenToGameEvent("set_instructor_group_enabled", Dynamic_Wrap(GameMode, 'On_set_instructor_group_enabled'), self) ListenToGameEvent("joined_chat_channel", Dynamic_Wrap(GameMode, 'On_joined_chat_channel'), self) ListenToGameEvent("left_chat_channel", Dynamic_Wrap(GameMode, 'On_left_chat_channel'), self) ListenToGameEvent("gc_chat_channel_list_updated", Dynamic_Wrap(GameMode, 'On_gc_chat_channel_list_updated'), self) ListenToGameEvent("today_messages_updated", Dynamic_Wrap(GameMode, 'On_today_messages_updated'), self) ListenToGameEvent("file_downloaded", Dynamic_Wrap(GameMode, 'On_file_downloaded'), self) ListenToGameEvent("player_report_counts_updated", Dynamic_Wrap(GameMode, 'On_player_report_counts_updated'), self) ListenToGameEvent("scaleform_file_download_complete", Dynamic_Wrap(GameMode, 'On_scaleform_file_download_complete'), self) ListenToGameEvent("item_purchased", Dynamic_Wrap(GameMode, 'On_item_purchased'), self) ListenToGameEvent("gc_mismatched_version", Dynamic_Wrap(GameMode, 'On_gc_mismatched_version'), self) ListenToGameEvent("demo_skip", Dynamic_Wrap(GameMode, 'On_demo_skip'), self) ListenToGameEvent("demo_start", Dynamic_Wrap(GameMode, 'On_demo_start'), self) ListenToGameEvent("demo_stop", Dynamic_Wrap(GameMode, 'On_demo_stop'), self) ListenToGameEvent("map_shutdown", Dynamic_Wrap(GameMode, 'On_map_shutdown'), self) ListenToGameEvent("dota_workshop_fileselected", Dynamic_Wrap(GameMode, 'On_dota_workshop_fileselected'), self) ListenToGameEvent("dota_workshop_filecanceled", Dynamic_Wrap(GameMode, 'On_dota_workshop_filecanceled'), self) ListenToGameEvent("rich_presence_updated", Dynamic_Wrap(GameMode, 'On_rich_presence_updated'), self) ListenToGameEvent("dota_hero_random", Dynamic_Wrap(GameMode, 'On_dota_hero_random'), self) ListenToGameEvent("dota_rd_chat_turn", Dynamic_Wrap(GameMode, 'On_dota_rd_chat_turn'), self) ListenToGameEvent("dota_favorite_heroes_updated", Dynamic_Wrap(GameMode, 'On_dota_favorite_heroes_updated'), self) ListenToGameEvent("profile_closed", Dynamic_Wrap(GameMode, 'On_profile_closed'), self) ListenToGameEvent("item_preview_closed", Dynamic_Wrap(GameMode, 'On_item_preview_closed'), self) ListenToGameEvent("dashboard_switched_section", Dynamic_Wrap(GameMode, 'On_dashboard_switched_section'), self) ListenToGameEvent("dota_tournament_item_event", Dynamic_Wrap(GameMode, 'On_dota_tournament_item_event'), self) ListenToGameEvent("dota_hero_swap", Dynamic_Wrap(GameMode, 'On_dota_hero_swap'), self) ListenToGameEvent("dota_reset_suggested_items", Dynamic_Wrap(GameMode, 'On_dota_reset_suggested_items'), self) ListenToGameEvent("halloween_high_score_received", Dynamic_Wrap(GameMode, 'On_halloween_high_score_received'), self) ListenToGameEvent("halloween_phase_end", Dynamic_Wrap(GameMode, 'On_halloween_phase_end'), self) ListenToGameEvent("halloween_high_score_request_failed", Dynamic_Wrap(GameMode, 'On_halloween_high_score_request_failed'), self) ListenToGameEvent("dota_hud_skin_changed", Dynamic_Wrap(GameMode, 'On_dota_hud_skin_changed'), self) ListenToGameEvent("dota_inventory_player_got_item", Dynamic_Wrap(GameMode, 'On_dota_inventory_player_got_item'), self) ListenToGameEvent("player_is_experienced", Dynamic_Wrap(GameMode, 'On_player_is_experienced'), self) ListenToGameEvent("player_is_notexperienced", Dynamic_Wrap(GameMode, 'On_player_is_notexperienced'), self) ListenToGameEvent("dota_tutorial_lesson_start", Dynamic_Wrap(GameMode, 'On_dota_tutorial_lesson_start'), self) ListenToGameEvent("map_location_updated", Dynamic_Wrap(GameMode, 'On_map_location_updated'), self) ListenToGameEvent("richpresence_custom_updated", Dynamic_Wrap(GameMode, 'On_richpresence_custom_updated'), self) ListenToGameEvent("game_end_visible", Dynamic_Wrap(GameMode, 'On_game_end_visible'), self) ListenToGameEvent("antiaddiction_update", Dynamic_Wrap(GameMode, 'On_antiaddiction_update'), self) ListenToGameEvent("highlight_hud_element", Dynamic_Wrap(GameMode, 'On_highlight_hud_element'), self) ListenToGameEvent("hide_highlight_hud_element", Dynamic_Wrap(GameMode, 'On_hide_highlight_hud_element'), self) ListenToGameEvent("intro_video_finished", Dynamic_Wrap(GameMode, 'On_intro_video_finished'), self) ListenToGameEvent("matchmaking_status_visibility_changed", Dynamic_Wrap(GameMode, 'On_matchmaking_status_visibility_changed'), self) ListenToGameEvent("practice_lobby_visibility_changed", Dynamic_Wrap(GameMode, 'On_practice_lobby_visibility_changed'), self) ListenToGameEvent("dota_courier_transfer_item", Dynamic_Wrap(GameMode, 'On_dota_courier_transfer_item'), self) ListenToGameEvent("full_ui_unlocked", Dynamic_Wrap(GameMode, 'On_full_ui_unlocked'), self) ListenToGameEvent("client_connectionless_packet", Dynamic_Wrap(GameMode, 'On_client_connectionless_packet'), self) ListenToGameEvent("hero_selector_preview_set", Dynamic_Wrap(GameMode, 'On_hero_selector_preview_set'), self) ListenToGameEvent("antiaddiction_toast", Dynamic_Wrap(GameMode, 'On_antiaddiction_toast'), self) ListenToGameEvent("hero_picker_shown", Dynamic_Wrap(GameMode, 'On_hero_picker_shown'), self) ListenToGameEvent("hero_picker_hidden", Dynamic_Wrap(GameMode, 'On_hero_picker_hidden'), self) ListenToGameEvent("dota_local_quickbuy_changed", Dynamic_Wrap(GameMode, 'On_dota_local_quickbuy_changed'), self) ListenToGameEvent("show_center_message", Dynamic_Wrap(GameMode, 'On_show_center_message'), self) ListenToGameEvent("hud_flip_changed", Dynamic_Wrap(GameMode, 'On_hud_flip_changed'), self) ListenToGameEvent("frosty_points_updated", Dynamic_Wrap(GameMode, 'On_frosty_points_updated'), self) ListenToGameEvent("defeated", Dynamic_Wrap(GameMode, 'On_defeated'), self) ListenToGameEvent("reset_defeated", Dynamic_Wrap(GameMode, 'On_reset_defeated'), self) ListenToGameEvent("booster_state_updated", Dynamic_Wrap(GameMode, 'On_booster_state_updated'), self) ListenToGameEvent("event_points_updated", Dynamic_Wrap(GameMode, 'On_event_points_updated'), self) ListenToGameEvent("local_player_event_points", Dynamic_Wrap(GameMode, 'On_local_player_event_points'), self) ListenToGameEvent("custom_game_difficulty", Dynamic_Wrap(GameMode, 'On_custom_game_difficulty'), self) ListenToGameEvent("tree_cut", Dynamic_Wrap(GameMode, 'On_tree_cut'), self) ListenToGameEvent("ugc_details_arrived", Dynamic_Wrap(GameMode, 'On_ugc_details_arrived'), self) ListenToGameEvent("ugc_subscribed", Dynamic_Wrap(GameMode, 'On_ugc_subscribed'), self) ListenToGameEvent("ugc_unsubscribed", Dynamic_Wrap(GameMode, 'On_ugc_unsubscribed'), self) ListenToGameEvent("prizepool_received", Dynamic_Wrap(GameMode, 'On_prizepool_received'), self) ListenToGameEvent("microtransaction_success", Dynamic_Wrap(GameMode, 'On_microtransaction_success'), self) ListenToGameEvent("dota_rubick_ability_steal", Dynamic_Wrap(GameMode, 'On_dota_rubick_ability_steal'), self) ListenToGameEvent("compendium_event_actions_loaded", Dynamic_Wrap(GameMode, 'On_compendium_event_actions_loaded'), self) ListenToGameEvent("compendium_selections_loaded", Dynamic_Wrap(GameMode, 'On_compendium_selections_loaded'), self) ListenToGameEvent("compendium_set_selection_failed", Dynamic_Wrap(GameMode, 'On_compendium_set_selection_failed'), self) ListenToGameEvent("community_cached_names_updated", Dynamic_Wrap(GameMode, 'On_community_cached_names_updated'), self) ListenToGameEvent("dota_team_kill_credit", Dynamic_Wrap(GameMode, 'On_dota_team_kill_credit'), self) ListenToGameEvent("dota_effigy_kill", Dynamic_Wrap(GameMode, 'On_dota_effigy_kill'), self) ListenToGameEvent("dota_chat_assassin_announce", Dynamic_Wrap(GameMode, 'On_dota_chat_assassin_announce'), self) ListenToGameEvent("dota_chat_assassin_denied", Dynamic_Wrap(GameMode, 'On_dota_chat_assassin_denied'), self) ListenToGameEvent("dota_chat_assassin_success", Dynamic_Wrap(GameMode, 'On_dota_chat_assassin_success'), self) ListenToGameEvent("player_info_individual_updated", Dynamic_Wrap(GameMode, 'On_player_info_individual_updated'), self) ListenToGameEvent("dota_player_begin_cast", Dynamic_Wrap(GameMode, 'On_dota_player_begin_cast'), self) ListenToGameEvent("dota_non_player_begin_cast", Dynamic_Wrap(GameMode, 'On_dota_non_player_begin_cast'), self) ListenToGameEvent("dota_item_combined", Dynamic_Wrap(GameMode, 'On_dota_item_combined'), self) ListenToGameEvent("profile_opened", Dynamic_Wrap(GameMode, 'On_profile_opened'), self) ListenToGameEvent("dota_tutorial_task_advance", Dynamic_Wrap(GameMode, 'On_dota_tutorial_task_advance'), self) ListenToGameEvent("dota_tutorial_shop_toggled", Dynamic_Wrap(GameMode, 'On_dota_tutorial_shop_toggled'), self) ListenToGameEvent("ugc_download_requested", Dynamic_Wrap(GameMode, 'On_ugc_download_requested'), self) ListenToGameEvent("ugc_installed", Dynamic_Wrap(GameMode, 'On_ugc_installed'), self) ListenToGameEvent("compendium_trophies_loaded", Dynamic_Wrap(GameMode, 'On_compendium_trophies_loaded'), self) ListenToGameEvent("spec_item_pickup", Dynamic_Wrap(GameMode, 'On_spec_item_pickup'), self) ListenToGameEvent("spec_aegis_reclaim_time", Dynamic_Wrap(GameMode, 'On_spec_aegis_reclaim_time'), self) ListenToGameEvent("account_trophies_changed", Dynamic_Wrap(GameMode, 'On_account_trophies_changed'), self) ListenToGameEvent("account_all_hero_challenge_changed", Dynamic_Wrap(GameMode, 'On_account_all_hero_challenge_changed'), self) ListenToGameEvent("team_showcase_ui_update", Dynamic_Wrap(GameMode, 'On_team_showcase_ui_update'), self) ListenToGameEvent("ingame_events_changed", Dynamic_Wrap(GameMode, 'On_ingame_events_changed'), self) ListenToGameEvent("dota_match_signout", Dynamic_Wrap(GameMode, 'On_dota_match_signout'), self) ListenToGameEvent("dota_illusions_created", Dynamic_Wrap(GameMode, 'On_dota_illusions_created'), self) ListenToGameEvent("dota_year_beast_killed", Dynamic_Wrap(GameMode, 'On_dota_year_beast_killed'), self) ListenToGameEvent("dota_hero_undoselection", Dynamic_Wrap(GameMode, 'On_dota_hero_undoselection'), self) ListenToGameEvent("dota_challenge_socache_updated", Dynamic_Wrap(GameMode, 'On_dota_challenge_socache_updated'), self) ListenToGameEvent("party_invites_updated", Dynamic_Wrap(GameMode, 'On_party_invites_updated'), self) ListenToGameEvent("lobby_invites_updated", Dynamic_Wrap(GameMode, 'On_lobby_invites_updated'), self) ListenToGameEvent("custom_game_mode_list_updated", Dynamic_Wrap(GameMode, 'On_custom_game_mode_list_updated'), self) ListenToGameEvent("custom_game_lobby_list_updated", Dynamic_Wrap(GameMode, 'On_custom_game_lobby_list_updated'), self) ListenToGameEvent("friend_lobby_list_updated", Dynamic_Wrap(GameMode, 'On_friend_lobby_list_updated'), self) ListenToGameEvent("dota_team_player_list_changed", Dynamic_Wrap(GameMode, 'On_dota_team_player_list_changed'), self) ListenToGameEvent("dota_player_details_changed", Dynamic_Wrap(GameMode, 'On_dota_player_details_changed'), self) ListenToGameEvent("player_profile_stats_updated", Dynamic_Wrap(GameMode, 'On_player_profile_stats_updated'), self) ListenToGameEvent("custom_game_player_count_updated", Dynamic_Wrap(GameMode, 'On_custom_game_player_count_updated'), self) ListenToGameEvent("custom_game_friends_played_updated", Dynamic_Wrap(GameMode, 'On_custom_game_friends_played_updated'), self) ListenToGameEvent("custom_games_friends_play_updated", Dynamic_Wrap(GameMode, 'On_custom_games_friends_play_updated'), self) ListenToGameEvent("dota_player_update_assigned_hero", Dynamic_Wrap(GameMode, 'On_dota_player_update_assigned_hero'), self) ListenToGameEvent("dota_player_hero_selection_dirty", Dynamic_Wrap(GameMode, 'On_dota_player_hero_selection_dirty'), self) --ListenToGameEvent("dota_npc_goal_reached", Dynamic_Wrap(GameMode, 'On_dota_npc_goal_reached'), self) ListenToGameEvent("dota_player_selected_custom_team", Dynamic_Wrap(GameMode, 'On_dota_player_selected_custom_team'), self) end function GameMode:On_team_info(data) print("[BAREBONES] team_info") PrintTable(data) end function GameMode:On_team_score(data) print("[BAREBONES] team_score") PrintTable(data) end function GameMode:On_teamplay_broadcast_audio(data) print("[BAREBONES] teamplay_broadcast_audio") PrintTable(data) end function GameMode:On_player_team(data) print("[BAREBONES] player_team") PrintTable(data) end function GameMode:On_player_class(data) print("[BAREBONES] player_class") PrintTable(data) end function GameMode:On_player_death (data) print("[BAREBONES] player_death") PrintTable(data) end function GameMode:On_player_hurt (data) print("[BAREBONES] player_hurt") PrintTable(data) end function GameMode:On_player_chat (data) print("[BAREBONES] player_chat") PrintTable(data) end function GameMode:On_player_score(data) print("[BAREBONES] player_score") PrintTable(data) end function GameMode:On_player_spawn(data) print("[BAREBONES] player_spawn") PrintTable(data) end function GameMode:On_player_shoot(data) print("[BAREBONES] player_shoot") PrintTable(data) end function GameMode:On_player_use(data) print("[BAREBONES] player_use") PrintTable(data) end function GameMode:On_player_changename(data) print("[BAREBONES] player_changename") PrintTable(data) end function GameMode:On_player_hintmessage(data) print("[BAREBONES] player_hintmessage") PrintTable(data) end function GameMode:On_player_reconnected (data) print("[BAREBONES] player_reconnected") PrintTable(data) end function GameMode:On_game_init(data) print("[BAREBONES] game_init") PrintTable(data) end function GameMode:On_game_newmap(data) print("[BAREBONES] game_newmap") PrintTable(data) end function GameMode:On_game_start(data) print("[BAREBONES] game_start") PrintTable(data) end function GameMode:On_game_end(data) print("[BAREBONES] game_end") PrintTable(data) end function GameMode:On_round_start(data) print("[BAREBONES] round_start") PrintTable(data) end function GameMode:On_round_end(data) print("[BAREBONES] round_end") PrintTable(data) end function GameMode:On_round_start_pre_entity(data) print("[BAREBONES] round_start_pre_entity") PrintTable(data) end function GameMode:On_teamplay_round_start(data) print("[BAREBONES] teamplay_round_start") PrintTable(data) end function GameMode:On_hostname_changed(data) print("[BAREBONES] hostname_changed") PrintTable(data) end function GameMode:On_difficulty_changed(data) print("[BAREBONES] difficulty_changed") PrintTable(data) end function GameMode:On_finale_start(data) print("[BAREBONES] finale_start") PrintTable(data) end function GameMode:On_game_message(data) print("[BAREBONES] game_message") PrintTable(data) end function GameMode:On_break_breakable(data) print("[BAREBONES] break_breakable") PrintTable(data) end function GameMode:On_break_prop(data) print("[BAREBONES] break_prop") PrintTable(data) end function GameMode:On_npc_spawned(data) print("[BAREBONES] npc_spawned") PrintTable(data) end function GameMode:On_npc_replaced(data) print("[BAREBONES] npc_replaced") PrintTable(data) end function GameMode:On_entity_killed(data) print("[BAREBONES] entity_killed") PrintTable(data) end function GameMode:On_entity_hurt(data) print("[BAREBONES] entity_hurt") PrintTable(data) end function GameMode:On_bonus_updated(data) print("[BAREBONES] bonus_updated") PrintTable(data) end function GameMode:On_player_stats_updated(data) print("[BAREBONES] player_stats_updated") PrintTable(data) end function GameMode:On_achievement_event(data) print("[BAREBONES] achievement_event") PrintTable(data) end function GameMode:On_achievement_earned(data) print("[BAREBONES] achievement_earned") PrintTable(data) end function GameMode:On_achievement_write_failed(data) print("[BAREBONES] achievement_write_failed") PrintTable(data) end function GameMode:On_physgun_pickup(data) print("[BAREBONES] physgun_pickup") PrintTable(data) end function GameMode:On_flare_ignite_npc(data) print("[BAREBONES] flare_ignite_npc") PrintTable(data) end function GameMode:On_helicopter_grenade_punt_miss(data) print("[BAREBONES] helicopter_grenade_punt_miss") PrintTable(data) end function GameMode:On_user_data_downloaded(data) print("[BAREBONES] user_data_downloaded") PrintTable(data) end function GameMode:On_ragdoll_dissolved(data) print("[BAREBONES] ragdoll_dissolved") PrintTable(data) end function GameMode:On_gameinstructor_draw(data) print("[BAREBONES] gameinstructor_draw") PrintTable(data) end function GameMode:On_gameinstructor_nodraw(data) print("[BAREBONES] gameinstructor_nodraw") PrintTable(data) end function GameMode:On_map_transition(data) print("[BAREBONES] map_transition") PrintTable(data) end function GameMode:On_instructor_server_hint_create(data) print("[BAREBONES] instructor_server_hint_create") PrintTable(data) end function GameMode:On_instructor_server_hint_stop(data) print("[BAREBONES] instructor_server_hint_stop") PrintTable(data) end function GameMode:On_chat_new_message(data) print("[BAREBONES] chat_new_message") PrintTable(data) end function GameMode:On_chat_members_changed(data) print("[BAREBONES] chat_members_changed") PrintTable(data) end function GameMode:On_game_rules_state_change(data) print("[BAREBONES] game_rules_state_change") PrintTable(data) end function GameMode:On_inventory_updated(data) print("[BAREBONES] inventory_updated") PrintTable(data) end function GameMode:On_cart_updated(data) print("[BAREBONES] cart_updated") PrintTable(data) end function GameMode:On_store_pricesheet_updated(data) print("[BAREBONES] store_pricesheet_updated") PrintTable(data) end function GameMode:On_gc_connected(data) print("[BAREBONES] gc_connected") PrintTable(data) end function GameMode:On_item_schema_initialized(data) print("[BAREBONES] item_schema_initialized") PrintTable(data) end function GameMode:On_drop_rate_modified(data) print("[BAREBONES] drop_rate_modified") PrintTable(data) end function GameMode:On_event_ticket_modified(data) print("[BAREBONES] event_ticket_modified") PrintTable(data) end function GameMode:On_modifier_event(data) print("[BAREBONES] modifier_event") PrintTable(data) end function GameMode:On_dota_player_kill(data) print("[BAREBONES] dota_player_kill") PrintTable(data) end function GameMode:On_dota_player_deny(data) print("[BAREBONES] dota_player_deny") PrintTable(data) end function GameMode:On_dota_barracks_kill(data) print("[BAREBONES] dota_barracks_kill") PrintTable(data) end function GameMode:On_dota_tower_kill(data) print("[BAREBONES] dota_tower_kill") PrintTable(data) end function GameMode:On_dota_roshan_kill(data) print("[BAREBONES] dota_roshan_kill") PrintTable(data) end function GameMode:On_dota_courier_lost(data) print("[BAREBONES] dota_courier_lost") PrintTable(data) end function GameMode:On_dota_courier_respawned(data) print("[BAREBONES] dota_courier_respawned") PrintTable(data) end function GameMode:On_dota_glyph_used(data) print("[BAREBONES] dota_glyph_used") PrintTable(data) end function GameMode:On_dota_super_creeps(data) print("[BAREBONES] dota_super_creeps") PrintTable(data) end function GameMode:On_dota_item_purchase(data) print("[BAREBONES] dota_item_purchase") PrintTable(data) end function GameMode:On_dota_item_gifted(data) print("[BAREBONES] dota_item_gifted") PrintTable(data) end function GameMode:On_dota_rune_pickup(data) print("[BAREBONES] dota_rune_pickup") PrintTable(data) end function GameMode:On_dota_rune_spotted(data) print("[BAREBONES] dota_rune_spotted") PrintTable(data) end function GameMode:On_dota_item_spotted(data) print("[BAREBONES] dota_item_spotted") PrintTable(data) end function GameMode:On_dota_no_battle_points(data) print("[BAREBONES] dota_no_battle_points") PrintTable(data) end function GameMode:On_dota_chat_informational(data) print("[BAREBONES] dota_chat_informational") PrintTable(data) end function GameMode:On_dota_action_item(data) print("[BAREBONES] dota_action_item") PrintTable(data) end function GameMode:On_dota_chat_ban_notification(data) print("[BAREBONES] dota_chat_ban_notification") PrintTable(data) end function GameMode:On_dota_chat_event(data) print("[BAREBONES] dota_chat_event") PrintTable(data) end function GameMode:On_dota_chat_timed_reward(data) print("[BAREBONES] dota_chat_timed_reward") PrintTable(data) end function GameMode:On_dota_pause_event(data) print("[BAREBONES] dota_pause_event") PrintTable(data) end function GameMode:On_dota_chat_kill_streak(data) print("[BAREBONES] dota_chat_kill_streak") PrintTable(data) end function GameMode:On_dota_chat_first_blood(data) print("[BAREBONES] dota_chat_first_blood") PrintTable(data) end function GameMode:On_dota_player_update_hero_selection(data) print("[BAREBONES] dota_player_update_hero_selection") PrintTable(data) end function GameMode:On_dota_player_update_selected_unit(data) print("[BAREBONES] dota_player_update_selected_unit") PrintTable(data) end function GameMode:On_dota_player_update_query_unit(data) print("[BAREBONES] dota_player_update_query_unit") PrintTable(data) end function GameMode:On_dota_player_update_killcam_unit(data) print("[BAREBONES] dota_player_update_killcam_unit") PrintTable(data) end function GameMode:On_dota_player_take_tower_damage(data) print("[BAREBONES] dota_player_take_tower_damage") PrintTable(data) end function GameMode:On_dota_hud_error_message(data) print("[BAREBONES] dota_hud_error_message") PrintTable(data) end function GameMode:On_dota_action_success(data) print("[BAREBONES] dota_action_success") PrintTable(data) end function GameMode:On_dota_starting_position_changed(data) print("[BAREBONES] dota_starting_position_changed") PrintTable(data) end function GameMode:On_dota_money_changed(data) print("[BAREBONES] dota_money_changed") PrintTable(data) end function GameMode:On_dota_enemy_money_changed(data) print("[BAREBONES] dota_enemy_money_changed") PrintTable(data) end function GameMode:On_dota_portrait_unit_stats_changed(data) print("[BAREBONES] dota_portrait_unit_stats_changed") PrintTable(data) end function GameMode:On_dota_portrait_unit_modifiers_changed(data) print("[BAREBONES] dota_portrait_unit_modifiers_changed") PrintTable(data) end function GameMode:On_dota_force_portrait_update(data) print("[BAREBONES] dota_force_portrait_update") PrintTable(data) end function GameMode:On_dota_inventory_changed(data) print("[BAREBONES] dota_inventory_changed") PrintTable(data) end function GameMode:On_dota_item_picked_up(data) print("[BAREBONES] dota_item_picked_up") PrintTable(data) end function GameMode:On_dota_inventory_item_changed(data) print("[BAREBONES] dota_inventory_item_changed") PrintTable(data) end function GameMode:On_dota_ability_changed(data) print("[BAREBONES] dota_ability_changed") PrintTable(data) end function GameMode:On_dota_portrait_ability_layout_changed(data) print("[BAREBONES] dota_portrait_ability_layout_changed") PrintTable(data) end function GameMode:On_dota_inventory_item_added(data) print("[BAREBONES] dota_inventory_item_added") PrintTable(data) end function GameMode:On_dota_inventory_changed_query_unit(data) print("[BAREBONES] dota_inventory_changed_query_unit") PrintTable(data) end function GameMode:On_dota_link_clicked(data) print("[BAREBONES] dota_link_clicked") PrintTable(data) end function GameMode:On_dota_set_quick_buy(data) print("[BAREBONES] dota_set_quick_buy") PrintTable(data) end function GameMode:On_dota_quick_buy_changed(data) print("[BAREBONES] dota_quick_buy_changed") PrintTable(data) end function GameMode:On_dota_player_shop_changed(data) print("[BAREBONES] dota_player_shop_changed") PrintTable(data) end function GameMode:On_dota_player_show_killcam(data) print("[BAREBONES] dota_player_show_killcam") PrintTable(data) end function GameMode:On_dota_player_show_minikillcam(data) print("[BAREBONES] dota_player_show_minikillcam") PrintTable(data) end function GameMode:On_gc_user_session_created(data) print("[BAREBONES] gc_user_session_created") PrintTable(data) end function GameMode:On_team_data_updated(data) print("[BAREBONES] team_data_updated") PrintTable(data) end function GameMode:On_guild_data_updated(data) print("[BAREBONES] guild_data_updated") PrintTable(data) end function GameMode:On_guild_open_parties_updated(data) print("[BAREBONES] guild_open_parties_updated") PrintTable(data) end function GameMode:On_fantasy_updated(data) print("[BAREBONES] fantasy_updated") PrintTable(data) end function GameMode:On_fantasy_league_changed(data) print("[BAREBONES] fantasy_league_changed") PrintTable(data) end function GameMode:On_fantasy_score_info_changed(data) print("[BAREBONES] fantasy_score_info_changed") PrintTable(data) end function GameMode:On_player_info_updated(data) print("[BAREBONES] player_info_updated") PrintTable(data) end function GameMode:On_game_rules_state_change(data) print("[BAREBONES] game_rules_state_change") PrintTable(data) end function GameMode:On_match_history_updated(data) print("[BAREBONES] match_history_updated") PrintTable(data) end function GameMode:On_match_details_updated(data) print("[BAREBONES] match_details_updated") PrintTable(data) end function GameMode:On_live_games_updated(data) print("[BAREBONES] live_games_updated") PrintTable(data) end function GameMode:On_recent_matches_updated(data) print("[BAREBONES] recent_matches_updated") PrintTable(data) end function GameMode:On_news_updated(data) print("[BAREBONES] news_updated") PrintTable(data) end function GameMode:On_persona_updated(data) print("[BAREBONES] persona_updated") PrintTable(data) end function GameMode:On_tournament_state_updated(data) print("[BAREBONES] tournament_state_updated") PrintTable(data) end function GameMode:On_party_updated(data) print("[BAREBONES] party_updated") PrintTable(data) end function GameMode:On_lobby_updated(data) print("[BAREBONES] lobby_updated") PrintTable(data) end function GameMode:On_dashboard_caches_cleared(data) print("[BAREBONES] dashboard_caches_cleared") PrintTable(data) end function GameMode:On_last_hit(data) print("[BAREBONES] last_hit") PrintTable(data) end function GameMode:On_player_completed_game(data) print("[BAREBONES] player_completed_game") PrintTable(data) end function GameMode:On_dota_combatlog(data) print("[BAREBONES] dota_combatlog") PrintTable(data) end function GameMode:On_player_reconnected(data) print("[BAREBONES] player_reconnected") PrintTable(data) end function GameMode:On_nommed_tree(data) print("[BAREBONES] nommed_tree") PrintTable(data) end function GameMode:On_dota_rune_activated_server(data) print("[BAREBONES] dota_rune_activated_server") PrintTable(data) end function GameMode:On_dota_player_gained_level(data) print("[BAREBONES] dota_player_gained_level") PrintTable(data) end function GameMode:On_dota_player_pick_hero(data) print("[BAREBONES] dota_player_pick_hero") PrintTable(data) end function GameMode:On_dota_player_learned_ability(data) print("[BAREBONES] dota_player_learned_ability") PrintTable(data) end function GameMode:On_dota_player_used_ability(data) print("[BAREBONES] dota_player_used_ability") PrintTable(data) end function GameMode:On_dota_non_player_used_ability(data) print("[BAREBONES] dota_non_player_used_ability") PrintTable(data) end function GameMode:On_dota_ability_channel_finished(data) print("[BAREBONES] dota_ability_channel_finished") PrintTable(data) end function GameMode:On_dota_holdout_revive_complete(data) print("[BAREBONES] dota_holdout_revive_complete") PrintTable(data) end function GameMode:On_dota_player_killed(data) print("[BAREBONES] dota_player_killed") PrintTable(data) end function GameMode:On_bindpanel_open(data) print("[BAREBONES] bindpanel_open") PrintTable(data) end function GameMode:On_bindpanel_close(data) print("[BAREBONES] bindpanel_close") PrintTable(data) end function GameMode:On_keybind_changed(data) print("[BAREBONES] keybind_changed") PrintTable(data) end function GameMode:On_dota_item_drag_begin(data) print("[BAREBONES] dota_item_drag_begin") PrintTable(data) end function GameMode:On_dota_item_drag_end(data) print("[BAREBONES] dota_item_drag_end") PrintTable(data) end function GameMode:On_dota_shop_item_drag_begin(data) print("[BAREBONES] dota_shop_item_drag_begin") PrintTable(data) end function GameMode:On_dota_shop_item_drag_end(data) print("[BAREBONES] dota_shop_item_drag_end") PrintTable(data) end function GameMode:On_dota_item_purchased(data) print("[BAREBONES] dota_item_purchased") PrintTable(data) end function GameMode:On_dota_item_used(data) print("[BAREBONES] dota_item_used") PrintTable(data) end function GameMode:On_dota_item_auto_purchase(data) print("[BAREBONES] dota_item_auto_purchase") PrintTable(data) end function GameMode:On_dota_unit_event(data) print("[BAREBONES] dota_unit_event") PrintTable(data) end function GameMode:On_dota_quest_started(data) print("[BAREBONES] dota_quest_started") PrintTable(data) end function GameMode:On_dota_quest_completed(data) print("[BAREBONES] dota_quest_completed") PrintTable(data) end function GameMode:On_gameui_activated(data) print("[BAREBONES] gameui_activated") PrintTable(data) end function GameMode:On_gameui_hidden(data) print("[BAREBONES] gameui_hidden") PrintTable(data) end function GameMode:On_player_fullyjoined(data) print("[BAREBONES] player_fullyjoined") PrintTable(data) end function GameMode:On_dota_spectate_hero(data) print("[BAREBONES] dota_spectate_hero") PrintTable(data) end function GameMode:On_dota_match_done(data) print("[BAREBONES] dota_match_done") PrintTable(data) end function GameMode:On_dota_match_done_client(data) print("[BAREBONES] dota_match_done_client") PrintTable(data) end function GameMode:On_set_instructor_group_enabled(data) print("[BAREBONES] set_instructor_group_enabled") PrintTable(data) end function GameMode:On_joined_chat_channel(data) print("[BAREBONES] joined_chat_channel") PrintTable(data) end function GameMode:On_left_chat_channel(data) print("[BAREBONES] left_chat_channel") PrintTable(data) end function GameMode:On_gc_chat_channel_list_updated(data) print("[BAREBONES] gc_chat_channel_list_updated") PrintTable(data) end function GameMode:On_today_messages_updated(data) print("[BAREBONES] today_messages_updated") PrintTable(data) end function GameMode:On_file_downloaded(data) print("[BAREBONES] file_downloaded") PrintTable(data) end function GameMode:On_player_report_counts_updated(data) print("[BAREBONES] player_report_counts_updated") PrintTable(data) end function GameMode:On_scaleform_file_download_complete(data) print("[BAREBONES] scaleform_file_download_complete") PrintTable(data) end function GameMode:On_item_purchased(data) print("[BAREBONES] item_purchased") PrintTable(data) end function GameMode:On_gc_mismatched_version(data) print("[BAREBONES] gc_mismatched_version") PrintTable(data) end function GameMode:On_demo_skip(data) print("[BAREBONES] demo_skip") PrintTable(data) end function GameMode:On_demo_start(data) print("[BAREBONES] demo_start") PrintTable(data) end function GameMode:On_demo_stop(data) print("[BAREBONES] demo_stop") PrintTable(data) end function GameMode:On_map_shutdown(data) print("[BAREBONES] map_shutdown") PrintTable(data) end function GameMode:On_dota_workshop_fileselected(data) print("[BAREBONES] dota_workshop_fileselected") PrintTable(data) end function GameMode:On_dota_workshop_filecanceled(data) print("[BAREBONES] dota_workshop_filecanceled") PrintTable(data) end function GameMode:On_rich_presence_updated(data) print("[BAREBONES] rich_presence_updated") PrintTable(data) end function GameMode:On_dota_hero_random(data) print("[BAREBONES] dota_hero_random") PrintTable(data) end function GameMode:On_dota_rd_chat_turn(data) print("[BAREBONES] dota_rd_chat_turn") PrintTable(data) end function GameMode:On_dota_favorite_heroes_updated(data) print("[BAREBONES] dota_favorite_heroes_updated") PrintTable(data) end function GameMode:On_profile_closed(data) print("[BAREBONES] profile_closed") PrintTable(data) end function GameMode:On_item_preview_closed(data) print("[BAREBONES] item_preview_closed") PrintTable(data) end function GameMode:On_dashboard_switched_section(data) print("[BAREBONES] dashboard_switched_section") PrintTable(data) end function GameMode:On_dota_tournament_item_event(data) print("[BAREBONES] dota_tournament_item_event") PrintTable(data) end function GameMode:On_dota_hero_swap(data) print("[BAREBONES] dota_hero_swap") PrintTable(data) end function GameMode:On_dota_reset_suggested_items(data) print("[BAREBONES] dota_reset_suggested_items") PrintTable(data) end function GameMode:On_halloween_high_score_received(data) print("[BAREBONES] halloween_high_score_received") PrintTable(data) end function GameMode:On_halloween_phase_end(data) print("[BAREBONES] halloween_phase_end") PrintTable(data) end function GameMode:On_halloween_high_score_request_failed(data) print("[BAREBONES] halloween_high_score_request_failed") PrintTable(data) end function GameMode:On_dota_hud_skin_changed(data) print("[BAREBONES] dota_hud_skin_changed") PrintTable(data) end function GameMode:On_dota_inventory_player_got_item(data) print("[BAREBONES] dota_inventory_player_got_item") PrintTable(data) end function GameMode:On_player_is_experienced(data) print("[BAREBONES] player_is_experienced") PrintTable(data) end function GameMode:On_player_is_notexperienced(data) print("[BAREBONES] player_is_notexperienced") PrintTable(data) end function GameMode:On_dota_tutorial_lesson_start(data) print("[BAREBONES] dota_tutorial_lesson_start") PrintTable(data) end function GameMode:On_map_location_updated(data) print("[BAREBONES] map_location_updated") PrintTable(data) end function GameMode:On_richpresence_custom_updated(data) print("[BAREBONES] richpresence_custom_updated") PrintTable(data) end function GameMode:On_game_end_visible(data) print("[BAREBONES] game_end_visible") PrintTable(data) end function GameMode:On_antiaddiction_update(data) print("[BAREBONES] antiaddiction_update") PrintTable(data) end function GameMode:On_highlight_hud_element(data) print("[BAREBONES] highlight_hud_element") PrintTable(data) end function GameMode:On_hide_highlight_hud_element(data) print("[BAREBONES] hide_highlight_hud_element") PrintTable(data) end function GameMode:On_intro_video_finished(data) print("[BAREBONES] intro_video_finished") PrintTable(data) end function GameMode:On_matchmaking_status_visibility_changed(data) print("[BAREBONES] matchmaking_status_visibility_changed") PrintTable(data) end function GameMode:On_practice_lobby_visibility_changed(data) print("[BAREBONES] practice_lobby_visibility_changed") PrintTable(data) end function GameMode:On_dota_courier_transfer_item(data) print("[BAREBONES] dota_courier_transfer_item") PrintTable(data) end function GameMode:On_full_ui_unlocked(data) print("[BAREBONES] full_ui_unlocked") PrintTable(data) end function GameMode:On_client_connectionless_packet(data) print("[BAREBONES] client_connectionless_packet") PrintTable(data) end function GameMode:On_hero_selector_preview_set(data) print("[BAREBONES] hero_selector_preview_set") PrintTable(data) end function GameMode:On_antiaddiction_toast(data) print("[BAREBONES] antiaddiction_toast") PrintTable(data) end function GameMode:On_hero_picker_shown(data) print("[BAREBONES] hero_picker_shown") PrintTable(data) end function GameMode:On_hero_picker_hidden(data) print("[BAREBONES] hero_picker_hidden") PrintTable(data) end function GameMode:On_dota_local_quickbuy_changed(data) print("[BAREBONES] dota_local_quickbuy_changed") PrintTable(data) end function GameMode:On_show_center_message(data) print("[BAREBONES] show_center_message") PrintTable(data) end function GameMode:On_hud_flip_changed(data) print("[BAREBONES] hud_flip_changed") PrintTable(data) end function GameMode:On_frosty_points_updated(data) print("[BAREBONES] frosty_points_updated") PrintTable(data) end function GameMode:On_defeated(data) print("[BAREBONES] defeated") PrintTable(data) end function GameMode:On_reset_defeated(data) print("[BAREBONES] reset_defeated") PrintTable(data) end function GameMode:On_booster_state_updated(data) print("[BAREBONES] booster_state_updated") PrintTable(data) end function GameMode:On_event_points_updated(data) print("[BAREBONES] event_points_updated") PrintTable(data) end function GameMode:On_local_player_event_points(data) print("[BAREBONES] local_player_event_points") PrintTable(data) end function GameMode:On_custom_game_difficulty(data) print("[BAREBONES] custom_game_difficulty") PrintTable(data) end function GameMode:On_tree_cut(data) print("[BAREBONES] tree_cut") PrintTable(data) end function GameMode:On_ugc_details_arrived(data) print("[BAREBONES] ugc_details_arrived") PrintTable(data) end function GameMode:On_ugc_subscribed(data) print("[BAREBONES] ugc_subscribed") PrintTable(data) end function GameMode:On_ugc_unsubscribed(data) print("[BAREBONES] ugc_unsubscribed") PrintTable(data) end function GameMode:On_prizepool_received(data) print("[BAREBONES] prizepool_received") PrintTable(data) end function GameMode:On_microtransaction_success(data) print("[BAREBONES] microtransaction_success") PrintTable(data) end function GameMode:On_dota_rubick_ability_steal(data) print("[BAREBONES] dota_rubick_ability_steal") PrintTable(data) end function GameMode:On_compendium_event_actions_loaded(data) print("[BAREBONES] compendium_event_actions_loaded") PrintTable(data) end function GameMode:On_compendium_selections_loaded(data) print("[BAREBONES] compendium_selections_loaded") PrintTable(data) end function GameMode:On_compendium_set_selection_failed(data) print("[BAREBONES] compendium_set_selection_failed") PrintTable(data) end function GameMode:On_community_cached_names_updated(data) print("[BAREBONES] community_cached_names_updated") PrintTable(data) end function GameMode:On_dota_team_kill_credit(data) print("[BAREBONES] dota_team_kill_credit") PrintTable(data) end function GameMode:On_dota_effigy_kill(data) print("[BAREBONES] dota_effigy_kill") PrintTable(data) end function GameMode:On_dota_chat_assassin_announce(data) print("[BAREBONES] dota_chat_assassin_announce") PrintTable(data) end function GameMode:On_dota_chat_assassin_denied(data) print("[BAREBONES] dota_chat_assassin_denied") PrintTable(data) end function GameMode:On_dota_chat_assassin_success(data) print("[BAREBONES] dota_chat_assassin_success") PrintTable(data) end function GameMode:On_player_info_individual_updated(data) print("[BAREBONES] player_info_individual_updated") PrintTable(data) end function GameMode:On_dota_player_begin_cast(data) print("[BAREBONES] dota_player_begin_cast") PrintTable(data) end function GameMode:On_dota_non_player_begin_cast(data) print("[BAREBONES] dota_non_player_begin_cast") PrintTable(data) end function GameMode:On_dota_item_combined(data) print("[BAREBONES] dota_item_combined") PrintTable(data) end function GameMode:On_profile_opened(data) print("[BAREBONES] profile_opened") PrintTable(data) end function GameMode:On_dota_tutorial_task_advance(data) print("[BAREBONES] dota_tutorial_task_advance") PrintTable(data) end function GameMode:On_dota_tutorial_shop_toggled(data) print("[BAREBONES] dota_tutorial_shop_toggled") PrintTable(data) end function GameMode:On_ugc_download_requested(data) print("[BAREBONES] ugc_download_requested") PrintTable(data) end function GameMode:On_ugc_installed(data) print("[BAREBONES] ugc_installed") PrintTable(data) end function GameMode:On_compendium_trophies_loaded(data) print("[BAREBONES] compendium_trophies_loaded") PrintTable(data) end function GameMode:On_spec_item_pickup(data) print("[BAREBONES] spec_item_pickup") PrintTable(data) end function GameMode:On_spec_aegis_reclaim_time(data) print("[BAREBONES] spec_aegis_reclaim_time") PrintTable(data) end function GameMode:On_account_trophies_changed(data) print("[BAREBONES] account_trophies_changed") PrintTable(data) end function GameMode:On_account_all_hero_challenge_changed(data) print("[BAREBONES] account_all_hero_challenge_changed") PrintTable(data) end function GameMode:On_team_showcase_ui_update(data) print("[BAREBONES] team_showcase_ui_update") PrintTable(data) end function GameMode:On_ingame_events_changed(data) print("[BAREBONES] ingame_events_changed") PrintTable(data) end function GameMode:On_dota_match_signout(data) print("[BAREBONES] dota_match_signout") PrintTable(data) end function GameMode:On_dota_illusions_created(data) print("[BAREBONES] dota_illusions_created") PrintTable(data) end function GameMode:On_dota_year_beast_killed(data) print("[BAREBONES] dota_year_beast_killed") PrintTable(data) end function GameMode:On_dota_hero_undoselection(data) print("[BAREBONES] dota_hero_undoselection") PrintTable(data) end function GameMode:On_dota_challenge_socache_updated(data) print("[BAREBONES] dota_challenge_socache_updated") PrintTable(data) end function GameMode:On_party_invites_updated(data) print("[BAREBONES] party_invites_updated") PrintTable(data) end function GameMode:On_lobby_invites_updated(data) print("[BAREBONES] lobby_invites_updated") PrintTable(data) end function GameMode:On_custom_game_mode_list_updated(data) print("[BAREBONES] custom_game_mode_list_updated") PrintTable(data) end function GameMode:On_custom_game_lobby_list_updated(data) print("[BAREBONES] custom_game_lobby_list_updated") PrintTable(data) end function GameMode:On_friend_lobby_list_updated(data) print("[BAREBONES] friend_lobby_list_updated") PrintTable(data) end function GameMode:On_dota_team_player_list_changed(data) print("[BAREBONES] dota_team_player_list_changed") PrintTable(data) end function GameMode:On_dota_player_details_changed(data) print("[BAREBONES] dota_player_details_changed") PrintTable(data) end function GameMode:On_player_profile_stats_updated(data) print("[BAREBONES] player_profile_stats_updated") PrintTable(data) end function GameMode:On_custom_game_player_count_updated(data) print("[BAREBONES] custom_game_player_count_updated") PrintTable(data) end function GameMode:On_custom_game_friends_played_updated(data) print("[BAREBONES] custom_game_friends_played_updated") PrintTable(data) end function GameMode:On_custom_games_friends_play_updated(data) print("[BAREBONES] custom_games_friends_play_updated") PrintTable(data) end function GameMode:On_dota_player_update_assigned_hero(data) print("[BAREBONES] dota_player_update_assigned_hero") PrintTable(data) end function GameMode:On_dota_player_hero_selection_dirty(data) print("[BAREBONES] dota_player_hero_selection_dirty") PrintTable(data) end function GameMode:On_dota_npc_goal_reached(data) print("[BAREBONES] dota_npc_goal_reached") PrintTable(data) end function GameMode:On_dota_player_selected_custom_team(data) print("[BAREBONES] dota_player_selected_custom_team") PrintTable(data) end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/internal/gamemode.lua ================================================ -- This function initializes the game mode and is called before anyone loads into the game -- It can be used to pre-initialize any values/tables that will be needed later function GameMode:_InitGameMode() if GameMode._reentrantCheck then return end -- Setup rules GameRules:SetHeroRespawnEnabled( ENABLE_HERO_RESPAWN ) GameRules:SetUseUniversalShopMode( UNIVERSAL_SHOP_MODE ) GameRules:SetSameHeroSelectionEnabled( ALLOW_SAME_HERO_SELECTION ) GameRules:SetHeroSelectionTime( HERO_SELECTION_TIME ) GameRules:SetPreGameTime( PRE_GAME_TIME) GameRules:SetPostGameTime( POST_GAME_TIME ) GameRules:SetTreeRegrowTime( TREE_REGROW_TIME ) GameRules:SetUseCustomHeroXPValues ( USE_CUSTOM_XP_VALUES ) GameRules:SetGoldPerTick(GOLD_PER_TICK) GameRules:SetGoldTickTime(GOLD_TICK_TIME) GameRules:SetRuneSpawnTime(RUNE_SPAWN_TIME) GameRules:SetUseBaseGoldBountyOnHeroes(USE_STANDARD_HERO_GOLD_BOUNTY) GameRules:SetHeroMinimapIconScale( MINIMAP_ICON_SIZE ) GameRules:SetCreepMinimapIconScale( MINIMAP_CREEP_ICON_SIZE ) GameRules:SetRuneMinimapIconScale( MINIMAP_RUNE_ICON_SIZE ) GameRules:SetFirstBloodActive( ENABLE_FIRST_BLOOD ) GameRules:SetHideKillMessageHeaders( HIDE_KILL_BANNERS ) GameRules:SetCustomGameEndDelay( GAME_END_DELAY ) GameRules:SetCustomVictoryMessageDuration( VICTORY_MESSAGE_DURATION ) GameRules:SetStartingGold( STARTING_GOLD ) if SKIP_TEAM_SETUP then GameRules:SetCustomGameSetupAutoLaunchDelay( 0 ) GameRules:LockCustomGameSetupTeamAssignment( true ) GameRules:EnableCustomGameSetupAutoLaunch( true ) else GameRules:SetCustomGameSetupAutoLaunchDelay( AUTO_LAUNCH_DELAY ) GameRules:LockCustomGameSetupTeamAssignment( LOCK_TEAM_SETUP ) GameRules:EnableCustomGameSetupAutoLaunch( ENABLE_AUTO_LAUNCH ) end -- This is multiteam configuration stuff if USE_AUTOMATIC_PLAYERS_PER_TEAM then local num = math.floor(10 / MAX_NUMBER_OF_TEAMS) local count = 0 for team,number in pairs(TEAM_COLORS) do if count >= MAX_NUMBER_OF_TEAMS then GameRules:SetCustomGameTeamMaxPlayers(team, 0) else GameRules:SetCustomGameTeamMaxPlayers(team, num) end count = count + 1 end else local count = 0 for team,number in pairs(CUSTOM_TEAM_PLAYER_COUNT) do if count >= MAX_NUMBER_OF_TEAMS then GameRules:SetCustomGameTeamMaxPlayers(team, 0) else GameRules:SetCustomGameTeamMaxPlayers(team, number) end count = count + 1 end end if USE_CUSTOM_TEAM_COLORS then for team,color in pairs(TEAM_COLORS) do SetTeamCustomHealthbarColor(team, color[1], color[2], color[3]) end end DebugPrint('[BAREBONES] GameRules set') --InitLogFile( "log/barebones.txt","") -- Event Hooks -- All of these events can potentially be fired by the game, though only the uncommented ones have had -- Functions supplied for them. If you are interested in the other events, you can uncomment the -- ListenToGameEvent line and add a function to handle the event ListenToGameEvent('dota_player_gained_level', Dynamic_Wrap(GameMode, 'OnPlayerLevelUp'), self) ListenToGameEvent('dota_ability_channel_finished', Dynamic_Wrap(GameMode, 'OnAbilityChannelFinished'), self) ListenToGameEvent('dota_player_learned_ability', Dynamic_Wrap(GameMode, 'OnPlayerLearnedAbility'), self) ListenToGameEvent('entity_killed', Dynamic_Wrap(GameMode, '_OnEntityKilled'), self) ListenToGameEvent('player_connect_full', Dynamic_Wrap(GameMode, '_OnConnectFull'), self) ListenToGameEvent('player_disconnect', Dynamic_Wrap(GameMode, 'OnDisconnect'), self) ListenToGameEvent('dota_item_purchased', Dynamic_Wrap(GameMode, 'OnItemPurchased'), self) ListenToGameEvent('dota_item_picked_up', Dynamic_Wrap(GameMode, 'OnItemPickedUp'), self) ListenToGameEvent('last_hit', Dynamic_Wrap(GameMode, 'OnLastHit'), self) ListenToGameEvent('dota_non_player_used_ability', Dynamic_Wrap(GameMode, 'OnNonPlayerUsedAbility'), self) ListenToGameEvent('player_changename', Dynamic_Wrap(GameMode, 'OnPlayerChangedName'), self) ListenToGameEvent('dota_rune_activated_server', Dynamic_Wrap(GameMode, 'OnRuneActivated'), self) ListenToGameEvent('dota_player_take_tower_damage', Dynamic_Wrap(GameMode, 'OnPlayerTakeTowerDamage'), self) ListenToGameEvent('tree_cut', Dynamic_Wrap(GameMode, 'OnTreeCut'), self) ListenToGameEvent('entity_hurt', Dynamic_Wrap(GameMode, 'OnEntityHurt'), self) ListenToGameEvent('player_connect', Dynamic_Wrap(GameMode, 'PlayerConnect'), self) ListenToGameEvent('dota_player_used_ability', Dynamic_Wrap(GameMode, 'OnAbilityUsed'), self) ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(GameMode, '_OnGameRulesStateChange'), self) ListenToGameEvent('npc_spawned', Dynamic_Wrap(GameMode, '_OnNPCSpawned'), self) ListenToGameEvent('dota_player_pick_hero', Dynamic_Wrap(GameMode, 'OnPlayerPickHero'), self) ListenToGameEvent('dota_team_kill_credit', Dynamic_Wrap(GameMode, 'OnTeamKillCredit'), self) ListenToGameEvent("player_reconnected", Dynamic_Wrap(GameMode, 'OnPlayerReconnect'), self) ListenToGameEvent("dota_illusions_created", Dynamic_Wrap(GameMode, 'OnIllusionsCreated'), self) ListenToGameEvent("dota_item_combined", Dynamic_Wrap(GameMode, 'OnItemCombined'), self) ListenToGameEvent("dota_player_begin_cast", Dynamic_Wrap(GameMode, 'OnAbilityCastBegins'), self) ListenToGameEvent("dota_tower_kill", Dynamic_Wrap(GameMode, 'OnTowerKill'), self) ListenToGameEvent("dota_player_selected_custom_team", Dynamic_Wrap(GameMode, 'OnPlayerSelectedCustomTeam'), self) ListenToGameEvent("dota_npc_goal_reached", Dynamic_Wrap(GameMode, 'OnNPCGoalReached'), self) ListenToGameEvent("player_chat", Dynamic_Wrap(GameMode, 'OnPlayerChat'), self) --ListenToGameEvent("dota_tutorial_shop_toggled", Dynamic_Wrap(GameMode, 'OnShopToggled'), self) --ListenToGameEvent('player_spawn', Dynamic_Wrap(GameMode, 'OnPlayerSpawn'), self) --ListenToGameEvent('dota_unit_event', Dynamic_Wrap(GameMode, 'OnDotaUnitEvent'), self) --ListenToGameEvent('nommed_tree', Dynamic_Wrap(GameMode, 'OnPlayerAteTree'), self) --ListenToGameEvent('player_completed_game', Dynamic_Wrap(GameMode, 'OnPlayerCompletedGame'), self) --ListenToGameEvent('dota_match_done', Dynamic_Wrap(GameMode, 'OnDotaMatchDone'), self) --ListenToGameEvent('dota_combatlog', Dynamic_Wrap(GameMode, 'OnCombatLogEvent'), self) --ListenToGameEvent('dota_player_killed', Dynamic_Wrap(GameMode, 'OnPlayerKilled'), self) --ListenToGameEvent('player_team', Dynamic_Wrap(GameMode, 'OnPlayerTeam'), self) --[[This block is only used for testing events handling in the event that Valve adds more in the future Convars:RegisterCommand('events_test', function() GameMode:StartEventTest() end, "events test", 0)]] local spew = 0 if BAREBONES_DEBUG_SPEW then spew = 1 end Convars:RegisterConvar('barebones_spew', tostring(spew), 'Set to 1 to start spewing barebones debug info. Set to 0 to disable.', 0) -- Change random seed local timeTxt = string.gsub(string.gsub(GetSystemTime(), ':', ''), '^0+','') math.randomseed(tonumber(timeTxt)) -- Initialized tables for tracking state self.bSeenWaitForPlayers = false self.vUserIds = {} DebugPrint('[BAREBONES] Done loading Barebones gamemode!\n\n') GameMode._reentrantCheck = true GameMode:InitGameMode() GameMode._reentrantCheck = false end mode = nil -- This function is called as the first player loads and sets up the GameMode parameters function GameMode:_CaptureGameMode() if mode == nil then -- Set GameMode parameters mode = GameRules:GetGameModeEntity() mode:SetRecommendedItemsDisabled( RECOMMENDED_BUILDS_DISABLED ) mode:SetCameraDistanceOverride( CAMERA_DISTANCE_OVERRIDE ) mode:SetCustomBuybackCostEnabled( CUSTOM_BUYBACK_COST_ENABLED ) mode:SetCustomBuybackCooldownEnabled( CUSTOM_BUYBACK_COOLDOWN_ENABLED ) mode:SetBuybackEnabled( BUYBACK_ENABLED ) mode:SetTopBarTeamValuesOverride ( USE_CUSTOM_TOP_BAR_VALUES ) mode:SetTopBarTeamValuesVisible( TOP_BAR_VISIBLE ) mode:SetUseCustomHeroLevels ( USE_CUSTOM_HERO_LEVELS ) mode:SetCustomHeroMaxLevel ( MAX_LEVEL ) mode:SetCustomXPRequiredToReachNextLevel( XP_PER_LEVEL_TABLE ) mode:SetBotThinkingEnabled( USE_STANDARD_DOTA_BOT_THINKING ) mode:SetTowerBackdoorProtectionEnabled( ENABLE_TOWER_BACKDOOR_PROTECTION ) mode:SetFogOfWarDisabled(DISABLE_FOG_OF_WAR_ENTIRELY) mode:SetGoldSoundDisabled( DISABLE_GOLD_SOUNDS ) mode:SetRemoveIllusionsOnDeath( REMOVE_ILLUSIONS_ON_DEATH ) mode:SetAlwaysShowPlayerInventory( SHOW_ONLY_PLAYER_INVENTORY ) mode:SetAnnouncerDisabled( DISABLE_ANNOUNCER ) if FORCE_PICKED_HERO ~= nil then mode:SetCustomGameForceHero( FORCE_PICKED_HERO ) end mode:SetFixedRespawnTime( FIXED_RESPAWN_TIME ) mode:SetFountainConstantManaRegen( FOUNTAIN_CONSTANT_MANA_REGEN ) mode:SetFountainPercentageHealthRegen( FOUNTAIN_PERCENTAGE_HEALTH_REGEN ) mode:SetFountainPercentageManaRegen( FOUNTAIN_PERCENTAGE_MANA_REGEN ) mode:SetLoseGoldOnDeath( LOSE_GOLD_ON_DEATH ) mode:SetMaximumAttackSpeed( MAXIMUM_ATTACK_SPEED ) mode:SetMinimumAttackSpeed( MINIMUM_ATTACK_SPEED ) mode:SetStashPurchasingDisabled ( DISABLE_STASH_PURCHASING ) for rune, spawn in pairs(ENABLED_RUNES) do mode:SetRuneEnabled(rune, spawn) end mode:SetUnseenFogOfWarEnabled( USE_UNSEEN_FOG_OF_WAR ) mode:SetDaynightCycleDisabled( DISABLE_DAY_NIGHT_CYCLE ) mode:SetKillingSpreeAnnouncerDisabled( DISABLE_KILLING_SPREE_ANNOUNCER ) mode:SetStickyItemDisabled( DISABLE_STICKY_ITEM ) self:OnFirstPlayerLoaded() end end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/internal/util.lua ================================================ function DebugPrint(...) local spew = Convars:GetInt('barebones_spew') or -1 if spew == -1 and BAREBONES_DEBUG_SPEW then spew = 1 end if spew == 1 then print(...) end end function DebugPrintTable(...) local spew = Convars:GetInt('barebones_spew') or -1 if spew == -1 and BAREBONES_DEBUG_SPEW then spew = 1 end if spew == 1 then PrintTable(...) end end function PrintTable(t, indent, done) --print ( string.format ('PrintTable type %s', type(keys)) ) if type(t) ~= "table" then return end done = done or {} done[t] = true indent = indent or 0 local l = {} for k, v in pairs(t) do table.insert(l, k) end table.sort(l) for k, v in ipairs(l) do -- Ignore FDesc if v ~= 'FDesc' then local value = t[v] if type(value) == "table" and not done[value] then done [value] = true print(string.rep ("\t", indent)..tostring(v)..":") PrintTable (value, indent + 2, done) elseif type(value) == "userdata" and not done[value] then done [value] = true print(string.rep ("\t", indent)..tostring(v)..": "..tostring(value)) PrintTable ((getmetatable(value) and getmetatable(value).__index) or getmetatable(value), indent + 2, done) else if t.FDesc and t.FDesc[v] then print(string.rep ("\t", indent)..tostring(t.FDesc[v])) else print(string.rep ("\t", indent)..tostring(v)..": "..tostring(value)) end end end end end -- Colors COLOR_NONE = '\x06' COLOR_GRAY = '\x06' COLOR_GREY = '\x06' COLOR_GREEN = '\x0C' COLOR_DPURPLE = '\x0D' COLOR_SPINK = '\x0E' COLOR_DYELLOW = '\x10' COLOR_PINK = '\x11' COLOR_RED = '\x12' COLOR_LGREEN = '\x15' COLOR_BLUE = '\x16' COLOR_DGREEN = '\x18' COLOR_SBLUE = '\x19' COLOR_PURPLE = '\x1A' COLOR_ORANGE = '\x1B' COLOR_LRED = '\x1C' COLOR_GOLD = '\x1D' function DebugAllCalls() if not GameRules.DebugCalls then print("Starting DebugCalls") GameRules.DebugCalls = true debug.sethook(function(...) local info = debug.getinfo(2) local src = tostring(info.short_src) local name = tostring(info.name) if name ~= "__index" then print("Call: ".. src .. " -- " .. name .. " -- " .. info.currentline) end end, "c") else print("Stopped DebugCalls") GameRules.DebugCalls = false debug.sethook(nil, "c") end end --[[Author: Noya Date: 09.08.2015. Hides all dem hats ]] function HideWearables( unit ) unit.hiddenWearables = {} -- Keep every wearable handle in a table to show them later local model = unit:FirstMoveChild() while model ~= nil do if model:GetClassname() == "dota_item_wearable" then model:AddEffects(EF_NODRAW) -- Set model hidden table.insert(unit.hiddenWearables, model) end model = model:NextMovePeer() end end function ShowWearables( unit ) for i,v in pairs(unit.hiddenWearables) do v:RemoveEffects(EF_NODRAW) end end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/abilities/containers_lua_targeting.lua ================================================ containers_lua_targeting = class({}) -------------------------------------------------------------------------------- function containers_lua_targeting:GetBehavior() local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return self.BaseClass.GetBehavior(self) end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem then return proxyItem:GetBehavior() end end function containers_lua_targeting:GetAOERadius() local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return self.BaseClass.GetAOERadius(self) end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetAOERadius then return proxyItem:GetAOERadius() end return result.aoe end function containers_lua_targeting:GetCastRange(vLocation, hTarget) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return self.BaseClass.GetCastRange(self, vLocation, hTarget) end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetCastRange then return proxyItem:GetCastRange(vLocation, hTarget) end return result.range end function containers_lua_targeting:GetChannelTime() local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return self.BaseClass.GetChannelTime(self) end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetChannelTime then return proxyItem:GetChannelTime() end return result.channelTime end function containers_lua_targeting:GetChannelledManaCostPerSecond(iLevel) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return self.BaseClass.GetChannelledManaCostPerSecond(self, iLevel) end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetChannelledManaCostPerSecond then return proxyItem:GetChannelledManaCostPerSecond(iLevel) end return result.channelCost end -------------------------------------------------------------------------------- function containers_lua_targeting:CastFilterResult( ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return UF_SUCCESS end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.CastFilterResult then return proxyItem:CastFilterResult() end return UF_SUCCESS end function containers_lua_targeting:GetCustomCastError( ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return "" end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetCustomCastError then return proxyItem:GetCustomCastError() end return "" end -------------------------------------------------------------------------------- function containers_lua_targeting:CastFilterResultLocation( vLocation ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return UF_SUCCESS end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.CastFilterResultLocation then return proxyItem:CastFilterResultLocation(vLocation) end return UF_SUCCESS end function containers_lua_targeting:GetCustomCastErrorLocation( vLocation ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return "" end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetCustomCastErrorLocation then return proxyItem:GetCustomCastErrorLocation(vLocation) end return "" end -------------------------------------------------------------------------------- function containers_lua_targeting:CastFilterResultTarget( hTarget ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return UF_SUCCESS end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.CastFilterResultTarget then return proxyItem:CastFilterResultTarget(hTarget) end local nResult = UnitFilter( hTarget, result.targetTeam, result.targetType, result.targetFlags, self:GetCaster():GetTeamNumber() ) if nResult ~= UF_SUCCESS then return nResult end return UF_SUCCESS end function containers_lua_targeting:GetCustomCastErrorTarget( hTarget ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return "" end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetCustomCastErrorTarget then return proxyItem:GetCustomCastErrorTarget(hTarget) end return "" end -------------------------------------------------------------------------------- function containers_lua_targeting:OnChannelThink(flInterval) local item = self.proxyItem self.proxyItem:OnChannelThink(flInterval) end function containers_lua_targeting:OnChannelFinish(bInterrupted) local item = self.proxyItem self.proxyItem:OnChannelFinish(bInterrupted) end function containers_lua_targeting:OnAbilityPhaseStart() return self.proxyItem:OnAbilityPhaseStart() end function containers_lua_targeting:OnAbilityPhaseInterrupted() self.proxyItem:OnAbilityPhaseInterrupted() end function containers_lua_targeting:OnSpellStart() local target = self:GetCursorTarget() local pos = self:GetCursorPosition() local item = self.proxyItem local owner = item:GetOwner() local behavior = item:GetBehavior() local channelled = bit.band(behavior, DOTA_ABILITY_BEHAVIOR_CHANNELLED) ~= 0 item:PayGoldCost() item:PayManaCost() item:StartCooldown(item:GetCooldown(item:GetLevel())) owner:SetCursorPosition(pos) owner:SetCursorCastTarget(target) item:OnSpellStart() end -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/abilities/containers_lua_targeting_tree.lua ================================================ containers_lua_targeting_tree = class({}) -------------------------------------------------------------------------------- function containers_lua_targeting_tree:GetBehavior() local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return self.BaseClass.GetBehavior(self) end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem then return proxyItem:GetBehavior() end end function containers_lua_targeting_tree:GetAOERadius() local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return self.BaseClass.GetAOERadius(self) end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetAOERadius then return proxyItem:GetAOERadius() end return result.aoe end function containers_lua_targeting_tree:GetCastRange(vLocation, hTarget) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return self.BaseClass.GetCastRange(self, vLocation, hTarget) end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetCastRange then return proxyItem:GetCastRange(vLocation, hTarget) end return result.range end function containers_lua_targeting_tree:GetChannelTime() local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return self.BaseClass.GetChannelTime(self) end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetChannelTime then return proxyItem:GetChannelTime() end return result.channelTime end function containers_lua_targeting_tree:GetChannelledManaCostPerSecond(iLevel) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return self.BaseClass.GetChannelledManaCostPerSecond(self, iLevel) end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetChannelledManaCostPerSecond then return proxyItem:GetChannelledManaCostPerSecond(iLevel) end return result.channelCost end -------------------------------------------------------------------------------- function containers_lua_targeting_tree:CastFilterResult( ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return UF_SUCCESS end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.CastFilterResult then return proxyItem:CastFilterResult() end return UF_SUCCESS end function containers_lua_targeting_tree:GetCustomCastError( ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return "" end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetCustomCastError then return proxyItem:GetCustomCastError() end return "" end -------------------------------------------------------------------------------- function containers_lua_targeting_tree:CastFilterResultLocation( vLocation ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return UF_SUCCESS end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.CastFilterResultLocation then return proxyItem:CastFilterResultLocation(vLocation) end return UF_SUCCESS end function containers_lua_targeting_tree:GetCustomCastErrorLocation( vLocation ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return "" end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetCustomCastErrorLocation then return proxyItem:GetCustomCastErrorLocation(vLocation) end return "" end -------------------------------------------------------------------------------- function containers_lua_targeting_tree:CastFilterResultTarget( hTarget ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return UF_SUCCESS end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.CastFilterResultTarget then return proxyItem:CastFilterResultTarget(hTarget) end local targetType = result.targetType local treeTarget = bit.band(targetType, DOTA_UNIT_TARGET_TREE) ~= 0 local customTarget = bit.band(targetType, DOTA_UNIT_TARGET_CUSTOM) ~= 0 if treeTarget and customTarget and hTarget.GetUnitName and (hTarget:GetUnitName() == "npc_dota_sentry_wards" or hTarget:GetUnitName() == "npc_dota_observer_wards") then return UF_SUCCESS end local nResult = UnitFilter( hTarget, result.targetTeam, result.targetType, result.targetFlags, self:GetCaster():GetTeamNumber() ) if nResult ~= UF_SUCCESS then return nResult end return UF_SUCCESS end function containers_lua_targeting_tree:GetCustomCastErrorTarget( hTarget ) local result = CustomNetTables:GetTableValue("containers_lua", tostring(self:entindex())) if not result then return "" end local proxyItem = EntIndexToHScript(result.proxyItem) if proxyItem and proxyItem.GetCustomCastErrorTarget then return proxyItem:GetCustomCastErrorTarget(hTarget) end return "" end -------------------------------------------------------------------------------- function containers_lua_targeting_tree:OnChannelThink(flInterval) local item = self.proxyItem self.proxyItem:OnChannelThink(flInterval) end function containers_lua_targeting_tree:OnChannelFinish(bInterrupted) local item = self.proxyItem self.proxyItem:OnChannelFinish(bInterrupted) end function containers_lua_targeting_tree:OnAbilityPhaseStart() return self.proxyItem:OnAbilityPhaseStart() end function containers_lua_targeting_tree:OnAbilityPhaseInterrupted() self.proxyItem:OnAbilityPhaseInterrupted() end function containers_lua_targeting_tree:OnSpellStart() local target = self:GetCursorTarget() local pos = self:GetCursorPosition() local item = self.proxyItem local owner = item:GetOwner() local behavior = item:GetBehavior() local channelled = bit.band(behavior, DOTA_ABILITY_BEHAVIOR_CHANNELLED) ~= 0 item:PayGoldCost() item:PayManaCost() item:StartCooldown(item:GetCooldown(item:GetLevel())) owner:SetCursorPosition(pos) owner:SetCursorCastTarget(target) item:OnSpellStart() end -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/abilities/item_containers_lua_pack.lua ================================================ item_containers_lua_pack = class({}) -------------------------------------------------------------------------------- function item_containers_lua_pack:OnSpellStart() local container = self.container if IsValidContainer(container) then local pid = self:GetOwner():GetPlayerOwnerID() if container:IsOpen(pid) then container:Close(pid) self.toggled = false else container:Open(pid) self.toggled = true end else print("INVALID CONTAINER", container) end end -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/animations.lua ================================================ ANIMATIONS_VERSION = "1.00" --[[ Lua-controlled Animations Library by BMD Installation -"require" this file inside your code in order to gain access to the StartAnmiation and EndAnimation global. -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 Usage -Animations can be started for any unit and are provided as a table of information to the StartAnimation call -Repeated calls to StartAnimation for a single unit will cancel any running animation and begin the new animation -EndAnimation can be called in order to cancel a running animation -Animations are specified by a table which has as potential parameters: -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. -activity: An activity code which will be used as the base activity for the animation i.e. DOTA_ACT_RUN, DOTA_ACT_ATTACK, etc. -rate: An optional (will be 1.0 if unspecified) animation rate to be used when playing this animation. -translate: An optional translate activity modifier string which can be used to modify the animation sequence. Example: For ACT_DOTA_RUN+haste, this should be "haste" -translate2: A second optional translate activity modifier string which can be used to modify the animation sequence further. 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 -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. -Permanent activity translate modifiers can be removed with RemoveAnimationTranslate. -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. -Animations can be unfrozen at any time by calling UnfreezeAnimation(unit) Notes -Animations can only play for valid activities/sequences possessed by the model the unit is using. -Sequences requiring 3+ activity modifier translates (i.e "stun+fear+loadout" or similar) are not possible currently in this library. -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. Calling StartAnimation directly without ending the previous animation will automatically add in this delay and cancel the previous animation. -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) -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) -This library requires that the "libraries/timers.lua" be present in your vscripts directory. Examples: --Start a running animation at 2.5 rate for 2.5 seconds StartAnimation(unit, {duration=2.5, activity=ACT_DOTA_RUN, rate=2.5}) --End a running animation EndAnimation(unit) --Start a running + hasted animation at .8 rate for 5 seconds StartAnimation(unit, {duration=5, activity=ACT_DOTA_RUN, rate=0.8, translate="haste"}) --Start a shield-bash animation for sven with variable rate StartAnimation(unit, {duration=1.5, activity=ACT_DOTA_ATTACK, rate=RandomFloat(.5, 1.5), translate="sven_warcry", translate2="sven_shield"}) --Start a permanent injured translate modifier AddAnimationTranslate(unit, "injured") --Remove a permanent activity translate modifier RemoveAnimationTranslate(unit) --Freeze an animation for 4 seconds FreezeAnimation(unit, 4) --Unfreeze an animation UnfreezeAnimation(unit) ]] LinkLuaModifier( "modifier_animation", "libraries/modifiers/modifier_animation.lua", LUA_MODIFIER_MOTION_NONE ) LinkLuaModifier( "modifier_animation_translate", "libraries/modifiers/modifier_animation_translate.lua", LUA_MODIFIER_MOTION_NONE ) LinkLuaModifier( "modifier_animation_translate_permanent", "libraries/modifiers/modifier_animation_translate_permanent.lua", LUA_MODIFIER_MOTION_NONE ) LinkLuaModifier( "modifier_animation_freeze", "libraries/modifiers/modifier_animation_freeze.lua", LUA_MODIFIER_MOTION_NONE ) require('libraries/timers') local _ANIMATION_TRANSLATE_TO_CODE = { abysm= 13, admirals_prow= 307, agedspirit= 3, aggressive= 4, agrressive= 163, am_blink= 182, ancestors_edge= 144, ancestors_pauldron= 145, ancestors_vambrace= 146, ancestral_scepter= 67, ancient_armor= 6, anvil= 7, arcana= 8, armaments_set= 20, axes= 188, backstab= 41, backstroke_gesture= 283, backward= 335, ball_lightning= 231, batter_up= 43, bazooka= 284, belly_flop= 180, berserkers_blood= 35, black= 44, black_hole= 194, bladebiter= 147, blood_chaser= 134, bolt= 233, bot= 47, brain_sap= 185, broodmother_spin= 50, burning_fiend= 148, burrow= 229, burrowed= 51, cat_dancer_gesture= 285, cauldron= 29, charge= 97, charge_attack= 98, chase= 246, chasm= 57, chemical_rage= 2, chicken_gesture= 258, come_get_it= 39, corpse_dress= 104, corpse_dresstop= 103, corpse_scarf= 105, cryAnimationExportNode= 341, crystal_nova= 193, culling_blade= 184, dagger_twirl= 143, dark_wraith= 174, darkness= 213, dc_sb_charge= 107, dc_sb_charge_attack= 108, dc_sb_charge_finish= 109, dc_sb_ultimate= 110, deadwinter_soul= 96, death_protest= 94, demon_drain= 116, desolation= 55, digger= 176, dismember= 218, divine_sorrow= 117, divine_sorrow_loadout= 118, divine_sorrow_loadout_spawn= 119, divine_sorrow_sunstrike= 120, dizzying_punch= 343, dog_of_duty= 342, dogofduty= 340, dominator= 254, dryad_tree= 311, dualwield= 14, duel_kill= 121, earthshock= 235, emp= 259, enchant_totem= 313, ["end"]= 243, eyeoffetizu= 34, f2p_doom= 131, face_me= 286, faces_hakama= 111, faces_mask= 113, faces_wraps= 112, fast= 10, faster= 11, fastest= 12, fear= 125, fiends_grip= 186, fiery_soul= 149, finger= 200, firefly= 190, fish_slap= 123, fishstick= 339, fissure= 195, flying= 36, focusfire= 124, forcestaff_enemy= 122, forcestaff_friendly= 15, forward= 336, fountain= 49, freezing_field= 191, frost_arrow= 37, frostbite= 192, frostiron_raider= 150, frostivus= 54, ftp_dendi_back= 126, gale= 236, get_burned= 288, giddy_up_gesture= 289, glacier= 101, glory= 345, good_day_sir= 40, great_safari= 267, greevil_black_hole= 58, greevil_blade_fury= 59, greevil_bloodlust= 60, greevil_cold_snap= 61, greevil_decrepify= 62, greevil_diabolic_edict= 63, greevil_echo_slam= 64, greevil_fatal_bonds= 65, greevil_ice_wall= 66, greevil_laguna_blade= 68, greevil_leech_seed= 69, greevil_magic_missile= 70, greevil_maledict= 71, greevil_miniboss_black_brain_sap= 72, greevil_miniboss_black_nightmare= 73, greevil_miniboss_blue_cold_feet= 74, greevil_miniboss_blue_ice_vortex= 75, greevil_miniboss_green_living_armor= 76, greevil_miniboss_green_overgrowth= 77, greevil_miniboss_orange_dragon_slave= 78, greevil_miniboss_orange_lightstrike_array= 79, greevil_miniboss_purple_plague_ward= 80, greevil_miniboss_purple_venomous_gale= 81, greevil_miniboss_red_earthshock= 82, greevil_miniboss_red_overpower= 83, greevil_miniboss_white_purification= 84, greevil_miniboss_yellow_ion_shell= 85, greevil_miniboss_yellow_surge= 86, greevil_natures_attendants= 87, greevil_phantom_strike= 88, greevil_poison_nova= 89, greevil_purification= 90, greevil_shadow_strike= 91, greevil_shadow_wave= 92, groove_gesture= 305, ground_pound= 128, guardian_angel= 215, guitar= 290, hang_loose_gesture= 291, happy_dance= 293, harlequin= 129, haste= 45, hook= 220, horn= 292, immortal= 28, impale= 201, impatient_maiden= 100, impetus= 138, injured= 5, ["injured rare"]= 247, injured_aggressive= 130, instagib= 21, iron= 255, iron_surge= 99, item_style_2= 133, jump_gesture= 294, laguna= 202, leap= 206, level_1= 140, level_2= 141, level_3= 142, life_drain= 219, loadout= 0, loda= 173, lodestar= 114, loser= 295, lsa= 203, lucentyr= 158, lute= 296, lyreleis_breeze= 159, mace= 160, mag_power_gesture= 298, magic_ends_here= 297, mana_drain= 204, mana_void= 183, manias_mask= 135, manta= 38, mask_lord= 299, masquerade= 25, meld= 162, melee= 334, miniboss= 164, moon_griffon= 166, moonfall= 165, moth= 53, nihility= 95, obeisance_of_the_keeper= 151, obsidian_helmet= 132, odachi= 32, offhand_basher= 42, omnislash= 198, overpower1= 167, overpower2= 168, overpower3= 169, overpower4= 170, overpower5= 171, overpower6= 172, pegleg= 248, phantom_attack= 16, pinfold= 175, plague_ward= 237, poison_nova= 238, portrait_fogheart= 177, poundnpoint= 300, powershot= 242, punch= 136, purification= 216, pyre= 26, qop_blink= 221, ravage= 225, red_moon= 30, reincarnate= 115, remnant= 232, repel= 217, requiem= 207, roar= 187, robot_gesture= 301, roshan= 181, salvaged_sword= 152, sandking_rubyspire_burrowstrike= 52, sb_bracers= 251, sb_helmet= 250, sb_shoulder= 252, sb_spear= 253, scream= 222, serene_honor= 153, shadow_strike= 223, shadowraze= 208, shake_moneymaker= 179, sharp_blade= 303, shinobi= 27, shinobi_mask= 154, shinobi_tail= 23, shrapnel= 230, silent_ripper= 178, slam= 196, slasher_chest= 262, slasher_mask= 263, slasher_offhand= 261, slasher_weapon= 260, sm_armor= 264, sm_head= 56, sm_shoulder= 265, snipe= 226, snowangel= 17, snowball= 102, sonic_wave= 224, sparrowhawk_bow= 269, sparrowhawk_cape= 270, sparrowhawk_hood= 272, sparrowhawk_quiver= 271, sparrowhawk_shoulder= 273, spin= 199, split_shot= 1, sprint= 275, sprout= 209, staff_swing= 304, stalker_exo= 93, start= 249, stinger= 280, stolen_charge= 227, stolen_firefly= 189, strike= 228, sugarrush= 276, suicide_squad= 18, summon= 210, sven_shield= 256, sven_warcry= 257, swag_gesture= 287, swordonshoulder= 155, taunt_fullbody= 19, taunt_killtaunt= 139, taunt_quickdraw_gesture= 268, taunt_roll_gesture= 302, techies_arcana= 9, telebolt= 306, teleport= 211, thirst= 137, tidebringer= 24, tidehunter_boat= 22, tidehunter_toss_fish= 312, tidehunter_yippy= 347, timelord_head= 309, tinker_rollermaw= 161, torment= 279, totem= 197, transition= 278, trapper= 314, tree= 310, trickortreat= 277, triumphant_timelord= 127, turbulent_teleport= 308, twinblade_attack= 315, twinblade_attack_b= 316, twinblade_attack_c= 317, twinblade_attack_d= 318, twinblade_attack_injured= 319, twinblade_death= 320, twinblade_idle= 321, twinblade_idle_injured= 322, twinblade_idle_rare= 323, twinblade_injured_attack_b= 324, twinblade_jinada= 325, twinblade_jinada_injured= 326, twinblade_shuriken_toss= 327, twinblade_shuriken_toss_injured= 328, twinblade_spawn= 329, twinblade_stun= 330, twinblade_track= 331, twinblade_track_injured= 332, twinblade_victory= 333, twister= 274, unbroken= 106, vendetta= 337, viper_strike= 239, viridi_set= 338, void= 214, vortex= 234, wall= 240, ward= 241, wardstaff= 344, wave= 205, web= 48, whalehook= 156, whats_that= 281, when_nature_attacks= 31, white= 346, windrun= 244, windy= 245, winterblight= 157, witchdoctor_jig= 282, with_item= 46, wolfhound= 266, wraith_spin= 33, wrath= 212, rampant= 348, overload= 349, surge=350, es_prosperity=351, Espada_pistola=352, overload_injured=353, ss_fortune=354, liquid_fire=355, jakiro_icemelt=356, jakiro_roar=357, chakram=358, doppelwalk=359, enrage=360, fast_run=361, overpower=362, overwhelmingodds=363, pregame=364, shadow_dance=365, shukuchi=366, strength=367, twinblade_run=368, twinblade_run_injured=369, windwalk=370, } function StartAnimation(unit, table) local duration = table.duration local activity = table.activity local translate = table.translate local translate2 = table.translate2 local rate = table.rate or 1.0 rate = math.floor(math.max(0,math.min(255/20, rate)) * 20 + .5) local stacks = activity + bit.lshift(rate,11) if translate ~= nil then if _ANIMATION_TRANSLATE_TO_CODE[translate] == nil then print("[ANIMATIONS.lua] ERROR, no translate-code found for '" .. translate .. "'. This translate may be misspelled or need to be added to the enum manually.") return end stacks = stacks + bit.lshift(_ANIMATION_TRANSLATE_TO_CODE[translate],19) end if translate2 ~= nil and _ANIMATION_TRANSLATE_TO_CODE[translate2] == nil then print("[ANIMATIONS.lua] ERROR, no translate-code found for '" .. translate2 .. "'. This translate may be misspelled or need to be added to the enum manually.") return end if unit:HasModifier("modifier_animation") or (unit._animationEnd ~= nil and unit._animationEnd + .067 > GameRules:GetGameTime()) then EndAnimation(unit) Timers:CreateTimer(.066, function() if translate2 ~= nil then unit:AddNewModifier(unit, nil, "modifier_animation_translate", {duration=duration, translate=translate2}) unit:SetModifierStackCount("modifier_animation_translate", unit, _ANIMATION_TRANSLATE_TO_CODE[translate2]) end unit._animationEnd = GameRules:GetGameTime() + duration unit:AddNewModifier(unit, nil, "modifier_animation", {duration=duration, translate=translate}) unit:SetModifierStackCount("modifier_animation", unit, stacks) end) else if translate2 ~= nil then unit:AddNewModifier(unit, nil, "modifier_animation_translate", {duration=duration, translate=translate2}) unit:SetModifierStackCount("modifier_animation_translate", unit, _ANIMATION_TRANSLATE_TO_CODE[translate2]) end unit._animationEnd = GameRules:GetGameTime() + duration unit:AddNewModifier(unit, nil, "modifier_animation", {duration=duration, translate=translate}) unit:SetModifierStackCount("modifier_animation", unit, stacks) end end function FreezeAnimation(unit, duration) if duration then unit:AddNewModifier(unit, nil, "modifier_animation_freeze", {duration=duration}) else unit:AddNewModifier(unit, nil, "modifier_animation_freeze", {}) end end function UnfreezeAnimation(unit) unit:RemoveModifierByName("modifier_animation_freeze") end function EndAnimation(unit) unit._animationEnd = GameRules:GetGameTime() unit:RemoveModifierByName("modifier_animation") unit:RemoveModifierByName("modifier_animation_translate") end function AddAnimationTranslate(unit, translate) if translate == nil or _ANIMATION_TRANSLATE_TO_CODE[translate] == nil then print("[ANIMATIONS.lua] ERROR, no translate-code found for '" .. translate .. "'. This translate may be misspelled or need to be added to the enum manually.") return end unit:AddNewModifier(unit, nil, "modifier_animation_translate_permanent", {duration=duration, translate=translate}) unit:SetModifierStackCount("modifier_animation_translate_permanent", unit, _ANIMATION_TRANSLATE_TO_CODE[translate]) end function RemoveAnimationTranslate(unit) unit:RemoveModifierByName("modifier_animation_translate_permanent") end GameRules.StartAnimation = StartAnimation GameRules.EndAnimation = EndAnimation GameRules.AddAnimationTranslate = AddAnimationTranslate GameRules.RemoveAnimationTranslate = RemoveAnimationTranslate ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/attachments.lua ================================================ ATTACHMENTS_VERSION = "1.00" --[[ Lua-controlled Frankenstein Attachments Library by BMD Installation -"require" this file inside your code in order to gain access to the Attachments global table. -Optionally require "libraries/notifications" before this file so that the Attachment Configuration GUI can display messages via the Notifications library. -Ensure that this file is placed in the vscripts/libraries path -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. -Ensure that barebones_attachments.xml is included in your custom_ui_manifest.xml with -Finally, include the "attachments.txt" in your scripts directory if you have a pre-build database of attachment settings. Library Usage -The library when required in loads in the "scripts/attachments.txt" file containing the attachment properties database for use during your game mode. -Attachment properties are specified as a 3-tuple of unit model name, attachment point string, and attachment prop model name. -Ex: ("models/heroes/antimage/antimage.vmdl" // "attach_hitloc" // "models/items/axe/weapon_heavy_cutter.vmdl") -Optional particles can be specified in the "Particles" block of attachmets.txt. -To attach a prop to a unit, use the Attachments:AttachProp(unit, attachPoint, model[, scale[, properties] ]) function -Ex: Attachments:AttachProp(unit, "attach_hitloc", "models/items/axe/weapon_heavy_cutter.vmdl", 1.0) -This will create the prop and retrieve the properties from the database to attach it to the provided unit -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 -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. -It is possible not to use the attachment database, but to instead provide the properties directly in the 'properties' parameter. -This properties table will look like: { pitch = 45.0, yaw = 55.0, roll = 65.0, XPos = 10.0, YPos = -10.0, ZPos = -33.0, Animation = "idle_hurt" } -To retrieve the currently attached prop entity, you can call Attachments:GetCurrentAttachment(unit, attachPoint) -Ex: local prop = Attachments:AttachProp(unit, "attach_hitloc") -Calling prop:RemoveSelf() will automatically detach the prop from the unit -To access the loaded Attachment database directly (for reading properties directly), you can call Attachments:GetAttachmentDatabase() Attachment Configuration Usage -In tools-mode, execute "attachment_configure " to activate the attachment configuration GUI for setting up the attachment database. -See https://www.youtube.com/watch?v=PS1XmHGP3sw for an example of how to generally use the GUI -The Load button will reload the database from disk and update the current attach point/prop model if values are stored therein. -The Hide button will hide/remove the current atatach point/prop model being displayed -The Save button will save the current properties as well as any other adjusted properties in the attachment database to disk. -Databases will be saved to the scripts/attachments.txt file of the addon you set when calling the attachment_configure command. -More detail to come... Notes -"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" -Attached props will automatically scale when the parent unit/models are scaled, so rescaling individual props after attachment is not necessary. -This library requires that the "libraries/timers.lua" be present in your vscripts directory. Examples: --Attach an Axe axe model to the "attach_hitloc" to a given unit at a 1.0 Scale. Attachments:AttachProp(unit, "attach_hitloc", "models/items/axe/weapon_heavy_cutter.vmdl", 1.0) --For GUI use, see https://www.youtube.com/watch?v=PS1XmHGP3sw ]] --LinkLuaModifier( "modifier_animation_freeze", "libraries/modifiers/modifier_animation_freeze.lua", LUA_MODIFIER_MOTION_NONE ) LinkLuaModifier( "modifier_animation_freeze_stun", "libraries/attachments.lua", LUA_MODIFIER_MOTION_NONE ) modifier_animation_freeze_stun = class({}) function modifier_animation_freeze_stun:OnCreated(keys) end function modifier_animation_freeze_stun:GetAttributes() return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE --+ MODIFIER_ATTRIBUTE_MULTIPLE end function modifier_animation_freeze_stun:IsHidden() return true end function modifier_animation_freeze_stun:IsDebuff() return false end function modifier_animation_freeze_stun:IsPurgable() return false end function modifier_animation_freeze_stun:CheckState() local state = { [MODIFIER_STATE_FROZEN] = true, [MODIFIER_STATE_STUNNED] = true, } return state end -- Drop out of self-include to prevent execution of timers library and other code in modifier lua VM environment if not Entities or not Entities.CreateByClassname then return end require('libraries/timers') local Notify = function(player, msg, duration) duration = duration or 2 if Notifications then local table = {text=msg, duration=duration, style={color="red"}} Notifications:Bottom(player, table) else print('[Attachments.lua] ' .. msg) end end function WriteKV(file, firstLine, t, indent, done) if type(t) ~= "table" then return end done = done or {} done[t] = true indent = indent or 1 file:write(string.rep ("\t", indent-1) .. "\"" .. firstLine .. "\"\n") file:write(string.rep ("\t", indent-1) .. "{\n") for k,value in pairs(t) do if type(value) == "table" and not done[value] then done [value] = true WriteKV (file, k, value, indent + 1, done) elseif type(value) == "userdata" and not done[value] then --skip userdata else file:write(string.rep ("\t", indent) .. "\"" .. tostring(k) .. "\"\t\t\"" .. tostring(value) .. "\"\n") end end file:write(string.rep ("\t", indent-1) .. "}\n") end if not Attachments then Attachments = class({}) end function Attachments:start() local src = debug.getinfo(1).source --print(src) self.gameDir = "" self.addonName = "" if IsInToolsMode() then if src:sub(2):find("(.*dota 2 beta[\\/]game[\\/]dota_addons[\\/])([^\\/]+)[\\/]") then self.gameDir, self.addonName = string.match(src:sub(2), "(.*dota 2 beta[\\/]game[\\/]dota_addons[\\/])([^\\/]+)[\\/]") --print('[attachments] ', self.gameDir) --print('[attachments] ', self.addonName) self.initialized = true self.activated = false self.dbFilePath = nil self.currentAttach = {} self.hiddenCosmetics = {} self.doAttach = true self.doSphere = false self.attachDB = LoadKeyValues("scripts/attachments.txt") if IsInToolsMode() then print('[attachments] Tools Mode') SendToServerConsole("dota_combine_models 0") Convars:RegisterCommand( "attachment_configure", Dynamic_Wrap(Attachments, 'ActivateAttachmentSetup'), "Activate Attachment Setup", FCVAR_CHEAT ) end else print("[attachments] RELOADING") SendToServerConsole("script_reload_code " .. src:sub(2)) end else self.initialized = true self.activated = false self.dbFilePath = nil self.currentAttach = {} self.hiddenCosmetics = {} self.doAttach = true self.doSphere = false self.attachDB = LoadKeyValues("scripts/attachments.txt") end end function Attachments:ActivateAttachmentSetup() addon = Attachments.addonName --[[if addon == nil or addon == "" then print("[Attachments.lua] Addon name must be specified.") return end]] if not io then print("[Attachments.lua] Attachments Setup is only available in tools mode.") return end if not Attachments.activated then local file = io.open("../../dota_addons/" .. addon .. "/scripts/attachments.txt", 'r') if not file and Attachments.dbFilePath == nil then print("[Attachments.lua] Cannot find file 'dota_addons/" .. addon .. "/scripts/attachments.txt'. Re-execute the console command to force create the file.") Attachments.dbFilePath = "" return end Attachments.dbFilePath = "../../dota_addons/" .. addon .. "/scripts/attachments.txt" if not file then file = io.open(Attachments.dbFilePath, 'w') WriteKV(file, "Attachments", {}) print("[Attachments.lua] Created file: 'dota_addons/" .. addon .. "/scripts/attachments.txt'.") end file:close() CustomGameEventManager:RegisterListener("Attachment_DoSphere", Dynamic_Wrap(Attachments, "Attachment_DoSphere")) CustomGameEventManager:RegisterListener("Attachment_DoAttach", Dynamic_Wrap(Attachments, "Attachment_DoAttach")) CustomGameEventManager:RegisterListener("Attachment_Freeze", Dynamic_Wrap(Attachments, "Attachment_Freeze")) CustomGameEventManager:RegisterListener("Attachment_UpdateAttach", Dynamic_Wrap(Attachments, "Attachment_UpdateAttach")) CustomGameEventManager:RegisterListener("Attachment_SaveAttach", Dynamic_Wrap(Attachments, "Attachment_SaveAttach")) CustomGameEventManager:RegisterListener("Attachment_LoadAttach", Dynamic_Wrap(Attachments, "Attachment_LoadAttach")) CustomGameEventManager:RegisterListener("Attachment_HideAttach", Dynamic_Wrap(Attachments, "Attachment_HideAttach")) CustomGameEventManager:RegisterListener("Attachment_UpdateUnit", Dynamic_Wrap(Attachments, "Attachment_UpdateUnit")) CustomGameEventManager:RegisterListener("Attachment_HideCosmetic", Dynamic_Wrap(Attachments, "Attachment_HideCosmetic")) Attachments.activated = true Attachments.doSphere = true end local ply = Convars:GetCommandClient() CustomGameEventManager:Send_ServerToPlayer(ply, "activate_attachment_configuration", {}) end function Attachments:Attachment_DoSphere(args) --DebugPrint('Attachment_DoSphere') --DebugPrintTable(args) Attachments.doSphere = args.doSphere == 1 Attachments:Attachment_UpdateAttach(args) end function Attachments:Attachment_DoAttach(args) --DebugPrint('Attachment_DoAttach') --DebugPrintTable(args) Attachments.doAttach = args.doAttach == 1 Attachments:Attachment_UpdateAttach(args) end function Attachments:Attachment_Freeze(args) --DebugPrint('Attachment_Freeze') --DebugPrintTable(args) local unit = EntIndexToHScript(args.index) if not unit then Notify(args.PlayerID, "Invalid Unit.") return end if args.freeze == 1 then unit:AddNewModifier(unit, nil, "modifier_animation_freeze_stun", {}) unit:SetForwardVector(Vector(0,-1,0)) --unit:AddNewModifier(unit, nil, "modifier_stunned", {}) else unit:RemoveModifierByName("modifier_animation_freeze_stun") --unit:RemoveModifierByName("modifier_stunned") end end function Attachments:Attachment_UpdateAttach(args) DebugPrint('Attachment_UpdateAttach') DebugPrintTable(args) local unit = EntIndexToHScript(args.index) if not unit then Notify(args.PlayerID, "Invalid Unit.") return end local properties = args.properties local unitModel = unit:GetModelName() local attach = properties.attach local model = properties.model properties.attach = nil properties.model = nil if not string.find(model, "%.vmdl$") then Notify(args.PlayerID, "Prop model must end in '.vmdl'.") return end local point = unit:ScriptLookupAttachment(attach) if attach ~= "attach_origin" and point == 0 then Notify(args.PlayerID, "Attach point '" .. attach .. "' not found.") return end local db = Attachments.attachDB if not db[unitModel] then db[unitModel] = {} end if not db[unitModel][attach] then db[unitModel][attach] = {} end local oldProperties = db[unitModel][attach][model] or {} -- update old properties for k,v in pairs(properties) do oldProperties[k] = v end properties = oldProperties db[unitModel][attach][model] = properties if not Attachments.currentAttach[args.index] then Attachments.currentAttach[args.index] = {} end local prop = Attachments.currentAttach[args.index][attach] if prop and IsValidEntity(prop) then prop:RemoveSelf() end --Attachments.currentAttach[args.index][attach] = Attachments:AttachProp(unit, attach, model, properties.scale) Attachments:AttachProp(unit, attach, model, properties.scale) end function Attachments:Attachment_SaveAttach(args) --DebugPrint('Attachment_SaveAttach') --DebugPrintTable(args) local unit = EntIndexToHScript(args.index) if not unit then Notify(args.PlayerID, "Invalid Unit.") return end local properties = args.properties local unitModel = unit:GetModelName() local attach = properties.attach local model = properties.model Attachments:Attachment_UpdateAttach(args) if not io then print("[Attachments.lua] Attachments Setup is only available in tools mode.") return end if Attachments.dbFilePath == nil or Attachments.dbFilePath == "" then print("[Attachments.lua] Attachments database file must be set.") return end local file = io.open(Attachments.dbFilePath, 'w') WriteKV(file, "Attachments", Attachments.attachDB) file:close(); end function Attachments:Attachment_LoadAttach(args) --DebugPrint('Attachment_LoadAttach') --DebugPrintTable(args) local unit = EntIndexToHScript(args.index) if not unit then Notify(args.PlayerID, "Invalid Unit.") return end local properties = args.properties local unitModel = unit:GetModelName() local attach = properties.attach local model = properties.model if not io then print("[Attachments.lua] Attachments Setup is only available in tools mode.") return end Attachments.attachDB = LoadKeyValues("scripts/attachments.txt") local db = Attachments.attachDB if not db[unitModel] or not db[unitModel][attach] or not db[unitModel][attach][model] then Notify(args.PlayerID, "No saved attach found for '" .. attach .. "'' / '" .. model .. "' on this unit.") return end local ply = PlayerResource:GetPlayer(args.PlayerID) local properties = {} for k,v in pairs(db[unitModel][attach][model]) do properties[k] = v end properties.attach = attach properties.model = model CustomGameEventManager:Send_ServerToPlayer(ply, "attachment_update_fields", properties) end function Attachments:Attachment_HideAttach(args) --DebugPrint('Attachment_HideAttach') --DebugPrintTable(args) local unit = EntIndexToHScript(args.index) if not unit then Notify(args.PlayerID, "Invalid Unit.") return end local properties = args.properties local attach = properties.attach local currentAttach = Attachments.currentAttach if not currentAttach[args.index] or not currentAttach[args.index][attach] then Notify(args.PlayerID, "No Current Attach to Hide for '" .. attach .. "'.") return end local prop = currentAttach[args.index][attach] if prop and IsValidEntity(prop) then prop:RemoveSelf() end currentAttach[args.index][attach] = nil end function Attachments:Attachment_UpdateUnit(args) --DebugPrint('Attachment_UpdateUnit') --DebugPrintTable(args) local unit = EntIndexToHScript(args.index) if not unit then Notify(args.PlayerID, "Invalid Unit.") return end local cosmetics = {} for i,child in ipairs(unit:GetChildren()) do if child:GetClassname() == "dota_item_wearable" and child:GetModelName() ~= "" then table.insert(cosmetics, child:GetModelName()) end end --DebugPrintTable(cosmetics) CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(args.PlayerID), "attachment_cosmetic_list", cosmetics ) end function Attachments:Attachment_HideCosmetic(args) --DebugPrint('Attachment_HideCosmetic') --DebugPrintTable(args) local unit = EntIndexToHScript(args.index) if not unit then Notify(args.PlayerID, "Invalid Unit.") return end local model = args.model; local cosmetics = {} for i,child in ipairs(unit:GetChildren()) do if child:GetClassname() == "dota_item_wearable" and child:GetModelName() == model then local hiddenCosmetics = Attachments.hiddenCosmetics[args.index] if not hiddenCosmetics then hiddenCosmetics = {} Attachments.hiddenCosmetics[args.index] = hiddenCosmetics end if hiddenCosmetics[model] then child:RemoveEffects(EF_NODRAW) hiddenCosmetics[model] = nil else --print("HIDING") child:AddEffects(EF_NODRAW) hiddenCosmetics[model] = true end end end end function Attachments:GetAttachmentDatabase() return Attachments.attachDB end function Attachments:GetCurrentAttachment(unit, attachPoint) if not Attachments.currentAttach[unit:entindex()] then return nil end local prop = Attachments.currentAttach[unit:entindex()][attachPoint] return prop end function Attachments:AttachProp(unit, attachPoint, model, scale, properties) local unitModel = unit:GetModelName() local propModel = model local db = Attachments.attachDB if propModel.GetModelName then propModel = propModel:GetModelName() end if not properties then if not db[unitModel] or not db[unitModel][attachPoint] or not db[unitModel][attachPoint][propModel] then print("[Attachments.lua] No attach found in attachment database for '" .. unitModel .. "', '" .. attachPoint .. "', '" .. propModel .. "'") return end end local attach = unit:ScriptLookupAttachment(attachPoint) local scale = scale or db[unitModel][attachPoint][propModel]['scale'] or 1.0 properties = properties or db[unitModel][attachPoint][propModel] local pitch = tonumber(properties.pitch) local yaw = tonumber(properties.yaw) local roll = tonumber(properties.roll) --local angleSpace = QAngle(properties.QX, properties.QY, properties.QZ) local offset = Vector(tonumber(properties.XPos), tonumber(properties.YPos), tonumber(properties.ZPos)) * scale * unit:GetModelScale() local animation = properties.Animation --offset = RotatePosition(Vector(0,0,0), RotationDelta(angleSpace, QAngle(0,0,0)), offset) --local new_prop = Entities:CreateByClassname("prop_dynamic") local prop = nil if model.GetName and IsValidEntity(model) then prop = model else prop = SpawnEntityFromTableSynchronous("prop_dynamic", {model = propModel, DefaultAnim=animation, targetname=DoUniqueString("prop_dynamic")}) prop:SetModelScale(scale * unit:GetModelScale()) end local angles = unit:GetAttachmentAngles(attach) angles = QAngle(angles.x, angles.y, angles.z) --angles = RotationDelta(angles,QAngle(pitch, yaw, roll)) --print(prop:GetAngles()) --print(angles) --print(RotationDelta(RotationDelta(angles,QAngle(pitch, yaw, roll)),QAngle(0,0,0))) --angles = QAngle(pitch, yaw, roll) if not Attachments.doAttach then angles = QAngle(pitch, yaw, roll) end angles = RotateOrientation(angles,RotationDelta(QAngle(pitch, yaw, roll), QAngle(0,0,0))) --print('angleSpace = QAngle(' .. angles.x .. ', ' .. angles.y .. ', ' .. angles.z .. ')') local attach_pos = unit:GetAttachmentOrigin(attach) --attach_pos = attach_pos + RotatePosition(Vector(0,0,0), QAngle(angles.x,angles.y,angles.z), offset) attach_pos = attach_pos + RotatePosition(Vector(0,0,0), angles, offset) prop:SetAbsOrigin(attach_pos) prop:SetAngles(angles.x,angles.y,angles.z) -- Attach and store it if Attachments.doAttach then if attachPoint == "attach_origin" then prop:SetParent(unit, "") else prop:SetParent(unit, attachPoint) end end -- From Noya local particle_data = nil if db['Particles'] then particle_data = db['Particles'][propModel] end if particle_data then for particleName,control_points in pairs(particle_data) do prop.fx = ParticleManager:CreateParticle(particleName, PATTACH_ABSORIGIN, prop) -- Loop through the Control Point Entities for k,ent_point in pairs(control_points) do ParticleManager:SetParticleControlEnt(prop.fx, tonumber(k), prop, PATTACH_POINT_FOLLOW, ent_point, prop:GetAbsOrigin(), true) end end end if Attachments.timer then Timers:RemoveTimer(Attachments.timer) end Attachments.timer = Timers:CreateTimer(function() if Attachments.doSphere then if unit and IsValidEntity(unit) then DebugDrawSphere(unit:GetAttachmentOrigin(attach), Vector(255,255,255), 100, 15, true, .03) end if prop and IsValidEntity(prop) then DebugDrawSphere(prop:GetAbsOrigin(), Vector(0,0,0), 100, 15, true, .03) end end return .03 end) if not Attachments.currentAttach[unit:GetEntityIndex()] then Attachments.currentAttach[unit:GetEntityIndex()] = {} end Attachments.currentAttach[unit:GetEntityIndex()][attachPoint] = prop return prop end if not Attachments.initialized then Attachments:start() end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/containers.lua ================================================ CONTAINERS_VERSION = "0.80" require('libraries/timers') require('libraries/playertables') local ID_BASE = "cont_" FORCE_NIL = false CONTAINERS_DEBUG = IsInToolsMode() -- Should we print debugging prints for containers --[[ Containers API Calls Containers:AddItemToUnit(unit, item) Containers:CreateContainer(cont) Containers:CreateShop(cont) Containers:DeleteContainer(c, deleteContents) Containers:DisplayError(pid, message) Containers:EmitSoundOnClient(pid, sound) Containers:GetDefaultInventory(unit) Containers:GetEntityContainers(entity) Containers:SetDefaultInventory(unit, container) Containers:SetItemLimit(limit) Containers:SetRangeAction(unit, tab) Containers:UsePanoramaInventory(useInventory) Containers:OnButtonPressed(playerID, container, unit, buttonNumber, buttonName) Containers:OnCloseClicked(playerID, container, unit) Containers:OnDragFrom(playerID, container, unit, item, fromSlot, toContainer, toSlot) Containers:OnDragTo(playerID, container, unit, item, fromSlot, toContainer, toSlot) Containers:OnDragWithin(playerID, container, unit, item, fromSlot, toSlot) Containers:OnDragWorld(playerID, container, unit, item, slot, position, entity) Containers:OnLeftClick(playerID, container, unit, item, slot) Containers:OnRightClick(playerID, container, unit, item, slot) Container Creation: Containers:CreateContainer({ layout = {3,2,2}, skins = {"Skin1", "Another"}, --{} buttons = {}, -- {"Take All"} headerText = "#lootbox", draggable = true, position = "200px 200px 0px", -- "30% 40%" -- "mouse" -- "entity" equipment = true, range = 250, closeOnOrder = true, forceOwner = false, forcePurchaser = false, entity = PlayerResource:GetSelectedHeroEntity(0), pids = {0}, -- {[2]=true, [4]=true} items = {}, -- {CreateItem(...), CreateItem(...)} -- {[3]=CreateItem(...), [5]=CreateItem(...):GetEntityIndex()} cantDragFrom = {}, -- {3,5} cantDragTo = {}, layoutFile = "file://{resources}/layout/custom_game/containers/alt_container_example.xml", nil->default OnLeftClick = function(playerID, container, unit, item, slot) ... end, -- nil->default, false->do nothing OnRightClick = function(playerID, container, unit, item, slot) ... end, -- nil->default, false->do nothing OnDragFrom = function(playerID, container, unit, item, fromSlot, toContainer, toSlot) ... end, -- nil->default, false->do nothing OnDragTo = function(playerID, container, unit, item, fromSlot, toContainer, toSlot) ... end, -- nil->default, false->do nothing OnDragWithin = function(playerID, container, unit, item, fromSlot, toSlot) ... end, -- nil->default, false->do nothing OnDragWorld = function(playerID, container, unit, item, slot, position, entity) ... end, -- nil->default, false->do nothing OnCloseClicked = function(playerID, container, unit) ... end, -- nil->default, false->do nothing OnButtonPressed = function(playerID, container, unit, buttonNumber, buttonName) ... end, -- nil->default, false->do nothing OnEntityOrder = function(playerID, container, unit, target), -- nil->do nothing OnEntityDrag = function(playerID, container, unit, target, fromContainer, item) ... end, -- nil->do nothing OnClose = function(playerID, container) ... end, -- nil->default OnOpen = function(playerID, container) ... end, -- nil->default, OnSelect = function(playerID, container, selectedEntity) ... end, -- nil->default, OnDeselect = function(playerID, container, deselectedEntity) ... end, -- nil->default,, -- return true to allow the item add event. slot is -1 if no slot is specified. AddItemFilter = function(container, item, slot), -- nil->no filter -- See containers/container_events.js for javascript callback registration and handling -- nil means to use the default OnLeftClickJS = "ExampleLeftClick", OnRightClickJS = "ExampleRightClick", OnDoubleClickJS = "ExampleDoubleClick", OnMouseOutJS = "ExampleMouseOut", OnMouseOverJS = "ExampleMouseOver", OnButtonPressedJS = "ExampleButtonPressed", OnCloseClickedJS = "ExampleCloseClicked", )} Container Functions: c:ActivateItem(unit, item, playerID) c:AddItem(item, slot, column, bypassFilter) c:AddSkin(skin) c:AddSubscription(pid) c:CanDragFrom(pid) c:CanDragTo(pid) c:CanDragWithin(pid) c:ClearSlot(slot) c:Close(pid) c:ContainsItem(item) c:Delete(deleteContents) c:GetAllItems() c:GetAllOpen() c:GetButtonName(number) c:GetButtons() c:GetCanDragFromPlayers() c:GetCanDragToPlayers() c:GetCanDragWithinPlayers() c:GetContainerIndex() c:GetEntity() c:GetForceOwner() c:GetForcePurchaser() c:GetHeaderText() c:GetItemInRowColumn(row, column) c:GetItemInSlot(slot) c:GetItemsByName(name) c:GetLayout() c:GetNumItems() c:GetRange() c:GetRowColumnForItem(item) c:GetSize() c:GetSkins() c:GetSlotForItem(item) c:GetSubscriptions() c:HasSkin(skin) c:IsCloseOnOrder() c:IsDraggable() c:IsEquipment() c:IsInventory() c:IsOpen(pid) c:IsSubscribed(pid) c:OnButtonPressed(fun) c:OnButtonPressedJS(jsCallback) c:OnClose(fun) c:OnCloseClicked(fun) c:OnCloseClickedJS(jsCallback) c:OnDeselect(fun) c:OnDoubleClickJS(jsCallback) c:OnDragFrom(fun) c:OnDragTo(fun) c:OnDragWithin(fun) c:OnDragWorld(fun) c:OnEntityDrag(fun) c:OnEntityOrder(fun) c:OnLeftClick(fun) c:OnLeftClickJS(jsCallback) c:OnMouseOutJS(jsCallback) c:OnMouseOverJS(jsCallback) c:OnOpen(fun) c:OnRightClick(fun) c:OnRightClickJS(jsCallback) c:OnSelect(fun) c:Open(pid) c:RemoveButton(number) c:RemoveItem(item) c:RemoveSkin(skin) c:RemoveSubscription(pid) c:SetButton(number, name) c:SetCanDragFrom(pid, canDrag) c:SetCanDragTo(pid, canDrag) c:SetCanDragWithin(pid, canDrag) c:SetCloseOnOrder(close) c:SetDraggable(drag) c:SetEntity(entity) c:SetEquipment(equip) c:SetForceOwner(owner) c:SetForcePurchaser(purchaser) c:SetHeaderText(header) c:SetLayout(layout, removeOnContract) c:SetRange(range) c:SwapItems(item1, item2, allowCombine) c:SwapSlots(slot1, slot2, allowCombine) Shop Creation: Containers:CreateShop({ -- Same as CreateContainer but with the additions of items = {}, -- {CreateItem(...), CreateItem(...)} -- {[3]=CreateItem(...), [5]=CreateItem(...):GetEntityIndex()} prices = {}, -- {500, 800} -- {[3]=500, [5]=800} stocks = {}, -- {[5]=10} } Shop Functions: -- Same as a Container but with the additions of shop:BuyItem(playerID, unit, item) shop:GetPrice(item) shop:GetStock(item) shop:SetPrice(item, price) shop:SetStock(item, stock) ]] LinkLuaModifier( "modifier_shopkeeper", "libraries/modifiers/modifier_shopkeeper.lua", LUA_MODIFIER_MOTION_NONE ) --"dota_hud_error_not_enough_gold" "Not Enough Gold" --"dota_hud_error_item_out_of_stock" "Item is out of Stock" --"dota_hud_error_cant_pick_up_item" "Inventory Full" --"dota_hud_error_cant_sell_shop_not_in_range" "No Shop In Range" --"dota_hud_error_target_out_of_range" "Target Out Of Range" --"dota_hud_error_unit_command_restricted" "Can't Act" --"DOTA_FantasyTeamCreate_Error_Header" "Error" --"DOTA_Trading_Response_UnknownError" "Unknown Error" -- mango can't be activated from outside inventory if it ever touched it -- dust crash for same reason -- dagon no particles/effects for same reason -- soul ring crash for same reason -- bottle also doesn't activate for same reason -- travels don't work, TP either probably -- armlet doesn't activate at all -- euls has targeting issues -- aghs probably not for sure -- treads don't work in equipment local ApplyPassives = nil ApplyPassives = function(container, item, entOverride) local ent = entOverride or container:GetEntity() if not ent or not ent.AddNewModifier then return end if container.appliedPassives[item:GetEntityIndex()] then return end local passives = Containers.itemPassives[item:GetAbilityName()] if passives then for _,passive in ipairs(passives) do -- check for previous buffs from this exact item local buffs = ent:FindAllModifiersByName(passive) for _, buff in ipairs(buffs) do if buff:GetAbility() == item then Timers:CreateTimer(function() --print("FOUND, rerunning until removed") ApplyPassives(container, item, entOverride) end) return end end end container.appliedPassives[item:GetEntityIndex()] = {} for _,passive in ipairs(passives) do item:ApplyDataDrivenModifier(ent, ent, passive, {}) buffs = ent:FindAllModifiersByName(passive) for _, buff in ipairs(buffs) do if buff:GetAbility() == item then table.insert(container.appliedPassives[item:GetEntityIndex()], buff) break end end end else passives = item:GetIntrinsicModifierName() if passives then local buff = ent:AddNewModifier(ent, item, passives, {}) container.appliedPassives[item:GetEntityIndex()] = {buff} end end end local GetItem = function(item) if type(item) == "number" then return EntIndexToHScript(item) elseif item and IsValidEntity(item) and item.IsItem and item:IsItem() then return item end end local unitInventory = {unit = nil, range = 150, allowStash = false, canDragFrom = {}, canDragTo = {}, forceOwner = nil, forcePurchaser = nil} function unitInventory:AddItem(item, slot) item = GetItem(item) local unit = self.unit local findStack = slot == nil slot = slot or 0 local size = self:GetSize() if slot > size then print("[containers.lua] Request to add item in slot " .. slot .. " -- exceeding dota inventory size " .. size) return false end local full = true local stack = false for i=0,size do local sItem = unit:GetItemInSlot(i) if not sItem then full = false elseif sItem:GetAbilityName() == item:GetAbilityName() and item:IsStackable() then stack = true end end if full and not stack then return false end unit:AddItem(item) Timers:CreateTimer(function() if not IsValidEntity(item) then return end unit:DropItemAtPositionImmediate(item, unit:GetAbsOrigin()) local drop = nil for i=GameRules:NumDroppedItems()-1,0,-1 do drop = GameRules:GetDroppedItem(i) if drop:GetContainedItem() == item then drop:RemoveSelf() break end end unit:AddItem(item) if not findStack then for i=0,5 do if unit:GetItemInSlot(i) == item then unit:SwapItems(i,slot) if self.forceOwner then item:SetOwner(self.forceOwner) elseif self.forceOwner == false then item:SetOwner(nil) end if self.forcePurchaser then item:SetPurchaser(self.forcePurchaser) elseif self.forceOwner == false then item:SetPurchaser(nil) end end end end end) if not findStack then for i=0,5 do if unit:GetItemInSlot(i) == item then unit:SwapItems(i,slot) if self.forceOwner then item:SetOwner(self.forceOwner) elseif self.forceOwner == false then item:SetOwner(nil) end if self.forcePurchaser then item:SetPurchaser(self.forcePurchaser) elseif self.forceOwner == false then item:SetPurchaser(nil) end return true end end end return true end function unitInventory:ClearSlot(slot) local item = self.unit:GetItemInSlot(slot) if item then self:RemoveItem(item) end end function unitInventory:RemoveItem(item) item = GetItem(item) local unit = self.unit if self:ContainsItem(item) then unit:DropItemAtPositionImmediate(item, unit:GetAbsOrigin()) local drop = nil for i=GameRules:NumDroppedItems()-1,0,-1 do drop = GameRules:GetDroppedItem(i) if drop:GetContainedItem() == item then drop:RemoveSelf() break end end end end function unitInventory:ContainsItem(item) item = GetItem(item) if not item then return false end local unit = self.unit for i=0,11 do if item == unit:GetItemInSlot(i) then return true end end return false end function unitInventory:GetSize() if self.allowStash then return 11 else return 5 end end function unitInventory:GetItemInSlot(slot) return self.unit:GetItemInSlot(slot) end function unitInventory:GetRange() return self.range end function unitInventory:GetEntity() return self.unit end function unitInventory:IsInventory() return true end if not Containers then Containers = class({}) end function Containers:start() if not __ACTIVATE_HOOK then __ACTIVATE_HOOK = {funcs={}} setmetatable(__ACTIVATE_HOOK, { __call = function(t, func) table.insert(t.funcs, func) end }) debug.sethook(function(...) local info = debug.getinfo(2) local src = tostring(info.short_src) local name = tostring(info.name) if name ~= "__index" then if string.find(src, "addon_game_mode") then if GameRules:GetGameModeEntity() then for _, func in ipairs(__ACTIVATE_HOOK.funcs) do local status, err = pcall(func) if not status then print("__ACTIVATE_HOOK callback error: " .. err) end end debug.sethook(nil, "c") end end end end, "c") end __ACTIVATE_HOOK(function() local mode = GameRules:GetGameModeEntity() mode:SetExecuteOrderFilter(Dynamic_Wrap(Containers, 'OrderFilter'), Containers) Containers.oldFilter = mode.SetExecuteOrderFilter mode.SetExecuteOrderFilter = function(mode, fun, context) --print('SetExecuteOrderFilter', fun, context) Containers.nextFilter = fun Containers.nextContext = context end Containers.initialized = true end) self.initialized = false self.containers = {} self.nextID = 0 self.closeOnOrders = {} for i=0,DOTA_MAX_TEAM_PLAYERS do self.closeOnOrders[i] = {} end CustomNetTables:SetTableValue("containers_lua", "use_panorama_inventory", {value=false}) self.nextFilter = nil self.nextContext = nil self.disableItemLimit = false self.itemKV = LoadKeyValues("scripts/npc/items.txt") self.itemIDs = {} self.entityShops = {} self.defaultInventories = {} self.rangeActions = {} self.previousSelection = {} self.entityContainers = {} for k,v in pairs(LoadKeyValues("scripts/npc/npc_abilities_override.txt")) do if self.itemKV[k] then self.itemKV[k] = v end end for k,v in pairs(LoadKeyValues("scripts/npc/npc_items_custom.txt")) do if not self.itemKV[k] then self.itemKV[k] = v end end for k,v in pairs(self.itemKV) do if type(v) == "table" and v.ID then self.itemIDs[v.ID] = k end end self.itemPassives = {} for id,itemName in pairs(Containers.itemIDs) do local kv = Containers.itemKV[itemName] if kv.BaseClass == "item_datadriven" then self.itemPassives[itemName] = {} if kv.Modifiers then local mods = kv.Modifiers for modname, mod in pairs(mods) do if mod.Passive == 1 then table.insert(self.itemPassives[itemName], modname) end end end end end self.oldUniversal = GameRules.SetUseUniversalShopMode self.universalShopMode = false GameRules.SetUseUniversalShopMode = function(gamerules, universal) Containers.universalShopMode = universal Containers.oldUniversal(gamerules, universal) end if GameRules.FDesc then GameRules.FDesc["SetUseUniversalShopMode"] = nil end CustomGameEventManager:RegisterListener("Containers_EntityShopRange", Dynamic_Wrap(Containers, "Containers_EntityShopRange")) CustomGameEventManager:RegisterListener("Containers_Select", Dynamic_Wrap(Containers, "Containers_Select")) CustomGameEventManager:RegisterListener("Containers_HideProxy", Dynamic_Wrap(Containers, "Containers_HideProxy")) CustomGameEventManager:RegisterListener("Containers_OnLeftClick", Dynamic_Wrap(Containers, "Containers_OnLeftClick")) CustomGameEventManager:RegisterListener("Containers_OnRightClick", Dynamic_Wrap(Containers, "Containers_OnRightClick")) CustomGameEventManager:RegisterListener("Containers_OnDragFrom", Dynamic_Wrap(Containers, "Containers_OnDragFrom")) CustomGameEventManager:RegisterListener("Containers_OnDragWorld", Dynamic_Wrap(Containers, "Containers_OnDragWorld")) CustomGameEventManager:RegisterListener("Containers_OnCloseClicked", Dynamic_Wrap(Containers, "Containers_OnCloseClicked")) CustomGameEventManager:RegisterListener("Containers_OnButtonPressed", Dynamic_Wrap(Containers, "Containers_OnButtonPressed")) CustomGameEventManager:RegisterListener("Containers_OnSell", Dynamic_Wrap(Containers, "Containers_OnSell")) Timers:CreateTimer(function() for id,action in pairs(Containers.rangeActions) do local unit = action.unit if unit then if action.entity and not IsValidEntity(action.entity) then Containers.rangeActions[id] = nil else local range = action.range if not range and action.container then range = action.container:GetRange() end if not range then range = 150 end local range2 = range * range local pos = action.position or action.entity:GetAbsOrigin() local dist = unit:GetAbsOrigin() - pos if (dist.x * dist.x + dist.y * dist.y) <= range2 then local status, err = pcall(action.action, action.playerID, action.container, unit, action.entity or action.position, action.fromContainer or action.orderType, action.item) if not status then print('[containers.lua] RangeAction failure:' .. err) end Containers.rangeActions[id] = nil end end else Containers.rangeActions[id] = nil end end return .01 end) end local closeOnOrderSkip = { [DOTA_UNIT_ORDER_PURCHASE_ITEM] = true, [DOTA_UNIT_ORDER_GLYPH] = true, [DOTA_UNIT_ORDER_HOLD_POSITION] = true, [DOTA_UNIT_ORDER_STOP] = true, [DOTA_UNIT_ORDER_EJECT_ITEM_FROM_STASH] = true, [DOTA_UNIT_ORDER_DISASSEMBLE_ITEM] = true, [DOTA_UNIT_ORDER_PING_ABILITY] = true, [DOTA_UNIT_ORDER_TRAIN_ABILITY] = true, [DOTA_UNIT_ORDER_CAST_NO_TARGET] = true, [DOTA_UNIT_ORDER_CAST_TOGGLE] = true, } function Containers:AddItemToUnit(unit, item) if item and unit then local defInventory = Containers:GetDefaultInventory(unit) if defInventory then if not defInventory:AddItem(item) then CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(10), item) end else local iname = item:GetAbilityName() local exists = false local full = true for i=0,5 do local it = unit:GetItemInSlot(i) if not it then full = false elseif it:GetAbilityName() == iname then exists = true end end if not full or (full and item:IsStackable() and exists) then unit:AddItem(item) else CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(10), item) end end end end function Containers:SetItemLimit(limit) SendToServerConsole("dota_max_physical_items_purchase_limit " .. limit) end function Containers:SetDisableItemLimit(disable) if not self.initialized then print('[containers.lua] FATAL: Containers:Init() has not been initialized!') return end --self.disableItemLimit = disable end function Containers:UsePanoramaInventory(useInventory) CustomNetTables:SetTableValue("containers_lua", "use_panorama_inventory", {value=useInventory}) CustomGameEventManager:Send_ServerToAllClients("cont_use_panorama_inventory", {use=useInventory}) end function Containers:DisplayError(pid, message) local player = PlayerResource:GetPlayer(pid) if player then CustomGameEventManager:Send_ServerToPlayer(player, "cont_create_error_message", {message=message}) end end function Containers:EmitSoundOnClient(pid, sound) local player = PlayerResource:GetPlayer(pid) if player then CustomGameEventManager:Send_ServerToPlayer(player, "cont_emit_client_sound", {sound=sound}) end end function Containers:OrderFilter(order) --print('Containers:OrderFilter') --PrintTable(order) local ret = true if Containers.nextFilter then ret = Containers.nextFilter(Containers.nextContext, order) end if not ret then return false end local issuerID = order.issuer_player_id_const local queue = order.queue == 1 if issuerID == -1 then return true end -- close on order if not closeOnOrderSkip[order.order_type] then local oConts = Containers.closeOnOrders[issuerID] for id,cont in pairs(oConts) do if IsValidContainer(cont) then cont:Close(issuerID) else oConts[id] = nil end end end if not queue and order.units["0"] then Containers.rangeActions[order.units["0"]] = nil end local conts = Containers:GetEntityContainers(order.entindex_target) if order.units["0"] and #conts > 0 then local container = nil for _,cont in ipairs(conts) do if cont._OnEntityOrder then container = cont break end end if container then local unit = EntIndexToHScript(order.units["0"]) local target = EntIndexToHScript(order.entindex_target) local range = container:GetRange() or 150 local unitpos = unit:GetAbsOrigin() local diff = unitpos - target:GetAbsOrigin() local dist = diff:Length2D() local pos = unitpos if dist > range * .9 then pos = target:GetAbsOrigin() + diff:Normalized() * range * .9 end local origOrder = order.order_type if target.GetContainedItem then order.order_type = DOTA_UNIT_ORDER_MOVE_TO_POSITION order.position_x = pos.x order.position_y = pos.y order.position_z = pos.z else order.order_type = DOTA_UNIT_ORDER_MOVE_TO_TARGET end Containers.rangeActions[order.units["0"]] = { unit = unit, entity = target, range = range, playerID = issuerID, container = container, orderType = origOrder, action = container._OnEntityOrder, } end end --DOTA_UNIT_ORDER_GIVE_ITEM if order.units["0"] and order.order_type == DOTA_UNIT_ORDER_GIVE_ITEM then local unit = EntIndexToHScript(order.units["0"]) local item = EntIndexToHScript(order.entindex_ability) local target = EntIndexToHScript(order.entindex_target) local defInventory = Containers:GetDefaultInventory(target) if defInventory then order.order_type = DOTA_UNIT_ORDER_MOVE_TO_TARGET Containers.rangeActions[order.units["0"]] = { unit = unit, entity = target, range = 180, playerID = issuerID, action = function(playerID, container, unit, target) if IsValidEntity(target) and target:IsAlive() then unit:DropItemAtPositionImmediate(item, unit:GetAbsOrigin()) local drop = nil for i=GameRules:NumDroppedItems()-1,0,-1 do drop = GameRules:GetDroppedItem(i) if drop:GetContainedItem() == item then Containers:AddItemToUnit(target, item) drop:RemoveSelf() break end end end unit:Stop() end, } else return true end end if order.units["0"] and order.order_type == DOTA_UNIT_ORDER_PICKUP_ITEM then local unit = EntIndexToHScript(order.units["0"]) local physItem = EntIndexToHScript(order.entindex_target) local unitpos = unit:GetAbsOrigin() if not physItem then return false end local diff = unitpos - physItem:GetAbsOrigin() local dist = diff:Length2D() local pos = unitpos if dist > 90 then pos = physItem:GetAbsOrigin() + diff:Normalized() * 90 end local defInventory = Containers:GetDefaultInventory(unit) if defInventory then order.order_type = DOTA_UNIT_ORDER_MOVE_TO_POSITION order.position_x = pos.x order.position_y = pos.y order.position_z = pos.z Containers.rangeActions[order.units["0"]] = { unit = unit, position = physItem:GetAbsOrigin(), range = 100, playerID = issuerID, action = function(playerID, container, unit, target) if IsValidEntity(physItem) then local item = physItem:GetContainedItem() if item and defInventory:AddItem(item) then physItem:RemoveSelf() end end end, } end end if order.units["0"] and order.order_type == DOTA_UNIT_ORDER_PURCHASE_ITEM then local unit = EntIndexToHScript(order.units["0"]) local itemID = order.entindex_ability local itemName = Containers.itemIDs[itemID] local player = PlayerResource:GetPlayer(issuerID) local ownerID = issuerID --unit:GetMainControllingPlayer() local owner = PlayerResource:GetSelectedHeroEntity(ownerID) local defInventory = Containers:GetDefaultInventory(unit) if defInventory then local shops = Containers.entityShops[unit:GetEntityIndex()] or {home=false, side=false, secret=false} if not unit:IsAlive() then shops = {home=true, side=false, secret=false} end if not shops.home and not shops.side and not shops.secret then CustomGameEventManager:Send_ServerToPlayer(player, "cont_create_error_message", {reason=67}) return false end local item = CreateItem(itemName, owner, owner) local cost = item:GetCost() if not defInventory:AddItem(item) then CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(10), item) end PlayerResource:SpendGold(ownerID, cost, DOTA_ModifyGold_PurchaseItem) return false elseif Containers.disableItemLimit then if not unit:HasInventory() then unit = owner if unit == nil then return false end end local itemDefinition = Containers.itemKV[itemName] local itemSide = itemDefinition["SideShop"] == 1 local itemSecret = itemDefinition["SecretShop"] == 1 if itemDefinition["ItemPurchasable"] == 0 then return false end local toStash = true local full = true for i=0,5 do if unit:GetItemInSlot(i) == nil then full = false break end end local shops = Containers.entityShops[unit:GetEntityIndex()] or {home=false, side=false, secret=false} if not unit:IsAlive() then shops = {home=true, side=false, secret=false} end local stashPurchasingDisabled = GameRules:GetGameModeEntity():GetStashPurchasingDisabled() local universalShopMode = Containers.universalShopMode if universalShopMode then if not shops.home and not shops.side and not shops.secret then if stashPurchasingDisabled then CustomGameEventManager:Send_ServerToPlayer(player, "cont_create_error_message", {reason=67}) return false end toStash = true end else if not shops.home and not shops.side and not shops.secret then -- not in range of any shops if stashPurchasingDisabled then CustomGameEventManager:Send_ServerToPlayer(player, "cont_create_error_message", {reason=67}) return false end elseif itemSecret and shops.secret then toStash = false elseif itemSide and shops.side then toStash = false elseif shops.home and not full then toStash = false end end local item = CreateItem(itemName, owner, owner) local fullyShareStacking = Containers.itemKV[itemName]["ItemShareability"] == "ITEM_FULLY_SHAREABLE_STACKING" local dropped = {} local cost = item:GetCost() if toStash then local restore = {} local stashSlot = 11 for i=6,11 do local slot = owner:GetItemInSlot(i) if not slot then stashSlot = i break end end for i=0,5 do local slot = owner:GetItemInSlot(i) if slot and (fullyShareStacking and slot:GetAbilityName() == itemName or ((slot:GetAbilityName() == "item_ward_dispenser" or slot:GetAbilityName() == "item_ward_observer" or slot:GetAbilityName() == "item_ward_sentry")) and (itemName == "item_ward_observer" or itemName == "item_ward_sentry")) then owner:DropItemAtPositionImmediate(slot, owner:GetAbsOrigin()) for i=GameRules:NumDroppedItems()-1,0,-1 do local drop = GameRules:GetDroppedItem(i) if drop:GetContainedItem() == slot then table.insert(dropped, drop) break end end elseif slot and (slot:GetOwner() == owner or slot:GetPurchaser() == owner) then restore[slot:GetEntityIndex()] = {owner=slot:GetOwner(), purchaser=slot:GetPurchaser()} slot:SetPurchaser(nil) slot:SetOwner(nil) end end if owner:GetNumItemsInStash() == 6 then if not unit.HasAnyAvailableInventorySpace and shops.home then CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(20), item) else local slot = DOTA_STASH_SLOT_6 local slotItem = owner:GetItemInSlot(slot) if slotItem and slotItem:GetAbilityName() == item:GetAbilityName() then slot = DOTA_STASH_SLOT_5 end owner:SwapItems(slot,14) owner:AddItem(item) for i=0,11 do if owner:GetItemInSlot(i) == item then owner:SwapItems(slot,i) owner:EjectItemFromStash(item) end end owner:SwapItems(14,slot) end else owner:AddItem(item) for i=0,11 do if owner:GetItemInSlot(i) == item then owner:SwapItems(stashSlot,i) end end end for i=0,5 do local item = owner:GetItemInSlot(i) if item and restore[item:GetEntityIndex()] ~= nil then item:SetPurchaser(restore[item:GetEntityIndex()].purchaser) item:SetOwner(restore[item:GetEntityIndex()].owner) end end else if full then local physItem = CreateItemOnPositionSync(unit:GetAbsOrigin() + RandomVector(5), item) unit:PickupDroppedItem(physItem) else for i=6,11 do local item = unit:GetItemInSlot(i) if not shops.home and item and item:GetPurchaser() == owner then item:SetPurchaser(nil) end end unit:AddItem(item) for i=6,11 do local item = unit:GetItemInSlot(i) if not shops.home and item and item:GetPurchaser() == nil then item:SetPurchaser(owner) end end end end local queue = false for _,drop in ipairs(dropped) do ExecuteOrderFromTable({ UnitIndex = owner:GetEntityIndex(), TargetIndex = drop:GetEntityIndex(), OrderType = DOTA_UNIT_ORDER_PICKUP_ITEM, Queue = queue, }) queue = true --owner:AddItem(drop:GetContainedItem()) --drop:RemoveSelf() end PlayerResource:SpendGold(ownerID, cost, DOTA_ModifyGold_PurchaseItem) return false end end return ret end function Containers:Containers_EntityShopRange(args) local unit = args.unit local shop = args.shop local cs = Containers.entityShops if not cs[unit] then cs[unit] = {home=false, side=false, secret=false} end cs[unit].home = bit.band(shop, 1) ~= 0 cs[unit].side = bit.band(shop, 2) ~= 0 cs[unit].secret = bit.band(shop, 4) ~= 0 end function Containers:Containers_Select(args) local playerID = args.PlayerID local prev = Containers.previousSelection[playerID] local new = args.entity local newEnt = EntIndexToHScript(new) local prevConts = Containers:GetEntityContainers(prev) for _, c in ipairs(prevConts) do if c._OnDeselect then local res, err = pcall(c._OnDeselect, playerID, c, prev) if err then print('[containers.lua] Error in OnDeselect: ' .. err) end end end Containers.previousSelection[playerID] = newEnt local conts = Containers:GetEntityContainers(new) for _, c in ipairs(conts) do if c._OnSelect then local res, err = pcall(c._OnSelect, playerID, c, newEnt) if err then print('[containers.lua] Error in OnSelect: ' .. err) end end end end function Containers:Containers_HideProxy(args) local abil = EntIndexToHScript(args.abilID) if abil and abil.GetAbilityName and (abil:GetAbilityName() == "containers_lua_targeting" or abil:GetAbilityName() == "containers_lua_targeting_tree" ) and abil:GetOwner():GetPlayerOwnerID() == args.PlayerID then abil:SetHidden(true) end end function Containers:Containers_OnSell(args) Containers:print('Containers_OnSell') Containers:PrintTable(args) local playerID = args.PlayerID local unit = args.unit == nil and nil or EntIndexToHScript(args.unit) local contID = args.contID local itemID = args.itemID local slot = args.slot if not playerID then return end --if unit and unit:GetMainControllingPlayer() ~= playerID then return end local container = Containers.containers[contID] if not container then return end local item = EntIndexToHScript(args.itemID) if not (item and IsValidEntity(item) and item.IsItem and item:IsItem()) then return end if item:GetOwner() ~= unit or item:GetPurchaser() ~= unit then return end local itemInSlot = container:GetItemInSlot(slot) if itemInSlot ~= item then return end local range = container:GetRange() local ent = container:GetEntity() if range == nil and ent and unit ~= ent then return end if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then Containers:DisplayError(playerID,"#dota_hud_error_target_out_of_range") return end local shops = Containers.entityShops[unit:GetEntityIndex()] or {home=false, side=false, secret=false} local player = PlayerResource:GetPlayer(playerID) if not shops.home and not shops.side and not shops.secret then if player then CustomGameEventManager:Send_ServerToPlayer(player, "cont_create_error_message", {reason=67}) end return end local cost = item:GetCost() if GameRules:GetGameTime() - item:GetPurchaseTime() > 10 then cost = cost /2 end container:RemoveItem(item) item:RemoveSelf() PlayerResource:ModifyGold(playerID, cost, false, DOTA_ModifyGold_SellItem) if player then SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, unit, cost, player) EmitSoundOnClient("General.Sell", player) end end function Containers:Containers_OnLeftClick(args) Containers:print('Containers_OnLeftClick') Containers:PrintTable(args) local playerID = args.PlayerID local unit = args.unit == nil and nil or EntIndexToHScript(args.unit) local contID = args.contID local itemID = args.itemID local slot = args.slot if not playerID then return end --if unit and unit:GetMainControllingPlayer() ~= playerID then return end local container = Containers.containers[contID] if not container then return end local fun = container._OnLeftClick if fun == false then return end local item = EntIndexToHScript(args.itemID) if not (item and IsValidEntity(item) and item.IsItem and item:IsItem()) then return end local itemInSlot = container:GetItemInSlot(slot) if itemInSlot ~= item then return end local range = container:GetRange() local ent = container:GetEntity() if range == nil and ent and unit ~= ent then return end if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then Containers:DisplayError(playerID,"#dota_hud_error_target_out_of_range") return end if type(fun) == "function" then fun(playerID, container, unit, item, slot) else Containers:OnLeftClick(playerID, container, unit, item, slot) end end function Containers:Containers_OnRightClick(args) Containers:print('Containers_OnRightClick') Containers:PrintTable(args) local playerID = args.PlayerID local unit = args.unit == nil and nil or EntIndexToHScript(args.unit) local contID = args.contID local itemID = args.itemID local slot = args.slot if not playerID then return end --if unit and unit:GetMainControllingPlayer() ~= playerID then return end local container = Containers.containers[contID] if not container then return end local fun = container._OnRightClick if fun == false then return end local item = EntIndexToHScript(args.itemID) if not (item and IsValidEntity(item) and item.IsItem and item:IsItem()) then return end local itemInSlot = container:GetItemInSlot(slot) if itemInSlot ~= item then return end local range = container:GetRange() local ent = container:GetEntity() if range == nil and ent and unit ~= ent then return end if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then Containers:DisplayError(playerID,"#dota_hud_error_target_out_of_range") return end if type(fun) == "function" then fun(playerID, container, unit, item, slot) else Containers:OnRightClick(playerID, container, unit, item, slot) end end function Containers:Containers_OnDragFrom(args) Containers:print('Containers_OnDragFrom') Containers:PrintTable(args) local playerID = args.PlayerID local unit = args.unit == nil and nil or EntIndexToHScript(args.unit) local contID = args.contID local itemID = args.itemID local fromSlot = args.fromSlot local toContID = args.toContID local toSlot = args.toSlot if not playerID then return end --if unit and unit:GetMainControllingPlayer() ~= playerID then return end local container = nil if contID == -1 then container = unitInventory container.unit = unit container.range = 150 if fromSlot > 5 then return end else container = Containers.containers[contID] end if not container then return end local toContainer = nil if toContID == -1 then toContainer = unitInventory toContainer.unit = unit toContainer.range = 150 if toSlot > 5 then return end else toContainer = Containers.containers[toContID] end if not toContainer then return end local item = EntIndexToHScript(args.itemID) if not (item and IsValidEntity(item) and item.IsItem and item:IsItem()) then return end local itemInSlot = container:GetItemInSlot(fromSlot) if itemInSlot ~= item then return end if toSlot > toContainer:GetSize() then return end local range = container:GetRange() local ent = container:GetEntity() if range == nil and ent and unit ~= ent then return end if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then Containers:DisplayError(playerID,"#dota_hud_error_target_out_of_range") return end if container == toContainer then if container.canDragWithin[playerID] == false then return end local fun = container._OnDragWithin if fun == false then return end if type(fun) == "function" then fun(playerID, container, unit, item, fromSlot, toSlot) else Containers:OnDragWithin(playerID, container, unit, item, fromSlot, toSlot) end else if container.canDragFrom[playerID] == false or toContainer.canDragTo[playerID] == false then return end local range = toContainer:GetRange() local ent = toContainer:GetEntity() if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then Containers:DisplayError(playerID,"#dota_hud_error_target_out_of_range") return end local fun = container._OnDragFrom if fun == false then return end if type(fun) == "function" then fun(playerID, container, unit, item, fromSlot, toContainer, toSlot) else Containers:OnDragFrom(playerID, container, unit, item, fromSlot, toContainer, toSlot) end end end function Containers:Containers_OnDragWorld(args) Containers:print('Containers_OnDragWorld') Containers:PrintTable(args) local playerID = args.PlayerID local unit = args.unit == nil and nil or EntIndexToHScript(args.unit) local contID = args.contID local itemID = args.itemID local slot = args.slot local position = args.position local entity = nil if type(args.entity) == "number" then entity = EntIndexToHScript(args.entity) end if not playerID then return end --if unit and unit:GetMainControllingPlayer() ~= playerID then return end local container = nil if contID == -1 then container = unitInventory container.unit = unit container.range = nil else container = Containers.containers[contID] end if not container then return end local fun = container._OnDragWorld if fun == false then return end local item = EntIndexToHScript(args.itemID) if not (item and IsValidEntity(item) and item.IsItem and item:IsItem()) then return end local itemInSlot = container:GetItemInSlot(slot) if itemInSlot ~= item then return end if not position["0"] or not position["1"] or not position["2"] then return end position = Vector(position["0"], position["1"], position["2"]) if container.canDragFrom[playerID] == false then return end if not item:IsDroppable() then Containers:DisplayError(playerID,"#dota_hud_error_item_cant_be_dropped") return end local range = container:GetRange() local ent = container:GetEntity() if range == nil and ent and unit ~= ent then return end if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then Containers:DisplayError(playerID,"#dota_hud_error_target_out_of_range") return end if type(fun) == "function" then fun(playerID, container, unit, item, slot, position, entity) else Containers:OnDragWorld(playerID, container, unit, item, slot, position, entity) end end function Containers:Containers_OnCloseClicked(args) Containers:print('Containers_OnCloseClicked') Containers:PrintTable(args) local playerID = args.PlayerID local unit = args.unit == nil and nil or EntIndexToHScript(args.unit) local contID = args.contID if not playerID then return end local container = Containers.containers[contID] if not container then return end local fun = container._OnCloseClicked if fun == false then return end if type(fun) == "function" then fun(playerID, container, unit) else Containers:OnCloseClicked(playerID, container, unit) end end function Containers:Containers_OnButtonPressed(args) Containers:print('Containers_OnButtonPressed') Containers:PrintTable(args) local playerID = args.PlayerID local unit = args.unit == nil and nil or EntIndexToHScript(args.unit) local contID = args.contID local buttonNumber = args.button if not playerID then return end --if unit and unit:GetMainControllingPlayer() ~= playerID then return end local container = Containers.containers[contID] if not container then return end local fun = container._OnButtonPressed if fun == false then return end if buttonNumber < 1 then return end local buttonName = container:GetButtonName(buttonNumber) if not buttonName then return end local range = container:GetRange() local ent = container:GetEntity() if range == nil and ent and unit ~= ent then return end if range and ent and unit and (ent:GetAbsOrigin() - unit:GetAbsOrigin()):Length2D() >= range then Containers:DisplayError(playerID,"#dota_hud_error_target_out_of_range") return end if type(fun) == "function" then fun(playerID, container, unit, buttonNumber, buttonName) else Containers:OnButtonPressed(playerID, container, unit, buttonNumber, buttonName) end end function Containers:OnLeftClick(playerID, container, unit, item, slot) Containers:print("Containers:OnLeftClick", playerID, container, unit, item:GetEntityIndex(), slot) local hero = PlayerResource:GetSelectedHeroEntity(playerID) container:ActivateItem(hero, item, playerID) end function Containers:OnRightClick(playerID, container, unit, item, slot) Containers:print("Containers:OnRightClick", playerID, container, unit, item:GetEntityIndex(), slot) end function Containers:OnDragWithin(playerID, container, unit, item, fromSlot, toSlot) Containers:print('Containers:OnDragWithin', playerID, container, unit, item, fromSlot, toSlot) container:SwapSlots(fromSlot, toSlot, true) end function Containers:OnDragFrom(playerID, container, unit, item, fromSlot, toContainer, toSlot) Containers:print('Containers:OnDragFrom', playerID, container, unit, item, fromSlot, toContainer, toSlot) local canChange = Containers.itemKV[item:GetAbilityName()].ItemCanChangeContainer if toContainer._OnDragTo == false or canChange == 0 then return end local fun = nil if type(toContainer._OnDragTo) == "function" then fun = toContainer._OnDragTo end if fun then fun(playerID, container, unit, item, fromSlot, toContainer, toSlot) else Containers:OnDragTo(playerID, container, unit, item, fromSlot, toContainer, toSlot) end end function Containers:OnDragTo(playerID, container, unit, item, fromSlot, toContainer, toSlot) Containers:print('Containers:OnDragTo', playerID, container, unit, item, fromSlot, toContainer, toSlot) local item2 = toContainer:GetItemInSlot(toSlot) local addItem = nil if item2 and IsValidEntity(item2) and (item2:GetAbilityName() ~= item:GetAbilityName() or not item2:IsStackable() or not item:IsStackable()) then if Containers.itemKV[item2:GetAbilityName()].ItemCanChangeContainer == 0 then return false end toContainer:RemoveItem(item2) addItem = item2 end if toContainer:AddItem(item, toSlot) then container:ClearSlot(fromSlot) if addItem then if container:AddItem(addItem, fromSlot) then return true else toContainer:RemoveItem(item) toContainer:AddItem(item2, toSlot, nil, true) container:AddItem(item, fromSlot, nil, true) return false end end return true elseif addItem then toContainer:AddItem(item2, toSlot, nil, true) end return false end function Containers:OnDragWorld(playerID, container, unit, item, slot, position, entity) Containers:print('Containers:OnDragWorld', playerID, container, unit, item, slot, position, entity) local unitpos = unit:GetAbsOrigin() local diff = unitpos - position local dist = diff:Length2D() local conts = {} if IsValidEntity(entity) then conts = Containers:GetEntityContainers(entity:GetEntityIndex()) end local toCont = nil for _,cont in ipairs(conts) do if cont._OnEntityDrag then toCont = cont break end end if IsValidEntity(entity) and entity.GetContainedItem and toCont then local range = toCont:GetRange() or 150 Containers:SetRangeAction(unit, { unit = unit, entity = entity, range = range, playerID = playerID, container = toCont, fromContainer = container, item = item, action = toCont._OnEntityDrag, }) elseif IsValidEntity(entity) and entity:GetTeam() == unit:GetTeam() and entity.HasInventory and entity:HasInventory() and entity:IsAlive() then ExecuteOrderFromTable({ UnitIndex= unit:GetEntityIndex(), OrderType= DOTA_UNIT_ORDER_MOVE_TO_TARGET, TargetIndex= entity:GetEntityIndex(), }) Containers.rangeActions[unit:GetEntityIndex()] = { unit = unit, entity = entity, range = 180, container = container, playerID = playerID, action = function(playerID, container, unit, target) if IsValidEntity(target) and target:IsAlive() and container:ContainsItem(item) then container:RemoveItem(item) Containers:AddItemToUnit(target, item) end unit:Stop() end, } elseif IsValidEntity(entity) and entity:GetClassname() == "ent_dota_shop" and item:IsSellable() then ExecuteOrderFromTable({ UnitIndex= unit:GetEntityIndex(), OrderType= DOTA_UNIT_ORDER_MOVE_TO_TARGET, TargetIndex= entity:GetEntityIndex(), }) Containers.rangeActions[unit:GetEntityIndex()] = { unit = unit, entity = entity, range = 425, container = container, playerID = playerID, action = function(playerID, container, unit, target) if IsValidEntity(target) and container:ContainsItem(item) then local cost = item:GetCost() if GameRules:GetGameTime() - item:GetPurchaseTime() > 10 then cost = cost /2 end container:RemoveItem(item) item:RemoveSelf() PlayerResource:ModifyGold(playerID, cost, false, DOTA_ModifyGold_SellItem) local player = PlayerResource:GetPlayer(playerID) if player then SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, unit, cost, player) EmitSoundOnClient("General.Sell", player) end end unit:Stop() end, } else local pos = unitpos if dist > 150 *.9 then pos = position + diff:Normalized() * 150 * .9 end --DebugDrawCircle(pos, Vector(255,0,0), 1, 50.0, true, 1) --unit:MoveToPosition(pos) ExecuteOrderFromTable({ UnitIndex= unit:GetEntityIndex(), OrderType= DOTA_UNIT_ORDER_MOVE_TO_POSITION, Position= pos, }) Containers.rangeActions[unit:GetEntityIndex()] = { unit = unit, --entity = target, position = position, range = 150, container = container, playerID = playerID, action = function(playerID, container, unit, target) if container:ContainsItem(item) then container:RemoveItem(item) CreateItemOnPositionSync(position, item) end end, } end end function Containers:OnCloseClicked(playerID, container, unit) Containers:print('Containers:OnCloseClicked', playerID, container, unit) container:Close(playerID) end function Containers:OnButtonPressed(playerID, container, unit, buttonNumber, buttonName) print('Button ' .. buttonNumber .. ':\'' .. buttonName .. '\' Pressed by player:' .. playerID .. ' for container ' .. container.id .. '. No OnButtonPressed handler.') end function Containers:GetEntityContainers(entity) if entity and type(entity) ~= "number" and entity.GetEntityIndex and IsValidEntity(entity) then entity = entity:GetEntityIndex() end local tab = {} for id,cont in pairs(Containers.entityContainers[entity] or {}) do table.insert(tab, cont) end return tab end function Containers:SetRangeAction(unit, tab) if not IsValidEntity(unit) then return end local range = tab.range or 150 if tab.container then range = (tab.container:GetRange() or 150) end local tpos = tab.position or tab.entity:GetAbsOrigin() local unitpos = unit:GetAbsOrigin() local diff = unitpos - tpos local dist = diff:Length2D() local pos = unitpos if dist > range * .9 then pos = tpos + diff:Normalized() * range * .9 end tab.unit = unit if tab.entity and not tab.entity.GetContainedItem then ExecuteOrderFromTable({ UnitIndex= unit:GetEntityIndex(), OrderType= DOTA_UNIT_ORDER_MOVE_TO_TARGET, TargetIndex= tab.entity:GetEntityIndex(), }) else ExecuteOrderFromTable({ UnitIndex= unit:GetEntityIndex(), OrderType= DOTA_UNIT_ORDER_MOVE_TO_POSITION, Position = pos, }) end Containers.rangeActions[unit:GetEntityIndex()] = tab end function Containers:SetDefaultInventory(unit, container) if not self.initialized then print('[containers.lua] FATAL: Containers:Init() has not been called in the Activate() function chain!') return end self.defaultInventories[unit:GetEntityIndex()] = container end function Containers:GetDefaultInventory(unit) local di = self.defaultInventories[unit:GetEntityIndex()] if IsValidContainer(di) then return di else self.defaultInventories[unit:GetEntityIndex()] = nil return nil end end function Containers:CreateShop(cont) local shop = self:CreateContainer(cont) local ptID = shop.ptID local pt = {shop = 1, } if cont.prices then for k,v in pairs(cont.prices) do local item = k if type(k) ~= "number" then item = k:GetEntityIndex() end pt['price' .. k] = v end end if cont.stocks then for k,v in pairs(cont.stocks) do local item = k if type(k) ~= "number" then item = k:GetEntityIndex() end pt['stock' .. k] = v end end PlayerTables:SetTableValues(ptID, pt) function shop:BuyItem(playerID, unit, item) local cost = self:GetPrice(item) local stock = self:GetStock(item) local owner = PlayerResource:GetSelectedHeroEntity(playerID) local gold = PlayerResource:GetGold(playerID) if gold >= cost and (stock == nil or stock > 0) then local newItem = CreateItem(item:GetAbilityName(), owner, owner) newItem:SetLevel(item:GetLevel()) newItem:SetCurrentCharges(item:GetCurrentCharges()) PlayerResource:SpendGold(playerID, cost, DOTA_ModifyGold_PurchaseItem) if stock then self:SetStock(item, stock-1) end Containers:EmitSoundOnClient(playerID, "General.Buy") return newItem elseif stock ~= nil and stock <= 0 then Containers:DisplayError(playerID, "#dota_hud_error_item_out_of_stock") elseif gold < cost then Containers:DisplayError(playerID, "#dota_hud_error_not_enough_gold") end end function shop:SellItem() end function shop:GetPrice(item) item = GetItem(item) return PlayerTables:GetTableValue(ptID, "price" .. item:GetEntityIndex()) or item:GetCost() end function shop:SetPrice(item, price) item = GetItem(item) if price then PlayerTables:SetTableValue(ptID, "price" .. item:GetEntityIndex(), price) else PlayerTables:DeleteTableKey(ptID, "price" .. item:GetEntityIndex()) end end function shop:GetStock(item) item = GetItem(item) return PlayerTables:GetTableValue(ptID, "stock" .. item:GetEntityIndex()) end function shop:SetStock(item, stock) item = GetItem(item) if stock then PlayerTables:SetTableValue(ptID, "stock" .. item:GetEntityIndex(), stock) else PlayerTables:DeleteTableKey(ptID, "stock" .. item:GetEntityIndex()) end end if not cont.canDragWithin then shop.canDragWithin = {} end shop:AddSkin("ContainerShop") if not cont.OnDragWorld then shop:OnDragWorld(false) end if not cont.OnDragWithin then shop:OnDragWithin(false) end if not cont.OnLeftClick then shop:OnLeftClick(false) end if not cont.OnDragTo then shop:OnDragTo(function(playerID, container, unit, item, fromSlot, toContainer, toSlot) Containers:print('Shop:OnDragTo', playerID, container, unit, item, fromSlot, toContainer, toSlot) end) end if not cont.OnDragFrom then shop:OnDragFrom(function(playerID, container, unit, item, fromSlot, toContainer, toSlot) Containers:print('Shop:OnDragFrom', playerID, container, unit, item, fromSlot, toContainer, toSlot) end) end --[[shop:OnLeftClick(function(playerID, container, unit, item, slot) print("Shop:OnLeftClick", playerID, container, unit, item:GetEntityIndex(), slot) end)]] if not cont.OnRightClick then shop:OnRightClick(function(playerID, container, unit, item, slot) Containers:print("Shop:OnRightClick", playerID, container, unit, item:GetEntityIndex(), slot) local defInventory = Containers:GetDefaultInventory(unit) if not defInventory and not unit:HasInventory() then return end local item = container:BuyItem(playerID, unit, item) Containers:AddItemToUnit(unit, item) end) end return shop end function Containers:CreateContainer(cont) if not self.initialized then print('[containers.lua] FATAL: Containers:Init() has not been called in the Activate() function chain!') return end local pt = {id = self.nextID, ptID = ID_BASE .. self.nextID, --unit = cont.unit layout = cont.layout or {2,2}, size = 0, -- calculated below rowStarts = {}, -- calculated below --slot1 = 1111, -- set up below --slot2 = 1122, -- set up below skins = {}, buttons = cont.buttons or {}, headerText = cont.headerText or "Container", draggable = cont.draggable or true, position = cont.position or "100px 200px 0px", equipment = cont.equipment, layoutFile = cont.layoutFile, OnLeftClick = type(cont.OnLeftClick) == "function" and true or cont.OnLeftClick, OnRightClick = type(cont.OnRightClick) == "function" and true or cont.OnRightClick, OnDragFrom = type(cont.OnDragFrom) == "function" and true or cont.OnDragFrom, OnDragWorld = false, OnCloseClicked = type(cont.OnCloseClicked) == "function" and true or cont.OnCloseClicked, OnButtonPressed = type(cont.OnButtonPressed) == "function" and true or cont.OnButtonPressed, OnLeftClickJS = cont.OnLeftClickJS, OnRightClickJS = cont.OnRightClickJS, OnDoubleClickJS = cont.OnDoubleClickJS, OnMouseOutJS = cont.OnMouseOutJS, OnMouseOverJS = cont.OnMouseOverJS, OnButtonPressedJS=cont.OnButtonPressedJS, OnCloseClickedJS =cont.OnCloseClickedJS, } local c = {id = pt.id, ptID = pt.ptID, items = {}, itemNames = {}, subs = {}, opens = {}, range = cont.range, closeOnOrder = cont.closeOnOrder == nil and false or cont.closeOnOrder, canDragFrom = {}, canDragTo = {}, canDragWithin = {}, appliedPassives = {}, cleanupTimer = nil, forceOwner = cont.forceOwner, forcePurchaser = cont.forcePurchaser, --entity = nil, _OnLeftClick = cont.OnLeftClick, _OnRightClick = cont.OnRightClick, _OnDragTo = cont.OnDragTo, _OnDragFrom = cont.OnDragFrom, _OnDragWithin = cont.OnDragWithin, _OnDragWorld = cont.OnDragWorld, _OnCloseClicked = cont.OnCloseClicked, _OnButtonPressed = cont.OnButtonPressed, _OnEntityOrder = cont.OnEntityOrder, _OnEntityDrag = cont.OnEntityDrag, _OnClose = cont.OnClose, _OnOpen = cont.OnOpen, _OnSelect = cont.OnSelect, _OnDeselect = cont.OnDeselect, AddItemFilter = cont.AddItemFilter, } if cont.OnDragWorld ~= nil and (type(cont.OnDragWorld) == "function" or cont.OnDragWorld == true) then pt.OnDragWorld = true end --if cont.setOwner then c.setOwner = cont.setOwner end --if cont.setPurchaser then c.setOwner = cont.setPurchaser end if cont.entity and type(cont.entity) == "number" then pt.entity = cont.entity elseif cont.entity and cont.entity.GetEntityIndex then pt.entity = cont.entity:GetEntityIndex() end if pt.entity then Containers.entityContainers[pt.entity] = Containers.entityContainers[pt.entity] or {} Containers.entityContainers[pt.entity][c.id] = c end for i,row in ipairs(pt.layout) do table.insert(pt.rowStarts, pt.size+1) pt.size = pt.size + row end if cont.skins then for k,v in pairs(cont.skins) do if type(v) == "string" then pt.skins[v] = true end end end if cont.items then for k,v in pairs(cont.items) do if type(k) == "number" then local item = v if type(v) == "number" then item = EntIndexToHScript(item) end if item and IsValidEntity(item) and item.IsItem and item:IsItem() then local itemid = item:GetEntityIndex() local itemname = item:GetAbilityName() pt['slot' .. k] = itemid c.items[itemid] = k c.itemNames[itemname] = c.itemNames[itemname] or {} c.itemNames[itemname][itemid] = k if cont.equipment and pt.entity then ApplyPassives(c, item, EntIndexToHScript(pt.entity)) end end end end end if cont.equipment then c.cleanupTimer = Timers:CreateTimer(1, function() for itemID, mods in pairs(c.appliedPassives) do if not IsValidEntity(EntIndexToHScript(itemID)) or not c:ContainsItem(itemID) then for _, mod in ipairs(mods) do mod:Destroy() end c.appliedPassives[itemID] = nil end end return 1 end) end if cont.cantDragFrom then for _,pid in ipairs(cont.cantDragFrom) do if type(pid) == "number" then c.canDragFrom[pid] = false end end end if cont.cantDragTo then for _,pid in ipairs(cont.cantDragTo) do if type(pid) == "number" then c.canDragTo[pid] = false end end end if cont.pids then for _,pid in ipairs(cont.pids) do c.subs[pid] = true end end PlayerTables:CreateTable(c.ptID, pt, c.subs) function c:ActivateItem(unit, item, playerID) if item:GetOwner() ~= unit or not item:IsFullyCastable() then Containers:EmitSoundOnClient(playerID, "General.Cancel") return end local playerID = playerID or unit:GetPlayerOwnerID() local behavior = item:GetBehavior() local targetType = item:GetAbilityTargetType() local toggle = bit.band(behavior, DOTA_ABILITY_BEHAVIOR_TOGGLE) ~= 0 local unrestricted = bit.band(behavior, DOTA_ABILITY_BEHAVIOR_UNRESTRICTED) ~= 0 local rootDisables = bit.band(behavior, DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES) ~= 0 local channelled = bit.band(behavior, DOTA_ABILITY_BEHAVIOR_CHANNELLED) ~= 0 local noTarget = bit.band(behavior, DOTA_ABILITY_BEHAVIOR_NO_TARGET) ~= 0 local treeTarget = bit.band(targetType, DOTA_UNIT_TARGET_TREE) ~= 0 if unit:IsStunned() and not unrestricted then Containers:DisplayError(playerID, "#dota_hud_error_unit_command_restricted") return end if unit:IsRooted() and rootDisables then Containers:DisplayError(playerID, "#dota_hud_error_ability_disabled_by_root") return end if noTarget and not channelled then item:PayGoldCost() item:PayManaCost() item:StartCooldown(item:GetCooldown(item:GetLevel())) if toggle then item:OnToggle() else item:OnSpellStart() end else local abil = unit:FindAbilityByName("containers_lua_targeting") if treeTarget then if unit:HasAbility("containers_lua_targeting") then unit:RemoveAbility("containers_lua_targeting") end abil = unit:FindAbilityByName("containers_lua_targeting_tree") elseif unit:HasAbility("containers_lua_targeting_tree") then unit:RemoveAbility("containers_lua_targeting_tree") end if not abil then -- no ability proxy found, add local abilSlot = -1 for i=15,0,-1 do local ab = unit:GetAbilityByIndex(i) if not ab then abilSlot = i break end end if abilSlot == -1 then print("[containers.lua] ERROR: 'containers_lua-targeting' ability not found for unit '" .. unit:GetUnitName() .. '" and all ability slots are full.') return end if treeTarget then abil = unit:AddAbility("containers_lua_targeting_tree") --abil = unit:FindAbilityByName("containers_lua_targeting_tree") else abil = unit:AddAbility("containers_lua_targeting") --abil = unit:FindAbilityByName("containers_lua_targeting") end abil:SetLevel(1) end abil:SetHidden(false) abil.proxyItem = item local aoe = nil local iname = item:GetAbilityName() if iname == "item_veil_of_discord" then aoe = 600 elseif Containers.itemKV[iname] then aoe = Containers.itemKV[iname].AOERadius end CustomNetTables:SetTableValue("containers_lua", tostring(abil:GetEntityIndex()), {behavior=behavior, aoe=aoe, range=item:GetCastRange(), targetType=targetType, targetTeam=item:GetAbilityTargetTeam(), targetFlags=item:GetAbilityTargetFlags(), channelTime=item:GetChannelTime(), channelCost=item:GetChannelledManaCostPerSecond(item:GetLevel()), proxyItem=item:GetEntityIndex()}) local player = PlayerResource:GetPlayer(playerID) if player then CustomGameEventManager:Send_ServerToPlayer(player, "cont_execute_proxy", {unit=unit:GetEntityIndex()}) end end end function c:GetAllOpen() return self.opens end function c:IsOpen(pid) return self.opens[pid] ~= nil end function c:Open(pid) self.opens[pid] = true PlayerTables:AddPlayerSubscription(self.ptID, pid) if self:IsCloseOnOrder() then Containers.closeOnOrders[pid][self.id] = self end local player = PlayerResource:GetPlayer(pid) if player then CustomGameEventManager:Send_ServerToPlayer(player, "cont_open_container", {id=self.id} ) end if self._OnOpen then self._OnOpen(pid, self) end end function c:Close(pid) if self.opens[pid] == nil then return end self.opens[pid] = nil if not self.subs[pid] then PlayerTables:RemovePlayerSubscription(self.ptID, pid) end if self:IsCloseOnOrder() then Containers.closeOnOrders[pid][self.id] = nil end local player = PlayerResource:GetPlayer(pid) if player then CustomGameEventManager:Send_ServerToPlayer(player, "cont_close_container", {id=self.id} ) end if self._OnClose then self._OnClose(pid, self) end end function c:Delete(deleteContents) Containers:DeleteContainer(self, deleteContents) end function c:AddSubscription(pid) self.subs[pid] = true PlayerTables:AddPlayerSubscription(self.ptID, pid) end function c:RemoveSubscription(pid) self.subs[pid] = nil if not self.opens[pid] then PlayerTables:RemovePlayerSubscription(self.ptID, pid) end end function c:GetSubscriptions() return self.subs end function c:IsSubscribed(pid) return self.subs[pid] ~= nil end function c:SwapSlots(slot1, slot2, allowCombine) local item1 = self:GetItemInSlot(slot1) local item2 = self:GetItemInSlot(slot2) if item1 and item2 then return self:SwapItems(item1, item2, allowCombine) elseif item1 then local itemid = item1:GetEntityIndex() local itemname = item1:GetAbilityName() self.items[itemid] = slot2 self.itemNames[itemname][itemid] = slot2 PlayerTables:SetTableValue(self.ptID, "slot"..slot2, itemid) PlayerTables:DeleteTableKey(self.ptID, "slot"..slot1) return true elseif item2 then local itemid = item2:GetEntityIndex() local itemname = item2:GetAbilityName() self.items[itemid] = slot1 self.itemNames[itemname][itemid] = slot1 PlayerTables:SetTableValue(self.ptID, "slot"..slot1, itemid) PlayerTables:DeleteTableKey(self.ptID, "slot"..slot2) return true end return false end function c:SwapItems(item1, item2, allowCombine) item1 = GetItem(item1) item2 = GetItem(item2) local i1id = item1:GetEntityIndex() local i1name = item1:GetAbilityName() local i2id = item2:GetEntityIndex() local i2name = item2:GetAbilityName() local i1 = self.items[i1id] local i2 = self.items[i2id] if i1 and i2 then if allowCombine and i1name == i2name and item1:IsStackable() and item2:IsStackable() then self:RemoveItem(item1) item2:SetCurrentCharges(item2:GetCurrentCharges() + item1:GetCurrentCharges()) item1:RemoveSelf() return true end self.items[i1id] = i2 self.items[i2id] = i1 self.itemNames[i1name][i1id] = i2 self.itemNames[i2name][i2id] = i1 PlayerTables:SetTableValues(self.ptID, {["slot"..i1]=i2id, ["slot"..i2]=i1id}) return true end return false end function c:ContainsItem(item) item = GetItem(item) if not item then return false end return self.items[item:GetEntityIndex()] ~= nil end function c:GetSlotForItem(item) item = GetItem(item) return self.items[item:GetEntityIndex()] end function c:GetRowColumnForItem(item) item = GetItem(item) local itemid = item:GetEntityIndex() local slot = self.items[itemid] if not slot then return nil, nil end local size = self:GetSize() if slot > size then return nil, nil end local rowStarts = PlayerTables:GetTableValue(self.ptID, "rowStarts") for row,start in ipairs(rowStarts) do if start > slot then local prev = row-1 return prev, (slot - rowStarts[prev] + 1) end end local row = #rowStarts return row, (slot - rowStarts[row] + 1) end function c:GetAllItems() local items = {} for slot=1,self:GetSize() do local item = self:GetItemInSlot(slot) if item then table.insert(items, item) end end return items end function c:GetItemsByName(name) local nameTable = self.itemNames[name] local items = {} if not nameTable then return items end for id,slot in pairs(nameTable) do local item = GetItem(id) if item then table.insert(items, item) else nameTable[id] = nil end end return items end function c:GetItemInSlot(slot) local item = PlayerTables:GetTableValue(self.ptID, "slot" .. slot) if item then item = EntIndexToHScript(item) if item and not IsValidEntity(item) then PlayerTables:DeleteTableKey(self.ptID, "slot" .. slot) return nil elseif item and IsValidEntity(item) and item.IsItem and item:IsItem() then return item end end return nil end function c:GetItemInRowColumn(row, column) local rowStarts = PlayerTables:GetTableValue(self.ptID, "rowStarts") if not rowStarts[row] then return nil end local nextRowStart = rowStarts[row+1] or self:GetSize() + 1 local slot = rowStarts[row] + column - 1 if slot >= nextRowStart then return nil end return self:GetItemInSlot(slot) end function c:AddItem(item, slot, column, bypassFilter) item = GetItem(item) if slot and type(slot) == "number" and column and type(column) == "number" then local rowStarts = PlayerTables:GetTableValue(self.ptID, "rowStarts") if not rowStarts[slot] then print("[containers.lua] Request to add item in row " .. slot .. " -- row not found. ") return false end local nextRowStart = rowStarts[slot+1] or self:GetSize() + 1 local newslot = rowStarts[slot] + column - 1 if newslot >= nextRowStart then print("[containers.lua] Request to add item in row " .. slot .. ", column " .. column .. " -- column exceeds row length. ") return false end slot = newslot end local findStack = slot == nil slot = slot or 1 local size = self:GetSize() if slot > size then print("[containers.lua] Request to add item in slot " .. slot .. " -- exceeding container size " .. size) return false end local func = c.AddItemFilter if not bypassFilter and c.AddItemFilter then local status, result = pcall(c.AddItemFilter, c, item, findstack and -1 or slot) if not status then print("[containers.lua] AddItemFilter callback error: " .. result) return false end if not result then return false end end local itemid = item:GetEntityIndex() local itemname = item:GetAbilityName() if findStack and item:IsStackable() then local nameTable = self.itemNames[itemname] if nameTable then local lowestSlot = size+1 local lowestItem = nil for itemid, nameslot in pairs(nameTable) do if nameslot < lowestSlot then local item = self:GetItemInSlot(nameslot) if item then lowestSlot = nameslot lowestItem = item else nameTable[itemid] = nil end end end if lowestItem and lowestItem:IsStackable() then lowestItem:SetCurrentCharges(lowestItem:GetCurrentCharges() + item:GetCurrentCharges()) item:RemoveSelf() return true end end end -- check if the slot specified is stackable if not findStack and item:IsStackable() then local slotitem = self:GetItemInSlot(slot) if slotitem and itemname == slotitem:GetAbilityName() and slotitem:IsStackable() then slotitem:SetCurrentCharges(slotitem:GetCurrentCharges() + item:GetCurrentCharges()) item:RemoveSelf() return true end end for i=slot,size do local slotitem = self:GetItemInSlot(i) if not slotitem then self.items[itemid] = i self.itemNames[itemname] = self.itemNames[itemname] or {} self.itemNames[itemname][itemid] = i if self.forceOwner then item:SetOwner(self.forceOwner) elseif self.forceOwner == false then item:SetOwner(nil) end if self.forcePurchaser then item:SetPurchaser(self.forcePurchaser) elseif self.forceOwner == false then item:SetPurchaser(nil) end if self:IsEquipment() then ApplyPassives(self, item) end PlayerTables:SetTableValue(self.ptID, "slot" .. i, itemid) return true end end return false end function c:RemoveItem(item) item = GetItem(item) local slot = self.items[item:GetEntityIndex()] local nameTable = self.itemNames[item:GetAbilityName()] local itemid = item:GetEntityIndex() self.items[itemid] = nil nameTable[itemid] = nil if self:IsEquipment() then local mods = self.appliedPassives[itemid] if mods then for _, mod in ipairs(mods) do mod:Destroy() end end self.appliedPassives[itemid] = nil end PlayerTables:DeleteTableKey(self.ptID, "slot" .. slot) end function c:ClearSlot(slot) local item = self:GetItemInSlot(slot) if IsValidEntity(item) then self:RemoveItem(item) else PlayerTables:DeleteTableKey(self.ptID, "slot" .. slot) end end function c:GetContainerIndex() return self.id end function c:GetHeaderText() local headerText = PlayerTables:GetTableValue(self.ptID, "headerText") return headerText end function c:SetHeaderText(header) PlayerTables:SetTableValue(self.ptID, "headerText", header) end function c:GetSize() local size = PlayerTables:GetTableValue(self.ptID, "size") return size end function c:GetNumItems() return #c:GetAllItems() end function c:GetLayout() local layout = PlayerTables:GetTableValue(self.ptID, "layout") return layout end function c:SetLayout(layout, removeOnContract) local size = 0 local rowStarts = {} for i,row in ipairs(layout) do table.insert(rowStarts, size+1) size = size + row end local oldSize = self:GetSize() local changes = {} if removeOnContract and size < oldSize then local deletions = {} for i=size+1,oldSize do local item = self:GetItemInSlot(i) if item then local itemid = item:GetEntityIndex() local itemname = item:GetAbilityName() local nameTable = self.itemNames[item:GetAbilityName()] self.items[item:GetEntityIndex()] = nil nameTable[item:GetEntityIndex()] = nil if self:IsEquipment() then local mods = self.appliedPassives[itemid] if mods then for _, mod in ipairs(mods) do mod:Destroy() end end self.appliedPassives[itemid] = nil end table.insert(deletions, "slot"..i) end end PlayerTables:DeleteTableKeys(self.ptID, deletions) end changes.layout = layout changes.size = size changes.rowStarts = rowStarts PlayerTables:SetTableValues(self.ptID, changes) end function c:GetRange() return self.range end function c:SetRange(range) self.range = range --[[if range then PlayerTables:SetTableValue(self.ptID, "range", range) else PlayerTables:DeleteTableKey(self.ptID, "range") end]] end function c:AddSkin(skin) local skins = PlayerTables:GetTableValue(self.ptID, "skins") skins[skin] = true PlayerTables:SetTableValue(self.ptID, "skins", skins) end function c:RemoveSkin(skin) local skins = PlayerTables:GetTableValue(self.ptID, "skins") skins[skin] = nil PlayerTables:SetTableValue(self.ptID, "skins", skins) end function c:GetSkins() local skins = PlayerTables:GetTableValue(self.ptID, "skins") return skins end function c:HasSkin(skin) local skins = PlayerTables:GetTableValue(self.ptID, "skins") return skins[skin] ~= nil end function c:SetButton(number, name) local buttons = PlayerTables:GetTableValue(self.ptID, "buttons") buttons[number] = name PlayerTables:SetTableValue(self.ptID, "buttons", buttons) end function c:RemoveButton(number) local buttons = PlayerTables:GetTableValue(self.ptID, "buttons") buttons[number] = nil PlayerTables:SetTableValue(self.ptID, "buttons", buttons) end function c:GetButtons() local buttons = PlayerTables:GetTableValue(self.ptID, "buttons") return buttons end function c:GetButtonName(number) local buttons = PlayerTables:GetTableValue(self.ptID, "buttons") return buttons[number] end function c:GetEntity() local entity = PlayerTables:GetTableValue(self.ptID, "entity") if entity then return EntIndexToHScript(entity) end return nil end function c:SetEntity(entity) local old = c:GetEntity() local num = entity if entity and type(entity) == "number" then entity = EntIndexToHScript(entity) elseif entity and entity.GetEntityIndex then num = entity:GetEntityIndex() end if entity then PlayerTables:SetTableValue(self.ptID, "entity", num) Containers.entityContainers[num] = Containers.entityContainers[num] or {} Containers.entityContainers[num][self.id] = self elseif old ~= nil then PlayerTables:DeleteTableKey(self.ptID, "entity") Containers.entityContainers[old:GetEntityIndex()] = Containers.entityContainers[old:GetEntityIndex()] or {} Containers.entityContainers[old:GetEntityIndex()][self.id] = nil end if self:IsEquipment() and old ~= entity then for itemID, mods in pairs(self.appliedPassives) do for _, mod in ipairs(mods) do mod:Destroy() end end self.appliedPassives = {} local items = self:GetAllItems() for _, item in ipairs(items) do ApplyPassives(self, item) end end end function c:GetCanDragFromPlayers() return self.canDragFrom end function c:CanDragFrom(pid) return self.canDragFrom[pid] ~= false end function c:SetCanDragFrom(pid, canDrag) self.canDragFrom[pid] = canDrag end function c:GetCanDragToPlayers() return self.canDragTo end function c:CanDragTo(pid) return self.canDragTo[pid] ~= false end function c:SetCanDragTo(pid, canDrag) self.canDragTo[pid] = canDrag end function c:GetCanDragWithinPlayers() return self.canDragWithin end function c:CanDragWithin(pid) return self.canDragWithin[pid] ~= false end function c:SetCanDragWithin(pid, canDrag) self.canDragWithin[pid] = canDrag end function c:IsDraggable() return PlayerTables:GetTableValue(self.ptID, "draggable") end function c:SetDraggable(drag) PlayerTables:SetTableValue(self.ptID, "draggable", drag) end function c:IsEquipment() local eq = PlayerTables:GetTableValue(self.ptID, "equipment") if eq then return true else return false end end function c:SetEquipment(equip) local isEq = self:IsEquipment() if equip and not isEq then local items = self:GetAllItems() for _, item in ipairs(items) do ApplyPassives(self, item) end local c = self self.cleanupTimer = Timers:CreateTimer(1, function() for itemID, mods in pairs(c.appliedPassives) do if not IsValidEntity(EntIndexToHScript(itemID)) or not c:ContainsItem(itemID) then for _, mod in ipairs(mods) do mod:Destroy() end c.appliedPassives[itemID] = nil end end return 1 end) elseif not equip and isEq then local items = self:GetAllItems() for itemID,mods in pairs(self.appliedPassives) do for _, mod in ipairs(mods) do mod:Destroy() end end self.appliedPassives = {} Timers:RemoveTimer(self.cleanupTimer) end PlayerTables:SetTableValue(self.ptID, "equipment", equip) end function c:GetForceOwner() return self.forceOwner end function c:GetForcePurchaser() return self.ForcePurchaser end function c:SetForceOwner(owner) self.forceOwner = owner end function c:SetForcePurchaser(purchaser) self.ForcePurchaser = purchaser end function c:IsCloseOnOrder() return self.closeOnOrder end function c:SetCloseOnOrder(close) if close then for pid, _ in pairs(self.opens) do Containers.closeOnOrders[pid][self.id] = self end else for pid,v in pairs(Containers.closeOnOrders) do v[self.id] = nil end end self.closeOnOrder = close end function c:OnLeftClick(fun) if fun == nil then PlayerTables:DeleteTableKey(self.ptID, "OnLeftClick") elseif type(fun) == "function" then PlayerTables:SetTableValue(self.ptID, "OnLeftClick", true) else PlayerTables:SetTableValue(self.ptID, "OnLeftClick", fun) end self._OnLeftClick = fun end function c:OnRightClick(fun) if fun == nil then PlayerTables:DeleteTableKey(self.ptID, "OnRightClick") elseif type(fun) == "function" then PlayerTables:SetTableValue(self.ptID, "OnRightClick", true) else PlayerTables:SetTableValue(self.ptID, "OnRightClick", fun) end self._OnRightClick = fun end function c:OnDragTo(fun) self._OnDragTo = fun end function c:OnDragWithin(fun) self._OnDragWithin = fun end function c:OnDragFrom(fun) if fun == nil then PlayerTables:DeleteTableKey(self.ptID, "OnDragFrom") elseif type(fun) == "function" then PlayerTables:SetTableValue(self.ptID, "OnDragFrom", true) else PlayerTables:SetTableValue(self.ptID, "OnDragFrom", fun) end self._OnDragFrom = fun end function c:OnDragWorld(fun) if fun == nil then PlayerTables:DeleteTableKey(self.ptID, "OnDragWorld") elseif type(fun) == "function" then PlayerTables:SetTableValue(self.ptID, "OnDragWorld", true) else PlayerTables:SetTableValue(self.ptID, "OnDragWorld", fun) end self._OnDragWorld = fun end function c:OnCloseClicked(fun) if fun == nil then PlayerTables:DeleteTableKey(self.ptID, "OnCloseClicked") elseif type(fun) == "function" then PlayerTables:SetTableValue(self.ptID, "OnCloseClicked", true) else PlayerTables:SetTableValue(self.ptID, "OnCloseClicked", fun) end self._OnCloseClicked = fun end function c:OnButtonPressed(fun) if fun == nil then PlayerTables:DeleteTableKey(self.ptID, "OnButtonPressed") elseif type(fun) == "function" then PlayerTables:SetTableValue(self.ptID, "OnButtonPressed", true) else PlayerTables:SetTableValue(self.ptID, "OnButtonPressed", fun) end self._OnButtonPressed = fun end function c:OnEntityOrder(fun) self._OnEntityOrder = fun end function c:OnEntityDrag(fun) self._OnEntityDrag = fun end function c:OnClose(fun) self._OnClose = fun end function c:OnOpen(fun) self._OnOpen = fun end function c:OnSelect(fun) self._OnSelect = fun end function c:OnDeselect(fun) self._OnDeselect = fun end function c:OnLeftClickJS(jsCallback) if jsCallback == nil then PlayerTables:DeleteTableKey(self.ptID, "OnLeftClickJS") else PlayerTables:SetTableValue(self.ptID, "OnLeftClickJS", jsCallback) end end function c:OnRightClickJS(jsCallback) if jsCallback == nil then PlayerTables:DeleteTableKey(self.ptID, "OnRightClickJS") else PlayerTables:SetTableValue(self.ptID, "OnRightClickJS", jsCallback) end end function c:OnDoubleClickJS(jsCallback) if jsCallback == nil then PlayerTables:DeleteTableKey(self.ptID, "OnDoubleClickJS") else PlayerTables:SetTableValue(self.ptID, "OnDoubleClickJS", jsCallback) end end function c:OnMouseOutJS(jsCallback) if jsCallback == nil then PlayerTables:DeleteTableKey(self.ptID, "OnMouseOutJS") else PlayerTables:SetTableValue(self.ptID, "OnMouseOutJS", jsCallback) end end function c:OnMouseOverJS(jsCallback) if jsCallback == nil then PlayerTables:DeleteTableKey(self.ptID, "OnMouseOverJS") else PlayerTables:SetTableValue(self.ptID, "OnMouseOverJS", jsCallback) end end function c:OnButtonPressedJS(jsCallback) if jsCallback == nil then PlayerTables:DeleteTableKey(self.ptID, "OnButtonPressedJS") else PlayerTables:SetTableValue(self.ptID, "OnButtonPressedJS", jsCallback) end end function c:OnCloseClickedJS(jsCallback) if jsCallback == nil then PlayerTables:DeleteTableKey(self.ptID, "OnCloseClickedJS") else PlayerTables:SetTableValue(self.ptID, "OnCloseClickedJS", jsCallback) end end function c:IsInventory() return false end self.containers[self.nextID] = c self.nextID = self.nextID + 1 return c end function Containers:DeleteContainer(c, deleteContents) if deleteContents ~= false or c:IsEquipment() then local items = c:GetAllItems() for _, item in ipairs(items) do if c:IsEquipment() then local mods = c.appliedPassives[item:GetEntityIndex()] Timers:RemoveTimer(c.cleanupTimer) if mods then for _, mod in ipairs(mods) do mod:Destroy() end end end if deleteContents then item:RemoveSelf() end end end PlayerTables:DeleteTable(c.ptID) self.containers[c.id] = nil CustomGameEventManager:Send_ServerToAllClients("cont_delete_container", {id=c.id} ) for k,v in pairs(c) do c[k] = nil end end function Containers:print(...) if CONTAINERS_DEBUG then print(unpack({...})) end end function Containers:PrintTable(t) if CONTAINERS_DEBUG then PrintTable(t) end end function IsValidContainer(c) if c and c.GetAllOpen then return true else return false end end if not Containers.containers then Containers:start() end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/modifiers/modifier_animation.lua ================================================ modifier_animation = class({}) local _CODE_TO_ANIMATION_TRANSLATE = { [0]= "loadout", [1]= "split_shot", [2]= "chemical_rage", [3]= "agedspirit", [4]= "aggressive", [5]= "injured", [6]= "ancient_armor", [7]= "anvil", [8]= "arcana", [9]= "techies_arcana", [10]= "fast", [11]= "faster", [12]= "fastest", [13]= "abysm", [14]= "dualwield", [15]= "forcestaff_friendly", [16]= "phantom_attack", [17]= "snowangel", [18]= "suicide_squad", [19]= "taunt_fullbody", [20]= "armaments_set", [21]= "instagib", [22]= "tidehunter_boat", [23]= "shinobi_tail", [24]= "tidebringer", [25]= "masquerade", [26]= "pyre", [27]= "shinobi", [28]= "immortal", [29]= "cauldron", [30]= "red_moon", [31]= "when_nature_attacks", [32]= "odachi", [33]= "wraith_spin", [34]= "eyeoffetizu", [35]= "berserkers_blood", [36]= "flying", [37]= "frost_arrow", [38]= "manta", [39]= "come_get_it", [40]= "good_day_sir", [41]= "backstab", [42]= "offhand_basher", [43]= "batter_up", [44]= "black", [45]= "haste", [46]= "with_item", [47]= "bot", [48]= "web", [49]= "fountain", [50]= "broodmother_spin", [51]= "burrowed", [52]= "sandking_rubyspire_burrowstrike", [53]= "moth", [54]= "frostivus", [55]= "desolation", [56]= "sm_head", [57]= "chasm", [58]= "greevil_black_hole", [59]= "greevil_blade_fury", [60]= "greevil_bloodlust", [61]= "greevil_cold_snap", [62]= "greevil_decrepify", [63]= "greevil_diabolic_edict", [64]= "greevil_echo_slam", [65]= "greevil_fatal_bonds", [66]= "greevil_ice_wall", [67]= "ancestral_scepter", [68]= "greevil_laguna_blade", [69]= "greevil_leech_seed", [70]= "greevil_magic_missile", [71]= "greevil_maledict", [72]= "greevil_miniboss_black_brain_sap", [73]= "greevil_miniboss_black_nightmare", [74]= "greevil_miniboss_blue_cold_feet", [75]= "greevil_miniboss_blue_ice_vortex", [76]= "greevil_miniboss_green_living_armor", [77]= "greevil_miniboss_green_overgrowth", [78]= "greevil_miniboss_orange_dragon_slave", [79]= "greevil_miniboss_orange_lightstrike_array", [80]= "greevil_miniboss_purple_plague_ward", [81]= "greevil_miniboss_purple_venomous_gale", [82]= "greevil_miniboss_red_earthshock", [83]= "greevil_miniboss_red_overpower", [84]= "greevil_miniboss_white_purification", [85]= "greevil_miniboss_yellow_ion_shell", [86]= "greevil_miniboss_yellow_surge", [87]= "greevil_natures_attendants", [88]= "greevil_phantom_strike", [89]= "greevil_poison_nova", [90]= "greevil_purification", [91]= "greevil_shadow_strike", [92]= "greevil_shadow_wave", [93]= "stalker_exo", [94]= "death_protest", [95]= "nihility", [96]= "deadwinter_soul", [97]= "charge", [98]= "charge_attack", [99]= "iron_surge", [100]= "impatient_maiden", [101]= "glacier", [102]= "snowball", [103]= "corpse_dresstop", [104]= "corpse_dress", [105]= "corpse_scarf", [106]= "unbroken", [107]= "dc_sb_charge", [108]= "dc_sb_charge_attack", [109]= "dc_sb_charge_finish", [110]= "dc_sb_ultimate", [111]= "faces_hakama", [112]= "faces_wraps", [113]= "faces_mask", [114]= "lodestar", [115]= "reincarnate", [116]= "demon_drain", [117]= "divine_sorrow", [118]= "divine_sorrow_loadout", [119]= "divine_sorrow_loadout_spawn", [120]= "divine_sorrow_sunstrike", [121]= "duel_kill", [122]= "forcestaff_enemy", [123]= "fish_slap", [124]= "focusfire", [125]= "fear", [126]= "ftp_dendi_back", [127]= "triumphant_timelord", [128]= "ground_pound", [129]= "harlequin", [130]= "injured_aggressive", [131]= "f2p_doom", [132]= "obsidian_helmet", [133]= "item_style_2", [134]= "blood_chaser", [135]= "manias_mask", [136]= "punch", [137]= "thirst", [138]= "impetus", [139]= "taunt_killtaunt", [140]= "level_1", [141]= "level_2", [142]= "level_3", [143]= "dagger_twirl", [144]= "ancestors_edge", [145]= "ancestors_pauldron", [146]= "ancestors_vambrace", [147]= "bladebiter", [148]= "burning_fiend", [149]= "fiery_soul", [150]= "frostiron_raider", [151]= "obeisance_of_the_keeper", [152]= "salvaged_sword", [153]= "serene_honor", [154]= "shinobi_mask", [155]= "swordonshoulder", [156]= "whalehook", [157]= "winterblight", [158]= "lucentyr", [159]= "lyreleis_breeze", [160]= "mace", [161]= "tinker_rollermaw", [162]= "meld", [163]= "agrressive", [164]= "miniboss", [165]= "moonfall", [166]= "moon_griffon", [167]= "overpower1", [168]= "overpower2", [169]= "overpower3", [170]= "overpower4", [171]= "overpower5", [172]= "overpower6", [173]= "loda", [174]= "dark_wraith", [175]= "pinfold", [176]= "digger", [177]= "portrait_fogheart", [178]= "silent_ripper", [179]= "shake_moneymaker", [180]= "belly_flop", [181]= "roshan", [182]= "am_blink", [183]= "mana_void", [184]= "culling_blade", [185]= "brain_sap", [186]= "fiends_grip", [187]= "roar", [188]= "axes", [189]= "stolen_firefly", [190]= "firefly", [191]= "freezing_field", [192]= "frostbite", [193]= "crystal_nova", [194]= "black_hole", [195]= "fissure", [196]= "slam", [197]= "totem", [198]= "omnislash", [199]= "spin", [200]= "finger", [201]= "impale", [202]= "laguna", [203]= "lsa", [204]= "mana_drain", [205]= "wave", [206]= "leap", [207]= "requiem", [208]= "shadowraze", [209]= "sprout", [210]= "summon", [211]= "teleport", [212]= "wrath", [213]= "darkness", [214]= "void", [215]= "guardian_angel", [216]= "purification", [217]= "repel", [218]= "dismember", [219]= "life_drain", [220]= "hook", [221]= "qop_blink", [222]= "scream", [223]= "shadow_strike", [224]= "sonic_wave", [225]= "ravage", [226]= "snipe", [227]= "stolen_charge", [228]= "strike", [229]= "burrow", [230]= "shrapnel", [231]= "ball_lightning", [232]= "remnant", [233]= "bolt", [234]= "vortex", [235]= "earthshock", [236]= "gale", [237]= "plague_ward", [238]= "poison_nova", [239]= "viper_strike", [240]= "wall", [241]= "ward", [242]= "powershot", [243]= "end", [244]= "windrun", [245]= "windy", [246]= "chase", [247]= "injured rare", [248]= "pegleg", [249]= "start", [250]= "sb_helmet", [251]= "sb_bracers", [252]= "sb_shoulder", [253]= "sb_spear", [254]= "dominator", [255]= "iron", [256]= "sven_shield", [257]= "sven_warcry", [258]= "chicken_gesture", [259]= "emp", [260]= "slasher_weapon", [261]= "slasher_offhand", [262]= "slasher_chest", [263]= "slasher_mask", [264]= "sm_armor", [265]= "sm_shoulder", [266]= "wolfhound", [267]= "great_safari", [268]= "taunt_quickdraw_gesture", [269]= "sparrowhawk_bow", [270]= "sparrowhawk_cape", [271]= "sparrowhawk_quiver", [272]= "sparrowhawk_hood", [273]= "sparrowhawk_shoulder", [274]= "twister", [275]= "sprint", [276]= "sugarrush", [277]= "trickortreat", [278]= "transition", [279]= "torment", [280]= "stinger", [281]= "whats_that", [282]= "witchdoctor_jig", [283]= "backstroke_gesture", [284]= "bazooka", [285]= "cat_dancer_gesture", [286]= "face_me", [287]= "swag_gesture", [288]= "get_burned", [289]= "giddy_up_gesture", [290]= "guitar", [291]= "hang_loose_gesture", [292]= "horn", [293]= "happy_dance", [294]= "jump_gesture", [295]= "loser", [296]= "lute", [297]= "magic_ends_here", [298]= "mag_power_gesture", [299]= "mask_lord", [300]= "poundnpoint", [301]= "robot_gesture", [302]= "taunt_roll_gesture", [303]= "sharp_blade", [304]= "staff_swing", [305]= "groove_gesture", [306]= "telebolt", [307]= "admirals_prow", [308]= "turbulent_teleport", [309]= "timelord_head", [310]= "tree", [311]= "dryad_tree", [312]= "tidehunter_toss_fish", [313]= "enchant_totem", [314]= "trapper", [315]= "twinblade_attack", [316]= "twinblade_attack_b", [317]= "twinblade_attack_c", [318]= "twinblade_attack_d", [319]= "twinblade_attack_injured", [320]= "twinblade_death", [321]= "twinblade_idle", [322]= "twinblade_idle_injured", [323]= "twinblade_idle_rare", [324]= "twinblade_injured_attack_b", [325]= "twinblade_jinada", [326]= "twinblade_jinada_injured", [327]= "twinblade_shuriken_toss", [328]= "twinblade_shuriken_toss_injured", [329]= "twinblade_spawn", [330]= "twinblade_stun", [331]= "twinblade_track", [332]= "twinblade_track_injured", [333]= "twinblade_victory", [334]= "melee", [335]= "backward", [336]= "forward", [337]= "vendetta", [338]= "viridi_set", [339]= "fishstick", [340]= "dogofduty", [341]= "cryAnimationExportNode", [342]= "dog_of_duty", [343]= "dizzying_punch", [344]= "wardstaff", [345]= "glory", [346]= "white", [347]= "tidehunter_yippy", [348]= "rampant", [349]= "overload", [350]="surge", [351]="es_prosperity", [352]="Espada_pistola", [353]="overload_injured", [354]="ss_fortune", [355]="liquid_fire", [356]="jakiro_icemelt", [357]="jakiro_roar", [358]="chakram", [359]="doppelwalk", [360]="enrage", [361]="fast_run", [362]="overpower", [363]="overwhelmingodds", [364]="pregame", [365]="shadow_dance", [366]="shukuchi", [367]="strength", [368]="twinblade_run", [369]="twinblade_run_injured", [370]="windwalk", } function modifier_animation:OnCreated(keys) self.keys = keys if not IsServer() then local stack = keys.stack_count local activity = bit.band(stack, 0x07FF) local rate = bit.rshift(bit.band(stack, 0x7F800), 11) local rest = bit.rshift(bit.band(stack, 0xFFF80000), 19) self.activity = activity self.rate = rate / 20 self.rest = rest --print(self.activity) --print(self.rate) --print(self.rest) self.translate = _CODE_TO_ANIMATION_TRANSLATE[self.rest] else self.translate = keys.translate end end function modifier_animation:GetAttributes() return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE --+ MODIFIER_ATTRIBUTE_MULTIPLE end function modifier_animation:IsHidden() return true end function modifier_animation:IsDebuff() return false end function modifier_animation:IsPurgable() return false end function modifier_animation:DeclareFunctions() local funcs = { MODIFIER_PROPERTY_OVERRIDE_ANIMATION, MODIFIER_PROPERTY_OVERRIDE_ANIMATION_RATE, MODIFIER_PROPERTY_OVERRIDE_ANIMATION_WEIGHT, MODIFIER_PROPERTY_TRANSLATE_ACTIVITY_MODIFIERS, } return funcs end function modifier_animation:GetOverrideAnimation(...) return self.activity end function modifier_animation:GetOverrideAnimationRate(...) return self.rate end function modifier_animation:GetOverrideAnimationWeight(...) return 1 end function modifier_animation:GetActivityTranslationModifiers(...) --print('MA: ', self.translate, IsServer()) return self.translate or 0 end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/modifiers/modifier_animation_freeze.lua ================================================ modifier_animation_freeze = class({}) function modifier_animation_freeze:OnCreated(keys) end function modifier_animation_freeze:GetAttributes() return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE --+ MODIFIER_ATTRIBUTE_MULTIPLE end function modifier_animation_freeze:IsHidden() return true end function modifier_animation_freeze:IsDebuff() return false end function modifier_animation_freeze:IsPurgable() return false end function modifier_animation_freeze:CheckState() local state = { [MODIFIER_STATE_FROZEN] = true, } return state end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/modifiers/modifier_animation_translate.lua ================================================ modifier_animation_translate = class({}) local _CODE_TO_ANIMATION_TRANSLATE = { [0]= "loadout", [1]= "split_shot", [2]= "chemical_rage", [3]= "agedspirit", [4]= "aggressive", [5]= "injured", [6]= "ancient_armor", [7]= "anvil", [8]= "arcana", [9]= "techies_arcana", [10]= "fast", [11]= "faster", [12]= "fastest", [13]= "abysm", [14]= "dualwield", [15]= "forcestaff_friendly", [16]= "phantom_attack", [17]= "snowangel", [18]= "suicide_squad", [19]= "taunt_fullbody", [20]= "armaments_set", [21]= "instagib", [22]= "tidehunter_boat", [23]= "shinobi_tail", [24]= "tidebringer", [25]= "masquerade", [26]= "pyre", [27]= "shinobi", [28]= "immortal", [29]= "cauldron", [30]= "red_moon", [31]= "when_nature_attacks", [32]= "odachi", [33]= "wraith_spin", [34]= "eyeoffetizu", [35]= "berserkers_blood", [36]= "flying", [37]= "frost_arrow", [38]= "manta", [39]= "come_get_it", [40]= "good_day_sir", [41]= "backstab", [42]= "offhand_basher", [43]= "batter_up", [44]= "black", [45]= "haste", [46]= "with_item", [47]= "bot", [48]= "web", [49]= "fountain", [50]= "broodmother_spin", [51]= "burrowed", [52]= "sandking_rubyspire_burrowstrike", [53]= "moth", [54]= "frostivus", [55]= "desolation", [56]= "sm_head", [57]= "chasm", [58]= "greevil_black_hole", [59]= "greevil_blade_fury", [60]= "greevil_bloodlust", [61]= "greevil_cold_snap", [62]= "greevil_decrepify", [63]= "greevil_diabolic_edict", [64]= "greevil_echo_slam", [65]= "greevil_fatal_bonds", [66]= "greevil_ice_wall", [67]= "ancestral_scepter", [68]= "greevil_laguna_blade", [69]= "greevil_leech_seed", [70]= "greevil_magic_missile", [71]= "greevil_maledict", [72]= "greevil_miniboss_black_brain_sap", [73]= "greevil_miniboss_black_nightmare", [74]= "greevil_miniboss_blue_cold_feet", [75]= "greevil_miniboss_blue_ice_vortex", [76]= "greevil_miniboss_green_living_armor", [77]= "greevil_miniboss_green_overgrowth", [78]= "greevil_miniboss_orange_dragon_slave", [79]= "greevil_miniboss_orange_lightstrike_array", [80]= "greevil_miniboss_purple_plague_ward", [81]= "greevil_miniboss_purple_venomous_gale", [82]= "greevil_miniboss_red_earthshock", [83]= "greevil_miniboss_red_overpower", [84]= "greevil_miniboss_white_purification", [85]= "greevil_miniboss_yellow_ion_shell", [86]= "greevil_miniboss_yellow_surge", [87]= "greevil_natures_attendants", [88]= "greevil_phantom_strike", [89]= "greevil_poison_nova", [90]= "greevil_purification", [91]= "greevil_shadow_strike", [92]= "greevil_shadow_wave", [93]= "stalker_exo", [94]= "death_protest", [95]= "nihility", [96]= "deadwinter_soul", [97]= "charge", [98]= "charge_attack", [99]= "iron_surge", [100]= "impatient_maiden", [101]= "glacier", [102]= "snowball", [103]= "corpse_dresstop", [104]= "corpse_dress", [105]= "corpse_scarf", [106]= "unbroken", [107]= "dc_sb_charge", [108]= "dc_sb_charge_attack", [109]= "dc_sb_charge_finish", [110]= "dc_sb_ultimate", [111]= "faces_hakama", [112]= "faces_wraps", [113]= "faces_mask", [114]= "lodestar", [115]= "reincarnate", [116]= "demon_drain", [117]= "divine_sorrow", [118]= "divine_sorrow_loadout", [119]= "divine_sorrow_loadout_spawn", [120]= "divine_sorrow_sunstrike", [121]= "duel_kill", [122]= "forcestaff_enemy", [123]= "fish_slap", [124]= "focusfire", [125]= "fear", [126]= "ftp_dendi_back", [127]= "triumphant_timelord", [128]= "ground_pound", [129]= "harlequin", [130]= "injured_aggressive", [131]= "f2p_doom", [132]= "obsidian_helmet", [133]= "item_style_2", [134]= "blood_chaser", [135]= "manias_mask", [136]= "punch", [137]= "thirst", [138]= "impetus", [139]= "taunt_killtaunt", [140]= "level_1", [141]= "level_2", [142]= "level_3", [143]= "dagger_twirl", [144]= "ancestors_edge", [145]= "ancestors_pauldron", [146]= "ancestors_vambrace", [147]= "bladebiter", [148]= "burning_fiend", [149]= "fiery_soul", [150]= "frostiron_raider", [151]= "obeisance_of_the_keeper", [152]= "salvaged_sword", [153]= "serene_honor", [154]= "shinobi_mask", [155]= "swordonshoulder", [156]= "whalehook", [157]= "winterblight", [158]= "lucentyr", [159]= "lyreleis_breeze", [160]= "mace", [161]= "tinker_rollermaw", [162]= "meld", [163]= "agrressive", [164]= "miniboss", [165]= "moonfall", [166]= "moon_griffon", [167]= "overpower1", [168]= "overpower2", [169]= "overpower3", [170]= "overpower4", [171]= "overpower5", [172]= "overpower6", [173]= "loda", [174]= "dark_wraith", [175]= "pinfold", [176]= "digger", [177]= "portrait_fogheart", [178]= "silent_ripper", [179]= "shake_moneymaker", [180]= "belly_flop", [181]= "roshan", [182]= "am_blink", [183]= "mana_void", [184]= "culling_blade", [185]= "brain_sap", [186]= "fiends_grip", [187]= "roar", [188]= "axes", [189]= "stolen_firefly", [190]= "firefly", [191]= "freezing_field", [192]= "frostbite", [193]= "crystal_nova", [194]= "black_hole", [195]= "fissure", [196]= "slam", [197]= "totem", [198]= "omnislash", [199]= "spin", [200]= "finger", [201]= "impale", [202]= "laguna", [203]= "lsa", [204]= "mana_drain", [205]= "wave", [206]= "leap", [207]= "requiem", [208]= "shadowraze", [209]= "sprout", [210]= "summon", [211]= "teleport", [212]= "wrath", [213]= "darkness", [214]= "void", [215]= "guardian_angel", [216]= "purification", [217]= "repel", [218]= "dismember", [219]= "life_drain", [220]= "hook", [221]= "qop_blink", [222]= "scream", [223]= "shadow_strike", [224]= "sonic_wave", [225]= "ravage", [226]= "snipe", [227]= "stolen_charge", [228]= "strike", [229]= "burrow", [230]= "shrapnel", [231]= "ball_lightning", [232]= "remnant", [233]= "bolt", [234]= "vortex", [235]= "earthshock", [236]= "gale", [237]= "plague_ward", [238]= "poison_nova", [239]= "viper_strike", [240]= "wall", [241]= "ward", [242]= "powershot", [243]= "end", [244]= "windrun", [245]= "windy", [246]= "chase", [247]= "injured rare", [248]= "pegleg", [249]= "start", [250]= "sb_helmet", [251]= "sb_bracers", [252]= "sb_shoulder", [253]= "sb_spear", [254]= "dominator", [255]= "iron", [256]= "sven_shield", [257]= "sven_warcry", [258]= "chicken_gesture", [259]= "emp", [260]= "slasher_weapon", [261]= "slasher_offhand", [262]= "slasher_chest", [263]= "slasher_mask", [264]= "sm_armor", [265]= "sm_shoulder", [266]= "wolfhound", [267]= "great_safari", [268]= "taunt_quickdraw_gesture", [269]= "sparrowhawk_bow", [270]= "sparrowhawk_cape", [271]= "sparrowhawk_quiver", [272]= "sparrowhawk_hood", [273]= "sparrowhawk_shoulder", [274]= "twister", [275]= "sprint", [276]= "sugarrush", [277]= "trickortreat", [278]= "transition", [279]= "torment", [280]= "stinger", [281]= "whats_that", [282]= "witchdoctor_jig", [283]= "backstroke_gesture", [284]= "bazooka", [285]= "cat_dancer_gesture", [286]= "face_me", [287]= "swag_gesture", [288]= "get_burned", [289]= "giddy_up_gesture", [290]= "guitar", [291]= "hang_loose_gesture", [292]= "horn", [293]= "happy_dance", [294]= "jump_gesture", [295]= "loser", [296]= "lute", [297]= "magic_ends_here", [298]= "mag_power_gesture", [299]= "mask_lord", [300]= "poundnpoint", [301]= "robot_gesture", [302]= "taunt_roll_gesture", [303]= "sharp_blade", [304]= "staff_swing", [305]= "groove_gesture", [306]= "telebolt", [307]= "admirals_prow", [308]= "turbulent_teleport", [309]= "timelord_head", [310]= "tree", [311]= "dryad_tree", [312]= "tidehunter_toss_fish", [313]= "enchant_totem", [314]= "trapper", [315]= "twinblade_attack", [316]= "twinblade_attack_b", [317]= "twinblade_attack_c", [318]= "twinblade_attack_d", [319]= "twinblade_attack_injured", [320]= "twinblade_death", [321]= "twinblade_idle", [322]= "twinblade_idle_injured", [323]= "twinblade_idle_rare", [324]= "twinblade_injured_attack_b", [325]= "twinblade_jinada", [326]= "twinblade_jinada_injured", [327]= "twinblade_shuriken_toss", [328]= "twinblade_shuriken_toss_injured", [329]= "twinblade_spawn", [330]= "twinblade_stun", [331]= "twinblade_track", [332]= "twinblade_track_injured", [333]= "twinblade_victory", [334]= "melee", [335]= "backward", [336]= "forward", [337]= "vendetta", [338]= "viridi_set", [339]= "fishstick", [340]= "dogofduty", [341]= "cryAnimationExportNode", [342]= "dog_of_duty", [343]= "dizzying_punch", [344]= "wardstaff", [345]= "glory", [346]= "white", [347]= "tidehunter_yippy", [348]= "rampant", [349]= "overload", [350]="surge", [351]="es_prosperity", [352]="Espada_pistola", [353]="overload_injured", [354]="ss_fortune", [355]="liquid_fire", [356]="jakiro_icemelt", [357]="jakiro_roar", [358]="chakram", [359]="doppelwalk", [360]="enrage", [361]="fast_run", [362]="overpower", [363]="overwhelmingodds", [364]="pregame", [365]="shadow_dance", [366]="shukuchi", [367]="strength", [368]="twinblade_run", [369]="twinblade_run_injured", [370]="windwalk", } function modifier_animation_translate:OnCreated(keys) if not IsServer() then self.translate = _CODE_TO_ANIMATION_TRANSLATE[keys.stack_count] else self.translate = keys.translate end end function modifier_animation_translate:GetAttributes() return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE --+ MODIFIER_ATTRIBUTE_MULTIPLE end function modifier_animation_translate:IsHidden() return true end function modifier_animation_translate:IsDebuff() return false end function modifier_animation_translate:IsPurgable() return false end function modifier_animation_translate:DeclareFunctions() local funcs = { MODIFIER_PROPERTY_TRANSLATE_ACTIVITY_MODIFIERS, } return funcs end function modifier_animation_translate:GetActivityTranslationModifiers(...) --print('TRANSLATE MODIFIER', IsServer()) --print(self.translate) return self.translate or 0 end --[[function modifier_animation_translate:CheckState() local state = { [MODIFIER_STATE_UNSELECTABLE] = true, [MODIFIER_STATE_INVULNERABLE] = true, [MODIFIER_STATE_NOT_ON_MINIMAP] = true, [MODIFIER_STATE_NO_HEALTH_BAR] = true, } return state end]] ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/modifiers/modifier_animation_translate_permanent.lua ================================================ modifier_animation_translate_permanent = class({}) local _CODE_TO_ANIMATION_TRANSLATE = { [0]= "loadout", [1]= "split_shot", [2]= "chemical_rage", [3]= "agedspirit", [4]= "aggressive", [5]= "injured", [6]= "ancient_armor", [7]= "anvil", [8]= "arcana", [9]= "techies_arcana", [10]= "fast", [11]= "faster", [12]= "fastest", [13]= "abysm", [14]= "dualwield", [15]= "forcestaff_friendly", [16]= "phantom_attack", [17]= "snowangel", [18]= "suicide_squad", [19]= "taunt_fullbody", [20]= "armaments_set", [21]= "instagib", [22]= "tidehunter_boat", [23]= "shinobi_tail", [24]= "tidebringer", [25]= "masquerade", [26]= "pyre", [27]= "shinobi", [28]= "immortal", [29]= "cauldron", [30]= "red_moon", [31]= "when_nature_attacks", [32]= "odachi", [33]= "wraith_spin", [34]= "eyeoffetizu", [35]= "berserkers_blood", [36]= "flying", [37]= "frost_arrow", [38]= "manta", [39]= "come_get_it", [40]= "good_day_sir", [41]= "backstab", [42]= "offhand_basher", [43]= "batter_up", [44]= "black", [45]= "haste", [46]= "with_item", [47]= "bot", [48]= "web", [49]= "fountain", [50]= "broodmother_spin", [51]= "burrowed", [52]= "sandking_rubyspire_burrowstrike", [53]= "moth", [54]= "frostivus", [55]= "desolation", [56]= "sm_head", [57]= "chasm", [58]= "greevil_black_hole", [59]= "greevil_blade_fury", [60]= "greevil_bloodlust", [61]= "greevil_cold_snap", [62]= "greevil_decrepify", [63]= "greevil_diabolic_edict", [64]= "greevil_echo_slam", [65]= "greevil_fatal_bonds", [66]= "greevil_ice_wall", [67]= "ancestral_scepter", [68]= "greevil_laguna_blade", [69]= "greevil_leech_seed", [70]= "greevil_magic_missile", [71]= "greevil_maledict", [72]= "greevil_miniboss_black_brain_sap", [73]= "greevil_miniboss_black_nightmare", [74]= "greevil_miniboss_blue_cold_feet", [75]= "greevil_miniboss_blue_ice_vortex", [76]= "greevil_miniboss_green_living_armor", [77]= "greevil_miniboss_green_overgrowth", [78]= "greevil_miniboss_orange_dragon_slave", [79]= "greevil_miniboss_orange_lightstrike_array", [80]= "greevil_miniboss_purple_plague_ward", [81]= "greevil_miniboss_purple_venomous_gale", [82]= "greevil_miniboss_red_earthshock", [83]= "greevil_miniboss_red_overpower", [84]= "greevil_miniboss_white_purification", [85]= "greevil_miniboss_yellow_ion_shell", [86]= "greevil_miniboss_yellow_surge", [87]= "greevil_natures_attendants", [88]= "greevil_phantom_strike", [89]= "greevil_poison_nova", [90]= "greevil_purification", [91]= "greevil_shadow_strike", [92]= "greevil_shadow_wave", [93]= "stalker_exo", [94]= "death_protest", [95]= "nihility", [96]= "deadwinter_soul", [97]= "charge", [98]= "charge_attack", [99]= "iron_surge", [100]= "impatient_maiden", [101]= "glacier", [102]= "snowball", [103]= "corpse_dresstop", [104]= "corpse_dress", [105]= "corpse_scarf", [106]= "unbroken", [107]= "dc_sb_charge", [108]= "dc_sb_charge_attack", [109]= "dc_sb_charge_finish", [110]= "dc_sb_ultimate", [111]= "faces_hakama", [112]= "faces_wraps", [113]= "faces_mask", [114]= "lodestar", [115]= "reincarnate", [116]= "demon_drain", [117]= "divine_sorrow", [118]= "divine_sorrow_loadout", [119]= "divine_sorrow_loadout_spawn", [120]= "divine_sorrow_sunstrike", [121]= "duel_kill", [122]= "forcestaff_enemy", [123]= "fish_slap", [124]= "focusfire", [125]= "fear", [126]= "ftp_dendi_back", [127]= "triumphant_timelord", [128]= "ground_pound", [129]= "harlequin", [130]= "injured_aggressive", [131]= "f2p_doom", [132]= "obsidian_helmet", [133]= "item_style_2", [134]= "blood_chaser", [135]= "manias_mask", [136]= "punch", [137]= "thirst", [138]= "impetus", [139]= "taunt_killtaunt", [140]= "level_1", [141]= "level_2", [142]= "level_3", [143]= "dagger_twirl", [144]= "ancestors_edge", [145]= "ancestors_pauldron", [146]= "ancestors_vambrace", [147]= "bladebiter", [148]= "burning_fiend", [149]= "fiery_soul", [150]= "frostiron_raider", [151]= "obeisance_of_the_keeper", [152]= "salvaged_sword", [153]= "serene_honor", [154]= "shinobi_mask", [155]= "swordonshoulder", [156]= "whalehook", [157]= "winterblight", [158]= "lucentyr", [159]= "lyreleis_breeze", [160]= "mace", [161]= "tinker_rollermaw", [162]= "meld", [163]= "agrressive", [164]= "miniboss", [165]= "moonfall", [166]= "moon_griffon", [167]= "overpower1", [168]= "overpower2", [169]= "overpower3", [170]= "overpower4", [171]= "overpower5", [172]= "overpower6", [173]= "loda", [174]= "dark_wraith", [175]= "pinfold", [176]= "digger", [177]= "portrait_fogheart", [178]= "silent_ripper", [179]= "shake_moneymaker", [180]= "belly_flop", [181]= "roshan", [182]= "am_blink", [183]= "mana_void", [184]= "culling_blade", [185]= "brain_sap", [186]= "fiends_grip", [187]= "roar", [188]= "axes", [189]= "stolen_firefly", [190]= "firefly", [191]= "freezing_field", [192]= "frostbite", [193]= "crystal_nova", [194]= "black_hole", [195]= "fissure", [196]= "slam", [197]= "totem", [198]= "omnislash", [199]= "spin", [200]= "finger", [201]= "impale", [202]= "laguna", [203]= "lsa", [204]= "mana_drain", [205]= "wave", [206]= "leap", [207]= "requiem", [208]= "shadowraze", [209]= "sprout", [210]= "summon", [211]= "teleport", [212]= "wrath", [213]= "darkness", [214]= "void", [215]= "guardian_angel", [216]= "purification", [217]= "repel", [218]= "dismember", [219]= "life_drain", [220]= "hook", [221]= "qop_blink", [222]= "scream", [223]= "shadow_strike", [224]= "sonic_wave", [225]= "ravage", [226]= "snipe", [227]= "stolen_charge", [228]= "strike", [229]= "burrow", [230]= "shrapnel", [231]= "ball_lightning", [232]= "remnant", [233]= "bolt", [234]= "vortex", [235]= "earthshock", [236]= "gale", [237]= "plague_ward", [238]= "poison_nova", [239]= "viper_strike", [240]= "wall", [241]= "ward", [242]= "powershot", [243]= "end", [244]= "windrun", [245]= "windy", [246]= "chase", [247]= "injured rare", [248]= "pegleg", [249]= "start", [250]= "sb_helmet", [251]= "sb_bracers", [252]= "sb_shoulder", [253]= "sb_spear", [254]= "dominator", [255]= "iron", [256]= "sven_shield", [257]= "sven_warcry", [258]= "chicken_gesture", [259]= "emp", [260]= "slasher_weapon", [261]= "slasher_offhand", [262]= "slasher_chest", [263]= "slasher_mask", [264]= "sm_armor", [265]= "sm_shoulder", [266]= "wolfhound", [267]= "great_safari", [268]= "taunt_quickdraw_gesture", [269]= "sparrowhawk_bow", [270]= "sparrowhawk_cape", [271]= "sparrowhawk_quiver", [272]= "sparrowhawk_hood", [273]= "sparrowhawk_shoulder", [274]= "twister", [275]= "sprint", [276]= "sugarrush", [277]= "trickortreat", [278]= "transition", [279]= "torment", [280]= "stinger", [281]= "whats_that", [282]= "witchdoctor_jig", [283]= "backstroke_gesture", [284]= "bazooka", [285]= "cat_dancer_gesture", [286]= "face_me", [287]= "swag_gesture", [288]= "get_burned", [289]= "giddy_up_gesture", [290]= "guitar", [291]= "hang_loose_gesture", [292]= "horn", [293]= "happy_dance", [294]= "jump_gesture", [295]= "loser", [296]= "lute", [297]= "magic_ends_here", [298]= "mag_power_gesture", [299]= "mask_lord", [300]= "poundnpoint", [301]= "robot_gesture", [302]= "taunt_roll_gesture", [303]= "sharp_blade", [304]= "staff_swing", [305]= "groove_gesture", [306]= "telebolt", [307]= "admirals_prow", [308]= "turbulent_teleport", [309]= "timelord_head", [310]= "tree", [311]= "dryad_tree", [312]= "tidehunter_toss_fish", [313]= "enchant_totem", [314]= "trapper", [315]= "twinblade_attack", [316]= "twinblade_attack_b", [317]= "twinblade_attack_c", [318]= "twinblade_attack_d", [319]= "twinblade_attack_injured", [320]= "twinblade_death", [321]= "twinblade_idle", [322]= "twinblade_idle_injured", [323]= "twinblade_idle_rare", [324]= "twinblade_injured_attack_b", [325]= "twinblade_jinada", [326]= "twinblade_jinada_injured", [327]= "twinblade_shuriken_toss", [328]= "twinblade_shuriken_toss_injured", [329]= "twinblade_spawn", [330]= "twinblade_stun", [331]= "twinblade_track", [332]= "twinblade_track_injured", [333]= "twinblade_victory", [334]= "melee", [335]= "backward", [336]= "forward", [337]= "vendetta", [338]= "viridi_set", [339]= "fishstick", [340]= "dogofduty", [341]= "cryAnimationExportNode", [342]= "dog_of_duty", [343]= "dizzying_punch", [344]= "wardstaff", [345]= "glory", [346]= "white", [347]= "tidehunter_yippy", [348]= "rampant", [349]= "overload", [350]="surge", [351]="es_prosperity", [352]="Espada_pistola", [353]="overload_injured", [354]="ss_fortune", [355]="liquid_fire", [356]="jakiro_icemelt", [357]="jakiro_roar", [358]="chakram", [359]="doppelwalk", [360]="enrage", [361]="fast_run", [362]="overpower", [363]="overwhelmingodds", [364]="pregame", [365]="shadow_dance", [366]="shukuchi", [367]="strength", [368]="twinblade_run", [369]="twinblade_run_injured", [370]="windwalk", } function modifier_animation_translate_permanent:OnCreated(keys) if not IsServer() then self.translate = _CODE_TO_ANIMATION_TRANSLATE[keys.stack_count] else self.translate = keys.translate end end function modifier_animation_translate_permanent:GetAttributes() return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE --+ MODIFIER_ATTRIBUTE_MULTIPLE end function modifier_animation_translate_permanent:IsHidden() return true end function modifier_animation_translate_permanent:IsDebuff() return false end function modifier_animation_translate_permanent:IsPurgable() return false end function modifier_animation_translate_permanent:DeclareFunctions() local funcs = { MODIFIER_PROPERTY_TRANSLATE_ACTIVITY_MODIFIERS, } return funcs end function modifier_animation_translate_permanent:GetActivityTranslationModifiers(...) --print('TRANSLATE MODIFIER', IsServer()) --print(self.translate) return self.translate or 0 end --[[function modifier_animation_translate_permanent:CheckState() local state = { [MODIFIER_STATE_UNSELECTABLE] = true, [MODIFIER_STATE_INVULNERABLE] = true, [MODIFIER_STATE_NOT_ON_MINIMAP] = true, [MODIFIER_STATE_NO_HEALTH_BAR] = true, } return state end]] ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/modifiers/modifier_shopkeeper.lua ================================================ modifier_shopkeeper = class({}) function modifier_shopkeeper:DeclareFunctions() local funcs = { --MODIFIER_PROPERTY_DISABLE_AUTOATTACK, MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL, MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL, MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE, MODIFIER_PROPERTY_MIN_HEALTH, } return funcs end function modifier_shopkeeper:CheckState() local state = { --[MODIFIER_STATE_OUT_OF_GAME] = true, [MODIFIER_STATE_MAGIC_IMMUNE] = true, --[MODIFIER_STATE_ATTACK_IMMUNE] = true, --[MODIFIER_STATE_NIGHTMARED] = true, [MODIFIER_STATE_NO_HEALTH_BAR] = true, --[MODIFIER_STATE_UNSELECTABLE] = true, } return state end function modifier_shopkeeper:GetAbsoluteNoDamageMagical() return 1 end function modifier_shopkeeper:GetAbsoluteNoDamagePhysical() return 1 end function modifier_shopkeeper:GetAbsoluteNoDamagePure() return 1 end function modifier_shopkeeper:GetMinHealth() return 1 end function modifier_shopkeeper:IsHidden() return false--true end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/modmaker.lua ================================================ MODMAKER_VERSION = "0.80" require('libraries/timers') --[[ ModMaker Library by BMD Installation -"require" this file inside your code in order to make the ModMaker API available in game -Ensure that this file is placed in the vscripts/libraries path -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. -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. -Ensure that you have the modmaker/modmaker.css in your panorama content styles folder. -Ensure that modmaker/modmaker.xml is included in your custom_ui_manifest.xml with Library Usage -The library when required in registers the "modmaker_api" console command (if in tools mode) -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. -This API is based on the actual server vscript itself, and as such is always up to date and accurate (to the Valve docs). -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. ]] if not ModMaker then ModMaker = class({}) end local mask = 0xBF local mark = 0x80 local fbm = { 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC } local UTF8extra = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 } local UTFMagicOffsets = { 0x00000000, 0x00003080, 0x000E2080, 0x03C82080, 0xFA082080, 0x82082080 } local function utf16to8(str) local out = {} for i=1,str:len(),2 do local b = bit.lshift(str:byte(i+1), 8) + str:byte(i) local tow = 1 if b < 0x80 then tow = 1 elseif b < 0x800 then tow = 2 elseif b < 0x10000 then tow = 3 elseif b < 0x110000 then tow = 4 end --print(b,tow) local toww = tow local r = {} if tow == 4 then r[4] = string.char(bit.band(bit.bor(b, mark), mask)) b = bit.rshift(b,6) tow = tow - 1 end if tow == 3 then r[3] = string.char(bit.band(bit.bor(b, mark), mask)) b = bit.rshift(b,6) tow = tow - 1 end if tow == 2 then r[2] = string.char(bit.band(bit.bor(b, mark), mask)) b = bit.rshift(b,6) tow = tow - 1 end if tow == 1 then r[1] = table.insert(out, string.char(bit.bor(b, fbm[toww]))) b = bit.rshift(b,6) tow = tow - 1 end for j=1,#r do table.insert(out, r[j]) end end return table.concat(out) end local function utf8to16(str) local out = {} local i = 1 while i<=str:len() do local b = str:byte(i) local extra = UTF8extra[b+1]; local ex = extra local c = 0 if ex == 3 then c = bit.lshift(c + b, 6) i = i+1 b = str:byte(i) ex = ex - 1 end if ex == 2 then c = bit.lshift(c + b, 6) i = i+1 b = str:byte(i) ex = ex - 1 end if ex == 1 then c = bit.lshift(c + b, 6) i = i+1 b = str:byte(i) ex = ex - 1 end if ex == 0 then c = c + b i = i+1 end --print(extra, c, UTFMagicOffsets[extra+1], c - UTFMagicOffsets[extra+1]) c = c - UTFMagicOffsets[extra+1] table.insert(out, string.char(bit.band(c, 0x00FF))) table.insert(out, string.char(bit.rshift(c, 8))) end return table.concat(out) end local function GetAPI(t, sub, done) --print ( string.format ('PrintTable type %s', type(keys)) ) if type(t) ~= "table" then return end done = done or {} done[t] = true sub = sub or ModMaker.api local l = {} for k, v in pairs(t) do table.insert(l, k) end local ret = nil table.sort(l) for k, v in ipairs(l) do -- Ignore FDesc if v == 'CDesc' then --print('======================') --PrintTable(t[v]) --print('======================') GetAPI (t[v], nil, done) ret = true elseif v ~= 'FDesc' then local value = t[v] if type(value) == "table" and not done[value] then done [value] = true if type(v) == "string" and v:sub(1,1):find("[A-Z]") then v = v:gsub("CDOTA_", "") v = v:gsub("CDOTA", "") if v:sub(2,2):find("[A-Z]") then v = v:sub(2) end local temp = {} local r = GetAPI (value, temp, done) if r then sub[v] = temp ret = true end end elseif type(value) == "userdata" and not done[value] then --done [value] = true --GetAPI ((getmetatable(value) and getmetatable(value).__index) or getmetatable(value), sub, done) else if t.FDesc and t.FDesc[v] then local func, desc = string.match(tostring(t.FDesc[v]), "(.*)\n(.*)") if sub == ModMaker.api then ModMaker.api.__GLOBAL__[v] = {f=func,d=desc} else sub[v] = {f=func,d=desc} end ret = true end end end end return ret end function ModMaker:start() if not __ACTIVATE_HOOK then __ACTIVATE_HOOK = {funcs={}} setmetatable(__ACTIVATE_HOOK, { __call = function(t, func) table.insert(t.funcs, func) end }) debug.sethook(function(...) local info = debug.getinfo(2) local src = tostring(info.short_src) local name = tostring(info.name) if name ~= "__index" then if string.find(src, "addon_game_mode") then if GameRules:GetGameModeEntity() then for _, func in ipairs(__ACTIVATE_HOOK.funcs) do local status, err = pcall(func) if not status then print("__ACTIVATE_HOOK callback error: " .. err) end end debug.sethook(nil, "c") end end end end, "c") end --[[__ACTIVATE_HOOK(function() print('activate hook called') local mode = GameRules:GetGameModeEntity() mode:SetExecuteOrderFilter(Dynamic_Wrap(ModMaker, 'OrderFilter'), ModMaker) ModMaker.oldFilter = mode.SetExecuteOrderFilter mode.SetExecuteOrderFilter = function(mode, fun, context) --print('SetExecuteOrderFilter', fun, context) ModMaker.nextFilter = fun ModMaker.nextContext = context end ModMaker.initialized = true end)]] self.api = {__GLOBAL__ = {}} local src = debug.getinfo(1).source --print(src) self.gameDir = "" self.contentDir = "" self.addonName = "" self.gameFiles = {} self.contentFiles = {} if src:sub(2):find("(.*dota 2 beta[\\/]game[\\/]dota_addons[\\/])([^\\/]+)[\\/]") then self.gameDir, self.addonName = string.match(src:sub(2), "(.*dota 2 beta[\\/]game[\\/]dota_addons[\\/])([^\\/]+)[\\/]") self.contentDir = self.gameDir:gsub("\\game\\dota_addons\\", "\\content\\dota_addons\\") self.initialized = true Convars:RegisterCommand( "modmaker_api", Dynamic_Wrap(ModMaker, 'ModMakerAPI'), "Show the ModMaker lua API for a serachable listing of the server lua vscript.", FCVAR_CHEAT ) CustomGameEventManager:RegisterListener("ModMaker_OpenGithub", Dynamic_Wrap(ModMaker, "ModMaker_OpenGithub")) else SendToServerConsole("script_reload_code " .. src:sub(2)) end --print(ModMaker.addonName) --print(ModMaker.contentDir ) --print(ModMaker.gameDir) end function ModMaker:ModMaker_OpenGithub(msg) local search = msg.search local language = msg.language print("ModMaker_OpenGithub",search,language) local url = "https://github.com/search?utf8=%E2%9C%93&q=" .. search .. "&l=" .. language .. "&type=Code" local t = io.popen("start \"Browser\" \"" .. url .. "\"") t:lines() end function ModMaker:ModMakerAPI() if not ModMaker.apiBuilt then ModMaker.apiBuilt = true ModMaker:BuildAPI() CustomGameEventManager:Send_ServerToAllClients("modmaker_lua_api", {api=ModMaker.api}) else CustomGameEventManager:Send_ServerToAllClients("modmaker_lua_api", {}) end end function ModMaker:BuildAPI() GetAPI(_G) end function ModMaker:LoadFile(fileName, content) local dir = self.gameDir if content then dir = self.contentDir end local src = dir .. self.addonName .. "/" .. fileName local file = io.open(src, "rb") local str = {} local temp = nil local total = 0 while 1 do temp = file:read("*all") if temp == nil or temp == "" then break end table.insert(str,temp) end local str = table.concat(str) if str:byte(1) == 0xFF and str:byte(2) == 0xFE then print("UCS2LE") str = utf16to8(str:sub(3)) end if content then self.contentFiles[fileName] = str else self.gameFiles[fileName] = str end end function ModMaker:SendFile(fileName, content) local str = self.gameFiles[fileName] if content then str = self.contentFiles[fileName] end if str == nil then print("No file to send, " .. fileName) end local msg = 1 local max = math.floor((str:len()-1) / 500000) + 1 for i=1,str:len(),500000 do local rest = math.min(str:len() - i+1, 500000) print("ASD",i,rest) local r = {} for j=i,i+rest,32000 do local rest2 = math.min(i+rest - j, 32000) print(j, rest2, j+rest2-1) table.insert(r, str:sub(j,j+rest2-1)) end if msg == 1 then CustomGameEventManager:Send_ServerToAllClients("modmaker_send_file", {name=fileName, count=msg, max=max, t=r}) else local c = msg Timers(msg*1/30, function() CustomGameEventManager:Send_ServerToAllClients("modmaker_send_file", {name=fileName, count=c, max=max, t=r}) end) end msg = msg + 1 end end if not ModMaker.initialized and IsInToolsMode() then ModMaker:start() end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/notifications.lua ================================================ NOTIFICATIONS_VERSION = "1.00" --[[ Sample Panorama Notifications Library by BMD Installation -"require" this file inside your code in order to gain access to the Notifications class for sending notifications to players, teams, or all clients. -Ensure that you have the barebones_notifications.xml, barebones_notifications.js, and barebones_notifications.css files in your panorama content folder. -Ensure that barebones_notifications.xml is included in your custom_ui_manifest.xml with Usage -Notifications can be sent to the Top or Bottom notification panel of an individual player, a whole team, or all clients at once. -Notifications can be sent in pieces consisting of Labels, Images, HeroImages, and AbilityImages. -Notifications are specified by a table which has 4 potential parameters: -duration: The duration to display the notification for on screen. Ignored for a notification which "continues" a previous notification line. -class: An optional (leave as nil for default) string which will be used as the class to add to the notification piece. -style: An optional (leave as nil for default) table of css properties to add to this notification, such as {["font-size"]="60px", color="green"}. -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'. This lets you place multiple individual notification pieces on the same overall notification. -For Labels, there is one additional mandatory parameter: -text: The text to display in the notification. Can provide localization tokens ("#addonname") or non-localized text. -For HeroImages, there is two additional parameters: -hero: (Mandatory) The hero name, e.g. "npc_dota_hero_axe". -imagestyle: (Optional) The image style to display for this hero image. Default when 'nil' is 'icon'. 'portrait' and 'landscape' are two other options. -For AboilityImages, there is one additional mandatory parameter: -ability: The ability name, e.g. "lina_fiery_soul". -For Images, there is one additional mandatory parameter: -image: The image src string, e.g. "file://{images}/status_icons/dota_generic.psd". -For ItemImages, there is one additional mandatory parameter: -item: The item name, e.g. "item_force_staff". -Notifications can be removed from the Top/Bottom or cleared -Call the Notifications:Top, Notifications:TopToAll, or Notifications:TopToTeam to send a top-area notification to the appropriate players -Call the Notifications:Bottom, Notifications:BottomToAll, or Notifications:BottomToTeam to send a bottom-area notifications to the appropriate players -Call the Notifications:ClearTop, Notifications:ClearTopFromAll, or Notifications:ClearTopFromTeam to clear all existing top-area notifications from appropriate players -Call the Notifications:ClearBottom, Notifications:ClearBottomFromAll, or Notifications:ClearBottomFromTeam to clear all existing bottom-area notifications from appropriate players -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 -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 Examples: -- Send a notification to all players that displays up top for 5 seconds Notifications:TopToAll({text="Top Notification for 5 seconds ", duration=5.0}) -- 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 Notifications:Top(0, {text="GREEEENNNN", duration=9, style={color="green"}, continue=true}) -- Display 3 styles of hero icons on the same line for 5 seconds. Notifications:TopToAll({hero="npc_dota_hero_axe", duration=5.0}) Notifications:TopToAll({hero="npc_dota_hero_axe", imagestyle="landscape", continue=true}) Notifications:TopToAll({hero="npc_dota_hero_axe", imagestyle="portrait", continue=true}) -- Display a generic image and then 2 ability icons and an item on the same line for 5 seconds Notifications:TopToAll({image="file://{images}/status_icons/dota_generic.psd", duration=5.0}) Notifications:TopToAll({ability="nyx_assassin_mana_burn", continue=true}) Notifications:TopToAll({ability="lina_fiery_soul", continue=true}) Notifications:TopToAll({item="item_force_staff", continue=true}) -- 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 Notifications:BottomToTeam(DOTA_TEAM_GOODGUYS, {text="AAAAAAAAAAAAAA", duration=10, class="NotificationMessage"}) -- Send a notification to player 0 which will display near the bottom a large red notification with a solid blue border for 5 seconds Notifications:Bottom(PlayerResource:GetPlayer(0), {text="Super Size Red", duration=5, style={color="red", ["font-size"]="110px", border="10px solid blue"}}) -- Remove 1 bottom and 2 top notifications 2 seconds later Timers:CreateTimer(2,function() Notifications:RemoveTop(0, 2) Notifications:RemoveBottomFromTeam(DOTA_TEAM_GOODGUYS, 1) -- Add 1 more notification to the bottom Notifications:BottomToAll({text="GREEEENNNN again", duration=9, style={color="green"}}) end) -- Clear all notifications from the bottom Timers:CreateTimer(7, function() Notifications:ClearBottomFromAll() end) ]] if Notifications == nil then Notifications = class({}) end function Notifications:ClearTop(player) Notifications:RemoveTop(player, 50) end function Notifications:ClearBottom(player) Notifications:RemoveBottom(player, 50) end function Notifications:ClearTopFromAll() Notifications:RemoveTopFromAll(50) end function Notifications:ClearBottomFromAll() Notifications:RemoveBottomFromAll(50) end function Notifications:ClearTopFromTeam(team) Notifications:RemoveTopFromTeam(team, 50) end function Notifications:ClearBottomFromTeam(team) Notifications:RemoveBottomFromTeam(team, 50) end function Notifications:RemoveTop(player, count) if type(player) == "number" then player = PlayerResource:GetPlayer(player) end CustomGameEventManager:Send_ServerToPlayer(player, "top_remove_notification", {count=count} ) end function Notifications:RemoveBottom(player, count) if type(player) == "number" then player = PlayerResource:GetPlayer(player) end CustomGameEventManager:Send_ServerToPlayer(player, "bottom_remove_notification", {count=count}) end function Notifications:RemoveTopFromAll(count) CustomGameEventManager:Send_ServerToAllClients("top_remove_notification", {count=count} ) end function Notifications:RemoveBottomFromAll(count) CustomGameEventManager:Send_ServerToAllClients("bottom_remove_notification", {count=count}) end function Notifications:RemoveTopFromTeam(team, count) CustomGameEventManager:Send_ServerToTeam(team, "top_remove_notification", {count=count} ) end function Notifications:RemoveBottomFromTeam(team, count) CustomGameEventManager:Send_ServerToTeam(team, "bottom_remove_notification", {count=count}) end function Notifications:Top(player, table) if type(player) == "number" then player = PlayerResource:GetPlayer(player) end if table.text ~= nil then CustomGameEventManager:Send_ServerToPlayer(player, "top_notification", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.hero ~= nil then CustomGameEventManager:Send_ServerToPlayer(player, "top_notification", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.image ~= nil then CustomGameEventManager:Send_ServerToPlayer(player, "top_notification", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.ability ~= nil then CustomGameEventManager:Send_ServerToPlayer(player, "top_notification", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.item ~= nil then CustomGameEventManager:Send_ServerToPlayer(player, "top_notification", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) else CustomGameEventManager:Send_ServerToPlayer(player, "top_notification", {text="No TEXT provided.", duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) end end function Notifications:TopToAll(table) if table.text ~= nil then CustomGameEventManager:Send_ServerToAllClients("top_notification", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.hero ~= nil then CustomGameEventManager:Send_ServerToAllClients("top_notification", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.image ~= nil then CustomGameEventManager:Send_ServerToAllClients("top_notification", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.ability ~= nil then CustomGameEventManager:Send_ServerToAllClients("top_notification", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.item ~= nil then CustomGameEventManager:Send_ServerToAllClients("top_notification", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) else CustomGameEventManager:Send_ServerToAllClients("top_notification", {text="No TEXT provided.", duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) end end function Notifications:TopToTeam(team, table) if table.text ~= nil then CustomGameEventManager:Send_ServerToTeam(team, "top_notification", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.hero ~= nil then CustomGameEventManager:Send_ServerToTeam(team, "top_notification", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.image ~= nil then CustomGameEventManager:Send_ServerToTeam(team, "top_notification", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.ability ~= nil then CustomGameEventManager:Send_ServerToTeam(team, "top_notification", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.item ~= nil then CustomGameEventManager:Send_ServerToTeam(team, "top_notification", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) else CustomGameEventManager:Send_ServerToTeam(team, "top_notification", {text="No TEXT provided.", duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) end end function Notifications:Bottom(player, table) if type(player) == "number" then player = PlayerResource:GetPlayer(player) end if table.text ~= nil then CustomGameEventManager:Send_ServerToPlayer(player, "bottom_notification", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.hero ~= nil then CustomGameEventManager:Send_ServerToPlayer(player, "bottom_notification", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.image ~= nil then CustomGameEventManager:Send_ServerToPlayer(player, "bottom_notification", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.ability ~= nil then CustomGameEventManager:Send_ServerToPlayer(player, "bottom_notification", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.item ~= nil then CustomGameEventManager:Send_ServerToPlayer(player, "bottom_notification", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) else CustomGameEventManager:Send_ServerToPlayer(player, "bottom_notification", {text="No TEXT provided.", duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) end end function Notifications:BottomToAll(table) if table.text ~= nil then CustomGameEventManager:Send_ServerToAllClients("bottom_notification", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.hero ~= nil then CustomGameEventManager:Send_ServerToAllClients("bottom_notification", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.image ~= nil then CustomGameEventManager:Send_ServerToAllClients("bottom_notification", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.ability ~= nil then CustomGameEventManager:Send_ServerToAllClients("bottom_notification", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.item ~= nil then CustomGameEventManager:Send_ServerToAllClients("bottom_notification", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) else CustomGameEventManager:Send_ServerToAllClients("bottom_notification", {text="No TEXT provided.", duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) end end function Notifications:BottomToTeam(team, table) if table.text ~= nil then CustomGameEventManager:Send_ServerToTeam(team, "bottom_notification", {text=table.text, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.hero ~= nil then CustomGameEventManager:Send_ServerToTeam(team, "bottom_notification", {hero=table.hero, imagestyle=table.imagestyle, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.image ~= nil then CustomGameEventManager:Send_ServerToTeam(team, "bottom_notification", {image=table.image, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.ability ~= nil then CustomGameEventManager:Send_ServerToTeam(team, "bottom_notification", {ability=table.ability, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) elseif table.item ~= nil then CustomGameEventManager:Send_ServerToTeam(team, "bottom_notification", {item=table.item, duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) else CustomGameEventManager:Send_ServerToTeam(team, "bottom_notification", {text="No TEXT provided.", duration=table.duration, class=table.class, style=table.style, continue=table.continue} ) end end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/pathgraph.lua ================================================ PATHGRAPH_VERSION = "0.80" --[[ Path Graph Instantiation Library by BMD Installation -"require" this file inside your code in order to gain access to the PathGraph global and functions. Usage -PathGraph:Initialize() should be called sometime during your game mode's initialization. -The Initialize function will find all of the connecting "path_corner" entities as placed on your map via hammer and connect them. -Each "path_corner" entity after Initialize will have a "edges" property containing a full edge graph for that node to all other connected nodes. -PathGraph:DrawPaths(pathCorner, duration, color) should be called for debugging purposes in order to show the path graph connections. -pathCorner is the path_corner entity to display the connected graph for. -duration is the duration to display the graph -color is the color to use for the graph lines and nodes Notes -Currently only supports path_corner and not path_track Examples: --Initialize the graph PathGraph:Initialize() --Iterate through all connected edges starting from a path_corner node named "start_node" local node = Entities:FindByName(nil, "start_node") for _,edge in pairs(node.edges) do print("'start_node' is connected to '" .. edge:GetName() .. "'") end ]] if not PathGraph then PathGraph = class({}) end local TableCount = function(t) local n = 0 for _ in pairs( t ) do n = n + 1 end return n end function PathGraph:Initialize() local corners = Entities:FindAllByClassname('path_corner') local points = {} for _,corner in ipairs(corners) do points[corner:entindex()] = corner end local names = {} for _,corner in ipairs(corners) do local name = corner:GetName() if names[name] ~= nil then print("[PathGraph] Initialization error, duplicate path_corner named '" .. name .. "' found. Skipping...") else local parents = Entities:FindAllByTarget(corner:GetName()) corner.edges = corner.edges or {} for _,parent in ipairs(parents) do corner.edges[parent:entindex()] = parent parent.edges = parent.edges or {} parent.edges[corner:entindex()] = corner end end end end function PathGraph:DrawPaths(pathCorner, duration, color) duration = duration or 10 color = color or Vector(255,255,255) if pathCorner ~= nil then if pathCorner:GetClassname() ~= "path_corner" or pathCorner.edges == nil then print("[PathGraph] An invalid path_corner was passed to PathGraph:DrawPaths.") return end local seen = {} local toDo = {pathCorner} repeat local corner = table.remove(toDo) local edges = corner.edges DebugDrawCircle(corner:GetAbsOrigin(), color, 50, 20, true, duration) seen[corner:entindex()] = corner for index,edge in pairs(edges) do if seen[index] == nil then DebugDrawLine_vCol(corner:GetAbsOrigin(), edge:GetAbsOrigin(), color, true, duration) table.insert(toDo, edge) end end until (#toDo == 0) else local corners = Entities:FindAllByClassname('path_corner') local points = {} for _,corner in ipairs(corners) do points[corner:entindex()] = corner end repeat local seen = {} local k,v = next(points) local toDo = {v} repeat local corner = table.remove(toDo) points[corner:entindex()] = nil local edges = corner.edges DebugDrawCircle(corner:GetAbsOrigin(), color, 50, 20, true, duration) seen[corner:entindex()] = corner for index,edge in pairs(edges) do if seen[index] == nil then DebugDrawLine_vCol(corner:GetAbsOrigin(), edge:GetAbsOrigin(), color, true, duration) table.insert(toDo, edge) end end until (#toDo == 0) until (TableCount(points) == 0) end end --PathGraph:Initialize() GameRules.PathGraph = PathGraph ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/physics.lua ================================================ PHYSICS_VERSION = "1.01" PHYSICS_NAV_NOTHING = 0 PHYSICS_NAV_HALT = 1 PHYSICS_NAV_SLIDE = 2 PHYSICS_NAV_BOUNCE = 3 PHYSICS_NAV_GROUND = 4 PHYSICS_GROUND_NOTHING = 0 PHYSICS_GROUND_ABOVE = 1 PHYSICS_GROUND_LOCK = 2 COLLIDER_SPHERE = 0 COLLIDER_BOX = 1 COLLIDER_AABOX = 2 PHYSICS_THINK = 0.01 if Physics == nil then print ( '[PHYSICS] creating Physics' ) Physics = {} Physics.__index = Physics end function IsPhysicsUnit(unit) return unit.GetPhysicsVelocity ~= nil end function Physics:new( o ) o = o or {} setmetatable( o, Physics ) return o end ColliderProfiles = {} function ColliderProfiles:new(o) o = o or {} setmetatable(o, self) self.__index = self return o end function Physics:start() Physics = self if self.thinkEnt == nil then self.timers = {} self.Colliders = {} self.ColliderProfiles = {} self.anggrid = nil self.offsetX = nil self.offsetY = nil self.colliderSkipOffset = 0 self.frameCount = 0 --self.thinkEnt = Entities:CreateByClassname("info_target") -- Entities:FindByClassname(nil, 'CWorld') self.thinkEnt = SpawnEntityFromTableSynchronous("info_target", {targetname="physics_lua_thinker"}) --wspawn:SetContextThink("PhysicsThink", Dynamic_Wrap( Physics, 'Think' ), PHYSICS_THINK ) self.thinkEnt:SetThink("Think", self, "physics", PHYSICS_THINK) Convars:RegisterCommand( "phystest", Dynamic_Wrap(Physics, 'PhysicsTestCommand'), "Test different Physics library commands", FCVAR_CHEAT ) end end function Physics:CreateColliderProfile(name, profile) self.ColliderProfiles[name] = ColliderProfiles:new(profile) profile.name = name return self.ColliderProfiles[name] end function Physics:ColliderFromProfile(name, collider) return self.ColliderProfiles[name]:new(collider) end function Physics:AddCollider(name, collider) if type(name) == "table" then collider = name name = DoUniqueString("collider") end collider.skipOffset = self.colliderSkipOffset self.colliderSkipOffset = self.colliderSkipOffset + 1 collider.name = name self.Colliders[name] = collider return collider end function Physics:RemoveCollider(name) if type(name) == "table" then name = name.name end local collider = self.Colliders[name] if collider == nil then return end if collider.unit ~= nil and collider.unit.oColliders[collider.name] ~= nil then collider.unit.oColliders[collider.name] = nil end self.Colliders[name] = nil end function Physics:Think() if GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then return end -- Track game time, since the dt passed in to think is actually wall-clock time not simulation time. local now = GameRules:GetGameTime() --print("now: " .. now) if Physics.t0 == nil then Physics.t0 = now end local dt = now - Physics.t0 Physics.t0 = now self.frameCount = self.frameCount + 1 -- Process timers for k,v in pairs(Physics.timers) do -- Run the callback local status, nextCall = pcall(v.callback, Physics, v) -- Make sure it worked if status then -- Check if it needs to loop if nextCall then -- Change it's end time v.endTime = nextCall else Physics.timers[k] = nil end -- Update timer data --self:UpdateTimerData() else -- Nope, handle the error Physics.timers[k] = nil print('[PHYSICS] Timer error:' .. nextCall) end end if dt > 0 then for name,collider in pairs(Physics.Colliders) do if collider.skipFrames == 0 or ((self.frameCount + collider.skipOffset) % (collider.skipFrames + 1) == 0) then if collider.type == COLLIDER_SPHERE then local rad2 = collider.radius * collider.radius local unit = collider.unit if IsValidEntity(unit) then if collider.draw then local alpha = 0 local color = Vector(200,0,0) if type(collider.draw) == "table" then alpha = collider.draw.alpha or alpha color = collider.draw.color or color end DebugDrawCircle(unit:GetAbsOrigin(), color, alpha, collider.radius, true, .01) end local ents = nil if collider.filter then if type(collider.filter) == "table" then ents = collider.filter else local status = nil status, ents = pcall(collider.filter, collider) if not status then print('[PHYSICS] Collision Filter Failure!: ' .. ents) end end else ents = Entities:FindAllInSphere(unit:GetAbsOrigin(), collider.radius + 200) end for k,v in pairs(ents) do if IsValidEntity(v) and IsValidEntity(unit) and v ~= unit and rad2 >= VectorDistanceSq(unit:GetAbsOrigin(), v:GetAbsOrigin()) then local status, test = pcall(collider.test, collider, unit, v) if not status then print('[PHYSICS] Collision Test Failure!: ' .. test) elseif test then if collider.preaction then local status, action = pcall(collider.preaction, collider, unit, v) if not status then print('[PHYSICS] Collision preaction Failure!: ' .. action) end end local status, action = pcall(collider.action, collider, unit, v) if not status then print('[PHYSICS] Collision action Failure!: ' .. action) end if collider.postaction then local status, action = pcall(collider.postaction, collider, unit, v) if not status then print('[PHYSICS] Collision postaction Failure!: ' .. action) end end --unit.nNextCollide = now + collider.recollideTime --v.nNextCollide = now + v.collider.recollideTime end end end else Physics:RemoveCollider(name) end elseif collider.type == COLLIDER_BOX then -- box collider local box = collider.box if box.recalculate or box.ad2 == nil then collider.box = Physics:PrecalculateBox(box) end if collider.draw then local alpha = 5 local color = Vector(200,0,0) if type(collider.draw) == "table" then alpha = collider.draw.alpha or alpha color = collider.draw.color or color end if not collider.box.drawAngle then Physics:PrecalculateBoxDraw(collider.box) end 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) end local ents = nil if collider.filter then if type(collider.filter) == "table" then ents = collider.filter else local status = nil status, ents = pcall(collider.filter, collider) if not status then print('[PHYSICS] Collision Filter Failure!: ' .. ents) end end else ents = Entities:FindAllInSphere(box.center, box.radius + 200) end for k,v in pairs(ents) do if IsValidEntity(v) then local pos = v:GetAbsOrigin() if (pos.z >= box.zMin and pos.z <= box.zMax) then pos.z = 0 local am = pos - box.a local amDotAb = am:Dot(box.ab) if amDotAb > 0 and amDotAb < box.ab2 then local amDotAd = am:Dot(box.ad) if amDotAd > 0 and amDotAd < box.ad2 then --inside local status, test = pcall(collider.test, collider, v) if not status then print('[PHYSICS] Collision Test Failure!: ' .. test) elseif test then if collider.preaction then local status, action = pcall(collider.preaction, collider, box, v) if not status then print('[PHYSICS] Collision preaction Failure!: ' .. action) end end local status, action = pcall(collider.action, collider, box, v) if not status then print('[PHYSICS] Collision action Failure!: ' .. action) end if collider.postaction then local status, action = pcall(collider.postaction, collider, box, v) if not status then print('[PHYSICS] Collision postaction Failure!: ' .. action) end end end end end end end end elseif collider.type == COLLIDER_AABOX then -- box collider local box = collider.box if box.recalculate or box.xMin == nil then collider.box = Physics:PrecalculateAABox(box) end if collider.draw then local alpha = 5 local color = Vector(200,0,0) if type(collider.draw) == "table" then alpha = collider.draw.alpha or alpha color = collider.draw.color or color end 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) end local ents = nil if collider.filter then if type(collider.filter) == "table" then ents = collider.filter else local status = nil status, ents = pcall(collider.filter, collider) if not status then print('[PHYSICS] Collision Filter Failure!: ' .. ents) end end else ents = Entities:FindAllInSphere(box.center, box.radius + 200) end for k,v in pairs(ents) do if IsValidEntity(v) then local pos = v:GetAbsOrigin() if (pos.x >= box.xMin and pos.x <= box.xMax and pos.y >= box.yMin and pos.y <= box.yMax and pos.z >= box.zMin and pos.z <= box.zMax) then --inside local status, test = pcall(collider.test, collider, v) if not status then print('[PHYSICS] Collision Test Failure!: ' .. test) elseif test then if collider.preaction then local status, action = pcall(collider.preaction, collider, box, v) if not status then print('[PHYSICS] Collision preaction Failure!: ' .. action) end end local status, action = pcall(collider.action, collider, box, v) if not status then print('[PHYSICS] Collision action Failure!: ' .. action) end if collider.postaction then local status, action = pcall(collider.postaction, collider, box, v) if not status then print('[PHYSICS] Collision postaction Failure!: ' .. action) end end end end end end end end end end return PHYSICS_THINK end function Physics:CreateTimer(name, args) if not args.endTime or not args.callback then print("Invalid timer created: "..name) return end Physics.timers[name] = args end function Physics:RemoveTimer(name) Physics.timers[name] = nil end function Physics:RemoveTimers(killAll) local timers = {} if not killAll then for k,v in pairs(Physics.timers) do if v.persist then timers[k] = v end end end Physics.timers = timers end --[[ sequence: {"type", Physics_LINEAR, Physics_CURVED, Physics_SPLIT LINEAR "distance" or "time" or "to" "toward" or "angle" or "to" "from" or nothing "speed" or nothing CURVED "toward" or "angle" "angleTick" "tick" "ticks" "around" "speed" or nothing SPLIT "TBD" ]] function Physics:GenerateAngleGrid() local anggrid = {} local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0) local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0) print(worldMin) print(worldMax) local boundX1 = GridNav:WorldToGridPosX(worldMin.x) local boundX2 = GridNav:WorldToGridPosX(worldMax.x) local boundY1 = GridNav:WorldToGridPosX(worldMin.y) local boundY2 = GridNav:WorldToGridPosX(worldMax.y) local offsetX = boundX1 * -1 + 1 local offsetY = boundY1 * -1 + 1 print(boundX1 .. " -- " .. boundX2) print(boundY1 .. " -- " .. boundY2) print(offsetX) print(offsetY) local vecs = { {vec = Vector(0,1,0):Normalized(), x=0,y=1},-- N {vec = Vector(1,1,0):Normalized(), x=1,y=1}, -- NE {vec = Vector(1,0,0):Normalized(), x=1,y=0}, -- E {vec = Vector(1,-1,0):Normalized(), x=1,y=-1}, -- SE {vec = Vector(0,-1,0):Normalized(), x=0,y=-1}, -- S {vec = Vector(-1,-1,0):Normalized(), x=-1,y=-1}, -- SW {vec = Vector(-1,0,0):Normalized(), x=-1,y=0}, -- W {vec = Vector(-1,1,0):Normalized(), x=-1,y=1} -- NW } print('----------------------') anggrid[1] = {} for j=boundY1,boundY2 do anggrid[1][j + offsetY] = -1 end anggrid[1][boundY2 + offsetY] = -1 for i=boundX1+1,boundX2-1 do anggrid[i+offsetX] = {} anggrid[i+offsetX][1] = -1 for j=(boundY1+1),boundY2-1 do local position = Vector(GridNav:GridPosToWorldCenterX(i), GridNav:GridPosToWorldCenterY(j), 0) local blocked = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) --or (pseudoGNV[i] ~= nil and pseudoGNV[i][j]) local seg = 0 local sum = Vector(0,0,0) local count = 0 local inseg = false if blocked then for k=1,#vecs do local vec = vecs[k].vec local xoff = vecs[k].x local yoff = vecs[k].y local pos = Vector(GridNav:GridPosToWorldCenterX(i+xoff), GridNav:GridPosToWorldCenterY(j+yoff), 0) local blo = not GridNav:IsTraversable(pos) or GridNav:IsBlocked(pos) --or (pseudoGNV[i+xoff] ~= nil and pseudoGNV[i+xoff][j+yoff]) if not blo then count = count + 1 inseg = true sum = sum + vec else if inseg then inseg = false seg = seg + 1 end end end if seg > 1 then print ('OVERSEG x=' .. i .. ' y=' .. j) anggrid[i+offsetX][j+offsetY] = -1 elseif count > 5 then print ('PROTRUDE x=' .. i .. ' y=' .. j) anggrid[i+offsetX][j+offsetY] = -1 elseif count == 0 then anggrid[i+offsetX][j+offsetY] = -1 else local sum = sum:Normalized() local angle = math.floor((math.acos(Vector(1,0,0):Dot(sum:Normalized()))/ math.pi * 180)) if sum.y < 0 then angle = -1 * angle end anggrid[i+offsetX][j+offsetY] = angle end else anggrid[i+offsetX][j+offsetY] = -1 end end anggrid[i+offsetX][boundY2+offsetY] = -1 end anggrid[boundX2+offsetX] = {} for j=boundY1,boundY2 do anggrid[boundX2+offsetX][j+offsetY] = -1 end anggrid[boundX2+offsetX][boundY2+offsetY] = -1 print('--------------') print(#anggrid) print(#anggrid[1]) print(#anggrid[2]) print(#anggrid[3]) if MAP_DATA then MAP_DATA.anggrid = anggrid end Physics:AngleGrid(anggrid) end function Physics:AngleGrid( anggrid, angoffsets ) self.anggrid = anggrid print('[PHYSICS] Angle Grid Set') local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0) local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0) local boundX1 = GridNav:WorldToGridPosX(worldMin.x) local boundX2 = GridNav:WorldToGridPosX(worldMax.x) local boundY1 = GridNav:WorldToGridPosX(worldMin.y) local boundY2 = GridNav:WorldToGridPosX(worldMax.y) local offsetX = boundX1 * -1 + 1 local offsetY = boundY1 * -1 + 1 self.offsetX = offsetX self.offsetY = offsetY if angoffsets ~= nil then self.offsetX = math.abs(angoffsets.x) + 1 self.offsetY = math.abs(angoffsets.y) + 1 end end function Physics:CalcSlope(pos, unit, dir) dir = Vector(dir.x, dir.y, 0):Normalized() local f = GetGroundPosition(pos + dir, unit) local b = GetGroundPosition(pos - dir, unit) return (f - b):Normalized() end function Physics:CalcNormal(pos, unit, scale) scale = scale or 1 local nscale = -1 * scale local diag = 0.70710678118 * scale local ndiag = -1 * diag local zl = GetGroundPosition(pos + Vector(nscale,0,0), unit).z local zr = GetGroundPosition(pos + Vector(scale,0,0), unit).z local zu = GetGroundPosition(pos + Vector(0,scale,0), unit).z local zd = GetGroundPosition(pos + Vector(0,nscale,0), unit).z --[[local zld = GetGroundPosition(pos + Vector(ndiag,ndiag,0), unit).z local zlu = GetGroundPosition(pos + Vector(ndiag,diag,0), unit).z local zrd = GetGroundPosition(pos + Vector(diag,ndiag,0), unit).z local zru = GetGroundPosition(pos + Vector(diag,diag,0), unit).z]] --print (Vector(zld - zlu, zrd - zru, 2*scale)) --print (Vector(zl - zr, zd - zu, 2*scale)) --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() return Vector(zl - zr, zd - zu, 2*scale):Normalized() end function Physics:Unit(unit) if IsPhysicsUnit(unit) then if Convars:GetBool("developer") then unit:StopPhysicsSimulation() else return end end function unit:StopPhysicsSimulation () Physics.timers[unit.PhysicsTimerName] = nil unit.bStarted = false end function unit:StartPhysicsSimulation () Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bStarted = true end function unit:SetPhysicsVelocity (velocity) unit.vVelocity = velocity / 30 if unit.nVelocityMax > 0 and unit.vVelocity:Length() > unit.nVelocityMax then unit.vVelocity = unit.vVelocity:Normalized() * unit.nVelocityMax end if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:AddPhysicsVelocity (velocity) unit.vVelocity = unit.vVelocity + velocity / 30 if unit.nVelocityMax > 0 and unit.vVelocity:Length() > unit.nVelocityMax then unit.vVelocity = unit.vVelocity:Normalized() * unit.nVelocityMax end if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:SetPhysicsVelocityMax (velocityMax) unit.nVelocityMax = velocityMax / 30 end function unit:GetPhysicsVelocityMax () return unit.vVelocity * 30 end function unit:SetPhysicsAcceleration (acceleration) unit.vAcceleration = acceleration / 900 if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:AddPhysicsAcceleration (acceleration) unit.vAcceleration = unit.vAcceleration + acceleration / 900 if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:SetPhysicsFriction (percFriction, flatFriction) unit.fFriction = percFriction unit.fFlatFriction = (flatFriction or (unit.fFlatFriction*30))/30 end function unit:GetPhysicsVelocity () return unit.vVelocity * 30 end function unit:GetPhysicsAcceleration () return unit.vAcceleration * 900 end function unit:GetPhysicsFriction () return unit.fFriction, unit.fFlatFriction*30 end function unit:FollowNavMesh (follow) unit.bFollowNavMesh = follow end function unit:IsFollowNavMesh () return unit.bFollowNavMesh end function unit:SetGroundBehavior (ground) unit.nLockToGround = ground end function unit:GetGroundBehavior () return unit.nLockToGround end function unit:SetSlideMultiplier (slideMultiplier) unit.fSlideMultiplier = slideMultiplier end function unit:GetSlideMultiplier () return unit.fSlideMultiplier end function unit:Slide (slide) unit.bSlide = slide if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:IsSlide () return unit.bSlide end function unit:PreventDI (prevent) unit.bPreventDI = prevent if not prevent and unit:HasModifier("modifier_rooted") then unit:RemoveModifierByName("modifier_rooted") end end function unit:IsPreventDI () return unit.bPreventDI end function unit:SetNavCollisionType (collisionType) unit.nNavCollision = collisionType end function unit:GetNavCollisionType () return unit.nNavCollision end function unit:OnPhysicsFrame(fun) unit.PhysicsFrameCallback = fun end function unit:SetVelocityClamp (clamp) unit.fVelocityClamp = clamp / 30 end function unit:GetVelocityClamp () return unit.fVelocityClamp * 30 end function unit:Hibernate (hibernate) unit.bHibernate = hibernate end function unit:IsHibernate () return unit.bHibernate end function unit:DoHibernate () Physics.timers[unit.PhysicsTimerName] = nil unit.bHibernating = true end function unit:OnHibernate(fun) unit.PhysicsHibernateCallback = fun end function unit:OnPreBounce(fun) unit.PhysicsOnPreBounce = fun end function unit:OnBounce(fun) unit.PhysicsOnBounce = fun end function unit:OnPreSlide(fun) unit.PhysicsOnPreSlide = fun end function unit:OnSlide(fun) unit.PhysicsOnSlide = fun end function unit:AdaptiveNavGridLookahead (adaptive) unit.bAdaptiveNavGridLookahead = adaptive end function unit:IsAdaptiveNavGridLookahead () return unit.bAdaptiveNavGridLookahead end function unit:SetNavGridLookahead (lookahead) unit.nNavGridLookahead = lookahead end function unit:GetNavGridLookahead () return unit.nNavGridLookahead end function unit:SkipSlide (frames) unit.nSkipSlide = frames or 1 end function unit:SetRebounceFrames ( rebounce ) unit.nMaxRebounce = rebounce unit.nRebounceFrames = 0 end function unit:GetRebounceFrames () unit.nRebounceFrames = 0 return unit.nMaxRebounce end function unit:GetLastGoodPosition () return unit.vLastGoodPosition end function unit:SetStuckTimeout (timeout) unit.nStuckTimeout = timeout unit.nStuckFrames = 0 end function unit:GetStuckTimeout () unit.nStuckFrames = 0 return unit.nStuckTimeout end function unit:SetAutoUnstuck (unstuck) unit.bAutoUnstuck = unstuck end function unit:GetAutoUnstuck () return unit.bAutoUnstuck end function unit:SetBounceMultiplier (bounce) unit.fBounceMultiplier = bounce end function unit:GetBounceMultiplier () return unit.fBounceMultiplier end function unit:GetTotalVelocity() if unit.bStarted and not unit.bHibernating then return unit.vTotalVelocity else return Vector(0,0,0) end end function unit:GetColliders() return unit.oColliders end function unit:RemoveCollider(name) if name == nil then local i,v = next(unit.oColliders, nil) if i == nil then return end name = unit.oColliders[i].name elseif type(name) == "table" then name = name.name end Physics:RemoveCollider(name) end function unit:AddCollider(name, collider) local coll = Physics:AddCollider(name, collider) coll.unit = unit unit.oColliders[coll.name] = coll return coll end function unit:AddColliderFromProfile(name, profile, collider) if profile == nil then profile = name name = DoUniqueString("collider") elseif type(profile) == "table" then collider = profile profile = name name = DoUniqueString("collider") end local coll = Physics:AddCollider(name, Physics:ColliderFromProfile(profile, collider)) coll.unit = unit unit.oColliders[coll.name] = coll return coll end function unit:GetMass() return unit.fMass end function unit:SetMass(mass) unit.fMass = mass end function unit:GetNavGroundAngle() return math.acos(unit.fNavGroundAngle) * 180 / math.pi end function unit:SetNavGroundAngle(angle) unit.fNavGroundAngle = math.cos(angle * math.pi / 180) end function unit:CutTrees(cut) unit.bCutTrees = cut end function unit:IsCutTrees() return unit.bCutTrees end function unit:IsInSimulation() return unit.bStarted end function unit:SetBoundOverride(bound) unit.fBoundOverride = bound end function unit:GetBoundOverride() return unit.fBoundOverride end function unit:ClearStaticVelocity() unit.staticForces = {} unit.staticSum = Vector(0,0,0) end function unit:SetStaticVelocity(name, velocity) if unit.staticForces[name] ~= nil then unit.staticSum = unit.staticSum - unit.staticForces[name] end unit.staticForces[name] = velocity / 30 unit.staticSum = unit.staticSum + unit.staticForces[name] if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:GetStaticVelocity(name) if name == nil then return unit.staticSum else return unit.staticForces[name] end end function unit:AddStaticVelocity(name, velocity) if unit.staticForces[name] == nil then unit.staticForces[name] = velocity / 30 unit.staticSum = unit.staticSum + unit.staticForces[name] else unit.staticSum = unit.staticSum - unit.staticForces[name] unit.staticForces[name] = unit.staticForces[name] + velocity / 30 unit.staticSum = unit.staticSum + unit.staticForces[name] end if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:SetPhysicsFlatFriction(flatFriction) unit.fFlatFriction = flatFriction / 30 end function unit:GetPhysicsFlatFriction() return unit.fFlatFriction end unit.lastGoodGround = Vector(0,0,0) unit.PhysicsTimerName = DoUniqueString('phys') Physics:CreateTimer(unit.PhysicsTimerName, { endTime = GameRules:GetGameTime(), useGameTime = true, callback = function(reflex, args) local prevTime = unit.PhysicsLastTime if not IsValidEntity(unit) then return end local curTime = GameRules:GetGameTime() local prevPosition = unit.PhysicsLastPosition local position = unit:GetAbsOrigin() local slideVelocity = Vector(0,0,0) local lastVelocity = unit.vLastVelocity unit.vTotalVelocity = (position - prevPosition) / (curTime - prevTime) unit.PhysicsLastTime = curTime unit.PhysicsLastPosition = position if unit.bPreventDI and not unit:HasModifier("modifier_rooted") then unit:AddNewModifier(unit, nil, "modifier_rooted", {}) end if unit.bSlide and unit.nSkipSlide <= 0 then slideVelocity = ((position - prevPosition) - lastVelocity + unit.vSlideVelocity) * unit.fSlideMultiplier else --print(unit.nSkipSlide) unit.vSlideVelocity = Vector(0,0,0) end unit.nSkipSlide = unit.nSkipSlide - 1 -- Adjust velocity local newVelocity = unit.vVelocity + unit.vAcceleration + (-1 * unit.fFriction * unit.vVelocity) + slideVelocity local newVelLength if unit.fFlatFriction > 0 then newVelLength = newVelocity:Length() if newVelLength ~= 0 then newVelocity = newVelocity * (math.max(0, newVelLength - unit.fFlatFriction) / newVelLength) end end local staticSum = unit.staticSum newVelocity = newVelocity + staticSum newVelLength = newVelocity:Length() local staticSumLength = staticSum:Length() local vel = unit.vVelocity + staticSum local staticSumz = staticSum.z local newVelz = newVelocity.z local dontSet = false local dontSetGround = false --print('vel: ' .. tostring(unit.vVelocity:Length()) .. ' -- svel: ' .. tostring(slideVelocity:Length()) .. " -- nvel: " .. tostring(newVelocity:Length())) -- Calculate new position local newPos = position + vel local blockedPos = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) if not blockedPos then unit.vLastGoodPosition = position unit.nStuckFrames = 0 else unit.nStuckFrames = unit.nStuckFrames + 1 end if vel ~= Vector(0,0,0) or slideVelocity ~= Vector(0,0,0) or unit.nNavCollision == PHYSICS_NAV_GROUND then if unit.nNavCollision == PHYSICS_NAV_GROUND then local newGround = GetGroundPosition(newPos, unit) local ground = GetGroundPosition(position, unit) --if unit.vVelocity.x ~= 0 and unit.vVelocity.y ~= 0 then if newPos.z - newGround.z < 0 or position.z - ground.z < 0 then -- and newPos.z ~= position.z then local velLen = Vector(vel.x,vel.y,0):Length() local diff = vel:Normalized() local subpos = position local minnormal = Vector(0,0,1) --local avgnormal = Vector(0,0,0) for i=1,math.ceil(velLen)+1 do local normal = Physics:CalcNormal(subpos, unit, 15) --local subground = GetGroundPosition(subpos, unit) --print(i .. ' -- ' .. tostring(normal)) if normal.z < minnormal.z then minnormal = normal --subground = subpos end --DebugDrawLine_vCol(subground, subground + normal * 100, Vector(100,0,0), true, 1.1) subpos = subpos + diff --avgnormal = avgnormal + normal end --DebugDrawLine_vCol(position, position + Physics:CalcSlope(position, unit, vel) * 100, Vector(0,0,200), true, 1.1) --avgnormal = avgnormal / math.ceil(velLen)+1 --avgnormal = Vector(avgnormal.x, avgnormal.y, minnormal.z):Normalized() --DebugDrawLine_vCol(position, position + minnormal * 200, Vector(255,0,0), true, 1.1) if minnormal.z < unit.fNavGroundAngle then --steep local xynorm = Vector(minnormal.x, minnormal.y, 0) local xynormlen = xynorm:Length() if xynorm:Length() > .98 then minnormal = xynorm / xynormlen --avgnormal = Vector(avgnormal.x, avgnormal.y, 0):Normalized() end --print('-------------') --print(minnormal) --DebugDrawLine_vCol(position, position + Physics:CalcSlope(position, unit, minnormal) * 200, Vector(0,200,200), true, 1) --DebugDrawLine_vCol(position, position + avgnormal * 200, Vector(0,100,0), true, 1.1) local velz = vel.z --newVelocity.z = 0 --vel.z = 0 local dot = vel:Dot(-1 * minnormal) *1.01 if dot >= 0 then vel = vel + dot * minnormal --DebugDrawLine_vCol(position, position + vel, Vector(0,255,0), true, 1.1) newVelocity = newVelocity + newVelocity:Dot(-1 * minnormal)*1.01 * minnormal --DebugDrawLine_vCol(position, position + newVelocity, Vector(0,255,122), true, 1.1) staticSum = staticSum + staticSum:Dot(-1 * minnormal)*1.01 * minnormal --DebugDrawLine_vCol(position, position + staticSum, Vector(255,0,122), true, 1.1) --DebugDrawLine_vCol(position, position + vel * 10, Vector(0,255,0), true, 1.1) end newPos = position + vel local nz = newPos.z --DebugDrawCircle(newPos, Vector(0,255,0), 1, 15, true, 1.1) local gnorm = GetGroundPosition(newPos + minnormal * 50, unit) --DebugDrawCircle(gnorm, Vector(255,0,0), 1, 15, true, 1.1) --DebugDrawCircle(unit.lastGoodGround, Vector(255,255,255), 1, 15, true, 1.1) local ng = GetGroundPosition(newPos, unit) if ng.z >= newPos.z and newPos.z < gnorm.z then --print(tostring(newPos.z) .. ' -- ' .. tostring(gnorm.z) .. ' -- ' .. tostring(ng.z) .. ' -- ' .. tostring(unit.lastGoodGround.z)) if ng.z > gnorm.z then newPos.z = gnorm.z else newPos.z = ng.z end staticSum.z = 0 if newPos.z > position.z and (newPos - position):Normalized().z > unit.fNavGroundAngle then --newPos.z-position.z > vel.z*1.5 then --newPos = Vector(position.x,position.y,unit.lastGoodGround.z) newPos = position + Vector(0,0,newVelocity.z) if newPos.z < unit.lastGoodGround.z then newPos.z = unit.lastGoodGround.z newVelocity.z = math.max(0, newVelocity.z) end --newVelocity.z = 0 else newVelocity.z = math.max(0, newVelocity.z) end end --DebugDrawCircle(newPos, Vector(150,0,255), 1, 15, true, 1.1) unit:SetAbsOrigin(newPos) dontSet = true dontSetGround = true ground = ng --unit:SetAbsOrigin(position) --elseif (ground - position):Normalized().z > unit.fNavGroundAngle then --unit.lastGoodGround = ground end else unit.lastGoodGround = ground end local bound = 1 if unit.fBoundOverride then bound = unit.fBoundOverride elseif unit.GetPaddedCollisionRadius then bound = unit:GetPaddedCollisionRadius() elseif unit.GetBoundingMaxs then bound = math.max(unit:GetBoundingMaxs().x, unit:GetBoundingMaxs().y) end -- tree check local connect = position-- + diff * bound local treeConnect = (not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect)) and GridNav:IsNearbyTree(connect, 30, true) local lookaheadNum = unit.nNavGridLookahead if unit.bAdaptiveNavGridLookahead then lookaheadNum = math.ceil(vel:Length() / 16) end local diff = vel:Normalized() local tot = lookaheadNum + 1 local div = 1 / tot local index = 1 while not treeConnect and index < tot do connect = position + vel * (div * index) + diff * bound treeConnect = (not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect)) and GridNav:IsNearbyTree(connect, 30, true) if treeConnect then --DebugDrawCircle(connect, Vector(0,200,0), 100, 10, true, 1) end index = index + 1 end --print (tostring(treeConnect) .. ' -- ' .. ground.z .. ' -- ' .. newPos.z .. ' -- ' .. position.z) if treeConnect and ground.z + 340 >= newPos.z and newPos.z + 2 > ground.z then if position.z >= ground.z + 340 then newVelocity.z = math.max(0, newVelocity.z) staticSum.z = math.max(0, staticSum.z) --unit:SetAbsOrigin(newPos + Vector(0,0,ground.z + 340 - newPos.z)) newPos = Vector(newPos.x, newPos.y, ground.z + 340) --print('treetop') else --print('treeConnect') local vec = Vector(GridNav:GridPosToWorldCenterX(GridNav:WorldToGridPosX(connect.x)), GridNav:GridPosToWorldCenterY(GridNav:WorldToGridPosY(connect.y)), ground.z) --DebugDrawCircle(vec, Vector(200,200,200), 100, 10, true, .5) if unit.bCutTrees then local ents = Entities:FindAllByClassnameWithin("ent_dota_tree", vec, 70) if #ents > 0 then local tree = ents[1] tree:CutDown(unit:GetTeamNumber()) end else local off = (Vector(position.x,position.y,vec.z) - vec):Normalized() local normal = nil if math.abs(off.x) > math.abs(off.y) then normal = Vector(math.abs(off.x)/off.x, 0, 0) local vec2 = vec + normal * 64 local treeConnect2 = (not GridNav:IsTraversable(vec2) or GridNav:IsBlocked(vec2)) and GridNav:IsNearbyTree(vec2, 30, true) if treeConnect2 then normal = Vector(0, math.abs(off.y)/off.y, 0) vec2 = vec + normal * 64 treeConnect2 = (not GridNav:IsTraversable(vec2) or GridNav:IsBlocked(vec2)) and GridNav:IsNearbyTree(vec2, 30, true) if treeConnect2 then normal = (Vector(diff.x,diff.y,0) * -1):Normalized() end end else normal = Vector(0, math.abs(off.y)/off.y, 0) local vec2 = vec + normal * 64 local treeConnect2 = (not GridNav:IsTraversable(vec2) or GridNav:IsBlocked(vec2)) and GridNav:IsNearbyTree(vec2, 30, true) if treeConnect2 then normal = Vector(math.abs(off.x)/off.x, 0, 0) vec2 = vec + normal * 64 treeConnect2 = (not GridNav:IsTraversable(vec2) or GridNav:IsBlocked(vec2)) and GridNav:IsNearbyTree(vec2, 30, true) if treeConnect2 then normal = (Vector(diff.x,diff.y,0) * -1):Normalized() end end end --DebugDrawLine_vCol(vec, vec + off * 100, Vector(0,200,0), true, 1) --DebugDrawLine_vCol(vec, vec + normal * 100, Vector(200,200,200), true, 1) --newVelocity.z = newVelz local dot = vel:Dot(-1 * normal) if dot >= 0 then vel = vel + dot * 1.0 * normal newVelocity = newVelocity + newVelocity:Dot(-1 * normal) * 1.0 * normal staticSum = staticSum + staticSum:Dot(-1 * normal) * 1.0 * normal local newground = GetGroundPosition(position + vel, unit) local new = position + vel if newground.z > new.z then new.z = newground.z end off = (Vector(new.x, new.y, vec.z) - vec):Normalized() local scalar = math.min((32+bound) / math.abs(off.x), (32+bound) / math.abs(off.y)) --local scalar = math.min((32) / math.abs(off.x), (32) / math.abs(off.y)) unit.nSkipSlide = 1 newPos = vec + Vector(scalar*off.x, scalar*off.y, new.z - vec.z) end --unit:SetAbsOrigin(new) end end end elseif unit.bFollowNavMesh then local diff = vel:Normalized() --FindClearSpaceForUnit(unit, newPos, true) local bound = 1 if unit.fBoundOverride then bound = unit.fBoundOverride elseif unit.GetPaddedCollisionRadius then bound = unit:GetPaddedCollisionRadius() + 1 elseif unit.GetBoundingMaxs then bound = math.max(unit:GetBoundingMaxs().x, unit:GetBoundingMaxs().y) end local connect = position-- + diff * bound local navConnect = not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect) local lookaheadNum = unit.nNavGridLookahead if unit.bAdaptiveNavGridLookahead then lookaheadNum = math.ceil(unit.vVelocity:Length() / 32) end local tot = lookaheadNum + 1 local div = 1 / tot local index = 1 while not navConnect and index < tot do connect = position + unit.vVelocity * (div * index) + diff * bound navConnect = not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect) index = index + 1 end --or not GridNav:IsTraversable(newPos + unit.vVelocity * .5) -- diff * unit.nNavGridLookahead --or or GridNav:IsBlocked(newPos + unit.vVelocity * .5) if unit.nNavCollision == PHYSICS_NAV_HALT and navConnect then newVelocity = Vector(0,0,0) staticSum = Vector(0,0,0) FindClearSpaceForUnit(unit, newPos, true) dontSet = true unit.nSkipSlide = 1 elseif unit.nNavCollision == PHYSICS_NAV_SLIDE and navConnect then local navX = GridNav:WorldToGridPosX(connect.x) local navY = GridNav:WorldToGridPosY(connect.y) local navPos = Vector(GridNav:GridPosToWorldCenterX(navX), GridNav:GridPosToWorldCenterY(navY), 0) --unit.nRebounceFrames = unit.nMaxRebounce local normal = nil local anggrid = self.anggrid local offX = self.offsetX local offY = self.offsetY if anggrid then local angSize = #anggrid local angX = navX + offX local angY = navY + offY --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY) local angle = anggrid[angX][angY] if angle ~= -1 then angle = angle normal = -1 * RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0)) --print(angle) --print(normal) --print('----------') end end local dir = navPos - position if normal == nil then --local face = navPos - position --print("face: " .. tostring(face)) dir.z = 0 dir = dir:Normalized() -- Nav bounce checks --local angx = (math.acos(dir.x)/ math.pi * 180) --local angy = (math.acos(dir.y)/ math.pi * 180) --print(tostring(dir:Length()) .. " -- " .. tostring(dir)) --print(dir:Dot(Vector(1,0,0))) --print(dir:Dot(Vector(-1,0,0))) --print(dir:Dot(Vector(0,1,0))) --print(dir:Dot(Vector(0,-1,0))) --print('---------------') if dir:Dot(Vector(1,0,0)) > .707 then normal = Vector(1,0,0) local navPos2 = navPos + Vector(-64,0,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vel.y > 0 then normal = Vector(0,1,0) navPos2 = navPos + Vector(0,-64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(0,64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end end end elseif dir:Dot(Vector(-1,0,0)) > .707 then normal = Vector(-1,0,0) local navPos2 = navPos + Vector(64,0,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vel.y > 0 then normal = Vector(0,1,0) navPos2 = navPos + Vector(0,-64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(0,64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end end end elseif dir:Dot(Vector(0,1,0)) > .707 then normal = Vector(0,1,0) local navPos2 = navPos + Vector(0,-64,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vel.x > 0 then normal = Vector(1,0,0) navPos2 = navPos + Vector(-64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end else normal = Vector(-1,0,0) navPos2 = navPos + Vector(64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end end end elseif dir:Dot(Vector(0,-1,0)) > .707 then normal = Vector(0,-1,0) local navPos2 = navPos + Vector(0,64,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vel.x > 0 then normal = Vector(-1,0,0) navPos2 = navPos + Vector(-64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end end end end --FindClearSpaceForUnit(unit, newPos, true) --print(tostring(unit:GetAbsOrigin()) .. " -- " .. tostring(navPos)) end if unit.PhysicsOnPreSlide then local status, nextCall = pcall(unit.PhysicsOnPreSlide, unit, normal) if not status then print('[PHYSICS] Failed OnPreSlide: ' .. nextCall) end end newVelocity = (-1 * newVelocity:Dot(normal) * normal) + newVelocity staticSum = (-1 * staticSum:Dot(normal) * normal) + staticSum local ndir = dir * -1 local scalar = math.min((32+bound) / math.abs(ndir.x), (32+bound) / math.abs(ndir.y)) unit.nSkipSlide = 1 newPos = navPos + Vector(scalar*ndir.x, scalar*ndir.y, newPos.z) if unit.PhysicsOnSlide then local status, nextCall = pcall(unit.PhysicsOnSlide, unit, normal) if not status then print('[PHYSICS] Failed OnSlide: ' .. nextCall) end end elseif unit.nRebounceFrames <= 0 and unit.nNavCollision == PHYSICS_NAV_BOUNCE and navConnect then local navX = GridNav:WorldToGridPosX(connect.x) local navY = GridNav:WorldToGridPosY(connect.y) local navPos = Vector(GridNav:GridPosToWorldCenterX(navX), GridNav:GridPosToWorldCenterY(navY), 0) unit.nRebounceFrames = unit.nMaxRebounce local normal = nil local anggrid = self.anggrid local offX = self.offsetX local offY = self.offsetY if anggrid then local angSize = #anggrid local angX = navX + offX local angY = navY + offY --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY) local angle = anggrid[angX][angY] if angle ~= -1 then angle = angle normal = RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0)) --print(normal) --print('----------') end end if normal == nil then --local face = navPos - position --print("face: " .. tostring(face)) --local dir = navPos - position local dir = navPos - position dir.z = 0 dir = dir:Normalized() -- Nav bounce checks --local angx = (math.acos(dir.x)/ math.pi * 180) --local angy = (math.acos(dir.y)/ math.pi * 180) --print(tostring(dir:Length()) .. " -- " .. tostring(dir)) --print(dir:Dot(Vector(1,0,0))) --print(dir:Dot(Vector(-1,0,0))) --print(dir:Dot(Vector(0,1,0))) --print(dir:Dot(Vector(0,-1,0))) --print('---------------') if dir:Dot(Vector(1,0,0)) > .707 then normal = Vector(1,0,0) local navPos2 = navPos + Vector(-64,0,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vel.y > 0 then normal = Vector(0,1,0) navPos2 = navPos + Vector(0,-64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(0,64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end end end elseif dir:Dot(Vector(-1,0,0)) > .707 then normal = Vector(-1,0,0) local navPos2 = navPos + Vector(64,0,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vel.y > 0 then normal = Vector(0,1,0) navPos2 = navPos + Vector(0,-64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(0,64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end end end elseif dir:Dot(Vector(0,1,0)) > .707 then normal = Vector(0,1,0) local navPos2 = navPos + Vector(0,-64,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vel.x > 0 then normal = Vector(1,0,0) navPos2 = navPos + Vector(-64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end else normal = Vector(-1,0,0) navPos2 = navPos + Vector(64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end end end elseif dir:Dot(Vector(0,-1,0)) > .707 then normal = Vector(0,-1,0) local navPos2 = navPos + Vector(0,64,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vel.x > 0 then normal = Vector(-1,0,0) navPos2 = navPos + Vector(-64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end end end end --FindClearSpaceForUnit(unit, newPos, true) --print(tostring(unit:GetAbsOrigin()) .. " -- " .. tostring(navPos)) end if unit.PhysicsOnPreBounce then local status, nextCall = pcall(unit.PhysicsOnPreBounce, unit, normal) if not status then print('[PHYSICS] Failed OnPreBounce: ' .. nextCall) end end newVelocity = ((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * unit.fBounceMultiplier staticSum = ((-2 * staticSum:Dot(normal) * normal) + staticSum) * unit.fBounceMultiplier if unit.PhysicsOnBounce then local status, nextCall = pcall(unit.PhysicsOnBounce, unit, normal) if not status then print('[PHYSICS] Failed OnBounce: ' .. nextCall) end end end end end --if newPos.z > unit:GetAbsOrigin().z then print (tostring(newPos) .. ' -- ' .. tostring(unit:GetAbsOrigin())) end --if newPos == unit:GetAbsOrigin() and newPos ~= prevPosition then print (tostring(dontSet) .. ' -- ' .. tostring(newPos) .. ' -- ' .. tostring(unit:GetAbsOrigin())) end newVelLength = newVelocity:Length() local groundPos = GetGroundPosition(newPos, unit) if unit.nVelocityMax > 0 and newVelLength > unit.nVelocityMax then newVelocity = newVelocity:Normalized() * unit.nVelocityMax staticSum = staticSum:Normalized() * unit.nVelocityMax end local xylen = newVelocity:Length2D() 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 --print('clamp') newVelocity = Vector(0,0,newVelocity.z) staticSum = Vector(0,0,staticSum.z) if unit.bHibernate then unit:DoHibernate() local ent = Entities:FindInSphere(nil, position, 35) local blocked = false while ent ~= nil and not blocked do if ent.GetUnitName ~= nil and ent ~= unit then blocked = true end --print(ent:GetClassname() .. " -- " .. ent:GetName() .. " -- " .. tostring(ent.IsHero)) ent = Entities:FindInSphere(ent, position, 35) end if blocked or blockedPos or GridNav:IsNearbyTree(position, 30, true) then FindClearSpaceForUnit(unit, position, true) unit.nSkipSlide = 1 --print('FCS hib') end if unit.PhysicsHibernateCallback ~= nil then local status, nextCall = pcall(unit.PhysicsHibernateCallback, unit) if not status then print('[PHYSICS] Failed HibernateCallback: ' .. nextCall) end end return end --[[if unit:HasModifier("modifier_rooted") then unit:RemoveModifierByName("modifier_rooted") end local ent = Entities:FindInSphere(nil, position, 35) local blocked = false while ent ~= nil and not blocked do if ent.IsHero ~= nil and ent ~= unit then blocked = true end --print(ent:GetClassname() .. " -- " .. ent:GetName() .. " -- " .. tostring(ent.IsHero)) ent = Entities:FindInSphere(ent, position, 35) end if blocked or not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) or GridNav:IsNearbyTree(position, 30, true) then FindClearSpaceForUnit(unit, position, true) unit.nSkipSlide = 1 --print('FCS nothib lowv + blocked') end ]] end if not dontSetGround then if unit.nLockToGround == PHYSICS_GROUND_LOCK then local groundPos = GetGroundPosition(newPos, unit) newPos = groundPos newVelocity.z = 0 staticSum.z = 0 elseif unit.nLockToGround == PHYSICS_GROUND_ABOVE then local groundPos = GetGroundPosition(newPos, unit) --print(groundPos.z .. ' -- ' .. newPos.z .. ' -- ' .. (groundPos - position):Normalized().z) if unit.nNavCollision == PHYSICS_NAV_GROUND and groundPos.z > position.z and (groundPos - position):Normalized().z > unit.fNavGroundAngle then newVelocity.z = math.max(0, newVelocity.z) staticSum.z = 0 --[[newPos = position + Vector(0,0,newVelocity.z) if newPos.z < unit.lastGoodGround.z then DebugDrawCircle(unit.lastGoodGround, Vector(255,255,255), 1, 15, true, 1.1) DebugDrawCircle(groundPos, Vector(255,0,0), 1, 15, true, 1.1) DebugDrawCircle(newPos, Vector(0,255,0), 1, 15, true, 1.1) print ('LAST GROUND2') newPos.z = unit.lastGoodGround.z newVelocity.z = 0 staticSum.z = 0 end]] elseif groundPos.z >= newPos.z then newPos = groundPos newVelocity.z = 0 staticSum.z = 0 end end end if not dontSet then unit:SetAbsOrigin(newPos) end unit.nRebounceFrames = unit.nRebounceFrames - 1 unit.vLastVelocity = unit.vVelocity unit.vVelocity = newVelocity - staticSum if unit.PhysicsFrameCallback ~= nil then local status, nextCall = pcall(unit.PhysicsFrameCallback, unit) if not status then print('[PHYSICS] Failed FrameCallback: ' .. nextCall) end end if unit.nNavCollision ~= PHYSICS_NAV_NOTHING and unit.bAutoUnstuck and unit.nStuckFrames >= unit.nStuckTimeout then unit.nStuckFrames = 0 unit.nSkipSlide = 1 local navX = GridNav:WorldToGridPosX(position.x) local navY = GridNav:WorldToGridPosY(position.y) local anggrid = self.anggrid local offX = self.offsetX local offY = self.offsetY if anggrid then local angSize = #anggrid local angX = navX + offX local angY = navY + offY --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY) local angle = anggrid[angX][angY] if angle ~= -1 then local normal = RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0)) --print(normal) --print('----------') unit:SetAbsOrigin(position + normal * 64) else unit:SetAbsOrigin(unit.vLastGoodPosition) end else unit:SetAbsOrigin(unit.vLastGoodPosition) end end return curTime end }) unit.PhysicsTimer = Physics.timers[unit.PhysicsTimerName] unit.vVelocity = Vector(0,0,0) unit.vLastVelocity = Vector(0,0,0) unit.vAcceleration = Vector(0,0,0) unit.fFriction = .05 unit.fFlatFriction = 0 unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vTotalVelocity = Vector(0,0,0) unit.bFollowNavMesh = true unit.nLockToGround = PHYSICS_GROUND_ABOVE unit.bPreventDI = false unit.bSlide = false unit.nNavCollision = PHYSICS_NAV_SLIDE unit.fNavGroundAngle = .6 unit.fSlideMultiplier = 0.1 unit.nVelocityMax = 0 unit.PhysicsFrameCallback = nil unit.fVelocityClamp = 20.0 / 30.0 unit.bHibernate = true unit.bHibernating = false unit.bStarted = true unit.bCutTrees = false unit.vSlideVelocity = Vector(0,0,0) unit.nNavGridLookahead = 1 unit.bAdaptiveNavGridLookahead = false unit.nSkipSlide = 0 unit.nMaxRebounce = 2 unit.nRebounceFrames = 2 unit.vLastGoodPosition = unit:GetAbsOrigin() unit.bAutoUnstuck = true unit.nStuckTimeout = 600 unit.nStuckFrames = 0 unit.fBounceMultiplier = 1.0 unit.oColliders = {} unit.fMass = 100 unit.staticForces = {} unit.staticSum = Vector(0,0,0) end Physics.testUnitNum = 0 Physics.testUnits = {} -- Physics Testing commands function Physics:PhysicsTestCommand(...) local args = {...} local text = table.concat (args, " ") local ply = Convars:GetCommandClient() local plyID = ply:GetPlayerID() local hero = ply:GetAssignedHero() if text == "" or string.find(text, "^help") then print("PHYSTEST Help") print('---------------------') print("vel X Y Z -- Adds the given velocity X,Y,Z to the current hero's velocity.") print("velmax X -- Sets the maximum velocity of the current hero to X.") print("clamp X -- Sets the to-zero velocity clamp to X hammer units per second.") print("acc X Y Z -- Sets the given acceleration X,Y,Z to the current hero's acceleration.") print("fric X -- Sets the frcition of the current hero to X / 100.") print("prevent -- Toggles Directional Influence prevention (aka right click moving).") print("slidemult X -- Sets the slide multiplier to X / 100.") print("slide -- Toggles Slide on/off.") print("nav -- Toggles FollowNavMesh on/off. Nav collision will not trigger if this is not set.") print("navtype -- Cycles through the navtype collision types.") print("hibernate -- Toggles hibernate on/off.") print("ground -- Cycles through the ground behavior.") print("mass X -- Sets the mass of this unit to X for momentum collision calculations.") print("bouncemult X -- Sets the bounce multiplier to X / 100.") print("unstuck -- Toggles AutoUnstuck on/off.") print("stuckframes X -- Sets the number of frames to wait before triggering an Unstuck.") print("rebounceframes X -- Sets the number of frames to wait between NAV_BOUNCE bounces.") print("lookahead X -- Sets the number of lookahead frames for nav collision detection.") print("phys -- Activates this hero as a physics unit.") print("regrow -- Regrow all trees on the map.") print("anggrid -- Process the map into an anglegrid to use with SLIDE/BOUNCE nav collision.") print('---------------------') end if string.find(text, "^regrow") then GridNav:RegrowAllTrees() end if string.find(text, "^unstuck") then hero:SetAutoUnstuck(not hero:GetAutoUnstuck()) print(hero:GetAutoUnstuck()) end local mass1 = string.match(text, "^mass%s+(-?%d+)") if mass1 ~= nil then hero:SetMass(mass1) end local bmult1 = string.match(text, "^bouncemult%s+(-?%d+)") if bmult1 ~= nil then hero:SetBounceMultiplier(bmult1 / 100) end local stuckTimeout1 = string.match(text, "^stuckframes%s+(%d+)") if stuckTimeout1 ~= nil then hero:SetStuckTimeout(stuckTimeout1) end local rebounce1 = string.match(text, "^rebounceframes%s+(%d+)") if rebounce1 ~= nil then hero:SetRebounceFrames(rebounce1) end local lookahead1 = string.match(text, "^lookahead%s+(%d+)") if lookahead1 ~= nil then hero:SetNavGridLookahead(lookahead1) end if string.find(text, "^spider") then local mapGnv = {} local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0) local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0) print(worldMin) print(worldMax) local boundX1 = GridNav:WorldToGridPosX(worldMin.x) local boundX2 = GridNav:WorldToGridPosX(worldMax.x) local boundY1 = GridNav:WorldToGridPosX(worldMin.y) local boundY2 = GridNav:WorldToGridPosX(worldMax.y) print(boundX1 .. " -- " .. boundX2) print(boundY1 .. " -- " .. boundY2) print('----------------------') InitLogFile("addons/dotadash/spider.txt", "") AppendToLogFile("addons/dotadash/spider.txt", "P1") AppendToLogFile("addons/dotadash/spider.txt", "#spider created pbm") AppendToLogFile("addons/dotadash/spider.txt", tostring(boundX2 - boundX1 + 1) .. " " .. tostring(boundY2 - boundY1 + 1)) local pseudoGNV = {} local WALLS = self.WALLS for i=1,#WALLS do local from = WALLS[i].from local to = WALLS[i].to local cur = from local dist = to - from dist.z = 0 local dir = dist:Normalized() dist = dist:Length() local norm = RotatePosition(Vector(0,0,0), QAngle(0,90,0), dir) for j=1,math.floor(dist/30) do local pos = cur + norm * 64 local pos2 = cur - norm * 64 local x = GridNav:WorldToGridPosX(pos.x) local y = GridNav:WorldToGridPosY(pos.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true x = GridNav:WorldToGridPosX(pos2.x) y = GridNav:WorldToGridPosY(pos2.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true x = GridNav:WorldToGridPosX(cur.x) y = GridNav:WorldToGridPosY(cur.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true cur = from + dir*j*30 end cur = to local pos = cur + norm * 64 local pos2 = cur - norm * 64 local blocked = not GridNav:IsTraversable(pos) or GridNav:IsBlocked(pos) if blocked then local x = GridNav:WorldToGridPosX(pos.x) local y = GridNav:WorldToGridPosY(pos.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true end blocked = not GridNav:IsTraversable(pos2) or GridNav:IsBlocked(pos2) if blocked then local x = GridNav:WorldToGridPosX(pos2.x) local y = GridNav:WorldToGridPosY(pos2.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true end blocked = not GridNav:IsTraversable(cur) or GridNav:IsBlocked(cur) if blocked then local x = GridNav:WorldToGridPosX(cur.x) local y = GridNav:WorldToGridPosY(cur.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true end end --PrintTable(pseudoGNV) --print('---------------') local s = "" for i=boundY2,boundY1,-1 do for j=boundX1,boundX2 do local position = Vector(GridNav:GridPosToWorldCenterX(j), GridNav:GridPosToWorldCenterY(i), 0) local blocked = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) or (pseudoGNV[j] ~= nil and pseudoGNV[j][i]) if blocked then s = s .. "1" else s = s .. "0" end if j == boundX2 then AppendToLogFile("addons/dotadash/spider.txt", s) s = "" else s = s .. " " end end end end if string.find(text, "^anggrid") then Physics:GenerateAngleGrid() end local ap = abilPoints local fname = string.match(text, "^angsave%s+(.+)") if fname ~= nil then -- Process map local addString = function (stack, s) table.insert(stack, s) -- push 's' into the the stack for i=table.getn(stack)-1, 1, -1 do if string.len(stack[i]) > string.len(stack[i+1]) then break end stack[i] = stack[i] .. table.remove(stack) end end local s = {""} addString(s, "{") local anggrid = Physics.anggrid for x=1,#anggrid do addString(s, "{") for y=1,#anggrid[x] do addString(s, tostring(anggrid[x][y])) if y < #anggrid[x] then addString(s, ",") end end addString(s, "}") if x < #anggrid then addString(s, ",") end end addString(s, "}") s = table.concat(s) print('------------') print(fname) print(s) InitLogFile("addons/dotadash/" .. fname .. ".txt", s) end if string.find(text, "^units") then local m = string.match(text, "(%d+)") if m ~= nil then Physics.testUnitNum = Physics.testUnitNum + m print (Physics.testUnitNum) for i=1,m do local unit = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber()) unit:AddNewModifier(unit, nil, "modifier_phased", {}) unit:SetModel('models/heroes/lycan/lycan_wolf.vmdl') unit:SetOriginalModel('models/heroes/lycan/lycan_wolf.vdl') Physics:Unit(unit) unit:SetPhysicsFriction(0) unit:SetPhysicsVelocity(RandomVector(2000)) unit:SetNavCollisionType(PHYSICS_NAV_BOUNCE) end end end if string.find(text, "^hibtest") then local m = string.match(text, "(%d+)") if m ~= nil and m == "0" then Timers:CreateTimer('units2',{ useOldStyle = true, useGameTime = true, endTime = GameRules:GetGameTime(), callback = function(reflex, args) local pushNum = math.floor(#units / 10) + 1 for i=1,pushNum do local unit = units[RandomInt(1, #units)] unit:AddPhysicsVelocity(RandomVector(RandomInt(1000,2000))) end return GameRules:GetGameTime() + 1 end }) elseif m ~= nil then Physics.testUnitNum = Physics.testUnitNum + m print (Physics.testUnitNum) for i=1,m do local unit = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber()) unit:AddNewModifier(unit, nil, "modifier_phased", {}) unit:SetModel('models/heroes/lycan/lycan_wolf.vmdl') unit:SetOriginalModel('models/heroes/lycan/lycan_wolf.vmdl') Physics:Unit(unit) unit:SetNavCollisionType(PHYSICS_NAV_BOUNCE) Physics.testUnits[#Physics.testUnits + 1] = unit end end end local vel1,vel2,vel3 = string.match(text, "^vel%s+(-?%d+)%s+(-?%d+)%s+(-?%d+)") if vel1 ~= nil and vel2 ~= nil and vel3 ~= nil then hero:AddPhysicsVelocity(Vector(tonumber(vel1), tonumber(vel2), tonumber(vel3))) end local velmax1 = string.match(text, "^velmax%s+(%d+)") if velmax1 ~= nil then hero:SetPhysicsVelocityMax(tonumber(velmax1)) end local acc1,acc2,acc3 = string.match(text, "^acc%s+(-?%d+)%s+(-?%d+)%s+(-?%d+)") if acc1 ~= nil and acc2 ~= nil and acc3 ~= nil then hero:SetPhysicsAcceleration(Vector(tonumber(acc1), tonumber(acc2), tonumber(acc3))) end local fric1 = string.match(text, "^fric%s+(-?%d+)") if fric1 ~= nil then hero:SetPhysicsFriction(tonumber(fric1) / 100 ) end local slide1 = string.match(text, "^slidemult%s+(-?%d+)") if slide1 ~= nil then hero:SetSlideMultiplier(tonumber(slide1) / 100 ) end if string.find(text, "^prevent") then hero:PreventDI(not hero:IsPreventDI()) print(hero:IsPreventDI()) end if string.find(text, "^phys") and hero.IsSlide == nil then Physics:Unit(hero) end if string.find(text, "^onframe") then hero:OnPhysicsFrame(function(unit) --PrintTable(unit) --print('----------------') end) end if string.find(text, "^slide$") then hero:Slide(not hero:IsSlide()) print(hero:IsSlide()) end if string.find(text, "^nav$") then hero:FollowNavMesh(not hero:IsFollowNavMesh()) print(hero:IsFollowNavMesh()) end local clamp1 = string.match(text, "^clamp%s+(%d+)") if clamp1 ~= nil then hero:SetVelocityClamp( tonumber(clamp1)) end if string.find(text, "^hibernate") then hero:Hibernate(not hero:IsHibernate()) print(hero:IsHibernate()) end if string.find(text, "^navtype") then local navType = hero:GetNavCollisionType() navType = (navType + 1) % 4 local navStr = "NOTHING" if navType == PHYSICS_NAV_NOTHING then navStr = "NOTHING" elseif navType == PHYSICS_NAV_HALT then navStr = "HALT" elseif navType == PHYSICS_NAV_BOUNCE then navStr = "BOUNCE" elseif navType == PHYSICS_NAV_SLIDE then navStr = "SLIDE" end print('navtype: ' .. navStr) hero:SetNavCollisionType(navType) end if string.find(text, "^ground") then local ground = hero:GetGroundBehavior() ground = (ground + 1) % 3 local groundStr = "NOTHING" if ground == PHYSICS_GROUND_NOTHING then groundStr = "NOTHING" elseif ground == PHYSICS_GROUND_ABOVE then groundStr = "ABOVE" elseif ground == PHYSICS_GROUND_LOCK then groundStr = "LOCK" end print('ground: ' .. groundStr) hero:SetGroundBehavior(ground) end end function Physics:BlockInSphere(unit, unitToRepel, radius, findClearSpace) local pos = unit:GetAbsOrigin() local vPos = unitToRepel:GetAbsOrigin() local dir = vPos - pos local dist2 = VectorDistanceSq(pos, vPos) local move = radius local move2 = move * move if move2 < dist2 then return end if IsPhysicsUnit(unitToRepel) then unitToRepel.nSkipSlide = 1 end if findClearSpace then FindClearSpaceForUnit(unitToRepel, pos + (dir:Normalized() * move), true) else unitToRepel:SetAbsOrigin(pos + (dir:Normalized() * move)) end end function Physics:BlockInBox(unit, dist, normal, buffer, findClearSpace) local toside = (dist + buffer) * normal if IsPhysicsUnit(unit) then unit.nSkipSlide = 1 end if findClearSpace then FindClearSpaceForUnit(unit, unit:GetAbsOrigin() + toside, true) else unit:SetAbsOrigin(unit:GetAbsOrigin() + toside) end end function Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace) if IsPhysicsUnit(unit) then unit.nSkipSlide = 1 end local pos = unit:GetAbsOrigin() if xblock then pos.x = value else pos.y = value end if findClearSpace then FindClearSpaceForUnit(unit, pos, true) else unit:SetAbsOrigin(pos) end end function Physics:DistanceToLine(point, lineA, lineB) local a = (lineA - point):Length() local b = (lineB - point):Length() local c = (lineB - lineA):Length() local s = (a+b+c)/2 local num = (math.sqrt(s*(s-a)*(s-b)*(s-c)) * 2 / c) if num ~= num then return 0 end return num end function Physics:CreateBox(a, b, width, center) local az = Vector(a.x,a.y,0) local bz = Vector(b.x,b.y,0) local height = math.abs(b.z - a.z) if height < 1 then b.z = b.z + width/2 a.z = a.z - width/2 end local dir = (bz-az):Normalized() local rot = Vector(-1*dir.y,dir.x,0) local box = {} if center then box[1] = a + -1 * rot * width / 2 box[2] = b + -1 * rot * width / 2 box[3] = a + rot * width / 2 else box[1] = a box[2] = b box[3] = a + rot * width end return box end function Physics:PrecalculateBoxDraw(box) local ang = RotationDelta(VectorToAngles(box.upNormal), VectorToAngles(Vector(1,0,0))).y local ang2 = RotationDelta(VectorToAngles(box.rightNormal), VectorToAngles(Vector(1,0,0))).y if ang > 90 then ang = 180 - ang elseif ang < -90 then ang = -180 - ang end if ang2 > 90 then ang2 = 180 - ang2 elseif ang2 < -90 then ang2 = -180 - ang2 end local a = ang if math.abs(ang2) < math.abs(ang) then a = ang2 end local aRot = RotatePosition(box.a, QAngle(0, a, 0), box.a) local bRot = RotatePosition(box.a, QAngle(0, a, 0), box.b) local cRot = RotatePosition(box.a, QAngle(0, a, 0), box.c) local dRot = RotatePosition(box.a, QAngle(0, a, 0), box.d) local minX = math.min(math.min(math.min(aRot.x, bRot.x), cRot.x), dRot.x) local minY = math.min(math.min(math.min(aRot.y, bRot.y), cRot.y), dRot.y) local maxX = math.max(math.max(math.max(aRot.x, bRot.x), cRot.x), dRot.x) local maxY = math.max(math.max(math.max(aRot.y, bRot.y), cRot.y), dRot.y) box.drawAngle = -1 * a box.drawMins = Vector(minX, minY, box.zMin) box.drawMaxs = Vector(maxX, maxY, box.zMax) end function Physics:PrecalculateBox(box) box.zMin = math.min(math.min(box[1].z, box[2].z), box[3].z) box.zMax = math.max(math.max(box[1].z, box[2].z), box[3].z) box.center = box[2] + (box[3] - box[2]) / 2 box.center.z = (box.zMin + box.zMax) / 2 box.radius = math.max((box[3] - box.center):Length(), (box[2] - box.center):Length()) box.middle = Vector(box.center.x, box.center.y, box.center.z) box.middle.z = 0 box.a = box[1] box.a.z = 0 box.b = box[2] box.b.z = 0 box.d = box[3] box.d.z = 0 box.c = box.b + (box.d - box.a) box.upNormal = (box.d - box.a):Normalized() box.rightNormal = (box.b - box.a):Normalized() box[1] = nil box[2] = nil box[3] = nil box.ab = box.b - box.a box.ad = box.d - box.a box.ab2 = box.ab:Dot(box.ab) box.ad2 = box.ad:Dot(box.ad) box.recalculate = nil return box end function Physics:PrecalculateAABox(box) box.xMin = math.min(box[1].x, box[2].x) box.xMax = math.max(box[1].x, box[2].x) box.yMin = math.min(box[1].y, box[2].y) box.yMax = math.max(box[1].y, box[2].y) box.zMin = math.min(box[1].z, box[2].z) box.zMax = math.max(box[1].z, box[2].z) box.center = Vector((box.xMin + box.xMax) / 2, (box.yMin + box.yMax) / 2, (box.zMin + box.zMax) / 2) box.radius =(Vector(xMax, yMax, zMax) - box.center):Length() box.middle = Vector(box.center.x, box.center.y, 0) box.xScale = box.xMax - box.middle.x box.yScale = box.yMax - box.middle.y box[1] = nil box[2] = nil box.recalculate = nil return box end if not Physics.timers then Physics:start() end Physics:CreateColliderProfile("blocker", { type = COLLIDER_SPHERE, radius = 100, recollideTime = 0, skipFrames = 0, moveSelf = false, buffer = 0, findClearSpace = false, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() end, action = function(self, unit, v) if self.moveSelf then Physics:BlockInSphere(v, unit, self.radius + self.buffer, self.findClearSpace) else Physics:BlockInSphere(unit, v, self.radius + self.buffer, self.findClearSpace) end end }) Physics:CreateColliderProfile("delete", { type = COLLIDER_SPHERE, radius = 100, recollideTime = 0, skipFrames = 0, deleteSelf = true, removeCollider = true, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() end, action = function(self, unit, v) if self.deleteSelf then UTIL_Remove(unit) else UTIL_Remove(v) end if self.removeCollider then Physics:RemoveCollider(self) end end }) Physics:CreateColliderProfile("gravity", { type = COLLIDER_SPHERE, radius = 100, recollideTime = 0, skipFrames = 0, minRadius = 0, fullRadius = 0, linear = false, force = 1000, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided) end, action = function(self, unit, v) local pos = unit:GetAbsOrigin() local vPos = v:GetAbsOrigin() local dir = pos - vPos local len = dir:Length() if len > self.minRadius then local radDiff = self.radius - self.fullRadius local dist = math.max(0, len - self.fullRadius) local factor = (radDiff - dist) / radDiff local force = self.force if self.linear then force = force * factor / 30 else local factor2 = factor * factor force = force * factor2 / 30 end force = force * (self.skipFrames + 1) v:AddPhysicsVelocity(dir:Normalized() * force) end end }) Physics:CreateColliderProfile("repel", { type = COLLIDER_SPHERE, radius = 100, recollideTime = 0, skipFrames = 0, minRadius = 0, fullRadius = 0, linear = false, force = 1000, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided) end, action = function(self, unit, v) local pos = unit:GetAbsOrigin() local vPos = v:GetAbsOrigin() local dir = pos - vPos local len = dir:Length() if len > self.minRadius then local radDiff = self.radius - self.fullRadius local dist = math.max(0, len - self.fullRadius) local factor = (radDiff - dist) / radDiff local force = self.force if self.linear then force = force * factor / 30 else local factor2 = factor * factor force = force * factor2 / 30 end force = force * (self.skipFrames + 1) v:AddPhysicsVelocity(-1 * dir:Normalized() * force) end end }) Physics:CreateColliderProfile("reflect", { type = COLLIDER_SPHERE, radius = 100, recollideTime = 0, skipFrames = 0, multiplier = 1, block = true, blockRadius = 100, moveSelf = false, findClearSpace = false, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided) end, action = function(self, unit, v) local pos = unit:GetAbsOrigin() local vPos = v:GetAbsOrigin() local normal = vPos - pos normal = normal:Normalized() local newVelocity = v.vVelocity if newVelocity:Dot(normal) >= 0 then return end v:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30) if self.block then if self.moveSelf then Physics:BlockInSphere(v, unit, self.blockRadius, self.findClearSpace) else Physics:BlockInSphere(unit, v, self.blockRadius, self.findClearSpace) end end end }) Physics:CreateColliderProfile("momentum", { type = COLLIDER_SPHERE, radius = 100, recollideTime = .1, skipFrames = 0, block = true, blockRadius = 50, moveSelf = false, findClearSpace = false, elasticity = 1, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided) end, action = function(self, unit, v) if self.hitTime == nil or GameRules:GetGameTime() >= self.hitTime then local pos = unit:GetAbsOrigin() local vPos = v:GetAbsOrigin() local dir = vPos - pos local mass = unit:GetMass() local vMass = v:GetMass() --dir.z = 0 dir = dir:Normalized() local neg = -1 * dir local dot = dir:Dot(unit:GetTotalVelocity()) local dot2 = dir:Dot(v:GetTotalVelocity()) local v1 = (self.elasticity * vMass * (dot2 - dot) + (mass * dot) + (vMass * dot2)) / (mass + vMass) local v2 = (self.elasticity * mass * (dot - dot2) + (mass * dot) + (vMass * dot2)) / (mass + vMass) --if dot < 1 and dot2 < 1 then --return --end unit:AddPhysicsVelocity((v1 - dot) * dir) v:AddPhysicsVelocity((v2 - dot2) * dir) if self.block then if self.moveSelf then Physics:BlockInSphere(v, unit, self.blockRadius, self.findClearSpace) else Physics:BlockInSphere(unit, v, self.blockRadius, self.findClearSpace) end end self.hitTime = GameRules:GetGameTime() + self.recollideTime end end }) Physics:CreateColliderProfile("momentumFull", { type = COLLIDER_SPHERE, radius = 100, recollideTime = .1, skipFrames = 0, block = true, blockRadius = 50, moveSelf = false, findClearSpace = false, elasticity = 1, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided) end, action = function(self, unit, v) if self.hitTime == nil or GameRules:GetGameTime() >= self.hitTime then local pos = unit:GetAbsOrigin() local vPos = v:GetAbsOrigin() local dir = vPos - pos local mass = unit:GetMass() local vMass = v:GetMass() --dir.z = 0 dir = dir:Normalized() local neg = -1 * dir local dot = unit:GetTotalVelocity():Length() local dot2 = -1 * v:GetTotalVelocity():Length() local v1 = (self.elasticity * vMass * (dot2 - dot) + (mass * dot) + (vMass * dot2)) / (mass + vMass) local v2 = (self.elasticity * mass * (dot - dot2) + (mass * dot) + (vMass * dot2)) / (mass + vMass) --if dot < 1 and dot2 < 1 then --return --end unit:AddPhysicsVelocity((v1 - dot) * dir) v:AddPhysicsVelocity((v2 - dot2) * dir) if self.block then if self.moveSelf then Physics:BlockInSphere(v, unit, self.blockRadius, self.findClearSpace) else Physics:BlockInSphere(unit, v, self.blockRadius, self.findClearSpace) end end self.hitTime = GameRules:GetGameTime() + self.recollideTime end end }) Physics:CreateColliderProfile("boxblocker", { type = COLLIDER_BOX, box = {Vector(0,0,0), Vector(200,100,500), Vector(0,100,0)}, slide = true, recollideTime = 0, skipFrames = 0, buffer = 0, findClearSpace = false, test = function(self, unit) return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit) end, action = function(self, box, unit) --PrintTable(box) local pos = unit:GetAbsOrigin() pos.z = 0 --face collide determination local diff = (pos - box.middle):Normalized() local up = diff:Dot(box.upNormal) local right = diff:Dot(box.rightNormal) local normal = box.upNormal local toside = 0 local leg1 = box.c local leg2 = box.d if up >= 0 then if right >= 0 then -- check top,right local u = Physics:DistanceToLine(pos, box.c, box.d) local r = Physics:DistanceToLine(pos, box.c, box.b) if u < r then normal = box.upNormal leg1 = box.c leg2 = box.d toside = u else normal = box.rightNormal leg1 = box.c leg2 = box.b toside = r end else -- check top,left local u = Physics:DistanceToLine(pos, box.c, box.d) local l = Physics:DistanceToLine(pos, box.a, box.d) if u < l then normal = box.upNormal leg1 = box.c leg2 = box.d toside = u else normal = -1 * box.rightNormal leg1 = box.a leg2 = box.d toside = l end end else if right >= 0 then -- check bot,right local b = Physics:DistanceToLine(pos, box.a, box.b) local r = Physics:DistanceToLine(pos, box.c, box.b) if b < r then normal = -1 * box.upNormal leg1 = box.a leg2 = box.b toside = b else normal = box.rightNormal leg1 = box.c leg2 = box.b toside = r end else -- check bot,left local b = Physics:DistanceToLine(pos, box.a, box.b) local l = Physics:DistanceToLine(pos, box.a, box.d) if b < l then normal = -1 * box.upNormal leg1 = box.c leg2 = box.d toside = b else normal = -1 * box.rightNormal leg1 = box.a leg2 = box.d toside = l end end end normal = normal:Normalized() Physics:BlockInBox(unit, toside, normal, self.buffer, self.findClearSpace) if self.slide and IsPhysicsUnit(unit) then unit:AddPhysicsVelocity(math.max(0,unit:GetPhysicsVelocity():Dot(normal * -1)) * normal) end end }) Physics:CreateColliderProfile("boxreflect", { type = COLLIDER_BOX, box = {Vector(0,0,0), Vector(200,100,500), Vector(0,100,0)}, recollideTime = 0, skipFrames = 0, buffer = 0, block = true, findClearSpace = false, multiplier = 1, test = function(self, unit) return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit) end, action = function(self, box, unit) local pos = unit:GetAbsOrigin() pos.z = 0 --face collide determination local diff = (pos - box.middle):Normalized() local up = diff:Dot(box.upNormal) local right = diff:Dot(box.rightNormal) local normal = box.upNormal local toside = 0 local leg1 = box.c local leg2 = box.d if up >= 0 then if right >= 0 then -- check top,right local u = Physics:DistanceToLine(pos, box.c, box.d) local r = Physics:DistanceToLine(pos, box.c, box.b) if u < r then normal = box.upNormal leg1 = box.c leg2 = box.d toside = u else normal = box.rightNormal leg1 = box.c leg2 = box.b toside = r end else -- check top,left local u = Physics:DistanceToLine(pos, box.c, box.d) local l = Physics:DistanceToLine(pos, box.a, box.d) if u < l then normal = box.upNormal leg1 = box.c leg2 = box.d toside = u else normal = -1 * box.rightNormal leg1 = box.a leg2 = box.d toside = l end end else if right >= 0 then -- check bot,right local b = Physics:DistanceToLine(pos, box.a, box.b) local r = Physics:DistanceToLine(pos, box.c, box.b) if b < r then normal = -1 * box.upNormal leg1 = box.a leg2 = box.b toside = b else normal = box.rightNormal leg1 = box.c leg2 = box.b toside = r end else -- check bot,left local b = Physics:DistanceToLine(pos, box.a, box.b) local l = Physics:DistanceToLine(pos, box.a, box.d) if b < l then normal = -1 * box.upNormal leg1 = box.c leg2 = box.d toside = b else normal = -1 * box.rightNormal leg1 = box.a leg2 = box.d toside = l end end end normal = normal:Normalized() if self.block then Physics:BlockInBox(unit, toside, normal, self.buffer, self.findClearSpace) end local newVelocity = unit.vVelocity if newVelocity:Dot(normal) >= 0 then return end unit:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30) end }) Physics:CreateColliderProfile("aaboxblocker", { type = COLLIDER_AABOX, box = {Vector(0,0,0), Vector(200,100,500)}, slide = true, recollideTime = 0, skipFrames = 0, buffer = 0, findClearSpace = false, test = function(self, unit) return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit) end, action = function(self, box, unit) --PrintTable(box) local pos = unit:GetAbsOrigin() pos.z = 0 local x = pos.x local y = pos.y local middle = box.middle local xblock = true local value = 0 local normal = Vector(1,0,0) if x > middle.x then if y > middle.y then -- up,right local relx = (pos.x - middle.x) / box.xScale local rely = (pos.y - middle.y) / box.yScale if relx > rely then --right normal = Vector(1,0,0) value = box.xMax xblock = true else --up normal = Vector(0,1,0) value = box.yMax xblock = false end elseif y <= middle.y then -- down,right local relx = (pos.x - middle.x) / box.xScale local rely = (middle.y - pos.y) / box.yScale if relx > rely then --right normal = Vector(1,0,0) value = box.xMax xblock = true else --down normal = Vector(0,-1,0) value = box.yMin xblock = false end end elseif x <= middle.x then if y > middle.y then -- up,left local relx = (middle.x - pos.x) / box.xScale local rely = (pos.y - middle.y) / box.yScale if relx > rely then --left normal = Vector(-1,0,0) value = box.xMin xblock = true else --up normal = Vector(0,1,0) value = box.yMax xblock = false end elseif y <= middle.y then -- down,left local relx = (middle.x - pos.x) / box.xScale local rely = (middle.y - pos.y) / box.yScale if relx > rely then --left normal = Vector(-1,0,0) value = box.xMin xblock = true else --down normal = Vector(0,-1,0) value = box.yMin xblock = false end end end Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace) if self.slide and IsPhysicsUnit(unit) then unit:AddPhysicsVelocity(math.max(0,unit:GetPhysicsVelocity():Dot(normal * -1)) * normal) end end }) Physics:CreateColliderProfile("aaboxreflect", { type = COLLIDER_AABOX, box = {Vector(0,0,0), Vector(200,100,500)}, recollideTime = 0, skipFrames = 0, buffer = 0, block = true, findClearSpace = false, multiplier = 1, test = function(self, unit) return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit) end, action = function(self, box, unit) --PrintTable(box) local pos = unit:GetAbsOrigin() pos.z = 0 local x = pos.x local y = pos.y local middle = box.middle local xblock = true local value = 0 local normal = Vector(1,0,0) if x > middle.x then if y > middle.y then -- up,right local relx = (pos.x - middle.x) / box.xScale local rely = (pos.y - middle.y) / box.yScale if relx > rely then --right normal = Vector(1,0,0) value = box.xMax xblock = true else --up normal = Vector(0,1,0) value = box.yMax xblock = false end elseif y <= middle.y then -- down,right local relx = (pos.x - middle.x) / box.xScale local rely = (middle.y - pos.y) / box.yScale if relx > rely then --right normal = Vector(1,0,0) value = box.xMax xblock = true else --down normal = Vector(0,-1,0) value = box.yMin xblock = false end end elseif x <= middle.x then if y > middle.y then -- up,left local relx = (middle.x - pos.x) / box.xScale local rely = (pos.y - middle.y) / box.yScale if relx > rely then --left normal = Vector(-1,0,0) value = box.xMin xblock = true else --up normal = Vector(0,1,0) value = box.yMax xblock = false end elseif y <= middle.y then -- down,left local relx = (middle.x - pos.x) / box.xScale local rely = (middle.y - pos.y) / box.yScale if relx > rely then --left normal = Vector(-1,0,0) value = box.xMin xblock = true else --down normal = Vector(0,-1,0) value = box.yMin xblock = false end end end if self.block then Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace) end local newVelocity = unit.vVelocity if newVelocity:Dot(normal) >= 0 then return end unit:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30) end }) ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/physics_old.lua ================================================ PHYSICS_VERSION = "0.92" PHYSICS_NAV_NOTHING = 0 PHYSICS_NAV_HALT = 1 PHYSICS_NAV_SLIDE = 2 PHYSICS_NAV_BOUNCE = 3 PHYSICS_GROUND_NOTHING = 0 PHYSICS_GROUND_ABOVE = 1 PHYSICS_GROUND_LOCK = 2 COLLIDER_SPHERE = 0 COLLIDER_BOX = 1 COLLIDER_AABOX = 2 PHYSICS_THINK = 0.01 if Physics == nil then print ( '[PHYSICS] creating Physics' ) Physics = {} Physics.__index = Physics end function IsPhysicsUnit(unit) return unit.GetPhysicsVelocity ~= nil end function Physics:new( o ) o = o or {} setmetatable( o, Physics ) return o end ColliderProfiles = {} function ColliderProfiles:new(o) o = o or {} setmetatable(o, self) self.__index = self return o end function Physics:start() Physics = self if self.thinkEnt == nil then self.timers = {} self.Colliders = {} self.ColliderProfiles = {} self.anggrid = nil self.offsetX = nil self.offsetY = nil self.colliderSkipOffset = 0 self.frameCount = 0 self.thinkEnt = Entities:CreateByClassname("info_target") -- Entities:FindByClassname(nil, 'CWorld') --wspawn:SetContextThink("PhysicsThink", Dynamic_Wrap( Physics, 'Think' ), PHYSICS_THINK ) self.thinkEnt:SetThink("Think", self, "physics", PHYSICS_THINK) Convars:RegisterCommand( "phystest", Dynamic_Wrap(Physics, 'PhysicsTestCommand'), "Test different Physics library commands", FCVAR_CHEAT ) end end function Physics:CreateColliderProfile(name, profile) self.ColliderProfiles[name] = ColliderProfiles:new(profile) profile.name = name return self.ColliderProfiles[name] end function Physics:ColliderFromProfile(name, collider) return self.ColliderProfiles[name]:new(collider) end function Physics:AddCollider(name, collider) if type(name) == "table" then collider = name name = DoUniqueString("collider") end collider.skipOffset = self.colliderSkipOffset self.colliderSkipOffset = self.colliderSkipOffset + 1 collider.name = name self.Colliders[name] = collider return collider end function Physics:RemoveCollider(name) if type(name) == "table" then name = name.name end local collider = self.Colliders[name] if collider == nil then return end if collider.unit ~= nil and collider.unit.oColliders[collider.name] ~= nil then collider.unit.oColliders[collider.name] = nil end self.Colliders[name] = nil end function Physics:Think() if GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then return end -- Track game time, since the dt passed in to think is actually wall-clock time not simulation time. local now = GameRules:GetGameTime() --print("now: " .. now) if Physics.t0 == nil then Physics.t0 = now end local dt = now - Physics.t0 Physics.t0 = now self.frameCount = self.frameCount + 1 -- Process timers for k,v in pairs(Physics.timers) do -- Run the callback local status, nextCall = pcall(v.callback, Physics, v) -- Make sure it worked if status then -- Check if it needs to loop if nextCall then -- Change it's end time v.endTime = nextCall else Physics.timers[k] = nil end -- Update timer data --self:UpdateTimerData() else -- Nope, handle the error Physics.timers[k] = nil print('[PHYSICS] Timer error:' .. nextCall) end end if dt > 0 then for name,collider in pairs(Physics.Colliders) do if collider.skipFrames == 0 or ((self.frameCount + collider.skipOffset) % (collider.skipFrames + 1) == 0) then if collider.type == COLLIDER_SPHERE then local rad2 = collider.radius * collider.radius local unit = collider.unit if IsValidEntity(unit) then if collider.draw then local alpha = 0 local color = Vector(200,0,0) if type(collider.draw) == "table" then alpha = collider.draw.alpha or alpha color = collider.draw.color or color end DebugDrawCircle(unit:GetAbsOrigin(), color, alpha, collider.radius, true, .01) end local ents = nil if collider.filter then if type(collider.filter) == "table" then ents = collider.filter else local status = nil status, ents = pcall(collider.filter, collider) if not status then print('[PHYSICS] Collision Filter Failure!: ' .. ents) end end else ents = Entities:FindAllInSphere(unit:GetAbsOrigin(), collider.radius + 200) end for k,v in pairs(ents) do if IsValidEntity(v) and IsValidEntity(unit) and v ~= unit and rad2 >= VectorDistanceSq(unit:GetAbsOrigin(), v:GetAbsOrigin()) then local status, test = pcall(collider.test, collider, unit, v) if not status then print('[PHYSICS] Collision Test Failure!: ' .. test) elseif test then if collider.preaction then local status, action = pcall(collider.preaction, collider, unit, v) if not status then print('[PHYSICS] Collision preaction Failure!: ' .. action) end end local status, action = pcall(collider.action, collider, unit, v) if not status then print('[PHYSICS] Collision action Failure!: ' .. action) end if collider.postaction then local status, action = pcall(collider.postaction, collider, unit, v) if not status then print('[PHYSICS] Collision postaction Failure!: ' .. action) end end --unit.nNextCollide = now + collider.recollideTime --v.nNextCollide = now + v.collider.recollideTime end end end else Physics:RemoveCollider(name) end elseif collider.type == COLLIDER_BOX then -- box collider local box = collider.box if box.recalculate or box.ad2 == nil then collider.box = Physics:PrecalculateBox(box) end if collider.draw then local alpha = 5 local color = Vector(200,0,0) if type(collider.draw) == "table" then alpha = collider.draw.alpha or alpha color = collider.draw.color or color end if not collider.box.drawAngle then Physics:PrecalculateBoxDraw(collider.box) end -- what the hell is that xoffset on the origin, but it works 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) end local ents = nil if collider.filter then if type(collider.filter) == "table" then ents = collider.filter else local status = nil status, ents = pcall(collider.filter, collider) if not status then print('[PHYSICS] Collision Filter Failure!: ' .. ents) end end else ents = Entities:FindAllInSphere(box.center, box.radius + 200) end for k,v in pairs(ents) do if IsValidEntity(v) then local pos = v:GetAbsOrigin() if (pos.z >= box.zMin and pos.z <= box.zMax) then pos.z = 0 local am = pos - box.a local amDotAb = am:Dot(box.ab) if amDotAb > 0 and amDotAb < box.ab2 then local amDotAd = am:Dot(box.ad) if amDotAd > 0 and amDotAd < box.ad2 then --inside local status, test = pcall(collider.test, collider, v) if not status then print('[PHYSICS] Collision Test Failure!: ' .. test) elseif test then if collider.preaction then local status, action = pcall(collider.preaction, collider, box, v) if not status then print('[PHYSICS] Collision preaction Failure!: ' .. action) end end local status, action = pcall(collider.action, collider, box, v) if not status then print('[PHYSICS] Collision action Failure!: ' .. action) end if collider.postaction then local status, action = pcall(collider.postaction, collider, box, v) if not status then print('[PHYSICS] Collision postaction Failure!: ' .. action) end end end end end end end end elseif collider.type == COLLIDER_AABOX then -- box collider local box = collider.box if box.recalculate or box.xMin == nil then collider.box = Physics:PrecalculateAABox(box) end if collider.draw then local alpha = 5 local color = Vector(200,0,0) if type(collider.draw) == "table" then alpha = collider.draw.alpha or alpha color = collider.draw.color or color end 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) end local ents = nil if collider.filter then if type(collider.filter) == "table" then ents = collider.filter else local status = nil status, ents = pcall(collider.filter, collider) if not status then print('[PHYSICS] Collision Filter Failure!: ' .. ents) end end else ents = Entities:FindAllInSphere(box.center, box.radius + 200) end for k,v in pairs(ents) do if IsValidEntity(v) then local pos = v:GetAbsOrigin() if (pos.x >= box.xMin and pos.x <= box.xMax and pos.y >= box.yMin and pos.y <= box.yMax and pos.z >= box.zMin and pos.z <= box.zMax) then --inside local status, test = pcall(collider.test, collider, v) if not status then print('[PHYSICS] Collision Test Failure!: ' .. test) elseif test then if collider.preaction then local status, action = pcall(collider.preaction, collider, box, v) if not status then print('[PHYSICS] Collision preaction Failure!: ' .. action) end end local status, action = pcall(collider.action, collider, box, v) if not status then print('[PHYSICS] Collision action Failure!: ' .. action) end if collider.postaction then local status, action = pcall(collider.postaction, collider, box, v) if not status then print('[PHYSICS] Collision postaction Failure!: ' .. action) end end end end end end end end end end return PHYSICS_THINK end function Physics:CreateTimer(name, args) if not args.endTime or not args.callback then print("Invalid timer created: "..name) return end Physics.timers[name] = args end function Physics:RemoveTimer(name) Physics.timers[name] = nil end function Physics:RemoveTimers(killAll) local timers = {} if not killAll then for k,v in pairs(Physics.timers) do if v.persist then timers[k] = v end end end Physics.timers = timers end --[[ sequence: {"type", Physics_LINEAR, Physics_CURVED, Physics_SPLIT LINEAR "distance" or "time" or "to" "toward" or "angle" or "to" "from" or nothing "speed" or nothing CURVED "toward" or "angle" "angleTick" "tick" "ticks" "around" "speed" or nothing SPLIT "TBD" ]] function Physics:GenerateAngleGrid() local anggrid = {} local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0) local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0) print(worldMin) print(worldMax) local boundX1 = GridNav:WorldToGridPosX(worldMin.x) local boundX2 = GridNav:WorldToGridPosX(worldMax.x) local boundY1 = GridNav:WorldToGridPosX(worldMin.y) local boundY2 = GridNav:WorldToGridPosX(worldMax.y) local offsetX = boundX1 * -1 + 1 local offsetY = boundY1 * -1 + 1 print(boundX1 .. " -- " .. boundX2) print(boundY1 .. " -- " .. boundY2) print(offsetX) print(offsetY) local vecs = { {vec = Vector(0,1,0):Normalized(), x=0,y=1},-- N {vec = Vector(1,1,0):Normalized(), x=1,y=1}, -- NE {vec = Vector(1,0,0):Normalized(), x=1,y=0}, -- E {vec = Vector(1,-1,0):Normalized(), x=1,y=-1}, -- SE {vec = Vector(0,-1,0):Normalized(), x=0,y=-1}, -- S {vec = Vector(-1,-1,0):Normalized(), x=-1,y=-1}, -- SW {vec = Vector(-1,0,0):Normalized(), x=-1,y=0}, -- W {vec = Vector(-1,1,0):Normalized(), x=-1,y=1} -- NW } print('----------------------') anggrid[1] = {} for j=boundY1,boundY2 do anggrid[1][j + offsetY] = -1 end anggrid[1][boundY2 + offsetY] = -1 for i=boundX1+1,boundX2-1 do anggrid[i+offsetX] = {} anggrid[i+offsetX][1] = -1 for j=(boundY1+1),boundY2-1 do local position = Vector(GridNav:GridPosToWorldCenterX(i), GridNav:GridPosToWorldCenterY(j), 0) local blocked = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) --or (pseudoGNV[i] ~= nil and pseudoGNV[i][j]) local seg = 0 local sum = Vector(0,0,0) local count = 0 local inseg = false if blocked then for k=1,#vecs do local vec = vecs[k].vec local xoff = vecs[k].x local yoff = vecs[k].y local pos = Vector(GridNav:GridPosToWorldCenterX(i+xoff), GridNav:GridPosToWorldCenterY(j+yoff), 0) local blo = not GridNav:IsTraversable(pos) or GridNav:IsBlocked(pos) --or (pseudoGNV[i+xoff] ~= nil and pseudoGNV[i+xoff][j+yoff]) if not blo then count = count + 1 inseg = true sum = sum + vec else if inseg then inseg = false seg = seg + 1 end end end if seg > 1 then print ('OVERSEG x=' .. i .. ' y=' .. j) anggrid[i+offsetX][j+offsetY] = -1 elseif count > 5 then print ('PROTRUDE x=' .. i .. ' y=' .. j) anggrid[i+offsetX][j+offsetY] = -1 elseif count == 0 then anggrid[i+offsetX][j+offsetY] = -1 else local sum = sum:Normalized() local angle = math.floor((math.acos(Vector(1,0,0):Dot(sum:Normalized()))/ math.pi * 180)) if sum.y < 0 then angle = -1 * angle end anggrid[i+offsetX][j+offsetY] = angle end else anggrid[i+offsetX][j+offsetY] = -1 end end anggrid[i+offsetX][boundY2+offsetY] = -1 end anggrid[boundX2+offsetX] = {} for j=boundY1,boundY2 do anggrid[boundX2+offsetX][j+offsetY] = -1 end anggrid[boundX2+offsetX][boundY2+offsetY] = -1 print('--------------') print(#anggrid) print(#anggrid[1]) print(#anggrid[2]) print(#anggrid[3]) if MAP_DATA then MAP_DATA.anggrid = anggrid end Physics:AngleGrid(anggrid) end function Physics:AngleGrid( anggrid, angoffsets ) self.anggrid = anggrid print('[PHYSICS] Angle Grid Set') local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0) local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0) local boundX1 = GridNav:WorldToGridPosX(worldMin.x) local boundX2 = GridNav:WorldToGridPosX(worldMax.x) local boundY1 = GridNav:WorldToGridPosX(worldMin.y) local boundY2 = GridNav:WorldToGridPosX(worldMax.y) local offsetX = boundX1 * -1 + 1 local offsetY = boundY1 * -1 + 1 self.offsetX = offsetX self.offsetY = offsetY if angoffsets ~= nil then self.offsetX = math.abs(angoffsets.x) + 1 self.offsetY = math.abs(angoffsets.y) + 1 end end function Physics:Unit(unit) if IsPhysicsUnit(unit) then if Convars:GetBool("developer") then unit:StopPhysicsSimulation() else return end end function unit:StopPhysicsSimulation () Physics.timers[unit.PhysicsTimerName] = nil unit.bStarted = false end function unit:StartPhysicsSimulation () Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bStarted = true end function unit:SetPhysicsVelocity (velocity) unit.vVelocity = velocity / 30 if unit.nVelocityMax > 0 and unit.vVelocity:Length() > unit.nVelocityMax then unit.vVelocity = unit.vVelocity:Normalized() * unit.nVelocityMax end if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:AddPhysicsVelocity (velocity) unit.vVelocity = unit.vVelocity + velocity / 30 if unit.nVelocityMax > 0 and unit.vVelocity:Length() > unit.nVelocityMax then unit.vVelocity = unit.vVelocity:Normalized() * unit.nVelocityMax end if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:SetPhysicsVelocityMax (velocityMax) unit.nVelocityMax = velocityMax / 30 end function unit:GetPhysicsVelocityMax () return unit.vVelocity * 30 end function unit:SetPhysicsAcceleration (acceleration) unit.vAcceleration = acceleration / 900 if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:AddPhysicsAcceleration (acceleration) unit.vAcceleration = unit.vAcceleration + acceleration / 900 if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:SetPhysicsFriction (friction) unit.fFriction = friction end function unit:GetPhysicsVelocity () return unit.vVelocity * 30 end function unit:GetPhysicsAcceleration () return unit.vAcceleration * 900 end function unit:GetPhysicsFriction () return unit.fFriction end function unit:FollowNavMesh (follow) unit.bFollowNavMesh = follow end function unit:IsFollowNavMesh () return unit.bFollowNavMesh end function unit:SetGroundBehavior (ground) unit.nLockToGround = ground end function unit:GetGroundBehavior () return unit.nLockToGround end function unit:SetSlideMultiplier (slideMultiplier) unit.fSlideMultiplier = slideMultiplier end function unit:GetSlideMultiplier () return unit.fSlideMultiplier end function unit:Slide (slide) unit.bSlide = slide if unit.bStarted and unit.bHibernating then Physics.timers[unit.PhysicsTimerName] = unit.PhysicsTimer unit.PhysicsTimer.endTime = GameRules:GetGameTime() unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vLastVelocity = Vector(0,0,0) unit.vSlideVelocity = Vector(0,0,0) unit.bHibernating = false end end function unit:IsSlide () return unit.bSlide end function unit:PreventDI (prevent) unit.bPreventDI = prevent if not prevent and unit:HasModifier("modifier_rooted") then unit:RemoveModifierByName("modifier_rooted") end end function unit:IsPreventDI () return unit.bPreventDI end function unit:SetNavCollisionType (collisionType) unit.nNavCollision = collisionType end function unit:GetNavCollisionType () return unit.nNavCollision end function unit:OnPhysicsFrame(fun) unit.PhysicsFrameCallback = fun end function unit:SetVelocityClamp (clamp) unit.fVelocityClamp = clamp / 30 end function unit:GetVelocityClamp () return unit.fVelocityClamp * 30 end function unit:Hibernate (hibernate) unit.bHibernate = hibernate end function unit:IsHibernate () return unit.bHibernate end function unit:DoHibernate () Physics.timers[unit.PhysicsTimerName] = nil unit.bHibernating = true end function unit:OnHibernate(fun) unit.PhysicsHibernateCallback = fun end function unit:OnPreBounce(fun) unit.PhysicsOnPreBounce = fun end function unit:OnBounce(fun) unit.PhysicsOnBounce = fun end function unit:OnPreSlide(fun) unit.PhysicsOnPreSlide = fun end function unit:OnSlide(fun) unit.PhysicsOnSlide = fun end function unit:AdaptiveNavGridLookahead (adaptive) unit.bAdaptiveNavGridLookahead = adaptive end function unit:IsAdaptiveNavGridLookahead () return unit.bAdaptiveNavGridLookahead end function unit:SetNavGridLookahead (lookahead) unit.nNavGridLookahead = lookahead end function unit:GetNavGridLookahead () return unit.nNavGridLookahead end function unit:SkipSlide (frames) unit.nSkipSlide = frames or 1 end function unit:SetRebounceFrames ( rebounce ) unit.nMaxRebounce = rebounce unit.nRebounceFrames = 0 end function unit:GetRebounceFrames () unit.nRebounceFrames = 0 return unit.nMaxRebounce end function unit:GetLastGoodPosition () return unit.vLastGoodPosition end function unit:SetStuckTimeout (timeout) unit.nStuckTimeout = timeout unit.nStuckFrames = 0 end function unit:GetStuckTimeout () unit.nStuckFrames = 0 return unit.nStuckTimeout end function unit:SetAutoUnstuck (unstuck) unit.bAutoUnstuck = unstuck end function unit:GetAutoUnstuck () return unit.bAutoUnstuck end function unit:SetBounceMultiplier (bounce) unit.fBounceMultiplier = bounce end function unit:GetBounceMultiplier () return unit.fBounceMultiplier end function unit:GetTotalVelocity() if unit.bStarted and not unit.bHibernating then return unit.vTotalVelocity else return Vector(0,0,0) end end function unit:GetColliders() return unit.oColliders end function unit:RemoveCollider(name) if name == nil then local i,v = next(unit.oColliders, nil) if i == nil then return end name = unit.oColliders[i].name elseif type(name) == "table" then name = name.name end Physics:RemoveCollider(name) end function unit:AddCollider(name, collider) local coll = Physics:AddCollider(name, collider) coll.unit = unit unit.oColliders[coll.name] = coll return coll end function unit:AddColliderFromProfile(name, profile, collider) if profile == nil then profile = name name = DoUniqueString("collider") elseif type(profile) == "table" then collider = profile profile = name name = DoUniqueString("collider") end local coll = Physics:AddCollider(name, Physics:ColliderFromProfile(profile, collider)) coll.unit = unit unit.oColliders[coll.name] = coll return coll end function unit:GetMass() return unit.fMass end function unit:SetMass(mass) unit.fMass = mass end unit.PhysicsTimerName = DoUniqueString('phys') Physics:CreateTimer(unit.PhysicsTimerName, { endTime = GameRules:GetGameTime(), useGameTime = true, callback = function(reflex, args) local prevTime = unit.PhysicsLastTime if not IsValidEntity(unit) then return end local curTime = GameRules:GetGameTime() local prevPosition = unit.PhysicsLastPosition local position = unit:GetAbsOrigin() local slideVelocity = Vector(0,0,0) local lastVelocity = unit.vLastVelocity unit.vLastVelocity = unit.vVelocity unit.vTotalVelocity = (position - prevPosition) / (curTime - prevTime) unit.PhysicsLastTime = curTime unit.PhysicsLastPosition = position if unit.bPreventDI and not unit:HasModifier("modifier_rooted") then unit:AddNewModifier(unit, nil, "modifier_rooted", {}) end if unit.bSlide and unit.nSkipSlide <= 0 then slideVelocity = ((position - prevPosition) - lastVelocity + unit.vSlideVelocity) * unit.fSlideMultiplier else --print(unit.nSkipSlide) unit.vSlideVelocity = Vector(0,0,0) end unit.nSkipSlide = unit.nSkipSlide - 1 -- Adjust velocity local newVelocity = unit.vVelocity + unit.vAcceleration + (-1 * unit.fFriction * unit.vVelocity) + slideVelocity --print('vel: ' .. tostring(unit.vVelocity:Length()) .. ' -- svel: ' .. tostring(slideVelocity:Length()) .. " -- nvel: " .. tostring(newVelocity:Length())) -- Calculate new position local newPos = position + unit.vVelocity if unit.nLockToGround == PHYSICS_GROUND_LOCK then local groundPos = GetGroundPosition(newPos, unit) newPos = groundPos newVelocity.z = 0 elseif unit.nLockToGround == PHYSICS_GROUND_ABOVE then local groundPos = GetGroundPosition(newPos, unit) if groundPos.z > newPos.z then newPos = groundPos newVelocity.z = 0 end end local newVelLength = newVelocity:Length() local blockedPos = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) if not blockedPos then unit.vLastGoodPosition = position unit.nStuckFrames = 0 else unit.nStuckFrames = unit.nStuckFrames + 1 end if unit.nVelocityMax > 0 and newVelLength > unit.nVelocityMax then newVelocity = newVelocity:Normalized() * unit.nVelocityMax end if unit.vAcceleration.x == 0 and unit.vAcceleration.y == 0 and newVelLength < unit.fVelocityClamp then --print('clamp') newVelocity = Vector(0,0,newVelocity.z) if unit:HasModifier("modifier_rooted") then unit:RemoveModifierByName("modifier_rooted") end if unit.bHibernate then unit:DoHibernate() local ent = Entities:FindInSphere(nil, position, 35) local blocked = false while ent ~= nil and not blocked do if ent.IsHero ~= nil and ent ~= unit then blocked = true end --print(ent:GetClassname() .. " -- " .. ent:GetName() .. " -- " .. tostring(ent.IsHero)) ent = Entities:FindInSphere(ent, position, 35) end if blocked or blockedPos or GridNav:IsNearbyTree(position, 30, true) then FindClearSpaceForUnit(unit, position, true) unit.nSkipSlide = 1 --print('FCS hib') end if unit.PhysicsHibernateCallback ~= nil then local status, nextCall = pcall(unit.PhysicsHibernateCallback, unit) if not status then print('[PHYSICS] Failed HibernateCallback: ' .. nextCall) end end return end local ent = Entities:FindInSphere(nil, position, 35) local blocked = false while ent ~= nil and not blocked do if ent.IsHero ~= nil and ent ~= unit then blocked = true end --print(ent:GetClassname() .. " -- " .. ent:GetName() .. " -- " .. tostring(ent.IsHero)) ent = Entities:FindInSphere(ent, position, 35) end if blocked or not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) or GridNav:IsNearbyTree(position, 30, true) then FindClearSpaceForUnit(unit, position, true) unit.nSkipSlide = 1 --print('FCS nothib lowv + blocked') end --return curTime end if unit.vVelocity ~= Vector(0,0,0) or slideVelocity ~= Vector(0,0,0) then if unit.bFollowNavMesh then local diff = unit.vVelocity:Normalized() --FindClearSpaceForUnit(unit, newPos, true) unit:SetAbsOrigin(newPos) local bound = 1 if unit.GetPaddedCollisionRadius then bound = unit:GetPaddedCollisionRadius() + 1 elseif unit.GetBoundingMaxs then bound = math.max(unit:GetBoundingMaxs().x, unit:GetBoundingMaxs().y) end local connect = newPos-- + diff * bound local navConnect = not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect) local lookaheadNum = unit.nNavGridLookahead if unit.bAdaptiveNavGridLookahead then lookaheadNum = math.ceil(unit.vVelocity:Length() / 32) end local tot = lookaheadNum + 1 local div = 1 / tot local index = 1 while not navConnect and index < tot do connect = newPos + unit.vVelocity * (div * index) + diff * bound navConnect = not GridNav:IsTraversable(connect) or GridNav:IsBlocked(connect) index = index + 1 end --or not GridNav:IsTraversable(newPos + unit.vVelocity * .5) -- diff * unit.nNavGridLookahead --or or GridNav:IsBlocked(newPos + unit.vVelocity * .5) if unit.nNavCollision == PHYSICS_NAV_HALT and navConnect then newVelocity = Vector(0,0,0) FindClearSpaceForUnit(unit, newPos, true) unit.nSkipSlide = 1 elseif unit.nNavCollision == PHYSICS_NAV_SLIDE and navConnect then local navX = GridNav:WorldToGridPosX(connect.x) local navY = GridNav:WorldToGridPosY(connect.y) local navPos = Vector(GridNav:GridPosToWorldCenterX(navX), GridNav:GridPosToWorldCenterY(navY), 0) --unit.nRebounceFrames = unit.nMaxRebounce local normal = nil local anggrid = self.anggrid local offX = self.offsetX local offY = self.offsetY if anggrid then local angSize = #anggrid local angX = navX + offX local angY = navY + offY --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY) local angle = anggrid[angX][angY] if angle ~= -1 then angle = angle normal = -1 * RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0)) --print(angle) --print(normal) --print('----------') end end local dir = navPos - position if normal == nil then --local face = navPos - position --print("face: " .. tostring(face)) dir.z = 0 dir = dir:Normalized() -- Nav bounce checks --local angx = (math.acos(dir.x)/ math.pi * 180) --local angy = (math.acos(dir.y)/ math.pi * 180) --print(tostring(dir:Length()) .. " -- " .. tostring(dir)) --print(dir:Dot(Vector(1,0,0))) --print(dir:Dot(Vector(-1,0,0))) --print(dir:Dot(Vector(0,1,0))) --print(dir:Dot(Vector(0,-1,0))) --print('---------------') local vVelocity = unit.vVelocity if dir:Dot(Vector(1,0,0)) > .707 then normal = Vector(1,0,0) local navPos2 = navPos + Vector(-64,0,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vVelocity.y > 0 then normal = Vector(0,1,0) navPos2 = navPos + Vector(0,-64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(0,64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end end end elseif dir:Dot(Vector(-1,0,0)) > .707 then normal = Vector(-1,0,0) local navPos2 = navPos + Vector(64,0,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vVelocity.y > 0 then normal = Vector(0,1,0) navPos2 = navPos + Vector(0,-64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(0,64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end end end elseif dir:Dot(Vector(0,1,0)) > .707 then normal = Vector(0,1,0) local navPos2 = navPos + Vector(0,-64,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vVelocity.x > 0 then normal = Vector(1,0,0) navPos2 = navPos + Vector(-64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end else normal = Vector(-1,0,0) navPos2 = navPos + Vector(64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end end end elseif dir:Dot(Vector(0,-1,0)) > .707 then normal = Vector(0,-1,0) local navPos2 = navPos + Vector(0,64,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vVelocity.x > 0 then normal = Vector(-1,0,0) navPos2 = navPos + Vector(-64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x, diff.y, diff.z) end end end end --FindClearSpaceForUnit(unit, newPos, true) --print(tostring(unit:GetAbsOrigin()) .. " -- " .. tostring(navPos)) end if unit.PhysicsOnPreSlide then local status, nextCall = pcall(unit.PhysicsOnPreSlide, unit, normal) if not status then print('[PHYSICS] Failed OnPreSlide: ' .. nextCall) end end newVelocity = (-1 * newVelocity:Dot(normal) * normal) + newVelocity unit.vVelocity = newVelocity local ndir = dir * -1 local scalar = math.min((32+bound) / math.abs(ndir.x), (32+bound) / math.abs(ndir.y)) unit.nSkipSlide = 1 unit:SetAbsOrigin(navPos + Vector(scalar*ndir.x, scalar*ndir.y, position.z)) if unit.PhysicsOnSlide then local status, nextCall = pcall(unit.PhysicsOnSlide, unit, normal) if not status then print('[PHYSICS] Failed OnSlide: ' .. nextCall) end end elseif unit.nRebounceFrames <= 0 and unit.nNavCollision == PHYSICS_NAV_BOUNCE and navConnect then local navX = GridNav:WorldToGridPosX(connect.x) local navY = GridNav:WorldToGridPosY(connect.y) local navPos = Vector(GridNav:GridPosToWorldCenterX(navX), GridNav:GridPosToWorldCenterY(navY), 0) unit.nRebounceFrames = unit.nMaxRebounce local normal = nil local anggrid = self.anggrid local offX = self.offsetX local offY = self.offsetY if anggrid then local angSize = #anggrid local angX = navX + offX local angY = navY + offY --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY) local angle = anggrid[angX][angY] if angle ~= -1 then angle = angle normal = RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0)) --print(normal) --print('----------') end end if normal == nil then --local face = navPos - position --print("face: " .. tostring(face)) --local dir = navPos - position local dir = navPos - position dir.z = 0 dir = dir:Normalized() -- Nav bounce checks --local angx = (math.acos(dir.x)/ math.pi * 180) --local angy = (math.acos(dir.y)/ math.pi * 180) --print(tostring(dir:Length()) .. " -- " .. tostring(dir)) --print(dir:Dot(Vector(1,0,0))) --print(dir:Dot(Vector(-1,0,0))) --print(dir:Dot(Vector(0,1,0))) --print(dir:Dot(Vector(0,-1,0))) --print('---------------') local vVelocity = unit.vVelocity if dir:Dot(Vector(1,0,0)) > .707 then normal = Vector(1,0,0) local navPos2 = navPos + Vector(-64,0,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vVelocity.y > 0 then normal = Vector(0,1,0) navPos2 = navPos + Vector(0,-64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(0,64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end end end elseif dir:Dot(Vector(-1,0,0)) > .707 then normal = Vector(-1,0,0) local navPos2 = navPos + Vector(64,0,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vVelocity.y > 0 then normal = Vector(0,1,0) navPos2 = navPos + Vector(0,-64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(0,64,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end end end elseif dir:Dot(Vector(0,1,0)) > .707 then normal = Vector(0,1,0) local navPos2 = navPos + Vector(0,-64,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vVelocity.x > 0 then normal = Vector(1,0,0) navPos2 = navPos + Vector(-64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end else normal = Vector(-1,0,0) navPos2 = navPos + Vector(64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end end end elseif dir:Dot(Vector(0,-1,0)) > .707 then normal = Vector(0,-1,0) local navPos2 = navPos + Vector(0,64,0) local navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then if vVelocity.x > 0 then normal = Vector(-1,0,0) navPos2 = navPos + Vector(-64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end else normal = Vector(0,-1,0) navPos2 = navPos + Vector(64,0,0) navConnect2 = not GridNav:IsTraversable(navPos2) or GridNav:IsBlocked(navPos2) if navConnect2 then normal = Vector(diff.x * -1, diff.y * -1, diff.z) end end end end --FindClearSpaceForUnit(unit, newPos, true) --print(tostring(unit:GetAbsOrigin()) .. " -- " .. tostring(navPos)) end if unit.PhysicsOnPreBounce then local status, nextCall = pcall(unit.PhysicsOnPreBounce, unit, normal) if not status then print('[PHYSICS] Failed OnPreBounce: ' .. nextCall) end end newVelocity = ((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * unit.fBounceMultiplier unit.vVelocity = newVelocity if unit.PhysicsOnBounce then local status, nextCall = pcall(unit.PhysicsOnBounce, unit, normal) if not status then print('[PHYSICS] Failed OnBounce: ' .. nextCall) end end end else unit:SetAbsOrigin(newPos) end end unit.nRebounceFrames = unit.nRebounceFrames - 1 unit.vVelocity = newVelocity if unit.PhysicsFrameCallback ~= nil then local status, nextCall = pcall(unit.PhysicsFrameCallback, unit) if not status then print('[PHYSICS] Failed FrameCallback: ' .. nextCall) end end if unit.bAutoUnstuck and unit.nStuckFrames >= unit.nStuckTimeout then unit.nStuckFrames = 0 unit.nSkipSlide = 1 local navX = GridNav:WorldToGridPosX(position.x) local navY = GridNav:WorldToGridPosY(position.y) local anggrid = self.anggrid local offX = self.offsetX local offY = self.offsetY if anggrid then local angSize = #anggrid local angX = navX + offX local angY = navY + offY --print(offX .. ' -- ' .. angX .. ' == ' .. angY .. ' -- ' .. offY) local angle = anggrid[angX][angY] if angle ~= -1 then local normal = RotatePosition(Vector(0,0,0), QAngle(0,angle,0), Vector(1,0,0)) --print(normal) --print('----------') unit:SetAbsOrigin(position + normal * 64) else unit:SetAbsOrigin(unit.vLastGoodPosition) end else unit:SetAbsOrigin(unit.vLastGoodPosition) end end return curTime end }) unit.PhysicsTimer = Physics.timers[unit.PhysicsTimerName] unit.vVelocity = Vector(0,0,0) unit.vLastVelocity = Vector(0,0,0) unit.vAcceleration = Vector(0,0,0) unit.fFriction = .05 unit.PhysicsLastPosition = unit:GetAbsOrigin() unit.PhysicsLastTime = GameRules:GetGameTime() unit.vTotalVelocity = Vector(0,0,0) unit.bFollowNavMesh = true unit.nLockToGround = PHYSICS_GROUND_ABOVE unit.bPreventDI = false unit.bSlide = false unit.nNavCollision = PHYSICS_NAV_SLIDE unit.fSlideMultiplier = 0.1 unit.nVelocityMax = 0 unit.PhysicsFrameCallback = nil unit.fVelocityClamp = 20.0 / 30.0 unit.bHibernate = true unit.bHibernating = false unit.bStarted = true unit.vSlideVelocity = Vector(0,0,0) unit.nNavGridLookahead = 1 unit.bAdaptiveNavGridLookahead = false unit.nSkipSlide = 0 unit.nMaxRebounce = 2 unit.nRebounceFrames = 2 unit.vLastGoodPosition = unit:GetAbsOrigin() unit.bAutoUnstuck = true unit.nStuckTimeout = 300 unit.nStuckFrames = 0 unit.fBounceMultiplier = 1.0 unit.oColliders = {} unit.fMass = 100 end Physics.testUnitNum = 0 Physics.testUnits = {} -- Physics Testing commands function Physics:PhysicsTestCommand(...) local args = {...} local text = table.concat (args, " ") local ply = Convars:GetCommandClient() local plyID = ply:GetPlayerID() local hero = ply:GetAssignedHero() if text == "" or string.find(text, "^help") then print("PHYSTEST Help") print('---------------------') print("vel X Y Z -- Adds the given velocity X,Y,Z to the current hero's velocity.") print("velmax X -- Sets the maximum velocity of the current hero to X.") print("clamp X -- Sets the to-zero velocity clamp to X hammer units per second.") print("acc X Y Z -- Sets the given acceleration X,Y,Z to the current hero's acceleration.") print("fric X -- Sets the frcition of the current hero to X / 100.") print("prevent -- Toggles Directional Influence prevention (aka right click moving).") print("slidemult X -- Sets the slide multiplier to X / 100.") print("slide -- Toggles Slide on/off.") print("nav -- Toggles FollowNavMesh on/off. Nav collision will not trigger if this is not set.") print("navtype -- Cycles through the navtype collision types.") print("hibernate -- Toggles hibernate on/off.") print("ground -- Cycles through the ground behavior.") print("mass X -- Sets the mass of this unit to X for momentum collision calculations.") print("bouncemult X -- Sets the bounce multiplier to X / 100.") print("unstuck -- Toggles AutoUnstuck on/off.") print("stuckframes X -- Sets the number of frames to wait before triggering an Unstuck.") print("rebounceframes X -- Sets the number of frames to wait between NAV_BOUNCE bounces.") print("lookahead X -- Sets the number of lookahead frames for nav collision detection.") print("phys -- Activates this hero as a physics unit.") print("regrow -- Regrow all trees on the map.") print("anggrid -- Process the map into an anglegrid to use with SLIDE/BOUNCE nav collision.") print('---------------------') end if string.find(text, "^regrow") then GridNav:RegrowAllTrees() end if string.find(text, "^unstuck") then hero:SetAutoUnstuck(not hero:GetAutoUnstuck()) print(hero:GetAutoUnstuck()) end local mass1 = string.match(text, "^mass%s+(-?%d+)") if mass1 ~= nil then hero:SetMass(mass1) end local bmult1 = string.match(text, "^bouncemult%s+(-?%d+)") if bmult1 ~= nil then hero:SetBounceMultiplier(bmult1 / 100) end local stuckTimeout1 = string.match(text, "^stuckframes%s+(%d+)") if stuckTimeout1 ~= nil then hero:SetStuckTimeout(stuckTimeout1) end local rebounce1 = string.match(text, "^rebounceframes%s+(%d+)") if rebounce1 ~= nil then hero:SetRebounceFrames(rebounce1) end local lookahead1 = string.match(text, "^lookahead%s+(%d+)") if lookahead1 ~= nil then hero:SetNavGridLookahead(lookahead1) end if string.find(text, "^spider") then local mapGnv = {} local worldMin = Vector(GetWorldMinX(), GetWorldMinY(), 0) local worldMax = Vector(GetWorldMaxX(), GetWorldMaxY(), 0) print(worldMin) print(worldMax) local boundX1 = GridNav:WorldToGridPosX(worldMin.x) local boundX2 = GridNav:WorldToGridPosX(worldMax.x) local boundY1 = GridNav:WorldToGridPosX(worldMin.y) local boundY2 = GridNav:WorldToGridPosX(worldMax.y) print(boundX1 .. " -- " .. boundX2) print(boundY1 .. " -- " .. boundY2) print('----------------------') InitLogFile("addons/dotadash/spider.txt", "") AppendToLogFile("addons/dotadash/spider.txt", "P1") AppendToLogFile("addons/dotadash/spider.txt", "#spider created pbm") AppendToLogFile("addons/dotadash/spider.txt", tostring(boundX2 - boundX1 + 1) .. " " .. tostring(boundY2 - boundY1 + 1)) local pseudoGNV = {} local WALLS = self.WALLS for i=1,#WALLS do local from = WALLS[i].from local to = WALLS[i].to local cur = from local dist = to - from dist.z = 0 local dir = dist:Normalized() dist = dist:Length() local norm = RotatePosition(Vector(0,0,0), QAngle(0,90,0), dir) for j=1,math.floor(dist/30) do local pos = cur + norm * 64 local pos2 = cur - norm * 64 local x = GridNav:WorldToGridPosX(pos.x) local y = GridNav:WorldToGridPosY(pos.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true x = GridNav:WorldToGridPosX(pos2.x) y = GridNav:WorldToGridPosY(pos2.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true x = GridNav:WorldToGridPosX(cur.x) y = GridNav:WorldToGridPosY(cur.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true cur = from + dir*j*30 end cur = to local pos = cur + norm * 64 local pos2 = cur - norm * 64 local blocked = not GridNav:IsTraversable(pos) or GridNav:IsBlocked(pos) if blocked then local x = GridNav:WorldToGridPosX(pos.x) local y = GridNav:WorldToGridPosY(pos.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true end blocked = not GridNav:IsTraversable(pos2) or GridNav:IsBlocked(pos2) if blocked then local x = GridNav:WorldToGridPosX(pos2.x) local y = GridNav:WorldToGridPosY(pos2.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true end blocked = not GridNav:IsTraversable(cur) or GridNav:IsBlocked(cur) if blocked then local x = GridNav:WorldToGridPosX(cur.x) local y = GridNav:WorldToGridPosY(cur.y) if pseudoGNV[x] == nil then pseudoGNV[x] = {} end pseudoGNV[x][y] = true end end --PrintTable(pseudoGNV) --print('---------------') local s = "" for i=boundY2,boundY1,-1 do for j=boundX1,boundX2 do local position = Vector(GridNav:GridPosToWorldCenterX(j), GridNav:GridPosToWorldCenterY(i), 0) local blocked = not GridNav:IsTraversable(position) or GridNav:IsBlocked(position) or (pseudoGNV[j] ~= nil and pseudoGNV[j][i]) if blocked then s = s .. "1" else s = s .. "0" end if j == boundX2 then AppendToLogFile("addons/dotadash/spider.txt", s) s = "" else s = s .. " " end end end end if string.find(text, "^anggrid") then Physics:GenerateAngleGrid() end local ap = abilPoints local fname = string.match(text, "^angsave%s+(.+)") if fname ~= nil then -- Process map local addString = function (stack, s) table.insert(stack, s) -- push 's' into the the stack for i=table.getn(stack)-1, 1, -1 do if string.len(stack[i]) > string.len(stack[i+1]) then break end stack[i] = stack[i] .. table.remove(stack) end end local s = {""} addString(s, "{") local anggrid = Physics.anggrid for x=1,#anggrid do addString(s, "{") for y=1,#anggrid[x] do addString(s, tostring(anggrid[x][y])) if y < #anggrid[x] then addString(s, ",") end end addString(s, "}") if x < #anggrid then addString(s, ",") end end addString(s, "}") s = table.concat(s) print('------------') print(fname) print(s) InitLogFile("addons/dotadash/" .. fname .. ".txt", s) end if string.find(text, "^units") then local m = string.match(text, "(%d+)") if m ~= nil then Physics.testUnitNum = Physics.testUnitNum + m print (Physics.testUnitNum) for i=1,m do local unit = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber()) unit:AddNewModifier(unit, nil, "modifier_phased", {}) unit:SetModel('models/heroes/lycan/lycan_wolf.vmdl') unit:SetOriginalModel('models/heroes/lycan/lycan_wolf.vdl') Physics:Unit(unit) unit:SetPhysicsFriction(0) unit:SetPhysicsVelocity(RandomVector(2000)) unit:SetNavCollisionType(PHYSICS_NAV_BOUNCE) end end end if string.find(text, "^hibtest") then local m = string.match(text, "(%d+)") if m ~= nil and m == "0" then Timers:CreateTimer('units2',{ useOldStyle = true, useGameTime = true, endTime = GameRules:GetGameTime(), callback = function(reflex, args) local pushNum = math.floor(#units / 10) + 1 for i=1,pushNum do local unit = units[RandomInt(1, #units)] unit:AddPhysicsVelocity(RandomVector(RandomInt(1000,2000))) end return GameRules:GetGameTime() + 1 end }) elseif m ~= nil then Physics.testUnitNum = Physics.testUnitNum + m print (Physics.testUnitNum) for i=1,m do local unit = CreateUnitByName('npc_dummy_blank', hero:GetAbsOrigin(), true, hero, hero, hero:GetTeamNumber()) unit:AddNewModifier(unit, nil, "modifier_phased", {}) unit:SetModel('models/heroes/lycan/lycan_wolf.vmdl') unit:SetOriginalModel('models/heroes/lycan/lycan_wolf.vmdl') Physics:Unit(unit) unit:SetNavCollisionType(PHYSICS_NAV_BOUNCE) Physics.testUnits[#Physics.testUnits + 1] = unit end end end local vel1,vel2,vel3 = string.match(text, "^vel%s+(-?%d+)%s+(-?%d+)%s+(-?%d+)") if vel1 ~= nil and vel2 ~= nil and vel3 ~= nil then hero:AddPhysicsVelocity(Vector(tonumber(vel1), tonumber(vel2), tonumber(vel3))) end local velmax1 = string.match(text, "^velmax%s+(%d+)") if velmax1 ~= nil then hero:SetPhysicsVelocityMax(tonumber(velmax1)) end local acc1,acc2,acc3 = string.match(text, "^acc%s+(-?%d+)%s+(-?%d+)%s+(-?%d+)") if acc1 ~= nil and acc2 ~= nil and acc3 ~= nil then hero:SetPhysicsAcceleration(Vector(tonumber(acc1), tonumber(acc2), tonumber(acc3))) end local fric1 = string.match(text, "^fric%s+(-?%d+)") if fric1 ~= nil then hero:SetPhysicsFriction(tonumber(fric1) / 100 ) end local slide1 = string.match(text, "^slidemult%s+(-?%d+)") if slide1 ~= nil then hero:SetSlideMultiplier(tonumber(slide1) / 100 ) end if string.find(text, "^prevent") then hero:PreventDI(not hero:IsPreventDI()) print(hero:IsPreventDI()) end if string.find(text, "^phys") and hero.IsSlide == nil then Physics:Unit(hero) end if string.find(text, "^onframe") then hero:OnPhysicsFrame(function(unit) --PrintTable(unit) --print('----------------') end) end if string.find(text, "^slide$") then hero:Slide(not hero:IsSlide()) print(hero:IsSlide()) end if string.find(text, "^nav$") then hero:FollowNavMesh(not hero:IsFollowNavMesh()) print(hero:IsFollowNavMesh()) end local clamp1 = string.match(text, "^clamp%s+(%d+)") if clamp1 ~= nil then hero:SetVelocityClamp( tonumber(clamp1)) end if string.find(text, "^hibernate") then hero:Hibernate(not hero:IsHibernate()) print(hero:IsHibernate()) end if string.find(text, "^navtype") then local navType = hero:GetNavCollisionType() navType = (navType + 1) % 4 local navStr = "NOTHING" if navType == PHYSICS_NAV_NOTHING then navStr = "NOTHING" elseif navType == PHYSICS_NAV_HALT then navStr = "HALT" elseif navType == PHYSICS_NAV_BOUNCE then navStr = "BOUNCE" elseif navType == PHYSICS_NAV_SLIDE then navStr = "SLIDE" end print('navtype: ' .. navStr) hero:SetNavCollisionType(navType) end if string.find(text, "^ground") then local ground = hero:GetGroundBehavior() ground = (ground + 1) % 3 local groundStr = "NOTHING" if ground == PHYSICS_GROUND_NOTHING then groundStr = "NOTHING" elseif ground == PHYSICS_GROUND_ABOVE then groundStr = "ABOVE" elseif ground == PHYSICS_GROUND_LOCK then groundStr = "LOCK" end print('ground: ' .. groundStr) hero:SetGroundBehavior(ground) end end function Physics:BlockInSphere(unit, unitToRepel, radius, findClearSpace) local pos = unit:GetAbsOrigin() local vPos = unitToRepel:GetAbsOrigin() local dir = vPos - pos local dist2 = VectorDistanceSq(pos, vPos) local move = radius local move2 = move * move if move2 < dist2 then return end if IsPhysicsUnit(unitToRepel) then unitToRepel.nSkipSlide = 1 end if findClearSpace then FindClearSpaceForUnit(unitToRepel, pos + (dir:Normalized() * move), true) else unitToRepel:SetAbsOrigin(pos + (dir:Normalized() * move)) end end function Physics:BlockInBox(unit, dist, normal, buffer, findClearSpace) local toside = (dist + buffer) * normal if IsPhysicsUnit(unit) then unit.nSkipSlide = 1 end if findClearSpace then FindClearSpaceForUnit(unit, unit:GetAbsOrigin() + toside, true) else unit:SetAbsOrigin(unit:GetAbsOrigin() + toside) end end function Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace) if IsPhysicsUnit(unit) then unit.nSkipSlide = 1 end local pos = unit:GetAbsOrigin() if xblock then pos.x = value else pos.y = value end if findClearSpace then FindClearSpaceForUnit(unit, pos, true) else unit:SetAbsOrigin(pos) end end function Physics:DistanceToLine(point, lineA, lineB) local a = (lineA - point):Length() local b = (lineB - point):Length() local c = (lineB - lineA):Length() local s = (a+b+c)/2 local num = (math.sqrt(s*(s-a)*(s-b)*(s-c)) * 2 / c) if num ~= num then return 0 end return num end function Physics:CreateBox(a, b, width, center) local az = Vector(a.x,a.y,0) local bz = Vector(b.x,b.y,0) local height = math.abs(b.z - a.z) if height < 1 then b.z = b.z + width/2 a.z = a.z - width/2 end local dir = (bz-az):Normalized() local rot = Vector(-1*dir.y,dir.x,0) local box = {} if center then box[1] = a + -1 * rot * width / 2 box[2] = b + -1 * rot * width / 2 box[3] = a + rot * width / 2 else box[1] = a box[2] = b box[3] = a + rot * width end return box end function Physics:PrecalculateBoxDraw(box) local ang = RotationDelta(VectorToAngles(box.upNormal), VectorToAngles(Vector(1,0,0))).y local ang2 = RotationDelta(VectorToAngles(box.rightNormal), VectorToAngles(Vector(1,0,0))).y if ang > 90 then ang = 180 - ang elseif ang < -90 then ang = -180 - ang end if ang2 > 90 then ang2 = 180 - ang2 elseif ang2 < -90 then ang2 = -180 - ang2 end local a = ang if math.abs(ang2) < math.abs(ang) then a = ang2 end local aRot = RotatePosition(box.a, QAngle(0, a, 0), box.a) local bRot = RotatePosition(box.a, QAngle(0, a, 0), box.b) local cRot = RotatePosition(box.a, QAngle(0, a, 0), box.c) local dRot = RotatePosition(box.a, QAngle(0, a, 0), box.d) local minX = math.min(math.min(math.min(aRot.x, bRot.x), cRot.x), dRot.x) local minY = math.min(math.min(math.min(aRot.y, bRot.y), cRot.y), dRot.y) local maxX = math.max(math.max(math.max(aRot.x, bRot.x), cRot.x), dRot.x) local maxY = math.max(math.max(math.max(aRot.y, bRot.y), cRot.y), dRot.y) box.drawAngle = -1 * a box.drawMins = Vector(minX, minY, box.zMin) box.drawMaxs = Vector(maxX, maxY, box.zMax) end function Physics:PrecalculateBox(box) box.zMin = math.min(math.min(box[1].z, box[2].z), box[3].z) box.zMax = math.max(math.max(box[1].z, box[2].z), box[3].z) box.center = box[2] + (box[3] - box[2]) / 2 box.center.z = (box.zMin + box.zMax) / 2 box.radius = math.max((box[3] - box.center):Length(), (box[2] - box.center):Length()) box.middle = Vector(box.center.x, box.center.y, box.center.z) box.middle.z = 0 box.a = box[1] box.a.z = 0 box.b = box[2] box.b.z = 0 box.d = box[3] box.d.z = 0 box.c = box.b + (box.d - box.a) box.upNormal = (box.d - box.a):Normalized() box.rightNormal = (box.b - box.a):Normalized() box[1] = nil box[2] = nil box[3] = nil box.ab = box.b - box.a box.ad = box.d - box.a box.ab2 = box.ab:Dot(box.ab) box.ad2 = box.ad:Dot(box.ad) box.recalculate = nil return box end function Physics:PrecalculateAABox(box) box.xMin = math.min(box[1].x, box[2].x) box.xMax = math.max(box[1].x, box[2].x) box.yMin = math.min(box[1].y, box[2].y) box.yMax = math.max(box[1].y, box[2].y) box.zMin = math.min(box[1].z, box[2].z) box.zMax = math.max(box[1].z, box[2].z) box.center = Vector((box.xMin + box.xMax) / 2, (box.yMin + box.yMax) / 2, (box.zMin + box.zMax) / 2) box.radius =(Vector(xMax, yMax, zMax) - box.center):Length() box.middle = Vector(box.center.x, box.center.y, 0) box.xScale = box.xMax - box.middle.x box.yScale = box.yMax - box.middle.y box[1] = nil box[2] = nil box.recalculate = nil return box end if not Physics.timers then Physics:start() end Physics:CreateColliderProfile("blocker", { type = COLLIDER_SPHERE, radius = 100, recollideTime = 0, skipFrames = 0, moveSelf = false, buffer = 0, findClearSpace = false, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() end, action = function(self, unit, v) if self.moveSelf then Physics:BlockInSphere(v, unit, self.radius + self.buffer, self.findClearSpace) else Physics:BlockInSphere(unit, v, self.radius + self.buffer, self.findClearSpace) end end }) Physics:CreateColliderProfile("delete", { type = COLLIDER_SPHERE, radius = 100, recollideTime = 0, skipFrames = 0, deleteSelf = true, removeCollider = true, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() end, action = function(self, unit, v) if self.deleteSelf then UTIL_Remove(unit) else UTIL_Remove(v) end if self.removeCollider then Physics:RemoveCollider(self) end end }) Physics:CreateColliderProfile("gravity", { type = COLLIDER_SPHERE, radius = 100, recollideTime = 0, skipFrames = 0, minRadius = 0, fullRadius = 0, linear = false, force = 1000, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided) end, action = function(self, unit, v) local pos = unit:GetAbsOrigin() local vPos = v:GetAbsOrigin() local dir = pos - vPos local len = dir:Length() if len > self.minRadius then local radDiff = self.radius - self.fullRadius local dist = math.max(0, len - self.fullRadius) local factor = (radDiff - dist) / radDiff local force = self.force if self.linear then force = force * factor / 30 else local factor2 = factor * factor force = force * factor2 / 30 end force = force * (self.skipFrames + 1) v:AddPhysicsVelocity(dir:Normalized() * force) end end }) Physics:CreateColliderProfile("repel", { type = COLLIDER_SPHERE, radius = 100, recollideTime = 0, skipFrames = 0, minRadius = 0, fullRadius = 0, linear = false, force = 1000, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided) end, action = function(self, unit, v) local pos = unit:GetAbsOrigin() local vPos = v:GetAbsOrigin() local dir = pos - vPos local len = dir:Length() if len > self.minRadius then local radDiff = self.radius - self.fullRadius local dist = math.max(0, len - self.fullRadius) local factor = (radDiff - dist) / radDiff local force = self.force if self.linear then force = force * factor / 30 else local factor2 = factor * factor force = force * factor2 / 30 end force = force * (self.skipFrames + 1) v:AddPhysicsVelocity(-1 * dir:Normalized() * force) end end }) Physics:CreateColliderProfile("reflect", { type = COLLIDER_SPHERE, radius = 100, recollideTime = 0, skipFrames = 0, multiplier = 1, block = true, blockRadius = 100, moveSelf = false, findClearSpace = false, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided) end, action = function(self, unit, v) local pos = unit:GetAbsOrigin() local vPos = v:GetAbsOrigin() local normal = vPos - pos normal = normal:Normalized() local newVelocity = v.vVelocity if newVelocity:Dot(normal) >= 0 then return end v:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30) if self.block then if self.moveSelf then Physics:BlockInSphere(v, unit, self.blockRadius, self.findClearSpace) else Physics:BlockInSphere(unit, v, self.blockRadius, self.findClearSpace) end end end }) Physics:CreateColliderProfile("momentum", { type = COLLIDER_SPHERE, radius = 100, recollideTime = .1, skipFrames = 0, block = true, blockRadius = 50, moveSelf = false, findClearSpace = false, elasticity = 1, test = function(self, collider, collided) return collided.IsRealHero and collided:IsRealHero() and collider:GetTeam() ~= collided:GetTeam() and IsPhysicsUnit(collided) end, action = function(self, unit, v) if self.hitTime == nil or GameRules:GetGameTime() >= self.hitTime then local pos = unit:GetAbsOrigin() local vPos = v:GetAbsOrigin() local dir = vPos - pos local mass = unit:GetMass() local vMass = v:GetMass() --dir.z = 0 dir = dir:Normalized() local neg = -1 * dir local dot = dir:Dot(unit:GetTotalVelocity()) local dot2 = dir:Dot(v:GetTotalVelocity()) local v1 = (self.elasticity * vMass * (dot2 - dot) + (mass * dot) + (vMass * dot2)) / (mass + vMass) local v2 = (self.elasticity * mass * (dot - dot2) + (mass * dot) + (vMass * dot2)) / (mass + vMass) --if dot < 1 and dot2 < 1 then --return --end unit:AddPhysicsVelocity((v1 - dot) * dir) v:AddPhysicsVelocity((v2 - dot2) * dir) if self.block then if self.moveSelf then Physics:BlockInSphere(v, unit, self.blockRadius, self.findClearSpace) else Physics:BlockInSphere(unit, v, self.blockRadius, self.findClearSpace) end end self.hitTime = GameRules:GetGameTime() + self.recollideTime end end }) Physics:CreateColliderProfile("boxblocker", { type = COLLIDER_BOX, box = {Vector(0,0,0), Vector(200,100,500), Vector(0,100,0)}, slide = true, recollideTime = 0, skipFrames = 0, buffer = 0, findClearSpace = false, test = function(self, unit) return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit) end, action = function(self, box, unit) --PrintTable(box) local pos = unit:GetAbsOrigin() pos.z = 0 --face collide determination local diff = (pos - box.middle):Normalized() local up = diff:Dot(box.upNormal) local right = diff:Dot(box.rightNormal) local normal = box.upNormal local toside = 0 local leg1 = box.c local leg2 = box.d if up >= 0 then if right >= 0 then -- check top,right local u = Physics:DistanceToLine(pos, box.c, box.d) local r = Physics:DistanceToLine(pos, box.c, box.b) if u < r then normal = box.upNormal leg1 = box.c leg2 = box.d toside = u else normal = box.rightNormal leg1 = box.c leg2 = box.b toside = r end else -- check top,left local u = Physics:DistanceToLine(pos, box.c, box.d) local l = Physics:DistanceToLine(pos, box.a, box.d) if u < l then normal = box.upNormal leg1 = box.c leg2 = box.d toside = u else normal = -1 * box.rightNormal leg1 = box.a leg2 = box.d toside = l end end else if right >= 0 then -- check bot,right local b = Physics:DistanceToLine(pos, box.a, box.b) local r = Physics:DistanceToLine(pos, box.c, box.b) if b < r then normal = -1 * box.upNormal leg1 = box.a leg2 = box.b toside = b else normal = box.rightNormal leg1 = box.c leg2 = box.b toside = r end else -- check bot,left local b = Physics:DistanceToLine(pos, box.a, box.b) local l = Physics:DistanceToLine(pos, box.a, box.d) if b < l then normal = -1 * box.upNormal leg1 = box.c leg2 = box.d toside = b else normal = -1 * box.rightNormal leg1 = box.a leg2 = box.d toside = l end end end normal = normal:Normalized() Physics:BlockInBox(unit, toside, normal, self.buffer, self.findClearSpace) if self.slide and IsPhysicsUnit(unit) then unit:AddPhysicsVelocity(math.max(0,unit:GetPhysicsVelocity():Dot(normal * -1)) * normal) end end }) Physics:CreateColliderProfile("boxreflect", { type = COLLIDER_BOX, box = {Vector(0,0,0), Vector(200,100,500), Vector(0,100,0)}, recollideTime = 0, skipFrames = 0, buffer = 0, block = true, findClearSpace = false, multiplier = 1, test = function(self, unit) return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit) end, action = function(self, box, unit) local pos = unit:GetAbsOrigin() pos.z = 0 --face collide determination local diff = (pos - box.middle):Normalized() local up = diff:Dot(box.upNormal) local right = diff:Dot(box.rightNormal) local normal = box.upNormal local toside = 0 local leg1 = box.c local leg2 = box.d if up >= 0 then if right >= 0 then -- check top,right local u = Physics:DistanceToLine(pos, box.c, box.d) local r = Physics:DistanceToLine(pos, box.c, box.b) if u < r then normal = box.upNormal leg1 = box.c leg2 = box.d toside = u else normal = box.rightNormal leg1 = box.c leg2 = box.b toside = r end else -- check top,left local u = Physics:DistanceToLine(pos, box.c, box.d) local l = Physics:DistanceToLine(pos, box.a, box.d) if u < l then normal = box.upNormal leg1 = box.c leg2 = box.d toside = u else normal = -1 * box.rightNormal leg1 = box.a leg2 = box.d toside = l end end else if right >= 0 then -- check bot,right local b = Physics:DistanceToLine(pos, box.a, box.b) local r = Physics:DistanceToLine(pos, box.c, box.b) if b < r then normal = -1 * box.upNormal leg1 = box.a leg2 = box.b toside = b else normal = box.rightNormal leg1 = box.c leg2 = box.b toside = r end else -- check bot,left local b = Physics:DistanceToLine(pos, box.a, box.b) local l = Physics:DistanceToLine(pos, box.a, box.d) if b < l then normal = -1 * box.upNormal leg1 = box.c leg2 = box.d toside = b else normal = -1 * box.rightNormal leg1 = box.a leg2 = box.d toside = l end end end normal = normal:Normalized() if self.block then Physics:BlockInBox(unit, toside, normal, self.buffer, self.findClearSpace) end local newVelocity = unit.vVelocity if newVelocity:Dot(normal) >= 0 then return end unit:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30) end }) Physics:CreateColliderProfile("aaboxblocker", { type = COLLIDER_AABOX, box = {Vector(0,0,0), Vector(200,100,500)}, slide = true, recollideTime = 0, skipFrames = 0, buffer = 0, findClearSpace = false, test = function(self, unit) return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit) end, action = function(self, box, unit) --PrintTable(box) local pos = unit:GetAbsOrigin() pos.z = 0 local x = pos.x local y = pos.y local middle = box.middle local xblock = true local value = 0 local normal = Vector(1,0,0) if x > middle.x then if y > middle.y then -- up,right local relx = (pos.x - middle.x) / box.xScale local rely = (pos.y - middle.y) / box.yScale if relx > rely then --right normal = Vector(1,0,0) value = box.xMax xblock = true else --up normal = Vector(0,1,0) value = box.yMax xblock = false end elseif y <= middle.y then -- down,right local relx = (pos.x - middle.x) / box.xScale local rely = (middle.y - pos.y) / box.yScale if relx > rely then --right normal = Vector(1,0,0) value = box.xMax xblock = true else --down normal = Vector(0,-1,0) value = box.yMin xblock = false end end elseif x <= middle.x then if y > middle.y then -- up,left local relx = (middle.x - pos.x) / box.xScale local rely = (pos.y - middle.y) / box.yScale if relx > rely then --left normal = Vector(-1,0,0) value = box.xMin xblock = true else --up normal = Vector(0,1,0) value = box.yMax xblock = false end elseif y <= middle.y then -- down,left local relx = (middle.x - pos.x) / box.xScale local rely = (middle.y - pos.y) / box.yScale if relx > rely then --left normal = Vector(-1,0,0) value = box.xMin xblock = true else --down normal = Vector(0,-1,0) value = box.yMin xblock = false end end end Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace) if self.slide and IsPhysicsUnit(unit) then unit:AddPhysicsVelocity(math.max(0,unit:GetPhysicsVelocity():Dot(normal * -1)) * normal) end end }) Physics:CreateColliderProfile("aaboxreflect", { type = COLLIDER_AABOX, box = {Vector(0,0,0), Vector(200,100,500)}, recollideTime = 0, skipFrames = 0, buffer = 0, block = true, findClearSpace = false, multiplier = 1, test = function(self, unit) return unit.IsRealHero and unit:IsRealHero() and unit:GetTeam() ~= unit:GetTeam() and IsPhysicsUnit(unit) end, action = function(self, box, unit) --PrintTable(box) local pos = unit:GetAbsOrigin() pos.z = 0 local x = pos.x local y = pos.y local middle = box.middle local xblock = true local value = 0 local normal = Vector(1,0,0) if x > middle.x then if y > middle.y then -- up,right local relx = (pos.x - middle.x) / box.xScale local rely = (pos.y - middle.y) / box.yScale if relx > rely then --right normal = Vector(1,0,0) value = box.xMax xblock = true else --up normal = Vector(0,1,0) value = box.yMax xblock = false end elseif y <= middle.y then -- down,right local relx = (pos.x - middle.x) / box.xScale local rely = (middle.y - pos.y) / box.yScale if relx > rely then --right normal = Vector(1,0,0) value = box.xMax xblock = true else --down normal = Vector(0,-1,0) value = box.yMin xblock = false end end elseif x <= middle.x then if y > middle.y then -- up,left local relx = (middle.x - pos.x) / box.xScale local rely = (pos.y - middle.y) / box.yScale if relx > rely then --left normal = Vector(-1,0,0) value = box.xMin xblock = true else --up normal = Vector(0,1,0) value = box.yMax xblock = false end elseif y <= middle.y then -- down,left local relx = (middle.x - pos.x) / box.xScale local rely = (middle.y - pos.y) / box.yScale if relx > rely then --left normal = Vector(-1,0,0) value = box.xMin xblock = true else --down normal = Vector(0,-1,0) value = box.yMin xblock = false end end end if self.block then Physics:BlockInAABox(unit, xblock, value, buffer, findClearSpace) end local newVelocity = unit.vVelocity if newVelocity:Dot(normal) >= 0 then return end unit:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30) end }) ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/playertables.lua ================================================ PLAYERTABLES_VERSION = "0.90" --[[ PlayerTables: Player-specific shared state/nettable Library by BMD PlayerTables sets up a table that is shared between server (lua) and client (javascript) between specific (but changeable) clients. It is very similar in concept to nettables, but is built on being player-specific state (not sent to all players). Like nettables, PlayerTable state adjustments are mirrored to clients (that are currently subscribed). If players disconnect and then reconnect, PlayerTables automatically transmits their subscribed table states to them when they connect. PlayerTables only support sending numbers, strings, and tables of numbers/strings/tables to clients. Installation -"require" this file inside your code in order to gain access to the PlayerTables global table. -Ensure that you have the playertables/playertables_base.js in your panorama content scripts folder. -Ensure that playertables/playertables_base.js script is included in your custom_ui_manifest.xml with Library Usage -Lua -void PlayerTables:CreateTable(tableName, tableContents, pids) Creates a new PlayerTable with the given name, default table contents, and automatically sets up a subscription for all playerIDs in the "pids" object. -void PlayerTables:DeleteTable(tableName) Deletes a table by the given name, alerting any subscribed clients. -bool PlayerTables:TableExists(tableName) Returns whether a table currently exists with the given name -void PlayerTables:SetPlayerSubscriptions(tableName, pids) Clear and reset all player subscriptions based on the "pids" object. -void PlayerTables:AddPlayerSubscription(tableName, pid) Adds a subscription for the given player ID. -void PlayerTables:RemovePlayerSubscription(tableName, pid) Removes a subscription for the given player ID. -<> PlayerTables:GetTableValue(tableName, key) Returns the current value for this PlayerTable for the given "key", or nil if the key doesn't exist. -<> PlayerTables:GetAllTableValues(tableName) Returns the current keys and values for the given table. -void PlayerTables:DeleteTableValue(tableName, key) Delete a key from a playertable. -void PlayerTables:DeleteTableValues(tableName, keys) Delete the keys from a playertable given in the keys object. -void PlayerTables:SetTableValue(tableName, key, value) Set a value for the given key. -void PlayerTables:SetTableValues(tableName, changes) Set a all of the given key-value pairs in the changes object. -Javascript: include the javascript API with "var PlayerTables = GameUI.CustomUIConfig().PlayerTables" at the top of your file. -void PlayerTables.GetAllTableValues(tableName) Returns the current keys and values of all keys within the table "tableName". Returns null if no table exists with that name. -void PlayerTables.GetTableValue(tableName, keyName) Returns the current value for the key given by "keyName" if it exists on the table given by "tableName". Returns null if no table exists, or undefined if the key does not exist. -int PlayerTables.SubscribeNetTableListener(tableName, callback) Sets up a callback for when this playertable is changed. The callback is of the form: function(tableName, changesObject, deletionsObject). changesObject contains the key-value pairs that were changed deletionsObject contains the keys that were deleted. If changesObject and deletionsObject are both null, then the entire table was deleted. Returns an integer value representing this subscription. -void PlayerTables.UnsubscribeNetTableListener(callbackID) Remvoes the existing subscription as given by the callbackID (the integer returned from SubscribeNetTableListener) Examples: --Create a Table and set a few values. PlayerTables:CreateTable("new_table", {initial="initial value"}, {0}) PlayerTables:SetTableValue("new_table", "count", 0) PlayerTables:SetTableValues("new_table", {val1=1, val2=2}) --Change player subscriptions PlayerTables:RemovePlayerSubscription("new_table", 0) PlayerTables:SetPlayerSubscriptions("new_table", {[1]=true,[3]=true}) -- the pids object can be a map or array type table --Retrieve values on the client var PlayerTables = GameUI.CustomUIConfig().PlayerTables; $.Msg(PlayerTables.GetTableVaue("new_table", "count")); --Subscribe to changes on the client var PlayerTables = GameUI.CustomUIConfig().PlayerTables; PlayerTables.SubscribeNetTableListener("new_table", function(tableName, changes, deletions){ $.Msg(tableName + " changed: " + changes + " -- " + deletions); }); ]] if not PlayerTables then PlayerTables = class({}) end function PlayerTables:start() self.tables = {} self.subscriptions = {} CustomGameEventManager:RegisterListener("PlayerTables_Connected", Dynamic_Wrap(PlayerTables, "PlayerTables_Connected")) end function PlayerTables:equals(o1, o2, ignore_mt) if o1 == o2 then return true end local o1Type = type(o1) local o2Type = type(o2) if o1Type ~= o2Type then return false end if o1Type ~= 'table' then return false end if not ignore_mt then local mt1 = getmetatable(o1) if mt1 and mt1.__eq then --compare using built in method return o1 == o2 end end local keySet = {} for key1, value1 in pairs(o1) do local value2 = o2[key1] if value2 == nil or self:equals(value1, value2, ignore_mt) == false then return false end keySet[key1] = true end for key2, _ in pairs(o2) do if not keySet[key2] then return false end end return true end function PlayerTables:copy(obj, seen) if type(obj) ~= 'table' then return obj end if seen and seen[obj] then return seen[obj] end local s = seen or {} local res = setmetatable({}, getmetatable(obj)) s[obj] = res for k, v in pairs(obj) do res[self:copy(k, s)] = self:copy(v, s) end return res end function PlayerTables:PlayerTables_Connected(args) --print('PlayerTables_Connected') --PrintTable(args) local pid = args.pid if not pid then return end local player = PlayerResource:GetPlayer(pid) --print('player: ', player) for k,v in pairs(PlayerTables.subscriptions) do if v[pid] then if player then CustomGameEventManager:Send_ServerToPlayer(player, "pt_fu", {name=k, table=PlayerTables.tables[k]} ) end end end end function PlayerTables:CreateTable(tableName, tableContents, pids) tableContents = tableContents or {} pids = pids or {} if pids == true then pids = {} for i=0,DOTA_MAX_TEAM_PLAYERS-1 do pids[#pids+1] = i end end if self.tables[tableName] then print("[playertables.lua] Warning: player table '" .. tableName .. "' already exists. Overriding.") end self.tables[tableName] = tableContents self.subscriptions[tableName] = {} for k,v in pairs(pids) do local pid = k if type(v) == "number" then pid = v end if pid >= 0 and pid < DOTA_MAX_TEAM_PLAYERS then self.subscriptions[tableName][pid] = true local player = PlayerResource:GetPlayer(pid) if player then CustomGameEventManager:Send_ServerToPlayer(player, "pt_fu", {name=tableName, table=tableContents} ) end else print("[playertables.lua] Warning: Pid value '" .. pid .. "' is not an integer between [0," .. DOTA_MAX_TEAM_PLAYERS .. "]. Ignoring.") end end end function PlayerTables:DeleteTable(tableName) if not self.tables[tableName] then print("[playertables.lua] Warning: Table '" .. tableName .. "' does not exist.") return end local table = self.tables[tableName] local pids = self.subscriptions[tableName] for k,v in pairs(pids) do local player = PlayerResource:GetPlayer(k) if player then CustomGameEventManager:Send_ServerToPlayer(player, "pt_fu", {name=tableName, table=nil} ) end end self.tables[tableName] = nil self.subscriptions[tableName] = nil end function PlayerTables:TableExists(tableName) return self.tables[tableName] ~= nil end function PlayerTables:SetPlayerSubscriptions(tableName, pids) if not self.tables[tableName] then print("[playertables.lua] Warning: Table '" .. tableName .. "' does not exist.") return end local table = self.tables[tableName] local oldPids = self.subscriptions[tableName] self.subscriptions[tableName] = {} for k,v in pairs(pids) do local pid = k if type(v) == "number" then pid = v end if pid >= 0 and pid < DOTA_MAX_TEAM_PLAYERS then self.subscriptions[tableName][pid] = true local player = PlayerResource:GetPlayer(pid) if player and oldPids[pid] == nil then CustomGameEventManager:Send_ServerToPlayer(player, "pt_fu", {name=tableName, table=table} ) end else print("[playertables.lua] Warning: Pid value '" .. pid .. "' is not an integer between [0," .. DOTA_MAX_TEAM_PLAYERS .. "]. Ignoring.") end end end function PlayerTables:AddPlayerSubscription(tableName, pid) if not self.tables[tableName] then print("[playertables.lua] Warning: Table '" .. tableName .. "' does not exist.") return end local table = self.tables[tableName] local oldPids = self.subscriptions[tableName] if not oldPids[pid] then if pid >= 0 and pid < DOTA_MAX_TEAM_PLAYERS then self.subscriptions[tableName][pid] = true local player = PlayerResource:GetPlayer(pid) if player then CustomGameEventManager:Send_ServerToPlayer(player, "pt_fu", {name=tableName, table=table} ) end else print("[playertables.lua] Warning: Pid value '" .. v .. "' is not an integer between [0," .. DOTA_MAX_TEAM_PLAYERS .. "]. Ignoring.") end end end function PlayerTables:RemovePlayerSubscription(tableName, pid) if not self.tables[tableName] then print("[playertables.lua] Warning: Table '" .. tableName .. "' does not exist.") return end local table = self.tables[tableName] local oldPids = self.subscriptions[tableName] oldPids[pid] = nil end function PlayerTables:GetTableValue(tableName, key) if not self.tables[tableName] then print("[playertables.lua] Warning: Table '" .. tableName .. "' does not exist.") return end local ret = self.tables[tableName][key] if type(ret) == "table" then return self:copy(ret) end return ret end function PlayerTables:GetAllTableValues(tableName) if not self.tables[tableName] then print("[playertables.lua] Warning: Table '" .. tableName .. "' does not exist.") return end local ret = self.tables[tableName] if type(ret) == "table" then return self:copy(ret) end return ret end function PlayerTables:DeleteTableKey(tableName, key) if not self.tables[tableName] then print("[playertables.lua] Warning: Table '" .. tableName .. "' does not exist.") return end local table = self.tables[tableName] local pids = self.subscriptions[tableName] if table[key] ~= nil then table[key] = nil for pid,v in pairs(pids) do local player = PlayerResource:GetPlayer(pid) if player then CustomGameEventManager:Send_ServerToPlayer(player, "pt_kd", {name=tableName, keys={[key]=true}} ) end end end end function PlayerTables:DeleteTableKeys(tableName, keys) if not self.tables[tableName] then print("[playertables.lua] Warning: Table '" .. tableName .. "' does not exist.") return end local table = self.tables[tableName] local pids = self.subscriptions[tableName] local deletions = {} local notempty = false for k,v in pairs(keys) do if type(k) == "string" then if table[k] ~= nil then deletions[k] = true table[k] = nil notempty = true end elseif type(v) == "string" then if table[v] ~= nil then deletions[v] = true table[v] = nil notempty = true end end end if notempty then for pid,v in pairs(pids) do local player = PlayerResource:GetPlayer(pid) if player then CustomGameEventManager:Send_ServerToPlayer(player, "pt_kd", {name=tableName, keys=deletions} ) end end end end function PlayerTables:SetTableValue(tableName, key, value) if value == nil then self:DeleteTableKey(tableName, key) return end if not self.tables[tableName] then print("[playertables.lua] Warning: Table '" .. tableName .. "' does not exist.") return end local table = self.tables[tableName] local pids = self.subscriptions[tableName] if not self:equals(table[key], value) then table[key] = value for pid,v in pairs(pids) do local player = PlayerResource:GetPlayer(pid) if player then CustomGameEventManager:Send_ServerToPlayer(player, "pt_uk", {name=tableName, changes={[key]=value}} ) end end end end function PlayerTables:SetTableValues(tableName, changes) if not self.tables[tableName] then print("[playertables.lua] Warning: Table '" .. tableName .. "' does not exist.") return end local table = self.tables[tableName] local pids = self.subscriptions[tableName] for k,v in pairs(changes) do if self:equals(table[k], v) then changes[k] = nil else table[k] = v end end local notempty, _ = next(changes, nil) if notempty then for pid,v in pairs(pids) do local player = PlayerResource:GetPlayer(pid) if player then CustomGameEventManager:Send_ServerToPlayer(player, "pt_uk", {name=tableName, changes=changes} ) end end end end if not PlayerTables.tables then PlayerTables:start() end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/projectiles.lua ================================================ PROJECTILES_VERSION = "1.00" PROJECTILES_THINK = 0.01 PROJECTILES_NOTHING = 0 PROJECTILES_DESTROY = 1 PROJECTILES_BOUNCE = 2 PROJECTILES_FOLLOW = 3 if Projectiles == nil then print ( '[PROJECTILES] creating Projectiles' ) Projectiles = {} Projectiles.__index = Projectiles end function Projectiles:start() Projectiles = self if self.thinkEnt == nil then self.timers = {} -- = Entities:CreateByClassname("info_target") self.thinkEnt = SpawnEntityFromTableSynchronous("info_target", {targetname="projectiles_lua_thinker"}) --self.treeCutter = CreateUnitByName('npc_dummy_unit', Vector(0,0,0) , true, nil, nil, DOTA_TEAM_NOTEAM) --self.treeCutter:FindAbilityByName("reflex_dummy_unit"):SetLevel(1) --self.treeCutter:AddAbility("tree_cutter") --self.treeCutter:FindAbilityByName("tree_cutter"):SetLevel(1) self.thinkEnt:SetThink("Think", self, "projectiles", PROJECTILES_THINK) end end function Projectiles:Think() if GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then return end -- Track game time, since the dt passed in to think is actually wall-clock time not simulation time. local now = GameRules:GetGameTime() if Projectiles.t0 == nil then Projectiles.t0 = now end local dt = now - Projectiles.t0 Projectiles.t0 = now if dt > 0 then -- Process timers for k,v in pairs(Projectiles.timers) do local bUseGameTime = true -- Check if the timer has finished -- Run the callback local status, nextCall = pcall(v.callback, Projectiles, v) -- Make sure it worked if status then -- Check if it needs to loop if nextCall then -- Change it's end time v.endTime = nextCall else Projectiles.timers[k] = nil end else Projectiles.timers[k] = nil print('[PROJECTILES] Timer error:' .. nextCall) end end end return PROJECTILES_THINK end function Projectiles:CreateTimer(name, args) if not args.endTime or not args.callback then print("Invalid timer created: "..name) return end Projectiles.timers[name] = args end function Projectiles:RemoveTimer(name) Projectiles.timers[name] = nil end function Projectiles:CalcSlope(pos, unit, dir) dir = Vector(dir.x, dir.y, 0):Normalized() local f = GetGroundPosition(pos + dir, unit) local b = GetGroundPosition(pos - dir, unit) return (f - b):Normalized() end function Projectiles:CalcNormal(pos, unit, scale) scale = scale or 1 local nscale = -1 * scale local zl = GetGroundPosition(pos + Vector(nscale,0,0), unit).z local zr = GetGroundPosition(pos + Vector(scale,0,0), unit).z local zu = GetGroundPosition(pos + Vector(0,scale,0), unit).z local zd = GetGroundPosition(pos + Vector(0,nscale,0), unit).z return Vector(zl - zr, zd - zu, 2*scale):Normalized() end function Projectiles:CreateProjectile(projectile) -- set defaults projectile.vVelocity = projectile.vVelocity or Vector(0,0,0) projectile.fDistance = projectile.fDistance or 1000 projectile.fStartRadius = projectile.fStartRadius or 100 projectile.fEndRadius = projectile.fEndRadius or 100 projectile.iPositionCP = projectile.iPositionCP or 0 projectile.iVelocityCP = projectile.iVelocityCP or 1 projectile.fExpireTime = projectile.fExpireTime or 10 projectile.ControlPoints = projectile.ControlPoints or {} projectile.UnitBehavior = projectile.UnitBehavior or PROJECTILES_DESTROY if projectile.bIgnoreSource == nil then projectile.bIgnoreSource = true end if projectile.bMultipleHits == nil then projectile.bMultipleHits = false end if projectile.bRecreateOnChange == nil then projectile.bRecreateOnChange = true end if projectile.bZCheck == nil then projectile.bZCheck = true end projectile.fRehitDelay = projectile.fRehitDelay or 1 projectile.TreeBehavior = projectile.TreeBehavior or PROJECTILES_DESTROY if projectile.bCutTrees == nil then projectile.bCutTrees = false end if projectile.bDestroyImmediate == nil then projectile.bDestroyImmediate = true end projectile.WallBehavior = projectile.WallBehavior or PROJECTILES_DESTROY projectile.GroundBehavior = projectile.GroundBehavior or PROJECTILES_DESTROY projectile.bGroundLock = projectile.bGroundLock or false projectile.fGroundOffset = projectile.fGroundOffset or 40 projectile.nChangeMax = projectile.nChangeMax or 1 projectile.fChangeDelay = projectile.fChangeDelay or .1 projectile.UnitTest = projectile.UnitTest or function() return false end projectile.OnUnitHit = projectile.OnUnitHit or function() return end projectile.OnTreeHit = projectile.OnTreeHit or function() return end projectile.OnWallHit = projectile.OnWallHit or function() return end projectile.OnGroundHit = projectile.OnGroundHit or function() return end projectile.OnFinish = projectile.OnFinish or nil projectile.ControlPointForwards = projectile.ControlPointForwards or {} projectile.ControlPointOrientations = projectile.ControlPointOrientations or {} projectile.ControlPointEntityAttaches = projectile.ControlPointEntityAttaches or {} if projectile.bTreeFullCollision == nil then projectile.bTreeFullCollision = false end projectile.bProvidesVision = projectile.bProvidesVision or false if projectile.bFlyingVision == nil then projectile.bFlyingVision = true end projectile.iVisionRadius = projectile.iVisionRadius or 200 projectile.iVisionTeamNumber = projectile.iVisionTeamNumber or projectile.Source:GetTeam() projectile.fVisionTickTime = projectile.fVisionTickTime or .1 if projectile.fVisionTickTime <= 0 then projectile.fVisionTickTime = .1 end projectile.fVisionLingerDuration = projectile.fVisionLingerDuration or projectile.fVisionTickTime if projectile.fVisionLingerDuration < projectile.fVisionTickTime then projectile.fVisionLingerDuration = projectile.fVisionTickTime end --[[if projectile.TreeBehavior == PROJECTILES_BOUNCE or projectile.WallBehavior == PROJECTILES_BOUNCE or projectile.GroundBehavior == PROJECTILES_BOUNCE or projectile.GroundBehavior == PROJECTILES_FOLLOW then projectile.bDynamic = true elseif projectile.bDynamic == nil then projectile.bDynamic = false end]] if projectile.vSpawnOrigin and projectile.vSpawnOrigin.unit then local attach = projectile.vSpawnOrigin.unit:ScriptLookupAttachment(projectile.vSpawnOrigin.attach) local attachPos = projectile.vSpawnOrigin.unit:GetAttachmentOrigin(attach) projectile.vSpawnOrigin = attachPos + (projectile.vSpawnOrigin.offset or Vector(0,0,0)) else projectile.vSpawnOrigin = projectile.vSpawnOrigin or Vector(0,0,0) end projectile.rehit = {} projectile.pos = projectile.vSpawnOrigin projectile.vel = projectile.vVelocity / 30 projectile.prevVel = projectile.vel projectile.prevPos = projectile.vSpawnOrigin projectile.radius = projectile.fStartRadius projectile.changes = projectile.nChangeMax projectile.spawnTime = GameRules:GetGameTime() projectile.changeTime = projectile.spawnTime projectile.distanceTraveled = 0 projectile.visionTick = math.ceil(projectile.fVisionTickTime * 30) projectile.currentFrame = projectile.visionTick if projectile.fRadiusStep then projectile.radiusStep = projectile.fRadiusStep / 30 else projectile.radiusStep = (projectile.fEndRadius - projectile.fStartRadius) / (projectile.fDistance / projectile.vel:Length()) end projectile.id = ParticleManager:CreateParticle(projectile.EffectName, PATTACH_CUSTOMORIGIN, nil) ParticleManager:SetParticleAlwaysSimulate(projectile.id) for k,v in pairs(projectile.ControlPoints) do ParticleManager:SetParticleControl(projectile.id, k, v) end for k,v in pairs(projectile.ControlPointForwards) do ParticleManager:SetParticleControlForward(projectile.id, k, v) end for k,v in pairs(projectile.ControlPointOrientations) do ParticleManager:SetParticleControlOrientation(projectile.id, k, v[1], v[2], v[3]) end for k,v in pairs(projectile.ControlPointEntityAttaches) do local unit = v.unit or projectile.Source local pattach = v.pattach or PATTACH_CUSTOMORIGIN local attachPoint = v.attachPoint local origin = v.origin or projectile.vSpawnOrigin ParticleManager:SetParticleControlEnt(projectile.id, k, unit, pattach, attachPoint, origin, true) end ParticleManager:SetParticleControl(projectile.id, projectile.iPositionCP, projectile.vSpawnOrigin) if projectile.ControlPointForwards[1] == nil and projectile.ControlPointOrientations[1] == nil then ParticleManager:SetParticleControlForward(projectile.id, projectile.iPositionCP, projectile.vel:Normalized()) end --ParticleManager:SetParticleControlEnt(projectile.id, projectile.iPositionCP, projectile.Source, PATTACH_CUSTOMORIGIN, nil, projectile.vSpawnOrigin, true) --ParticleManager:SetParticleControlForward(projectile.id, projectile.iPositionCP, projectile.Source:GetForwardVector()) if projectile.GroundBehavior == PROJECTILES_FOLLOW then local future = projectile.pos + projectile.vel local ground = GetGroundPosition(projectile.pos, projectile.Source) + Vector(0,0,projectile.fGroundOffset) if ground.z > future.z then local slope = Projectiles:CalcSlope(ground, projectile.Source, projectile.vel) ParticleManager:SetParticleControl(projectile.id, projectile.iVelocityCP, projectile.vel:Length() * slope * 30) else ParticleManager:SetParticleControl(projectile.id, projectile.iVelocityCP, projectile.vel * 30) end --[[elseif projectile.GroundBehavior == PROJECTILES_BOUNCE then local future = projectile.pos + projectile.vel local ground = GetGroundPosition(projectile.pos, projectile.Source) + Vector(0,0,projectile.fGroundOffset) if ground.z > future.z then local normal = Projectiles:CalcNormal(ground, projectile.Source) ParticleManager:SetParticleControl(projectile.id, projectile.iVelocityCP, ((-2 * projectile.vel:Dot(normal) * normal) + projectile.vel) * 30) end]] else ParticleManager:SetParticleControl(projectile.id, projectile.iVelocityCP, projectile.vel * 30) end --[[if not projectile.bDynamic then projectile.changes = 0 --ParticleManager:ReleaseParticleIndex(projectile.id) end]] function projectile:GetCreationTime() return projectile.spawnTime end function projectile:GetDistanceTraveled() return projectile.distanceTraveled end function projectile:GetPosition() return projectile.pos end function projectile:GetVelocity() return projectile.vel * 30 end function projectile:SetVelocity(newVel, newPos) if projectile.changes > 0 then projectile.changes = projectile.changes - 1 projectile.vel = newVel / 30 projectile.changeTime = GameRules:GetGameTime() + projectile.fChangeDelay --print ('setting CP' .. projectile.iVelocityCP .. 'to ' .. tostring(newVel)) if projectile.bRecreateOnChange then ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate) projectile.id = ParticleManager:CreateParticle(projectile.EffectName, PATTACH_CUSTOMORIGIN, nil) ParticleManager:SetParticleAlwaysSimulate(projectile.id) for k,v in pairs(projectile.ControlPoints) do ParticleManager:SetParticleControl(projectile.id, k, v) end for k,v in pairs(projectile.ControlPointForwards) do ParticleManager:SetParticleControlForward(projectile.id, k, v) end for k,v in pairs(projectile.ControlPointOrientations) do ParticleManager:SetParticleControlOrientation(projectile.id, k, v[1], v[2], v[3]) end for k,v in pairs(projectile.ControlPointEntityAttaches) do local unit = v.unit or projectile.Source local pattach = v.pattach or PATTACH_CUSTOMORIGIN local attachPoint = v.attachPoint local origin = v.origin or newPos or projectile.pos + projectile.vel ParticleManager:SetParticleControlEnt(projectile.id, k, unit, pattach, attachPoint, origin, true) end ParticleManager:SetParticleControl(projectile.id, projectile.iPositionCP, newPos or projectile.pos + projectile.vel) if projectile.ControlPointForwards[1] == nil and projectile.ControlPointOrientations[1] == nil then ParticleManager:SetParticleControlForward(projectile.id, projectile.iPositionCP, projectile.vel:Normalized()) end end ParticleManager:SetParticleControl(projectile.id, projectile.iVelocityCP, newVel) end end function projectile:Destroy() ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate) Projectiles:RemoveTimer(projectile.ProjectileTimerName) end projectile.ProjectileTimerName = DoUniqueString('proj') Projectiles:CreateTimer(projectile.ProjectileTimerName, { endTime = GameRules:GetGameTime(), useGameTime = true, callback = function() local curTime = GameRules:GetGameTime() local vel = projectile.vel local pos = projectile.pos if projectile.bGroundLock then pos.z = GetGroundPosition(pos, projectile.Source).z + projectile.fGroundOffset end -- checks if curTime > projectile.spawnTime + projectile.fExpireTime or projectile.distanceTraveled > projectile.fDistance then ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate) if projectile.OnFinish then local status, out = pcall(projectile.OnFinish, projectile, pos) if not status then print('[PROJECTILES] Collision UnitTest Failure!: ' .. out) end end return end -- update values local radius = projectile.radius local rad2 = radius * radius -- debug draw if projectile.draw then local alpha = 1 local color = Vector(200,0,0) if type(projectile.draw) == "table" then alpha = projectile.draw.alpha or alpha color = projectile.draw.color or color end DebugDrawSphere(pos, color, alpha, radius, true, .01) end -- frame and sub-frame collision checks local subpos = pos local velLength = vel:Length() local tot = math.max(1, math.ceil(velLength / 32)) -- lookahead number local div = 1 / tot -- unit detection prep local framehalf = pos + (vel * div * (tot-1))/2 local framerad = (framehalf - pos):Length() + radius --print(tostring(framehalf) .. ' -- ' .. tostring(pos) .. ' -- ' .. (framehalf-pos):Length() .. ' -- ' .. radius) --DebugDrawSphere(framehalf, Vector(0,0,200), 0, framerad, true, .01) --local ents = Entities:FindAllInSphere(framehalf, framerad) --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) local ents = nil if projectile.filter then if type(projectile.filter) == "table" then ents = projectile.filter else local status = nil status, ents = pcall(projectile.filter, projectile) if not status then print('[PROJECTILES] Projectile Filter Failure!: ' .. ents) end end else if projectile.bUseFindUnitsInRadius ~= nil then if projectile.bUseFindUnitsInRadius then ents = FindUnitsInRadius(0, framehalf, nil, framerad, DOTA_UNIT_TARGET_TEAM_BOTH, DOTA_UNIT_TARGET_ALL, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false) else ents = Entities:FindAllInSphere(framehalf, framerad) end else if projectile.bZCheck then ents = Entities:FindAllInSphere(framehalf, framerad) else ents = FindUnitsInRadius(0, framehalf, nil, framerad, DOTA_UNIT_TARGET_TEAM_BOTH, DOTA_UNIT_TARGET_ALL, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false) end end end --DebugDrawSphere(pos, Vector(100,100,0), 1, framerad, true, .01) for index=1,tot do -- unit check for i=1,#ents do local v = ents[i] local zOffset = v.zOffset or 0 local height = (v.height or 150) + zOffset local org = v:GetAbsOrigin() local nozorg = Vector(org.x, org.y, 0) local nozpos = Vector(subpos.x, subpos.y, 0) local nozCheck = VectorDistanceSq(nozpos, nozorg) <= rad2 local zCheck = true if projectile.bZCheck then zCheck = subpos.z >= org.z + zOffset and subpos.z <= org.z + height end 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 --VectorDistanceSq(nozpos, org) <= rad2 and subpos.z >= orgz + zOffset and subpos.z <= orgz + height then local time = projectile.rehit[v:entindex()] if time==nil or curTime > time then local status, test = pcall(projectile.UnitTest, projectile, v) if not status then print('[PROJECTILES] Projectile UnitTest Failure!: ' .. test) elseif test then local status, action = pcall(projectile.OnUnitHit, projectile, v) if not status then print('[PROJECTILES] Projectile OnUnitHit Failure!: ' .. action) end if projectile.UnitBehavior == PROJECTILES_DESTROY then ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate) if projectile.OnFinish then local status, out = pcall(projectile.OnFinish, projectile, subpos) if not status then print('[PROJECTILES] Projectile OnFinish Failure!: ' .. out) end end return elseif projectile.UnitBehavior == PROJECTILES_BOUNCE then -- bounce math end if projectile.bMultipleHits then projectile.rehit[v:entindex()] = curTime + projectile.fRehitDelay else projectile.rehit[v:entindex()] = curTime + 10000 end end end end end local navConnect = not GridNav:IsTraversable(subpos) or GridNav:IsBlocked(subpos) -- GNV connect local ground = GetGroundPosition(subpos, projectile.Source) + Vector(0,0,projectile.fGroundOffset) --print(tostring(ground.z) .. ' -- ' .. tostring(pos.z)) local groundConnect = ground.z > pos.z -- ground if navConnect then if projectile.bCutTrees or projectile.TreeBehavior ~= PROJECTILES_NOTHING then local ents = GridNav:GetAllTreesAroundPoint(subpos, projectile.radius, projectile.bTreeFullCollision) --print('tree hit') --local vec = Vector(GridNav:GridPosToWorldCenterX(GridNav:WorldToGridPosX(subpos.x)), GridNav:GridPosToWorldCenterY(GridNav:WorldToGridPosY(subpos.y)), ground.z - projectile.fGroundOffset) --DebugDrawCircle(vec, Vector(200,200,200), 100, 10, true, .5) --local ents = Entities:FindAllByClassnameWithin("ent_dota_tree", vec, 70) for i=1,#ents do local tree = ents[i] if not projectile.bZCheck or (pos.z < ground.z + 280 + radius - projectile.fGroundOffset and pos.z + radius + projectile.fGroundOffset > ground.z) then if projectile.bCutTrees then tree:CutDown(projectile.Source:GetTeamNumber()) navConnect = not GridNav:IsTraversable(subpos) or GridNav:IsBlocked(subpos) end if projectile.bCutTrees or projectile.TreeBehavior ~= PROJECTILES_NOTHING then local status, action = pcall(projectile.OnTreeHit, projectile, tree) if not status then print('[PROJECTILES] Projectile OnTreeHit Failure!: ' .. action) end end if projectile.TreeBehavior == PROJECTILES_DESTROY then ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate) if projectile.OnFinish then local status, out = pcall(projectile.OnFinish, projectile, subpos) if not status then print('[PROJECTILES] Projectile OnFinish Failure!: ' .. out) end end return elseif projectile.TreeBehavior == PROJECTILES_BOUNCE and projectile.changes > 0 and curTime >= projectile.changeTime then -- bounce calculation end end end end end if projectile.WallBehavior ~= PROJECTILES_NOTHING and groundConnect then--ground.z > projectile.prevPos.z then local normal = Projectiles:CalcNormal(ground, projectile.Source, 32) --print(normal) if normal.z < .6 then local vec = Vector(GridNav:GridPosToWorldCenterX(GridNav:WorldToGridPosX(subpos.x)), GridNav:GridPosToWorldCenterY(GridNav:WorldToGridPosY(subpos.y)), ground.z) local status, action = pcall(projectile.OnWallHit, projectile, vec) if not status then print('[PROJECTILES] Projectile OnWallHit Failure!: ' .. action) end if projectile.WallBehavior == PROJECTILES_DESTROY then ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate) if projectile.OnFinish then local status, out = pcall(projectile.OnFinish, projectile, subpos) if not status then print('[PROJECTILES] Projectile OnFinish Failure!: ' .. out) end end return elseif projectile.WallBehavior == PROJECTILES_BOUNCE and projectile.changes > 0 and curTime >= projectile.changeTime then -- bounce calculation --local normal = Projectiles:CalcNormal(ground, projectile.Source) --DebugDrawLine_vCol(subpos, subpos + normal * 200, Vector(255,255,255), true, 1) -- remove z normal.z = 0 normal = normal:Normalized() --DebugDrawLine_vCol(subpos, subpos + normal * 200, Vector(0,255,0), true, 1) projectile:SetVelocity(((-2 * vel:Dot(normal) * normal) + vel) * 30, subpos) break end end end if projectile.GroundBehavior ~= PROJECTILES_NOTHING and groundConnect then --print('groundConnect') if projectile.GroundBehavior == PROJECTILES_DESTROY then ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate) local status, action = pcall(projectile.OnGroundHit, projectile, ground) if not status then print('[PROJECTILES] Projectile OnGroundHit Failure!: ' .. action) end if projectile.OnFinish then local status, out = pcall(projectile.OnFinish, projectile, subpos) if not status then print('[PROJECTILES] Projectile OnFinish Failure!: ' .. out) end end return elseif projectile.GroundBehavior == PROJECTILES_BOUNCE and projectile.changes > 0 and curTime >= projectile.changeTime then -- bounce calculation local status, action = pcall(projectile.OnGroundHit, projectile, ground) if not status then print('[PROJECTILES] Projectile OnGroundHit Failure!: ' .. action) end local normal = Projectiles:CalcNormal(ground, projectile.Source) projectile:SetVelocity(((-2 * vel:Dot(normal) * normal) + vel) * 30, subpos) --v:SetPhysicsVelocity(((-2 * newVelocity:Dot(normal) * normal) + newVelocity) * self.multiplier * 30) break elseif projectile.GroundBehavior == PROJECTILES_FOLLOW and projectile.changes > 0 and curTime >= projectile.changeTime then -- follow calculation local slope = Projectiles:CalcSlope(ground, projectile.Source, vel) local dir = vel:Normalized() --projectile.fGroundOffset = projectile.fGroundOffset - 10 --print('follow ' .. slope:Dot(vel:Normalized()) .. ' -- ' .. projectile.changes) if dir.z < slope.z and slope:Dot(dir) < 1 then local status, action = pcall(projectile.OnGroundHit, projectile, ground) if not status then print('[PROJECTILES] Projectile OnGroundHit Failure!: ' .. action) end --projectile.fGroundOffset = projectile.fGroundOffset - 10 --print('follow under') projectile:SetVelocity(velLength * 30 * slope, subpos) end break end end --DebugDrawCircle(subpos, Vector(200,200,200), 100, 10, true, .01) subpos = pos + vel * (div * index) if projectile.distanceTraveled + (subpos-pos):Length() > projectile.fDistance then ParticleManager:DestroyParticle(projectile.id, projectile.bDestroyImmediate) if projectile.OnFinish then local status, out = pcall(projectile.OnFinish, projectile, subpos) if not status then print('[PROJECTILES] Projectile OnFinish Failure!: ' .. out) end end return end if projectile.bGroundLock then subpos.z = GetGroundPosition(subpos, projectile.Source).z + projectile.fGroundOffset end end if projectile.bProvidesVision then if projectile.currentFrame == projectile.visionTick then AddFOWViewer(projectile.iVisionTeamNumber, projectile.pos, projectile.iVisionRadius, projectile.fVisionLingerDuration, not projectile.bFlyingVision) projectile.currentFrame = 0 else projectile.currentFrame = projectile.currentFrame + 1 end end projectile.radius = radius + projectile.radiusStep projectile.prevPos = projectile.pos projectile.distanceTraveled = projectile.distanceTraveled + velLength projectile.pos = pos + vel return curTime end }) return projectile end if not Projectiles.timers then Projectiles:start() end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/selection.lua ================================================ SELECTION_VERSION = "1.00" --[[ Lua-controlled Selection Library by Noya Installation: - "require" this file inside your code in order to add the new API functions to the PlayerResource global - Additionally, ensure your game scripts custom_net_tables.txt has a "selection" entry - Finally, ensure that you have the following files correctly added and included in your panorama content folder selection.xml, and include line on custom_ui_manifest.xml, on layout/custom_game/ folder selection folder containing selection.js and selection_filter.js, on /scripts/ folder Usage: - Functions with unit_args can recieve an Entity Index, a NPC Handle, or a table of each type. - Functions with unit can recieve an Entity Index or NPC Handle * Create a new selection for the player PlayerResource:NewSelection(playerID, unit_args) * Add units to the current selection of the player PlayerResource:AddToSelection(playerID, unit_args) * Remove units by index from the player selection group PlayerResource:RemoveFromSelection(playerID, unit_args) * Returns the list of units by entity index that are selected by the player PlayerResource:GetSelectedEntities(playerID) * Deselect everything, selecting the main hero (which can be redirected to another entity) PlayerResource:ResetSelection(playerID) * Get the index of the first selected unit of the player PlayerResource:GetMainSelectedEntity(playerID) * Check if a unit is selected or not by a player, returns bool PlayerResource:IsUnitSelected(playerID, unit_args) * Force a refresh of the current selection on all players, useful after abilities are removed PlayerResource:RefreshSelection() * Redirects the selection of the main hero to another entity of choice PlayerResource:SetDefaultSelectionEntity(playerID, unit) * Redirects the selection of any entity to another entity of choice hero:SetSelectionOverride(unit) * Use -1 to reset to default PlayerResource:SetDefaultSelectionEntity(playerID, -1) hero:SetSelectionOverride(-1) Notes: - Enemy units that you don't control can't be added to the selection group of a player - This library requires "libraries/timers.lua" to be present in your vscripts directory. --]] function CDOTA_PlayerResource:NewSelection(playerID, unit_args) local player = self:GetPlayer(playerID) if player then local entities = Selection:GetEntIndexListFromTable(unit_args) CustomGameEventManager:Send_ServerToPlayer(player, "selection_new", {entities = entities}) end end function CDOTA_PlayerResource:AddToSelection(playerID, unit_args) local player = self:GetPlayer(playerID) if player then local entities = Selection:GetEntIndexListFromTable(unit_args) CustomGameEventManager:Send_ServerToPlayer(player, "selection_add", {entities = entities}) end end function CDOTA_PlayerResource:RemoveFromSelection(playerID, unit_args) local player = self:GetPlayer(playerID) if player then local entities = Selection:GetEntIndexListFromTable(unit_args) CustomGameEventManager:Send_ServerToPlayer(player, "selection_remove", {entities = entities}) end end function CDOTA_PlayerResource:ResetSelection(playerID) local player = self:GetPlayer(playerID) if player then CustomGameEventManager:Send_ServerToPlayer(player, "selection_reset", {}) end end function CDOTA_PlayerResource:GetSelectedEntities(playerID) return Selection.entities[playerID] or {} end function CDOTA_PlayerResource:GetMainSelectedEntity(playerID) local selectedEntities = self:GetSelectedEntities(playerID) return selectedEntities and selectedEntities["0"] end function CDOTA_PlayerResource:IsUnitSelected(playerID, unit) if not unit then return false end local entIndex = type(unit)=="number" and unit or IsValidEntity(unit) and unit:GetEntityIndex() if not entIndex then return false end local selectedEntities = self:GetSelectedEntities(playerID) for _,v in pairs(selectedEntities) do if v==entIndex then return true end end return false end function CDOTA_PlayerResource:RefreshSelection() Timers:CreateTimer(0.03, function() FireGameEvent("dota_player_update_selected_unit", {}) end) end function CDOTA_PlayerResource:SetDefaultSelectionEntity(playerID, unit) if not unit then unit = -1 end local entIndex = type(unit)=="number" and unit or unit:GetEntityIndex() local hero = self:GetSelectedHeroEntity(playerID) if hero then hero:SetSelectionOverride(unit) end end function CDOTA_BaseNPC:SetSelectionOverride(reselect_unit) local unit = self local reselectIndex = type(reselect_unit)=="number" and reselect_unit or reselect_unit:GetEntityIndex() CustomNetTables:SetTableValue("selection", tostring(unit:GetEntityIndex()), {entity = reselectIndex}) end ------------------------------------------------------------------------ -- Internal ------------------------------------------------------------------------ require('libraries/timers') if not Selection then Selection = class({}) end function Selection:Init() Selection.entities = {} --Stores the selected entities of each playerID CustomGameEventManager:RegisterListener("selection_update", Dynamic_Wrap(Selection, 'OnUpdate')) end function Selection:OnUpdate(event) local playerID = event.PlayerID Selection.entities[playerID] = event.entities end -- Internal function to build an entity index list out of various inputs function Selection:GetEntIndexListFromTable(unit_args) local entities = {} if type(unit_args)=="number" then table.insert(entities, unit_args) -- Entity Index -- Check contents of the table elseif type(unit_args)=="table" then if unit_args.IsCreature then table.insert(entities, unit_args:GetEntityIndex()) -- NPC Handle else for _,arg in pairs(unit_args) do -- Table of entity index values if type(arg)=="number" then table.insert(entities, arg) -- Table of npc handles elseif type(arg)=="table" then if arg.IsCreature then table.insert(entities, arg:GetEntityIndex()) end end end end end return entities end if not Selection.entities then Selection:Init() end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/timers.lua ================================================ TIMERS_VERSION = "1.05" --[[ -- A timer running every second that starts immediately on the next frame, respects pauses Timers:CreateTimer(function() print ("Hello. I'm running immediately and then every second thereafter.") return 1.0 end ) -- The same timer as above with a shorthand call Timers(function() print ("Hello. I'm running immediately and then every second thereafter.") return 1.0 end) -- A timer which calls a function with a table context Timers:CreateTimer(GameMode.someFunction, GameMode) -- A timer running every second that starts 5 seconds in the future, respects pauses Timers:CreateTimer(5, function() print ("Hello. I'm running 5 seconds after you called me and then every second thereafter.") return 1.0 end ) -- 10 second delayed, run once using gametime (respect pauses) Timers:CreateTimer({ endTime = 10, -- when this timer should first execute, you can omit this if you want it to run first on the next frame callback = function() print ("Hello. I'm running 10 seconds after when I was started.") end }) -- 10 second delayed, run once regardless of pauses Timers:CreateTimer({ useGameTime = false, endTime = 10, -- when this timer should first execute, you can omit this if you want it to run first on the next frame callback = function() print ("Hello. I'm running 10 seconds after I was started even if someone paused the game.") end }) -- A timer running every second that starts after 2 minutes regardless of pauses Timers:CreateTimer("uniqueTimerString3", { useGameTime = false, endTime = 120, callback = function() print ("Hello. I'm running after 2 minutes and then every second thereafter.") return 1 end }) -- A timer using the old style to repeat every second starting 5 seconds ahead Timers:CreateTimer("uniqueTimerString3", { useOldStyle = true, endTime = GameRules:GetGameTime() + 5, callback = function() print ("Hello. I'm running after 5 seconds and then every second thereafter.") return GameRules:GetGameTime() + 1 end }) ]] TIMERS_THINK = 0.01 if Timers == nil then print ( '[Timers] creating Timers' ) Timers = {} setmetatable(Timers, { __call = function(t, ...) return t:CreateTimer(...) end }) --Timers.__index = Timers end function Timers:start() Timers = self self.timers = {} --local ent = Entities:CreateByClassname("info_target") -- Entities:FindByClassname(nil, 'CWorld') local ent = SpawnEntityFromTableSynchronous("info_target", {targetname="timers_lua_thinker"}) ent:SetThink("Think", self, "timers", TIMERS_THINK) end function Timers:Think() --if GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then --return --end -- Track game time, since the dt passed in to think is actually wall-clock time not simulation time. local now = GameRules:GetGameTime() -- Process timers for k,v in pairs(Timers.timers) do local bUseGameTime = true if v.useGameTime ~= nil and v.useGameTime == false then bUseGameTime = false end local bOldStyle = false if v.useOldStyle ~= nil and v.useOldStyle == true then bOldStyle = true end local now = GameRules:GetGameTime() if not bUseGameTime then now = Time() end if v.endTime == nil then v.endTime = now end -- Check if the timer has finished if now >= v.endTime then -- Remove from timers list Timers.timers[k] = nil Timers.runningTimer = k Timers.removeSelf = false -- Run the callback local status, nextCall if v.context then status, nextCall = xpcall(function() return v.callback(v.context, v) end, function (msg) return msg..'\n'..debug.traceback()..'\n' end) else status, nextCall = xpcall(function() return v.callback(v) end, function (msg) return msg..'\n'..debug.traceback()..'\n' end) end Timers.runningTimer = nil -- Make sure it worked if status then -- Check if it needs to loop if nextCall and not Timers.removeSelf then -- Change its end time if bOldStyle then v.endTime = v.endTime + nextCall - now else v.endTime = v.endTime + nextCall end Timers.timers[k] = v end -- Update timer data --self:UpdateTimerData() else -- Nope, handle the error Timers:HandleEventError('Timer', k, nextCall) end end end return TIMERS_THINK end function Timers:HandleEventError(name, event, err) print(err) -- Ensure we have data name = tostring(name or 'unknown') event = tostring(event or 'unknown') err = tostring(err or 'unknown') -- Tell everyone there was an error --Say(nil, name .. ' threw an error on event '..event, false) --Say(nil, err, false) -- Prevent loop arounds if not self.errorHandled then -- Store that we handled an error self.errorHandled = true end end function Timers:CreateTimer(name, args, context) if type(name) == "function" then if args ~= nil then context = args end args = {callback = name} name = DoUniqueString("timer") elseif type(name) == "table" then args = name name = DoUniqueString("timer") elseif type(name) == "number" then args = {endTime = name, callback = args} name = DoUniqueString("timer") end if not args.callback then print("Invalid timer created: "..name) return end local now = GameRules:GetGameTime() if args.useGameTime ~= nil and args.useGameTime == false then now = Time() end if args.endTime == nil then args.endTime = now elseif args.useOldStyle == nil or args.useOldStyle == false then args.endTime = now + args.endTime end args.context = context Timers.timers[name] = args return name end function Timers:RemoveTimer(name) Timers.timers[name] = nil if Timers.runningTimer == name then Timers.removeSelf = true end end function Timers:RemoveTimers(killAll) local timers = {} Timers.removeSelf = true if not killAll then for k,v in pairs(Timers.timers) do if v.persist then timers[k] = v end end end Timers.timers = timers end if not Timers.timers then Timers:start() end GameRules.Timers = Timers ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/libraries/worldpanels.lua ================================================ WORLDPANELS_VERSION = "0.81" --[[ Lua-controlled Frankenstein WorldPanels Library by BMD Installation -"require" this file inside your code in order to make the WorldPanels API availble -Ensure that this file is placed in the vscripts/libraries path along with timers.lua and playertables.lua -Ensure that you have the barebones_worldpanels.xml in your panorama content layout folder. -Ensure that you have the barebones_worldpanels.js in your panorama content scripts folder. -Ensure that barebones_worldpanels.xml is included in your custom_ui_manifest.xml with Library Usage -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 or on a specific entity. -WorldPanels can be shared with an individual player, a whole team, or all clients at once via WorldPanels:CreateWorldPanel(playerID, configTable) -- 1 player or array of playerIDs like {3,5,8} WorldPanels:CreateWorldPanelForTeam(teamID, configTable) -- 1 team WorldPanels:CreateWorldPanelForAll(configTable) -- All players -WorldPanels are specified by a configuration table which has several potential parameters: -layout: The panorama layout file to display in this worldpanel. -position: Mutually exclusive with "entity". Position is the world vector position to display the worldpanel at. -entity: Mutually exclusive with "position". Entity is the entity (hscript or index) which the worldpanel will track for its position. -offsetX: An optional (default is 0) screen pixel offset to apply to the worldpanel (in the x direction) -offsetY: An optional (default is 0) screen pixel offset to apply to the worldpanel (in the y direction) -horizontalAlign: An optional (default is "center") alignment for the worldpanel to use when adjusting the panel size. "center", "left", "right" are valid options -verticalAlign: An optional (default is "bottom") alignment for the worldpanel to use when adjusting the panel size. "bottom", "center", "top" are valid options -entityHeight: An optional (default is 0) height offset to use for the entity world panel (see: "HealthBarOffset" in unit KV definition) -edgePadding: An optional (default is to not lock to screen edge) padding percentage of the screen to limit the worldpanel to. -duration: An optional (default is infinite) duration in GameTime seconds that the panel will exist for and then be automatically destroyed. -data: An optional table of data which will be attached to the worldpanel so that valeus can be used in javascript through $.GetContextPanel().Data This table should only contain numeric, string, or table values (no entities/hscripts) -WorldPanels returned by the Create methods have the following methods: wp:SetPosition(position) wp:SetEntity(entity) wp:SetHorizontalAlign(hAlign) wp:SetVerticalAlign(vAlign) wp:SetOffsetX(offsetX) wp:SetOffsetY(offsetY) wp:SetEdgePadding(edge) wp:SetEntityHeight(entityHeight) wp:SetData(data) wp:Delete() -See examples/worldpanelsExample.lua for usage examples. Notes -WorldPanel panorama performance can still be an issue (depending on layout). Use sparingly. -A WorldPanel attached to an entity will only show when the player has vision of that entity -A WorldPanel is automatically deleted if the entity it is attached to dies (and is not a hero type unit) -Edge tracking is currently inaccurate in certain sitautions due to a valve bug with Game.WorldToScreenX/Y -The WorldPanel library provides a few helpful properties for use in your layout file's javascript. $.GetContextPanel().WorldPanel contains the WorldPanel configuration in the following table format: {layout, offsetX, offsetY, position, entity, entityHeight, hAlign, vAlign, edge} $.GetContextPanel().OnEdge true if this worldpanel has edgelocking/padding and is touching the edge/padded edge of the screen. false otherwise. Updates every frame. $.GetContextPanel().OffScreen true if this worldpanel has no edgelocking/padding and is completely off screen. false otherwise. Updates every frame. $.GetContextPanel().Data the "data" object passed in to CreateWorldPanel. Examples -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. WorldPanels:CreateWorldPanel(0, {layout = "file://{resources}/layout/custom_game/worldpanels/healthbar.xml", entity = PlayerResource:GetSelectedHeroEntity(0), entityHeight = 210, }) -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 WorldPanels:CreateWorldPanelForAll( {layout = "file://{resources}/layout/custom_game/worldpanels/arrow.xml", position = GetGroundPosition(Vector(0,0,0), nil) + Vector(0,0,200), edgePadding = 5, }) ]] require('libraries/timers') require('libraries/playertables') local haStoI = {[0]="center", [1]="left", [2]="right"} local haItoS = {center=0, left=1, right=2} local vaStoI = {bottom=0, center=1, top=2} local vaItoS = {[0]="bottom", [1]="center", [2]="top"} if not WorldPanels then WorldPanels = class({}) end local UpdateTable = function(wp) local idString = wp.idString local pt = wp.pt local pids = wp.pids for i=1,#pids do local pid = pids[i] local ptName = "worldpanels_" .. pid if not PlayerTables:TableExists(ptName) then PlayerTables:CreateTable(ptName, {[idString]=pt}, {pid}) else PlayerTables:SetTableValue(ptName, idString, pt) end end end function WorldPanels:start() self.initialized = true self.entToPanels = {} self.worldPanels = {} self.nextID = 0 --CustomGameEventManager:RegisterListener("Attachment_DoSphere", Dynamic_Wrap(WorldPanels, "Attachment_DoSphere")) ListenToGameEvent('entity_killed', Dynamic_Wrap(WorldPanels, 'OnEntityKilled'), self) end function WorldPanels:OnEntityKilled( keys ) --print( '[WorldPanels] OnEntityKilled Called' ) --PrintTable( keys ) -- The Ent that was Killed local killedEnt = EntIndexToHScript( keys.entindex_killed ) local panels = WorldPanels.entToPanels[killedEnt] if not killedEnt.IsRealHero or not killedEnt:IsRealHero() then if panels then for i=1,#panels do local panel = panels[i] for j=1,#panel.pids do local pid = panel.pids[j] PlayerTables:DeleteTableKey("worldpanels_" .. pid, panel.idString) end end end end end function WorldPanels:CreateWorldPanelForAll(conf) local pids = {} for i=0,DOTA_MAX_TEAM_PLAYERS do if PlayerResource:IsValidPlayer(i) then pids[#pids+1] = i; end end return WorldPanels:CreateWorldPanel(pids, conf) end function WorldPanels:CreateWorldPanelForTeam(team, conf) local count = PlayerResource:GetPlayerCountForTeam(team) local pids = {} for i=1,count do pids[#pids+1] = PlayerResource:GetNthPlayerIDOnTeam(team, i) end return WorldPanels:CreateWorldPanel(pids, conf) end function WorldPanels:CreateWorldPanel(pids, conf) --{position, entity, offsetX, offsetY, hAlign, vAlign, entityHeight, edge, duration, data} -- duration? if type(pids) == "number" then pids = {pids} end local ent = conf.entity local ei = conf.entity if ent and type(ent) == "number" then ei = ent ent = EntIndexToHScript(ent) elseif ent and ent.GetEntityIndex then ei = ent:GetEntityIndex() end local pt = { layout = conf.layout, position = conf.position, entity = ei, offsetX = conf.offsetX, offsetX = conf.offsetY, entityHeight = conf.entityHeight, edge = conf.edgePadding, data = conf.data, } if conf.horizontalAlign then pt.hAlign = haStoI[conf.horizontalAlign] end if conf.verticalAlign then pt.vAlign = vaStoI[conf.verticalAlign] end local idString = tostring(self.nextID) local wp = { id = self.nextID, idString = idString, pids = pids, pt = pt, } function wp:SetPosition(pos) self.pt.entity = nil self.pt.position = pos UpdateTable(self) end function wp:SetEntity(entity) local ei = entity if entity and not type(entity) == "number" and entity.GetEntityIndex then ei = entity:GetEntityIndex() end self.pt.entity = ei self.pt.position = nil UpdateTable(self) end function wp:SetHorizontalAlign(hAlign) self.pt.hAlign = haStoI[hAlign] UpdateTable(self) end function wp:SetVerticalAlign(vAlign) self.pt.vAlign = vaStoI[vAlign] UpdateTable(self) end function wp:SetOffsetX(offX) self.pt.offsetX = offX UpdateTable(self) end function wp:SetOffsetY(offY) self.pt.offsetY = offY UpdateTable(self) end function wp:SetEntityHeight(height) self.pt.entityHeight = height UpdateTable(self) end function wp:SetEdgePadding(edge) self.pt.edge = edge UpdateTable(self) end function wp:SetData(data) self.pt.data = data UpdateTable(self) end function wp:Delete() for j=1,#self.pids do local pid = self.pids[j] PlayerTables:DeleteTableKey("worldpanels_" .. pid, self.idString) end end if conf.duration then pt.endTime = GameRules:GetGameTime() + conf.duration Timers:CreateTimer(conf.duration,function() wp:Delete() end) end UpdateTable(wp) if ei then self.entToPanels[ent] = self.entToPanels[ent] or {} table.insert(self.entToPanels[ent], wp) end self.worldPanels[self.nextID] = wp self.nextID = self.nextID + 1 return wp end if not WorldPanels.initialized then WorldPanels:start() end ================================================ FILE: game/dota_addons/barebones/scripts/vscripts/settings.lua ================================================ -- In this file you can set up all the properties and settings for your game mode. ENABLE_HERO_RESPAWN = true -- Should the heroes automatically respawn on a timer or stay dead until manually respawned UNIVERSAL_SHOP_MODE = false -- Should the main shop contain Secret Shop items as well as regular items ALLOW_SAME_HERO_SELECTION = true -- Should we let people select the same hero as each other HERO_SELECTION_TIME = 30.0 -- How long should we let people select their hero? PRE_GAME_TIME = 5.0 -- How long after people select their heroes should the horn blow and the game start? POST_GAME_TIME = 60.0 -- How long should we let people look at the scoreboard before closing the server automatically? TREE_REGROW_TIME = 60.0 -- How long should it take individual trees to respawn after being cut down/destroyed? GOLD_PER_TICK = 100 -- How much gold should players get per tick? GOLD_TICK_TIME = 5 -- How long should we wait in seconds between gold ticks? RECOMMENDED_BUILDS_DISABLED = false -- Should we disable the recommened builds for heroes CAMERA_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 MINIMAP_ICON_SIZE = 1 -- What icon size should we use for our heroes? MINIMAP_CREEP_ICON_SIZE = 1 -- What icon size should we use for creeps? MINIMAP_RUNE_ICON_SIZE = 1 -- What icon size should we use for runes? RUNE_SPAWN_TIME = 120 -- How long in seconds should we wait between rune spawns? CUSTOM_BUYBACK_COST_ENABLED = true -- Should we use a custom buyback cost setting? CUSTOM_BUYBACK_COOLDOWN_ENABLED = true -- Should we use a custom buyback time? BUYBACK_ENABLED = false -- Should we allow people to buyback when they die? DISABLE_FOG_OF_WAR_ENTIRELY = false -- Should we disable fog of war entirely for both teams? USE_UNSEEN_FOG_OF_WAR = false -- Should we make unseen and fogged areas of the map completely black until uncovered by each team? -- Note: DISABLE_FOG_OF_WAR_ENTIRELY must be false for USE_UNSEEN_FOG_OF_WAR to work USE_STANDARD_DOTA_BOT_THINKING = false -- Should we have bots act like they would in Dota? (This requires 3 lanes, normal items, etc) USE_STANDARD_HERO_GOLD_BOUNTY = true -- Should we give gold for hero kills the same as in Dota, or allow those values to be changed? USE_CUSTOM_TOP_BAR_VALUES = true -- Should we do customized top bar values or use the default kill count per team? TOP_BAR_VISIBLE = true -- Should we display the top bar score/count at all? SHOW_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 ENABLE_TOWER_BACKDOOR_PROTECTION = false-- Should we enable backdoor protection for our towers? REMOVE_ILLUSIONS_ON_DEATH = false -- Should we remove all illusions if the main hero dies? DISABLE_GOLD_SOUNDS = false -- Should we disable the gold sound when players get gold? END_GAME_ON_KILLS = true -- Should the game end after a certain number of kills? KILLS_TO_END_GAME_FOR_TEAM = 50 -- How many kills for a team should signify an end of game? USE_CUSTOM_HERO_LEVELS = true -- Should we allow heroes to have custom levels? MAX_LEVEL = 50 -- What level should we let heroes get to? USE_CUSTOM_XP_VALUES = true -- Should we use custom XP values to level up heroes, or the default Dota numbers? -- Fill this table up with the required XP per level if you want to change it XP_PER_LEVEL_TABLE = {} for i=1,MAX_LEVEL do XP_PER_LEVEL_TABLE[i] = (i-1) * 100 end ENABLE_FIRST_BLOOD = true -- Should we enable first blood for the first kill in this game? HIDE_KILL_BANNERS = false -- Should we hide the kill banners that show when a player is killed? LOSE_GOLD_ON_DEATH = true -- Should we have players lose the normal amount of dota gold on death? SHOW_ONLY_PLAYER_INVENTORY = false -- Should we only allow players to see their own inventory even when selecting other units? DISABLE_STASH_PURCHASING = false -- Should we prevent players from being able to buy items into their stash when not at a shop? DISABLE_ANNOUNCER = false -- Should we disable the announcer from working in the game? FORCE_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. FIXED_RESPAWN_TIME = -1 -- What time should we use for a fixed respawn timer? Use -1 to keep the default dota behavior. FOUNTAIN_CONSTANT_MANA_REGEN = -1 -- What should we use for the constant fountain mana regen? Use -1 to keep the default dota behavior. FOUNTAIN_PERCENTAGE_MANA_REGEN = -1 -- What should we use for the percentage fountain mana regen? Use -1 to keep the default dota behavior. FOUNTAIN_PERCENTAGE_HEALTH_REGEN = -1 -- What should we use for the percentage fountain health regen? Use -1 to keep the default dota behavior. MAXIMUM_ATTACK_SPEED = 600 -- What should we use for the maximum attack speed? MINIMUM_ATTACK_SPEED = 20 -- What should we use for the minimum attack speed? GAME_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) VICTORY_MESSAGE_DURATION = 3 -- How long should we wait after the victory message displays to show the End Screen? Use STARTING_GOLD = 500 -- How much starting gold should we give to each player? DISABLE_DAY_NIGHT_CYCLE = false -- Should we disable the day night cycle from naturally occurring? (Manual adjustment still possible) DISABLE_KILLING_SPREE_ANNOUNCER = false -- Shuold we disable the killing spree announcer? DISABLE_STICKY_ITEM = false -- Should we disable the sticky item button in the quick buy area? SKIP_TEAM_SETUP = false -- Should we skip the team setup entirely? ENABLE_AUTO_LAUNCH = true -- Should we automatically have the game complete team setup after AUTO_LAUNCH_DELAY seconds? AUTO_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. LOCK_TEAM_SETUP = false -- Should we lock the teams initially? Note that the host can still unlock the teams -- NOTE: You always need at least 2 non-bounty type runes to be able to spawn or your game will crash! ENABLED_RUNES = {} -- Which runes should be enabled to spawn in our game mode? ENABLED_RUNES[DOTA_RUNE_DOUBLEDAMAGE] = true ENABLED_RUNES[DOTA_RUNE_HASTE] = true ENABLED_RUNES[DOTA_RUNE_ILLUSION] = true ENABLED_RUNES[DOTA_RUNE_INVISIBILITY] = true ENABLED_RUNES[DOTA_RUNE_REGENERATION] = true ENABLED_RUNES[DOTA_RUNE_BOUNTY] = true ENABLED_RUNES[DOTA_RUNE_ARCANE] = true MAX_NUMBER_OF_TEAMS = 10 -- How many potential teams can be in this game mode? USE_CUSTOM_TEAM_COLORS = true -- Should we use custom team colors? USE_CUSTOM_TEAM_COLORS_FOR_PLAYERS = true -- Should we use custom team colors to color the players/minimap? TEAM_COLORS = {} -- If USE_CUSTOM_TEAM_COLORS is set, use these colors. TEAM_COLORS[DOTA_TEAM_GOODGUYS] = { 61, 210, 150 } -- Teal TEAM_COLORS[DOTA_TEAM_BADGUYS] = { 243, 201, 9 } -- Yellow TEAM_COLORS[DOTA_TEAM_CUSTOM_1] = { 197, 77, 168 } -- Pink TEAM_COLORS[DOTA_TEAM_CUSTOM_2] = { 255, 108, 0 } -- Orange TEAM_COLORS[DOTA_TEAM_CUSTOM_3] = { 52, 85, 255 } -- Blue TEAM_COLORS[DOTA_TEAM_CUSTOM_4] = { 101, 212, 19 } -- Green TEAM_COLORS[DOTA_TEAM_CUSTOM_5] = { 129, 83, 54 } -- Brown TEAM_COLORS[DOTA_TEAM_CUSTOM_6] = { 27, 192, 216 } -- Cyan TEAM_COLORS[DOTA_TEAM_CUSTOM_7] = { 199, 228, 13 } -- Olive TEAM_COLORS[DOTA_TEAM_CUSTOM_8] = { 140, 42, 244 } -- Purple USE_AUTOMATIC_PLAYERS_PER_TEAM = true -- Should we set the number of players to 10 / MAX_NUMBER_OF_TEAMS? CUSTOM_TEAM_PLAYER_COUNT = {} -- If we're not automatically setting the number of players per team, use this table CUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_GOODGUYS] = 1 CUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_BADGUYS] = 1 CUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_1] = 1 CUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_2] = 1 CUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_3] = 1 CUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_4] = 1 CUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_5] = 1 CUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_6] = 1 CUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_7] = 1 CUSTOM_TEAM_PLAYER_COUNT[DOTA_TEAM_CUSTOM_8] = 1