Advertisement
Guest User

Untitled

a guest
May 25th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 12.41 KB | None | 0 0
  1.   val rules = Seq[RuleWithCondition](
  2.     // special rare cases:
  3.     // when damage is not under AbilitySpecial
  4.     Multiply(forceType = Some(KvType.Integer)) when KeyName.is("AbilityDamage"),
  5.     // chaos_knight_phantasm would not be fun with default illusion count
  6.     Ease(0.33) when FileName.startsWith("chaos_knight_phantasm") and KeyName.is("images_count"),
  7.     // these would get muted by generic filters, but should not
  8.     Ease(0.33) when FileName.startsWith("enchantress_impetus") and KeyName.is("distance_damage_pct"),
  9.     Multiply() when FileName.startsWith("razor_static_link") and KeyName.is("drain_rate"),
  10.     Multiply() when FileName.startsWith("slardar_amplify_damage") and KeyName.is("armor_reduction"),
  11.  
  12.     // bosses are not modified for now
  13.     Skip when FileName.startsWith("boss_") or FileName.startsWith("lycan_boss_") or FileDir.contains("siltbreaker") or FileDir.contains("stopfightingyourself"),
  14.     // skip all numbers that are not in AbilitySpecial
  15.     Skip when KvPath.doesNotMatch("*.AbilitySpecial.*"),
  16.     // percents, chances, ranges, speeds, etc.
  17.     Skip when KeyName.contains("percent") or KeyName.contains("pct") or KeyName.contains("chance") or KeyName.contains("conversion"),
  18.     Skip when KeyName.contains("crit"),
  19.     Skip when KeyName.contains("multiplier") or KeyName.contains("modifier") or KeyName.contains("reduction") or KeyName.contains("resistance"),
  20.     Skip when KeyName.contains("range") or KeyName.contains("radius") or KeyName.contains("distance") or KeyName.contains("aoe") or KeyName.contains("area_of_effect"),
  21.     Skip when KeyName.contains("cooldown"),
  22.     Skip when KeyName.contains("duration") or KeyName.contains("stun"),
  23.     Skip when KeyName.contains("rate") or KeyName.contains("delay") or KeyName.contains("interval") or KeyName.contains("time"),
  24.     Skip when KeyName.contains("speed") or KeyName.contains("slow"),
  25.     Skip when KeyName.contains("angle"),
  26.     Skip when KeyName.contains("vision"),
  27.     Skip when KeyName.contains("count") or KeyName.contains("charges"),
  28.     Skip when KeyName.contains("height") or KeyName.contains("width"),
  29.  
  30.     // ability fields with weird names:
  31.     Skip when FileName.startsWith("abaddon_borrowed_time") and KeyName.is("redirect"),
  32.     Skip when FileName.startsWith("alchemist_unstable_concoction") and KeyName.is("brew_explosion"),
  33.     Skip when FileName.startsWith("antimage_") and (KeyName.is("damage_per_burn") or KeyName.is("mana_void_damage_per_mana") or KeyName.is("spell_shield_resistance")),
  34.     Skip when FileName.startsWith("beastmaster_hawk_invisibility") and KeyName.is("fade_tooltip"),
  35.     Skip when FileName.startsWith("beastmaster_wild_axes") and (KeyName.is("apread") or KeyName.is("damage_amp")),
  36.     Skip when FileName.startsWith("brewmaster_drunken_brawler") and KeyName.is("last_proc"),
  37.     Skip when FileName.startsWith("centaur_stampede") and KeyName.is("strength_damage"),
  38.     Skip when FileName.startsWith("chaos_knight_chaos_strike") and KeyName.is("lifesteal"),
  39.     Skip when FileName.startsWith("chaos_knight_phantasm") and KeyName.contains("damage"),
  40.     Ease(0.33) when FileName.startsWith("chen_hand_of_god") and KeyName.is("ancient_creeps_scepter"),
  41.     Ease(0.33) when FileName.startsWith("chen_holy_persuasion") and KeyName.is("max_units"),
  42.     Skip when FileName.startsWith("chen_penitence") and KeyName.is("bonus_damage_taken"),
  43.     Skip when FileName.startsWith("crystal_maiden_freezing_field") and KeyName.endsWith("dist"),
  44.     Skip when FileName.startsWith("dark_seer_wall_of_replica") and (KeyName.contains("damage") or KeyName.contains("tooltip_outgoing")),
  45.     Skip when FileName.startsWith("dark_willow_bedlam") and (KeyName.is("attack_targets") or KeyName.is("roaming_seconds_per_rotation")),
  46.     Ease(0.2) when FileName.startsWith("death_prophet_exorcism") and KeyName.is("spirits"),
  47.     Skip when FileName.startsWith("disruptor_") and (KeyName.contains("pulses") or KeyName.contains("strikes")),
  48.     Skip when FileName.startsWith("earth_spirit_geomagnetic_grip") and KeyName.contains("pull_units_per_second"),
  49.     Skip when FileName.startsWith("elder_titan_earth_splitter") and KeyName.is("total_steps"),
  50.     Skip when FileName.startsWith("electrician_") and (KeyName.is("mana_cost") or KeyName.is("mana_break")),
  51.     Skip when FileName.startsWith("ember_spirit_sleight_of_fist") and KeyName.is("creep_damage_penalty"),
  52.     Ease(0.33) when FileName.startsWith("furion_force_of_nature") and KeyName.is("max_treants"),
  53.     Skip when FileName.startsWith("furion_wrath_of_nature") and (KeyName.is("max_targets") or KeyName.contains("buffer")),
  54.     Skip when FileName.startsWith("gyrocopter_flak_cannon") and KeyName.is("max_attacks"),
  55.     Skip when FileName.startsWith("gyrocopter_homing_missile") and (KeyName.is("acceleration") or KeyName.contains("hits_to_kill")),
  56.     Skip when FileName.startsWith("gyrocopter_rocket_barrage") and KeyName.is("rockets_per_second"),
  57.     Skip when FileName.startsWith("huskar_berserkers_blood") and KeyName.is("hp_threshold_max"),
  58.     Skip when FileName.startsWith("huskar_inner_vitality") and KeyName.contains("bonus"),
  59.     Skip when FileName.startsWith("huskar_life_break"),
  60.     Skip when FileName.startsWith("invoker_ice_wall") and KeyName.contains("wall_element"),
  61.     Skip when FileName.startsWith("invoker_invoke"),
  62.     Skip when FileName.startsWith("necronomicon_archer_aoe") and (KeyName.is("ms_bonus") or KeyName.is("as_bonus")),
  63.     Skip when FileName.startsWith("necronomicon_archer_mana_burn") and KeyName.is("burn_as_damage_tooltip"),
  64.     Skip when FileName.startsWith("juggernaut_blade_fury") and KeyName.is("blade_fury_damage_tick"),
  65.     Skip when FileName.startsWith("juggernaut_healing_ward"),
  66.     Skip when FileName.startsWith("juggernaut_omni_slash") and (KeyName.is("omni_slash_bounce_tick") or KeyName.contains("jumps")),
  67.     Skip when FileName.startsWith("kunkka_ghostship") and KeyName.is("ghostship_absorb"),
  68.     Skip when FileName.startsWith("kunkka_tidebringer") and KeyName.is("cleave_damage"),
  69.     Skip when FileName.startsWith("leshrac_diabolic_edict") and (KeyName.is("num_explosions") or KeyName.is("tower_bonus")),
  70.     Skip when FileName.startsWith("leshrac_pulse_nova") and KeyName.is("mana_cost_per_second"),
  71.     Skip when FileName.startsWith("lich_chain_frost") and KeyName.is("jumps"),
  72.     Skip when FileName.startsWith("lion_finger_of_death") and KeyName.is("mana_cost_scepter"),
  73.     Skip when FileName.startsWith("lion_impale") and KeyName.is("length_buffer"),
  74.     Skip when FileName.startsWith("lone_druid_spirit_bear") and (KeyName.is("bear_bat") or KeyName.is("backlash_damage")),
  75.     Skip when FileName.startsWith("luna_eclipse") and KeyName.contains("beams"),
  76.     Skip when FileName.startsWith("lycan_summon_wolves") and (KeyName.is("wolf_index") or KeyName.is("wolf_bat")),
  77.     Skip when FileName.startsWith("medusa_mana_shield"),
  78.     Skip when FileName.startsWith("medusa_mystic_snake") and (KeyName.is("snake_jumps") or KeyName.is("snake_scale") or KeyName.contains("stone_form")),
  79.     Skip when FileName.startsWith("medusa_stone_gaze"),
  80.     Skip when FileName.startsWith("meepo_divided_we_stand"),
  81.     Skip when FileName.startsWith("mirana_leap"),
  82.     Skip when FileName.startsWith("monkey_king_jingu_mastery") and (KeyName.is("required_hits") or KeyName.is("lifesteal")),
  83.     Skip when FileName.startsWith("monkey_king_wukongs_command") and KeyName.contains("soldiers"),
  84.     Skip when FileName.startsWith("morphling_adaptive_strike_agi") and (KeyName.is("damage_min") or KeyName.is("damage_max")),
  85.     Skip when FileName.startsWith("morphling_adaptive_strike_str"),
  86.     Skip when FileName.startsWith("naga_siren_mirror_image"),
  87.     Skip when FileName.startsWith("necrolyte_heartstopper_aura"),
  88.     Skip when FileName.startsWith("necrolyte_reapers_scythe"),
  89.     Skip when FileName.startsWith("necrolyte_sadist"), // this seems deprecated
  90.     Skip when FileName.startsWith("nevermore_necromastery") and (KeyName.contains("max_souls") or KeyName.contains("soul_release") or KeyName.contains("souls_hero_bonus")),
  91.     Skip when FileName.startsWith("nevermore_requiem") and KeyName.is("soul_death_release"),
  92.     Skip when FileName.startsWith("nyx_assassin_impale") and KeyName.is("length"),
  93.     Skip when FileName.startsWith("obsidian_destroyer_essence_aura") and KeyName.is("restore_amount"),
  94.     Skip when FileName.startsWith("obsidian_destroyer_sanity_eclipse"),
  95.     Ease(0.33) when FileName.startsWith("ogre_magi_bloodlust") and KeyName.is("modelscale"),
  96.     Skip when FileName.startsWith("ogre_magi_bloodlust") and KeyName.is("self_bonus"),
  97.     Skip when FileName.startsWith("omniknight_degen_aura"),
  98.     Skip when FileName.startsWith("oracle_purifying_flames") and KeyName.is("castpoint_scepter"),
  99.     Skip when FileName.startsWith("pangolier_shield_crash") and KeyName.is("hero_stacks"),
  100.     Skip when FileName.startsWith("pangolier_swashbuckle") and KeyName.is("strikes"),
  101.     Skip when FileName.startsWith("phantom_assassin_blur"),
  102.     Skip when FileName.startsWith("phantom_assassin_stifling_dagger") and KeyName.contains("attack_factor"),
  103.     Skip when FileName.startsWith("phantom_lancer_juxtapose"),
  104.     Skip when FileName.startsWith("phantom_lancer_spirit_lance") and (KeyName.is("tooltip_illusion_damage") or KeyName.is("scepter_jumps")),
  105.     Skip when FileName.startsWith("phoenix_fire_spirits") and KeyName.is("hp_cost_perc"),
  106.     Skip when FileName.startsWith("phoenix_icarus_dive") and (KeyName.is("hp_cost_perc") or KeyName.is("dash_length")),
  107.     Skip when FileName.startsWith("phoenix_launch_fire_spirit") and KeyName.is("hp_cost_perc"),
  108.     Skip when FileName.startsWith("phoenix_sun_ray") and KeyName.contains("perc"),
  109.     Skip when FileName.startsWith("phoenix_supernova") and KeyName.contains("max_hero_attacks"),
  110.     Skip when FileName.startsWith("pudge_dismember") and (KeyName.is("strength_damage") or KeyName.is("ticks") or KeyName.is("pull_units_per_second")),
  111.     Skip when FileName.startsWith("pudge_flesh_heap") and KeyName.is("flesh_heap_magic_resist"),
  112.     Skip when FileName.startsWith("pudge_rot") and KeyName.is("rot_tick"),
  113.     Skip when FileName.startsWith("pugna_nether_blast") and KeyName.is("structure_damage_mod"),
  114.     Skip when FileName.startsWith("pugna_nether_ward") and KeyName.is("attacks_to_destroy_tooltip"),
  115.     Skip when FileName.startsWith("rattletrap_power_cogs") and (KeyName.is("attacks_to_destroy") or KeyName.is("push_length")  or KeyName.is("extra_pull_buffer")),
  116.     Skip when FileName.startsWith("razor_static_link") and KeyName.is("drain_length"),
  117.     Skip when FileName.startsWith("riki_tricks_of_the_trade"),
  118.     Skip when FileName.startsWith("sandking_epicenter") and KeyName.is("epicenter_pulses"),
  119.     Skip when FileName.startsWith("sandking_sand_storm") and KeyName.is("AbilityDuration"),
  120.     Skip when FileName.startsWith("shadow_demon_disruption"),
  121.     Skip when FileName.startsWith("shadow_demon_shadow_poison") and (KeyName.is("bonus_stack_damage") or KeyName.is("max_multiply_stacks")),
  122.     Skip when FileName.startsWith("shadow_demon_soul_catcher"),
  123.     Skip when FileName.startsWith("shredder_chakram") and KeyName.is("mana_per_second"),
  124.     Skip when FileName.startsWith("shredder_reactive_armor") and KeyName.is("stack_limit"),
  125.     Skip when FileName.startsWith("shredder_whirling_death") and KeyName.is("whirling_tick"),
  126.     Skip when FileName.startsWith("skeleton_king_vampiric_aura") and KeyName.is("vampiric_aura"),
  127.     Skip when FileName.startsWith("skywrath_mage_ancient_seal") and KeyName.is("resist_debuff"),
  128.       Skip when FileName.startsWith("slark_dark_pact") and KeyName.is("total_pulses"),
  129.     Skip when FileName.startsWith("slark_pounce") and KeyName.is("pounce_acceleration"),
  130.     Skip when FileName.startsWith("slark_shadow_dance"),
  131.     Skip when FileName.startsWith("sohei_dash_oaa"),
  132.     Skip when FileName.startsWith("sohei_flurry_of_blows_oaa"),
  133.     Skip when FileName.startsWith("sohei_palm_of_life_oaa"),
  134.     Skip when FileName.startsWith("sohei_talents_oaa"),
  135.     Skip when FileName.startsWith("sohei_wholeness_of_body_oaa") and KeyName.is("damage_taken_heal"),
  136.     Skip when FileName.startsWith("spectre_haunt"),
  137.     Skip when FileName.startsWith("spectre_spectral_dagger") and (KeyName.is("buff_persistence") or KeyName.is("dagger_grace_period")),
  138.     Skip when FileName.startsWith("storm_spirit_electric_vortex"),
  139.     Skip when FileName.startsWith("sven_gods_strength") and KeyName.contains("gods_strength_damage"),
  140.     Skip when FileName.startsWith("sven_great_cleave"),
  141.  
  142.     // multiply by default
  143.     Always perform Multiply()
  144.   )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement