Замена перезарядки скилла на заряды

dovakinn0

Новичок
15 Июн 2026
1
0
Проект
Gold Branch
Есть ли какой то безболезненный способ сделать так , чтобы с помощью таланта/аганима/шарда можно было давать спеллу заряды, если изначально он их не имеет (не залезая в скрипт скилла, чисто в кв)?
Искал на ModDota, но не нашел(
Пока в голове надумал костальный способ делать дубликат скилла с зарядами и заменять оригинальный при покупке/прокачке аганима/таланта; но там и кд надо синхронизировать, и в целом наверное должен быть адекватный и очевидный способ.
 
Такие приколы можно в KV настроить, не обязательно лезть в Lua , как раньше (но иногда все таки придется)
Можешь посмотреть как сделано в стандартной доте, вот например у Shadow demon
Disruption - получает заряды от прокачки таланта, а ульта Demonic purge - от аганима

Код:
    "shadow_demon_disruption"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK"
        "AbilityUnitTargetTeam"            "DOTA_UNIT_TARGET_TEAM_ENEMY | DOTA_UNIT_TARGET_TEAM_FRIENDLY"
        "AbilityUnitTargetType"            "DOTA_UNIT_TARGET_HERO"
        "AbilityUnitTargetFlags"        "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO | DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES"
        "SpellImmunityType"                "SPELL_IMMUNITY_ENEMIES_NO"
        "SpellDispellableType"            "SPELL_DISPELLABLE_NO"
        "FightRecapLevel"                "1"
        "AbilitySound"                    "Hero_ShadowDemon.Disruption"

        // Time      
        //-------------------------------------------------------------------------------------------------------------
        "AbilityDuration"                "2.75"

        // Casting
        //-------------------------------------------------------------------------------------------------------------
        "AbilityCastRange"                "675"
        "AbilityCastPoint"                "0.3"

        // Cost
        //-------------------------------------------------------------------------------------------------------------
        "AbilityManaCost"                "120"

        // Special
        //-------------------------------------------------------------------------------------------------------------
        "AbilityValues"
        {
                "disruption_duration"      
                {
                    "value"        "2.75"
                }
                "illusion_duration"            "8 10 12 14"
                "illusion_outgoing_damage"    "-80.0 -70.0 -60.0 -50.0"
                "illusion_outgoing_tooltip"    "20.0 30.0 40.0 50.0"
                "illusion_flat_damage"
                {
                    "value"                            "20 35 50 65"
                    "CalculateSpellDamageTooltip"    "0"
                    "DamageTypeTooltip"                "DAMAGE_TYPE_PHYSICAL"
                }
                "illusion_incoming_damage"    "200"
                "tooltip_total_illusion_incoming_damage"    "300"
                "AbilityCooldown"              
                {
                    "value"            "26 24 22 20"
                    "special_bonus_unique_shadow_demon_7"            "=0.25"
                }
                "AbilityCharges"  
                {
                    "value"                ""
                "special_bonus_unique_shadow_demon_7" "+2"
                }
                "AbilityChargeRestoreTime"        "26 24 22 20"
                "illusion_bounty_base"        "0"
                "illusion_bounty_growth"    "2"
        }
        "AbilityCastAnimation"        "ACT_DOTA_CAST_ABILITY_1"
    }

Код:
    "shadow_demon_demonic_purge"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
        "AbilityUnitTargetTeam"            "DOTA_UNIT_TARGET_TEAM_ENEMY"
        "AbilityUnitTargetType"            "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
        "AbilityUnitTargetFlags"        "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
        "SpellImmunityType"                "SPELL_IMMUNITY_ENEMIES_YES"
        "SpellDispellableType"            "SPELL_DISPELLABLE_NO"
        "AbilityType"                    "ABILITY_TYPE_ULTIMATE"
        "AbilityUnitDamageType"            "DAMAGE_TYPE_MAGICAL"
        "FightRecapLevel"                "2"
        "HasScepterUpgrade"            "1"
        "AbilitySound"                    "Hero_ShadowDemon.DemonicPurge.Cast"
        "AbilityDraftExtraAbilities"
        {
            "shadow_demon_demonic_cleanse" "shard"
        }

        // Time      
        //-------------------------------------------------------------------------------------------------------------
        "AbilityDuration"                "5.0"

        // Casting
        //-------------------------------------------------------------------------------------------------------------
        "AbilityCastRange"                "800"
        "AbilityCastPoint"                "0.3 0.3 0.3"
        "AbilityCastAnimation"            "ACT_DOTA_CAST_ABILITY_5"

        // Cost
        //-------------------------------------------------------------------------------------------------------------
        "AbilityManaCost"                "150 175 200"
        "AbilityValues"
        {
            "purge_damage"
            {
                "value" "300 450 600"
                "special_bonus_unique_shadow_demon_1" "+150"
            }
            "max_charges"
            {
                "special_bonus_scepter" "2"
            }
            "AbilityCooldown"
            {
                "value"                                    "70 65 60"
                "special_bonus_unique_shadow_demon_9"    "-20"
            }
            "charge_restore_time"
            {
                "special_bonus_scepter"                    "70 65 60"
                "special_bonus_unique_shadow_demon_9"    "-20"
            }
            "max_slow"
            {
                "value" "100"
            }
            "min_slow"
            {
                "value" "20"
            }
            "apply_poison_stacks"
            {
                "value"            "0"
                "special_bonus_unique_shadow_demon_purge_poison"    "=1"
            }
        }
    }
 
Реклама: