Game bullying me or actual syntax error?

edited December 2015 in Questions

So, I'm trying to override the hero "dark seer" to create a re-reading of the Monk class in diablo 3. But i'm having trouble since the console returns errors for something that apparently is some syntax error. I've used the syntax checker (http://arhowk.github.io/) and it says there is no problem with my code and i've looked the code myself and couldn't find any problems.

Here are some codes (KV) related to this "new hero":

-npc_abilities_custom:

    "determination"
    {
        "AbilityBehavior"               "DOTA_ABILITY_BEHAVIOR_PASSIVE"
        "BaseClass"                 "ability_datadriven"
    "MaxLevel"                  "1"
    "AbilityTextureName"                "determination"
    "OnOwnerSpawned"
    {
        "RunScript" "scripts/vscripts/ability_hero.lua"
        "Function"  "DeterminationCheck"
    }
    "Modifiers"
    {
        "modifier_determination"
        {
            "Passive"   "1"
            "IsHidden"  "1"
            "OnAttackLanded"
            {
                "RunScript" "scripts/vscripts/ability_hero.lua"
                "Function"  "Determination"
                "victim"    "TARGET"
            }
        }
        "modifier_determination_debuff"
        {
            "IsHidden"  "0"
            "damage_reduction"  "%dmg_resis"
        }
    }
    "AbilitySpecial"
    {
        "01"
        {
            "var_type"      "FIELD_INTEGER"
            "dmg_resis"     "5"
        }
        "02"
        {
            "var_type"      "FIELD_INTEGER"
            "duration"      "4"
        }
    }
    }
    "explosive_palm"
    {
    "AbilityBehavior"           "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
    "BaseClass"             "ability_datadriven"
    "AbilityUnitTargetTeam"         "DOTA_UNIT_TARGET_TEAM_ENEMY"
    "AbilityUnitTargetType"         "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
    "AbilityDamageType"         "DAMAGE_TYPE_MAGICAL"
    "AbilityTextureName"        "explosive_palm"
    "MaxLevel"                  "20"
    "RequiredLevel"             "0"
    "LevelsBetweenUpgrades"     "2"
    "AbilityCastRange"          "128"
    "AbilityCastPoint"          "0.3"
    "AOERadius"             "400"
    "AbilityCooldown"           "30 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10"
    "AbilityManaCost"           "45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140"
    "precache"
    {
        "particle"      "particles/units/heroes/hero_tinker/tinker_missle_explosion.vpcf"
    }
    "Modifiers"
    {
        "modifier_explosive_palm"
        {
            "IsHidden"  "0"
            "Duration"  "9"
            "OnDeath"
            {
                "Damage"
                {
                    "Target"
                    {
                        "Center"    "UNIT"
                        "Radius"    "400"
                        "Teams"     "DOTA_UNIT_TARGET_TEAM_ENEMY"
                        "Types"     "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
                    }
                    "Type"      "DAMAGE_TYPE_MAGICAL"
                    "Damage"    "%damage"
                }
                "AttachEffect"
                {
                    "EffectName"        "particles/units/heroes/hero_tinker/tinker_missle_explosion.vpcf"
                    "EffectAttachType"  "follow_origin"
                    "Target"        "UNIT"
                }
            }
            "OnCreated"
            {
                "AttachEffect"
                {
                    "EffectName"        "particles/skills/explosive_palm_over_head.vpcf"
                    "EffectAttachType"  "follow_overhead"
                    "Target"        "UNIT"
            }
        }
    }
    "OnSpellStart"
    {
        "ApplyModifier"
        {
            "Target"    "TARGET"
            "ModifierName"  "modifier_explosive_palm"
        }
    }
    "AbilitySpecial"
    {
        "01"
        {
            "var_type"      "FIELD_INTEGER"
            "damage"        "700 900 1100 1300 1500 1700 1900 2100 2300 2500 2700 2900 3100 3300 3500 3700 3900 4100 4300 4500"
        }
    }
    }
    }
    "dashing_strike"
    {
        "BaseClass"                 "ability_datadriven"
        "AbilityBehavior"           "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES"
        "AbilityUnitDamageType"     "DAMAGE_TYPE_PHYSICAL"
        "AbilityTextureName"        "dashing_strike"
        "MaxLevel"                  "20"
        "RequiredLevel"             "0"
        "LevelsBetweenUpgrades"     "2"
        "precache"
        {
            "particle"          "particles/units/heroes/hero_phantom_lancer/phantomlancer_edge_boost.vpcf"
            "particle"          "particles/units/heroes/hero_razor/razor_static_link_projectile_a.vpcf"
            "soundfile"         "soundevents/game_sounds_heroes/game_sounds_stormspirit.vsndevts"
        }
        "AbilityCastRange"      "0"
        "AbilityCastPoint"      "0.2"
        "AbilityCooldown"       "6"
        "AbilityManaCost"       "45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140"
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"      "FIELD_INTEGER"
                "range"         "550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 1450 1500"
            }
            "02"
            {
                "var_type"      "FIELD_FLOAT"
                "damage"        "1.25 1.5 1.75 2 2.25 2.5 2.75 3 3.25 3.5 3.75 4 4.25 4.5 4.75 5 5.25 5.5 5.75 6"
            }
        }
        "OnSpellStart"
        {
            "RunScript"
            {
                "ScriptFile"    "scripts/vscripts/ability_hero.lua"
                "Function"      "DashingStrike"
                "Target"        "POINT"
                "EffectName"    "particles/units/heroes/hero_phantom_lancer/phantomlancer_edge_boost.vpcf"
            }
            "FireSound"
            {
                "EffectName"    "Hero_StormSpirit.Ball.Orchid.02"
                "Target"        "CASTER"
            }
        }
        "OnProjectileHitUnit"
        {
            "DeleteOnHit"   "0"
            "RunScript"
            {
                "ScriptFile"    "scripts/vscripts/ability_hero.lua"
                "Function"      "DashingStrikeDamage"
                "Target"        "TARGET"
                "Damage"        "%damage"
            }
        }
    }
    "sweeping_wind"
    {
        "AbilityBehavior"           "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE"
        "AbilityUnitDamageType"     "DAMAGE_TYPE_PHYSICAL"
        "AbilityUnitTargetTeam"     "DOTA_UNIT_TARGET_TEAM_ENEMY"
        "BaseClass"                 "ability_datadriven"
        "AbilityTextureName"        "sweeping_wind"
        "AbilityCastAnimation"      "ACT_DOTA_SPAWN"
        "AbilityCastPoint"          "0.0"
        "MaxLevel"                  "20"
        "RequiredLevel"             "0"
        "LevelsBetweenUpgrades"     "2"
        "AbilityCooldown"           "1"
        "AbilityManaCost"           "5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100"
        "precache"
        {
            "particle"              "particles/skills/sweeping_wind.vpcf"
        }
        "OnToggleOn"
        {
            "ApplyModifier"
            {
                "Target"        "CASTER"
                "ModifierName"  "modifier_sweeping_wind"
            }
        }
        "OnToggleOff"
        {
            "RemoveModifier"
            {
                "Target"        "CASTER"
                "ModifierName"  "modifier_sweeping_wind"
            }
        }
        "Modifiers"
        {
            "modifier_sweeping_wind"
            {
                "IsBuff"        "1"
                "IsPurgable"    "0"
                "IsHidden"      "0"
                "ThinkInterval" "1.0"
                "OnIntervalThink"
                {
                    "Damage"
                    {
                        "Target"
                        {
                            "Center"    "CASTER"
                            "Radius"    "200"
                            "Teams"     "DOTA_UNIT_TARGET_TEAM_ENEMY"
                            "Types"     "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
                        }
                        "Type"  "DAMAGE_TYPE_PHYSICAL"
                        "Damage"    "%damage"
                    }
                    "AttachEffect"
                    {
                        "EffectName"            "particles/skills/sweeping_wind.vpcf"
                        "EffectAttachType"      "follow_origin"
                        "Target"                "CASTER"
                    }
                }
            }
        }
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"      "FIELD_INTEGER"
                "damage"        "50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240"
            }
        }
    }

-npc_heroes_custom:

    "npc_dota_hero_dark_seer"
    {
        "override_hero"         "npc_dota_hero_dark_seer"
        "AttributePrimary"      "DOTA_ATTRIBUTE_AGILITY"
        "AttributeBaseStrength"     "12"
        "AttributeStrengthGain"     "1.8"
        "AttributeBaseAgility"      "30"
        "AttributeAgilityGain"      "3.2"
        "AttributeBaseIntelligence" "12"
        "AttributeIntelligenceGain" "0.8"
        "AttackRate"            "1.1"
        "AbilityLayout"         "6"
        "Ability1"          "determination"
        "Ability2"          "explosive_palm"
        "Ability3"          "dashing_strike"
        "Ability4"          "sweeping_wind"
        "Ability5"          "seven_sided_strike"
        "VisionNighttimeRange"      "1800"  
    }

-addon_english

        "npc_dota_hero_dark_seer"       "First Monk"
        //=====================================================================================================================
        "DOTA_Tooltip_ability_determination"        "Determination"
        "DOTA_Tooltip_ability_determination_Description"    "Damage you deal reduces enemy damage you take by 20% for 4 seconds"
        "DOTA_Tooltip_ability_determination_Lore"       "'It is not our place to make demands of nature, nor to acquiesce to those who would. First we learn what is right, then we protect what is right.' —Master Wughan"
        "DOTA_Tooltip_modifier_determination_debuff"        "Determination"
        "DOTA_Tooltip_modifier_determination_debuff_Description"    "Reduced damage by <font color='#FFB90F'>5</font> per stack."
        //=====================================================================================================================
        "DOTA_Tooltip_ability_explosive_palm"           "Exploding Palm"
        "DOTA_Tooltip_ability_explosive_palm_Description"   "Marks an enemy. If the enemy dies while marked, it explodes and deals damage as Magical damage to all nearby enemies"
        "DOTA_Tooltip_ability_explosive_palm_Lore"      "-Monk: demon, you're already dead!\n-Demon: Say what? *head explodes*"
        "DOTA_Tooltip_modifier_explosive_palm"          "Exploding Palm"
        "DOTA_Tooltip_modifier_explosive_palm_Description"  "This unit is marked and is going to explode!"
        //=====================================================================================================================
        "DOTA_Tooltip_ability_dashing_strike"           "Dashing Strike"
        "DOTA_Tooltip_ability_dashing_strike_Description"   "Quickly dash to the target point, striking enemies along the way and dealing Physical damage"
        "DOTA_Tooltip_ability_dashing_strike_Lore"      "Thunderlightining becomes something slow"
        //=====================================================================================================================
        "DOTA_Tooltip_ability_sweeping_wind"            "Sweeping Wind"
        "DOTA_Tooltip_ability_sweeping_wind_Description"    "Surround yourself in a vortex that continuously deals Physical damage to all enemies nearby"
        "DOTA_Tooltip_ability_sweeping_wind_Lore"       "Master of Wind, eh? I think I've been called that before."
        "DOTA_Tooltip_modifier_sweeping_wind"           "Sweeping Wind"
        "DOTA_Tooltip_modifier_sweeping_wind_Description"   "Your surrounded by the sweeping wind."

Error log from console:

[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'DOTAHeroes' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'npc_dota_hero_dark_seer' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'override_hero' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'AttributePrimary' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'AttributeBaseStrength' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'AttributeStrengthGain' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'AttributeBaseAgility' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'AttributeAgilityGain' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'AttributeBaseIntelligence' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'AttributeIntelligenceGain' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'AttackRate' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'AbilityLayout' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'Ability1' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'Ability2' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'Ability3' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'Ability4' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'Ability5' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found 'VisionNighttimeRange' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found '}' in file scripts/npc/npc_heroes_custom.txt
[ W General              ]: 
[ W General              ]: KeyValues Error: LoadFromBuffer: expected '{', found '<NULL>' in file scripts/npc/npc_heroes_custom.txt

These exact lines, or this exact same group of lines appear three times in the console (everything is repeated, even the order in which they appear).

Can some of you guys help me with this problem? What could be causing this?

Comments

  • edited December 2015 Posts: 213
                "OnCreated"
                {
                    "AttachEffect"
                    {
                        "EffectName"        "particles/skills/explosive_palm_over_head.vpcf"
                        "EffectAttachType"  "follow_overhead"
                        "Target"        "UNIT"
                }
    

    Not sure the line #, and I wasn't keeping track of all the parenthesis since the indentation is a bit mussed, but see if that's your problem.

    e: went back and checked, it's under "modifier_explosive_palm"

  • edited December 2015 Posts: 45

    Oh, that's embarrassing, such a silly error lol.But I fixed it and the same errors keep on showing in the console. I mean, I think the game doesn't even read the abilities, because it doesn't seem to pass through the heroes_custom.

  • Posts: 213

    Go over all of the brackets, I think there might have been something else where you were closing "explosive_palm"

  • Posts: 45

    Done that, no problems found. Every file i mentioned returns "Your KV text (should be) completely fine!" on the checker. Still same errors

  • Is that your entire npc_heroes_custom file?

    testing signature

  • edited December 2015 Posts: 45

    No, but before adding these exact codes it was working. If you want I could post the full npc_heroes_custom file. I posted the codes that were related to the error only to make it as small thread as possible (didn't work lol).

  • Would be best if you posted the whole npc_heroes_custom

    testing signature

  • Posts: 1,670

    The concept of Modding Community doesn't go well together with Competitive Business
    My Project Page || My GitHub Profile ||

  • edited December 2015 Posts: 45

    @Noya I've said several times I used this tool and no problems were found. @Pizzalol here is the full npc_heroes_custom. It's not finished yet, I'm trying to fix this problem before keep going. http://pastebin.com/niMAiyXV

  • edited December 2015 Posts: 1,670

    Alright, weird, that file has indeed no issues to be seen

    Try removing KeyValues until it works, then add back until it breaks

    The concept of Modding Community doesn't go well together with Competitive Business
    My Project Page || My GitHub Profile ||

  • Posts: 45

    Could some lua file be causing this? I still have to check to see if I forgot something in my vscript folder. You mean like for example removing "VisionNighttimeRange" and other kv's until it works? I mean, I need every kv in there to make my mod :biblethump:

  • Posts: 1,670

    No I meant remove every block (npc_dota_hero_dark_seer and the rest). Then add 1 by 1.

    No way lua causes syntax errors on KV files

    The concept of Modding Community doesn't go well together with Competitive Business
    My Project Page || My GitHub Profile ||

  • edited December 2015 Posts: 45

    Okay,i'll try it. Should I change the herolist file accordingly or leave it as it is?

  • edited December 2015 Posts: 858

    Encoding issue, perhaps? What text editor are you using and, if it supports variable encoding (e.g. notepad++), what is it set to?

    Optionally, it would also be helpful to is if your project was in a GitHub so we could see & compile everything for ourselves.

    E/ It's worth noting that my syntax checker never picked up on your issue in the abilities file because you added an extra } in addition to the missing }. It only checks syntax, it doesn't actually check if the values are good or not.

    In addition, the error log never stated any syntax error with your abilities file.

    Okay,i'll try it. Should I change the herolist file accordingly or leave it as it is?

    doesn't matter. The old custom heroes will stay as the default generic dota heroes.

    MAKE CUSTOM GAMES GREAT AGAIN

    Finished-
    kv checker - https://arhowk.github.io
    panorama video series - https://moddota.com/forums/discussion/2021/inclusive-panorama-tutorial-quest-box

    My pet project This Cursed World/Crestfallen (name pending)
    https://moddota.com/forums/discussion/986/this-cursed-world-rpg#latest

  • edited December 2015 Posts: 45

    I'm using notepad++ and it's set to encode in UTF8, which I was told to. Well, I've thought about creating a GitHub, but I'm using this mod mainly to learn and have fun with something I created, wasn't sure about publishing in the workshop, so I've to the conclusion that I wouldn't create a GitHub ("more work" without gaining much). But if you guys required it to help me solve, I'll gladly create one.

    doesn't matter. The old custom heroes will stay as the default generic dota heroes.

    I know but I was just curious what would be the best approach to solve it.

    E: I erased the other heroes inside npc_heroes_custom and there were still errors showing on the console. But now it seems that it included the npc_abilitis_custom file (the tree dots means there were another lines between the group of error lines): http://pastebin.com/kbP4G4FV

  • Posts: 858

    A github would be best... if for nothing else so we can see exactly what code you're using. You can delete it later.

    Are you using ModKit? If not, you might be formatting the files incorrectly but, if the heroes file given is the exact file loaded by the system, this should not be the case.

    MAKE CUSTOM GAMES GREAT AGAIN

    Finished-
    kv checker - https://arhowk.github.io
    panorama video series - https://moddota.com/forums/discussion/2021/inclusive-panorama-tutorial-quest-box

    My pet project This Cursed World/Crestfallen (name pending)
    https://moddota.com/forums/discussion/986/this-cursed-world-rpg#latest

  • edited December 2015 Posts: 45

    I'm not using ModKit, but how so the formatting might be incorrect?

    E: I've coded that code yesterday late-night. And now I was looking into it again to get a cleaner code, better indentation, etc... And I found several mistakes in it. Could this be causing the problem?

    Wrong:                                             | Should be:
                                                       |  "RunScript"
       "RunScript"   "<script>"                        |  {
       "Function"    "<function>"                      |     "ScriptFile" "<script>"
                                                       |     "Function"    "<function>"
                                                       |  }
    
    Wrong:                                             | Should be:
        "AbilityUnitDamageType"   "<type>"             |  "AbilityDamageType"  "<type>"
    
  • Posts: 213

    Stuff like that could definitely throw errors. Are you still any since rewriting?

  • Posts: 45

    I think I fixed all the KV code and the error persists.

    Are you still any since rewriting?

    what do you mean?

  • Posts: 213

    ah ... looks like something went wrong posting, should have read:

    Are you still having any errors since rewriting?

    Back to the problem at hand, try changing "npc_dota_hero_dark_seer" on line 3 of npc_heroes_custom to "npc_dota_hero_dark_seer_custom", but leave "override_hero" the same.

  • edited December 2015 Posts: 45

    It was originally "npc_dota_hero_fisrt_monk", but someone at the IRC told me to change to "npc_dota_hero_dark_seer" and I left it like that. Can I change it back to "npc_dota_hero_first_monk" or it needs to be "npc_dota_hero_dark_seer_custom"? I don't see why it should be the "<name of the hero>_custom".

  • Posts: 1,670

    My heroes keep the original name on the npc_heroes_custom file so I can retrieve them easily with :GetUnitName() https://github.com/MNoya/DotaCraft/blob/master/game/dota_addons/dotacraft/scripts/npc/heroes/human_archmage.txt

    That's not the problem

    The concept of Modding Community doesn't go well together with Competitive Business
    My Project Page || My GitHub Profile ||

  • Posts: 45

    So what could be the problem? I really don't think there is anything wrong but it doesn't work, so It should have one problem. It was a joke on the thread title, the game can't simply raise a error without having any, I mean, I the game can't bully me like that.

  • Posts: 1,670

    Just start by making another addon with ModKit and Barebones

    The concept of Modding Community doesn't go well together with Competitive Business
    My Project Page || My GitHub Profile ||

  • Posts: 45

    Really? I think the game just trolls me then FeelsBadMan

  • Posts: 858

    I made a request and you still have not fulfilled it. If making an entirely new addon is more beneficial than do so, but if you copy the same code in you're going to have the same issues

    MAKE CUSTOM GAMES GREAT AGAIN

    Finished-
    kv checker - https://arhowk.github.io
    panorama video series - https://moddota.com/forums/discussion/2021/inclusive-panorama-tutorial-quest-box

    My pet project This Cursed World/Crestfallen (name pending)
    https://moddota.com/forums/discussion/986/this-cursed-world-rpg#latest

  • Just remove things one by one until it starts working again. Then you can isolate what was causing the problem.

  • Make sure that your npc_abilities_custom.txt and npc_heroes_custom.txt are encoded in UTF-8 without BOM. And make sure that your addon_english.txt is encoded in UCS-2 Little Endian. I made a detailed analysis of the txt files you provided. I found some errors and I will list them here just in case. Maybe you noticed them yourself and fixed some of them already.

    Make sure your npc_abilities_custom.txt is like this:

    "DOTAAbilities"
    {
      "Version"   "1"
    "ability"
    {...}
    ...
    }
    
    

    In your npc_abilities_custom.txt in ability determination I noticed you used event OnOwnerSpawned. That event may be buggy. I suggest you use OnCreated event inside a passive modifier. Inside modifier_determination_debuff you use "damage_reduction" "%dmg_resis". What is that? You need to use modifier properties or states for damage reduction.

    In ability explosive_palm you have this:

    "AbilityDamageType"         "DAMAGE_TYPE_MAGICAL" // you fixed this I think
    It should be: "AbilityUnitDamageType"   "DAMAGE_TYPE_MAGICAL"
    

    another small issue:

    //"AOERadius"      "400" // you need to add DOTA_ABILITY_BEHAVIOR_AOE into AbilityBehavior if you want to use AOERadius.
    

    You fixed the missing bracket in:

    "AttachEffect"
    {
       "EffectName"        "particles/skills/explosive_palm_over_head.vpcf"
       "EffectAttachType"  "follow_overhead"
       "Target"         "UNIT"
    } // this one
    

    You maybe have an extra bracket after "explosive_palm" ability.

    In the rest of your abilities you dont need:

    "RequiredLevel"             "0" // you dont need this if its zero
    

    In npc_heroes_custom.txt I noticed you have AbilityLayout "6" on all heroes, but you have only 5 abilities on each hero. Add this just in case:

    "Ability6"  ""
    "Ability7"  ""
    

    and/or change AbilityLayout to 5.

    But before anything, check your encoding.